diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 000000000..cddded564 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 762fcdd87899abab84bfae2e9c119a31 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index 8540bec3c..000000000 --- a/.coveragerc +++ /dev/null @@ -1,11 +0,0 @@ -[run] -branch = True -source = searx - -[report] -show_missing = True -exclude_lines = - if __name__ == .__main__.: - -[html] -directory = coverage diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 9e5871918..000000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM mcr.microsoft.com/devcontainers/base:debian - -RUN apt-get update && \ - apt-get -y install python3 python3-venv redis firefox-esr graphviz imagemagick librsvg2-bin fonts-dejavu shellcheck diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 3f8c4c81a..000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "build": { - "dockerfile": "Dockerfile" - }, - "features": { - "ghcr.io/devcontainers/features/github-cli": {} - }, - "customizations": { - "vscode": { - "extensions": [ - "ms-python.python", - "ms-azuretools.vscode-docker" - ], - "remote.otherPortsAttributes": { - "protocol": "https" - }, - "settings": { - "files.autoSave": "off", - "python.defaultInterpreterPath": "/workspaces/searxng/local/py3/bin/python3", - "python.formatting.blackPath": "/workspaces/searxng/local/py3/bin/black", - "python.linting.pylintPath": "/workspaces/searxng/local/py3/bin/pylint" - } - } - }, - "forwardPorts": [8000, 8888], - "portsAttributes": { - "8000": {"label": "Sphinx documentation"}, - "8888": {"label": "SearXNG"} - }, - "postCreateCommand": "git pull && make install" -} diff --git a/.dir-locals.el b/.dir-locals.el deleted file mode 100644 index 1e319357a..000000000 --- a/.dir-locals.el +++ /dev/null @@ -1,163 +0,0 @@ -;;; .dir-locals.el -;; -;; Per-Directory Local Variables: -;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html -;; -;; For full fledge developer tools install emacs packages: -;; -;; M-x package-install ... -;; -;; magit gitconfig -;; nvm lsp-mode lsp-pyright lsp-eslint -;; pyvenv pylint pip-requirements -;; jinja2-mode -;; json-mode -;; company company-jedi company-quickhelp company-shell -;; realgud -;; sphinx-doc markdown-mode graphviz-dot-mode -;; apache-mode nginx-mode -;; -;; To setup a developer environment, build target:: -;; -;; $ make node.env.dev pyenv.install -;; -;; Some buffer locals are referencing the project environment: -;; -;; - prj-root --> / -;; - nvm-dir --> /.nvm -;; - python-environment-directory --> /local -;; - python-environment-default-root-name --> py3 -;; - python-shell-virtualenv-root --> /local/py3 -;; When this variable is set with the path of the virtualenv to use, -;; `process-environment' and `exec-path' get proper values in order to run -;; shells inside the specified virtualenv, example:: -;; (setq python-shell-virtualenv-root "/path/to/env/") -;; - python-shell-interpreter --> /local/py3/bin/python -;; -;; Python development: -;; -;; Jedi, flycheck & other python stuff should use the 'python-shell-interpreter' -;; from the local py3 environment. -;; - -((nil - . ((fill-column . 80) - (indent-tabs-mode . nil) - (eval . (progn - - (add-to-list 'auto-mode-alist '("\\.html\\'" . jinja2-mode)) - - ;; project root folder is where the `.dir-locals.el' is located - (setq-local prj-root - (locate-dominating-file default-directory ".dir-locals.el")) - - (setq-local python-environment-directory - (expand-file-name "./local" prj-root)) - - ;; to get in use of NVM environment, install https://github.com/rejeep/nvm.el - (setq-local nvm-dir (expand-file-name "./.nvm" prj-root)) - - ;; use nodejs from the (local) NVM environment (see nvm-dir) - (nvm-use-for-buffer) - (ignore-errors (require 'lsp)) - (setq-local lsp-server-install-dir (car (cdr nvm-current-version))) - (setq-local lsp-enable-file-watchers nil) - - ;; use 'py3' environment as default - (setq-local python-environment-default-root-name - "py3") - - (setq-local python-shell-virtualenv-root - (expand-file-name - python-environment-default-root-name python-environment-directory)) - - (setq-local python-shell-interpreter - (expand-file-name - "bin/python" python-shell-virtualenv-root)))))) - (makefile-gmake-mode - . ((indent-tabs-mode . t))) - - (yaml-mode - . ((eval . (progn - - ;; flycheck should use the local py3 environment - (setq-local flycheck-yaml-yamllint-executable - (expand-file-name "bin/yamllint" python-shell-virtualenv-root)) - - (setq-local flycheck-yamllintrc - (expand-file-name ".yamllint.yml" prj-root)) - - (flycheck-checker . yaml-yamllint))))) - - (json-mode - . ((eval . (progn - (setq-local js-indent-level 4) - (flycheck-checker . json-python-json))))) - - (js-mode - . ((eval . (progn - (ignore-errors (require 'lsp-eslint)) - (setq-local js-indent-level 2) - ;; flycheck should use the eslint checker from developer tools - (setq-local flycheck-javascript-eslint-executable - (expand-file-name "node_modules/.bin/eslint" prj-root)) - ;; (flycheck-mode) - - (if (featurep 'lsp-eslint) - (lsp)) - )))) - - (python-mode - . ((eval . (progn - (ignore-errors (require 'jedi-core)) - (ignore-errors (require 'lsp-pyright)) - (ignore-errors (sphinx-doc-mode)) - (setq-local python-environment-virtualenv - (list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root) - ;;"--system-site-packages" - "--quiet")) - - (setq-local pylint-command - (expand-file-name "bin/pylint" python-shell-virtualenv-root)) - - (if (featurep 'lsp-pyright) - (lsp)) - - ;; pylint will find the '.pylintrc' file next to the CWD - ;; https://pylint.readthedocs.io/en/latest/user_guide/run.html#command-line-options - (setq-local flycheck-pylintrc - ".pylintrc") - - ;; flycheck & other python stuff should use the local py3 environment - (setq-local flycheck-python-pylint-executable - python-shell-interpreter) - - ;; use 'M-x jedi:show-setup-info' and 'M-x epc:controller' to inspect jedi server - ;; https://tkf.github.io/emacs-jedi/latest/#jedi:environment-root -- You - ;; can specify a full path instead of a name (relative path). In that case, - ;; python-environment-directory is ignored and Python virtual environment - ;; is created at the specified path. - (setq-local jedi:environment-root - python-shell-virtualenv-root) - - ;; https://tkf.github.io/emacs-jedi/latest/#jedi:server-command - (setq-local jedi:server-command - (list python-shell-interpreter - jedi:server-script)) - - ;; jedi:environment-virtualenv --> see above 'python-environment-virtualenv' - ;; is set buffer local! No need to setup jedi:environment-virtualenv: - ;; - ;; Virtualenv command to use. A list of string. If it is nil, - ;; python-environment-virtualenv is used instead. You must set non-nil - ;; value to jedi:environment-root in order to make this setting work. - ;; - ;; https://tkf.github.io/emacs-jedi/latest/#jedi:environment-virtualenv - ;; - ;; (setq-local jedi:environment-virtualenv - ;; (list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root) - ;; "--python" - ;; "/usr/bin/python3.4" - ;; )) - )))) - ) diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 6fcbd368b..000000000 --- a/.dockerignore +++ /dev/null @@ -1,44 +0,0 @@ -*~ -*/*~ -*/*/*~ -*/*/*/*~ -*/*/*/*/*~ - -# Git -.git -.gitignore - -# CI -.codeclimate.yml -.travis.yml -.taskcluster.yml - -# Byte-compiled / optimized / DLL files -__pycache__/ -*/__pycache__/ -*/*/__pycache__/ -*/*/*/__pycache__/ -*.py[cod] -*/*.py[cod] -*/*/*.py[cod] -*/*/*/*.py[cod] - -# node_modules -node_modules/ -*/node_modules/ -*/*/node_modules/ -*/*/*/node_modules/ -*/*/*/*/node_modules/ - -.tx/ - -# to sync with .gitignore -geckodriver.log -.coverage -coverage/ -cache/ -build/ -dist/ -local/ -gh-pages/ -*.egg-info/ diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 5617a5ba2..000000000 --- a/.editorconfig +++ /dev/null @@ -1,40 +0,0 @@ -# https://editorconfig.org/ - -root = true - -[*] -indent_style = space -indent_size = 4 -insert_final_newline = true -trim_trailing_whitespace = true -end_of_line = lf -charset = utf-8 - -[*.py] -max_line_length = 119 - -[*.html] -indent_size = 4 - -[*.json] -indent_size = 4 -insert_final_newline = ignore - -# Minified JavaScript files shouldn't be changed -[**.min.js] -indent_style = ignore -insert_final_newline = ignore - -# Makefiles always use tabs for indentation -[Makefile] -indent_style = tab - -# Batch files use tabs for indentation -[*.bat] -indent_style = tab - -[docs/**.rst] -max_line_length = 79 - -[*.yml] -indent_size = 2 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 8e16c6561..000000000 --- a/.gitattributes +++ /dev/null @@ -1,12 +0,0 @@ -*.gif -diff -*.png -diff -*.min.css -diff -*.min.js -diff -*.css.map -diff -*.js.map -diff -*.eot -diff -*.svg -diff -*.ttf -diff -*.woff -diff -*.woff2 -diff -messages.mo -diff diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md deleted file mode 100644 index 76a1f1145..000000000 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -name: Bug report -about: Report a bug in SearXNG -title: '' -labels: bug -assignees: '' - ---- - - -**Version of SearXNG, commit number if you are using on master branch and stipulate if you forked SearXNG** - -**How did you install SearXNG?** - -**What happened?** - - -**How To Reproduce** - - -**Expected behavior** - - -**Screenshots & Logs** - - -**Additional context** - diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 6df909a6a..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: true -contact_links: - - name: Questions & Answers (Q&A) - url: https://github.com/searxng/searxng/discussions/categories/q-a - about: Ask questions and find answers diff --git a/.github/ISSUE_TEMPLATE/engine-request.md b/.github/ISSUE_TEMPLATE/engine-request.md deleted file mode 100644 index fd39af98a..000000000 --- a/.github/ISSUE_TEMPLATE/engine-request.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: Engine request -about: Request a new engine in SearXNG -title: '' -labels: enhancement, engine request -assignees: '' - ---- - - -**Working URL to the engine** - - -**Why do you want to add this engine?** - - -**Features of this engine** - - -**How can SearXNG fetch the information from this engine?** - - -**Applicable category of this engine** - - -**Additional context** - diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md deleted file mode 100644 index a0d61c824..000000000 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Feature request -about: Request a new feature in SearXNG -title: '' -labels: enhancement -assignees: '' - ---- - - -**Is your feature request related to a problem? Please describe.** - - -**Describe the solution you'd like** - - -**Describe alternatives you've considered** - - -**Additional context** - diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index d99ba9156..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,17 +0,0 @@ -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates -version: 2 -updates: - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "weekly" - day: "friday" - open-pull-requests-limit: 5 - target-branch: "master" - - package-ecosystem: "npm" - directory: "/searx/static/themes/simple" - schedule: - interval: "weekly" - day: "friday" - open-pull-requests-limit: 5 - target-branch: "master" diff --git a/.github/workflows/data-update.yml b/.github/workflows/data-update.yml deleted file mode 100644 index f68e578ed..000000000 --- a/.github/workflows/data-update.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: "Update searx.data" -on: - schedule: - - cron: "59 23 28 * *" - workflow_dispatch: - -jobs: - updateData: - name: Update data - ${{ matrix.fetch }} - runs-on: ubuntu-20.04 - if: ${{ github.repository_owner == 'searxng'}} - strategy: - fail-fast: false - matrix: - fetch: - - update_ahmia_blacklist.py - - update_currencies.py - - update_external_bangs.py - - update_firefox_version.py - - update_engine_traits.py - - update_wikidata_units.py - - update_engine_descriptions.py - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Ubuntu packages - run: | - sudo ./utils/searxng.sh install packages - - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.9' - architecture: 'x64' - - - name: Install Python dependencies - run: | - make V=1 install - - - name: Fetch data - env: - FETCH_SCRIPT: ./searxng_extra/update/${{ matrix.fetch }} - run: | - V=1 ./manage pyenv.cmd python "$FETCH_SCRIPT" - - - name: Create Pull Request - id: cpr - uses: peter-evans/create-pull-request@v3 - with: - commit-message: Update searx.data - ${{ matrix.fetch }} - committer: searxng-bot - author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> - signoff: false - branch: update_data_${{ matrix.fetch }} - delete-branch: true - draft: false - title: 'Update searx.data - ${{ matrix.fetch }}' - body: | - Update searx.data - ${{ matrix.fetch }} - labels: | - data - - - name: Check outputs - run: | - echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" - echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml deleted file mode 100644 index 8836aeefd..000000000 --- a/.github/workflows/integration.yml +++ /dev/null @@ -1,214 +0,0 @@ -name: Integration - -on: - push: - branches: ["master"] - pull_request: - branches: ["master"] - -permissions: - contents: read - -jobs: - python: - name: Python ${{ matrix.python-version }} - runs-on: ubuntu-20.04 - strategy: - matrix: - os: [ubuntu-20.04] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Ubuntu packages - run: | - sudo ./utils/searxng.sh install packages - sudo apt install firefox - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - architecture: 'x64' - - name: Cache Python dependencies - id: cache-python - uses: actions/cache@v3 - with: - path: | - ./local - ./.nvm - ./node_modules - key: python-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt', 'setup.py') }} - - name: Install Python dependencies - if: steps.cache-python.outputs.cache-hit != 'true' - run: | - make V=1 install - make V=1 gecko.driver - - name: Run tests - run: make V=1 ci.test - - name: Test coverage - run: make V=1 test.coverage - - name: Store coverage result - uses: actions/upload-artifact@v3 - with: - name: coverage-${{ matrix.python-version }} - path: coverage/ - retention-days: 60 - - themes: - name: Themes - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Ubuntu packages - run: sudo ./utils/searxng.sh install buildhost - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - architecture: 'x64' - - name: Cache Python dependencies - id: cache-python - uses: actions/cache@v3 - with: - path: | - ./local - ./.nvm - ./node_modules - key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }} - - name: Install node dependencies - run: make V=1 node.env - - name: Build themes - run: make V=1 themes.all - - documentation: - name: Documentation - runs-on: ubuntu-20.04 - permissions: - contents: write # for JamesIves/github-pages-deploy-action to push changes in repo - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: '0' - persist-credentials: false - - name: Install Ubuntu packages - run: sudo ./utils/searxng.sh install buildhost - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - architecture: 'x64' - - name: Cache Python dependencies - id: cache-python - uses: actions/cache@v3 - with: - path: | - ./local - ./.nvm - ./node_modules - key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }} - - name: Build documentation - run: | - make V=1 docs.clean docs.html - - name: Deploy - if: github.ref == 'refs/heads/master' - uses: JamesIves/github-pages-deploy-action@3.7.1 - with: - GITHUB_TOKEN: ${{ github.token }} - BRANCH: gh-pages - FOLDER: dist/docs - CLEAN: true # Automatically remove deleted files from the deploy branch - SINGLE_COMMIT: True - COMMIT_MESSAGE: build from commit ${{ github.sha }} - - babel: - name: Update translations branch - runs-on: ubuntu-20.04 - if: ${{ github.repository_owner == 'searxng' && github.ref == 'refs/heads/master' }} - needs: - - python - - themes - - documentation - permissions: - contents: write # for make V=1 weblate.push.translations - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: '0' - token: ${{ secrets.WEBLATE_GITHUB_TOKEN }} - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - architecture: 'x64' - - name: Cache Python dependencies - id: cache-python - uses: actions/cache@v3 - with: - path: | - ./local - ./.nvm - ./node_modules - key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }} - - name: weblate & git setup - env: - WEBLATE_CONFIG: ${{ secrets.WEBLATE_CONFIG }} - run: | - mkdir -p ~/.config - echo "${WEBLATE_CONFIG}" > ~/.config/weblate - git config --global user.email "searxng-bot@users.noreply.github.com" - git config --global user.name "searxng-bot" - - name: Update transations - id: update - run: | - git restore utils/brand.env - make V=1 weblate.push.translations - - dockers: - name: Docker - if: github.ref == 'refs/heads/master' - needs: - - python - - themes - - documentation - env: - DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - runs-on: ubuntu-20.04 - steps: - - name: Checkout - if: env.DOCKERHUB_USERNAME != null - uses: actions/checkout@v4 - with: - # make sure "make docker.push" can get the git history - fetch-depth: '0' - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - architecture: 'x64' - - name: Cache Python dependencies - id: cache-python - uses: actions/cache@v3 - with: - path: | - ./local - ./.nvm - ./node_modules - key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }} - - name: Set up QEMU - if: env.DOCKERHUB_USERNAME != null - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - if: env.DOCKERHUB_USERNAME != null - uses: docker/setup-buildx-action@v1 - - name: Login to DockerHub - if: env.DOCKERHUB_USERNAME != null - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push - if: env.DOCKERHUB_USERNAME != null - run: make -e GIT_URL=$(git remote get-url origin) docker.buildx diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml deleted file mode 100644 index e1a8e99e5..000000000 --- a/.github/workflows/security.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: "Security checks" -on: - schedule: - - cron: "42 05 * * *" - workflow_dispatch: - -jobs: - dockers: - name: Trivy ${{ matrix.image }} - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'searxng/searxng:latest' - ignore-unfixed: false - vuln-type: 'os,library' - severity: 'UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL' - format: 'sarif' - output: 'trivy-results.sarif' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: 'trivy-results.sarif' diff --git a/.github/workflows/translations-update.yml b/.github/workflows/translations-update.yml deleted file mode 100644 index c0b2d473d..000000000 --- a/.github/workflows/translations-update.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: "Update translations" -on: - schedule: - - cron: "05 07 * * 5" - workflow_dispatch: - -jobs: - babel: - name: "create PR for additions from weblate" - runs-on: ubuntu-20.04 - if: ${{ github.repository_owner == 'searxng' && github.ref == 'refs/heads/master' }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: '0' - token: ${{ secrets.WEBLATE_GITHUB_TOKEN }} - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - architecture: 'x64' - - name: Cache Python dependencies - id: cache-python - uses: actions/cache@v3 - with: - path: | - ./local - ./.nvm - ./node_modules - key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }} - - name: weblate & git setup - env: - WEBLATE_CONFIG: ${{ secrets.WEBLATE_CONFIG }} - run: | - mkdir -p ~/.config - echo "${WEBLATE_CONFIG}" > ~/.config/weblate - git config --global user.email "searxng-bot@users.noreply.github.com" - git config --global user.name "searxng-bot" - - name: Merge and push transation updates - run: | - make V=1 weblate.translations.commit - - name: Create Pull Request - id: cpr - uses: peter-evans/create-pull-request@v3 - with: - token: ${{ secrets.WEBLATE_GITHUB_TOKEN }} - commit-message: Update translations - committer: searxng-bot - author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> - signoff: false - branch: translations_update - delete-branch: true - draft: false - title: 'Update translations' - body: | - Update translations - labels: | - translation diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f50a65be0..000000000 --- a/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -# to sync with .dockerignore & pyrightconfig.json - -*.pyc -*/*.pyc -*~ -*.swp -geckodriver.log - -.coverage -coverage/ - -.nvm/ -cache/ -build/ -dist/ -local/ -gh-pages/ -*.egg-info/ - -/package-lock.json -/node_modules/ - -.idea/ - -searx/version_frozen.py diff --git a/searxng_extra/__init__.py b/.nojekyll similarity index 100% rename from searxng_extra/__init__.py rename to .nojekyll diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 3f784dcf9..000000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v16.20.2 \ No newline at end of file diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index a5b00227e..000000000 --- a/.pylintrc +++ /dev/null @@ -1,407 +0,0 @@ -# -*- coding: utf-8; mode: conf -*- -# lint Python modules using external checkers. -# -# This is the main checker controlling the other ones and the reports -# generation. It is itself both a raw checker and an astng checker in order -# to: -# * handle message activation / deactivation at the module level -# * handle some basic but necessary stats'data (number of classes, methods...) -# -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code -extension-pkg-whitelist=lxml.etree - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore=CVS, .git, .svn - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. -jobs=1 - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Specify a configuration file. -#rcfile= - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once).You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use"--disable=all --enable=classes -# --disable=W" -disable=duplicate-code, - missing-function-docstring, - consider-using-f-string, - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable= - - -[REPORTS] - -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details - -# HINT: do not set this here, use argument --msg-template=... -#msg-template={path}:{line}: [{msg_id}({symbol}),{obj}] {msg} - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio).You can also give a reporter class, eg -# mypackage.mymodule.MyReporterClass. - -# HINT: do not set this here, use argument --output-format=... -#output-format=text - -# Tells whether to display a full report or only the messages -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - - -[BASIC] - -# Regular expression matching correct argument names -argument-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*))$ - -# Regular expression matching correct attribute names -attr-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*)|([A-Z0-9_]*))$ - -# Bad variable names which should always be refused, separated by a comma -bad-names=foo,bar,baz,toto,tutu,tata - -# Regular expression matching correct class attribute names -class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ - -# Regular expression matching correct class names -class-rgx=[A-Z_][a-zA-Z0-9]+$ - -# Regular expression matching correct constant names -const-rgx=(([a-zA-Z_][a-zA-Z0-9_]*)|(__.*__))$ -#const-rgx=[f]?[A-Z_][a-zA-Z0-9_]{2,30}$ - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Regular expression matching correct function names -function-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*))$ - -# Good variable names which should always be accepted, separated by a comma -good-names=i,j,k,ex,Run,_,log,cfg,id - -# Include a hint for the correct naming format with invalid-name -include-naming-hint=no - -# Regular expression matching correct inline iteration names -inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ - -# Regular expression matching correct method names -method-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*))$ - -# Regular expression matching correct module names -#module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ -module-rgx=([a-z_][a-z0-9_]*)$ - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -property-classes=abc.abstractproperty - -# Regular expression matching correct variable names -variable-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*)|([a-z]))$ - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=120 - -# Maximum number of lines in a module -max-module-lines=2000 - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement.No config file found, using default configuration - -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[LOGGING] - -# Logging modules to check that the string format arguments are in logging -# function parameter format -logging-modules=logging - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME,XXX,TODO - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[SPELLING] - -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. -spelling-store-unknown-words=no - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid to define new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_,_cb - -# A regular expression matching the name of dummy variables (i.e. expectedly -# not used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,future.builtins - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__,__new__,setUp - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict,_fields,_replace,_source,_make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=mcs - - -[DESIGN] - -# Maximum number of arguments for function / method -max-args=8 - -# Maximum number of attributes for a class (see R0902). -max-attributes=20 - -# Maximum number of boolean expressions in a if statement -max-bool-expr=5 - -# Maximum number of branch for function / method body -max-branches=12 - -# Maximum number of locals for function / method body -max-locals=20 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body -max-returns=6 - -# Maximum number of statements in function / method body -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[IMPORTS] - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma -deprecated-modules=optparse,tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled) -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled) -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled) -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "Exception" -overgeneral-exceptions=builtins.Exception diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 8ec6ff9b8..000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "SearXNG", - "type": "python", - "request": "launch", - "module": "searx.webapp", - "env": { - "FLASK_APP": "webapp", - "FLASK_DEBUG": "1", - "SEARXNG_DEBUG": "1", - }, - "args": [ - "run" - ], - "jinja": true, - "justMyCode": true, - "python": "${workspaceFolder}/local/py3/bin/python", - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 512342bae..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "python.testing.unittestArgs": [ - "-v", - "-s", - "./tests", - "-p", - "test_*.py" - ], - "python.testing.pytestEnabled": false, - "python.testing.unittestEnabled": true, -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 4d4a57b80..000000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "label": "make run", - "type": "shell", - "command": "make run", - "problemMatcher": [], - "isBackground": true, - "presentation": { - "reveal": "always", - "panel": "dedicated" - }, - "group": { - "kind": "build", - "isDefault": true - } - }, - { - "label": "make docs.live", - "type": "shell", - "command": "make docs.live", - "problemMatcher": [], - "isBackground": true, - "presentation": { - "reveal": "always", - "panel": "dedicated" - }, - "group": { - "kind": "build" - } - } - ] -} \ No newline at end of file diff --git a/.weblate b/.weblate deleted file mode 100644 index d50a09600..000000000 --- a/.weblate +++ /dev/null @@ -1,3 +0,0 @@ -[weblate] -url = https://translate.codeberg.org/api/ -translation = searxng/searxng diff --git a/.yamllint.yml b/.yamllint.yml deleted file mode 100644 index 065665612..000000000 --- a/.yamllint.yml +++ /dev/null @@ -1,16 +0,0 @@ -extends: default - -rules: - - indentation: - spaces: 2 - - # 120 chars should be enough, but don't fail if a line is longer - line-length: - max: 120 - level: warning - allow-non-breakable-words: true - - # we don't have multiple document per file - document-start: disable - document-end: disable diff --git a/404.html b/404.html new file mode 100644 index 000000000..da6a85931 --- /dev/null +++ b/404.html @@ -0,0 +1,102 @@ + + + + + + + + Page not found — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Page not found

+ +Unfortunately we couldn't find the content you were looking for. + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/AUTHORS.rst b/AUTHORS.rst deleted file mode 100644 index 8692c03d4..000000000 --- a/AUTHORS.rst +++ /dev/null @@ -1,172 +0,0 @@ -searxng is a fork from `searx `_ and is -maintained by Markus Heiser (`@return42 `_) - -People who have submitted patches/translations, reported bugs, consulted -features or generally made searx better: - -- Adam Tauber `@asciimoo `_ -- Matej Cotman `@matejc `_ -- Émilien Devos `@unixfox `_ -- Thomas Pointhuber `pointhi `_ -- Noémi Ványi `@kvch `_ -- `@Cqoicebordel `_ -- Marc Abonce Seguin `@MarcAbonce `_ -- `@pofilo `_ - -- Laszlo Hammerl -- Stefan Marsiske -- Gabor Nagy -- @pw3t -- @rhapsodhy -- András Veres-Szentkirályi -- Benjamin Sonntag -- @HLFH -- @TheRadialActive -- @Okhin -- André Koot -- Alejandro León Aznar -- rike -- dp -- Martin Zimmermann -- @courgette -- @kernc -- @Reventl0v -- Caner Başaran -- Benjamin Sonntag -- @opi -- @dimqua -- Giorgos Logiotatidis -- Luc Didry -- Niklas Haas -- @underr -- Emmanuel Benazera -- @GreenLunar -- Kang-min Liu -- Kirill Isakov -- Guilhem Bonnefille -- @jibe-b -- Christian Pietsch @pietsch -- @Maxqia -- Ashutosh Das @pyprism -- YuLun Shih @imZack -- Dmitry Mikhirev @mikhirev -- David A Roberts `@davidar `_ -- Jan Verbeek @blyxxyz -- Ammar Najjar @ammarnajjar -- @stepshal -- François Revol @mmuman -- Harry Wood @harry-wood -- Thomas Renard @threnard -- Pydo ``_ -- Athemis ``_ -- Stefan Antoni `` -- @firebovine -- Lorenzo J. Lucchini @luccoj -- @eig8phei -- @maxigas -- Jannik Winkel @kiney -- @juanitobananas -- Vache Asatryan @vachi -- Luca CPZ @lcpz -- @nikaiw -- Thirnearez -- Hypolite Petovan @MrPetovan -- @woorst -- @Apply55gx -- @pyrrh0n1c -- @cclauss -- QGW @moon2l -- Pierre-Alain Toret @daftaupe -- Matthew Olmsted @icegiant -- Michael Tran @trankmichael -- Joseph Nuthalapati @josephkiranbabu -- @maiki -- Richard Didier @zeph33 -- Michael Vieria @Themimitoof -- Richard Nespithal @rndevfx -- Stanislas @angristan -- @rinpatch -- g. s. @usernameisntallowed -- Léo Bourrel @bourrel -- @cy8aer -- @Popolon -- Alice Ferrazzi @aliceinwire -- @LiquidLemon -- @dadosch -- Václav Zouzalík @Venca24 -- @ZEROF -- Ivan Skytte Jørgensen @isj-privacore -- @miicha -- Étienne Deparis @milouse -- @pelag0s -- Denis Wernert @d-tux -- Robin Hallabro-Kokko @hallabro -- Jonas Zohren @jfowl -- Elias Ojala @theel0ja -- @brunob -- Nick Espig @nachtalb -- Rachmadani Haryono @rachmadaniHaryono -- Frank de Lange @yetangitu -- Nicolas Gelot @nfk -- @volth -- Mathieu Brunot @madmath03 -- @lorddavidiii -- @x250 -- Robby O'Connor @robbyoconnor -- Finn @0xhtml -- @tmikaeld -- @hobbestigrou -- Vipul @finn0 -- @CaffeinatedTech -- Robin Schneider @ypid -- @splintah -- Lukas van den Berk @lukasvdberk -- @piplongrun -- Jason Kaltsikis @jjasonkal -- Sion Kazama @KazamaSion -- @resynth1943 -- Mostafa Ahangarha @ahangarha -- @gordon-quad -- Sophie Tauchert @999eagle -- @bauruine -- Michael Ilsaas ``_ -- @renyhp -- rachmadani haryono @rachmadaniHaryono -- Mohamad Safadieh @msafadieh -- @gardouille -- @resynth1943 -- @Eliesemoule -- @gardouille -- @GazoilKerozen -- Lukáš Kucharczyk @KucharczykL -- Lynda Lopez @lyndalopez544 -- M. Efe Çetin @efectn -- Nícholas Kegler @nicholasks -- @pierrechtux -- Scott Wallace @scottwallacesh -- @Singustromo -- @TheEvilSkeleton -- @Wonderfall -- @mrwormo -- Xiaoyu WEI @xywei -- @joshu9h -- Daniel Hones -- @cyclaero -- @thezeroalpha -- @Tobi823 -- @archiecodes -- @BBaoVanC -- @datagram1 -- @lucky13820 -- @jhigginbotham -- @xenrox -- @OliveiraHermogenes -- Paul Alcock @Guilvareux -- Sam A. ``_ -- @XavierHorwood -- Ahmad Alkadri ``_ -- Milad Laly @Milad-Laly -- @llmII -- @blob42 ``_ -- Paolo Basso `` -- Bernie Huang `` \ No newline at end of file diff --git a/CHANGELOG.rst b/CHANGELOG.rst deleted file mode 100644 index 150346cec..000000000 --- a/CHANGELOG.rst +++ /dev/null @@ -1,14 +0,0 @@ -======= -SearXNG -======= - -SearXNG development has been started in the middle of 2021 as a fork of the -searx project. Since it beginning its a rolling release pulled from SearXNG's -master branch: - -- The CHANGELOG_ is replaced by the commit history of the master branch. -- Since merged PR-229_, the version number is based on the git commit - -.. _CHANGELOG: https://github.com/searxng/searxng/commits/master -.. _PR-229: https://github.com/searxng/searxng/pull/229 - diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..5e170067d --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.searxng.org \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 748a7b53c..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,49 +0,0 @@ -# How to contribute - -## Resources in the documentation - -* [Development quickstart](https://docs.searxng.org/dev/contribution_guide.html) -* [Contribution guide](https://docs.searxng.org/dev/contribution_guide.html) - -## Submitting PRs - -Please follow the provided PR template when writing a description for your changes. - -Do not take criticism personally. When you get feedback, it is about your work, -not your character, personality, etc. Keep in mind we all want to make the project better. - -When something is not clear, please ask questions to clear things up. - -If you would like to introduce a big architectural changes or do a refactoring -either in the codebase or the development tools, please open an issue with a proposal -first. This way we can think together about the problem and probably come up -with a better solution. - -## Coding conventions and guidelines - -### Commit messages - -* Always write descriptive commit messages ("fix bug" is not acceptable). -* Use the present tense ("Add feature" not "Added feature"). -* Use the imperative mood ("Move cursor to..." not "Moves cursor to..."). -* Limit the first line to 72 characters or less. -* Include the number of the issue you are fixing. - -### Coding guidelines - -As a Python project, we must follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) and [PEP 20](https://www.python.org/dev/peps/pep-0020/) guidelines. - -Furthermore, follow the Clean code conventions. The most important -in this project are the following rules: - -* Simpler is better. [KISS principle](https://en.wikipedia.org/wiki/KISS_principle) -* Be consistent. -* Every function must do one thing. -* Use descriptive names for functions and variables. -* Always look for the root cause. -* Keep configurable data high level. -* Avoid negative conditionals. -* Prefer fewer arguments. -* Do not add obvious comment to code. -* Do not comment out code, just delete lines. - diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 053ab123a..000000000 --- a/Dockerfile +++ /dev/null @@ -1,88 +0,0 @@ -FROM alpine:3.18 -ENTRYPOINT ["/sbin/tini","--","/usr/local/searxng/dockerfiles/docker-entrypoint.sh"] -EXPOSE 8080 -VOLUME /etc/searxng - -ARG SEARXNG_GID=977 -ARG SEARXNG_UID=977 - -RUN addgroup -g ${SEARXNG_GID} searxng && \ - adduser -u ${SEARXNG_UID} -D -h /usr/local/searxng -s /bin/sh -G searxng searxng - -ENV INSTANCE_NAME=searxng \ - AUTOCOMPLETE= \ - BASE_URL= \ - MORTY_KEY= \ - MORTY_URL= \ - SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml \ - UWSGI_SETTINGS_PATH=/etc/searxng/uwsgi.ini - -WORKDIR /usr/local/searxng - -COPY requirements.txt ./requirements.txt - -RUN apk add --no-cache -t build-dependencies \ - build-base \ - py3-setuptools \ - python3-dev \ - libffi-dev \ - libxslt-dev \ - libxml2-dev \ - openssl-dev \ - tar \ - git \ - && apk add --no-cache \ - ca-certificates \ - su-exec \ - python3 \ - py3-pip \ - libxml2 \ - libxslt \ - openssl \ - tini \ - uwsgi \ - uwsgi-python3 \ - brotli \ - && pip3 install --no-cache -r requirements.txt \ - && apk del build-dependencies \ - && rm -rf /root/.cache - -COPY --chown=searxng:searxng dockerfiles ./dockerfiles -COPY --chown=searxng:searxng searx ./searx - -ARG TIMESTAMP_SETTINGS=0 -ARG TIMESTAMP_UWSGI=0 -ARG VERSION_GITCOMMIT=unknown - -RUN su searxng -c "/usr/bin/python3 -m compileall -q searx" \ - && touch -c --date=@${TIMESTAMP_SETTINGS} searx/settings.yml \ - && touch -c --date=@${TIMESTAMP_UWSGI} dockerfiles/uwsgi.ini \ - && find /usr/local/searxng/searx/static -a \( -name '*.html' -o -name '*.css' -o -name '*.js' \ - -o -name '*.svg' -o -name '*.ttf' -o -name '*.eot' \) \ - -type f -exec gzip -9 -k {} \+ -exec brotli --best {} \+ - -# Keep these arguments at the end to prevent redundant layer rebuilds -ARG LABEL_DATE= -ARG GIT_URL=unknown -ARG SEARXNG_GIT_VERSION=unknown -ARG SEARXNG_DOCKER_TAG=unknown -ARG LABEL_VCS_REF= -ARG LABEL_VCS_URL= -LABEL maintainer="searxng <${GIT_URL}>" \ - description="A privacy-respecting, hackable metasearch engine." \ - version="${SEARXNG_GIT_VERSION}" \ - org.label-schema.schema-version="1.0" \ - org.label-schema.name="searxng" \ - org.label-schema.version="${SEARXNG_GIT_VERSION}" \ - org.label-schema.url="${LABEL_VCS_URL}" \ - org.label-schema.vcs-ref=${LABEL_VCS_REF} \ - org.label-schema.vcs-url=${LABEL_VCS_URL} \ - org.label-schema.build-date="${LABEL_DATE}" \ - org.label-schema.usage="https://github.com/searxng/searxng-docker" \ - org.opencontainers.image.title="searxng" \ - org.opencontainers.image.version="${SEARXNG_DOCKER_TAG}" \ - org.opencontainers.image.url="${LABEL_VCS_URL}" \ - org.opencontainers.image.revision=${LABEL_VCS_REF} \ - org.opencontainers.image.source=${LABEL_VCS_URL} \ - org.opencontainers.image.created="${LABEL_DATE}" \ - org.opencontainers.image.documentation="https://github.com/searxng/searxng-docker" diff --git a/LICENSE b/LICENSE deleted file mode 100644 index dba13ed2d..000000000 --- a/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. diff --git a/Makefile b/Makefile deleted file mode 100644 index fbed8a512..000000000 --- a/Makefile +++ /dev/null @@ -1,104 +0,0 @@ -# -*- coding: utf-8; mode: makefile-gmake -*- -# SPDX-License-Identifier: AGPL-3.0-or-later - -.DEFAULT_GOAL=help -export MTOOLS=./manage - -include utils/makefile.include - -all: clean install - -PHONY += help - -help: - @./manage --help - @echo '----' - @echo 'run - run developer instance' - @echo 'install - developer install of SearxNG into virtualenv' - @echo 'uninstall - uninstall developer installation' - @echo 'clean - clean up working tree' - @echo 'search.checker - check search engines' - @echo 'test - run shell & CI tests' - @echo 'test.shell - test shell scripts' - @echo 'ci.test - run CI tests' - - -PHONY += run -run: install - $(Q)./manage webapp.run - -PHONY += install uninstall -install uninstall: - $(Q)./manage pyenv.$@ - -PHONY += clean -clean: py.clean docs.clean node.clean nvm.clean test.clean - $(Q)./manage build_msg CLEAN "common files" - $(Q)find . -name '*.orig' -exec rm -f {} + - $(Q)find . -name '*.rej' -exec rm -f {} + - $(Q)find . -name '*~' -exec rm -f {} + - $(Q)find . -name '*.bak' -exec rm -f {} + - -lxc.clean: - $(Q)rm -rf lxc-env - -PHONY += search.checker search.checker.% -search.checker: install - $(Q)./manage pyenv.cmd searx-checker -v - -search.checker.%: install - $(Q)./manage pyenv.cmd searx-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))" - -PHONY += test ci.test test.shell -ci.test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst test.pybabel -test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst test.shell -test.shell: - $(Q)shellcheck -x -s dash \ - dockerfiles/docker-entrypoint.sh - $(Q)shellcheck -x -s bash \ - utils/brand.env \ - $(MTOOLS) \ - utils/lib.sh \ - utils/lib_sxng*.sh \ - utils/lib_go.sh \ - utils/lib_nvm.sh \ - utils/lib_redis.sh \ - utils/searxng.sh \ - utils/lxc.sh \ - utils/lxc-searxng.env \ - utils/searx.sh \ - utils/filtron.sh \ - utils/morty.sh - $(Q)$(MTOOLS) build_msg TEST "$@ OK" - - -# wrap ./manage script - -MANAGE += buildenv -MANAGE += weblate.translations.commit weblate.push.translations -MANAGE += data.all data.traits data.useragents -MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean -MANAGE += docker.build docker.push docker.buildx -MANAGE += gecko.driver -MANAGE += node.env node.env.dev node.clean -MANAGE += py.build py.clean -MANAGE += pyenv pyenv.install pyenv.uninstall -MANAGE += pypi.upload pypi.upload.test -MANAGE += format.python -MANAGE += test.yamllint test.pylint test.pyright test.black test.pybabel test.unit test.coverage test.robot test.rst test.clean -MANAGE += themes.all themes.simple themes.simple.test pygments.less -MANAGE += static.build.commit static.build.drop static.build.restore -MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs - -PHONY += $(MANAGE) - -$(MANAGE): - $(Q)$(MTOOLS) $@ - -# short hands of selected targets - -PHONY += docs docker themes - -docs: docs.html -docker: docker.build -themes: themes.all diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 71cf8558b..000000000 --- a/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,25 +0,0 @@ -## What does this PR do? - - - - - -## Why is this change important? - - - - - -## How to test this PR locally? - - - -## Author's checklist - - - -## Related issues - - diff --git a/README.rst b/README.rst deleted file mode 100644 index df88aea51..000000000 --- a/README.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. SPDX-License-Identifier: AGPL-3.0-or-later - ----- - -.. figure:: https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng.svg - :target: https://docs.searxng.org/ - :alt: SearXNG - :width: 100% - :align: center - ----- - -Privacy-respecting, hackable `metasearch engine`_ - -Searx.space_ lists ready-to-use running instances. - -A user_, admin_ and developer_ handbook is available on the homepage_. - -|SearXNG install| -|SearXNG homepage| -|SearXNG wiki| -|AGPL License| -|Issues| -|commits| -|weblate| -|SearXNG logo| - ----- - -.. _searx.space: https://searx.space -.. _user: https://docs.searxng.org/user -.. _admin: https://docs.searxng.org/admin -.. _developer: https://docs.searxng.org/dev -.. _homepage: https://docs.searxng.org/ -.. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine - -.. |SearXNG logo| image:: https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng-wordmark.svg - :target: https://docs.searxng.org/ - :width: 5% - -.. |SearXNG install| image:: https://img.shields.io/badge/-install-blue - :target: https://docs.searxng.org/admin/installation.html - -.. |SearXNG homepage| image:: https://img.shields.io/badge/-homepage-blue - :target: https://docs.searxng.org/ - -.. |SearXNG wiki| image:: https://img.shields.io/badge/-wiki-blue - :target: https://github.com/searxng/searxng/wiki - -.. |AGPL License| image:: https://img.shields.io/badge/license-AGPL-blue.svg - :target: https://github.com/searxng/searxng/blob/master/LICENSE - -.. |Issues| image:: https://img.shields.io/github/issues/searxng/searxng?color=yellow&label=issues - :target: https://github.com/searxng/searxng/issues - -.. |PR| image:: https://img.shields.io/github/issues-pr-raw/searxng/searxng?color=yellow&label=PR - :target: https://github.com/searxng/searxng/pulls - -.. |commits| image:: https://img.shields.io/github/commit-activity/y/searxng/searxng?color=yellow&label=commits - :target: https://github.com/searxng/searxng/commits/master - -.. |weblate| image:: https://translate.codeberg.org/widgets/searxng/-/searxng/svg-badge.svg - :target: https://translate.codeberg.org/projects/searxng/ - - -Contact -======= - -Ask questions or just chat about SearXNG on - -IRC - `#searxng on libera.chat `_ - which is bridged to Matrix. - -Matrix - `#searxng:matrix.org `_ - -Differences to searXNG -==================== - -SearXNGRebrandZaclys is a fork of `searXNG`_, with non-notable changes: - -.. _searXNG: https://github.com/searxng/searxng - - -Simply graphic changes (icons and images) and addition of the Zaclys menu diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 959e7077d..000000000 --- a/SECURITY.md +++ /dev/null @@ -1,10 +0,0 @@ -# Security Policy - -We love responsible reports of (potential) security issues in SearXNG. - -You can contact us at security@searxng.org. - -Be sure to provide as much information as possible and if found -also reproduction steps of the identified vulnerability. Also -add the specific URL of the project as well as code you found -the issue in to your report. diff --git a/docs/dev/reST.rst b/_downloads/ad0ebe55d6b53b1559e0ca8dee6f30b9/reST.rst similarity index 99% rename from docs/dev/reST.rst rename to _downloads/ad0ebe55d6b53b1559e0ca8dee6f30b9/reST.rst index ed7ecddde..47af0b130 100644 --- a/docs/dev/reST.rst +++ b/_downloads/ad0ebe55d6b53b1559e0ca8dee6f30b9/reST.rst @@ -235,7 +235,7 @@ To refer anchors use the `ref role`_ markup: .. admonition:: ``:ref:`` role :class: rst-example - Visit chapter :ref:`reST anchor`. Or set hyperlink text manually :ref:`foo + Visist chapter :ref:`reST anchor`. Or set hyperlink text manually :ref:`foo bar `. .. _reST ordinary ref: diff --git a/_images/DOT-57a4a7f78690d0b6b884bc59f36e84cfb0b61f76.dot b/_images/DOT-57a4a7f78690d0b6b884bc59f36e84cfb0b61f76.dot new file mode 100644 index 000000000..eaec9f36b --- /dev/null +++ b/_images/DOT-57a4a7f78690d0b6b884bc59f36e84cfb0b61f76.dot @@ -0,0 +1,3 @@ +digraph foo { + "bar" -> "baz"; +} \ No newline at end of file diff --git a/_images/DOT-57a4a7f78690d0b6b884bc59f36e84cfb0b61f76.svg b/_images/DOT-57a4a7f78690d0b6b884bc59f36e84cfb0b61f76.svg new file mode 100644 index 000000000..a5b367334 --- /dev/null +++ b/_images/DOT-57a4a7f78690d0b6b884bc59f36e84cfb0b61f76.svg @@ -0,0 +1,31 @@ + + + + + + +foo + + + +bar + +bar + + + +baz + +baz + + + +bar->baz + + + + + diff --git a/_images/SVG-1fb7029fa2cc454a267bae271cccb2c591387416.svg b/_images/SVG-1fb7029fa2cc454a267bae271cccb2c591387416.svg new file mode 100644 index 000000000..783577ecd --- /dev/null +++ b/_images/SVG-1fb7029fa2cc454a267bae271cccb2c591387416.svg @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/docs/admin/arch_public.dot b/_images/arch_public.dot similarity index 100% rename from docs/admin/arch_public.dot rename to _images/arch_public.dot diff --git a/_images/arch_public.svg b/_images/arch_public.svg new file mode 100644 index 000000000..0a0a79ae2 --- /dev/null +++ b/_images/arch_public.svg @@ -0,0 +1,149 @@ + + + + + + +G + + +cluster_searxng + +SearXNG instance + + + +browser + + +browser + + + +rp + +reverse proxy + + + +browser->rp + + +HTTPS + + + +static + + +static files + + + + + +rp->static + + +optional: reverse proxy serves static files + + + +uwsgi + + +uwsgi + + + + + +rp->uwsgi + + +http:// (tcp) or unix:// (socket) + + + +searxng1 + +SearXNG #1 + + + +uwsgi->searxng1 + + + + + +searxng2 + +SearXNG #2 + + + +uwsgi->searxng2 + + + + + +searxng3 + +SearXNG #3 + + + +uwsgi->searxng3 + + + + + +searxng4 + +SearXNG #4 + + + +uwsgi->searxng4 + + + + + +redis + + +redis DB + + + +searxng1->redis + + + + + +searxng2->redis + + + + + +searxng3->redis + + + + + +searxng4->redis + + + + + diff --git a/docs/admin/answer-captcha/ffox-setting-proxy-socks.png b/_images/ffox-setting-proxy-socks.png similarity index 100% rename from docs/admin/answer-captcha/ffox-setting-proxy-socks.png rename to _images/ffox-setting-proxy-socks.png diff --git a/docs/dev/hello.dot b/_images/hello.dot similarity index 100% rename from docs/dev/hello.dot rename to _images/hello.dot diff --git a/_images/hello.svg b/_images/hello.svg new file mode 100644 index 000000000..7d7af8e24 --- /dev/null +++ b/_images/hello.svg @@ -0,0 +1,30 @@ + + + + + + +G + + + +Hello + +Hello + + + +World + +World + + + +Hello--World + + + + diff --git a/_images/math/07c9ff4251510b06013159f4e45ec9ab97044096.svg b/_images/math/07c9ff4251510b06013159f4e45ec9ab97044096.svg new file mode 100644 index 000000000..80edca1d9 --- /dev/null +++ b/_images/math/07c9ff4251510b06013159f4e45ec9ab97044096.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_images/math/3b8127a8eed95247f9249ea6c85e8e86df1baa82.svg b/_images/math/3b8127a8eed95247f9249ea6c85e8e86df1baa82.svg new file mode 100644 index 000000000..7c11c8b42 --- /dev/null +++ b/_images/math/3b8127a8eed95247f9249ea6c85e8e86df1baa82.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_images/math/6673b43f9fe29455c1fcd1164e5844698cc64d38.svg b/_images/math/6673b43f9fe29455c1fcd1164e5844698cc64d38.svg new file mode 100644 index 000000000..8be77010f --- /dev/null +++ b/_images/math/6673b43f9fe29455c1fcd1164e5844698cc64d38.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_images/math/a6a994cb6e7278ec30eaebe7e636046d3deccb5b.svg b/_images/math/a6a994cb6e7278ec30eaebe7e636046d3deccb5b.svg new file mode 100644 index 000000000..27ae39410 --- /dev/null +++ b/_images/math/a6a994cb6e7278ec30eaebe7e636046d3deccb5b.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/dev/svg_image.svg b/_images/svg_image.svg similarity index 100% rename from docs/dev/svg_image.svg rename to _images/svg_image.svg diff --git a/docs/dev/translation.svg b/_images/translation.svg similarity index 100% rename from docs/dev/translation.svg rename to _images/translation.svg diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 000000000..036626842 --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,155 @@ + + + + + + + + Overview: module code — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+ + + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/autocomplete.html b/_modules/searx/autocomplete.html new file mode 100644 index 000000000..9c42994cc --- /dev/null +++ b/_modules/searx/autocomplete.html @@ -0,0 +1,336 @@ + + + + + + + + searx.autocomplete — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.autocomplete

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This module implements functions needed for the autocompleter.
+
+"""
+# pylint: disable=use-dict-literal
+
+import json
+from urllib.parse import urlencode
+
+import lxml
+from httpx import HTTPError
+
+from searx import settings
+from searx.engines import (
+    engines,
+    google,
+)
+from searx.network import get as http_get
+from searx.exceptions import SearxEngineResponseException
+
+
+def get(*args, **kwargs):
+    if 'timeout' not in kwargs:
+        kwargs['timeout'] = settings['outgoing']['request_timeout']
+    kwargs['raise_for_httperror'] = True
+    return http_get(*args, **kwargs)
+
+
+def brave(query, _lang):
+    # brave search autocompleter
+    url = 'https://search.brave.com/api/suggest?'
+    url += urlencode({'q': query})
+    country = 'all'
+    # if lang in _brave:
+    #    country = lang
+    kwargs = {'cookies': {'country': country}}
+    resp = get(url, **kwargs)
+
+    results = []
+
+    if resp.ok:
+        data = resp.json()
+        for item in data[1]:
+            results.append(item)
+    return results
+
+
+def dbpedia(query, _lang):
+    # dbpedia autocompleter, no HTTPS
+    autocomplete_url = 'https://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
+
+    response = get(autocomplete_url + urlencode(dict(QueryString=query)))
+
+    results = []
+
+    if response.ok:
+        dom = lxml.etree.fromstring(response.content)
+        results = dom.xpath('//Result/Label//text()')
+
+    return results
+
+
+def duckduckgo(query, sxng_locale):
+    """Autocomplete from DuckDuckGo. Supports DuckDuckGo's languages"""
+
+    traits = engines['duckduckgo'].traits
+    args = {
+        'q': query,
+        'kl': traits.get_region(sxng_locale, traits.all_locale),
+    }
+
+    url = 'https://duckduckgo.com/ac/?type=list&' + urlencode(args)
+    resp = get(url)
+
+    ret_val = []
+    if resp.ok:
+        j = resp.json()
+        if len(j) > 1:
+            ret_val = j[1]
+    return ret_val
+
+
+
[docs]def google_complete(query, sxng_locale): + """Autocomplete from Google. Supports Google's languages and subdomains + (:py:obj:`searx.engines.google.get_google_info`) by using the async REST + API:: + + https://{subdomain}/complete/search?{args} + + """ + + google_info = google.get_google_info({'searxng_locale': sxng_locale}, engines['google'].traits) + + url = 'https://{subdomain}/complete/search?{args}' + args = urlencode( + { + 'q': query, + 'client': 'gws-wiz', + 'hl': google_info['params']['hl'], + } + ) + results = [] + resp = get(url.format(subdomain=google_info['subdomain'], args=args)) + if resp.ok: + json_txt = resp.text[resp.text.find('[') : resp.text.find(']', -3) + 1] + data = json.loads(json_txt) + for item in data[0]: + results.append(lxml.html.fromstring(item[0]).text_content()) + return results
+ + +def seznam(query, _lang): + # seznam search autocompleter + url = 'https://suggest.seznam.cz/fulltext/cs?{query}' + + resp = get( + url.format( + query=urlencode( + {'phrase': query, 'cursorPosition': len(query), 'format': 'json-2', 'highlight': '1', 'count': '6'} + ) + ) + ) + + if not resp.ok: + return [] + + data = resp.json() + return [ + ''.join([part.get('text', '') for part in item.get('text', [])]) + for item in data.get('result', []) + if item.get('itemType', None) == 'ItemType.TEXT' + ] + + +def startpage(query, sxng_locale): + """Autocomplete from Startpage. Supports Startpage's languages""" + lui = engines['startpage'].traits.get_language(sxng_locale, 'english') + url = 'https://startpage.com/suggestions?{query}' + resp = get(url.format(query=urlencode({'q': query, 'segment': 'startpage.udog', 'lui': lui}))) + data = resp.json() + return [e['text'] for e in data.get('suggestions', []) if 'text' in e] + + +def swisscows(query, _lang): + # swisscows autocompleter + url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5' + + resp = json.loads(get(url.format(query=urlencode({'query': query}))).text) + return resp + + +def qwant(query, sxng_locale): + """Autocomplete from Qwant. Supports Qwant's regions.""" + results = [] + + locale = engines['qwant'].traits.get_region(sxng_locale, 'en_US') + url = 'https://api.qwant.com/v3/suggest?{query}' + resp = get(url.format(query=urlencode({'q': query, 'locale': locale, 'version': '2'}))) + + if resp.ok: + data = resp.json() + if data['status'] == 'success': + for item in data['data']['items']: + results.append(item['value']) + + return results + + +def wikipedia(query, sxng_locale): + """Autocomplete from Wikipedia. Supports Wikipedia's languages (aka netloc).""" + results = [] + eng_traits = engines['wikipedia'].traits + wiki_lang = eng_traits.get_language(sxng_locale, 'en') + wiki_netloc = eng_traits.custom['wiki_netloc'].get(wiki_lang, 'en.wikipedia.org') + + url = 'https://{wiki_netloc}/w/api.php?{args}' + args = urlencode( + { + 'action': 'opensearch', + 'format': 'json', + 'formatversion': '2', + 'search': query, + 'namespace': '0', + 'limit': '10', + } + ) + resp = get(url.format(args=args, wiki_netloc=wiki_netloc)) + if resp.ok: + data = resp.json() + if len(data) > 1: + results = data[1] + + return results + + +def yandex(query, _lang): + # yandex autocompleter + url = "https://suggest.yandex.com/suggest-ff.cgi?{0}" + + resp = json.loads(get(url.format(urlencode(dict(part=query)))).text) + if len(resp) > 1: + return resp[1] + return [] + + +backends = { + 'dbpedia': dbpedia, + 'duckduckgo': duckduckgo, + 'google': google_complete, + 'seznam': seznam, + 'startpage': startpage, + 'swisscows': swisscows, + 'qwant': qwant, + 'wikipedia': wikipedia, + 'brave': brave, + 'yandex': yandex, +} + + +def search_autocomplete(backend_name, query, sxng_locale): + backend = backends.get(backend_name) + if backend is None: + return [] + try: + return backend(query, sxng_locale) + except (HTTPError, SearxEngineResponseException): + return [] +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/babel_extract.html b/_modules/searx/babel_extract.html new file mode 100644 index 000000000..9d882c0a7 --- /dev/null +++ b/_modules/searx/babel_extract.html @@ -0,0 +1,159 @@ + + + + + + + + searx.babel_extract — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.babel_extract

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This module implements the :origin:`searxng_msg <babel.cfg>` extractor to
+extract messages from:
+
+- :origin:`searx/searxng.msg`
+
+The ``searxng.msg`` files are selected by Babel_, see Babel's configuration in
+:origin:`babel.cfg`::
+
+    searxng_msg = searx.babel_extract.extract
+    ...
+    [searxng_msg: **/searxng.msg]
+
+A ``searxng.msg`` file is a python file that is *executed* by the
+:py:obj:`extract` function.  Additional ``searxng.msg`` files can be added by:
+
+1. Adding a ``searxng.msg`` file in one of the SearXNG python packages and
+2. implement a method in :py:obj:`extract` that yields messages from this file.
+
+.. _Babel: https://babel.pocoo.org/en/latest/index.html
+
+"""
+
+from os import path
+
+SEARXNG_MSG_FILE = "searxng.msg"
+_MSG_FILES = [path.join(path.dirname(__file__), SEARXNG_MSG_FILE)]
+
+
+
[docs]def extract( + # pylint: disable=unused-argument + fileobj, + keywords, + comment_tags, + options, +): + """Extract messages from ``searxng.msg`` files by a custom extractor_. + + .. _extractor: + https://babel.pocoo.org/en/latest/messages.html#writing-extraction-methods + """ + if fileobj.name not in _MSG_FILES: + raise RuntimeError("don't know how to extract messages from %s" % fileobj.name) + + namespace = {} + exec(fileobj.read(), {}, namespace) # pylint: disable=exec-used + + for name in namespace['__all__']: + for k, v in namespace[name].items(): + yield 0, '_', v, ["%s['%s']" % (name, k)]
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/botdetection/_helpers.html b/_modules/searx/botdetection/_helpers.html new file mode 100644 index 000000000..068f34220 --- /dev/null +++ b/_modules/searx/botdetection/_helpers.html @@ -0,0 +1,228 @@ + + + + + + + + searx.botdetection._helpers — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.botdetection._helpers

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+# pylint: disable=missing-module-docstring, invalid-name
+from __future__ import annotations
+
+from ipaddress import (
+    IPv4Network,
+    IPv6Network,
+    IPv4Address,
+    IPv6Address,
+    ip_network,
+)
+import flask
+import werkzeug
+
+from searx.tools import config
+from searx import logger
+
+logger = logger.getChild('botdetection')
+
+
+def dump_request(request: flask.Request):
+    return (
+        request.path
+        + " || X-Forwarded-For: %s" % request.headers.get('X-Forwarded-For')
+        + " || X-Real-IP: %s" % request.headers.get('X-Real-IP')
+        + " || form: %s" % request.form
+        + " || Accept: %s" % request.headers.get('Accept')
+        + " || Accept-Language: %s" % request.headers.get('Accept-Language')
+        + " || Accept-Encoding: %s" % request.headers.get('Accept-Encoding')
+        + " || Content-Type: %s" % request.headers.get('Content-Type')
+        + " || Content-Length: %s" % request.headers.get('Content-Length')
+        + " || Connection: %s" % request.headers.get('Connection')
+        + " || User-Agent: %s" % request.headers.get('User-Agent')
+    )
+
+
+def too_many_requests(network: IPv4Network | IPv6Network, log_msg: str) -> werkzeug.Response | None:
+    """Returns a HTTP 429 response object and writes a ERROR message to the
+    'botdetection' logger.  This function is used in part by the filter methods
+    to return the default ``Too Many Requests`` response.
+
+    """
+
+    logger.debug("BLOCK %s: %s", network.compressed, log_msg)
+    return flask.make_response(('Too Many Requests', 429))
+
+
+def get_network(real_ip: IPv4Address | IPv6Address, cfg: config.Config) -> IPv4Network | IPv6Network:
+    """Returns the (client) network of whether the real_ip is part of."""
+
+    if real_ip.version == 6:
+        prefix = cfg['real_ip.ipv6_prefix']
+    else:
+        prefix = cfg['real_ip.ipv4_prefix']
+    network = ip_network(f"{real_ip}/{prefix}", strict=False)
+    # logger.debug("get_network(): %s", network.compressed)
+    return network
+
+
+
[docs]def get_real_ip(request: flask.Request) -> str: + """Returns real IP of the request. Since not all proxies set all the HTTP + headers and incoming headers can be faked it may happen that the IP cannot + be determined correctly. + + .. sidebar:: :py:obj:`flask.Request.remote_addr` + + SearXNG uses Werkzeug's ProxyFix_ (with it default ``x_for=1``). + + This function tries to get the remote IP in the order listed below, + additional some tests are done and if inconsistencies or errors are + detected, they are logged. + + The remote IP of the request is taken from (first match): + + - X-Forwarded-For_ header + - `X-real-IP header <https://github.com/searxng/searxng/issues/1237#issuecomment-1147564516>`__ + - :py:obj:`flask.Request.remote_addr` + + .. _ProxyFix: + https://werkzeug.palletsprojects.com/middleware/proxy_fix/ + + .. _X-Forwarded-For: + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For + + """ + + forwarded_for = request.headers.get("X-Forwarded-For") + real_ip = request.headers.get('X-Real-IP') + remote_addr = request.remote_addr + # logger.debug( + # "X-Forwarded-For: %s || X-Real-IP: %s || request.remote_addr: %s", forwarded_for, real_ip, remote_addr + # ) + + if not forwarded_for: + logger.error("X-Forwarded-For header is not set!") + else: + from .limiter import get_cfg # pylint: disable=import-outside-toplevel, cyclic-import + + forwarded_for = [x.strip() for x in forwarded_for.split(',')] + x_for: int = get_cfg()['real_ip.x_for'] # type: ignore + forwarded_for = forwarded_for[-min(len(forwarded_for), x_for)] + + if not real_ip: + logger.error("X-Real-IP header is not set!") + + if forwarded_for and real_ip and forwarded_for != real_ip: + logger.warning("IP from X-Real-IP (%s) is not equal to IP from X-Forwarded-For (%s)", real_ip, forwarded_for) + + if forwarded_for and remote_addr and forwarded_for != remote_addr: + logger.warning( + "IP from WSGI environment (%s) is not equal to IP from X-Forwarded-For (%s)", remote_addr, forwarded_for + ) + + if real_ip and remote_addr and real_ip != remote_addr: + logger.warning("IP from WSGI environment (%s) is not equal to IP from X-Real-IP (%s)", remote_addr, real_ip) + + request_ip = forwarded_for or real_ip or remote_addr or '0.0.0.0' + # logger.debug("get_real_ip() -> %s", request_ip) + return request_ip
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/botdetection/ip_lists.html b/_modules/searx/botdetection/ip_lists.html new file mode 100644 index 000000000..99831b677 --- /dev/null +++ b/_modules/searx/botdetection/ip_lists.html @@ -0,0 +1,193 @@ + + + + + + + + searx.botdetection.ip_lists — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.botdetection.ip_lists

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+""".. _botdetection.ip_lists:
+
+Method ``ip_lists``
+-------------------
+
+The ``ip_lists`` method implements IP :py:obj:`block- <block_ip>` and
+:py:obj:`pass-lists <pass_ip>`.
+
+.. code:: toml
+
+   [botdetection.ip_lists]
+
+   pass_ip = [
+    '140.238.172.132', # IPv4 of check.searx.space
+    '192.168.0.0/16',  # IPv4 private network
+    'fe80::/10'        # IPv6 linklocal
+   ]
+   block_ip = [
+      '93.184.216.34', # IPv4 of example.org
+      '257.1.1.1',     # invalid IP --> will be ignored, logged in ERROR class
+   ]
+
+"""
+# pylint: disable=unused-argument
+
+from __future__ import annotations
+from typing import Tuple
+from ipaddress import (
+    ip_network,
+    IPv4Address,
+    IPv6Address,
+)
+
+from searx.tools import config
+from ._helpers import logger
+
+logger = logger.getChild('ip_limit')
+
+SEARXNG_ORG = [
+    # https://github.com/searxng/searxng/pull/2484#issuecomment-1576639195
+    '140.238.172.132',  # IPv4 check.searx.space
+    '2603:c022:0:4900::/56',  # IPv6 check.searx.space
+]
+"""Passlist of IPs from the SearXNG organization, e.g. `check.searx.space`."""
+
+
+
[docs]def pass_ip(real_ip: IPv4Address | IPv6Address, cfg: config.Config) -> Tuple[bool, str]: + """Checks if the IP on the subnet is in one of the members of the + ``botdetection.ip_lists.pass_ip`` list. + """ + + if cfg.get('botdetection.ip_lists.pass_searxng_org', default=True): + for net in SEARXNG_ORG: + net = ip_network(net, strict=False) + if real_ip.version == net.version and real_ip in net: + return True, f"IP matches {net.compressed} in SEARXNG_ORG list." + return ip_is_subnet_of_member_in_list(real_ip, 'botdetection.ip_lists.pass_ip', cfg)
+ + +
[docs]def block_ip(real_ip: IPv4Address | IPv6Address, cfg: config.Config) -> Tuple[bool, str]: + """Checks if the IP on the subnet is in one of the members of the + ``botdetection.ip_lists.block_ip`` list. + """ + + block, msg = ip_is_subnet_of_member_in_list(real_ip, 'botdetection.ip_lists.block_ip', cfg) + if block: + msg += " To remove IP from list, please contact the maintainer of the service." + return block, msg
+ + +def ip_is_subnet_of_member_in_list( + real_ip: IPv4Address | IPv6Address, list_name: str, cfg: config.Config +) -> Tuple[bool, str]: + + for net in cfg.get(list_name, default=[]): + try: + net = ip_network(net, strict=False) + except ValueError: + logger.error("invalid IP %s in %s", net, list_name) + continue + if real_ip.version == net.version and real_ip in net: + return True, f"IP matches {net.compressed} in {list_name}." + return False, f"IP is not a member of an item in the f{list_name} list" +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/botdetection/link_token.html b/_modules/searx/botdetection/link_token.html new file mode 100644 index 000000000..1440ba191 --- /dev/null +++ b/_modules/searx/botdetection/link_token.html @@ -0,0 +1,265 @@ + + + + + + + + searx.botdetection.link_token — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.botdetection.link_token

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""
+Method ``link_token``
+---------------------
+
+The ``link_token`` method evaluates a request as :py:obj:`suspicious
+<is_suspicious>` if the URL ``/client<token>.css`` is not requested by the
+client.  By adding a random component (the token) in the URL, a bot can not send
+a ping by request a static URL.
+
+.. note::
+
+   This method requires a redis DB and needs a HTTP X-Forwarded-For_ header.
+
+To get in use of this method a flask URL route needs to be added:
+
+.. code:: python
+
+   @app.route('/client<token>.css', methods=['GET', 'POST'])
+   def client_token(token=None):
+       link_token.ping(request, token)
+       return Response('', mimetype='text/css')
+
+And in the HTML template from flask a stylesheet link is needed (the value of
+``link_token`` comes from :py:obj:`get_token`):
+
+.. code:: html
+
+   <link rel="stylesheet"
+         href="{{ url_for('client_token', token=link_token) }}"
+         type="text/css" />
+
+.. _X-Forwarded-For:
+   https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
+
+"""
+from __future__ import annotations
+from ipaddress import (
+    IPv4Network,
+    IPv6Network,
+    ip_address,
+)
+
+import string
+import random
+import flask
+
+from searx import logger
+from searx import redisdb
+from searx.redislib import secret_hash
+
+from ._helpers import (
+    get_network,
+    get_real_ip,
+)
+
+TOKEN_LIVE_TIME = 600
+"""Livetime (sec) of limiter's CSS token."""
+
+PING_LIVE_TIME = 3600
+"""Livetime (sec) of the ping-key from a client (request)"""
+
+PING_KEY = 'SearXNG_limiter.ping'
+"""Prefix of all ping-keys generated by :py:obj:`get_ping_key`"""
+
+TOKEN_KEY = 'SearXNG_limiter.token'
+"""Key for which the current token is stored in the DB"""
+
+logger = logger.getChild('botdetection.link_token')
+
+
+
[docs]def is_suspicious(network: IPv4Network | IPv6Network, request: flask.Request, renew: bool = False): + """Checks whether a valid ping is exists for this (client) network, if not + this request is rated as *suspicious*. If a valid ping exists and argument + ``renew`` is ``True`` the expire time of this ping is reset to + :py:obj:`PING_LIVE_TIME`. + + """ + redis_client = redisdb.client() + if not redis_client: + return False + + ping_key = get_ping_key(network, request) + if not redis_client.get(ping_key): + logger.warning("missing ping (IP: %s) / request: %s", network.compressed, ping_key) + return True + + if renew: + redis_client.set(ping_key, 1, ex=PING_LIVE_TIME) + + logger.debug("found ping for (client) network %s -> %s", network.compressed, ping_key) + return False
+ + +
[docs]def ping(request: flask.Request, token: str): + """This function is called by a request to URL ``/client<token>.css``. If + ``token`` is valid a :py:obj:`PING_KEY` for the client is stored in the DB. + The expire time of this ping-key is :py:obj:`PING_LIVE_TIME`. + + """ + from . import limiter # pylint: disable=import-outside-toplevel, cyclic-import + + redis_client = redisdb.client() + if not redis_client: + return + if not token_is_valid(token): + return + + cfg = limiter.get_cfg() + real_ip = ip_address(get_real_ip(request)) + network = get_network(real_ip, cfg) + + ping_key = get_ping_key(network, request) + logger.debug("store ping_key for (client) network %s (IP %s) -> %s", network.compressed, real_ip, ping_key) + redis_client.set(ping_key, 1, ex=PING_LIVE_TIME)
+ + +
[docs]def get_ping_key(network: IPv4Network | IPv6Network, request: flask.Request) -> str: + """Generates a hashed key that fits (more or less) to a *WEB-browser + session* in a network.""" + return ( + PING_KEY + + "[" + + secret_hash( + network.compressed + request.headers.get('Accept-Language', '') + request.headers.get('User-Agent', '') + ) + + "]" + )
+ + +def token_is_valid(token) -> bool: + valid = token == get_token() + logger.debug("token is valid --> %s", valid) + return valid + + +
[docs]def get_token() -> str: + """Returns current token. If there is no currently active token a new token + is generated randomly and stored in the redis DB. + + - :py:obj:`TOKEN_LIVE_TIME` + - :py:obj:`TOKEN_KEY` + + """ + redis_client = redisdb.client() + if not redis_client: + # This function is also called when limiter is inactive / no redis DB + # (see render function in webapp.py) + return '12345678' + token = redis_client.get(TOKEN_KEY) + if token: + token = token.decode('UTF-8') + else: + token = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(16)) + redis_client.set(TOKEN_KEY, token, ex=TOKEN_LIVE_TIME) + return token
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/enginelib.html b/_modules/searx/enginelib.html new file mode 100644 index 000000000..89b0e3794 --- /dev/null +++ b/_modules/searx/enginelib.html @@ -0,0 +1,253 @@ + + + + + + + + searx.enginelib — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.enginelib

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Implementations of the framework for the SearXNG engines.
+
+.. hint::
+
+   The long term goal is to modularize all implementations of the engine
+   framework here in this Python package.  ToDo:
+
+   - move implementations of the :ref:`searx.engines loader` to a new module in
+     the :py:obj:`searx.enginelib` namespace.
+
+"""
+
+
+from __future__ import annotations
+from typing import List, Callable, TYPE_CHECKING
+
+if TYPE_CHECKING:
+    from searx.enginelib import traits
+
+
+
[docs]class Engine: # pylint: disable=too-few-public-methods + """Class of engine instances build from YAML settings. + + Further documentation see :ref:`general engine configuration`. + + .. hint:: + + This class is currently never initialized and only used for type hinting. + """ + + # Common options in the engine module + + engine_type: str + """Type of the engine (:ref:`searx.search.processors`)""" + + paging: bool + """Engine supports multiple pages.""" + + time_range_support: bool + """Engine supports search time range.""" + + safesearch: bool + """Engine supports SafeSearch""" + + language_support: bool + """Engine supports languages (locales) search.""" + + language: str + """For an engine, when there is ``language: ...`` in the YAML settings the engine + does support only this one language: + + .. code:: yaml + + - name: google french + engine: google + language: fr + """ + + region: str + """For an engine, when there is ``region: ...`` in the YAML settings the engine + does support only this one region:: + + .. code:: yaml + + - name: google belgium + engine: google + region: fr-BE + """ + + fetch_traits: Callable + """Function to to fetch engine's traits from origin.""" + + traits: traits.EngineTraits + """Traits of the engine.""" + + # settings.yml + + categories: List[str] + """Specifies to which :ref:`engine categories` the engine should be added.""" + + name: str + """Name that will be used across SearXNG to define this engine. In settings, on + the result page ..""" + + engine: str + """Name of the python file used to handle requests and responses to and from + this search engine (file name from :origin:`searx/engines` without + ``.py``).""" + + enable_http: bool + """Enable HTTP (by default only HTTPS is enabled).""" + + shortcut: str + """Code used to execute bang requests (``!foo``)""" + + timeout: float + """Specific timeout for search-engine.""" + + display_error_messages: bool + """Display error messages on the web UI.""" + + proxies: dict + """Set proxies for a specific engine (YAML): + + .. code:: yaml + + proxies : + http: socks5://proxy:port + https: socks5://proxy:port + """ + + disabled: bool + """To disable by default the engine, but not deleting it. It will allow the + user to manually activate it in the settings.""" + + inactive: bool + """Remove the engine from the settings (*disabled & removed*).""" + + about: dict + """Additional fileds describing the engine. + + .. code:: yaml + + about: + website: https://example.com + wikidata_id: Q306656 + official_api_documentation: https://example.com/api-doc + use_official_api: true + require_api_key: true + results: HTML + """ + + using_tor_proxy: bool + """Using tor proxy (``true``) or not (``false``) for this engine.""" + + send_accept_language_header: bool + """When this option is activated, the language (locale) that is selected by + the user is used to build and send a ``Accept-Language`` header in the + request to the origin search engine.""" + + tokens: List[str] + """A list of secret tokens to make this engine *private*, more details see + :ref:`private engines`."""
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/enginelib/traits.html b/_modules/searx/enginelib/traits.html new file mode 100644 index 000000000..1ac22081d --- /dev/null +++ b/_modules/searx/enginelib/traits.html @@ -0,0 +1,364 @@ + + + + + + + + searx.enginelib.traits — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.enginelib.traits

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Engine's traits are fetched from the origin engines and stored in a JSON file
+in the *data folder*.  Most often traits are languages and region codes and
+their mapping from SearXNG's representation to the representation in the origin
+search engine.  For new traits new properties can be added to the class
+:py:class:`EngineTraits`.
+
+To load traits from the persistence :py:obj:`EngineTraitsMap.from_data` can be
+used.
+"""
+
+from __future__ import annotations
+import json
+import dataclasses
+import types
+from typing import Dict, Iterable, Union, Callable, Optional, TYPE_CHECKING
+from typing_extensions import Literal, Self
+
+from searx import locales
+from searx.data import data_dir, ENGINE_TRAITS
+
+if TYPE_CHECKING:
+    from . import Engine
+
+
+
[docs]class EngineTraitsEncoder(json.JSONEncoder): + """Encodes :class:`EngineTraits` to a serializable object, see + :class:`json.JSONEncoder`.""" + +
[docs] def default(self, o): + """Return dictionary of a :class:`EngineTraits` object.""" + if isinstance(o, EngineTraits): + return o.__dict__ + return super().default(o)
+ + +
[docs]@dataclasses.dataclass +class EngineTraits: + """The class is intended to be instantiated for each engine.""" + + regions: Dict[str, str] = dataclasses.field(default_factory=dict) + """Maps SearXNG's internal representation of a region to the one of the engine. + + SearXNG's internal representation can be parsed by babel and the value is + send to the engine: + + .. code:: python + + regions ={ + 'fr-BE' : <engine's region name>, + } + + for key, egnine_region regions.items(): + searxng_region = babel.Locale.parse(key, sep='-') + ... + """ + + languages: Dict[str, str] = dataclasses.field(default_factory=dict) + """Maps SearXNG's internal representation of a language to the one of the engine. + + SearXNG's internal representation can be parsed by babel and the value is + send to the engine: + + .. code:: python + + languages = { + 'ca' : <engine's language name>, + } + + for key, egnine_lang in languages.items(): + searxng_lang = babel.Locale.parse(key) + ... + """ + + all_locale: Optional[str] = None + """To which locale value SearXNG's ``all`` language is mapped (shown a "Default + language"). + """ + + data_type: Literal['traits_v1'] = 'traits_v1' + """Data type, default is 'traits_v1'. + """ + + custom: Dict[str, Union[Dict[str, Dict], Iterable[str]]] = dataclasses.field(default_factory=dict) + """A place to store engine's custom traits, not related to the SearXNG core. + """ + +
[docs] def get_language(self, searxng_locale: str, default=None): + """Return engine's language string that *best fits* to SearXNG's locale. + + :param searxng_locale: SearXNG's internal representation of locale + selected by the user. + + :param default: engine's default language + + The *best fits* rules are implemented in + :py:obj:`searx.locales.get_engine_locale`. Except for the special value ``all`` + which is determined from :py:obj:`EngineTraits.all_locale`. + """ + if searxng_locale == 'all' and self.all_locale is not None: + return self.all_locale + return locales.get_engine_locale(searxng_locale, self.languages, default=default)
+ +
[docs] def get_region(self, searxng_locale: str, default=None): + """Return engine's region string that best fits to SearXNG's locale. + + :param searxng_locale: SearXNG's internal representation of locale + selected by the user. + + :param default: engine's default region + + The *best fits* rules are implemented in + :py:obj:`searx.locales.get_engine_locale`. Except for the special value ``all`` + which is determined from :py:obj:`EngineTraits.all_locale`. + """ + if searxng_locale == 'all' and self.all_locale is not None: + return self.all_locale + return locales.get_engine_locale(searxng_locale, self.regions, default=default)
+ +
[docs] def is_locale_supported(self, searxng_locale: str) -> bool: + """A *locale* (SearXNG's internal representation) is considered to be + supported by the engine if the *region* or the *language* is supported + by the engine. + + For verification the functions :py:func:`EngineTraits.get_region` and + :py:func:`EngineTraits.get_language` are used. + """ + if self.data_type == 'traits_v1': + return bool(self.get_region(searxng_locale) or self.get_language(searxng_locale)) + + raise TypeError('engine traits of type %s is unknown' % self.data_type)
+ +
[docs] def copy(self): + """Create a copy of the dataclass object.""" + return EngineTraits(**dataclasses.asdict(self))
+ +
[docs] @classmethod + def fetch_traits(cls, engine: Engine) -> Union[Self, None]: + """Call a function ``fetch_traits(engine_traits)`` from engines namespace to fetch + and set properties from the origin engine in the object ``engine_traits``. If + function does not exists, ``None`` is returned. + """ + + fetch_traits = getattr(engine, 'fetch_traits', None) + engine_traits = None + + if fetch_traits: + engine_traits = cls() + fetch_traits(engine_traits) + return engine_traits
+ +
[docs] def set_traits(self, engine: Engine): + """Set traits from self object in a :py:obj:`.Engine` namespace. + + :param engine: engine instance build by :py:func:`searx.engines.load_engine` + """ + + if self.data_type == 'traits_v1': + self._set_traits_v1(engine) + else: + raise TypeError('engine traits of type %s is unknown' % self.data_type)
+ + def _set_traits_v1(self, engine: Engine): + # For an engine, when there is `language: ...` in the YAML settings the engine + # does support only this one language (region):: + # + # - name: google italian + # engine: google + # language: it + # region: it-IT + + traits = self.copy() + + _msg = "settings.yml - engine: '%s' / %s: '%s' not supported" + + languages = traits.languages + if hasattr(engine, 'language'): + if engine.language not in languages: + raise ValueError(_msg % (engine.name, 'language', engine.language)) + traits.languages = {engine.language: languages[engine.language]} + + regions = traits.regions + if hasattr(engine, 'region'): + if engine.region not in regions: + raise ValueError(_msg % (engine.name, 'region', engine.region)) + traits.regions = {engine.region: regions[engine.region]} + + engine.language_support = bool(traits.languages or traits.regions) + + # set the copied & modified traits in engine's namespace + engine.traits = traits
+ + +
[docs]class EngineTraitsMap(Dict[str, EngineTraits]): + """A python dictionary to map :class:`EngineTraits` by engine name.""" + + ENGINE_TRAITS_FILE = (data_dir / 'engine_traits.json').resolve() + """File with persistence of the :py:obj:`EngineTraitsMap`.""" + +
[docs] def save_data(self): + """Store EngineTraitsMap in in file :py:obj:`self.ENGINE_TRAITS_FILE`""" + with open(self.ENGINE_TRAITS_FILE, 'w', encoding='utf-8') as f: + json.dump(self, f, indent=2, sort_keys=True, cls=EngineTraitsEncoder)
+ +
[docs] @classmethod + def from_data(cls) -> Self: + """Instantiate :class:`EngineTraitsMap` object from :py:obj:`ENGINE_TRAITS`""" + obj = cls() + for k, v in ENGINE_TRAITS.items(): + obj[k] = EngineTraits(**v) + return obj
+ + @classmethod + def fetch_traits(cls, log: Callable) -> Self: + from searx import engines # pylint: disable=cyclic-import, import-outside-toplevel + + names = list(engines.engines) + names.sort() + obj = cls() + + for engine_name in names: + engine = engines.engines[engine_name] + + traits = EngineTraits.fetch_traits(engine) + if traits is not None: + log("%-20s: SearXNG languages --> %s " % (engine_name, len(traits.languages))) + log("%-20s: SearXNG regions --> %s" % (engine_name, len(traits.regions))) + obj[engine_name] = traits + + return obj + +
[docs] def set_traits(self, engine: Engine | types.ModuleType): + """Set traits in a :py:obj:`Engine` namespace. + + :param engine: engine instance build by :py:func:`searx.engines.load_engine` + """ + + engine_traits = EngineTraits(data_type='traits_v1') + if engine.name in self.keys(): + engine_traits = self[engine.name] + + elif engine.engine in self.keys(): + # The key of the dictionary traits_map is the *engine name* + # configured in settings.xml. When multiple engines are configured + # in settings.yml to use the same origin engine (python module) + # these additional engines can use the languages from the origin + # engine. For this use the configured ``engine: ...`` from + # settings.yml + engine_traits = self[engine.engine] + + engine_traits.set_traits(engine)
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines.html b/_modules/searx/engines.html new file mode 100644 index 000000000..ff8893732 --- /dev/null +++ b/_modules/searx/engines.html @@ -0,0 +1,361 @@ + + + + + + + + searx.engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Load and initialize the ``engines``, see :py:func:`load_engines` and register
+:py:obj:`engine_shortcuts`.
+
+usage::
+
+    load_engines( settings['engines'] )
+
+"""
+
+from __future__ import annotations
+
+import sys
+import copy
+from os.path import realpath, dirname
+
+from typing import TYPE_CHECKING, Dict
+import types
+import inspect
+
+from searx import logger, settings
+from searx.utils import load_module
+
+if TYPE_CHECKING:
+    from searx.enginelib import Engine
+
+logger = logger.getChild('engines')
+ENGINE_DIR = dirname(realpath(__file__))
+ENGINE_DEFAULT_ARGS = {
+    # Common options in the engine module
+    "engine_type": "online",
+    "paging": False,
+    "time_range_support": False,
+    "safesearch": False,
+    # settings.yml
+    "categories": ["general"],
+    "enable_http": False,
+    "shortcut": "-",
+    "timeout": settings["outgoing"]["request_timeout"],
+    "display_error_messages": True,
+    "disabled": False,
+    "inactive": False,
+    "about": {},
+    "using_tor_proxy": False,
+    "send_accept_language_header": False,
+    "tokens": [],
+}
+# set automatically when an engine does not have any tab category
+DEFAULT_CATEGORY = 'other'
+
+
+# Defaults for the namespace of an engine module, see :py:func:`load_engine`
+
+categories = {'general': []}
+engines: Dict[str, Engine | types.ModuleType] = {}
+engine_shortcuts = {}
+"""Simple map of registered *shortcuts* to name of the engine (or ``None``).
+
+::
+
+    engine_shortcuts[engine.shortcut] = engine.name
+
+:meta hide-value:
+"""
+
+
+def check_engine_module(module: types.ModuleType):
+    # probe unintentional name collisions / for example name collisions caused
+    # by import statements in the engine module ..
+
+    # network: https://github.com/searxng/searxng/issues/762#issuecomment-1605323861
+    obj = getattr(module, 'network', None)
+    if obj and inspect.ismodule(obj):
+        msg = f'type of {module.__name__}.network is a module ({obj.__name__}), expected a string'
+        # logger.error(msg)
+        raise TypeError(msg)
+
+
+
[docs]def load_engine(engine_data: dict) -> Engine | types.ModuleType | None: + """Load engine from ``engine_data``. + + :param dict engine_data: Attributes from YAML ``settings:engines/<engine>`` + :return: initialized namespace of the ``<engine>``. + + 1. create a namespace and load module of the ``<engine>`` + 2. update namespace with the defaults from :py:obj:`ENGINE_DEFAULT_ARGS` + 3. update namespace with values from ``engine_data`` + + If engine *is active*, return namespace of the engine, otherwise return + ``None``. + + This function also returns ``None`` if initialization of the namespace fails + for one of the following reasons: + + - engine name contains underscore + - engine name is not lowercase + - required attribute is not set :py:func:`is_missing_required_attributes` + + """ + # pylint: disable=too-many-return-statements + + engine_name = engine_data.get('name') + if engine_name is None: + logger.error('An engine does not have a "name" field') + return None + if '_' in engine_name: + logger.error('Engine name contains underscore: "{}"'.format(engine_name)) + return None + + if engine_name.lower() != engine_name: + logger.warning('Engine name is not lowercase: "{}", converting to lowercase'.format(engine_name)) + engine_name = engine_name.lower() + engine_data['name'] = engine_name + + # load_module + module_name = engine_data.get('engine') + if module_name is None: + logger.error('The "engine" field is missing for the engine named "{}"'.format(engine_name)) + return None + try: + engine = load_module(module_name + '.py', ENGINE_DIR) + except (SyntaxError, KeyboardInterrupt, SystemExit, SystemError, ImportError, RuntimeError): + logger.exception('Fatal exception in engine "{}"'.format(module_name)) + sys.exit(1) + except BaseException: + logger.exception('Cannot load engine "{}"'.format(module_name)) + return None + + check_engine_module(engine) + update_engine_attributes(engine, engine_data) + update_attributes_for_tor(engine) + + # avoid cyclic imports + # pylint: disable=import-outside-toplevel + from searx.enginelib.traits import EngineTraitsMap + + trait_map = EngineTraitsMap.from_data() + trait_map.set_traits(engine) + + if not is_engine_active(engine): + return None + + if is_missing_required_attributes(engine): + return None + + set_loggers(engine, engine_name) + + if not any(cat in settings['categories_as_tabs'] for cat in engine.categories): + engine.categories.append(DEFAULT_CATEGORY) + + return engine
+ + +def set_loggers(engine, engine_name): + # set the logger for engine + engine.logger = logger.getChild(engine_name) + # the engine may have load some other engines + # may sure the logger is initialized + # use sys.modules.copy() to avoid "RuntimeError: dictionary changed size during iteration" + # see https://github.com/python/cpython/issues/89516 + # and https://docs.python.org/3.10/library/sys.html#sys.modules + modules = sys.modules.copy() + for module_name, module in modules.items(): + if ( + module_name.startswith("searx.engines") + and module_name != "searx.engines.__init__" + and not hasattr(module, "logger") + ): + module_engine_name = module_name.split(".")[-1] + module.logger = logger.getChild(module_engine_name) # type: ignore + + +def update_engine_attributes(engine: Engine | types.ModuleType, engine_data): + # set engine attributes from engine_data + for param_name, param_value in engine_data.items(): + if param_name == 'categories': + if isinstance(param_value, str): + param_value = list(map(str.strip, param_value.split(','))) + engine.categories = param_value # type: ignore + elif hasattr(engine, 'about') and param_name == 'about': + engine.about = {**engine.about, **engine_data['about']} # type: ignore + else: + setattr(engine, param_name, param_value) + + # set default attributes + for arg_name, arg_value in ENGINE_DEFAULT_ARGS.items(): + if not hasattr(engine, arg_name): + setattr(engine, arg_name, copy.deepcopy(arg_value)) + + +def update_attributes_for_tor(engine: Engine | types.ModuleType): + if using_tor_proxy(engine) and hasattr(engine, 'onion_url'): + engine.search_url = engine.onion_url + getattr(engine, 'search_path', '') # type: ignore + engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0) # type: ignore + + +
[docs]def is_missing_required_attributes(engine): + """An attribute is required when its name doesn't start with ``_`` (underline). + Required attributes must not be ``None``. + + """ + missing = False + for engine_attr in dir(engine): + if not engine_attr.startswith('_') and getattr(engine, engine_attr) is None: + logger.error('Missing engine config attribute: "{0}.{1}"'.format(engine.name, engine_attr)) + missing = True + return missing
+ + +
[docs]def using_tor_proxy(engine: Engine | types.ModuleType): + """Return True if the engine configuration declares to use Tor.""" + return settings['outgoing'].get('using_tor_proxy') or getattr(engine, 'using_tor_proxy', False)
+ + +def is_engine_active(engine: Engine | types.ModuleType): + # check if engine is inactive + if engine.inactive is True: + return False + + # exclude onion engines if not using tor + if 'onions' in engine.categories and not using_tor_proxy(engine): + return False + + return True + + +def register_engine(engine: Engine | types.ModuleType): + if engine.name in engines: + logger.error('Engine config error: ambiguous name: {0}'.format(engine.name)) + sys.exit(1) + engines[engine.name] = engine + + if engine.shortcut in engine_shortcuts: + logger.error('Engine config error: ambiguous shortcut: {0}'.format(engine.shortcut)) + sys.exit(1) + engine_shortcuts[engine.shortcut] = engine.name + + for category_name in engine.categories: + categories.setdefault(category_name, []).append(engine) + + +
[docs]def load_engines(engine_list): + """usage: ``engine_list = settings['engines']``""" + engines.clear() + engine_shortcuts.clear() + categories.clear() + categories['general'] = [] + for engine_data in engine_list: + engine = load_engine(engine_data) + if engine: + register_engine(engine) + return engines
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/annas_archive.html b/_modules/searx/engines/annas_archive.html new file mode 100644 index 000000000..3ff16d9c6 --- /dev/null +++ b/_modules/searx/engines/annas_archive.html @@ -0,0 +1,299 @@ + + + + + + + + searx.engines.annas_archive — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.annas_archive

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""`Anna's Archive`_ is a free non-profit online shadow library metasearch
+engine providing access to a variety of book resources (also via IPFS), created
+by a team of anonymous archivists (AnnaArchivist_).
+
+.. _Anna's Archive: https://annas-archive.org/
+.. _AnnaArchivist: https://annas-software.org/AnnaArchivist/annas-archive
+
+Configuration
+=============
+
+The engine has the following additional settings:
+
+- :py:obj:`aa_content`
+- :py:obj:`aa_ext`
+- :py:obj:`aa_sort`
+
+With this options a SearXNG maintainer is able to configure **additional**
+engines for specific searches in Anna's Archive.  For example a engine to search
+for *newest* articles and journals (PDF) / by shortcut ``!aaa <search-term>``.
+
+.. code:: yaml
+
+  - name: annas articles
+    engine: annas_archive
+    shortcut: aaa
+    aa_content: 'journal_article'
+    aa_ext: 'pdf'
+    aa_sort: 'newest'
+
+Implementations
+===============
+
+"""
+
+from typing import List, Dict, Any, Optional
+from urllib.parse import quote
+from lxml import html
+
+from searx.utils import extract_text, eval_xpath, eval_xpath_list
+from searx.enginelib.traits import EngineTraits
+from searx.data import ENGINE_TRAITS
+
+# about
+about: Dict[str, Any] = {
+    "website": "https://annas-archive.org/",
+    "wikidata_id": "Q115288326",
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": "HTML",
+}
+
+# engine dependent config
+categories: List[str] = ["files"]
+paging: bool = False
+
+# search-url
+base_url: str = "https://annas-archive.org"
+aa_content: str = ""
+"""Anan's search form field **Content** / possible values::
+
+    journal_article, book_any, book_fiction, book_unknown, book_nonfiction,
+    book_comic, magazine, standards_document
+
+To not filter use an empty string (default).
+"""
+aa_sort: str = ''
+"""Sort Anna's results, possible values::
+
+    newest, oldest, largest, smallest
+
+To sort by *most relevant* use an empty string (default)."""
+
+aa_ext: str = ''
+"""Filter Anna's results by a file ending.  Common filters for example are
+``pdf`` and ``epub``.
+
+.. note::
+
+   Anna's Archive is a beta release: Filter results by file extension does not
+   really work on Anna's Archive.
+
+"""
+
+
+
[docs]def init(engine_settings=None): # pylint: disable=unused-argument + """Check of engine's settings.""" + traits = EngineTraits(**ENGINE_TRAITS['annas archive']) + + if aa_content and aa_content not in traits.custom['content']: + raise ValueError(f'invalid setting content: {aa_content}') + + if aa_sort and aa_sort not in traits.custom['sort']: + raise ValueError(f'invalid setting sort: {aa_sort}') + + if aa_ext and aa_ext not in traits.custom['ext']: + raise ValueError(f'invalid setting ext: {aa_ext}')
+ + +def request(query, params: Dict[str, Any]) -> Dict[str, Any]: + q = quote(query) + lang = traits.get_language(params["language"], traits.all_locale) # type: ignore + params["url"] = base_url + f"/search?lang={lang or ''}&content={aa_content}&ext={aa_ext}&sort={aa_sort}&q={q}" + return params + + +def response(resp) -> List[Dict[str, Optional[str]]]: + results: List[Dict[str, Optional[str]]] = [] + dom = html.fromstring(resp.text) + + for item in eval_xpath_list(dom, '//main//div[contains(@class, "h-[125]")]/a'): + results.append(_get_result(item)) + + # The rendering of the WEB page is very strange; except the first position + # all other positions of Anna's result page are enclosed in SGML comments. + # These comments are *uncommented* by some JS code, see query of class + # '.js-scroll-hidden' in Anna's HTML template: + # https://annas-software.org/AnnaArchivist/annas-archive/-/blob/main/allthethings/templates/macros/md5_list.html + + for item in eval_xpath_list(dom, '//main//div[contains(@class, "js-scroll-hidden")]'): + item = html.fromstring(item.xpath('./comment()')[0].text) + results.append(_get_result(item)) + + return results + + +def _get_result(item): + return { + 'template': 'paper.html', + 'url': base_url + item.xpath('./@href')[0], + 'title': extract_text(eval_xpath(item, './/h3/text()[1]')), + 'publisher': extract_text(eval_xpath(item, './/div[contains(@class, "text-sm")]')), + 'authors': [extract_text(eval_xpath(item, './/div[contains(@class, "italic")]'))], + 'content': extract_text(eval_xpath(item, './/div[contains(@class, "text-xs")]')), + 'img_src': item.xpath('.//img/@src')[0], + } + + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages and other search arguments from Anna's search form.""" + # pylint: disable=import-outside-toplevel + + import babel + from searx.network import get # see https://github.com/searxng/searxng/issues/762 + from searx.locales import language_tag + + engine_traits.all_locale = '' + engine_traits.custom['content'] = [] + engine_traits.custom['ext'] = [] + engine_traits.custom['sort'] = [] + + resp = get(base_url + '/search') + if not resp.ok: # type: ignore + raise RuntimeError("Response from Anna's search page is not OK.") + dom = html.fromstring(resp.text) # type: ignore + + # supported language codes + + lang_map = {} + for x in eval_xpath_list(dom, "//form//select[@name='lang']//option"): + eng_lang = x.get("value") + if eng_lang in ('', '_empty', 'nl-BE', 'und'): + continue + try: + locale = babel.Locale.parse(lang_map.get(eng_lang, eng_lang), sep='-') + except babel.UnknownLocaleError: + # silently ignore unknown languages + # print("ERROR: %s -> %s is unknown by babel" % (x.get("data-name"), eng_lang)) + continue + sxng_lang = language_tag(locale) + conflict = engine_traits.languages.get(sxng_lang) + if conflict: + if conflict != eng_lang: + print("CONFLICT: babel %s --> %s, %s" % (sxng_lang, conflict, eng_lang)) + continue + engine_traits.languages[sxng_lang] = eng_lang + + for x in eval_xpath_list(dom, "//form//select[@name='content']//option"): + engine_traits.custom['content'].append(x.get("value")) + + for x in eval_xpath_list(dom, "//form//select[@name='ext']//option"): + engine_traits.custom['ext'].append(x.get("value")) + + for x in eval_xpath_list(dom, "//form//select[@name='sort']//option"): + engine_traits.custom['sort'].append(x.get("value"))
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/archlinux.html b/_modules/searx/engines/archlinux.html new file mode 100644 index 000000000..389e4bafb --- /dev/null +++ b/_modules/searx/engines/archlinux.html @@ -0,0 +1,264 @@ + + + + + + + + searx.engines.archlinux — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.archlinux

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""
+Arch Linux Wiki
+~~~~~~~~~~~~~~~
+
+This implementation does not use a official API: Mediawiki provides API, but
+Arch Wiki blocks access to it.
+
+"""
+
+from typing import TYPE_CHECKING
+from urllib.parse import urlencode, urljoin, urlparse
+import lxml
+import babel
+
+from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex
+from searx.enginelib.traits import EngineTraits
+from searx.locales import language_tag
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+
+about = {
+    "website": 'https://wiki.archlinux.org/',
+    "wikidata_id": 'Q101445877',
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['it', 'software wikis']
+paging = True
+main_wiki = 'wiki.archlinux.org'
+
+
+def request(query, params):
+
+    sxng_lang = params['searxng_locale'].split('-')[0]
+    netloc: str = traits.custom['wiki_netloc'].get(sxng_lang, main_wiki)  # type: ignore
+    title: str = traits.custom['title'].get(sxng_lang, 'Special:Search')  # type: ignore
+    base_url = 'https://' + netloc + '/index.php?'
+    offset = (params['pageno'] - 1) * 20
+
+    if netloc == main_wiki:
+        eng_lang: str = traits.get_language(sxng_lang, 'English')  # type: ignore
+        query += ' (' + eng_lang + ')'
+    elif netloc == 'wiki.archlinuxcn.org':
+        base_url = 'https://' + netloc + '/wzh/index.php?'
+
+    args = {
+        'search': query,
+        'title': title,
+        'limit': 20,
+        'offset': offset,
+        'profile': 'default',
+    }
+
+    params['url'] = base_url + urlencode(args)
+    return params
+
+
+def response(resp):
+
+    results = []
+    dom = lxml.html.fromstring(resp.text)  # type: ignore
+
+    # get the base URL for the language in which request was made
+    sxng_lang = resp.search_params['searxng_locale'].split('-')[0]
+    netloc: str = traits.custom['wiki_netloc'].get(sxng_lang, main_wiki)  # type: ignore
+    base_url = 'https://' + netloc + '/index.php?'
+
+    for result in eval_xpath_list(dom, '//ul[@class="mw-search-results"]/li'):
+        link = eval_xpath_getindex(result, './/div[@class="mw-search-result-heading"]/a', 0)
+        content = extract_text(result.xpath('.//div[@class="searchresult"]'))
+        results.append(
+            {
+                'url': urljoin(base_url, link.get('href')),  # type: ignore
+                'title': extract_text(link),
+                'content': content,
+            }
+        )
+
+    return results
+
+
+
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages from Archlinix-Wiki. The location of the Wiki address of a + language is mapped in a :py:obj:`custom field + <searx.enginelib.traits.EngineTraits.custom>` (``wiki_netloc``). Depending + on the location, the ``title`` argument in the request is translated. + + .. code:: python + + "custom": { + "wiki_netloc": { + "de": "wiki.archlinux.de", + # ... + "zh": "wiki.archlinuxcn.org" + } + "title": { + "de": "Spezial:Suche", + # ... + "zh": "Special:\u641c\u7d22" + }, + }, + + """ + # pylint: disable=import-outside-toplevel + from searx.network import get # see https://github.com/searxng/searxng/issues/762 + + engine_traits.custom['wiki_netloc'] = {} + engine_traits.custom['title'] = {} + + title_map = { + 'de': 'Spezial:Suche', + 'fa': 'ویژه:جستجو', + 'ja': '特別:検索', + 'zh': 'Special:搜索', + } + + resp = get('https://wiki.archlinux.org/') + if not resp.ok: # type: ignore + print("ERROR: response from wiki.archlinix.org is not OK.") + + dom = lxml.html.fromstring(resp.text) # type: ignore + for a in eval_xpath_list(dom, "//a[@class='interlanguage-link-target']"): + + sxng_tag = language_tag(babel.Locale.parse(a.get('lang'), sep='-')) + # zh_Hans --> zh + sxng_tag = sxng_tag.split('_')[0] + + netloc = urlparse(a.get('href')).netloc + if netloc != 'wiki.archlinux.org': + title = title_map.get(sxng_tag) + if not title: + print("ERROR: title tag from %s (%s) is unknown" % (netloc, sxng_tag)) + continue + engine_traits.custom['wiki_netloc'][sxng_tag] = netloc + engine_traits.custom['title'][sxng_tag] = title # type: ignore + + eng_tag = extract_text(eval_xpath_list(a, ".//span")) + engine_traits.languages[sxng_tag] = eng_tag # type: ignore + + engine_traits.languages['en'] = 'English'
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/bing.html b/_modules/searx/engines/bing.html new file mode 100644 index 000000000..b13c6f113 --- /dev/null +++ b/_modules/searx/engines/bing.html @@ -0,0 +1,449 @@ + + + + + + + + searx.engines.bing — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.bing

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This is the implementation of the Bing-WEB engine. Some of this
+implementations are shared by other engines:
+
+- :ref:`bing images engine`
+- :ref:`bing news engine`
+- :ref:`bing videos engine`
+
+On the `preference page`_ Bing offers a lot of languages an regions (see section
+'Search results languages' and 'Country/region').  However, the abundant choice
+does not correspond to reality, where Bing has a full-text indexer only for a
+limited number of languages.  By example: you can select a language like Māori
+but you never get a result in this language.
+
+What comes a bit closer to the truth are the `search-APIs`_ but they don`t seem
+to be completely correct either (if you take a closer look you will find some
+inaccuracies there too):
+
+- :py:obj:`searx.engines.bing.bing_traits_url`
+- :py:obj:`searx.engines.bing_videos.bing_traits_url`
+- :py:obj:`searx.engines.bing_images.bing_traits_url`
+- :py:obj:`searx.engines.bing_news.bing_traits_url`
+
+.. _preference page: https://www.bing.com/account/general
+.. _search-APIs: https://learn.microsoft.com/en-us/bing/search-apis/
+
+"""
+# pylint: disable=too-many-branches, invalid-name
+
+from typing import TYPE_CHECKING
+import datetime
+import re
+import uuid
+from urllib.parse import urlencode
+from lxml import html
+import babel
+import babel.languages
+
+from searx.utils import eval_xpath, extract_text, eval_xpath_list, eval_xpath_getindex
+from searx.locales import language_tag, region_tag
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+about = {
+    "website": 'https://www.bing.com',
+    "wikidata_id": 'Q182496',
+    "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-web-search-api',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+send_accept_language_header = True
+"""Bing tries to guess user's language and territory from the HTTP
+Accept-Language.  Optional the user can select a search-language (can be
+different to the UI language) and a region (market code)."""
+
+# engine dependent config
+categories = ['general', 'web']
+paging = True
+time_range_support = True
+safesearch = True
+safesearch_types = {2: 'STRICT', 1: 'DEMOTE', 0: 'OFF'}  # cookie: ADLT=STRICT
+
+base_url = 'https://www.bing.com/search'
+"""Bing (Web) search URL"""
+
+bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/reference/market-codes'
+"""Bing (Web) search API description"""
+
+
+def _get_offset_from_pageno(pageno):
+    return (pageno - 1) * 10 + 1
+
+
+def set_bing_cookies(params, engine_language, engine_region, SID):
+
+    # set cookies
+    # -----------
+
+    params['cookies']['_EDGE_V'] = '1'
+
+    # _EDGE_S: F=1&SID=3A5253BD6BCA609509B741876AF961CA&mkt=zh-tw
+    _EDGE_S = [
+        'F=1',
+        'SID=%s' % SID,
+        'mkt=%s' % engine_region.lower(),
+        'ui=%s' % engine_language.lower(),
+    ]
+    params['cookies']['_EDGE_S'] = '&'.join(_EDGE_S)
+    logger.debug("cookie _EDGE_S=%s", params['cookies']['_EDGE_S'])
+
+    # "_EDGE_CD": "m=zh-tw",
+
+    _EDGE_CD = [  # pylint: disable=invalid-name
+        'm=%s' % engine_region.lower(),  # search region: zh-cn
+        'u=%s' % engine_language.lower(),  # UI: en-us
+    ]
+
+    params['cookies']['_EDGE_CD'] = '&'.join(_EDGE_CD) + ';'
+    logger.debug("cookie _EDGE_CD=%s", params['cookies']['_EDGE_CD'])
+
+    SRCHHPGUSR = [  # pylint: disable=invalid-name
+        'SRCHLANG=%s' % engine_language,
+        # Trying to set ADLT cookie here seems not to have any effect, I assume
+        # there is some age verification by a cookie (and/or session ID) needed,
+        # to disable the SafeSearch.
+        'ADLT=%s' % safesearch_types.get(params['safesearch'], 'DEMOTE'),
+    ]
+    params['cookies']['SRCHHPGUSR'] = '&'.join(SRCHHPGUSR)
+    logger.debug("cookie SRCHHPGUSR=%s", params['cookies']['SRCHHPGUSR'])
+
+
+
[docs]def request(query, params): + """Assemble a Bing-Web request.""" + + engine_region = traits.get_region(params['searxng_locale'], 'en-US') + engine_language = traits.get_language(params['searxng_locale'], 'en') + + SID = uuid.uuid1().hex.upper() + CVID = uuid.uuid1().hex.upper() + + set_bing_cookies(params, engine_language, engine_region, SID) + + # build URL query + # --------------- + + # query term + page = int(params.get('pageno', 1)) + query_params = { + # fmt: off + 'q': query, + 'pq': query, + 'cvid': CVID, + 'qs': 'n', + 'sp': '-1' + # fmt: on + } + + # page + if page > 1: + referer = base_url + '?' + urlencode(query_params) + params['headers']['Referer'] = referer + logger.debug("headers.Referer --> %s", referer) + + query_params['first'] = _get_offset_from_pageno(page) + + if page == 2: + query_params['FORM'] = 'PERE' + elif page > 2: + query_params['FORM'] = 'PERE%s' % (page - 2) + + filters = '' + if params['time_range']: + query_params['filt'] = 'custom' + + if params['time_range'] == 'day': + filters = 'ex1:"ez1"' + elif params['time_range'] == 'week': + filters = 'ex1:"ez2"' + elif params['time_range'] == 'month': + filters = 'ex1:"ez3"' + elif params['time_range'] == 'year': + epoch_1970 = datetime.date(1970, 1, 1) + today_no = (datetime.date.today() - epoch_1970).days + filters = 'ex1:"ez5_%s_%s"' % (today_no - 365, today_no) + + params['url'] = base_url + '?' + urlencode(query_params) + if filters: + params['url'] = params['url'] + '&filters=' + filters + return params
+ + +def response(resp): + # pylint: disable=too-many-locals,import-outside-toplevel + + from searx.network import Request, multi_requests # see https://github.com/searxng/searxng/issues/762 + + results = [] + result_len = 0 + + dom = html.fromstring(resp.text) + + # parse results again if nothing is found yet + + url_to_resolve = [] + url_to_resolve_index = [] + i = 0 + for result in eval_xpath_list(dom, '//ol[@id="b_results"]/li[contains(@class, "b_algo")]'): + + link = eval_xpath_getindex(result, './/h2/a', 0, None) + if link is None: + continue + url = link.attrib.get('href') + title = extract_text(link) + + content = eval_xpath(result, '(.//p)[1]') + for p in content: + # Make sure that the element is free of <a href> links + for e in p.xpath('.//a'): + e.getparent().remove(e) + content = extract_text(content) + + # get the real URL either using the URL shown to user or following the Bing URL + if url.startswith('https://www.bing.com/ck/a?'): + url_cite = extract_text(eval_xpath(result, './/div[@class="b_attribution"]/cite')) + # Bing can shorten the URL either at the end or in the middle of the string + if ( + url_cite + and url_cite.startswith('https://') + and '…' not in url_cite + and '...' not in url_cite + and '›' not in url_cite + ): + # no need for an additional HTTP request + url = url_cite + else: + # resolve the URL with an additional HTTP request + url_to_resolve.append(url.replace('&ntb=1', '&ntb=F')) + url_to_resolve_index.append(i) + url = None # remove the result if the HTTP Bing redirect raise an exception + + # append result + results.append({'url': url, 'title': title, 'content': content}) + # increment result pointer for the next iteration in this loop + i += 1 + + # resolve all Bing redirections in parallel + request_list = [ + Request.get(u, allow_redirects=False, headers=resp.search_params['headers']) for u in url_to_resolve + ] + response_list = multi_requests(request_list) + for i, redirect_response in enumerate(response_list): + if not isinstance(redirect_response, Exception): + results[url_to_resolve_index[i]]['url'] = redirect_response.headers['location'] + + # get number_of_results + try: + result_len_container = "".join(eval_xpath(dom, '//span[@class="sb_count"]//text()')) + if "-" in result_len_container: + + # Remove the part "from-to" for paginated request ... + result_len_container = result_len_container[result_len_container.find("-") * 2 + 2 :] + + result_len_container = re.sub('[^0-9]', '', result_len_container) + + if len(result_len_container) > 0: + result_len = int(result_len_container) + + except Exception as e: # pylint: disable=broad-except + logger.debug('result error :\n%s', e) + + if result_len and _get_offset_from_pageno(resp.search_params.get("pageno", 0)) > result_len: + return [] + + results.append({'number_of_results': result_len}) + return results + + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages and regions from Bing-Web.""" + + xpath_market_codes = '//table[1]/tbody/tr/td[3]' + # xpath_country_codes = '//table[2]/tbody/tr/td[2]' + xpath_language_codes = '//table[3]/tbody/tr/td[2]' + + _fetch_traits(engine_traits, bing_traits_url, xpath_language_codes, xpath_market_codes)
+ + +def _fetch_traits(engine_traits: EngineTraits, url: str, xpath_language_codes: str, xpath_market_codes: str): + # pylint: disable=too-many-locals,import-outside-toplevel + + from searx.network import get # see https://github.com/searxng/searxng/issues/762 + + # insert alias to map from a language (zh) to a language + script (zh_Hans) + engine_traits.languages['zh'] = 'zh-hans' + + resp = get(url) + + if not resp.ok: # type: ignore + print("ERROR: response from peertube is not OK.") + + dom = html.fromstring(resp.text) # type: ignore + + map_lang = {'jp': 'ja'} + for td in eval_xpath(dom, xpath_language_codes): + eng_lang = td.text + + if eng_lang in ('en-gb', 'pt-br'): + # language 'en' is already in the list and a language 'en-gb' can't + # be handled in SearXNG, same with pt-br which is covered by pt-pt. + continue + + babel_lang = map_lang.get(eng_lang, eng_lang).replace('-', '_') + try: + sxng_tag = language_tag(babel.Locale.parse(babel_lang)) + except babel.UnknownLocaleError: + print("ERROR: language (%s) is unknown by babel" % (eng_lang)) + continue + conflict = engine_traits.languages.get(sxng_tag) + if conflict: + if conflict != eng_lang: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_lang)) + continue + engine_traits.languages[sxng_tag] = eng_lang + + map_region = { + 'en-ID': 'id_ID', + 'no-NO': 'nb_NO', + } + + for td in eval_xpath(dom, xpath_market_codes): + eng_region = td.text + babel_region = map_region.get(eng_region, eng_region).replace('-', '_') + + if eng_region == 'en-WW': + engine_traits.all_locale = eng_region + continue + + try: + sxng_tag = region_tag(babel.Locale.parse(babel_region)) + except babel.UnknownLocaleError: + print("ERROR: region (%s) is unknown by babel" % (eng_region)) + continue + conflict = engine_traits.regions.get(sxng_tag) + if conflict: + if conflict != eng_region: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_region)) + continue + engine_traits.regions[sxng_tag] = eng_region +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/bing_images.html b/_modules/searx/engines/bing_images.html new file mode 100644 index 000000000..af2ee5623 --- /dev/null +++ b/_modules/searx/engines/bing_images.html @@ -0,0 +1,244 @@ + + + + + + + + searx.engines.bing_images — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.bing_images

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Bing-Images: description see :py:obj:`searx.engines.bing`.
+"""
+# pylint: disable=invalid-name
+
+
+from typing import TYPE_CHECKING
+import uuid
+import json
+from urllib.parse import urlencode
+
+from lxml import html
+
+from searx.enginelib.traits import EngineTraits
+from searx.engines.bing import (
+    set_bing_cookies,
+    _fetch_traits,
+)
+from searx.engines.bing import send_accept_language_header  # pylint: disable=unused-import
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://www.bing.com/images',
+    "wikidata_id": 'Q182496',
+    "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-image-search-api',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['images', 'web']
+paging = True
+safesearch = True
+time_range_support = True
+
+base_url = 'https://www.bing.com/images/async'
+"""Bing (Images) search URL"""
+
+bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-image-search/reference/market-codes'
+"""Bing (Images) search API description"""
+
+time_map = {
+    # fmt: off
+    'day': 60 * 24,
+    'week': 60 * 24 * 7,
+    'month': 60 * 24 * 31,
+    'year': 60 * 24 * 365,
+    # fmt: on
+}
+
+
+
[docs]def request(query, params): + """Assemble a Bing-Image request.""" + + engine_region = traits.get_region(params['searxng_locale'], 'en-US') + engine_language = traits.get_language(params['searxng_locale'], 'en') + + SID = uuid.uuid1().hex.upper() + set_bing_cookies(params, engine_language, engine_region, SID) + + # build URL query + # - example: https://www.bing.com/images/async?q=foo&first=155&count=35 + + query_params = { + # fmt: off + 'q': query, + 'async' : 'content', + # to simplify the page count lets use the default of 35 images per page + 'first' : (int(params.get('pageno', 1)) - 1) * 35 + 1, + 'count' : 35, + # fmt: on + } + + # time range + # - example: one year (525600 minutes) 'qft=+filterui:age-lt525600' + + if params['time_range']: + query_params['qft'] = 'filterui:age-lt%s' % time_map[params['time_range']] + + params['url'] = base_url + '?' + urlencode(query_params) + + return params
+ + +
[docs]def response(resp): + """Get response from Bing-Images""" + + results = [] + dom = html.fromstring(resp.text) + + for result in dom.xpath('//ul[contains(@class, "dgControl_list")]/li'): + + metadata = result.xpath('.//a[@class="iusc"]/@m') + if not metadata: + continue + + metadata = json.loads(result.xpath('.//a[@class="iusc"]/@m')[0]) + title = ' '.join(result.xpath('.//div[@class="infnmpt"]//a/text()')).strip() + img_format = ' '.join(result.xpath('.//div[@class="imgpt"]/div/span/text()')).strip() + source = ' '.join(result.xpath('.//div[@class="imgpt"]//div[@class="lnkw"]//a/text()')).strip() + results.append( + { + 'template': 'images.html', + 'url': metadata['purl'], + 'thumbnail_src': metadata['turl'], + 'img_src': metadata['murl'], + 'content': metadata['desc'], + 'title': title, + 'source': source, + 'img_format': img_format, + } + ) + return results
+ + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages and regions from Bing-News.""" + + xpath_market_codes = '//table[1]/tbody/tr/td[3]' + # xpath_country_codes = '//table[2]/tbody/tr/td[2]' + xpath_language_codes = '//table[3]/tbody/tr/td[2]' + + _fetch_traits(engine_traits, bing_traits_url, xpath_language_codes, xpath_market_codes)
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/bing_news.html b/_modules/searx/engines/bing_news.html new file mode 100644 index 000000000..09b21544a --- /dev/null +++ b/_modules/searx/engines/bing_news.html @@ -0,0 +1,262 @@ + + + + + + + + searx.engines.bing_news — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.bing_news

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Bing-News: description see :py:obj:`searx.engines.bing`.
+"""
+
+# pylint: disable=invalid-name
+
+from typing import TYPE_CHECKING
+import uuid
+from urllib.parse import urlencode
+
+from lxml import html
+
+from searx.enginelib.traits import EngineTraits
+from searx.engines.bing import (
+    set_bing_cookies,
+    _fetch_traits,
+)
+from searx.engines.bing import send_accept_language_header  # pylint: disable=unused-import
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+
+# about
+about = {
+    "website": 'https://www.bing.com/news',
+    "wikidata_id": 'Q2878637',
+    "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-news-search-api',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'RSS',
+}
+
+# engine dependent config
+categories = ['news']
+paging = True
+time_range_support = True
+time_map = {
+    'day': '4',
+    'week': '8',
+    'month': '9',
+}
+"""A string '4' means *last hour*. We use *last hour* for ``day`` here since the
+difference of *last day* and *last week* in the result list is just marginally.
+"""
+
+base_url = 'https://www.bing.com/news/infinitescrollajax'
+"""Bing (News) search URL"""
+
+bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-news-search/reference/market-codes'
+"""Bing (News) search API description"""
+
+mkt_alias = {
+    'zh': 'en-WW',
+    'zh-CN': 'en-WW',
+}
+"""Bing News has an official market code 'zh-CN' but we won't get a result with
+this market code.  For 'zh' and 'zh-CN' we better use the *Worldwide aggregate*
+market code (en-WW).
+"""
+
+
+
[docs]def request(query, params): + """Assemble a Bing-News request.""" + + sxng_locale = params['searxng_locale'] + engine_region = traits.get_region(mkt_alias.get(sxng_locale, sxng_locale), traits.all_locale) + engine_language = traits.get_language(sxng_locale, 'en') + + SID = uuid.uuid1().hex.upper() + set_bing_cookies(params, engine_language, engine_region, SID) + + # build URL query + # + # example: https://www.bing.com/news/infinitescrollajax?q=london&first=1 + + query_params = { + # fmt: off + 'q': query, + 'InfiniteScroll': 1, + # to simplify the page count lets use the default of 10 images per page + 'first' : (int(params.get('pageno', 1)) - 1) * 10 + 1, + # fmt: on + } + + if params['time_range']: + # qft=interval:"7" + query_params['qft'] = 'qft=interval="%s"' % time_map.get(params['time_range'], '9') + + params['url'] = base_url + '?' + urlencode(query_params) + + return params
+ + +
[docs]def response(resp): + """Get response from Bing-Video""" + results = [] + + if not resp.ok or not resp.text: + return results + + dom = html.fromstring(resp.text) + + for newsitem in dom.xpath('//div[contains(@class, "newsitem")]'): + + url = newsitem.xpath('./@url')[0] + title = ' '.join(newsitem.xpath('.//div[@class="caption"]//a[@class="title"]/text()')).strip() + content = ' '.join(newsitem.xpath('.//div[@class="snippet"]/text()')).strip() + thumbnail = None + author = newsitem.xpath('./@data-author')[0] + metadata = ' '.join(newsitem.xpath('.//div[@class="source"]/span/text()')).strip() + + img_src = newsitem.xpath('.//a[@class="imagelink"]//img/@src') + if img_src: + thumbnail = 'https://www.bing.com/' + img_src[0] + + results.append( + { + 'url': url, + 'title': title, + 'content': content, + 'img_src': thumbnail, + 'author': author, + 'metadata': metadata, + } + ) + + return results
+ + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages and regions from Bing-News. + + The :py:obj:`description <searx.engines.bing_news.bing_traits_url>` of the + first table says *"query parameter when calling the Video Search API."* + .. thats why I use the 4. table "News Category API markets" for the + ``xpath_market_codes``. + + """ + + xpath_market_codes = '//table[4]/tbody/tr/td[3]' + # xpath_country_codes = '//table[2]/tbody/tr/td[2]' + xpath_language_codes = '//table[3]/tbody/tr/td[2]' + + _fetch_traits(engine_traits, bing_traits_url, xpath_language_codes, xpath_market_codes)
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/bing_videos.html b/_modules/searx/engines/bing_videos.html new file mode 100644 index 000000000..4e3920054 --- /dev/null +++ b/_modules/searx/engines/bing_videos.html @@ -0,0 +1,240 @@ + + + + + + + + searx.engines.bing_videos — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.bing_videos

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Bing-Videos: description see :py:obj:`searx.engines.bing`.
+"""
+# pylint: disable=invalid-name
+
+from typing import TYPE_CHECKING
+import uuid
+import json
+from urllib.parse import urlencode
+
+from lxml import html
+
+from searx.enginelib.traits import EngineTraits
+from searx.engines.bing import (
+    set_bing_cookies,
+    _fetch_traits,
+)
+from searx.engines.bing import send_accept_language_header  # pylint: disable=unused-import
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+
+about = {
+    "website": 'https://www.bing.com/videos',
+    "wikidata_id": 'Q4914152',
+    "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-video-search-api',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['videos', 'web']
+paging = True
+safesearch = True
+time_range_support = True
+
+base_url = 'https://www.bing.com/videos/asyncv2'
+"""Bing (Videos) async search URL."""
+
+bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-video-search/reference/market-codes'
+"""Bing (Video) search API description"""
+
+time_map = {
+    # fmt: off
+    'day': 60 * 24,
+    'week': 60 * 24 * 7,
+    'month': 60 * 24 * 31,
+    'year': 60 * 24 * 365,
+    # fmt: on
+}
+
+
+
[docs]def request(query, params): + """Assemble a Bing-Video request.""" + + engine_region = traits.get_region(params['searxng_locale'], 'en-US') + engine_language = traits.get_language(params['searxng_locale'], 'en') + + SID = uuid.uuid1().hex.upper() + set_bing_cookies(params, engine_language, engine_region, SID) + + # build URL query + # + # example: https://www.bing.com/videos/asyncv2?q=foo&async=content&first=1&count=35 + + query_params = { + # fmt: off + 'q': query, + 'async' : 'content', + # to simplify the page count lets use the default of 35 images per page + 'first' : (int(params.get('pageno', 1)) - 1) * 35 + 1, + 'count' : 35, + # fmt: on + } + + # time range + # + # example: one week (10080 minutes) '&qft= filterui:videoage-lt10080' '&form=VRFLTR' + + if params['time_range']: + query_params['form'] = 'VRFLTR' + query_params['qft'] = ' filterui:videoage-lt%s' % time_map[params['time_range']] + + params['url'] = base_url + '?' + urlencode(query_params) + + return params
+ + +
[docs]def response(resp): + """Get response from Bing-Video""" + results = [] + + dom = html.fromstring(resp.text) + + for result in dom.xpath('//div[@class="dg_u"]//div[contains(@id, "mc_vtvc_video")]'): + metadata = json.loads(result.xpath('.//div[@class="vrhdata"]/@vrhm')[0]) + info = ' - '.join(result.xpath('.//div[@class="mc_vtvc_meta_block"]//span/text()')).strip() + content = '{0} - {1}'.format(metadata['du'], info) + thumbnail = result.xpath('.//div[contains(@class, "mc_vtvc_th")]//img/@src')[0] + + results.append( + { + 'url': metadata['murl'], + 'thumbnail': thumbnail, + 'title': metadata.get('vt', ''), + 'content': content, + 'template': 'videos.html', + } + ) + + return results
+ + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages and regions from Bing-Videos.""" + + xpath_market_codes = '//table[1]/tbody/tr/td[3]' + # xpath_country_codes = '//table[2]/tbody/tr/td[2]' + xpath_language_codes = '//table[3]/tbody/tr/td[2]' + + _fetch_traits(engine_traits, bing_traits_url, xpath_language_codes, xpath_market_codes)
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/brave.html b/_modules/searx/engines/brave.html new file mode 100644 index 000000000..1aa6ee3b6 --- /dev/null +++ b/_modules/searx/engines/brave.html @@ -0,0 +1,531 @@ + + + + + + + + searx.engines.brave — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.brave

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Brave supports the categories listed in :py:obj:`brave_category` (General,
+news, videos, images).  The support of :py:obj:`paging` and :py:obj:`time range
+<time_range_support>` is limited (see remarks).
+
+Configured ``brave`` engines:
+
+.. code:: yaml
+
+  - name: brave
+    engine: brave
+    ...
+    brave_category: search
+    time_range_support: true
+    paging: true
+
+  - name: brave.images
+    engine: brave
+    ...
+    brave_category: images
+
+  - name: brave.videos
+    engine: brave
+    ...
+    brave_category: videos
+
+  - name: brave.news
+    engine: brave
+    ...
+    brave_category: news
+
+
+.. _brave regions:
+
+Brave regions
+=============
+
+Brave uses two-digit tags for the regions like ``ca`` while SearXNG deals with
+locales.  To get a mapping, all *officatl de-facto* languages of the Brave
+region are mapped to regions in SearXNG (see :py:obj:`babel
+<babel.languages.get_official_languages>`):
+
+.. code:: python
+
+    "regions": {
+      ..
+      "en-CA": "ca",
+      "fr-CA": "ca",
+      ..
+     }
+
+
+.. note::
+
+   The language (aka region) support of Brave's index is limited to very basic
+   languages.  The search results for languages like Chinese or Arabic are of
+   low quality.
+
+
+.. _brave languages:
+
+Brave languages
+===============
+
+Brave's language support is limited to the UI (menues, area local notations,
+etc).  Brave's index only seems to support a locale, but it does not seem to
+support any languages in its index.  The choice of available languages is very
+small (and its not clear to me where the differencee in UI is when switching
+from en-us to en-ca or en-gb).
+
+In the :py:obj:`EngineTraits object <searx.enginelib.traits.EngineTraits>` the
+UI languages are stored in a custom field named ``ui_lang``:
+
+.. code:: python
+
+    "custom": {
+      "ui_lang": {
+        "ca": "ca",
+        "de-DE": "de-de",
+        "en-CA": "en-ca",
+        "en-GB": "en-gb",
+        "en-US": "en-us",
+        "es": "es",
+        "fr-CA": "fr-ca",
+        "fr-FR": "fr-fr",
+        "ja-JP": "ja-jp",
+        "pt-BR": "pt-br",
+        "sq-AL": "sq-al"
+      }
+    },
+
+Implementations
+===============
+
+"""
+
+from typing import TYPE_CHECKING
+
+import re
+from urllib.parse import (
+    urlencode,
+    urlparse,
+    parse_qs,
+)
+
+import chompjs
+from lxml import html
+
+from searx import locales
+from searx.utils import (
+    extract_text,
+    eval_xpath_list,
+    eval_xpath_getindex,
+)
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+about = {
+    "website": 'https://search.brave.com/',
+    "wikidata_id": 'Q22906900',
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+base_url = "https://search.brave.com/"
+categories = []
+brave_category = 'search'
+"""Brave supports common web-search, video search, image and video search.
+
+- ``search``: Common WEB search
+- ``videos``: search for videos
+- ``images``: search for images
+- ``news``: search for news
+"""
+
+brave_spellcheck = False
+"""Brave supports some kind of spell checking.  When activated, Brave tries to
+fix typos, e.g. it searches for ``food`` when the user queries for ``fooh``.  In
+the UI of Brave the user gets warned about this, since we can not warn the user
+in SearXNG, the spellchecking is disabled by default.
+"""
+
+send_accept_language_header = True
+paging = False
+"""Brave only supports paging in :py:obj:`brave_category` ``search`` (UI
+category All)."""
+
+safesearch = True
+safesearch_map = {2: 'strict', 1: 'moderate', 0: 'off'}  # cookie: safesearch=off
+
+time_range_support = False
+"""Brave only supports time-range in :py:obj:`brave_category` ``search`` (UI
+category All)."""
+
+time_range_map = {
+    'day': 'pd',
+    'week': 'pw',
+    'month': 'pm',
+    'year': 'py',
+}
+
+
+def request(query, params):
+
+    # Don't accept br encoding / see https://github.com/searxng/searxng/pull/1787
+    params['headers']['Accept-Encoding'] = 'gzip, deflate'
+
+    args = {
+        'q': query,
+    }
+    if brave_spellcheck:
+        args['spellcheck'] = '1'
+
+    if brave_category == 'search':
+        if params.get('pageno', 1) - 1:
+            args['offset'] = params.get('pageno', 1) - 1
+        if time_range_map.get(params['time_range']):
+            args['tf'] = time_range_map.get(params['time_range'])
+
+    params["url"] = f"{base_url}{brave_category}?{urlencode(args)}"
+
+    # set properties in the cookies
+
+    params['cookies']['safesearch'] = safesearch_map.get(params['safesearch'], 'off')
+    # the useLocation is IP based, we use cookie 'country' for the region
+    params['cookies']['useLocation'] = '0'
+    params['cookies']['summarizer'] = '0'
+
+    engine_region = traits.get_region(params['searxng_locale'], 'all')
+    params['cookies']['country'] = engine_region.split('-')[-1].lower()  # type: ignore
+
+    ui_lang = locales.get_engine_locale(params['searxng_locale'], traits.custom["ui_lang"], 'en-us')
+    params['cookies']['ui_lang'] = ui_lang
+
+    logger.debug("cookies %s", params['cookies'])
+
+
+def response(resp):
+
+    if brave_category == 'search':
+        return _parse_search(resp)
+
+    datastr = ""
+    for line in resp.text.split("\n"):
+        if "const data = " in line:
+            datastr = line.replace("const data = ", "").strip()[:-1]
+            break
+
+    json_data = chompjs.parse_js_object(datastr)
+    json_resp = json_data[1]['data']['body']['response']
+
+    if brave_category == 'news':
+        json_resp = json_resp['news']
+        return _parse_news(json_resp)
+
+    if brave_category == 'images':
+        return _parse_images(json_resp)
+    if brave_category == 'videos':
+        return _parse_videos(json_resp)
+
+    raise ValueError(f"Unsupported brave category: {brave_category}")
+
+
+def _parse_search(resp):
+
+    result_list = []
+    dom = html.fromstring(resp.text)
+
+    answer_tag = eval_xpath_getindex(dom, '//div[@class="answer"]', 0, default=None)
+    if answer_tag:
+        result_list.append({'answer': extract_text(answer_tag)})
+
+    # xpath_results = '//div[contains(@class, "snippet fdb") and @data-type="web"]'
+    xpath_results = '//div[contains(@class, "snippet")]'
+
+    for result in eval_xpath_list(dom, xpath_results):
+
+        url = eval_xpath_getindex(result, './/a[@class="result-header"]/@href', 0, default=None)
+        title_tag = eval_xpath_getindex(result, './/span[@class="snippet-title"]', 0, default=None)
+        if not (url and title_tag):
+            continue
+
+        content_tag = eval_xpath_getindex(result, './/p[@class="snippet-description"]', 0, default='')
+        img_src = eval_xpath_getindex(result, './/img[@class="thumb"]/@src', 0, default='')
+
+        item = {
+            'url': url,
+            'title': extract_text(title_tag),
+            'content': extract_text(content_tag),
+            'img_src': img_src,
+        }
+
+        video_tag = eval_xpath_getindex(
+            result, './/div[contains(@class, "video-snippet") and @data-macro="video"]', 0, default=None
+        )
+        if video_tag is not None:
+
+            # In my tests a video tag in the WEB search was mostoften not a
+            # video, except the ones from youtube ..
+
+            iframe_src = _get_iframe_src(url)
+            if iframe_src:
+                item['iframe_src'] = iframe_src
+                item['template'] = 'videos.html'
+                item['thumbnail'] = eval_xpath_getindex(video_tag, './/img/@src', 0, default='')
+            else:
+                item['img_src'] = eval_xpath_getindex(video_tag, './/img/@src', 0, default='')
+
+        result_list.append(item)
+
+    return result_list
+
+
+def _get_iframe_src(url):
+    parsed_url = urlparse(url)
+    if parsed_url.path == '/watch' and parsed_url.query:
+        video_id = parse_qs(parsed_url.query).get('v', [])  # type: ignore
+        if video_id:
+            return 'https://www.youtube-nocookie.com/embed/' + video_id[0]  # type: ignore
+    return None
+
+
+def _parse_news(json_resp):
+    result_list = []
+
+    for result in json_resp["results"]:
+        item = {
+            'url': result['url'],
+            'title': result['title'],
+            'content': result['description'],
+        }
+        if result['thumbnail'] != "null":
+            item['img_src'] = result['thumbnail']['src']
+        result_list.append(item)
+
+    return result_list
+
+
+def _parse_images(json_resp):
+    result_list = []
+
+    for result in json_resp["results"]:
+        item = {
+            'url': result['url'],
+            'title': result['title'],
+            'content': result['description'],
+            'template': 'images.html',
+            'img_format': result['properties']['format'],
+            'source': result['source'],
+            'img_src': result['properties']['url'],
+        }
+        result_list.append(item)
+
+    return result_list
+
+
+def _parse_videos(json_resp):
+    result_list = []
+
+    for result in json_resp["results"]:
+
+        url = result['url']
+        item = {
+            'url': url,
+            'title': result['title'],
+            'content': result['description'],
+            'template': 'videos.html',
+            'length': result['video']['duration'],
+            'duration': result['video']['duration'],
+        }
+
+        if result['thumbnail'] != "null":
+            item['thumbnail'] = result['thumbnail']['src']
+
+        iframe_src = _get_iframe_src(url)
+        if iframe_src:
+            item['iframe_src'] = iframe_src
+
+        result_list.append(item)
+
+    return result_list
+
+
+
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch :ref:`languages <brave languages>` and :ref:`regions <brave + regions>` from Brave.""" + + # pylint: disable=import-outside-toplevel + + import babel.languages + from searx.locales import region_tag, language_tag + from searx.network import get # see https://github.com/searxng/searxng/issues/762 + + engine_traits.custom["ui_lang"] = {} + + headers = { + 'Accept-Encoding': 'gzip, deflate', + } + lang_map = {'no': 'nb'} # norway + + # languages (UI) + + resp = get('https://search.brave.com/settings', headers=headers) + + if not resp.ok: # type: ignore + print("ERROR: response from Brave is not OK.") + dom = html.fromstring(resp.text) # type: ignore + + for option in dom.xpath('//div[@id="language-select"]//option'): + + ui_lang = option.get('value') + try: + if '-' in ui_lang: + sxng_tag = region_tag(babel.Locale.parse(ui_lang, sep='-')) + else: + sxng_tag = language_tag(babel.Locale.parse(ui_lang)) + + except babel.UnknownLocaleError: + print("ERROR: can't determine babel locale of Brave's (UI) language %s" % ui_lang) + continue + + conflict = engine_traits.custom["ui_lang"].get(sxng_tag) + if conflict: + if conflict != ui_lang: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, ui_lang)) + continue + engine_traits.custom["ui_lang"][sxng_tag] = ui_lang + + # search regions of brave + + engine_traits.all_locale = 'all' + + for country in dom.xpath('//div[@id="sidebar"]//ul/li/div[contains(@class, "country")]'): + + flag = country.xpath('./span[contains(@class, "flag")]')[0] + # country_name = extract_text(flag.xpath('./following-sibling::*')[0]) + country_tag = re.search(r'flag-([^\s]*)\s', flag.xpath('./@class')[0]).group(1) # type: ignore + + # add offical languages of the country .. + for lang_tag in babel.languages.get_official_languages(country_tag, de_facto=True): + lang_tag = lang_map.get(lang_tag, lang_tag) + sxng_tag = region_tag(babel.Locale.parse('%s_%s' % (lang_tag, country_tag.upper()))) + # print("%-20s: %s <-- %s" % (country_name, country_tag, sxng_tag)) + + conflict = engine_traits.regions.get(sxng_tag) + if conflict: + if conflict != country_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, country_tag)) + continue + engine_traits.regions[sxng_tag] = country_tag
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/command.html b/_modules/searx/engines/command.html new file mode 100644 index 000000000..020bcf7a9 --- /dev/null +++ b/_modules/searx/engines/command.html @@ -0,0 +1,355 @@ + + + + + + + + searx.engines.command — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.command

+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""With *command engines* administrators can run engines to integrate arbitrary
+shell commands.
+
+.. attention::
+
+   When creating and enabling a ``command`` engine on a public instance, you
+   must be careful to avoid leaking private data.
+
+The easiest solution is to limit the access by setting ``tokens`` as described
+in section :ref:`private engines`.  The engine base is flexible.  Only your
+imagination can limit the power of this engine (and maybe security concerns).
+
+Configuration
+=============
+
+The following options are available:
+
+``command``:
+  A comma separated list of the elements of the command.  A special token
+  ``{{QUERY}}`` tells where to put the search terms of the user. Example:
+
+  .. code:: yaml
+
+     ['ls', '-l', '-h', '{{QUERY}}']
+
+``delimiter``:
+  A mapping containing a delimiter ``char`` and the *titles* of each element in
+  ``keys``.
+
+``parse_regex``:
+  A dict containing the regular expressions for each result key.
+
+``query_type``:
+
+  The expected type of user search terms.  Possible values: ``path`` and
+  ``enum``.
+
+  ``path``:
+    Checks if the user provided path is inside the working directory.  If not,
+    the query is not executed.
+
+  ``enum``:
+    Is a list of allowed search terms.  If the user submits something which is
+    not included in the list, the query returns an error.
+
+``query_enum``:
+  A list containing allowed search terms if ``query_type`` is set to ``enum``.
+
+``working_dir``:
+  The directory where the command has to be executed.  Default: ``./``.
+
+``result_separator``:
+  The character that separates results. Default: ``\\n``.
+
+Example
+=======
+
+The example engine below can be used to find files with a specific name in the
+configured working directory:
+
+.. code:: yaml
+
+  - name: find
+    engine: command
+    command: ['find', '.', '-name', '{{QUERY}}']
+    query_type: path
+    shortcut: fnd
+    delimiter:
+        chars: ' '
+        keys: ['line']
+
+Implementations
+===============
+"""
+
+import re
+from os.path import expanduser, isabs, realpath, commonprefix
+from shlex import split as shlex_split
+from subprocess import Popen, PIPE
+from threading import Thread
+
+from searx import logger
+
+
+engine_type = 'offline'
+paging = True
+command = []
+delimiter = {}
+parse_regex = {}
+query_type = ''
+query_enum = []
+environment_variables = {}
+working_dir = realpath('.')
+result_separator = '\n'
+result_template = 'key-value.html'
+timeout = 4.0
+
+_command_logger = logger.getChild('command')
+_compiled_parse_regex = {}
+
+
+def init(engine_settings):
+    check_parsing_options(engine_settings)
+
+    if 'command' not in engine_settings:
+        raise ValueError('engine command : missing configuration key: command')
+
+    global command, working_dir, delimiter, parse_regex, environment_variables
+
+    command = engine_settings['command']
+
+    if 'working_dir' in engine_settings:
+        working_dir = engine_settings['working_dir']
+        if not isabs(engine_settings['working_dir']):
+            working_dir = realpath(working_dir)
+
+    if 'parse_regex' in engine_settings:
+        parse_regex = engine_settings['parse_regex']
+        for result_key, regex in parse_regex.items():
+            _compiled_parse_regex[result_key] = re.compile(regex, flags=re.MULTILINE)
+    if 'delimiter' in engine_settings:
+        delimiter = engine_settings['delimiter']
+
+    if 'environment_variables' in engine_settings:
+        environment_variables = engine_settings['environment_variables']
+
+
+def search(query, params):
+    cmd = _get_command_to_run(query)
+    if not cmd:
+        return []
+
+    results = []
+    reader_thread = Thread(target=_get_results_from_process, args=(results, cmd, params['pageno']))
+    reader_thread.start()
+    reader_thread.join(timeout=timeout)
+
+    return results
+
+
+def _get_command_to_run(query):
+    params = shlex_split(query)
+    __check_query_params(params)
+
+    cmd = []
+    for c in command:
+        if c == '{{QUERY}}':
+            cmd.extend(params)
+        else:
+            cmd.append(c)
+
+    return cmd
+
+
+def _get_results_from_process(results, cmd, pageno):
+    leftover = ''
+    count = 0
+    start, end = __get_results_limits(pageno)
+    with Popen(cmd, stdout=PIPE, stderr=PIPE, env=environment_variables) as process:
+        line = process.stdout.readline()
+        while line:
+            buf = leftover + line.decode('utf-8')
+            raw_results = buf.split(result_separator)
+            if raw_results[-1]:
+                leftover = raw_results[-1]
+            raw_results = raw_results[:-1]
+
+            for raw_result in raw_results:
+                result = __parse_single_result(raw_result)
+                if result is None:
+                    _command_logger.debug('skipped result:', raw_result)
+                    continue
+
+                if start <= count and count <= end:
+                    result['template'] = result_template
+                    results.append(result)
+
+                count += 1
+                if end < count:
+                    return results
+
+            line = process.stdout.readline()
+
+        return_code = process.wait(timeout=timeout)
+        if return_code != 0:
+            raise RuntimeError('non-zero return code when running command', cmd, return_code)
+
+
+def __get_results_limits(pageno):
+    start = (pageno - 1) * 10
+    end = start + 9
+    return start, end
+
+
+def __check_query_params(params):
+    if not query_type:
+        return
+
+    if query_type == 'path':
+        query_path = params[-1]
+        query_path = expanduser(query_path)
+        if commonprefix([realpath(query_path), working_dir]) != working_dir:
+            raise ValueError('requested path is outside of configured working directory')
+    elif query_type == 'enum' and len(query_enum) > 0:
+        for param in params:
+            if param not in query_enum:
+                raise ValueError('submitted query params is not allowed', param, 'allowed params:', query_enum)
+
+
+
[docs]def check_parsing_options(engine_settings): + """Checks if delimiter based parsing or regex parsing is configured correctly""" + + if 'delimiter' not in engine_settings and 'parse_regex' not in engine_settings: + raise ValueError('failed to init settings for parsing lines: missing delimiter or parse_regex') + if 'delimiter' in engine_settings and 'parse_regex' in engine_settings: + raise ValueError('failed to init settings for parsing lines: too many settings') + + if 'delimiter' in engine_settings: + if 'chars' not in engine_settings['delimiter'] or 'keys' not in engine_settings['delimiter']: + raise ValueError
+ + +def __parse_single_result(raw_result): + """Parses command line output based on configuration""" + + result = {} + + if delimiter: + elements = raw_result.split(delimiter['chars'], maxsplit=len(delimiter['keys']) - 1) + if len(elements) != len(delimiter['keys']): + return {} + for i in range(len(elements)): + result[delimiter['keys'][i]] = elements[i] + + if parse_regex: + for result_key, regex in _compiled_parse_regex.items(): + found = regex.search(raw_result) + if not found: + return {} + result[result_key] = raw_result[found.start() : found.end()] + + return result +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/dailymotion.html b/_modules/searx/engines/dailymotion.html new file mode 100644 index 000000000..23949583d --- /dev/null +++ b/_modules/searx/engines/dailymotion.html @@ -0,0 +1,364 @@ + + + + + + + + searx.engines.dailymotion — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.dailymotion

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""
+Dailymotion (Videos)
+~~~~~~~~~~~~~~~~~~~~
+
+.. _REST GET: https://developers.dailymotion.com/tools/
+.. _Global API Parameters: https://developers.dailymotion.com/api/#global-parameters
+.. _Video filters API: https://developers.dailymotion.com/api/#video-filters
+.. _Fields selection: https://developers.dailymotion.com/api/#fields-selection
+
+"""
+
+from typing import TYPE_CHECKING
+
+from datetime import datetime, timedelta
+from urllib.parse import urlencode
+import time
+import babel
+
+from searx.network import get, raise_for_httperror  # see https://github.com/searxng/searxng/issues/762
+from searx.utils import html_to_text
+from searx.exceptions import SearxEngineAPIException
+from searx.locales import region_tag, language_tag
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://www.dailymotion.com',
+    "wikidata_id": 'Q769222',
+    "official_api_documentation": 'https://www.dailymotion.com/developer',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+# engine dependent config
+categories = ['videos']
+paging = True
+number_of_results = 10
+
+time_range_support = True
+time_delta_dict = {
+    "day": timedelta(days=1),
+    "week": timedelta(days=7),
+    "month": timedelta(days=31),
+    "year": timedelta(days=365),
+}
+
+safesearch = True
+safesearch_params = {
+    2: {'is_created_for_kids': 'true'},
+    1: {'is_created_for_kids': 'true'},
+    0: {},
+}
+"""True if this video is "Created for Kids" / intends to target an audience
+under the age of 16 (``is_created_for_kids`` in `Video filters API`_ )
+"""
+
+family_filter_map = {
+    2: 'true',
+    1: 'true',
+    0: 'false',
+}
+"""By default, the family filter is turned on. Setting this parameter to
+``false`` will stop filtering-out explicit content from searches and global
+contexts (``family_filter`` in `Global API Parameters`_ ).
+"""
+
+result_fields = [
+    'allow_embed',
+    'description',
+    'title',
+    'created_time',
+    'duration',
+    'url',
+    'thumbnail_360_url',
+    'id',
+]
+"""`Fields selection`_, by default, a few fields are returned. To request more
+specific fields, the ``fields`` parameter is used with the list of fields
+SearXNG needs in the response to build a video result list.
+"""
+
+search_url = 'https://api.dailymotion.com/videos?'
+"""URL to retrieve a list of videos.
+
+- `REST GET`_
+- `Global API Parameters`_
+- `Video filters API`_
+"""
+
+iframe_src = "https://www.dailymotion.com/embed/video/{video_id}"
+"""URL template to embed video in SearXNG's result list."""
+
+
+def request(query, params):
+
+    if not query:
+        return False
+
+    eng_region: str = traits.get_region(params['searxng_locale'], 'en_US')  # type: ignore
+    eng_lang = traits.get_language(params['searxng_locale'], 'en')
+
+    args = {
+        'search': query,
+        'family_filter': family_filter_map.get(params['safesearch'], 'false'),
+        'thumbnail_ratio': 'original',  # original|widescreen|square
+        # https://developers.dailymotion.com/api/#video-filters
+        'languages': eng_lang,
+        'page': params['pageno'],
+        'password_protected': 'false',
+        'private': 'false',
+        'sort': 'relevance',
+        'limit': number_of_results,
+        'fields': ','.join(result_fields),
+    }
+
+    args.update(safesearch_params.get(params['safesearch'], {}))
+
+    # Don't add localization and country arguments if the user does select a
+    # language (:de, :en, ..)
+
+    if len(params['searxng_locale'].split('-')) > 1:
+        # https://developers.dailymotion.com/api/#global-parameters
+        args['localization'] = eng_region
+        args['country'] = eng_region.split('_')[1]
+        # Insufficient rights for the `ams_country' parameter of route `GET /videos'
+        # 'ams_country': eng_region.split('_')[1],
+
+    time_delta = time_delta_dict.get(params["time_range"])
+    if time_delta:
+        created_after = datetime.now() - time_delta
+        args['created_after'] = datetime.timestamp(created_after)
+
+    query_str = urlencode(args)
+    params['url'] = search_url + query_str
+
+    return params
+
+
+# get response from search-request
+def response(resp):
+    results = []
+
+    search_res = resp.json()
+
+    # check for an API error
+    if 'error' in search_res:
+        raise SearxEngineAPIException(search_res['error'].get('message'))
+
+    raise_for_httperror(resp)
+
+    # parse results
+    for res in search_res.get('list', []):
+
+        title = res['title']
+        url = res['url']
+
+        content = html_to_text(res['description'])
+        if len(content) > 300:
+            content = content[:300] + '...'
+
+        publishedDate = datetime.fromtimestamp(res['created_time'], None)
+
+        length = time.gmtime(res.get('duration'))
+        if length.tm_hour:
+            length = time.strftime("%H:%M:%S", length)
+        else:
+            length = time.strftime("%M:%S", length)
+
+        thumbnail = res['thumbnail_360_url']
+        thumbnail = thumbnail.replace("http://", "https://")
+
+        item = {
+            'template': 'videos.html',
+            'url': url,
+            'title': title,
+            'content': content,
+            'publishedDate': publishedDate,
+            'length': length,
+            'thumbnail': thumbnail,
+        }
+
+        # HINT: no mater what the value is, without API token videos can't shown
+        # embedded
+        if res['allow_embed']:
+            item['iframe_src'] = iframe_src.format(video_id=res['id'])
+
+        results.append(item)
+
+    # return results
+    return results
+
+
+
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch locales & languages from dailymotion. + + Locales fetched from `api/locales <https://api.dailymotion.com/locales>`_. + There are duplications in the locale codes returned from Dailymotion which + can be ignored:: + + en_EN --> en_GB, en_US + ar_AA --> ar_EG, ar_AE, ar_SA + + The language list `api/languages <https://api.dailymotion.com/languages>`_ + contains over 7000 *languages* codes (see PR1071_). We use only those + language codes that are used in the locales. + + .. _PR1071: https://github.com/searxng/searxng/pull/1071 + + """ + + resp = get('https://api.dailymotion.com/locales') + if not resp.ok: # type: ignore + print("ERROR: response from dailymotion/locales is not OK.") + + for item in resp.json()['list']: # type: ignore + eng_tag = item['locale'] + if eng_tag in ('en_EN', 'ar_AA'): + continue + try: + sxng_tag = region_tag(babel.Locale.parse(eng_tag)) + except babel.UnknownLocaleError: + print("ERROR: item unknown --> %s" % item) + continue + + conflict = engine_traits.regions.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + engine_traits.regions[sxng_tag] = eng_tag + + locale_lang_list = [x.split('_')[0] for x in engine_traits.regions.values()] + + resp = get('https://api.dailymotion.com/languages') + if not resp.ok: # type: ignore + print("ERROR: response from dailymotion/languages is not OK.") + + for item in resp.json()['list']: # type: ignore + eng_tag = item['code'] + if eng_tag in locale_lang_list: + sxng_tag = language_tag(babel.Locale.parse(eng_tag)) + engine_traits.languages[sxng_tag] = eng_tag
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/demo_offline.html b/_modules/searx/engines/demo_offline.html new file mode 100644 index 000000000..2c6670cf0 --- /dev/null +++ b/_modules/searx/engines/demo_offline.html @@ -0,0 +1,185 @@ + + + + + + + + searx.engines.demo_offline — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.demo_offline

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Within this module we implement a *demo offline engine*.  Do not look to
+close to the implementation, its just a simple example.  To get in use of this
+*demo* engine add the following entry to your engines list in ``settings.yml``:
+
+.. code:: yaml
+
+  - name: my offline engine
+    engine: demo_offline
+    shortcut: demo
+    disabled: false
+
+"""
+
+import json
+
+engine_type = 'offline'
+categories = ['general']
+disabled = True
+timeout = 2.0
+
+about = {
+    "wikidata_id": None,
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+# if there is a need for globals, use a leading underline
+_my_offline_engine = None
+
+
+
[docs]def init(engine_settings=None): + """Initialization of the (offline) engine. The origin of this demo engine is a + simple json string which is loaded in this example while the engine is + initialized. + + """ + global _my_offline_engine # pylint: disable=global-statement + + _my_offline_engine = ( + '[ {"value": "%s"}' + ', {"value":"first item"}' + ', {"value":"second item"}' + ', {"value":"third item"}' + ']' % engine_settings.get('name') + )
+ + + +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/demo_online.html b/_modules/searx/engines/demo_online.html new file mode 100644 index 000000000..560ad4eb3 --- /dev/null +++ b/_modules/searx/engines/demo_online.html @@ -0,0 +1,212 @@ + + + + + + + + searx.engines.demo_online — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.demo_online

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Within this module we implement a *demo online engine*.  Do not look to
+close to the implementation, its just a simple example which queries `The Art
+Institute of Chicago <https://www.artic.edu>`_
+
+To get in use of this *demo* engine add the following entry to your engines
+list in ``settings.yml``:
+
+.. code:: yaml
+
+  - name: my online engine
+    engine: demo_online
+    shortcut: demo
+    disabled: false
+
+"""
+
+from json import loads
+from urllib.parse import urlencode
+
+engine_type = 'online'
+send_accept_language_header = True
+categories = ['general']
+disabled = True
+timeout = 2.0
+categories = ['images']
+paging = True
+page_size = 20
+
+search_api = 'https://api.artic.edu/api/v1/artworks/search?'
+image_api = 'https://www.artic.edu/iiif/2/'
+
+about = {
+    "website": 'https://www.artic.edu',
+    "wikidata_id": 'Q239303',
+    "official_api_documentation": 'http://api.artic.edu/docs/',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+
+# if there is a need for globals, use a leading underline
+_my_online_engine = None
+
+
+
[docs]def init(engine_settings): + """Initialization of the (online) engine. If no initialization is needed, drop + this init function. + + """ + global _my_online_engine # pylint: disable=global-statement + _my_online_engine = engine_settings.get('name')
+ + +
[docs]def request(query, params): + """Build up the ``params`` for the online request. In this example we build a + URL to fetch images from `artic.edu <https://artic.edu>`__ + + """ + args = urlencode( + { + 'q': query, + 'page': params['pageno'], + 'fields': 'id,title,artist_display,medium_display,image_id,date_display,dimensions,artist_titles', + 'limit': page_size, + } + ) + params['url'] = search_api + args + return params
+ + +
[docs]def response(resp): + """Parse out the result items from the response. In this example we parse the + response from `api.artic.edu <https://artic.edu>`__ and filter out all + images. + + """ + results = [] + json_data = loads(resp.text) + + for result in json_data['data']: + + if not result['image_id']: + continue + + results.append( + { + 'url': 'https://artic.edu/artworks/%(id)s' % result, + 'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result, + 'content': result['medium_display'], + 'author': ', '.join(result['artist_titles']), + 'img_src': image_api + '/%(image_id)s/full/843,/0/default.jpg' % result, + 'img_format': result['dimensions'], + 'template': 'images.html', + } + ) + + return results
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/duckduckgo.html b/_modules/searx/engines/duckduckgo.html new file mode 100644 index 000000000..e36f66b5c --- /dev/null +++ b/_modules/searx/engines/duckduckgo.html @@ -0,0 +1,549 @@ + + + + + + + + searx.engines.duckduckgo — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.duckduckgo

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""
+DuckDuckGo Lite
+~~~~~~~~~~~~~~~
+"""
+
+from typing import TYPE_CHECKING
+import re
+from urllib.parse import urlencode
+import json
+import babel
+import lxml.html
+
+from searx import (
+    locales,
+    redislib,
+    external_bang,
+)
+from searx.utils import (
+    eval_xpath,
+    eval_xpath_getindex,
+    extract_text,
+)
+from searx.network import get  # see https://github.com/searxng/searxng/issues/762
+from searx import redisdb
+from searx.enginelib.traits import EngineTraits
+from searx.exceptions import SearxEngineAPIException
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+about = {
+    "website": 'https://lite.duckduckgo.com/lite/',
+    "wikidata_id": 'Q12805',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+send_accept_language_header = True
+"""DuckDuckGo-Lite tries to guess user's prefered language from the HTTP
+``Accept-Language``.  Optional the user can select a region filter (but not a
+language).
+"""
+
+# engine dependent config
+categories = ['general', 'web']
+paging = True
+time_range_support = True
+safesearch = True  # user can't select but the results are filtered
+
+url = 'https://lite.duckduckgo.com/lite/'
+# url_ping = 'https://duckduckgo.com/t/sl_l'
+
+time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'}
+form_data = {'v': 'l', 'api': 'd.js', 'o': 'json'}
+
+
+
[docs]def cache_vqd(query, value): + """Caches a ``vqd`` value from a query. + + The vqd value depends on the query string and is needed for the follow up + pages or the images loaded by a XMLHttpRequest: + + - DuckDuckGo Web: `https://links.duckduckgo.com/d.js?q=...&vqd=...` + - DuckDuckGo Images: `https://duckduckgo.com/i.js??q=...&vqd=...` + + """ + c = redisdb.client() + if c: + logger.debug("cache vqd value: %s", value) + key = 'SearXNG_ddg_vqd' + redislib.secret_hash(query) + c.set(key, value, ex=600)
+ + +
[docs]def get_vqd(query, headers): + """Returns the ``vqd`` that fits to the *query*. If there is no ``vqd`` cached + (:py:obj:`cache_vqd`) the query is sent to DDG to get a vqd value from the + response. + + """ + value = None + c = redisdb.client() + if c: + key = 'SearXNG_ddg_vqd' + redislib.secret_hash(query) + value = c.get(key) + if value: + value = value.decode('utf-8') + logger.debug("re-use cached vqd value: %s", value) + return value + + query_url = 'https://duckduckgo.com/?q={query}&atb=v290-5'.format(query=urlencode({'q': query})) + res = get(query_url, headers=headers) + content = res.text # type: ignore + if content.find('vqd=\"') == -1: + raise SearxEngineAPIException('Request failed') + value = content[content.find('vqd=\"') + 5 :] + value = value[: value.find('\'')] + logger.debug("new vqd value: %s", value) + cache_vqd(query, value) + return value
+ + +
[docs]def get_ddg_lang(eng_traits: EngineTraits, sxng_locale, default='en_US'): + """Get DuckDuckGo's language identifier from SearXNG's locale. + + DuckDuckGo defines its lanaguages by region codes (see + :py:obj:`fetch_traits`). + + To get region and language of a DDG service use: + + .. code: python + + eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) + eng_lang = get_ddg_lang(traits, params['searxng_locale']) + + It might confuse, but the ``l`` value of the cookie is what SearXNG calls + the *region*: + + .. code:: python + + # !ddi paris :es-AR --> {'ad': 'es_AR', 'ah': 'ar-es', 'l': 'ar-es'} + params['cookies']['ad'] = eng_lang + params['cookies']['ah'] = eng_region + params['cookies']['l'] = eng_region + + .. hint:: + + `DDG-lite <https://lite.duckduckgo.com/lite>`__ does not offer a language + selection to the user, only a region can be selected by the user + (``eng_region`` from the example above). DDG-lite stores the selected + region in a cookie:: + + params['cookies']['kl'] = eng_region # 'ar-es' + + """ + return eng_traits.custom['lang_region'].get( # type: ignore + sxng_locale, eng_traits.get_language(sxng_locale, default) + )
+ + +ddg_reg_map = { + 'tw-tzh': 'zh_TW', + 'hk-tzh': 'zh_HK', + 'ct-ca': 'skip', # ct-ca and es-ca both map to ca_ES + 'es-ca': 'ca_ES', + 'id-en': 'id_ID', + 'no-no': 'nb_NO', + 'jp-jp': 'ja_JP', + 'kr-kr': 'ko_KR', + 'xa-ar': 'ar_SA', + 'sl-sl': 'sl_SI', + 'th-en': 'th_TH', + 'vn-en': 'vi_VN', +} + +ddg_lang_map = { + # use ar --> ar_EG (Egypt's arabic) + "ar_DZ": 'lang_region', + "ar_JO": 'lang_region', + "ar_SA": 'lang_region', + # use bn --> bn_BD + 'bn_IN': 'lang_region', + # use de --> de_DE + 'de_CH': 'lang_region', + # use en --> en_US, + 'en_AU': 'lang_region', + 'en_CA': 'lang_region', + 'en_GB': 'lang_region', + # Esperanto + 'eo_XX': 'eo', + # use es --> es_ES, + 'es_AR': 'lang_region', + 'es_CL': 'lang_region', + 'es_CO': 'lang_region', + 'es_CR': 'lang_region', + 'es_EC': 'lang_region', + 'es_MX': 'lang_region', + 'es_PE': 'lang_region', + 'es_UY': 'lang_region', + 'es_VE': 'lang_region', + # use fr --> rf_FR + 'fr_CA': 'lang_region', + 'fr_CH': 'lang_region', + 'fr_BE': 'lang_region', + # use nl --> nl_NL + 'nl_BE': 'lang_region', + # use pt --> pt_PT + 'pt_BR': 'lang_region', + # skip these languages + 'od_IN': 'skip', + 'io_XX': 'skip', + 'tokipona_XX': 'skip', +} + + +def request(query, params): + + # quote ddg bangs + query_parts = [] + # for val in re.split(r'(\s+)', query): + for val in re.split(r'(\s+)', query): + if not val.strip(): + continue + if val.startswith('!') and external_bang.get_node(external_bang.EXTERNAL_BANGS, val[1:]): + val = f"'{val}'" + query_parts.append(val) + query = ' '.join(query_parts) + + eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) + # eng_lang = get_ddg_lang(traits, params['searxng_locale']) + + params['url'] = url + params['method'] = 'POST' + params['data']['q'] = query + + # The API is not documented, so we do some reverse engineering and emulate + # what https://lite.duckduckgo.com/lite/ does when you press "next Page" + # link again and again .. + + params['headers']['Content-Type'] = 'application/x-www-form-urlencoded' + params['headers']['Referer'] = 'https://google.com/' + + # initial page does not have an offset + if params['pageno'] == 2: + # second page does have an offset of 30 + offset = (params['pageno'] - 1) * 30 + params['data']['s'] = offset + params['data']['dc'] = offset + 1 + + elif params['pageno'] > 2: + # third and following pages do have an offset of 30 + n*50 + offset = 30 + (params['pageno'] - 2) * 50 + params['data']['s'] = offset + params['data']['dc'] = offset + 1 + + # request needs a vqd argument + params['data']['vqd'] = get_vqd(query, params["headers"]) + + # initial page does not have additional data in the input form + if params['pageno'] > 1: + + params['data']['o'] = form_data.get('o', 'json') + params['data']['api'] = form_data.get('api', 'd.js') + params['data']['nextParams'] = form_data.get('nextParams', '') + params['data']['v'] = form_data.get('v', 'l') + + params['data']['kl'] = eng_region + params['cookies']['kl'] = eng_region + + params['data']['df'] = '' + if params['time_range'] in time_range_dict: + params['data']['df'] = time_range_dict[params['time_range']] + params['cookies']['df'] = time_range_dict[params['time_range']] + + logger.debug("param data: %s", params['data']) + logger.debug("param cookies: %s", params['cookies']) + return params + + +def response(resp): + + if resp.status_code == 303: + return [] + + results = [] + doc = lxml.html.fromstring(resp.text) + + result_table = eval_xpath(doc, '//html/body/form/div[@class="filters"]/table') + + if len(result_table) == 2: + # some locales (at least China) does not have a "next page" button and + # the layout of the HTML tables is different. + result_table = result_table[1] + elif not len(result_table) >= 3: + # no more results + return [] + else: + result_table = result_table[2] + # update form data from response + form = eval_xpath(doc, '//html/body/form/div[@class="filters"]/table//input/..') + if len(form): + + form = form[0] + form_data['v'] = eval_xpath(form, '//input[@name="v"]/@value')[0] + form_data['api'] = eval_xpath(form, '//input[@name="api"]/@value')[0] + form_data['o'] = eval_xpath(form, '//input[@name="o"]/@value')[0] + logger.debug('form_data: %s', form_data) + + value = eval_xpath(form, '//input[@name="vqd"]/@value')[0] + query = resp.search_params['data']['q'] + cache_vqd(query, value) + + tr_rows = eval_xpath(result_table, './/tr') + # In the last <tr> is the form of the 'previous/next page' links + tr_rows = tr_rows[:-1] + + len_tr_rows = len(tr_rows) + offset = 0 + + while len_tr_rows >= offset + 4: + + # assemble table rows we need to scrap + tr_title = tr_rows[offset] + tr_content = tr_rows[offset + 1] + offset += 4 + + # ignore sponsored Adds <tr class="result-sponsored"> + if tr_content.get('class') == 'result-sponsored': + continue + + a_tag = eval_xpath_getindex(tr_title, './/td//a[@class="result-link"]', 0, None) + if a_tag is None: + continue + + td_content = eval_xpath_getindex(tr_content, './/td[@class="result-snippet"]', 0, None) + if td_content is None: + continue + + results.append( + { + 'title': a_tag.text_content(), + 'content': extract_text(td_content), + 'url': a_tag.get('href'), + } + ) + + return results + + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages & regions from DuckDuckGo. + + SearXNG's ``all`` locale maps DuckDuckGo's "Alle regions" (``wt-wt``). + DuckDuckGo's language "Browsers prefered language" (``wt_WT``) makes no + sense in a SearXNG request since SearXNG's ``all`` will not add a + ``Accept-Language`` HTTP header. The value in ``engine_traits.all_locale`` + is ``wt-wt`` (the region). + + Beside regions DuckDuckGo also defines its lanaguages by region codes. By + example these are the english languages in DuckDuckGo: + + - en_US + - en_AU + - en_CA + - en_GB + + The function :py:obj:`get_ddg_lang` evaluates DuckDuckGo's language from + SearXNG's locale. + + """ + # pylint: disable=too-many-branches, too-many-statements + # fetch regions + + engine_traits.all_locale = 'wt-wt' + + # updated from u588 to u661 / should be updated automatically? + resp = get('https://duckduckgo.com/util/u661.js') + + if not resp.ok: # type: ignore + print("ERROR: response from DuckDuckGo is not OK.") + + pos = resp.text.find('regions:{') + 8 # type: ignore + js_code = resp.text[pos:] # type: ignore + pos = js_code.find('}') + 1 + regions = json.loads(js_code[:pos]) + + for eng_tag, name in regions.items(): + + if eng_tag == 'wt-wt': + engine_traits.all_locale = 'wt-wt' + continue + + region = ddg_reg_map.get(eng_tag) + if region == 'skip': + continue + + if not region: + eng_territory, eng_lang = eng_tag.split('-') + region = eng_lang + '_' + eng_territory.upper() + + try: + sxng_tag = locales.region_tag(babel.Locale.parse(region)) + except babel.UnknownLocaleError: + print("ERROR: %s (%s) -> %s is unknown by babel" % (name, eng_tag, region)) + continue + + conflict = engine_traits.regions.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + engine_traits.regions[sxng_tag] = eng_tag + + # fetch languages + + engine_traits.custom['lang_region'] = {} + + pos = resp.text.find('languages:{') + 10 # type: ignore + js_code = resp.text[pos:] # type: ignore + pos = js_code.find('}') + 1 + js_code = '{"' + js_code[1:pos].replace(':', '":').replace(',', ',"') + languages = json.loads(js_code) + + for eng_lang, name in languages.items(): + + if eng_lang == 'wt_WT': + continue + + babel_tag = ddg_lang_map.get(eng_lang, eng_lang) + if babel_tag == 'skip': + continue + + try: + + if babel_tag == 'lang_region': + sxng_tag = locales.region_tag(babel.Locale.parse(eng_lang)) + engine_traits.custom['lang_region'][sxng_tag] = eng_lang + continue + + sxng_tag = locales.language_tag(babel.Locale.parse(babel_tag)) + + except babel.UnknownLocaleError: + print("ERROR: language %s (%s) is unknown by babel" % (name, eng_lang)) + continue + + conflict = engine_traits.languages.get(sxng_tag) + if conflict: + if conflict != eng_lang: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_lang)) + continue + engine_traits.languages[sxng_tag] = eng_lang
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/duckduckgo_definitions.html b/_modules/searx/engines/duckduckgo_definitions.html new file mode 100644 index 000000000..107dbc749 --- /dev/null +++ b/_modules/searx/engines/duckduckgo_definitions.html @@ -0,0 +1,367 @@ + + + + + + + + searx.engines.duckduckgo_definitions — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.duckduckgo_definitions

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""
+DuckDuckGo Instant Answer API
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The `DDG-API <https://duckduckgo.com/api>`__ is no longer documented but from
+reverse engineering we can see that some services (e.g. instant answers) still
+in use from the DDG search engine.
+
+As far we can say the *instant answers* API does not support languages, or at
+least we could not find out how language support should work.  It seems that
+most of the features are based on English terms.
+
+"""
+
+from typing import TYPE_CHECKING
+
+from urllib.parse import urlencode, urlparse, urljoin
+from lxml import html
+
+from searx.data import WIKIDATA_UNITS
+from searx.utils import extract_text, html_to_text, get_string_replaces_function
+from searx.external_urls import get_external_url, get_earth_coordinates_url, area_to_osm_zoom
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+# about
+about = {
+    "website": 'https://duckduckgo.com/',
+    "wikidata_id": 'Q12805',
+    "official_api_documentation": 'https://duckduckgo.com/api',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+send_accept_language_header = True
+
+URL = 'https://api.duckduckgo.com/' + '?{query}&format=json&pretty=0&no_redirect=1&d=1'
+
+WIKIDATA_PREFIX = ['http://www.wikidata.org/entity/', 'https://www.wikidata.org/entity/']
+
+replace_http_by_https = get_string_replaces_function({'http:': 'https:'})
+
+
+
[docs]def is_broken_text(text): + """duckduckgo may return something like ``<a href="xxxx">http://somewhere Related website<a/>`` + + The href URL is broken, the "Related website" may contains some HTML. + + The best solution seems to ignore these results. + """ + return text.startswith('http') and ' ' in text
+ + +def result_to_text(text, htmlResult): + # TODO : remove result ending with "Meaning" or "Category" # pylint: disable=fixme + result = None + dom = html.fromstring(htmlResult) + a = dom.xpath('//a') + if len(a) >= 1: + result = extract_text(a[0]) + else: + result = text + if not is_broken_text(result): + return result + return None + + +def request(query, params): + params['url'] = URL.format(query=urlencode({'q': query})) + return params + + +def response(resp): + # pylint: disable=too-many-locals, too-many-branches, too-many-statements + results = [] + + search_res = resp.json() + + # search_res.get('Entity') possible values (not exhaustive) : + # * continent / country / department / location / waterfall + # * actor / musician / artist + # * book / performing art / film / television / media franchise / concert tour / playwright + # * prepared food + # * website / software / os / programming language / file format / software engineer + # * company + + content = '' + heading = search_res.get('Heading', '') + attributes = [] + urls = [] + infobox_id = None + relatedTopics = [] + + # add answer if there is one + answer = search_res.get('Answer', '') + if answer: + logger.debug('AnswerType="%s" Answer="%s"', search_res.get('AnswerType'), answer) + if search_res.get('AnswerType') not in ['calc', 'ip']: + results.append({'answer': html_to_text(answer)}) + + # add infobox + if 'Definition' in search_res: + content = content + search_res.get('Definition', '') + + if 'Abstract' in search_res: + content = content + search_res.get('Abstract', '') + + # image + image = search_res.get('Image') + image = None if image == '' else image + if image is not None and urlparse(image).netloc == '': + image = urljoin('https://duckduckgo.com', image) + + # urls + # Official website, Wikipedia page + for ddg_result in search_res.get('Results', []): + firstURL = ddg_result.get('FirstURL') + text = ddg_result.get('Text') + if firstURL is not None and text is not None: + urls.append({'title': text, 'url': firstURL}) + results.append({'title': heading, 'url': firstURL}) + + # related topics + for ddg_result in search_res.get('RelatedTopics', []): + if 'FirstURL' in ddg_result: + firstURL = ddg_result.get('FirstURL') + text = ddg_result.get('Text') + if not is_broken_text(text): + suggestion = result_to_text(text, ddg_result.get('Result')) + if suggestion != heading and suggestion is not None: + results.append({'suggestion': suggestion}) + elif 'Topics' in ddg_result: + suggestions = [] + relatedTopics.append({'name': ddg_result.get('Name', ''), 'suggestions': suggestions}) + for topic_result in ddg_result.get('Topics', []): + suggestion = result_to_text(topic_result.get('Text'), topic_result.get('Result')) + if suggestion != heading and suggestion is not None: + suggestions.append(suggestion) + + # abstract + abstractURL = search_res.get('AbstractURL', '') + if abstractURL != '': + # add as result ? problem always in english + infobox_id = abstractURL + urls.append({'title': search_res.get('AbstractSource'), 'url': abstractURL, 'official': True}) + results.append({'url': abstractURL, 'title': heading}) + + # definition + definitionURL = search_res.get('DefinitionURL', '') + if definitionURL != '': + # add as result ? as answer ? problem always in english + infobox_id = definitionURL + urls.append({'title': search_res.get('DefinitionSource'), 'url': definitionURL}) + + # to merge with wikidata's infobox + if infobox_id: + infobox_id = replace_http_by_https(infobox_id) + + # attributes + # some will be converted to urls + if 'Infobox' in search_res: + infobox = search_res.get('Infobox') + if 'content' in infobox: + osm_zoom = 17 + coordinates = None + for info in infobox.get('content'): + data_type = info.get('data_type') + data_label = info.get('label') + data_value = info.get('value') + + # Workaround: ddg may return a double quote + if data_value == '""': + continue + + # Is it an external URL ? + # * imdb_id / facebook_profile / youtube_channel / youtube_video / twitter_profile + # * instagram_profile / rotten_tomatoes / spotify_artist_id / itunes_artist_id / soundcloud_id + # * netflix_id + external_url = get_external_url(data_type, data_value) + if external_url is not None: + urls.append({'title': data_label, 'url': external_url}) + elif data_type in ['instance', 'wiki_maps_trigger', 'google_play_artist_id']: + # ignore instance: Wikidata value from "Instance Of" (Qxxxx) + # ignore wiki_maps_trigger: reference to a javascript + # ignore google_play_artist_id: service shutdown + pass + elif data_type == 'string' and data_label == 'Website': + # There is already an URL for the website + pass + elif data_type == 'area': + attributes.append({'label': data_label, 'value': area_to_str(data_value), 'entity': 'P2046'}) + osm_zoom = area_to_osm_zoom(data_value.get('amount')) + elif data_type == 'coordinates': + if data_value.get('globe') == 'http://www.wikidata.org/entity/Q2': + # coordinate on Earth + # get the zoom information from the area + coordinates = info + else: + # coordinate NOT on Earth + attributes.append({'label': data_label, 'value': data_value, 'entity': 'P625'}) + elif data_type == 'string': + attributes.append({'label': data_label, 'value': data_value}) + + if coordinates: + data_label = coordinates.get('label') + data_value = coordinates.get('value') + latitude = data_value.get('latitude') + longitude = data_value.get('longitude') + url = get_earth_coordinates_url(latitude, longitude, osm_zoom) + urls.append({'title': 'OpenStreetMap', 'url': url, 'entity': 'P625'}) + + if len(heading) > 0: + # TODO get infobox.meta.value where .label='article_title' # pylint: disable=fixme + if image is None and len(attributes) == 0 and len(urls) == 1 and len(relatedTopics) == 0 and len(content) == 0: + results.append({'url': urls[0]['url'], 'title': heading, 'content': content}) + else: + results.append( + { + 'infobox': heading, + 'id': infobox_id, + 'content': content, + 'img_src': image, + 'attributes': attributes, + 'urls': urls, + 'relatedTopics': relatedTopics, + } + ) + + return results + + +def unit_to_str(unit): + for prefix in WIKIDATA_PREFIX: + if unit.startswith(prefix): + wikidata_entity = unit[len(prefix) :] + return WIKIDATA_UNITS.get(wikidata_entity, unit) + return unit + + +
[docs]def area_to_str(area): + """parse ``{'unit': 'https://www.wikidata.org/entity/Q712226', 'amount': '+20.99'}``""" + unit = unit_to_str(area.get('unit')) + if unit is not None: + try: + amount = float(area.get('amount')) + return '{} {}'.format(amount, unit) + except ValueError: + pass + return '{} {}'.format(area.get('amount', ''), area.get('unit', ''))
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/google.html b/_modules/searx/engines/google.html new file mode 100644 index 000000000..671c1de09 --- /dev/null +++ b/_modules/searx/engines/google.html @@ -0,0 +1,605 @@ + + + + + + + + searx.engines.google — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.google

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This is the implementation of the Google WEB engine.  Some of this
+implementations (manly the :py:obj:`get_google_info`) are shared by other
+engines:
+
+- :ref:`google images engine`
+- :ref:`google news engine`
+- :ref:`google videos engine`
+- :ref:`google scholar engine`
+- :ref:`google autocomplete`
+
+"""
+
+from typing import TYPE_CHECKING
+
+import re
+from urllib.parse import urlencode
+from lxml import html
+import babel
+import babel.core
+import babel.languages
+
+from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex
+from searx.locales import language_tag, region_tag, get_offical_locales
+from searx.network import get  # see https://github.com/searxng/searxng/issues/762
+from searx.exceptions import SearxEngineCaptchaException
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+
+# about
+about = {
+    "website": 'https://www.google.com',
+    "wikidata_id": 'Q9366',
+    "official_api_documentation": 'https://developers.google.com/custom-search/',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['general', 'web']
+paging = True
+time_range_support = True
+safesearch = True
+
+time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'}
+
+# Filter results. 0: None, 1: Moderate, 2: Strict
+filter_mapping = {0: 'off', 1: 'medium', 2: 'high'}
+
+# specific xpath variables
+# ------------------------
+
+results_xpath = './/div[contains(@jscontroller, "SC7lYd")]'
+title_xpath = './/a/h3[1]'
+href_xpath = './/a[h3]/@href'
+content_xpath = './/div[@data-sncf]'
+
+# Suggestions are links placed in a *card-section*, we extract only the text
+# from the links not the links itself.
+suggestion_xpath = '//div[contains(@class, "EIaa9b")]//a'
+
+# UI_ASYNC = 'use_ac:true,_fmt:html' # returns a HTTP 500 when user search for
+#                                    # celebrities like '!google natasha allegri'
+#                                    # or '!google chris evans'
+UI_ASYNC = 'use_ac:true,_fmt:prog'
+"""Format of the response from UI's async request."""
+
+
+
[docs]def get_google_info(params, eng_traits): + """Composing various (language) properties for the google engines (:ref:`google + API`). + + This function is called by the various google engines (:ref:`google web + engine`, :ref:`google images engine`, :ref:`google news engine` and + :ref:`google videos engine`). + + :param dict param: Request parameters of the engine. At least + a ``searxng_locale`` key should be in the dictionary. + + :param eng_traits: Engine's traits fetched from google preferences + (:py:obj:`searx.enginelib.traits.EngineTraits`) + + :rtype: dict + :returns: + Py-Dictionary with the key/value pairs: + + language: + The language code that is used by google (e.g. ``lang_en`` or + ``lang_zh-TW``) + + country: + The country code that is used by google (e.g. ``US`` or ``TW``) + + locale: + A instance of :py:obj:`babel.core.Locale` build from the + ``searxng_locale`` value. + + subdomain: + Google subdomain :py:obj:`google_domains` that fits to the country + code. + + params: + Py-Dictionary with additional request arguments (can be passed to + :py:func:`urllib.parse.urlencode`). + + - ``hl`` parameter: specifies the interface language of user interface. + - ``lr`` parameter: restricts search results to documents written in + a particular language. + - ``cr`` parameter: restricts search results to documents + originating in a particular country. + - ``ie`` parameter: sets the character encoding scheme that should + be used to interpret the query string ('utf8'). + - ``oe`` parameter: sets the character encoding scheme that should + be used to decode the XML result ('utf8'). + + headers: + Py-Dictionary with additional HTTP headers (can be passed to + request's headers) + + - ``Accept: '*/*`` + + """ + + ret_val = { + 'language': None, + 'country': None, + 'subdomain': None, + 'params': {}, + 'headers': {}, + 'cookies': {}, + 'locale': None, + } + + sxng_locale = params.get('searxng_locale', 'all') + try: + locale = babel.Locale.parse(sxng_locale, sep='-') + except babel.core.UnknownLocaleError: + locale = None + + eng_lang = eng_traits.get_language(sxng_locale, 'lang_en') + lang_code = eng_lang.split('_')[-1] # lang_zh-TW --> zh-TW / lang_en --> en + country = eng_traits.get_region(sxng_locale, eng_traits.all_locale) + + # Test zh_hans & zh_hant --> in the topmost links in the result list of list + # TW and HK you should a find wiktionary.org zh_hant link. In the result + # list of zh-CN should not be no hant link instead you should find + # zh.m.wikipedia.org/zh somewhere in the top. + + # '!go 日 :zh-TW' --> https://zh.m.wiktionary.org/zh-hant/%E6%97%A5 + # '!go 日 :zh-CN' --> https://zh.m.wikipedia.org/zh/%E6%97%A5 + + ret_val['language'] = eng_lang + ret_val['country'] = country + ret_val['locale'] = locale + ret_val['subdomain'] = eng_traits.custom['supported_domains'].get(country.upper(), 'www.google.com') + + # hl parameter: + # The hl parameter specifies the interface language (host language) of + # your user interface. To improve the performance and the quality of your + # search results, you are strongly encouraged to set this parameter + # explicitly. + # https://developers.google.com/custom-search/docs/xml_results#hlsp + # The Interface Language: + # https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages + + # https://github.com/searxng/searxng/issues/2515#issuecomment-1607150817 + ret_val['params']['hl'] = f'{lang_code}-{country}' + + # lr parameter: + # The lr (language restrict) parameter restricts search results to + # documents written in a particular language. + # https://developers.google.com/custom-search/docs/xml_results#lrsp + # Language Collection Values: + # https://developers.google.com/custom-search/docs/xml_results_appendices#languageCollections + # + # To select 'all' languages an empty 'lr' value is used. + # + # Different to other google services, Google Schloar supports to select more + # than one language. The languages are seperated by a pipe '|' (logical OR). + # By example: &lr=lang_zh-TW%7Clang_de selects articles written in + # traditional chinese OR german language. + + ret_val['params']['lr'] = eng_lang + if sxng_locale == 'all': + ret_val['params']['lr'] = '' + + # cr parameter: + # The cr parameter restricts search results to documents originating in a + # particular country. + # https://developers.google.com/custom-search/docs/xml_results#crsp + + ret_val['params']['cr'] = 'country' + country + if sxng_locale == 'all': + ret_val['params']['cr'] = '' + + # gl parameter: (mandatory by Geeogle News) + # The gl parameter value is a two-letter country code. For WebSearch + # results, the gl parameter boosts search results whose country of origin + # matches the parameter value. See the Country Codes section for a list of + # valid values. + # Specifying a gl parameter value in WebSearch requests should improve the + # relevance of results. This is particularly true for international + # customers and, even more specifically, for customers in English-speaking + # countries other than the United States. + # https://developers.google.com/custom-search/docs/xml_results#glsp + + # https://github.com/searxng/searxng/issues/2515#issuecomment-1606294635 + # ret_val['params']['gl'] = country + + # ie parameter: + # The ie parameter sets the character encoding scheme that should be used + # to interpret the query string. The default ie value is latin1. + # https://developers.google.com/custom-search/docs/xml_results#iesp + + ret_val['params']['ie'] = 'utf8' + + # oe parameter: + # The oe parameter sets the character encoding scheme that should be used + # to decode the XML result. The default oe value is latin1. + # https://developers.google.com/custom-search/docs/xml_results#oesp + + ret_val['params']['oe'] = 'utf8' + + # num parameter: + # The num parameter identifies the number of search results to return. + # The default num value is 10, and the maximum value is 20. If you request + # more than 20 results, only 20 results will be returned. + # https://developers.google.com/custom-search/docs/xml_results#numsp + + # HINT: seems to have no effect (tested in google WEB & Images) + # ret_val['params']['num'] = 20 + + # HTTP headers + + ret_val['headers']['Accept'] = '*/*' + + # Cookies + + # - https://github.com/searxng/searxng/pull/1679#issuecomment-1235432746 + # - https://github.com/searxng/searxng/issues/1555 + ret_val['cookies']['CONSENT'] = "YES+" + + return ret_val
+ + +def detect_google_sorry(resp): + if resp.url.host == 'sorry.google.com' or resp.url.path.startswith('/sorry'): + raise SearxEngineCaptchaException() + + +
[docs]def request(query, params): + """Google search request""" + # pylint: disable=line-too-long + offset = (params['pageno'] - 1) * 10 + google_info = get_google_info(params, traits) + + # https://www.google.de/search?q=corona&hl=de&lr=lang_de&start=0&tbs=qdr%3Ad&safe=medium + query_url = ( + 'https://' + + google_info['subdomain'] + + '/search' + + "?" + + urlencode( + { + 'q': query, + **google_info['params'], + 'filter': '0', + 'start': offset, + # 'vet': '12ahUKEwik3ZbIzfn7AhXMX_EDHbUDBh0QxK8CegQIARAC..i', + # 'ved': '2ahUKEwik3ZbIzfn7AhXMX_EDHbUDBh0Q_skCegQIARAG', + # 'cs' : 1, + # 'sa': 'N', + # 'yv': 3, + # 'prmd': 'vin', + # 'ei': 'GASaY6TxOcy_xc8PtYeY6AE', + # 'sa': 'N', + # 'sstk': 'AcOHfVkD7sWCSAheZi-0tx_09XDO55gTWY0JNq3_V26cNN-c8lfD45aZYPI8s_Bqp8s57AHz5pxchDtAGCA_cikAWSjy9kw3kgg' + # formally known as use_mobile_ui + 'asearch': 'arc', + 'async': UI_ASYNC, + } + ) + ) + + if params['time_range'] in time_range_dict: + query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]}) + if params['safesearch']: + query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]}) + params['url'] = query_url + + params['cookies'] = google_info['cookies'] + params['headers'].update(google_info['headers']) + return params
+ + +# =26;[3,"dimg_ZNMiZPCqE4apxc8P3a2tuAQ_137"]a87;data:image/jpeg;base64,/9j/4AAQSkZJRgABA +# ...6T+9Nl4cnD+gr9OK8I56/tX3l86nWYw//2Q==26; +RE_DATA_IMAGE = re.compile(r'"(dimg_[^"]*)"[^;]*;(data:image[^;]*;[^;]*);') + + +def _parse_data_images(dom): + data_image_map = {} + for img_id, data_image in RE_DATA_IMAGE.findall(dom.text_content()): + end_pos = data_image.rfind('=') + if end_pos > 0: + data_image = data_image[: end_pos + 1] + data_image_map[img_id] = data_image + logger.debug('data:image objects --> %s', list(data_image_map.keys())) + return data_image_map + + +
[docs]def response(resp): + """Get response from google's search request""" + # pylint: disable=too-many-branches, too-many-statements + detect_google_sorry(resp) + + results = [] + + # convert the text to dom + dom = html.fromstring(resp.text) + data_image_map = _parse_data_images(dom) + + # results --> answer + answer_list = eval_xpath(dom, '//div[contains(@class, "LGOjhe")]') + if answer_list: + answer_list = [_.xpath("normalize-space()") for _ in answer_list] + results.append({'answer': ' '.join(answer_list)}) + else: + logger.debug("did not find 'answer'") + + # parse results + + for result in eval_xpath_list(dom, results_xpath): # pylint: disable=too-many-nested-blocks + + try: + title_tag = eval_xpath_getindex(result, title_xpath, 0, default=None) + if title_tag is None: + # this not one of the common google results *section* + logger.debug('ignoring item from the result_xpath list: missing title') + continue + title = extract_text(title_tag) + + url = eval_xpath_getindex(result, href_xpath, 0, None) + if url is None: + logger.debug('ignoring item from the result_xpath list: missing url of title "%s"', title) + continue + + content_nodes = eval_xpath(result, content_xpath) + content = extract_text(content_nodes) + + if not content: + logger.debug('ignoring item from the result_xpath list: missing content of title "%s"', title) + continue + + img_src = content_nodes[0].xpath('.//img/@src') + if img_src: + img_src = img_src[0] + if img_src.startswith('data:image'): + img_id = content_nodes[0].xpath('.//img/@id') + if img_id: + img_src = data_image_map.get(img_id[0]) + else: + img_src = None + + results.append({'url': url, 'title': title, 'content': content, 'img_src': img_src}) + + except Exception as e: # pylint: disable=broad-except + logger.error(e, exc_info=True) + continue + + # parse suggestion + for suggestion in eval_xpath_list(dom, suggestion_xpath): + # append suggestion + results.append({'suggestion': extract_text(suggestion)}) + + # return results + return results
+ + +# get supported languages from their site + + +skip_countries = [ + # official language of google-country not in google-languages + 'AL', # Albanien (sq) + 'AZ', # Aserbaidschan (az) + 'BD', # Bangladesch (bn) + 'BN', # Brunei Darussalam (ms) + 'BT', # Bhutan (dz) + 'ET', # Äthiopien (am) + 'GE', # Georgien (ka, os) + 'GL', # Grönland (kl) + 'KH', # Kambodscha (km) + 'LA', # Laos (lo) + 'LK', # Sri Lanka (si, ta) + 'ME', # Montenegro (sr) + 'MK', # Nordmazedonien (mk, sq) + 'MM', # Myanmar (my) + 'MN', # Mongolei (mn) + 'MV', # Malediven (dv) // dv_MV is unknown by babel + 'MY', # Malaysia (ms) + 'NP', # Nepal (ne) + 'TJ', # Tadschikistan (tg) + 'TM', # Turkmenistan (tk) + 'UZ', # Usbekistan (uz) +] + + +
[docs]def fetch_traits(engine_traits: EngineTraits, add_domains: bool = True): + """Fetch languages from Google.""" + # pylint: disable=import-outside-toplevel, too-many-branches + + engine_traits.custom['supported_domains'] = {} + + resp = get('https://www.google.com/preferences') + if not resp.ok: # type: ignore + raise RuntimeError("Response from Google's preferences is not OK.") + + dom = html.fromstring(resp.text) # type: ignore + + # supported language codes + + lang_map = {'no': 'nb'} + for x in eval_xpath_list(dom, '//*[@id="langSec"]//input[@name="lr"]'): + + eng_lang = x.get("value").split('_')[-1] + try: + locale = babel.Locale.parse(lang_map.get(eng_lang, eng_lang), sep='-') + except babel.UnknownLocaleError: + print("ERROR: %s -> %s is unknown by babel" % (x.get("data-name"), eng_lang)) + continue + sxng_lang = language_tag(locale) + + conflict = engine_traits.languages.get(sxng_lang) + if conflict: + if conflict != eng_lang: + print("CONFLICT: babel %s --> %s, %s" % (sxng_lang, conflict, eng_lang)) + continue + engine_traits.languages[sxng_lang] = 'lang_' + eng_lang + + # alias languages + engine_traits.languages['zh'] = 'lang_zh-CN' + + # supported region codes + + for x in eval_xpath_list(dom, '//*[@name="region"]/..//input[@name="region"]'): + eng_country = x.get("value") + + if eng_country in skip_countries: + continue + if eng_country == 'ZZ': + engine_traits.all_locale = 'ZZ' + continue + + sxng_locales = get_offical_locales(eng_country, engine_traits.languages.keys(), regional=True) + + if not sxng_locales: + print("ERROR: can't map from google country %s (%s) to a babel region." % (x.get('data-name'), eng_country)) + continue + + for sxng_locale in sxng_locales: + engine_traits.regions[region_tag(sxng_locale)] = eng_country + + # alias regions + engine_traits.regions['zh-CN'] = 'HK' + + # supported domains + + if add_domains: + resp = get('https://www.google.com/supported_domains') + if not resp.ok: # type: ignore + raise RuntimeError("Response from https://www.google.com/supported_domains is not OK.") + + for domain in resp.text.split(): # type: ignore + domain = domain.strip() + if not domain or domain in [ + '.google.com', + ]: + continue + region = domain.split('.')[-1].upper() + engine_traits.custom['supported_domains'][region] = 'www' + domain # type: ignore + if region == 'HK': + # There is no google.cn, we use .com.hk for zh-CN + engine_traits.custom['supported_domains']['CN'] = 'www' + domain # type: ignore
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/google_images.html b/_modules/searx/engines/google_images.html new file mode 100644 index 000000000..c55333c2c --- /dev/null +++ b/_modules/searx/engines/google_images.html @@ -0,0 +1,241 @@ + + + + + + + + searx.engines.google_images — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.google_images

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This is the implementation of the Google Images engine using the internal
+Google API used by the Google Go Android app.
+
+This internal API offer results in
+
+- JSON (``_fmt:json``)
+- Protobuf_ (``_fmt:pb``)
+- Protobuf_ compressed? (``_fmt:pc``)
+- HTML (``_fmt:html``)
+- Protobuf_ encoded in JSON (``_fmt:jspb``).
+
+.. _Protobuf: https://en.wikipedia.org/wiki/Protocol_Buffers
+"""
+
+from typing import TYPE_CHECKING
+
+from urllib.parse import urlencode
+from json import loads
+
+from searx.engines.google import fetch_traits  # pylint: disable=unused-import
+from searx.engines.google import (
+    get_google_info,
+    time_range_dict,
+    detect_google_sorry,
+)
+
+if TYPE_CHECKING:
+    import logging
+    from searx.enginelib.traits import EngineTraits
+
+    logger: logging.Logger
+    traits: EngineTraits
+
+
+# about
+about = {
+    "website": 'https://images.google.com',
+    "wikidata_id": 'Q521550',
+    "official_api_documentation": 'https://developers.google.com/custom-search',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+# engine dependent config
+categories = ['images', 'web']
+paging = True
+time_range_support = True
+safesearch = True
+send_accept_language_header = True
+
+filter_mapping = {0: 'images', 1: 'active', 2: 'active'}
+
+
+
[docs]def request(query, params): + """Google-Image search request""" + + google_info = get_google_info(params, traits) + + query_url = ( + 'https://' + + google_info['subdomain'] + + '/search' + + "?" + + urlencode( + { + 'q': query, + 'tbm': "isch", + **google_info['params'], + 'asearch': 'isch', + 'async': '_fmt:json,p:1,ijn:' + str(params['pageno']), + } + ) + ) + + if params['time_range'] in time_range_dict: + query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]}) + if params['safesearch']: + query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]}) + params['url'] = query_url + + params['cookies'] = google_info['cookies'] + params['headers'].update(google_info['headers']) + return params
+ + +
[docs]def response(resp): + """Get response from google's search request""" + results = [] + + detect_google_sorry(resp) + + json_start = resp.text.find('{"ischj":') + json_data = loads(resp.text[json_start:]) + + for item in json_data["ischj"]["metadata"]: + + result_item = { + 'url': item["result"]["referrer_url"], + 'title': item["result"]["page_title"], + 'content': item["text_in_grid"]["snippet"], + 'source': item["result"]["site_title"], + 'img_format': f'{item["original_image"]["width"]} x {item["original_image"]["height"]}', + 'img_src': item["original_image"]["url"], + 'thumbnail_src': item["thumbnail"]["url"], + 'template': 'images.html', + } + + author = item["result"].get('iptc', {}).get('creator') + if author: + result_item['author'] = ', '.join(author) + + copyright_notice = item["result"].get('iptc', {}).get('copyright_notice') + if copyright_notice: + result_item['source'] += ' | ' + copyright_notice + + freshness_date = item["result"].get("freshness_date") + if freshness_date: + result_item['source'] += ' | ' + freshness_date + + file_size = item.get('gsa', {}).get('file_size') + if file_size: + result_item['source'] += ' (%s)' % file_size + + results.append(result_item) + + return results
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/google_news.html b/_modules/searx/engines/google_news.html new file mode 100644 index 000000000..8627e5c1a --- /dev/null +++ b/_modules/searx/engines/google_news.html @@ -0,0 +1,417 @@ + + + + + + + + searx.engines.google_news — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.google_news

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This is the implementation of the Google News engine.
+
+Google News has a different region handling compared to Google WEB.
+
+- the ``ceid`` argument has to be set (:py:obj:`ceid_list`)
+- the hl_ argument has to be set correctly (and different to Google WEB)
+- the gl_ argument is mandatory
+
+If one of this argument is not set correctly, the request is redirected to
+CONSENT dialog::
+
+  https://consent.google.com/m?continue=
+
+The google news API ignores some parameters from the common :ref:`google API`:
+
+- num_ : the number of search results is ignored / there is no paging all
+  results for a query term are in the first response.
+- save_ : is ignored / Google-News results are always *SafeSearch*
+
+.. _hl: https://developers.google.com/custom-search/docs/xml_results#hlsp
+.. _gl: https://developers.google.com/custom-search/docs/xml_results#glsp
+.. _num: https://developers.google.com/custom-search/docs/xml_results#numsp
+.. _save: https://developers.google.com/custom-search/docs/xml_results#safesp
+"""
+
+from typing import TYPE_CHECKING
+
+from urllib.parse import urlencode
+import base64
+from lxml import html
+import babel
+
+from searx import locales
+from searx.utils import (
+    eval_xpath,
+    eval_xpath_list,
+    eval_xpath_getindex,
+    extract_text,
+)
+
+from searx.engines.google import fetch_traits as _fetch_traits  # pylint: disable=unused-import
+from searx.engines.google import (
+    get_google_info,
+    detect_google_sorry,
+)
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://news.google.com',
+    "wikidata_id": 'Q12020',
+    "official_api_documentation": 'https://developers.google.com/custom-search',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['news']
+paging = False
+time_range_support = False
+
+# Google-News results are always *SafeSearch*. Option 'safesearch' is set to
+# False here, otherwise checker will report safesearch-errors::
+#
+#  safesearch : results are identitical for safesearch=0 and safesearch=2
+safesearch = True
+# send_accept_language_header = True
+
+
+
[docs]def request(query, params): + """Google-News search request""" + + sxng_locale = params.get('searxng_locale', 'en-US') + ceid = locales.get_engine_locale(sxng_locale, traits.custom['ceid'], default='US:en') + google_info = get_google_info(params, traits) + google_info['subdomain'] = 'news.google.com' # google news has only one domain + + ceid_region, ceid_lang = ceid.split(':') + ceid_lang, ceid_suffix = ( + ceid_lang.split('-') + + [ + None, + ] + )[:2] + + google_info['params']['hl'] = ceid_lang + + if ceid_suffix and ceid_suffix not in ['Hans', 'Hant']: + + if ceid_region.lower() == ceid_lang: + google_info['params']['hl'] = ceid_lang + '-' + ceid_region + else: + google_info['params']['hl'] = ceid_lang + '-' + ceid_suffix + + elif ceid_region.lower() != ceid_lang: + + if ceid_region in ['AT', 'BE', 'CH', 'IL', 'SA', 'IN', 'BD', 'PT']: + google_info['params']['hl'] = ceid_lang + else: + google_info['params']['hl'] = ceid_lang + '-' + ceid_region + + google_info['params']['lr'] = 'lang_' + ceid_lang.split('-')[0] + google_info['params']['gl'] = ceid_region + + query_url = ( + 'https://' + + google_info['subdomain'] + + "/search?" + + urlencode( + { + 'q': query, + **google_info['params'], + } + ) + # ceid includes a ':' character which must not be urlencoded + + ('&ceid=%s' % ceid) + ) + + params['url'] = query_url + params['cookies'] = google_info['cookies'] + params['headers'].update(google_info['headers']) + return params
+ + +
[docs]def response(resp): + """Get response from google's search request""" + results = [] + detect_google_sorry(resp) + + # convert the text to dom + dom = html.fromstring(resp.text) + + for result in eval_xpath_list(dom, '//div[@class="xrnccd"]'): + + # The first <a> tag in the <article> contains the link to the article + # The href attribute of the <a> tag is a google internal link, we have + # to decode + + href = eval_xpath_getindex(result, './article/a/@href', 0) + href = href.split('?')[0] + href = href.split('/')[-1] + href = base64.urlsafe_b64decode(href + '====') + href = href[href.index(b'http') :].split(b'\xd2')[0] + href = href.decode() + + title = extract_text(eval_xpath(result, './article/h3[1]')) + + # The pub_date is mostly a string like 'yesertday', not a real + # timezone date or time. Therefore we can't use publishedDate. + pub_date = extract_text(eval_xpath(result, './article//time')) + pub_origin = extract_text(eval_xpath(result, './article//a[@data-n-tid]')) + + content = ' / '.join([x for x in [pub_origin, pub_date] if x]) + + # The image URL is located in a preceding sibling <img> tag, e.g.: + # "https://lh3.googleusercontent.com/DjhQh7DMszk.....z=-p-h100-w100" + # These URL are long but not personalized (double checked via tor). + + img_src = extract_text(result.xpath('preceding-sibling::a/figure/img/@src')) + + results.append( + { + 'url': href, + 'title': title, + 'content': content, + 'img_src': img_src, + } + ) + + # return results + return results
+ + +ceid_list = [ + 'AE:ar', + 'AR:es-419', + 'AT:de', + 'AU:en', + 'BD:bn', + 'BE:fr', + 'BE:nl', + 'BG:bg', + 'BR:pt-419', + 'BW:en', + 'CA:en', + 'CA:fr', + 'CH:de', + 'CH:fr', + 'CL:es-419', + 'CN:zh-Hans', + 'CO:es-419', + 'CU:es-419', + 'CZ:cs', + 'DE:de', + 'EG:ar', + 'ES:es', + 'ET:en', + 'FR:fr', + 'GB:en', + 'GH:en', + 'GR:el', + 'HK:zh-Hant', + 'HU:hu', + 'ID:en', + 'ID:id', + 'IE:en', + 'IL:en', + 'IL:he', + 'IN:bn', + 'IN:en', + 'IN:hi', + 'IN:ml', + 'IN:mr', + 'IN:ta', + 'IN:te', + 'IT:it', + 'JP:ja', + 'KE:en', + 'KR:ko', + 'LB:ar', + 'LT:lt', + 'LV:en', + 'LV:lv', + 'MA:fr', + 'MX:es-419', + 'MY:en', + 'NA:en', + 'NG:en', + 'NL:nl', + 'NO:no', + 'NZ:en', + 'PE:es-419', + 'PH:en', + 'PK:en', + 'PL:pl', + 'PT:pt-150', + 'RO:ro', + 'RS:sr', + 'RU:ru', + 'SA:ar', + 'SE:sv', + 'SG:en', + 'SI:sl', + 'SK:sk', + 'SN:fr', + 'TH:th', + 'TR:tr', + 'TW:zh-Hant', + 'TZ:en', + 'UA:ru', + 'UA:uk', + 'UG:en', + 'US:en', + 'US:es-419', + 'VE:es-419', + 'VN:vi', + 'ZA:en', + 'ZW:en', +] +"""List of region/language combinations supported by Google News. Values of the +``ceid`` argument of the Google News REST API.""" + + +_skip_values = [ + 'ET:en', # english (ethiopia) + 'ID:en', # english (indonesia) + 'LV:en', # english (latvia) +] + +_ceid_locale_map = {'NO:no': 'nb-NO'} + + +def fetch_traits(engine_traits: EngineTraits): + _fetch_traits(engine_traits, add_domains=False) + + engine_traits.custom['ceid'] = {} + + for ceid in ceid_list: + if ceid in _skip_values: + continue + + region, lang = ceid.split(':') + x = lang.split('-') + if len(x) > 1: + if x[1] not in ['Hant', 'Hans']: + lang = x[0] + + sxng_locale = _ceid_locale_map.get(ceid, lang + '-' + region) + try: + locale = babel.Locale.parse(sxng_locale, sep='-') + except babel.UnknownLocaleError: + print("ERROR: %s -> %s is unknown by babel" % (ceid, sxng_locale)) + continue + + engine_traits.custom['ceid'][locales.region_tag(locale)] = ceid +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/google_scholar.html b/_modules/searx/engines/google_scholar.html new file mode 100644 index 000000000..190d19b71 --- /dev/null +++ b/_modules/searx/engines/google_scholar.html @@ -0,0 +1,329 @@ + + + + + + + + searx.engines.google_scholar — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.google_scholar

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This is the implementation of the Google Scholar engine.
+
+Compared to other Google services the Scholar engine has a simple GET REST-API
+and there does not exists `async` API.  Even though the API slightly vintage we
+can make use of the :ref:`google API` to assemble the arguments of the GET
+request.
+"""
+
+from typing import TYPE_CHECKING
+from typing import Optional
+
+from urllib.parse import urlencode
+from datetime import datetime
+from lxml import html
+
+from searx.utils import (
+    eval_xpath,
+    eval_xpath_getindex,
+    eval_xpath_list,
+    extract_text,
+)
+
+from searx.exceptions import SearxEngineCaptchaException
+
+from searx.engines.google import fetch_traits  # pylint: disable=unused-import
+from searx.engines.google import (
+    get_google_info,
+    time_range_dict,
+)
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://scholar.google.com',
+    "wikidata_id": 'Q494817',
+    "official_api_documentation": 'https://developers.google.com/custom-search',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['science', 'scientific publications']
+paging = True
+language_support = True
+time_range_support = True
+safesearch = False
+send_accept_language_header = True
+
+
+
[docs]def time_range_args(params): + """Returns a dictionary with a time range arguments based on + ``params['time_range']``. + + Google Scholar supports a detailed search by year. Searching by *last + month* or *last week* (as offered by SearXNG) is uncommon for scientific + publications and is not supported by Google Scholar. + + To limit the result list when the users selects a range, all the SearXNG + ranges (*day*, *week*, *month*, *year*) are mapped to *year*. If no range + is set an empty dictionary of arguments is returned. Example; when + user selects a time range (current year minus one in 2022): + + .. code:: python + + { 'as_ylo' : 2021 } + + """ + ret_val = {} + if params['time_range'] in time_range_dict: + ret_val['as_ylo'] = datetime.now().year - 1 + return ret_val
+ + +
[docs]def detect_google_captcha(dom): + """In case of CAPTCHA Google Scholar open its own *not a Robot* dialog and is + not redirected to ``sorry.google.com``. + """ + if eval_xpath(dom, "//form[@id='gs_captcha_f']"): + raise SearxEngineCaptchaException()
+ + +
[docs]def request(query, params): + """Google-Scholar search request""" + + google_info = get_google_info(params, traits) + # subdomain is: scholar.google.xy + google_info['subdomain'] = google_info['subdomain'].replace("www.", "scholar.") + + args = { + 'q': query, + **google_info['params'], + 'start': (params['pageno'] - 1) * 10, + 'as_sdt': '2007', # include patents / to disable set '0,5' + 'as_vis': '0', # include citations / to disable set '1' + } + args.update(time_range_args(params)) + + params['url'] = 'https://' + google_info['subdomain'] + '/scholar?' + urlencode(args) + params['cookies'] = google_info['cookies'] + params['headers'].update(google_info['headers']) + return params
+ + +
[docs]def parse_gs_a(text: Optional[str]): + """Parse the text written in green. + + Possible formats: + * "{authors} - {journal}, {year} - {publisher}" + * "{authors} - {year} - {publisher}" + * "{authors} - {publisher}" + """ + if text is None or text == "": + return None, None, None, None + + s_text = text.split(' - ') + authors = s_text[0].split(', ') + publisher = s_text[-1] + if len(s_text) != 3: + return authors, None, publisher, None + + # the format is "{authors} - {journal}, {year} - {publisher}" or "{authors} - {year} - {publisher}" + # get journal and year + journal_year = s_text[1].split(', ') + # journal is optional and may contains some coma + if len(journal_year) > 1: + journal = ', '.join(journal_year[0:-1]) + if journal == '…': + journal = None + else: + journal = None + # year + year = journal_year[-1] + try: + publishedDate = datetime.strptime(year.strip(), '%Y') + except ValueError: + publishedDate = None + return authors, journal, publisher, publishedDate
+ + +
[docs]def response(resp): # pylint: disable=too-many-locals + """Parse response from Google Scholar""" + results = [] + + # convert the text to dom + dom = html.fromstring(resp.text) + detect_google_captcha(dom) + + # parse results + for result in eval_xpath_list(dom, '//div[@data-rp]'): + + title = extract_text(eval_xpath(result, './/h3[1]//a')) + + if not title: + # this is a [ZITATION] block + continue + + pub_type = extract_text(eval_xpath(result, './/span[@class="gs_ctg2"]')) + if pub_type: + pub_type = pub_type[1:-1].lower() + + url = eval_xpath_getindex(result, './/h3[1]//a/@href', 0) + content = extract_text(eval_xpath(result, './/div[@class="gs_rs"]')) + authors, journal, publisher, publishedDate = parse_gs_a( + extract_text(eval_xpath(result, './/div[@class="gs_a"]')) + ) + if publisher in url: + publisher = None + + # cited by + comments = extract_text(eval_xpath(result, './/div[@class="gs_fl"]/a[starts-with(@href,"/scholar?cites=")]')) + + # link to the html or pdf document + html_url = None + pdf_url = None + doc_url = eval_xpath_getindex(result, './/div[@class="gs_or_ggsm"]/a/@href', 0, default=None) + doc_type = extract_text(eval_xpath(result, './/span[@class="gs_ctg2"]')) + if doc_type == "[PDF]": + pdf_url = doc_url + else: + html_url = doc_url + + results.append( + { + 'template': 'paper.html', + 'type': pub_type, + 'url': url, + 'title': title, + 'authors': authors, + 'publisher': publisher, + 'journal': journal, + 'publishedDate': publishedDate, + 'content': content, + 'comments': comments, + 'html_url': html_url, + 'pdf_url': pdf_url, + } + ) + + # parse suggestion + for suggestion in eval_xpath(dom, '//div[contains(@class, "gs_qsuggest_wrap")]//li//a'): + # append suggestion + results.append({'suggestion': extract_text(suggestion)}) + + for correction in eval_xpath(dom, '//div[@class="gs_r gs_pda"]/a'): + results.append({'correction': extract_text(correction)}) + + return results
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/google_videos.html b/_modules/searx/engines/google_videos.html new file mode 100644 index 000000000..09906b715 --- /dev/null +++ b/_modules/searx/engines/google_videos.html @@ -0,0 +1,251 @@ + + + + + + + + searx.engines.google_videos — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.google_videos

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This is the implementation of the Google Videos engine.
+
+.. admonition:: Content-Security-Policy (CSP)
+
+   This engine needs to allow images from the `data URLs`_ (prefixed with the
+   ``data:`` scheme)::
+
+     Header set Content-Security-Policy "img-src 'self' data: ;"
+
+.. _data URLs:
+   https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
+
+"""
+
+from typing import TYPE_CHECKING
+
+from urllib.parse import urlencode
+from lxml import html
+
+from searx.utils import (
+    eval_xpath,
+    eval_xpath_list,
+    eval_xpath_getindex,
+    extract_text,
+)
+
+from searx.engines.google import fetch_traits  # pylint: disable=unused-import
+from searx.engines.google import (
+    get_google_info,
+    time_range_dict,
+    filter_mapping,
+    suggestion_xpath,
+    detect_google_sorry,
+)
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://www.google.com',
+    "wikidata_id": 'Q219885',
+    "official_api_documentation": 'https://developers.google.com/custom-search',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+
+categories = ['videos', 'web']
+paging = True
+language_support = True
+time_range_support = True
+safesearch = True
+
+
+
[docs]def request(query, params): + """Google-Video search request""" + + google_info = get_google_info(params, traits) + + query_url = ( + 'https://' + + google_info['subdomain'] + + '/search' + + "?" + + urlencode( + { + 'q': query, + 'tbm': "vid", + 'start': 10 * params['pageno'], + **google_info['params'], + 'asearch': 'arc', + 'async': 'use_ac:true,_fmt:html', + } + ) + ) + + if params['time_range'] in time_range_dict: + query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]}) + if params['safesearch']: + query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]}) + params['url'] = query_url + + params['cookies'] = google_info['cookies'] + params['headers'].update(google_info['headers']) + return params
+ + +
[docs]def response(resp): + """Get response from google's search request""" + results = [] + + detect_google_sorry(resp) + + # convert the text to dom + dom = html.fromstring(resp.text) + + # parse results + for result in eval_xpath_list(dom, '//div[contains(@class, "g ")]'): + + img_src = eval_xpath_getindex(result, './/img/@src', 0, None) + if img_src is None: + continue + + title = extract_text(eval_xpath_getindex(result, './/a/h3[1]', 0)) + url = eval_xpath_getindex(result, './/a/h3[1]/../@href', 0) + + c_node = eval_xpath_getindex(result, './/div[@class="Uroaid"]', 0) + content = extract_text(c_node) + pub_info = extract_text(eval_xpath(result, './/div[@class="P7xzyf"]')) + length = extract_text(eval_xpath(result, './/div[@class="J1mWY"]')) + + results.append( + { + 'url': url, + 'title': title, + 'content': content, + 'author': pub_info, + 'thumbnail': img_src, + 'length': length, + 'template': 'videos.html', + } + ) + + # parse suggestion + for suggestion in eval_xpath_list(dom, suggestion_xpath): + # append suggestion + results.append({'suggestion': extract_text(suggestion)}) + + return results
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/peertube.html b/_modules/searx/engines/peertube.html new file mode 100644 index 000000000..f09ff1296 --- /dev/null +++ b/_modules/searx/engines/peertube.html @@ -0,0 +1,298 @@ + + + + + + + + searx.engines.peertube — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.peertube

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Peertube and :py:obj:`SepiaSearch <searx.engines.sepiasearch>` do share
+(more or less) the same REST API and the schema of the JSON result is identical.
+
+"""
+
+import re
+from urllib.parse import urlencode
+from datetime import datetime
+from dateutil.parser import parse
+from dateutil.relativedelta import relativedelta
+
+import babel
+
+from searx.network import get  # see https://github.com/searxng/searxng/issues/762
+from searx.locales import language_tag
+from searx.utils import html_to_text
+from searx.enginelib.traits import EngineTraits
+
+traits: EngineTraits
+
+about = {
+    # pylint: disable=line-too-long
+    "website": 'https://joinpeertube.org',
+    "wikidata_id": 'Q50938515',
+    "official_api_documentation": 'https://docs.joinpeertube.org/api-rest-reference.html#tag/Search/operation/searchVideos',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+# engine dependent config
+categories = ["videos"]
+paging = True
+base_url = "https://peer.tube"
+"""Base URL of the Peertube instance.  A list of instances is available at:
+
+- https://instances.joinpeertube.org/instances
+"""
+
+time_range_support = True
+time_range_table = {
+    'day': relativedelta(),
+    'week': relativedelta(weeks=-1),
+    'month': relativedelta(months=-1),
+    'year': relativedelta(years=-1),
+}
+
+safesearch = True
+safesearch_table = {0: 'both', 1: 'false', 2: 'false'}
+
+
+def minute_to_hm(minute):
+    if isinstance(minute, int):
+        return "%d:%02d" % (divmod(minute, 60))
+    return None
+
+
+
[docs]def request(query, params): + """Assemble request for the Peertube API""" + + if not query: + return False + + # eng_region = traits.get_region(params['searxng_locale'], 'en_US') + eng_lang = traits.get_language(params['searxng_locale'], None) + + params['url'] = ( + base_url.rstrip("/") + + "/api/v1/search/videos?" + + urlencode( + { + 'search': query, + 'searchTarget': 'search-index', # Vidiversum + 'resultType': 'videos', + 'start': (params['pageno'] - 1) * 10, + 'count': 10, + # -createdAt: sort by date ascending / createdAt: date descending + 'sort': '-match', # sort by *match descending* + 'nsfw': safesearch_table[params['safesearch']], + } + ) + ) + + if eng_lang is not None: + params['url'] += '&languageOneOf[]=' + eng_lang + params['url'] += '&boostLanguages[]=' + eng_lang + + if params['time_range'] in time_range_table: + time = datetime.now().date() + time_range_table[params['time_range']] + params['url'] += '&startDate=' + time.isoformat() + + return params
+ + +def response(resp): + return video_response(resp) + + +
[docs]def video_response(resp): + """Parse video response from SepiaSearch and Peertube instances.""" + results = [] + + json_data = resp.json() + + if 'data' not in json_data: + return [] + + for result in json_data['data']: + metadata = [ + x + for x in [ + result.get('channel', {}).get('displayName'), + result.get('channel', {}).get('name') + '@' + result.get('channel', {}).get('host'), + ', '.join(result.get('tags', [])), + ] + if x + ] + + results.append( + { + 'url': result['url'], + 'title': result['name'], + 'content': html_to_text(result.get('description') or ''), + 'author': result.get('account', {}).get('displayName'), + 'length': minute_to_hm(result.get('duration')), + 'template': 'videos.html', + 'publishedDate': parse(result['publishedAt']), + 'iframe_src': result.get('embedUrl'), + 'thumbnail': result.get('thumbnailUrl') or result.get('previewUrl'), + 'metadata': ' | '.join(metadata), + } + ) + + return results
+ + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages from peertube's search-index source code. + + See videoLanguages_ in commit `8ed5c729 - Refactor and redesign client`_ + + .. _8ed5c729 - Refactor and redesign client: + https://framagit.org/framasoft/peertube/search-index/-/commit/8ed5c729 + .. _videoLanguages: + https://framagit.org/framasoft/peertube/search-index/-/commit/8ed5c729#3d8747f9a60695c367c70bb64efba8f403721fad_0_291 + """ + + resp = get( + 'https://framagit.org/framasoft/peertube/search-index/-/raw/master/client/src/components/Filters.vue', + # the response from search-index repository is very slow + timeout=60, + ) + + if not resp.ok: # type: ignore + print("ERROR: response from peertube is not OK.") + return + + js_lang = re.search(r"videoLanguages \(\)[^\n]+(.*?)\]", resp.text, re.DOTALL) # type: ignore + if not js_lang: + print("ERROR: can't determine languages from peertube") + return + + for lang in re.finditer(r"\{ id: '([a-z]+)', label:", js_lang.group(1)): + eng_tag = lang.group(1) + if eng_tag == 'oc': + # Occitanis not known by babel, its closest relative is Catalan + # but 'ca' is already in the list of engine_traits.languages --> + # 'oc' will be ignored. + continue + try: + sxng_tag = language_tag(babel.Locale.parse(eng_tag)) + except babel.UnknownLocaleError: + print("ERROR: %s is unknown by babel" % eng_tag) + continue + + conflict = engine_traits.languages.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + engine_traits.languages[sxng_tag] = eng_tag + + engine_traits.languages['zh_Hans'] = 'zh' + engine_traits.languages['zh_Hant'] = 'zh'
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/sepiasearch.html b/_modules/searx/engines/sepiasearch.html new file mode 100644 index 000000000..9cf4092d3 --- /dev/null +++ b/_modules/searx/engines/sepiasearch.html @@ -0,0 +1,198 @@ + + + + + + + + searx.engines.sepiasearch — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.sepiasearch

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""SepiaSearch uses the same languages as :py:obj:`Peertube
+<searx.engines.peertube>` and the response is identical to the response from the
+peertube engines.
+
+"""
+
+from typing import TYPE_CHECKING
+
+from urllib.parse import urlencode
+from datetime import datetime
+
+from searx.engines.peertube import fetch_traits  # pylint: disable=unused-import
+from searx.engines.peertube import (
+    # pylint: disable=unused-import
+    video_response,
+    safesearch_table,
+    time_range_table,
+)
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+about = {
+    # pylint: disable=line-too-long
+    "website": 'https://sepiasearch.org',
+    "wikidata_id": None,
+    "official_api_documentation": 'https://docs.joinpeertube.org/api-rest-reference.html#tag/Search/operation/searchVideos',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+# engine dependent config
+categories = ['videos']
+paging = True
+
+base_url = 'https://sepiasearch.org'
+
+time_range_support = True
+safesearch = True
+
+
+
[docs]def request(query, params): + """Assemble request for the SepiaSearch API""" + + if not query: + return False + + # eng_region = traits.get_region(params['searxng_locale'], 'en_US') + eng_lang = traits.get_language(params['searxng_locale'], None) + + params['url'] = ( + base_url.rstrip("/") + + "/api/v1/search/videos?" + + urlencode( + { + 'search': query, + 'start': (params['pageno'] - 1) * 10, + 'count': 10, + # -createdAt: sort by date ascending / createdAt: date descending + 'sort': '-match', # sort by *match descending* + 'nsfw': safesearch_table[params['safesearch']], + } + ) + ) + + if eng_lang is not None: + params['url'] += '&languageOneOf[]=' + eng_lang + params['url'] += '&boostLanguages[]=' + eng_lang + + if params['time_range'] in time_range_table: + time = datetime.now().date() + time_range_table[params['time_range']] + params['url'] += '&startDate=' + time.isoformat() + + return params
+ + +def response(resp): + return video_response(resp) +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/sqlite.html b/_modules/searx/engines/sqlite.html new file mode 100644 index 000000000..7c7a4a786 --- /dev/null +++ b/_modules/searx/engines/sqlite.html @@ -0,0 +1,213 @@ + + + + + + + + searx.engines.sqlite — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.sqlite

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""SQLite is a small, fast and reliable SQL database engine.  It does not require
+any extra dependency.
+
+Example
+=======
+
+.. _MediathekView: https://mediathekview.de/
+
+To demonstrate the power of database engines, here is a more complex example
+which reads from a MediathekView_ (DE) movie database.  For this example of the
+SQlite engine download the database:
+
+- https://liste.mediathekview.de/filmliste-v2.db.bz2
+
+and unpack into ``searx/data/filmliste-v2.db``.  To search the database use e.g
+Query to test: ``!mediathekview concert``
+
+.. code:: yaml
+
+   - name: mediathekview
+     engine: sqlite
+     disabled: False
+     categories: general
+     result_template: default.html
+     database: searx/data/filmliste-v2.db
+     query_str:  >-
+       SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title,
+              COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url,
+              description AS content
+         FROM film
+        WHERE title LIKE :wildcard OR description LIKE :wildcard
+        ORDER BY duration DESC
+
+Implementations
+===============
+
+"""
+
+import sqlite3
+import contextlib
+
+engine_type = 'offline'
+database = ""
+query_str = ""
+limit = 10
+paging = True
+result_template = 'key-value.html'
+
+
+def init(engine_settings):
+    if 'query_str' not in engine_settings:
+        raise ValueError('query_str cannot be empty')
+
+    if not engine_settings['query_str'].lower().startswith('select '):
+        raise ValueError('only SELECT query is supported')
+
+
+
[docs]@contextlib.contextmanager +def sqlite_cursor(): + """Implements a :py:obj:`Context Manager <contextlib.contextmanager>` for a + :py:obj:`sqlite3.Cursor`. + + Open database in read only mode: if the database doesn't exist. The default + mode creates an empty file on the file system. See: + + * https://docs.python.org/3/library/sqlite3.html#sqlite3.connect + * https://www.sqlite.org/uri.html + + """ + uri = 'file:' + database + '?mode=ro' + with contextlib.closing(sqlite3.connect(uri, uri=True)) as connect: + connect.row_factory = sqlite3.Row + with contextlib.closing(connect.cursor()) as cursor: + yield cursor
+ + +def search(query, params): + results = [] + + query_params = { + 'query': query, + 'wildcard': r'%' + query.replace(' ', r'%') + r'%', + 'limit': limit, + 'offset': (params['pageno'] - 1) * limit, + } + query_to_run = query_str + ' LIMIT :limit OFFSET :offset' + + with sqlite_cursor() as cur: + + cur.execute(query_to_run, query_params) + col_names = [cn[0] for cn in cur.description] + + for row in cur.fetchall(): + item = dict(zip(col_names, map(str, row))) + item['template'] = result_template + logger.debug("append result --> %s", item) + results.append(item) + + return results +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/startpage.html b/_modules/searx/engines/startpage.html new file mode 100644 index 000000000..daae67d8b --- /dev/null +++ b/_modules/searx/engines/startpage.html @@ -0,0 +1,606 @@ + + + + + + + + searx.engines.startpage — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.startpage

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Startpage's language & region selectors are a mess ..
+
+.. _startpage regions:
+
+Startpage regions
+=================
+
+In the list of regions there are tags we need to map to common region tags::
+
+  pt-BR_BR --> pt_BR
+  zh-CN_CN --> zh_Hans_CN
+  zh-TW_TW --> zh_Hant_TW
+  zh-TW_HK --> zh_Hant_HK
+  en-GB_GB --> en_GB
+
+and there is at least one tag with a three letter language tag (ISO 639-2)::
+
+  fil_PH --> fil_PH
+
+The locale code ``no_NO`` from Startpage does not exists and is mapped to
+``nb-NO``::
+
+    babel.core.UnknownLocaleError: unknown locale 'no_NO'
+
+For reference see languages-subtag at iana; ``no`` is the macrolanguage [1]_ and
+W3C recommends subtag over macrolanguage [2]_.
+
+.. [1] `iana: language-subtag-registry
+   <https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry>`_ ::
+
+      type: language
+      Subtag: nb
+      Description: Norwegian Bokmål
+      Added: 2005-10-16
+      Suppress-Script: Latn
+      Macrolanguage: no
+
+.. [2]
+   Use macrolanguages with care.  Some language subtags have a Scope field set to
+   macrolanguage, i.e. this primary language subtag encompasses a number of more
+   specific primary language subtags in the registry.  ...  As we recommended for
+   the collection subtags mentioned above, in most cases you should try to use
+   the more specific subtags ... `W3: The primary language subtag
+   <https://www.w3.org/International/questions/qa-choosing-language-tags#langsubtag>`_
+
+.. _startpage languages:
+
+Startpage languages
+===================
+
+:py:obj:`send_accept_language_header`:
+  The displayed name in Startpage's settings page depend on the location of the
+  IP when ``Accept-Language`` HTTP header is unset.  In :py:obj:`fetch_traits`
+  we use::
+
+    'Accept-Language': "en-US,en;q=0.5",
+    ..
+
+  to get uniform names independent from the IP).
+
+.. _startpage categories:
+
+Startpage categories
+====================
+
+Startpage's category (for Web-search, News, Videos, ..) is set by
+:py:obj:`startpage_categ` in  settings.yml::
+
+  - name: startpage
+    engine: startpage
+    startpage_categ: web
+    ...
+
+.. hint::
+
+   The default category is ``web`` .. and other categories than ``web`` are not
+   yet implemented.
+
+"""
+
+from typing import TYPE_CHECKING
+from collections import OrderedDict
+import re
+from unicodedata import normalize, combining
+from time import time
+from datetime import datetime, timedelta
+
+import dateutil.parser
+import lxml.html
+import babel
+
+from searx.utils import extract_text, eval_xpath, gen_useragent
+from searx.network import get  # see https://github.com/searxng/searxng/issues/762
+from searx.exceptions import SearxEngineCaptchaException
+from searx.locales import region_tag
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://startpage.com',
+    "wikidata_id": 'Q2333295',
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+startpage_categ = 'web'
+"""Startpage's category, visit :ref:`startpage categories`.
+"""
+
+send_accept_language_header = True
+"""Startpage tries to guess user's language and territory from the HTTP
+``Accept-Language``.  Optional the user can select a search-language (can be
+different to the UI language) and a region filter.
+"""
+
+# engine dependent config
+categories = ['general', 'web']
+paging = True
+time_range_support = True
+safesearch = True
+
+time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'}
+safesearch_dict = {0: '0', 1: '1', 2: '1'}
+
+# search-url
+base_url = 'https://www.startpage.com'
+search_url = base_url + '/sp/search'
+
+# specific xpath variables
+# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
+# not ads: div[@class="result"] are the direct childs of div[@id="results"]
+results_xpath = '//div[@class="w-gl__result__main"]'
+link_xpath = './/a[@class="w-gl__result-title result-link"]'
+content_xpath = './/p[@class="w-gl__description"]'
+search_form_xpath = '//form[@id="search"]'
+"""XPath of Startpage's origin search form
+
+.. code: html
+
+    <form action="/sp/search" method="post">
+      <input type="text" name="query"  value="" ..>
+      <input type="hidden" name="t" value="device">
+      <input type="hidden" name="lui" value="english">
+      <input type="hidden" name="sc" value="Q7Mt5TRqowKB00">
+      <input type="hidden" name="cat" value="web">
+      <input type="hidden" class="abp" id="abp-input" name="abp" value="1">
+    </form>
+"""
+
+# timestamp of the last fetch of 'sc' code
+sc_code_ts = 0
+sc_code = ''
+sc_code_cache_sec = 30
+"""Time in seconds the sc-code is cached in memory :py:obj:`get_sc_code`."""
+
+
+
[docs]def get_sc_code(searxng_locale, params): + """Get an actual ``sc`` argument from Startpage's search form (HTML page). + + Startpage puts a ``sc`` argument on every HTML :py:obj:`search form + <search_form_xpath>`. Without this argument Startpage considers the request + is from a bot. We do not know what is encoded in the value of the ``sc`` + argument, but it seems to be a kind of a *time-stamp*. + + Startpage's search form generates a new sc-code on each request. This + function scrap a new sc-code from Startpage's home page every + :py:obj:`sc_code_cache_sec` seconds. + + """ + + global sc_code_ts, sc_code # pylint: disable=global-statement + + if sc_code and (time() < (sc_code_ts + sc_code_cache_sec)): + logger.debug("get_sc_code: reuse '%s'", sc_code) + return sc_code + + headers = {**params['headers']} + headers['Origin'] = base_url + headers['Referer'] = base_url + '/' + # headers['Connection'] = 'keep-alive' + # headers['Accept-Encoding'] = 'gzip, deflate, br' + # headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' + # headers['User-Agent'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0' + + # add Accept-Language header + if searxng_locale == 'all': + searxng_locale = 'en-US' + locale = babel.Locale.parse(searxng_locale, sep='-') + + if send_accept_language_header: + ac_lang = locale.language + if locale.territory: + ac_lang = "%s-%s,%s;q=0.9,*;q=0.5" % ( + locale.language, + locale.territory, + locale.language, + ) + headers['Accept-Language'] = ac_lang + + get_sc_url = base_url + '/?sc=%s' % (sc_code) + logger.debug("query new sc time-stamp ... %s", get_sc_url) + logger.debug("headers: %s", headers) + resp = get(get_sc_url, headers=headers) + + # ?? x = network.get('https://www.startpage.com/sp/cdn/images/filter-chevron.svg', headers=headers) + # ?? https://www.startpage.com/sp/cdn/images/filter-chevron.svg + # ?? ping-back URL: https://www.startpage.com/sp/pb?sc=TLsB0oITjZ8F21 + + if str(resp.url).startswith('https://www.startpage.com/sp/captcha'): # type: ignore + raise SearxEngineCaptchaException( + message="get_sc_code: got redirected to https://www.startpage.com/sp/captcha", + ) + + dom = lxml.html.fromstring(resp.text) # type: ignore + + try: + sc_code = eval_xpath(dom, search_form_xpath + '//input[@name="sc"]/@value')[0] + except IndexError as exc: + logger.debug("suspend startpage API --> https://github.com/searxng/searxng/pull/695") + raise SearxEngineCaptchaException( + message="get_sc_code: [PR-695] query new sc time-stamp failed! (%s)" % resp.url, # type: ignore + ) from exc + + sc_code_ts = time() + logger.debug("get_sc_code: new value is: %s", sc_code) + return sc_code
+ + +
[docs]def request(query, params): + """Assemble a Startpage request. + + To avoid CAPTCHA we need to send a well formed HTTP POST request with a + cookie. We need to form a request that is identical to the request build by + Startpage's search form: + + - in the cookie the **region** is selected + - in the HTTP POST data the **language** is selected + + Additionally the arguments form Startpage's search form needs to be set in + HTML POST data / compare ``<input>`` elements: :py:obj:`search_form_xpath`. + """ + if startpage_categ == 'web': + return _request_cat_web(query, params) + + logger.error("Startpages's category '%' is not yet implemented.", startpage_categ) + return params
+ + +def _request_cat_web(query, params): + + engine_region = traits.get_region(params['searxng_locale'], 'en-US') + engine_language = traits.get_language(params['searxng_locale'], 'en') + + # build arguments + args = { + 'query': query, + 'cat': 'web', + 't': 'device', + 'sc': get_sc_code(params['searxng_locale'], params), # hint: this func needs HTTP headers, + 'with_date': time_range_dict.get(params['time_range'], ''), + } + + if engine_language: + args['language'] = engine_language + args['lui'] = engine_language + + args['abp'] = '1' + if params['pageno'] > 1: + args['page'] = params['pageno'] + + # build cookie + lang_homepage = 'en' + cookie = OrderedDict() + cookie['date_time'] = 'world' + cookie['disable_family_filter'] = safesearch_dict[params['safesearch']] + cookie['disable_open_in_new_window'] = '0' + cookie['enable_post_method'] = '1' # hint: POST + cookie['enable_proxy_safety_suggest'] = '1' + cookie['enable_stay_control'] = '1' + cookie['instant_answers'] = '1' + cookie['lang_homepage'] = 's/device/%s/' % lang_homepage + cookie['num_of_results'] = '10' + cookie['suggestions'] = '1' + cookie['wt_unit'] = 'celsius' + + if engine_language: + cookie['language'] = engine_language + cookie['language_ui'] = engine_language + + if engine_region: + cookie['search_results_region'] = engine_region + + params['cookies']['preferences'] = 'N1N'.join(["%sEEE%s" % x for x in cookie.items()]) + logger.debug('cookie preferences: %s', params['cookies']['preferences']) + + # POST request + logger.debug("data: %s", args) + params['data'] = args + params['method'] = 'POST' + params['url'] = search_url + params['headers']['Origin'] = base_url + params['headers']['Referer'] = base_url + '/' + # is the Accept header needed? + # params['headers']['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' + + return params + + +# get response from search-request +def response(resp): + dom = lxml.html.fromstring(resp.text) + + if startpage_categ == 'web': + return _response_cat_web(dom) + + logger.error("Startpages's category '%' is not yet implemented.", startpage_categ) + return [] + + +def _response_cat_web(dom): + results = [] + + # parse results + for result in eval_xpath(dom, results_xpath): + links = eval_xpath(result, link_xpath) + if not links: + continue + link = links[0] + url = link.attrib.get('href') + + # block google-ad url's + if re.match(r"^http(s|)://(www\.)?google\.[a-z]+/aclk.*$", url): + continue + + # block startpage search url's + if re.match(r"^http(s|)://(www\.)?startpage\.com/do/search\?.*$", url): + continue + + title = extract_text(link) + + if eval_xpath(result, content_xpath): + content: str = extract_text(eval_xpath(result, content_xpath)) # type: ignore + else: + content = '' + + published_date = None + + # check if search result starts with something like: "2 Sep 2014 ... " + if re.match(r"^([1-9]|[1-2][0-9]|3[0-1]) [A-Z][a-z]{2} [0-9]{4} \.\.\. ", content): + date_pos = content.find('...') + 4 + date_string = content[0 : date_pos - 5] + # fix content string + content = content[date_pos:] + + try: + published_date = dateutil.parser.parse(date_string, dayfirst=True) + except ValueError: + pass + + # check if search result starts with something like: "5 days ago ... " + elif re.match(r"^[0-9]+ days? ago \.\.\. ", content): + date_pos = content.find('...') + 4 + date_string = content[0 : date_pos - 5] + + # calculate datetime + published_date = datetime.now() - timedelta(days=int(re.match(r'\d+', date_string).group())) # type: ignore + + # fix content string + content = content[date_pos:] + + if published_date: + # append result + results.append({'url': url, 'title': title, 'content': content, 'publishedDate': published_date}) + else: + # append result + results.append({'url': url, 'title': title, 'content': content}) + + # return results + return results + + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch :ref:`languages <startpage languages>` and :ref:`regions <startpage + regions>` from Startpage.""" + # pylint: disable=too-many-branches + + headers = { + 'User-Agent': gen_useragent(), + 'Accept-Language': "en-US,en;q=0.5", # bing needs to set the English language + } + resp = get('https://www.startpage.com/do/settings', headers=headers) + + if not resp.ok: # type: ignore + print("ERROR: response from Startpage is not OK.") + + dom = lxml.html.fromstring(resp.text) # type: ignore + + # regions + + sp_region_names = [] + for option in dom.xpath('//form[@name="settings"]//select[@name="search_results_region"]/option'): + sp_region_names.append(option.get('value')) + + for eng_tag in sp_region_names: + if eng_tag == 'all': + continue + babel_region_tag = {'no_NO': 'nb_NO'}.get(eng_tag, eng_tag) # norway + + if '-' in babel_region_tag: + l, r = babel_region_tag.split('-') + r = r.split('_')[-1] + sxng_tag = region_tag(babel.Locale.parse(l + '_' + r, sep='_')) + + else: + try: + sxng_tag = region_tag(babel.Locale.parse(babel_region_tag, sep='_')) + + except babel.UnknownLocaleError: + print("ERROR: can't determine babel locale of startpage's locale %s" % eng_tag) + continue + + conflict = engine_traits.regions.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + engine_traits.regions[sxng_tag] = eng_tag + + # languages + + catalog_engine2code = {name.lower(): lang_code for lang_code, name in babel.Locale('en').languages.items()} + + # get the native name of every language known by babel + + for lang_code in filter( + lambda lang_code: lang_code.find('_') == -1, babel.localedata.locale_identifiers() # type: ignore + ): + native_name = babel.Locale(lang_code).get_language_name().lower() # type: ignore + # add native name exactly as it is + catalog_engine2code[native_name] = lang_code + + # add "normalized" language name (i.e. français becomes francais and español becomes espanol) + unaccented_name = ''.join(filter(lambda c: not combining(c), normalize('NFKD', native_name))) + if len(unaccented_name) == len(unaccented_name.encode()): + # add only if result is ascii (otherwise "normalization" didn't work) + catalog_engine2code[unaccented_name] = lang_code + + # values that can't be determined by babel's languages names + + catalog_engine2code.update( + { + # traditional chinese used in .. + 'fantizhengwen': 'zh_Hant', + # Korean alphabet + 'hangul': 'ko', + # Malayalam is one of 22 scheduled languages of India. + 'malayam': 'ml', + 'norsk': 'nb', + 'sinhalese': 'si', + } + ) + + skip_eng_tags = { + 'english_uk', # SearXNG lang 'en' already maps to 'english' + } + + for option in dom.xpath('//form[@name="settings"]//select[@name="language"]/option'): + + eng_tag = option.get('value') + if eng_tag in skip_eng_tags: + continue + name = extract_text(option).lower() # type: ignore + + sxng_tag = catalog_engine2code.get(eng_tag) + if sxng_tag is None: + sxng_tag = catalog_engine2code[name] + + conflict = engine_traits.languages.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + engine_traits.languages[sxng_tag] = eng_tag
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/tineye.html b/_modules/searx/engines/tineye.html new file mode 100644 index 000000000..1cbbc11fd --- /dev/null +++ b/_modules/searx/engines/tineye.html @@ -0,0 +1,337 @@ + + + + + + + + searx.engines.tineye — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.tineye

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This engine implements *Tineye - reverse image search*
+
+Using TinEye, you can search by image or perform what we call a reverse image
+search.  You can do that by uploading an image or searching by URL. You can also
+simply drag and drop your images to start your search.  TinEye constantly crawls
+the web and adds images to its index.  Today, the TinEye index is over 50.2
+billion images `[tineye.com] <https://tineye.com/how>`_.
+
+.. hint::
+
+   This SearXNG engine only supports *'searching by URL'* and it does not use
+   the official API `[api.tineye.com] <https://api.tineye.com/python/docs/>`_.
+
+"""
+
+from urllib.parse import urlencode
+from datetime import datetime
+from flask_babel import gettext
+
+about = {
+    "website": 'https://tineye.com',
+    "wikidata_id": 'Q2382535',
+    "official_api_documentation": 'https://api.tineye.com/python/docs/',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+engine_type = 'online_url_search'
+""":py:obj:`searx.search.processors.online_url_search`"""
+
+categories = ['general']
+paging = True
+safesearch = False
+base_url = 'https://tineye.com'
+search_string = '/result_json/?page={page}&{query}'
+
+FORMAT_NOT_SUPPORTED = gettext(
+    "Could not read that image url. This may be due to an unsupported file"
+    " format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or WebP."
+)
+"""TinEye error message"""
+
+NO_SIGNATURE_ERROR = gettext(
+    "The image is too simple to find matches. TinEye requires a basic level of"
+    " visual detail to successfully identify matches."
+)
+"""TinEye error message"""
+
+DOWNLOAD_ERROR = gettext("The image could not be downloaded.")
+"""TinEye error message"""
+
+
+
[docs]def request(query, params): + """Build TinEye HTTP request using ``search_urls`` of a :py:obj:`engine_type`.""" + + params['raise_for_httperror'] = False + + if params['search_urls']['data:image']: + query = params['search_urls']['data:image'] + elif params['search_urls']['http']: + query = params['search_urls']['http'] + + logger.debug("query URL: %s", query) + query = urlencode({'url': query}) + + # see https://github.com/TinEye/pytineye/blob/main/pytineye/api.py + params['url'] = base_url + search_string.format(query=query, page=params['pageno']) + + params['headers'].update( + { + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, defalte, br', + 'Host': 'tineye.com', + 'DNT': '1', + 'TE': 'trailers', + } + ) + return params
+ + +
[docs]def parse_tineye_match(match_json): + """Takes parsed JSON from the API server and turns it into a :py:obj:`dict` + object. + + Attributes `(class Match) <https://github.com/TinEye/pytineye/blob/main/pytineye/api.py>`__ + + - `image_url`, link to the result image. + - `domain`, domain this result was found on. + - `score`, a number (0 to 100) that indicates how closely the images match. + - `width`, image width in pixels. + - `height`, image height in pixels. + - `size`, image area in pixels. + - `format`, image format. + - `filesize`, image size in bytes. + - `overlay`, overlay URL. + - `tags`, whether this match belongs to a collection or stock domain. + + - `backlinks`, a list of Backlink objects pointing to the original websites + and image URLs. List items are instances of :py:obj:`dict`, (`Backlink + <https://github.com/TinEye/pytineye/blob/main/pytineye/api.py>`__): + + - `url`, the image URL to the image. + - `backlink`, the original website URL. + - `crawl_date`, the date the image was crawled. + + """ + + # HINT: there exists an alternative backlink dict in the domains list / e.g.:: + # + # match_json['domains'][0]['backlinks'] + + backlinks = [] + if "backlinks" in match_json: + + for backlink_json in match_json["backlinks"]: + if not isinstance(backlink_json, dict): + continue + + crawl_date = backlink_json.get("crawl_date") + if crawl_date: + crawl_date = datetime.fromisoformat(crawl_date[:-3]) + else: + crawl_date = datetime.min + + backlinks.append( + { + 'url': backlink_json.get("url"), + 'backlink': backlink_json.get("backlink"), + 'crawl_date': crawl_date, + 'image_name': backlink_json.get("image_name"), + } + ) + + return { + 'image_url': match_json.get("image_url"), + 'domain': match_json.get("domain"), + 'score': match_json.get("score"), + 'width': match_json.get("width"), + 'height': match_json.get("height"), + 'size': match_json.get("size"), + 'image_format': match_json.get("format"), + 'filesize': match_json.get("filesize"), + 'overlay': match_json.get("overlay"), + 'tags': match_json.get("tags"), + 'backlinks': backlinks, + }
+ + +
[docs]def response(resp): + """Parse HTTP response from TinEye.""" + results = [] + + try: + json_data = resp.json() + except Exception as exc: # pylint: disable=broad-except + msg = "can't parse JSON response // %s" % exc + logger.error(msg) + json_data = {'error': msg} + + # handle error codes from Tineye + + if resp.is_error: + if resp.status_code in (400, 422): + + message = 'HTTP status: %s' % resp.status_code + error = json_data.get('error') + s_key = json_data.get('suggestions', {}).get('key', '') + + if error and s_key: + message = "%s (%s)" % (error, s_key) + elif error: + message = error + + if s_key == "Invalid image URL": + # test https://docs.searxng.org/_static/searxng-wordmark.svg + message = FORMAT_NOT_SUPPORTED + elif s_key == 'NO_SIGNATURE_ERROR': + # test https://pngimg.com/uploads/dot/dot_PNG4.png + message = NO_SIGNATURE_ERROR + elif s_key == 'Download Error': + # test https://notexists + message = DOWNLOAD_ERROR + + # see https://github.com/searxng/searxng/pull/1456#issuecomment-1193105023 + # results.append({'answer': message}) + logger.error(message) + + return results + + resp.raise_for_status() + + # append results from matches + + for match_json in json_data['matches']: + + tineye_match = parse_tineye_match(match_json) + if not tineye_match['backlinks']: + continue + + backlink = tineye_match['backlinks'][0] + results.append( + { + 'template': 'images.html', + 'url': backlink['backlink'], + 'thumbnail_src': tineye_match['image_url'], + 'source': backlink['url'], + 'title': backlink['image_name'], + 'img_src': backlink['url'], + 'format': tineye_match['image_format'], + 'widht': tineye_match['width'], + 'height': tineye_match['height'], + 'publishedDate': backlink['crawl_date'], + } + ) + + # append number of results + + number_of_results = json_data.get('num_matches') + if number_of_results: + results.append({'number_of_results': number_of_results}) + + return results
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/torznab.html b/_modules/searx/engines/torznab.html new file mode 100644 index 000000000..840a94ba5 --- /dev/null +++ b/_modules/searx/engines/torznab.html @@ -0,0 +1,355 @@ + + + + + + + + searx.engines.torznab — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.torznab

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Torznab_ is an API specification that provides a standardized way to query
+torrent site for content. It is used by a number of torrent applications,
+including Prowlarr_ and Jackett_.
+
+Using this engine together with Prowlarr_ or Jackett_ allows you to search
+a huge number of torrent sites which are not directly supported.
+
+Configuration
+=============
+
+The engine has the following settings:
+
+``base_url``:
+  Torznab endpoint URL.
+
+``api_key``:
+  The API key to use for authentication.
+
+``torznab_categories``:
+  The categories to use for searching. This is a list of category IDs.  See
+  Prowlarr-categories_ or Jackett-categories_ for more information.
+
+``show_torrent_files``:
+  Whether to show the torrent file in the search results.  Be carful as using
+  this with Prowlarr_ or Jackett_ leaks the API key.  This should be used only
+  if you are querying a Torznab endpoint without authentication or if the
+  instance is private.  Be aware that private trackers may ban you if you share
+  the torrent file.  Defaults to ``false``.
+
+``show_magnet_links``:
+  Whether to show the magnet link in the search results.  Be aware that private
+  trackers may ban you if you share the magnet link.  Defaults to ``true``.
+
+.. _Torznab:
+   https://torznab.github.io/spec-1.3-draft/index.html
+.. _Prowlarr:
+   https://github.com/Prowlarr/Prowlarr
+.. _Jackett:
+   https://github.com/Jackett/Jackett
+.. _Prowlarr-categories:
+   https://wiki.servarr.com/en/prowlarr/cardigann-yml-definition#categories
+.. _Jackett-categories:
+   https://github.com/Jackett/Jackett/wiki/Jackett-Categories
+
+Implementations
+===============
+
+"""
+from __future__ import annotations
+from typing import TYPE_CHECKING
+
+from typing import List, Dict, Any
+from datetime import datetime
+from urllib.parse import quote
+from lxml import etree  # type: ignore
+
+from searx.exceptions import SearxEngineAPIException
+
+if TYPE_CHECKING:
+    import httpx
+    import logging
+
+    logger: logging.Logger
+
+# engine settings
+about: Dict[str, Any] = {
+    "website": None,
+    "wikidata_id": None,
+    "official_api_documentation": "https://torznab.github.io/spec-1.3-draft",
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'XML',
+}
+categories: List[str] = ['files']
+paging: bool = False
+time_range_support: bool = False
+
+# defined in settings.yml
+# example (Jackett): "http://localhost:9117/api/v2.0/indexers/all/results/torznab"
+base_url: str = ''
+api_key: str = ''
+# https://newznab.readthedocs.io/en/latest/misc/api/#predefined-categories
+torznab_categories: List[str] = []
+show_torrent_files: bool = False
+show_magnet_links: bool = True
+
+
+
[docs]def init(engine_settings=None): # pylint: disable=unused-argument + """Initialize the engine.""" + if len(base_url) < 1: + raise ValueError('missing torznab base_url')
+ + +
[docs]def request(query: str, params: Dict[str, Any]) -> Dict[str, Any]: + """Build the request params.""" + search_url: str = base_url + '?t=search&q={search_query}' + + if len(api_key) > 0: + search_url += '&apikey={api_key}' + if len(torznab_categories) > 0: + search_url += '&cat={torznab_categories}' + + params['url'] = search_url.format( + search_query=quote(query), api_key=api_key, torznab_categories=",".join([str(x) for x in torznab_categories]) + ) + + return params
+ + +
[docs]def response(resp: httpx.Response) -> List[Dict[str, Any]]: + """Parse the XML response and return a list of results.""" + results = [] + search_results = etree.XML(resp.content) + + # handle errors: https://newznab.readthedocs.io/en/latest/misc/api/#newznab-error-codes + if search_results.tag == "error": + raise SearxEngineAPIException(search_results.get("description")) + + channel: etree.Element = search_results[0] + + item: etree.Element + for item in channel.iterfind('item'): + result: Dict[str, Any] = build_result(item) + results.append(result) + + return results
+ + +
[docs]def build_result(item: etree.Element) -> Dict[str, Any]: + """Build a result from a XML item.""" + + # extract attributes from XML + # see https://torznab.github.io/spec-1.3-draft/torznab/Specification-v1.3.html#predefined-attributes + enclosure: etree.Element | None = item.find('enclosure') + enclosure_url: str | None = None + if enclosure is not None: + enclosure_url = enclosure.get('url') + + size = get_attribute(item, 'size') + if not size and enclosure: + size = enclosure.get('length') + if size: + size = int(size) + + guid = get_attribute(item, 'guid') + comments = get_attribute(item, 'comments') + pubDate = get_attribute(item, 'pubDate') + seeders = get_torznab_attribute(item, 'seeders') + leechers = get_torznab_attribute(item, 'leechers') + peers = get_torznab_attribute(item, 'peers') + + # map attributes to searx result + result: Dict[str, Any] = { + 'template': 'torrent.html', + 'title': get_attribute(item, 'title'), + 'filesize': size, + 'files': get_attribute(item, 'files'), + 'seed': seeders, + 'leech': _map_leechers(leechers, seeders, peers), + 'url': _map_result_url(guid, comments), + 'publishedDate': _map_published_date(pubDate), + 'torrentfile': None, + 'magnetlink': None, + } + + link = get_attribute(item, 'link') + if show_torrent_files: + result['torrentfile'] = _map_torrent_file(link, enclosure_url) + if show_magnet_links: + magneturl = get_torznab_attribute(item, 'magneturl') + result['magnetlink'] = _map_magnet_link(magneturl, guid, enclosure_url, link) + return result
+ + +def _map_result_url(guid: str | None, comments: str | None) -> str | None: + if guid and guid.startswith('http'): + return guid + if comments and comments.startswith('http'): + return comments + return None + + +def _map_leechers(leechers: str | None, seeders: str | None, peers: str | None) -> str | None: + if leechers: + return leechers + if seeders and peers: + return str(int(peers) - int(seeders)) + return None + + +def _map_published_date(pubDate: str | None) -> datetime | None: + if pubDate is not None: + try: + return datetime.strptime(pubDate, '%a, %d %b %Y %H:%M:%S %z') + except (ValueError, TypeError) as e: + logger.debug("ignore exception (publishedDate): %s", e) + return None + + +def _map_torrent_file(link: str | None, enclosure_url: str | None) -> str | None: + if link and link.startswith('http'): + return link + if enclosure_url and enclosure_url.startswith('http'): + return enclosure_url + return None + + +def _map_magnet_link( + magneturl: str | None, + guid: str | None, + enclosure_url: str | None, + link: str | None, +) -> str | None: + if magneturl and magneturl.startswith('magnet'): + return magneturl + if guid and guid.startswith('magnet'): + return guid + if enclosure_url and enclosure_url.startswith('magnet'): + return enclosure_url + if link and link.startswith('magnet'): + return link + return None + + +
[docs]def get_attribute(item: etree.Element, property_name: str) -> str | None: + """Get attribute from item.""" + property_element: etree.Element | None = item.find(property_name) + if property_element is not None: + return property_element.text + return None
+ + +
[docs]def get_torznab_attribute(item: etree.Element, attribute_name: str) -> str | None: + """Get torznab special attribute from item.""" + element: etree.Element | None = item.find( + './/torznab:attr[@name="{attribute_name}"]'.format(attribute_name=attribute_name), + {'torznab': 'http://torznab.com/schemas/2015/feed'}, + ) + if element is not None: + return element.get("value") + return None
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/wikidata.html b/_modules/searx/engines/wikidata.html new file mode 100644 index 000000000..0a6a02327 --- /dev/null +++ b/_modules/searx/engines/wikidata.html @@ -0,0 +1,895 @@ + + + + + + + + searx.engines.wikidata — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.wikidata

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This module implements the Wikidata engine.  Some implementations are shared
+from :ref:`wikipedia engine`.
+
+"""
+# pylint: disable=missing-class-docstring
+
+from typing import TYPE_CHECKING
+from hashlib import md5
+from urllib.parse import urlencode, unquote
+from json import loads
+
+from dateutil.parser import isoparse
+from babel.dates import format_datetime, format_date, format_time, get_datetime_format
+
+from searx.data import WIKIDATA_UNITS
+from searx.network import post, get
+from searx.utils import searx_useragent, get_string_replaces_function
+from searx.external_urls import get_external_url, get_earth_coordinates_url, area_to_osm_zoom
+from searx.engines.wikipedia import (
+    fetch_wikimedia_traits,
+    get_wiki_params,
+)
+from searx.enginelib.traits import EngineTraits
+
+if TYPE_CHECKING:
+    import logging
+
+    logger: logging.Logger
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://wikidata.org/',
+    "wikidata_id": 'Q2013',
+    "official_api_documentation": 'https://query.wikidata.org/',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+# SPARQL
+SPARQL_ENDPOINT_URL = 'https://query.wikidata.org/sparql'
+SPARQL_EXPLAIN_URL = 'https://query.wikidata.org/bigdata/namespace/wdq/sparql?explain'
+WIKIDATA_PROPERTIES = {
+    'P434': 'MusicBrainz',
+    'P435': 'MusicBrainz',
+    'P436': 'MusicBrainz',
+    'P966': 'MusicBrainz',
+    'P345': 'IMDb',
+    'P2397': 'YouTube',
+    'P1651': 'YouTube',
+    'P2002': 'Twitter',
+    'P2013': 'Facebook',
+    'P2003': 'Instagram',
+}
+
+# SERVICE wikibase:mwapi : https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI
+# SERVICE wikibase:label: https://en.wikibooks.org/wiki/SPARQL/SERVICE_-_Label#Manual_Label_SERVICE
+# https://en.wikibooks.org/wiki/SPARQL/WIKIDATA_Precision,_Units_and_Coordinates
+# https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Data_model
+# optimization:
+# * https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/query_optimization
+# * https://github.com/blazegraph/database/wiki/QueryHints
+QUERY_TEMPLATE = """
+SELECT ?item ?itemLabel ?itemDescription ?lat ?long %SELECT%
+WHERE
+{
+  SERVICE wikibase:mwapi {
+        bd:serviceParam wikibase:endpoint "www.wikidata.org";
+        wikibase:api "EntitySearch";
+        wikibase:limit 1;
+        mwapi:search "%QUERY%";
+        mwapi:language "%LANGUAGE%".
+        ?item wikibase:apiOutputItem mwapi:item.
+  }
+  hint:Prior hint:runFirst "true".
+
+  %WHERE%
+
+  SERVICE wikibase:label {
+      bd:serviceParam wikibase:language "%LANGUAGE%,en".
+      ?item rdfs:label ?itemLabel .
+      ?item schema:description ?itemDescription .
+      %WIKIBASE_LABELS%
+  }
+
+}
+GROUP BY ?item ?itemLabel ?itemDescription ?lat ?long %GROUP_BY%
+"""
+
+# Get the calendar names and the property names
+QUERY_PROPERTY_NAMES = """
+SELECT ?item ?name
+WHERE {
+    {
+      SELECT ?item
+      WHERE { ?item wdt:P279* wd:Q12132 }
+    } UNION {
+      VALUES ?item { %ATTRIBUTES% }
+    }
+    OPTIONAL { ?item rdfs:label ?name. }
+}
+"""
+
+# see the property "dummy value" of https://www.wikidata.org/wiki/Q2013 (Wikidata)
+# hard coded here to avoid to an additional SPARQL request when the server starts
+DUMMY_ENTITY_URLS = set(
+    "http://www.wikidata.org/entity/" + wid for wid in ("Q4115189", "Q13406268", "Q15397819", "Q17339402")
+)
+
+
+# https://www.w3.org/TR/sparql11-query/#rSTRING_LITERAL1
+# https://lists.w3.org/Archives/Public/public-rdf-dawg/2011OctDec/0175.html
+sparql_string_escape = get_string_replaces_function(
+    # fmt: off
+    {
+        '\t': '\\\t',
+        '\n': '\\\n',
+        '\r': '\\\r',
+        '\b': '\\\b',
+        '\f': '\\\f',
+        '\"': '\\\"',
+        '\'': '\\\'',
+        '\\': '\\\\'
+    }
+    # fmt: on
+)
+
+replace_http_by_https = get_string_replaces_function({'http:': 'https:'})
+
+
+def get_headers():
+    # user agent: https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual#Query_limits
+    return {'Accept': 'application/sparql-results+json', 'User-Agent': searx_useragent()}
+
+
+def get_label_for_entity(entity_id, language):
+    name = WIKIDATA_PROPERTIES.get(entity_id)
+    if name is None:
+        name = WIKIDATA_PROPERTIES.get((entity_id, language))
+    if name is None:
+        name = WIKIDATA_PROPERTIES.get((entity_id, language.split('-')[0]))
+    if name is None:
+        name = WIKIDATA_PROPERTIES.get((entity_id, 'en'))
+    if name is None:
+        name = entity_id
+    return name
+
+
+def send_wikidata_query(query, method='GET'):
+    if method == 'GET':
+        # query will be cached by wikidata
+        http_response = get(SPARQL_ENDPOINT_URL + '?' + urlencode({'query': query}), headers=get_headers())
+    else:
+        # query won't be cached by wikidata
+        http_response = post(SPARQL_ENDPOINT_URL, data={'query': query}, headers=get_headers())
+    if http_response.status_code != 200:
+        logger.debug('SPARQL endpoint error %s', http_response.content.decode())
+    logger.debug('request time %s', str(http_response.elapsed))
+    http_response.raise_for_status()
+    return loads(http_response.content.decode())
+
+
+def request(query, params):
+
+    eng_tag, _wiki_netloc = get_wiki_params(params['searxng_locale'], traits)
+    query, attributes = get_query(query, eng_tag)
+    logger.debug("request --> language %s // len(attributes): %s", eng_tag, len(attributes))
+
+    params['method'] = 'POST'
+    params['url'] = SPARQL_ENDPOINT_URL
+    params['data'] = {'query': query}
+    params['headers'] = get_headers()
+    params['language'] = eng_tag
+    params['attributes'] = attributes
+
+    return params
+
+
+def response(resp):
+
+    results = []
+    jsonresponse = loads(resp.content.decode())
+
+    language = resp.search_params['language']
+    attributes = resp.search_params['attributes']
+    logger.debug("request --> language %s // len(attributes): %s", language, len(attributes))
+
+    seen_entities = set()
+    for result in jsonresponse.get('results', {}).get('bindings', []):
+        attribute_result = {key: value['value'] for key, value in result.items()}
+        entity_url = attribute_result['item']
+        if entity_url not in seen_entities and entity_url not in DUMMY_ENTITY_URLS:
+            seen_entities.add(entity_url)
+            results += get_results(attribute_result, attributes, language)
+        else:
+            logger.debug('The SPARQL request returns duplicate entities: %s', str(attribute_result))
+
+    return results
+
+
+_IMG_SRC_DEFAULT_URL_PREFIX = "https://commons.wikimedia.org/wiki/Special:FilePath/"
+_IMG_SRC_NEW_URL_PREFIX = "https://upload.wikimedia.org/wikipedia/commons/thumb/"
+
+
+
[docs]def get_thumbnail(img_src): + """Get Thumbnail image from wikimedia commons + + Images from commons.wikimedia.org are (HTTP) redirected to + upload.wikimedia.org. The redirected URL can be calculated by this + function. + + - https://stackoverflow.com/a/33691240 + + """ + logger.debug('get_thumbnail(): %s', img_src) + if not img_src is None and _IMG_SRC_DEFAULT_URL_PREFIX in img_src.split()[0]: + img_src_name = unquote(img_src.replace(_IMG_SRC_DEFAULT_URL_PREFIX, "").split("?", 1)[0].replace("%20", "_")) + img_src_name_first = img_src_name + img_src_name_second = img_src_name + + if ".svg" in img_src_name.split()[0]: + img_src_name_second = img_src_name + ".png" + + img_src_size = img_src.replace(_IMG_SRC_DEFAULT_URL_PREFIX, "").split("?", 1)[1] + img_src_size = img_src_size[img_src_size.index("=") + 1 : img_src_size.index("&")] + img_src_name_md5 = md5(img_src_name.encode("utf-8")).hexdigest() + img_src = ( + _IMG_SRC_NEW_URL_PREFIX + + img_src_name_md5[0] + + "/" + + img_src_name_md5[0:2] + + "/" + + img_src_name_first + + "/" + + img_src_size + + "px-" + + img_src_name_second + ) + logger.debug('get_thumbnail() redirected: %s', img_src) + + return img_src
+ + +def get_results(attribute_result, attributes, language): + # pylint: disable=too-many-branches + results = [] + infobox_title = attribute_result.get('itemLabel') + infobox_id = attribute_result['item'] + infobox_id_lang = None + infobox_urls = [] + infobox_attributes = [] + infobox_content = attribute_result.get('itemDescription', []) + img_src = None + img_src_priority = 0 + + for attribute in attributes: + value = attribute.get_str(attribute_result, language) + if value is not None and value != '': + attribute_type = type(attribute) + + if attribute_type in (WDURLAttribute, WDArticle): + # get_select() method : there is group_concat(distinct ...;separator=", ") + # split the value here + for url in value.split(', '): + infobox_urls.append({'title': attribute.get_label(language), 'url': url, **attribute.kwargs}) + # "normal" results (not infobox) include official website and Wikipedia links. + if attribute.kwargs.get('official') or attribute_type == WDArticle: + results.append({'title': infobox_title, 'url': url, "content": infobox_content}) + # update the infobox_id with the wikipedia URL + # first the local wikipedia URL, and as fallback the english wikipedia URL + if attribute_type == WDArticle and ( + (attribute.language == 'en' and infobox_id_lang is None) or attribute.language != 'en' + ): + infobox_id_lang = attribute.language + infobox_id = url + elif attribute_type == WDImageAttribute: + # this attribute is an image. + # replace the current image only the priority is lower + # (the infobox contain only one image). + if attribute.priority > img_src_priority: + img_src = get_thumbnail(value) + img_src_priority = attribute.priority + elif attribute_type == WDGeoAttribute: + # geocoordinate link + # use the area to get the OSM zoom + # Note: ignre the unit (must be km² otherwise the calculation is wrong) + # Should use normalized value p:P2046/psn:P2046/wikibase:quantityAmount + area = attribute_result.get('P2046') + osm_zoom = area_to_osm_zoom(area) if area else 19 + url = attribute.get_geo_url(attribute_result, osm_zoom=osm_zoom) + if url: + infobox_urls.append({'title': attribute.get_label(language), 'url': url, 'entity': attribute.name}) + else: + infobox_attributes.append( + {'label': attribute.get_label(language), 'value': value, 'entity': attribute.name} + ) + + if infobox_id: + infobox_id = replace_http_by_https(infobox_id) + + # add the wikidata URL at the end + infobox_urls.append({'title': 'Wikidata', 'url': attribute_result['item']}) + + if img_src is None and len(infobox_attributes) == 0 and len(infobox_urls) == 1 and len(infobox_content) == 0: + results.append({'url': infobox_urls[0]['url'], 'title': infobox_title, 'content': infobox_content}) + else: + results.append( + { + 'infobox': infobox_title, + 'id': infobox_id, + 'content': infobox_content, + 'img_src': img_src, + 'urls': infobox_urls, + 'attributes': infobox_attributes, + } + ) + return results + + +def get_query(query, language): + attributes = get_attributes(language) + select = [a.get_select() for a in attributes] + where = list(filter(lambda s: len(s) > 0, [a.get_where() for a in attributes])) + wikibase_label = list(filter(lambda s: len(s) > 0, [a.get_wikibase_label() for a in attributes])) + group_by = list(filter(lambda s: len(s) > 0, [a.get_group_by() for a in attributes])) + query = ( + QUERY_TEMPLATE.replace('%QUERY%', sparql_string_escape(query)) + .replace('%SELECT%', ' '.join(select)) + .replace('%WHERE%', '\n '.join(where)) + .replace('%WIKIBASE_LABELS%', '\n '.join(wikibase_label)) + .replace('%GROUP_BY%', ' '.join(group_by)) + .replace('%LANGUAGE%', language) + ) + return query, attributes + + +def get_attributes(language): + # pylint: disable=too-many-statements + attributes = [] + + def add_value(name): + attributes.append(WDAttribute(name)) + + def add_amount(name): + attributes.append(WDAmountAttribute(name)) + + def add_label(name): + attributes.append(WDLabelAttribute(name)) + + def add_url(name, url_id=None, **kwargs): + attributes.append(WDURLAttribute(name, url_id, kwargs)) + + def add_image(name, url_id=None, priority=1): + attributes.append(WDImageAttribute(name, url_id, priority)) + + def add_date(name): + attributes.append(WDDateAttribute(name)) + + # Dates + for p in [ + 'P571', # inception date + 'P576', # dissolution date + 'P580', # start date + 'P582', # end date + 'P569', # date of birth + 'P570', # date of death + 'P619', # date of spacecraft launch + 'P620', + ]: # date of spacecraft landing + add_date(p) + + for p in [ + 'P27', # country of citizenship + 'P495', # country of origin + 'P17', # country + 'P159', + ]: # headquarters location + add_label(p) + + # Places + for p in [ + 'P36', # capital + 'P35', # head of state + 'P6', # head of government + 'P122', # basic form of government + 'P37', + ]: # official language + add_label(p) + + add_value('P1082') # population + add_amount('P2046') # area + add_amount('P281') # postal code + add_label('P38') # currency + add_amount('P2048') # height (building) + + # Media + for p in [ + 'P400', # platform (videogames, computing) + 'P50', # author + 'P170', # creator + 'P57', # director + 'P175', # performer + 'P178', # developer + 'P162', # producer + 'P176', # manufacturer + 'P58', # screenwriter + 'P272', # production company + 'P264', # record label + 'P123', # publisher + 'P449', # original network + 'P750', # distributed by + 'P86', + ]: # composer + add_label(p) + + add_date('P577') # publication date + add_label('P136') # genre (music, film, artistic...) + add_label('P364') # original language + add_value('P212') # ISBN-13 + add_value('P957') # ISBN-10 + add_label('P275') # copyright license + add_label('P277') # programming language + add_value('P348') # version + add_label('P840') # narrative location + + # Languages + add_value('P1098') # number of speakers + add_label('P282') # writing system + add_label('P1018') # language regulatory body + add_value('P218') # language code (ISO 639-1) + + # Other + add_label('P169') # ceo + add_label('P112') # founded by + add_label('P1454') # legal form (company, organization) + add_label('P137') # operator (service, facility, ...) + add_label('P1029') # crew members (tripulation) + add_label('P225') # taxon name + add_value('P274') # chemical formula + add_label('P1346') # winner (sports, contests, ...) + add_value('P1120') # number of deaths + add_value('P498') # currency code (ISO 4217) + + # URL + add_url('P856', official=True) # official website + attributes.append(WDArticle(language)) # wikipedia (user language) + if not language.startswith('en'): + attributes.append(WDArticle('en')) # wikipedia (english) + + add_url('P1324') # source code repository + add_url('P1581') # blog + add_url('P434', url_id='musicbrainz_artist') + add_url('P435', url_id='musicbrainz_work') + add_url('P436', url_id='musicbrainz_release_group') + add_url('P966', url_id='musicbrainz_label') + add_url('P345', url_id='imdb_id') + add_url('P2397', url_id='youtube_channel') + add_url('P1651', url_id='youtube_video') + add_url('P2002', url_id='twitter_profile') + add_url('P2013', url_id='facebook_profile') + add_url('P2003', url_id='instagram_profile') + + # Map + attributes.append(WDGeoAttribute('P625')) + + # Image + add_image('P15', priority=1, url_id='wikimedia_image') # route map + add_image('P242', priority=2, url_id='wikimedia_image') # locator map + add_image('P154', priority=3, url_id='wikimedia_image') # logo + add_image('P18', priority=4, url_id='wikimedia_image') # image + add_image('P41', priority=5, url_id='wikimedia_image') # flag + add_image('P2716', priority=6, url_id='wikimedia_image') # collage + add_image('P2910', priority=7, url_id='wikimedia_image') # icon + + return attributes + + +class WDAttribute: + __slots__ = ('name',) + + def __init__(self, name): + self.name = name + + def get_select(self): + return '(group_concat(distinct ?{name};separator=", ") as ?{name}s)'.replace('{name}', self.name) + + def get_label(self, language): + return get_label_for_entity(self.name, language) + + def get_where(self): + return "OPTIONAL { ?item wdt:{name} ?{name} . }".replace('{name}', self.name) + + def get_wikibase_label(self): + return "" + + def get_group_by(self): + return "" + + def get_str(self, result, language): # pylint: disable=unused-argument + return result.get(self.name + 's') + + def __repr__(self): + return '<' + str(type(self).__name__) + ':' + self.name + '>' + + +class WDAmountAttribute(WDAttribute): + def get_select(self): + return '?{name} ?{name}Unit'.replace('{name}', self.name) + + def get_where(self): + return """ OPTIONAL { ?item p:{name} ?{name}Node . + ?{name}Node rdf:type wikibase:BestRank ; ps:{name} ?{name} . + OPTIONAL { ?{name}Node psv:{name}/wikibase:quantityUnit ?{name}Unit. } }""".replace( + '{name}', self.name + ) + + def get_group_by(self): + return self.get_select() + + def get_str(self, result, language): + value = result.get(self.name) + unit = result.get(self.name + "Unit") + if unit is not None: + unit = unit.replace('http://www.wikidata.org/entity/', '') + return value + " " + get_label_for_entity(unit, language) + return value + + +class WDArticle(WDAttribute): + + __slots__ = 'language', 'kwargs' + + def __init__(self, language, kwargs=None): + super().__init__('wikipedia') + self.language = language + self.kwargs = kwargs or {} + + def get_label(self, language): + # language parameter is ignored + return "Wikipedia ({language})".replace('{language}', self.language) + + def get_select(self): + return "?article{language} ?articleName{language}".replace('{language}', self.language) + + def get_where(self): + return """OPTIONAL { ?article{language} schema:about ?item ; + schema:inLanguage "{language}" ; + schema:isPartOf <https://{language}.wikipedia.org/> ; + schema:name ?articleName{language} . }""".replace( + '{language}', self.language + ) + + def get_group_by(self): + return self.get_select() + + def get_str(self, result, language): + key = 'article{language}'.replace('{language}', self.language) + return result.get(key) + + +class WDLabelAttribute(WDAttribute): + def get_select(self): + return '(group_concat(distinct ?{name}Label;separator=", ") as ?{name}Labels)'.replace('{name}', self.name) + + def get_where(self): + return "OPTIONAL { ?item wdt:{name} ?{name} . }".replace('{name}', self.name) + + def get_wikibase_label(self): + return "?{name} rdfs:label ?{name}Label .".replace('{name}', self.name) + + def get_str(self, result, language): + return result.get(self.name + 'Labels') + + +class WDURLAttribute(WDAttribute): + + HTTP_WIKIMEDIA_IMAGE = 'http://commons.wikimedia.org/wiki/Special:FilePath/' + + __slots__ = 'url_id', 'kwargs' + + def __init__(self, name, url_id=None, kwargs=None): + super().__init__(name) + self.url_id = url_id + self.kwargs = kwargs + + def get_str(self, result, language): + value = result.get(self.name + 's') + if self.url_id and value is not None and value != '': + value = value.split(',')[0] + url_id = self.url_id + if value.startswith(WDURLAttribute.HTTP_WIKIMEDIA_IMAGE): + value = value[len(WDURLAttribute.HTTP_WIKIMEDIA_IMAGE) :] + url_id = 'wikimedia_image' + return get_external_url(url_id, value) + return value + + +class WDGeoAttribute(WDAttribute): + def get_label(self, language): + return "OpenStreetMap" + + def get_select(self): + return "?{name}Lat ?{name}Long".replace('{name}', self.name) + + def get_where(self): + return """OPTIONAL { ?item p:{name}/psv:{name} [ + wikibase:geoLatitude ?{name}Lat ; + wikibase:geoLongitude ?{name}Long ] }""".replace( + '{name}', self.name + ) + + def get_group_by(self): + return self.get_select() + + def get_str(self, result, language): + latitude = result.get(self.name + 'Lat') + longitude = result.get(self.name + 'Long') + if latitude and longitude: + return latitude + ' ' + longitude + return None + + def get_geo_url(self, result, osm_zoom=19): + latitude = result.get(self.name + 'Lat') + longitude = result.get(self.name + 'Long') + if latitude and longitude: + return get_earth_coordinates_url(latitude, longitude, osm_zoom) + return None + + +class WDImageAttribute(WDURLAttribute): + + __slots__ = ('priority',) + + def __init__(self, name, url_id=None, priority=100): + super().__init__(name, url_id) + self.priority = priority + + +class WDDateAttribute(WDAttribute): + def get_select(self): + return '?{name} ?{name}timePrecision ?{name}timeZone ?{name}timeCalendar'.replace('{name}', self.name) + + def get_where(self): + # To remove duplicate, add + # FILTER NOT EXISTS { ?item p:{name}/psv:{name}/wikibase:timeValue ?{name}bis FILTER (?{name}bis < ?{name}) } + # this filter is too slow, so the response function ignore duplicate results + # (see the seen_entities variable) + return """OPTIONAL { ?item p:{name}/psv:{name} [ + wikibase:timeValue ?{name} ; + wikibase:timePrecision ?{name}timePrecision ; + wikibase:timeTimezone ?{name}timeZone ; + wikibase:timeCalendarModel ?{name}timeCalendar ] . } + hint:Prior hint:rangeSafe true;""".replace( + '{name}', self.name + ) + + def get_group_by(self): + return self.get_select() + + def format_8(self, value, locale): # pylint: disable=unused-argument + # precision: less than a year + return value + + def format_9(self, value, locale): + year = int(value) + # precision: year + if year < 1584: + if year < 0: + return str(year - 1) + return str(year) + timestamp = isoparse(value) + return format_date(timestamp, format='yyyy', locale=locale) + + def format_10(self, value, locale): + # precision: month + timestamp = isoparse(value) + return format_date(timestamp, format='MMMM y', locale=locale) + + def format_11(self, value, locale): + # precision: day + timestamp = isoparse(value) + return format_date(timestamp, format='full', locale=locale) + + def format_13(self, value, locale): + timestamp = isoparse(value) + # precision: minute + return ( + get_datetime_format(format, locale=locale) + .replace("'", "") + .replace('{0}', format_time(timestamp, 'full', tzinfo=None, locale=locale)) + .replace('{1}', format_date(timestamp, 'short', locale=locale)) + ) + + def format_14(self, value, locale): + # precision: second. + return format_datetime(isoparse(value), format='full', locale=locale) + + DATE_FORMAT = { + '0': ('format_8', 1000000000), + '1': ('format_8', 100000000), + '2': ('format_8', 10000000), + '3': ('format_8', 1000000), + '4': ('format_8', 100000), + '5': ('format_8', 10000), + '6': ('format_8', 1000), + '7': ('format_8', 100), + '8': ('format_8', 10), + '9': ('format_9', 1), # year + '10': ('format_10', 1), # month + '11': ('format_11', 0), # day + '12': ('format_13', 0), # hour (not supported by babel, display minute) + '13': ('format_13', 0), # minute + '14': ('format_14', 0), # second + } + + def get_str(self, result, language): + value = result.get(self.name) + if value == '' or value is None: + return None + precision = result.get(self.name + 'timePrecision') + date_format = WDDateAttribute.DATE_FORMAT.get(precision) + if date_format is not None: + format_method = getattr(self, date_format[0]) + precision = date_format[1] + try: + if precision >= 1: + t = value.split('-') + if value.startswith('-'): + value = '-' + t[1] + else: + value = t[0] + return format_method(value, language) + except Exception: # pylint: disable=broad-except + return value + return value + + +def debug_explain_wikidata_query(query, method='GET'): + if method == 'GET': + http_response = get(SPARQL_EXPLAIN_URL + '&' + urlencode({'query': query}), headers=get_headers()) + else: + http_response = post(SPARQL_EXPLAIN_URL, data={'query': query}, headers=get_headers()) + http_response.raise_for_status() + return http_response.content + + +def init(engine_settings=None): # pylint: disable=unused-argument + # WIKIDATA_PROPERTIES : add unit symbols + WIKIDATA_PROPERTIES.update(WIKIDATA_UNITS) + + # WIKIDATA_PROPERTIES : add property labels + wikidata_property_names = [] + for attribute in get_attributes('en'): + if type(attribute) in (WDAttribute, WDAmountAttribute, WDURLAttribute, WDDateAttribute, WDLabelAttribute): + if attribute.name not in WIKIDATA_PROPERTIES: + wikidata_property_names.append("wd:" + attribute.name) + query = QUERY_PROPERTY_NAMES.replace('%ATTRIBUTES%', " ".join(wikidata_property_names)) + jsonresponse = send_wikidata_query(query) + for result in jsonresponse.get('results', {}).get('bindings', {}): + name = result['name']['value'] + lang = result['name']['xml:lang'] + entity_id = result['item']['value'].replace('http://www.wikidata.org/entity/', '') + WIKIDATA_PROPERTIES[(entity_id, lang)] = name.capitalize() + + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Uses languages evaluated from :py:obj:`wikipedia.fetch_wikimedia_traits + <searx.engines.wikipedia.fetch_wikimedia_traits>` and removes + + - ``traits.custom['wiki_netloc']``: wikidata does not have net-locations for + the languages and the list of all + + - ``traits.custom['WIKIPEDIA_LANGUAGES']``: not used in the wikipedia engine + + """ + + fetch_wikimedia_traits(engine_traits) + engine_traits.custom['wiki_netloc'] = {} + engine_traits.custom['WIKIPEDIA_LANGUAGES'] = []
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/wikipedia.html b/_modules/searx/engines/wikipedia.html new file mode 100644 index 000000000..770182d2d --- /dev/null +++ b/_modules/searx/engines/wikipedia.html @@ -0,0 +1,429 @@ + + + + + + + + searx.engines.wikipedia — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.wikipedia

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This module implements the Wikipedia engine.  Some of this implementations
+are shared by other engines:
+
+- :ref:`wikidata engine`
+
+The list of supported languages is :py:obj:`fetched <fetch_wikimedia_traits>` from
+the article linked by :py:obj:`list_of_wikipedias`.
+
+Unlike traditional search engines, wikipedia does not support one Wikipedia for
+all languages, but there is one Wikipedia for each supported language. Some of
+these Wikipedias have a LanguageConverter_ enabled
+(:py:obj:`rest_v1_summary_url`).
+
+A LanguageConverter_ (LC) is a system based on language variants that
+automatically converts the content of a page into a different variant. A variant
+is mostly the same language in a different script.
+
+- `Wikipedias in multiple writing systems`_
+- `Automatic conversion between traditional and simplified Chinese characters`_
+
+PR-2554_:
+  The Wikipedia link returned by the API is still the same in all cases
+  (`https://zh.wikipedia.org/wiki/出租車`_) but if your browser's
+  ``Accept-Language`` is set to any of ``zh``, ``zh-CN``, ``zh-TW``, ``zh-HK``
+  or .. Wikipedia's LC automatically returns the desired script in their
+  web-page.
+
+  - You can test the API here: https://reqbin.com/gesg2kvx
+
+.. _https://zh.wikipedia.org/wiki/出租車:
+   https://zh.wikipedia.org/wiki/%E5%87%BA%E7%A7%9F%E8%BB%8A
+
+To support Wikipedia's LanguageConverter_, a SearXNG request to Wikipedia uses
+:py:obj:`get_wiki_params` and :py:obj:`wiki_lc_locale_variants' in the
+:py:obj:`fetch_wikimedia_traits` function.
+
+To test in SearXNG, query for ``!wp 出租車`` with each of the available Chinese
+options:
+
+- ``!wp 出租車 :zh``    should show 出租車
+- ``!wp 出租車 :zh-CN`` should show 出租车
+- ``!wp 出租車 :zh-TW`` should show 計程車
+- ``!wp 出租車 :zh-HK`` should show 的士
+- ``!wp 出租車 :zh-SG`` should show 德士
+
+.. _LanguageConverter:
+   https://www.mediawiki.org/wiki/Writing_systems#LanguageConverter
+.. _Wikipedias in multiple writing systems:
+   https://meta.wikimedia.org/wiki/Wikipedias_in_multiple_writing_systems
+.. _Automatic conversion between traditional and simplified Chinese characters:
+   https://en.wikipedia.org/wiki/Chinese_Wikipedia#Automatic_conversion_between_traditional_and_simplified_Chinese_characters
+.. _PR-2554: https://github.com/searx/searx/pull/2554
+
+"""
+
+import urllib.parse
+import babel
+
+from lxml import html
+
+from searx import utils
+from searx import network as _network
+from searx import locales
+from searx.enginelib.traits import EngineTraits
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://www.wikipedia.org/',
+    "wikidata_id": 'Q52',
+    "official_api_documentation": 'https://en.wikipedia.org/api/',
+    "use_official_api": True,
+    "require_api_key": False,
+    "results": 'JSON',
+}
+
+send_accept_language_header = True
+"""The HTTP ``Accept-Language`` header is needed for wikis where
+LanguageConverter_ is enabled."""
+
+list_of_wikipedias = 'https://meta.wikimedia.org/wiki/List_of_Wikipedias'
+"""`List of all wikipedias <https://meta.wikimedia.org/wiki/List_of_Wikipedias>`_
+"""
+
+wikipedia_article_depth = 'https://meta.wikimedia.org/wiki/Wikipedia_article_depth'
+"""The *editing depth* of Wikipedia is one of several possible rough indicators
+of the encyclopedia's collaborative quality, showing how frequently its articles
+are updated.  The measurement of depth was introduced after some limitations of
+the classic measurement of article count were realized.
+"""
+
+rest_v1_summary_url = 'https://{wiki_netloc}/api/rest_v1/page/summary/{title}'
+"""
+`wikipedia rest_v1 summary API`_:
+  The summary response includes an extract of the first paragraph of the page in
+  plain text and HTML as well as the type of page. This is useful for page
+  previews (fka. Hovercards, aka. Popups) on the web and link previews in the
+  apps.
+
+HTTP ``Accept-Language`` header (:py:obj:`send_accept_language_header`):
+  The desired language variant code for wikis where LanguageConverter_ is
+  enabled.
+
+.. _wikipedia rest_v1 summary API:
+   https://en.wikipedia.org/api/rest_v1/#/Page%20content/get_page_summary__title_
+
+"""
+
+wiki_lc_locale_variants = {
+    "zh": (
+        "zh-CN",
+        "zh-HK",
+        "zh-MO",
+        "zh-MY",
+        "zh-SG",
+        "zh-TW",
+    ),
+    "zh-classical": ("zh-classical",),
+}
+"""Mapping rule of the LanguageConverter_ to map a language and its variants to
+a Locale (used in the HTTP ``Accept-Language`` header). For example see `LC
+Chinese`_.
+
+.. _LC Chinese:
+   https://meta.wikimedia.org/wiki/Wikipedias_in_multiple_writing_systems#Chinese
+"""
+
+wikipedia_script_variants = {
+    "zh": (
+        "zh_Hant",
+        "zh_Hans",
+    )
+}
+
+
+
[docs]def get_wiki_params(sxng_locale, eng_traits): + """Returns the Wikipedia language tag and the netloc that fits to the + ``sxng_locale``. To support LanguageConverter_ this function rates a locale + (region) higher than a language (compare :py:obj:`wiki_lc_locale_variants`). + + """ + eng_tag = eng_traits.get_region(sxng_locale, eng_traits.get_language(sxng_locale, 'en')) + wiki_netloc = eng_traits.custom['wiki_netloc'].get(eng_tag, 'en.wikipedia.org') + return eng_tag, wiki_netloc
+ + +
[docs]def request(query, params): + """Assemble a request (`wikipedia rest_v1 summary API`_).""" + if query.islower(): + query = query.title() + + _eng_tag, wiki_netloc = get_wiki_params(params['searxng_locale'], traits) + title = urllib.parse.quote(query) + params['url'] = rest_v1_summary_url.format(wiki_netloc=wiki_netloc, title=title) + + params['raise_for_httperror'] = False + params['soft_max_redirects'] = 2 + + return params
+ + +# get response from search-request +def response(resp): + + results = [] + if resp.status_code == 404: + return [] + if resp.status_code == 400: + try: + api_result = resp.json() + except Exception: # pylint: disable=broad-except + pass + else: + if ( + api_result['type'] == 'https://mediawiki.org/wiki/HyperSwitch/errors/bad_request' + and api_result['detail'] == 'title-invalid-characters' + ): + return [] + + _network.raise_for_httperror(resp) + + api_result = resp.json() + title = utils.html_to_text(api_result.get('titles', {}).get('display') or api_result.get('title')) + wikipedia_link = api_result['content_urls']['desktop']['page'] + results.append({'url': wikipedia_link, 'title': title, 'content': api_result.get('description', '')}) + + if api_result.get('type') == 'standard': + results.append( + { + 'infobox': title, + 'id': wikipedia_link, + 'content': api_result.get('extract', ''), + 'img_src': api_result.get('thumbnail', {}).get('source'), + 'urls': [{'title': 'Wikipedia', 'url': wikipedia_link}], + } + ) + + return results + + +# Nonstandard language codes +# +# These Wikipedias use language codes that do not conform to the ISO 639 +# standard (which is how wiki subdomains are chosen nowadays). + +lang_map = locales.LOCALE_BEST_MATCH.copy() +lang_map.update( + { + 'be-tarask': 'bel', + 'ak': 'aka', + 'als': 'gsw', + 'bat-smg': 'sgs', + 'cbk-zam': 'cbk', + 'fiu-vro': 'vro', + 'map-bms': 'map', + 'no': 'nb-NO', + 'nrm': 'nrf', + 'roa-rup': 'rup', + 'nds-nl': 'nds', + #'simple: – invented code used for the Simple English Wikipedia (not the official IETF code en-simple) + 'zh-min-nan': 'nan', + 'zh-yue': 'yue', + 'an': 'arg', + } +) + + +def fetch_traits(engine_traits: EngineTraits): + fetch_wikimedia_traits(engine_traits) + print("WIKIPEDIA_LANGUAGES: %s" % len(engine_traits.custom['WIKIPEDIA_LANGUAGES'])) + + +
[docs]def fetch_wikimedia_traits(engine_traits: EngineTraits): + """Fetch languages from Wikipedia. Not all languages from the + :py:obj:`list_of_wikipedias` are supported by SearXNG locales, only those + known from :py:obj:`searx.locales.LOCALE_NAMES` or those with a minimal + :py:obj:`editing depth <wikipedia_article_depth>`. + + The location of the Wikipedia address of a language is mapped in a + :py:obj:`custom field <searx.enginelib.traits.EngineTraits.custom>` + (``wiki_netloc``). Here is a reduced example: + + .. code:: python + + traits.custom['wiki_netloc'] = { + "en": "en.wikipedia.org", + .. + "gsw": "als.wikipedia.org", + .. + "zh": "zh.wikipedia.org", + "zh-classical": "zh-classical.wikipedia.org" + } + """ + # pylint: disable=too-many-branches + engine_traits.custom['wiki_netloc'] = {} + engine_traits.custom['WIKIPEDIA_LANGUAGES'] = [] + + # insert alias to map from a script or region to a wikipedia variant + + for eng_tag, sxng_tag_list in wikipedia_script_variants.items(): + for sxng_tag in sxng_tag_list: + engine_traits.languages[sxng_tag] = eng_tag + for eng_tag, sxng_tag_list in wiki_lc_locale_variants.items(): + for sxng_tag in sxng_tag_list: + engine_traits.regions[sxng_tag] = eng_tag + + resp = _network.get(list_of_wikipedias) + if not resp.ok: + print("ERROR: response from Wikipedia is not OK.") + + dom = html.fromstring(resp.text) + for row in dom.xpath('//table[contains(@class,"sortable")]//tbody/tr'): + + cols = row.xpath('./td') + if not cols: + continue + cols = [c.text_content().strip() for c in cols] + + depth = float(cols[11].replace('-', '0').replace(',', '')) + articles = int(cols[4].replace(',', '').replace(',', '')) + + eng_tag = cols[3] + wiki_url = row.xpath('./td[4]/a/@href')[0] + wiki_url = urllib.parse.urlparse(wiki_url) + + try: + sxng_tag = locales.language_tag(babel.Locale.parse(lang_map.get(eng_tag, eng_tag), sep='-')) + except babel.UnknownLocaleError: + # print("ERROR: %s [%s] is unknown by babel" % (cols[0], eng_tag)) + continue + finally: + engine_traits.custom['WIKIPEDIA_LANGUAGES'].append(eng_tag) + + if sxng_tag not in locales.LOCALE_NAMES: + + if articles < 10000: + # exclude languages with too few articles + continue + + if int(depth) < 20: + # Rough indicator of a Wikipedia’s quality, showing how + # frequently its articles are updated. + continue + + conflict = engine_traits.languages.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + + engine_traits.languages[sxng_tag] = eng_tag + engine_traits.custom['wiki_netloc'][eng_tag] = wiki_url.netloc + + engine_traits.custom['WIKIPEDIA_LANGUAGES'].sort()
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/xpath.html b/_modules/searx/engines/xpath.html new file mode 100644 index 000000000..d2ad92ee9 --- /dev/null +++ b/_modules/searx/engines/xpath.html @@ -0,0 +1,423 @@ + + + + + + + + searx.engines.xpath — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.xpath

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""The XPath engine is a *generic* engine with which it is possible to configure
+engines in the settings.
+
+.. _XPath selector: https://quickref.me/xpath.html#xpath-selectors
+
+Configuration
+=============
+
+Request:
+
+- :py:obj:`search_url`
+- :py:obj:`lang_all`
+- :py:obj:`soft_max_redirects`
+- :py:obj:`cookies`
+- :py:obj:`headers`
+
+Paging:
+
+- :py:obj:`paging`
+- :py:obj:`page_size`
+- :py:obj:`first_page_num`
+
+Time Range:
+
+- :py:obj:`time_range_support`
+- :py:obj:`time_range_url`
+- :py:obj:`time_range_map`
+
+Safe-Search:
+
+- :py:obj:`safe_search_support`
+- :py:obj:`safe_search_map`
+
+Response:
+
+- :py:obj:`no_result_for_http_status`
+
+`XPath selector`_:
+
+- :py:obj:`results_xpath`
+- :py:obj:`url_xpath`
+- :py:obj:`title_xpath`
+- :py:obj:`content_xpath`
+- :py:obj:`thumbnail_xpath`
+- :py:obj:`suggestion_xpath`
+
+
+Example
+=======
+
+Here is a simple example of a XPath engine configured in the :ref:`settings
+engine` section, further read :ref:`engines-dev`.
+
+.. code:: yaml
+
+  - name : bitbucket
+    engine : xpath
+    paging : True
+    search_url : https://bitbucket.org/repo/all/{pageno}?name={query}
+    url_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]/@href
+    title_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]
+    content_xpath : //article[@class="repo-summary"]/p
+
+Implementations
+===============
+
+"""
+
+from urllib.parse import urlencode
+
+from lxml import html
+from searx.utils import extract_text, extract_url, eval_xpath, eval_xpath_list
+from searx.network import raise_for_httperror
+
+search_url = None
+"""
+Search URL of the engine.  Example::
+
+    https://example.org/?search={query}&page={pageno}{time_range}{safe_search}
+
+Replacements are:
+
+``{query}``:
+  Search terms from user.
+
+``{pageno}``:
+  Page number if engine supports pagging :py:obj:`paging`
+
+``{lang}``:
+  ISO 639-1 language code (en, de, fr ..)
+
+``{time_range}``:
+  :py:obj:`URL parameter <time_range_url>` if engine :py:obj:`supports time
+  range <time_range_support>`.  The value for the parameter is taken from
+  :py:obj:`time_range_map`.
+
+``{safe_search}``:
+  Safe-search :py:obj:`URL parameter <safe_search_map>` if engine
+  :py:obj:`supports safe-search <safe_search_support>`.  The ``{safe_search}``
+  replacement is taken from the :py:obj:`safes_search_map`.  Filter results::
+
+      0: none, 1: moderate, 2:strict
+
+  If not supported, the URL parameter is an empty string.
+
+"""
+
+lang_all = 'en'
+'''Replacement ``{lang}`` in :py:obj:`search_url` if language ``all`` is
+selected.
+'''
+
+no_result_for_http_status = []
+'''Return empty result for these HTTP status codes instead of throwing an error.
+
+.. code:: yaml
+
+    no_result_for_http_status: []
+'''
+
+soft_max_redirects = 0
+'''Maximum redirects, soft limit. Record an error but don't stop the engine'''
+
+results_xpath = ''
+'''`XPath selector`_ for the list of result items'''
+
+url_xpath = None
+'''`XPath selector`_ of result's ``url``.'''
+
+content_xpath = None
+'''`XPath selector`_ of result's ``content``.'''
+
+title_xpath = None
+'''`XPath selector`_ of result's ``title``.'''
+
+thumbnail_xpath = False
+'''`XPath selector`_ of result's ``img_src``.'''
+
+suggestion_xpath = ''
+'''`XPath selector`_ of result's ``suggestion``.'''
+
+cached_xpath = ''
+cached_url = ''
+
+cookies = {}
+'''Some engines might offer different result based on cookies.
+Possible use-case: To set safesearch cookie.'''
+
+headers = {}
+'''Some engines might offer different result based headers.  Possible use-case:
+To set header to moderate.'''
+
+paging = False
+'''Engine supports paging [True or False].'''
+
+page_size = 1
+'''Number of results on each page.  Only needed if the site requires not a page
+number, but an offset.'''
+
+first_page_num = 1
+'''Number of the first page (usually 0 or 1).'''
+
+time_range_support = False
+'''Engine supports search time range.'''
+
+time_range_url = '&hours={time_range_val}'
+'''Time range URL parameter in the in :py:obj:`search_url`.  If no time range is
+requested by the user, the URL parameter is an empty string.  The
+``{time_range_val}`` replacement is taken from the :py:obj:`time_range_map`.
+
+.. code:: yaml
+
+    time_range_url : '&days={time_range_val}'
+'''
+
+time_range_map = {
+    'day': 24,
+    'week': 24 * 7,
+    'month': 24 * 30,
+    'year': 24 * 365,
+}
+'''Maps time range value from user to ``{time_range_val}`` in
+:py:obj:`time_range_url`.
+
+.. code:: yaml
+
+    time_range_map:
+      day: 1
+      week: 7
+      month: 30
+      year: 365
+'''
+
+safe_search_support = False
+'''Engine supports safe-search.'''
+
+safe_search_map = {0: '&filter=none', 1: '&filter=moderate', 2: '&filter=strict'}
+'''Maps safe-search value to ``{safe_search}`` in :py:obj:`search_url`.
+
+.. code:: yaml
+
+    safesearch: true
+    safes_search_map:
+      0: '&filter=none'
+      1: '&filter=moderate'
+      2: '&filter=strict'
+
+'''
+
+
+
[docs]def request(query, params): + '''Build request parameters (see :ref:`engine request`).''' + lang = lang_all + if params['language'] != 'all': + lang = params['language'][:2] + + time_range = '' + if params.get('time_range'): + time_range_val = time_range_map.get(params.get('time_range')) + time_range = time_range_url.format(time_range_val=time_range_val) + + safe_search = '' + if params['safesearch']: + safe_search = safe_search_map[params['safesearch']] + + fargs = { + 'query': urlencode({'q': query})[2:], + 'lang': lang, + 'pageno': (params['pageno'] - 1) * page_size + first_page_num, + 'time_range': time_range, + 'safe_search': safe_search, + } + + params['cookies'].update(cookies) + params['headers'].update(headers) + + params['url'] = search_url.format(**fargs) + params['soft_max_redirects'] = soft_max_redirects + + params['raise_for_httperror'] = False + + return params
+ + +
[docs]def response(resp): # pylint: disable=too-many-branches + '''Scrap *results* from the response (see :ref:`engine results`).''' + if no_result_for_http_status and resp.status_code in no_result_for_http_status: + return [] + + raise_for_httperror(resp) + + results = [] + dom = html.fromstring(resp.text) + is_onion = 'onions' in categories + + if results_xpath: + for result in eval_xpath_list(dom, results_xpath): + + url = extract_url(eval_xpath_list(result, url_xpath, min_len=1), search_url) + title = extract_text(eval_xpath_list(result, title_xpath, min_len=1)) + content = extract_text(eval_xpath_list(result, content_xpath)) + tmp_result = {'url': url, 'title': title, 'content': content} + + # add thumbnail if available + if thumbnail_xpath: + thumbnail_xpath_result = eval_xpath_list(result, thumbnail_xpath) + if len(thumbnail_xpath_result) > 0: + tmp_result['img_src'] = extract_url(thumbnail_xpath_result, search_url) + + # add alternative cached url if available + if cached_xpath: + tmp_result['cached_url'] = cached_url + extract_text(eval_xpath_list(result, cached_xpath, min_len=1)) + + if is_onion: + tmp_result['is_onion'] = True + + results.append(tmp_result) + + else: + if cached_xpath: + for url, title, content, cached in zip( + (extract_url(x, search_url) for x in eval_xpath_list(dom, url_xpath)), + map(extract_text, eval_xpath_list(dom, title_xpath)), + map(extract_text, eval_xpath_list(dom, content_xpath)), + map(extract_text, eval_xpath_list(dom, cached_xpath)), + ): + results.append( + { + 'url': url, + 'title': title, + 'content': content, + 'cached_url': cached_url + cached, + 'is_onion': is_onion, + } + ) + else: + for url, title, content in zip( + (extract_url(x, search_url) for x in eval_xpath_list(dom, url_xpath)), + map(extract_text, eval_xpath_list(dom, title_xpath)), + map(extract_text, eval_xpath_list(dom, content_xpath)), + ): + results.append({'url': url, 'title': title, 'content': content, 'is_onion': is_onion}) + + if suggestion_xpath: + for suggestion in eval_xpath(dom, suggestion_xpath): + results.append({'suggestion': extract_text(suggestion)}) + + logger.debug("found %s results", len(results)) + return results
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/yahoo.html b/_modules/searx/engines/yahoo.html new file mode 100644 index 000000000..45f19f848 --- /dev/null +++ b/_modules/searx/engines/yahoo.html @@ -0,0 +1,300 @@ + + + + + + + + searx.engines.yahoo — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.yahoo

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Yahoo Search (Web)
+
+Languages are supported by mapping the language to a domain.  If domain is not
+found in :py:obj:`lang2domain` URL ``<lang>.search.yahoo.com`` is used.
+
+"""
+
+from urllib.parse import (
+    unquote,
+    urlencode,
+)
+from lxml import html
+
+from searx.utils import (
+    eval_xpath_getindex,
+    eval_xpath_list,
+    extract_text,
+)
+from searx.enginelib.traits import EngineTraits
+
+traits: EngineTraits
+
+# about
+about = {
+    "website": 'https://search.yahoo.com/',
+    "wikidata_id": None,
+    "official_api_documentation": 'https://developer.yahoo.com/api/',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['general', 'web']
+paging = True
+time_range_support = True
+# send_accept_language_header = True
+
+time_range_dict = {
+    'day': ('1d', 'd'),
+    'week': ('1w', 'w'),
+    'month': ('1m', 'm'),
+}
+
+lang2domain = {
+    'zh_chs': 'hk.search.yahoo.com',
+    'zh_cht': 'tw.search.yahoo.com',
+    'any': 'search.yahoo.com',
+    'en': 'search.yahoo.com',
+    'bg': 'search.yahoo.com',
+    'cs': 'search.yahoo.com',
+    'da': 'search.yahoo.com',
+    'el': 'search.yahoo.com',
+    'et': 'search.yahoo.com',
+    'he': 'search.yahoo.com',
+    'hr': 'search.yahoo.com',
+    'ja': 'search.yahoo.com',
+    'ko': 'search.yahoo.com',
+    'sk': 'search.yahoo.com',
+    'sl': 'search.yahoo.com',
+}
+"""Map language to domain"""
+
+locale_aliases = {
+    'zh': 'zh_Hans',
+    'zh-HK': 'zh_Hans',
+    'zh-CN': 'zh_Hans',  # dead since 2015 / routed to hk.search.yahoo.com
+    'zh-TW': 'zh_Hant',
+}
+
+
+
[docs]def request(query, params): + """build request""" + + lang = locale_aliases.get(params['language'], None) + if not lang: + lang = params['language'].split('-')[0] + lang = traits.get_language(lang, traits.all_locale) + + offset = (params['pageno'] - 1) * 7 + 1 + age, btf = time_range_dict.get(params['time_range'], ('', '')) + + args = urlencode( + { + 'p': query, + 'ei': 'UTF-8', + 'fl': 1, + 'vl': 'lang_' + lang, + 'btf': btf, + 'fr2': 'time', + 'age': age, + 'b': offset, + 'xargs': 0, + } + ) + + domain = lang2domain.get(lang, '%s.search.yahoo.com' % lang) + params['url'] = 'https://%s/search?%s' % (domain, args) + return params
+ + +
[docs]def parse_url(url_string): + """remove yahoo-specific tracking-url""" + + endings = ['/RS', '/RK'] + endpositions = [] + start = url_string.find('http', url_string.find('/RU=') + 1) + + for ending in endings: + endpos = url_string.rfind(ending) + if endpos > -1: + endpositions.append(endpos) + + if start == 0 or len(endpositions) == 0: + return url_string + + end = min(endpositions) + return unquote(url_string[start:end])
+ + +
[docs]def response(resp): + """parse response""" + + results = [] + dom = html.fromstring(resp.text) + + # parse results + for result in eval_xpath_list(dom, '//div[contains(@class,"algo-sr")]'): + url = eval_xpath_getindex(result, './/h3/a/@href', 0, default=None) + if url is None: + continue + url = parse_url(url) + + title = eval_xpath_getindex(result, './/h3/a', 0, default=None) + if title is None: + continue + offset = len(extract_text(title.xpath('span'))) + title = extract_text(title)[offset:] + + content = eval_xpath_getindex(result, './/div[contains(@class, "compText")]', 0, default='') + content = extract_text(content, allow_none=True) + + # append result + results.append({'url': url, 'title': title, 'content': content}) + + for suggestion in eval_xpath_list(dom, '//div[contains(@class, "AlsoTry")]//table//a'): + # append suggestion + results.append({'suggestion': extract_text(suggestion)}) + + return results
+ + +
[docs]def fetch_traits(engine_traits: EngineTraits): + """Fetch languages from yahoo""" + + # pylint: disable=import-outside-toplevel + import babel + from searx import network + from searx.locales import language_tag + + engine_traits.all_locale = 'any' + + resp = network.get('https://search.yahoo.com/preferences/languages') + if not resp.ok: + print("ERROR: response from peertube is not OK.") + + dom = html.fromstring(resp.text) + offset = len('lang_') + + eng2sxng = {'zh_chs': 'zh_Hans', 'zh_cht': 'zh_Hant'} + + for val in eval_xpath_list(dom, '//div[contains(@class, "lang-item")]/input/@value'): + eng_tag = val[offset:] + + try: + sxng_tag = language_tag(babel.Locale.parse(eng2sxng.get(eng_tag, eng_tag))) + except babel.UnknownLocaleError: + print('ERROR: unknown language --> %s' % eng_tag) + continue + + conflict = engine_traits.languages.get(sxng_tag) + if conflict: + if conflict != eng_tag: + print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) + continue + engine_traits.languages[sxng_tag] = eng_tag
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/engines/zlibrary.html b/_modules/searx/engines/zlibrary.html new file mode 100644 index 000000000..e50c803bc --- /dev/null +++ b/_modules/searx/engines/zlibrary.html @@ -0,0 +1,333 @@ + + + + + + + + searx.engines.zlibrary — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.engines.zlibrary

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""`Z-Library`_ (abbreviated as z-lib, formerly BookFinder) is a shadow library
+project for file-sharing access to scholarly journal articles, academic texts
+and general-interest books.  It began as a mirror of Library Genesis, from which
+most of its books originate.
+
+.. _Z-Library: https://zlibrary-global.se/
+
+Configuration
+=============
+
+The engine has the following additional settings:
+
+- :py:obj:`zlib_year_from`
+- :py:obj:`zlib_year_to`
+- :py:obj:`zlib_ext`
+
+With this options a SearXNG maintainer is able to configure **additional**
+engines for specific searches in Z-Library.  For example a engine to search
+only for EPUB from 2010 to 2020.
+
+.. code:: yaml
+
+   - name: z-library 2010s epub
+     engine: zlibrary
+     shortcut: zlib2010s
+     zlib_year_from: '2010'
+     zlib_year_to: '2020'
+     zlib_ext: 'EPUB'
+
+Implementations
+===============
+
+"""
+from __future__ import annotations
+from typing import TYPE_CHECKING
+from typing import List, Dict, Any, Optional
+from datetime import datetime
+from urllib.parse import quote
+from lxml import html
+from flask_babel import gettext
+
+from searx.utils import extract_text, eval_xpath, eval_xpath_list
+from searx.enginelib.traits import EngineTraits
+from searx.data import ENGINE_TRAITS
+
+if TYPE_CHECKING:
+    import httpx
+    import logging
+
+    logger: logging.Logger
+
+# about
+about: Dict[str, Any] = {
+    "website": "https://zlibrary-global.se",
+    "wikidata_id": "Q104863992",
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": "HTML",
+}
+
+categories: List[str] = ["files"]
+paging: bool = True
+base_url: str = "https://zlibrary-global.se"
+
+zlib_year_from: str = ""
+"""Filter z-library's results by year from. E.g '2010'.
+"""
+
+zlib_year_to: str = ""
+"""Filter z-library's results by year to. E.g. '2010'.
+"""
+
+zlib_ext: str = ""
+"""Filter z-library's results by a file ending. Common filters for example are
+``PDF`` and ``EPUB``.
+"""
+
+
+
[docs]def init(engine_settings=None) -> None: # pylint: disable=unused-argument + """Check of engine's settings.""" + traits: EngineTraits = EngineTraits(**ENGINE_TRAITS["z-library"]) + + if zlib_ext and zlib_ext not in traits.custom["ext"]: + raise ValueError(f"invalid setting ext: {zlib_ext}") + if zlib_year_from and zlib_year_from not in traits.custom["year_from"]: + raise ValueError(f"invalid setting year_from: {zlib_year_from}") + if zlib_year_to and zlib_year_to not in traits.custom["year_to"]: + raise ValueError(f"invalid setting year_to: {zlib_year_to}")
+ + +def request(query: str, params: Dict[str, Any]) -> Dict[str, Any]: + lang: str = traits.get_language(params["language"], traits.all_locale) # type: ignore + search_url: str = ( + base_url + + "/s/{search_query}/?page={pageno}" + + "&yearFrom={zlib_year_from}" + + "&yearTo={zlib_year_to}" + + "&languages[]={lang}" + + "&extensions[]={zlib_ext}" + ) + params["url"] = search_url.format( + search_query=quote(query), + pageno=params["pageno"], + lang=lang, + zlib_year_from=zlib_year_from, + zlib_year_to=zlib_year_to, + zlib_ext=zlib_ext, + ) + return params + + +def response(resp: httpx.Response) -> List[Dict[str, Any]]: + results: List[Dict[str, Any]] = [] + dom = html.fromstring(resp.text) + + for item in dom.xpath('//div[@id="searchResultBox"]//div[contains(@class, "resItemBox")]'): + results.append(_parse_result(item)) + + return results + + +def _text(item, selector: str) -> str | None: + return extract_text(eval_xpath(item, selector)) + + +i18n_language = gettext("Language") +i18n_book_rating = gettext("Book rating") +i18n_file_quality = gettext("File quality") + + +def _parse_result(item) -> Dict[str, Any]: + + author_elements = eval_xpath_list(item, './/div[@class="authors"]//a[@itemprop="author"]') + + result = { + "template": "paper.html", + "url": base_url + item.xpath('(.//a[starts-with(@href, "/book/")])[1]/@href')[0], + "title": _text(item, './/*[@itemprop="name"]'), + "authors": [extract_text(author) for author in author_elements], + "publisher": _text(item, './/a[@title="Publisher"]'), + "type": _text(item, './/div[contains(@class, "property__file")]//div[contains(@class, "property_value")]'), + "img_src": _text(item, './/img[contains(@class, "cover")]/@data-src'), + } + + year = _text(item, './/div[contains(@class, "property_year")]//div[contains(@class, "property_value")]') + if year: + result["publishedDate"] = datetime.strptime(year, '%Y') + + content = [] + language = _text(item, './/div[contains(@class, "property_language")]//div[contains(@class, "property_value")]') + if language: + content.append(f"{i18n_language}: {language.capitalize()}") + book_rating = _text(item, './/span[contains(@class, "book-rating-interest-score")]') + if book_rating and float(book_rating): + content.append(f"{i18n_book_rating}: {book_rating}") + file_quality = _text(item, './/span[contains(@class, "book-rating-quality-score")]') + if file_quality and float(file_quality): + content.append(f"{i18n_file_quality}: {file_quality}") + result["content"] = " | ".join(content) + + return result + + +
[docs]def fetch_traits(engine_traits: EngineTraits) -> None: + """Fetch languages and other search arguments from zlibrary's search form.""" + # pylint: disable=import-outside-toplevel + + import babel + from searx.network import get # see https://github.com/searxng/searxng/issues/762 + from searx.locales import language_tag + + engine_traits.all_locale = "" + engine_traits.custom["ext"] = [] + engine_traits.custom["year_from"] = [] + engine_traits.custom["year_to"] = [] + + resp = get(base_url) + if not resp.ok: # type: ignore + raise RuntimeError("Response from zlibrary's search page is not OK.") + dom = html.fromstring(resp.text) # type: ignore + + for year in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_yearFrom']/option"): + engine_traits.custom["year_from"].append(year.get("value")) + + for year in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_yearTo']/option"): + engine_traits.custom["year_to"].append(year.get("value")) + + for ext in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_extensions']/option"): + value: Optional[str] = ext.get("value") + if value is None: + value = "" + engine_traits.custom["ext"].append(value) + + # Handle languages + # Z-library uses English names for languages, so we need to map them to their respective locales + language_name_locale_map: Dict[str, babel.Locale] = {} + for locale in babel.core.localedata.locale_identifiers(): # type: ignore + # Create a Locale object for the current locale + loc = babel.Locale.parse(locale) + language_name_locale_map[loc.english_name.lower()] = loc # type: ignore + + for x in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_languages']/option"): + eng_lang = x.get("value") + if eng_lang is None: + continue + try: + locale = language_name_locale_map[eng_lang.lower()] + except KeyError: + # silently ignore unknown languages + # print("ERROR: %s is unknown by babel" % (eng_lang)) + continue + sxng_lang = language_tag(locale) + conflict = engine_traits.languages.get(sxng_lang) + if conflict: + if conflict != eng_lang: + print("CONFLICT: babel %s --> %s, %s" % (sxng_lang, conflict, eng_lang)) + continue + engine_traits.languages[sxng_lang] = eng_lang
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/exceptions.html b/_modules/searx/exceptions.html new file mode 100644 index 000000000..e7a71e26f --- /dev/null +++ b/_modules/searx/exceptions.html @@ -0,0 +1,226 @@ + + + + + + + + searx.exceptions — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.exceptions

+# -*- coding: utf-8 -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Exception types raised by SearXNG modules.
+"""
+
+from typing import Optional, Union
+
+
+
[docs]class SearxException(Exception): + """Base SearXNG exception."""
+ + +
[docs]class SearxParameterException(SearxException): + """Raised when query miss a required paramater""" + + def __init__(self, name, value): + if value == '' or value is None: + message = 'Empty ' + name + ' parameter' + else: + message = 'Invalid value "' + value + '" for parameter ' + name + super().__init__(message) + self.message = message + self.parameter_name = name + self.parameter_value = value
+ + +
[docs]class SearxSettingsException(SearxException): + """Error while loading the settings""" + + def __init__(self, message: Union[str, Exception], filename: Optional[str]): + super().__init__(message) + self.message = message + self.filename = filename
+ + +
[docs]class SearxEngineException(SearxException): + """Error inside an engine"""
+ + +
[docs]class SearxXPathSyntaxException(SearxEngineException): + """Syntax error in a XPATH""" + + def __init__(self, xpath_spec, message): + super().__init__(str(xpath_spec) + " " + message) + self.message = message + # str(xpath_spec) to deal with str and XPath instance + self.xpath_str = str(xpath_spec)
+ + +
[docs]class SearxEngineResponseException(SearxEngineException): + """Impossible to parse the result of an engine"""
+ + +
[docs]class SearxEngineAPIException(SearxEngineResponseException): + """The website has returned an application error"""
+ + +
[docs]class SearxEngineAccessDeniedException(SearxEngineResponseException): + """The website is blocking the access""" + + SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineAccessDenied" + """This settings contains the default suspended time (default 86400 sec / 1 + day).""" + + def __init__(self, suspended_time: int = None, message: str = 'Access denied'): + """Generic exception to raise when an engine denies access to the results. + + :param suspended_time: How long the engine is going to be suspended in + second. Defaults to None. + :type suspended_time: int, None + :param message: Internal message. Defaults to ``Access denied`` + :type message: str + """ + suspended_time = suspended_time or self._get_default_suspended_time() + super().__init__(message + ', suspended_time=' + str(suspended_time)) + self.suspended_time = suspended_time + self.message = message + + def _get_default_suspended_time(self): + from searx import get_setting # pylint: disable=C0415 + + return get_setting(self.SUSPEND_TIME_SETTING)
+ + +
[docs]class SearxEngineCaptchaException(SearxEngineAccessDeniedException): + """The website has returned a CAPTCHA.""" + + SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineCaptcha" + """This settings contains the default suspended time (default 86400 sec / 1 + day).""" + + def __init__(self, suspended_time=None, message='CAPTCHA'): + super().__init__(message=message, suspended_time=suspended_time)
+ + +
[docs]class SearxEngineTooManyRequestsException(SearxEngineAccessDeniedException): + """The website has returned a Too Many Request status code + + By default, searx stops sending requests to this engine for 1 hour. + """ + + SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineTooManyRequests" + """This settings contains the default suspended time (default 3660 sec / 1 + hour).""" + + def __init__(self, suspended_time=None, message='Too many request'): + super().__init__(message=message, suspended_time=suspended_time)
+ + +
[docs]class SearxEngineXPathException(SearxEngineResponseException): + """Error while getting the result of an XPath expression""" + + def __init__(self, xpath_spec, message): + super().__init__(str(xpath_spec) + " " + message) + self.message = message + # str(xpath_spec) to deal with str and XPath instance + self.xpath_str = str(xpath_spec)
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/infopage.html b/_modules/searx/infopage.html new file mode 100644 index 000000000..25617d7e9 --- /dev/null +++ b/_modules/searx/infopage.html @@ -0,0 +1,295 @@ + + + + + + + + searx.infopage — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.infopage

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+# pyright: basic
+"""Render SearXNG instance documentation.
+
+Usage in a Flask app route:
+
+.. code:: python
+
+  from searx import infopage
+
+  _INFO_PAGES = infopage.InfoPageSet(infopage.MistletoePage)
+
+  @app.route('/info/<pagename>', methods=['GET'])
+  def info(pagename):
+
+      locale = request.preferences.get_value('locale')
+      page = _INFO_PAGES.get_page(pagename, locale)
+
+"""
+
+__all__ = ['InfoPage', 'InfoPageSet']
+
+import os
+import os.path
+import logging
+import typing
+
+import urllib.parse
+import jinja2
+from flask.helpers import url_for
+from markdown_it import MarkdownIt
+
+from .. import get_setting
+from ..compat import cached_property
+from ..version import GIT_URL
+from ..locales import LOCALE_NAMES
+
+
+logger = logging.getLogger('searx.infopage')
+_INFO_FOLDER = os.path.abspath(os.path.dirname(__file__))
+
+
+
[docs]class InfoPage: + """A page of the :py:obj:`online documentation <InfoPageSet>`.""" + + def __init__(self, fname): + self.fname = fname + + @cached_property + def raw_content(self): + """Raw content of the page (without any jinja rendering)""" + with open(self.fname, 'r', encoding='utf-8') as f: + return f.read() + + @cached_property + def content(self): + """Content of the page (rendered in a Jinja conntext)""" + ctx = self.get_ctx() + template = jinja2.Environment().from_string(self.raw_content) + return template.render(**ctx) + + @cached_property + def title(self): + """Title of the content (without any markup)""" + t = "" + for l in self.raw_content.split('\n'): + if l.startswith('# '): + t = l.strip('# ') + return t + + @cached_property + def html(self): + """Render Markdown (CommonMark_) to HTML by using markdown-it-py_. + + .. _CommonMark: https://commonmark.org/ + .. _markdown-it-py: https://github.com/executablebooks/markdown-it-py + + """ + return ( + MarkdownIt("commonmark", {"typographer": True}).enable(["replacements", "smartquotes"]).render(self.content) + ) + +
[docs] def get_ctx(self): + """Jinja context to render :py:obj:`InfoPage.content`""" + + def _md_link(name, url): + url = url_for(url, _external=True) + return "[%s](%s)" % (name, url) + + def _md_search(query): + url = '%s?q=%s' % (url_for('search', _external=True), urllib.parse.quote(query)) + return '[%s](%s)' % (query, url) + + ctx = {} + ctx['GIT_URL'] = GIT_URL + ctx['get_setting'] = get_setting + ctx['link'] = _md_link + ctx['search'] = _md_search + + return ctx
+ + def __repr__(self): + return f'<{self.__class__.__name__} fname={self.fname!r}>'
+ + +
[docs]class InfoPageSet: # pylint: disable=too-few-public-methods + """Cached rendering of the online documentation a SearXNG instance has. + + :param page_class: render online documentation by :py:obj:`InfoPage` parser. + :type page_class: :py:obj:`InfoPage` + + :param info_folder: information directory + :type info_folder: str + """ + + def __init__( + self, page_class: typing.Optional[typing.Type[InfoPage]] = None, info_folder: typing.Optional[str] = None + ): + self.page_class = page_class or InfoPage + self.folder: str = info_folder or _INFO_FOLDER + """location of the Markdwon files""" + + self.CACHE: typing.Dict[tuple, typing.Optional[InfoPage]] = {} + + self.locale_default: str = 'en' + """default language""" + + self.locales: typing.List[str] = [ + locale.replace('_', '-') for locale in os.listdir(_INFO_FOLDER) if locale.replace('_', '-') in LOCALE_NAMES + ] + """list of supported languages (aka locales)""" + + self.toc: typing.List[str] = [ + 'search-syntax', + 'about', + 'donate', + ] + """list of articles in the online documentation""" + +
[docs] def get_page(self, pagename: str, locale: typing.Optional[str] = None): + """Return ``pagename`` instance of :py:obj:`InfoPage` + + :param pagename: name of the page, a value from :py:obj:`InfoPageSet.toc` + :type pagename: str + + :param locale: language of the page, e.g. ``en``, ``zh_Hans_CN`` + (default: :py:obj:`InfoPageSet.i18n_origin`) + :type locale: str + + """ + locale = locale or self.locale_default + + if pagename not in self.toc: + return None + if locale not in self.locales: + return None + + cache_key = (pagename, locale) + + if cache_key in self.CACHE: + return self.CACHE[cache_key] + + # not yet instantiated + + fname = os.path.join(self.folder, locale.replace('-', '_'), pagename) + '.md' + if not os.path.exists(fname): + logger.info('file %s does not exists', fname) + self.CACHE[cache_key] = None + return None + + page = self.page_class(fname) + self.CACHE[cache_key] = page + return page
+ +
[docs] def iter_pages(self, locale: typing.Optional[str] = None, fallback_to_default=False): + """Iterate over all pages of the TOC""" + locale = locale or self.locale_default + for page_name in self.toc: + page_locale = locale + page = self.get_page(page_name, locale) + if fallback_to_default and page is None: + page_locale = self.locale_default + page = self.get_page(page_name, self.locale_default) + if page is not None: + # page is None if the page was deleted by the administrator + yield page_name, page_locale, page
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/locales.html b/_modules/searx/locales.html new file mode 100644 index 000000000..bc9a0b1fa --- /dev/null +++ b/_modules/searx/locales.html @@ -0,0 +1,579 @@ + + + + + + + + searx.locales — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.locales

+# -*- coding: utf-8 -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Initialize :py:obj:`LOCALE_NAMES`, :py:obj:`RTL_LOCALES`.
+"""
+
+from typing import Set, Optional, List
+import os
+import pathlib
+
+import babel
+from babel.support import Translations
+import babel.languages
+import babel.core
+import flask_babel
+import flask
+from flask.ctx import has_request_context
+from searx import logger
+
+logger = logger.getChild('locales')
+
+
+# safe before monkey patching flask_babel.get_translations
+_flask_babel_get_translations = flask_babel.get_translations
+
+LOCALE_NAMES = {}
+"""Mapping of locales and their description.  Locales e.g. 'fr' or 'pt-BR' (see
+:py:obj:`locales_initialize`).
+
+:meta hide-value:
+"""
+
+RTL_LOCALES: Set[str] = set()
+"""List of *Right-To-Left* locales e.g. 'he' or 'fa-IR' (see
+:py:obj:`locales_initialize`)."""
+
+ADDITIONAL_TRANSLATIONS = {
+    "dv": "ދިވެހި (Dhivehi)",
+    "oc": "Occitan",
+    "szl": "Ślōnski (Silesian)",
+    "pap": "Papiamento",
+}
+"""Additional languages SearXNG has translations for but not supported by
+python-babel (see :py:obj:`locales_initialize`)."""
+
+LOCALE_BEST_MATCH = {
+    "dv": "si",
+    "oc": 'fr-FR',
+    "szl": "pl",
+    "nl-BE": "nl",
+    "zh-HK": "zh-Hant-TW",
+    "pap": "pt-BR",
+}
+"""Map a locale we do not have a translations for to a locale we have a
+translation for. By example: use Taiwan version of the translation for Hong
+Kong."""
+
+
+def localeselector():
+    locale = 'en'
+    if has_request_context():
+        value = flask.request.preferences.get_value('locale')
+        if value:
+            locale = value
+
+    # first, set the language that is not supported by babel
+    if locale in ADDITIONAL_TRANSLATIONS:
+        flask.request.form['use-translation'] = locale
+
+    # second, map locale to a value python-babel supports
+    locale = LOCALE_BEST_MATCH.get(locale, locale)
+
+    if locale == '':
+        # if there is an error loading the preferences
+        # the locale is going to be ''
+        locale = 'en'
+
+    # babel uses underscore instead of hyphen.
+    locale = locale.replace('-', '_')
+    return locale
+
+
+
[docs]def get_translations(): + """Monkey patch of :py:obj:`flask_babel.get_translations`""" + if has_request_context(): + use_translation = flask.request.form.get('use-translation') + if use_translation in ADDITIONAL_TRANSLATIONS: + babel_ext = flask_babel.current_app.extensions['babel'] + return Translations.load(babel_ext.translation_directories[0], use_translation) + return _flask_babel_get_translations()
+ + +
[docs]def get_locale_descr(locale, locale_name): + """Get locale name e.g. 'Français - fr' or 'Português (Brasil) - pt-BR' + + :param locale: instance of :py:class:`Locale` + :param locale_name: name e.g. 'fr' or 'pt_BR' (delimiter is *underscore*) + """ + + native_language, native_territory = _get_locale_descr(locale, locale_name) + english_language, english_territory = _get_locale_descr(locale, 'en') + + if native_territory == english_territory: + english_territory = None + + if not native_territory and not english_territory: + if native_language == english_language: + return native_language + return native_language + ' (' + english_language + ')' + + result = native_language + ', ' + native_territory + ' (' + english_language + if english_territory: + return result + ', ' + english_territory + ')' + return result + ')'
+ + +def _get_locale_descr(locale, language_code): + language_name = locale.get_language_name(language_code).capitalize() + if language_name and ('a' <= language_name[0] <= 'z'): + language_name = language_name.capitalize() + terrirtory_name = locale.get_territory_name(language_code) + return language_name, terrirtory_name + + +
[docs]def locales_initialize(directory=None): + """Initialize locales environment of the SearXNG session. + + - monkey patch :py:obj:`flask_babel.get_translations` by :py:obj:`get_translations` + - init global names :py:obj:`LOCALE_NAMES`, :py:obj:`RTL_LOCALES` + """ + + directory = directory or pathlib.Path(__file__).parent / 'translations' + logger.debug("locales_initialize: %s", directory) + flask_babel.get_translations = get_translations + + for tag, descr in ADDITIONAL_TRANSLATIONS.items(): + locale = babel.Locale.parse(LOCALE_BEST_MATCH[tag], sep='-') + LOCALE_NAMES[tag] = descr + if locale.text_direction == 'rtl': + RTL_LOCALES.add(tag) + + for tag in LOCALE_BEST_MATCH: + descr = LOCALE_NAMES.get(tag) + if not descr: + locale = babel.Locale.parse(tag, sep='-') + LOCALE_NAMES[tag] = get_locale_descr(locale, tag.replace('-', '_')) + if locale.text_direction == 'rtl': + RTL_LOCALES.add(tag) + + for dirname in sorted(os.listdir(directory)): + # Based on https://flask-babel.tkte.ch/_modules/flask_babel.html#Babel.list_translations + if not os.path.isdir(os.path.join(directory, dirname, 'LC_MESSAGES')): + continue + tag = dirname.replace('_', '-') + descr = LOCALE_NAMES.get(tag) + if not descr: + locale = babel.Locale.parse(dirname) + LOCALE_NAMES[tag] = get_locale_descr(locale, dirname) + if locale.text_direction == 'rtl': + RTL_LOCALES.add(tag)
+ + +
[docs]def region_tag(locale: babel.Locale) -> str: + """Returns SearXNG's region tag from the locale (e.g. zh-TW , en-US).""" + if not locale.territory: + raise ValueError('%s missed a territory') + return locale.language + '-' + locale.territory
+ + +
[docs]def language_tag(locale: babel.Locale) -> str: + """Returns SearXNG's language tag from the locale and if exits, the tag + includes the script name (e.g. en, zh_Hant). + """ + sxng_lang = locale.language + if locale.script: + sxng_lang += '_' + locale.script + return sxng_lang
+ + +
[docs]def get_locale(locale_tag: str) -> Optional[babel.Locale]: + """Returns a :py:obj:`babel.Locale` object parsed from argument + ``locale_tag``""" + try: + locale = babel.Locale.parse(locale_tag, sep='-') + return locale + + except babel.core.UnknownLocaleError: + return None
+ + +
[docs]def get_offical_locales( + territory: str, languages=None, regional: bool = False, de_facto: bool = True +) -> Set[babel.Locale]: + """Returns a list of :py:obj:`babel.Locale` with languages from + :py:obj:`babel.languages.get_official_languages`. + + :param territory: The territory (country or region) code. + + :param languages: A list of language codes the languages from + :py:obj:`babel.languages.get_official_languages` should be in + (intersection). If this argument is ``None``, all official languages in + this territory are used. + + :param regional: If the regional flag is set, then languages which are + regionally official are also returned. + + :param de_facto: If the de_facto flag is set to `False`, then languages + which are “de facto” official are not returned. + + """ + ret_val = set() + o_languages = babel.languages.get_official_languages(territory, regional=regional, de_facto=de_facto) + + if languages: + languages = [l.lower() for l in languages] + o_languages = set(l for l in o_languages if l.lower() in languages) + + for lang in o_languages: + try: + locale = babel.Locale.parse(lang + '_' + territory) + ret_val.add(locale) + except babel.UnknownLocaleError: + continue + + return ret_val
+ + +
[docs]def get_engine_locale(searxng_locale, engine_locales, default=None): + """Return engine's language (aka locale) string that best fits to argument + ``searxng_locale``. + + Argument ``engine_locales`` is a python dict that maps *SearXNG locales* to + corresponding *engine locales*:: + + <engine>: { + # SearXNG string : engine-string + 'ca-ES' : 'ca_ES', + 'fr-BE' : 'fr_BE', + 'fr-CA' : 'fr_CA', + 'fr-CH' : 'fr_CH', + 'fr' : 'fr_FR', + ... + 'pl-PL' : 'pl_PL', + 'pt-PT' : 'pt_PT' + .. + 'zh' : 'zh' + 'zh_Hans' : 'zh' + 'zh_Hant' : 'zh_TW' + } + + .. hint:: + + The *SearXNG locale* string has to be known by babel! + + If there is no direct 1:1 mapping, this functions tries to narrow down + engine's language (locale). If no value can be determined by these + approximation attempts the ``default`` value is returned. + + Assumptions: + + A. When user select a language the results should be optimized according to + the selected language. + + B. When user select a language and a territory the results should be + optimized with first priority on terrirtory and second on language. + + First approximation rule (*by territory*): + + When the user selects a locale with terrirtory (and a language), the + territory has priority over the language. If any of the offical languages + in the terrirtory is supported by the engine (``engine_locales``) it will + be used. + + Second approximation rule (*by language*): + + If "First approximation rule" brings no result or the user selects only a + language without a terrirtory. Check in which territories the language + has an offical status and if one of these territories is supported by the + engine. + + """ + # pylint: disable=too-many-branches, too-many-return-statements + + engine_locale = engine_locales.get(searxng_locale) + + if engine_locale is not None: + # There was a 1:1 mapping (e.g. a region "fr-BE --> fr_BE" or a language + # "zh --> zh"), no need to narrow language-script nor territory. + return engine_locale + + try: + locale = babel.Locale.parse(searxng_locale, sep='-') + except babel.core.UnknownLocaleError: + try: + locale = babel.Locale.parse(searxng_locale.split('-')[0]) + except babel.core.UnknownLocaleError: + return default + + searxng_lang = language_tag(locale) + engine_locale = engine_locales.get(searxng_lang) + if engine_locale is not None: + # There was a 1:1 mapping (e.g. "zh-HK --> zh_Hant" or "zh-CN --> zh_Hans") + return engine_locale + + # SearXNG's selected locale is not supported by the engine .. + + if locale.territory: + # Try to narrow by *offical* languages in the territory (??-XX). + + for official_language in babel.languages.get_official_languages(locale.territory, de_facto=True): + searxng_locale = official_language + '-' + locale.territory + engine_locale = engine_locales.get(searxng_locale) + if engine_locale is not None: + return engine_locale + + # Engine does not support one of the offical languages in the territory or + # there is only a language selected without a territory. + + # Now lets have a look if the searxng_lang (the language selected by the + # user) is a offical language in other territories. If so, check if + # engine does support the searxng_lang in this other territory. + + if locale.language: + + terr_lang_dict = {} + for territory, langs in babel.core.get_global("territory_languages").items(): + if not langs.get(searxng_lang, {}).get('official_status'): + continue + terr_lang_dict[territory] = langs.get(searxng_lang) + + # first: check fr-FR, de-DE .. is supported by the engine + # exception: 'en' --> 'en-US' + + territory = locale.language.upper() + if territory == 'EN': + territory = 'US' + + if terr_lang_dict.get(territory): + searxng_locale = locale.language + '-' + territory + engine_locale = engine_locales.get(searxng_locale) + if engine_locale is not None: + return engine_locale + + # second: sort by population_percent and take first match + + # drawback of "population percent": if there is a terrirtory with a + # small number of people (e.g 100) but the majority speaks the + # language, then the percentage migth be 100% (--> 100 people) but in + # a different terrirtory with more people (e.g. 10.000) where only 10% + # speak the language the total amount of speaker is higher (--> 200 + # people). + # + # By example: The population of Saint-Martin is 33.000, of which 100% + # speak French, but this is less than the 30% of the approximately 2.5 + # million Belgian citizens + # + # - 'fr-MF', 'population_percent': 100.0, 'official_status': 'official' + # - 'fr-BE', 'population_percent': 38.0, 'official_status': 'official' + + terr_lang_list = [] + for k, v in terr_lang_dict.items(): + terr_lang_list.append((k, v)) + + for territory, _lang in sorted(terr_lang_list, key=lambda item: item[1]['population_percent'], reverse=True): + searxng_locale = locale.language + '-' + territory + engine_locale = engine_locales.get(searxng_locale) + if engine_locale is not None: + return engine_locale + + # No luck: narrow by "language from territory" and "territory from language" + # does not fit to a locale supported by the engine. + + if engine_locale is None: + engine_locale = default + + return default
+ + +
[docs]def match_locale(searxng_locale: str, locale_tag_list: List[str], fallback: Optional[str] = None) -> Optional[str]: + """Return tag from ``locale_tag_list`` that best fits to ``searxng_locale``. + + :param str searxng_locale: SearXNG's internal representation of locale (de, + de-DE, fr-BE, zh, zh-CN, zh-TW ..). + + :param list locale_tag_list: The list of locale tags to select from + + :param str fallback: fallback locale tag (if unset --> ``None``) + + The rules to find a match are implemented in :py:obj:`get_engine_locale`, + the ``engine_locales`` is build up by :py:obj:`build_engine_locales`. + + .. hint:: + + The *SearXNG locale* string and the members of ``locale_tag_list`` has to + be known by babel! The :py:obj:`ADDITIONAL_TRANSLATIONS` are used in the + UI and are not known by babel --> will be ignored. + """ + + # searxng_locale = 'es' + # locale_tag_list = ['es-AR', 'es-ES', 'es-MX'] + + if not searxng_locale: + return fallback + + locale = get_locale(searxng_locale) + if locale is None: + return fallback + + # normalize to a SearXNG locale that can be passed to get_engine_locale + + searxng_locale = language_tag(locale) + if locale.territory: + searxng_locale = region_tag(locale) + + # clean up locale_tag_list + + tag_list = [] + for tag in locale_tag_list: + if tag in ('all', 'auto') or tag in ADDITIONAL_TRANSLATIONS: + continue + tag_list.append(tag) + + # emulate fetch_traits + engine_locales = build_engine_locales(tag_list) + return get_engine_locale(searxng_locale, engine_locales, default=fallback)
+ + +
[docs]def build_engine_locales(tag_list: List[str]): + """From a list of locale tags a dictionary is build that can be passed by + argument ``engine_locales`` to :py:obj:`get_engine_locale`. This function + is mainly used by :py:obj:`match_locale` and is similar to what the + ``fetch_traits(..)`` function of engines do. + + If there are territory codes in the ``tag_list`` that have a *script code* + additional keys are added to the returned dictionary. + + .. code:: python + + >>> import locales + >>> engine_locales = locales.build_engine_locales(['en', 'en-US', 'zh', 'zh-CN', 'zh-TW']) + >>> engine_locales + { + 'en': 'en', 'en-US': 'en-US', + 'zh': 'zh', 'zh-CN': 'zh-CN', 'zh_Hans': 'zh-CN', + 'zh-TW': 'zh-TW', 'zh_Hant': 'zh-TW' + } + >>> get_engine_locale('zh-Hans', engine_locales) + 'zh-CN' + + This function is a good example to understand the language/region model + of SearXNG: + + SearXNG only distinguishes between **search languages** and **search + regions**, by adding the *script-tags*, languages with *script-tags* can + be assigned to the **regions** that SearXNG supports. + + """ + engine_locales = {} + + for tag in tag_list: + locale = get_locale(tag) + if locale is None: + logger.warning("build_engine_locales: skip locale tag %s / unknown by babel", tag) + continue + if locale.territory: + engine_locales[region_tag(locale)] = tag + if locale.script: + engine_locales[language_tag(locale)] = tag + else: + engine_locales[language_tag(locale)] = tag + return engine_locales
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/redislib.html b/_modules/searx/redislib.html new file mode 100644 index 000000000..b8b82df60 --- /dev/null +++ b/_modules/searx/redislib.html @@ -0,0 +1,349 @@ + + + + + + + + searx.redislib — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.redislib

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""A collection of convenient functions and redis/lua scripts.
+
+This code was partial inspired by the `Bullet-Proofing Lua Scripts in RedisPy`_
+article.
+
+.. _Bullet-Proofing Lua Scripts in RedisPy:
+   https://redis.com/blog/bullet-proofing-lua-scripts-in-redispy/
+
+"""
+
+import hmac
+
+from searx import get_setting
+
+LUA_SCRIPT_STORAGE = {}
+"""A global dictionary to cache client's ``Script`` objects, used by
+:py:obj:`lua_script_storage`"""
+
+
+
[docs]def lua_script_storage(client, script): + """Returns a redis :py:obj:`Script + <redis.commands.core.CoreCommands.register_script>` instance. + + Due to performance reason the ``Script`` object is instantiated only once + for a client (``client.register_script(..)``) and is cached in + :py:obj:`LUA_SCRIPT_STORAGE`. + + """ + + # redis connection can be closed, lets use the id() of the redis connector + # as key in the script-storage: + client_id = id(client) + + if LUA_SCRIPT_STORAGE.get(client_id) is None: + LUA_SCRIPT_STORAGE[client_id] = {} + + if LUA_SCRIPT_STORAGE[client_id].get(script) is None: + LUA_SCRIPT_STORAGE[client_id][script] = client.register_script(script) + + return LUA_SCRIPT_STORAGE[client_id][script]
+ + +PURGE_BY_PREFIX = """ +local prefix = tostring(ARGV[1]) +for i, name in ipairs(redis.call('KEYS', prefix .. '*')) do + redis.call('EXPIRE', name, 0) +end +""" + + +
[docs]def purge_by_prefix(client, prefix: str = "SearXNG_"): + """Purge all keys with ``prefix`` from database. + + Queries all keys in the database by the given prefix and set expire time to + zero. The default prefix will drop all keys which has been set by SearXNG + (drops SearXNG schema entirely from database). + + The implementation is the lua script from string :py:obj:`PURGE_BY_PREFIX`. + The lua script uses EXPIRE_ instead of DEL_: if there are a lot keys to + delete and/or their values are big, `DEL` could take more time and blocks + the command loop while `EXPIRE` turns back immediate. + + :param prefix: prefix of the key to delete (default: ``SearXNG_``) + :type name: str + + .. _EXPIRE: https://redis.io/commands/expire/ + .. _DEL: https://redis.io/commands/del/ + + """ + script = lua_script_storage(client, PURGE_BY_PREFIX) + script(args=[prefix])
+ + +
[docs]def secret_hash(name: str): + """Creates a hash of the ``name``. + + Combines argument ``name`` with the ``secret_key`` from :ref:`settings + server`. This function can be used to get a more anonymised name of a Redis + KEY. + + :param name: the name to create a secret hash for + :type name: str + """ + m = hmac.new(bytes(name, encoding='utf-8'), digestmod='sha256') + m.update(bytes(get_setting('server.secret_key'), encoding='utf-8')) + return m.hexdigest()
+ + +INCR_COUNTER = """ +local limit = tonumber(ARGV[1]) +local expire = tonumber(ARGV[2]) +local c_name = KEYS[1] + +local c = redis.call('GET', c_name) + +if not c then + c = redis.call('INCR', c_name) + if expire > 0 then + redis.call('EXPIRE', c_name, expire) + end +else + c = tonumber(c) + if limit == 0 or c < limit then + c = redis.call('INCR', c_name) + end +end +return c +""" + + +
[docs]def incr_counter(client, name: str, limit: int = 0, expire: int = 0): + """Increment a counter and return the new value. + + If counter with redis key ``SearXNG_counter_<name>`` does not exists it is + created with initial value 1 returned. The replacement ``<name>`` is a + *secret hash* of the value from argument ``name`` (see + :py:func:`secret_hash`). + + The implementation of the redis counter is the lua script from string + :py:obj:`INCR_COUNTER`. + + :param name: name of the counter + :type name: str + + :param expire: live-time of the counter in seconds (default ``None`` means + infinite). + :type expire: int / see EXPIRE_ + + :param limit: limit where the counter stops to increment (default ``None``) + :type limit: int / limit is 2^64 see INCR_ + + :return: value of the incremented counter + :type return: int + + .. _EXPIRE: https://redis.io/commands/expire/ + .. _INCR: https://redis.io/commands/incr/ + + A simple demo of a counter with expire time and limit:: + + >>> for i in range(6): + ... i, incr_counter(client, "foo", 3, 5) # max 3, duration 5 sec + ... time.sleep(1) # from the third call on max has been reached + ... + (0, 1) + (1, 2) + (2, 3) + (3, 3) + (4, 3) + (5, 1) + + """ + script = lua_script_storage(client, INCR_COUNTER) + name = "SearXNG_counter_" + secret_hash(name) + c = script(args=[limit, expire], keys=[name]) + return c
+ + +
[docs]def drop_counter(client, name): + """Drop counter with redis key ``SearXNG_counter_<name>`` + + The replacement ``<name>`` is a *secret hash* of the value from argument + ``name`` (see :py:func:`incr_counter` and :py:func:`incr_sliding_window`). + """ + name = "SearXNG_counter_" + secret_hash(name) + client.delete(name)
+ + +INCR_SLIDING_WINDOW = """ +local expire = tonumber(ARGV[1]) +local name = KEYS[1] +local current_time = redis.call('TIME') + +redis.call('ZREMRANGEBYSCORE', name, 0, current_time[1] - expire) +redis.call('ZADD', name, current_time[1], current_time[1] .. current_time[2]) +local result = redis.call('ZCOUNT', name, 0, current_time[1] + 1) +redis.call('EXPIRE', name, expire) +return result +""" + + +
[docs]def incr_sliding_window(client, name: str, duration: int): + """Increment a sliding-window counter and return the new value. + + If counter with redis key ``SearXNG_counter_<name>`` does not exists it is + created with initial value 1 returned. The replacement ``<name>`` is a + *secret hash* of the value from argument ``name`` (see + :py:func:`secret_hash`). + + :param name: name of the counter + :type name: str + + :param duration: live-time of the sliding window in seconds + :typeduration: int + + :return: value of the incremented counter + :type return: int + + The implementation of the redis counter is the lua script from string + :py:obj:`INCR_SLIDING_WINDOW`. The lua script uses `sorted sets in Redis`_ + to implement a sliding window for the redis key ``SearXNG_counter_<name>`` + (ZADD_). The current TIME_ is used to score the items in the sorted set and + the time window is moved by removing items with a score lower current time + minus *duration* time (ZREMRANGEBYSCORE_). + + The EXPIRE_ time (the duration of the sliding window) is refreshed on each + call (incrementation) and if there is no call in this duration, the sorted + set expires from the redis DB. + + The return value is the amount of items in the sorted set (ZCOUNT_), what + means the number of calls in the sliding window. + + .. _Sorted sets in Redis: + https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-5-sorted-sets-in-redis/ + .. _TIME: https://redis.io/commands/time/ + .. _ZADD: https://redis.io/commands/zadd/ + .. _EXPIRE: https://redis.io/commands/expire/ + .. _ZREMRANGEBYSCORE: https://redis.io/commands/zremrangebyscore/ + .. _ZCOUNT: https://redis.io/commands/zcount/ + + A simple demo of the sliding window:: + + >>> for i in range(5): + ... incr_sliding_window(client, "foo", 3) # duration 3 sec + ... time.sleep(1) # from the third call (second) on the window is moved + ... + 1 + 2 + 3 + 3 + 3 + >>> time.sleep(3) # wait until expire + >>> incr_sliding_window(client, "foo", 3) + 1 + + """ + script = lua_script_storage(client, INCR_SLIDING_WINDOW) + name = "SearXNG_counter_" + secret_hash(name) + c = script(args=[duration], keys=[name]) + return c
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search.html b/_modules/searx/search.html new file mode 100644 index 000000000..987d9acb9 --- /dev/null +++ b/_modules/searx/search.html @@ -0,0 +1,322 @@ + + + + + + + + searx.search — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+# pylint: disable=missing-module-docstring, too-few-public-methods
+
+import threading
+from copy import copy
+from timeit import default_timer
+from uuid import uuid4
+
+import flask
+from flask import copy_current_request_context
+import babel
+
+from searx import settings
+from searx.answerers import ask
+from searx.external_bang import get_bang_url
+from searx.results import ResultContainer
+from searx import logger
+from searx.plugins import plugins
+from searx.search.models import EngineRef, SearchQuery
+from searx.engines import load_engines
+from searx.network import initialize as initialize_network, check_network_configuration
+from searx.metrics import initialize as initialize_metrics, counter_inc, histogram_observe_time
+from searx.search.processors import PROCESSORS, initialize as initialize_processors
+from searx.search.checker import initialize as initialize_checker
+
+
+logger = logger.getChild('search')
+
+
+def initialize(settings_engines=None, enable_checker=False, check_network=False, enable_metrics=True):
+    settings_engines = settings_engines or settings['engines']
+    load_engines(settings_engines)
+    initialize_network(settings_engines, settings['outgoing'])
+    if check_network:
+        check_network_configuration()
+    initialize_metrics([engine['name'] for engine in settings_engines], enable_metrics)
+    initialize_processors(settings_engines)
+    if enable_checker:
+        initialize_checker()
+
+
+
+
+
+
[docs]class SearchWithPlugins(Search): + """Inherit from the Search class, add calls to the plugins.""" + + __slots__ = 'ordered_plugin_list', 'request' + + def __init__(self, search_query: SearchQuery, ordered_plugin_list, request: flask.Request): + super().__init__(search_query) + self.ordered_plugin_list = ordered_plugin_list + self.result_container.on_result = self._on_result + # pylint: disable=line-too-long + # get the "real" request to use it outside the Flask context. + # see + # * https://github.com/pallets/flask/blob/d01d26e5210e3ee4cbbdef12f05c886e08e92852/src/flask/globals.py#L55 + # * https://github.com/pallets/werkzeug/blob/3c5d3c9bd0d9ce64590f0af8997a38f3823b368d/src/werkzeug/local.py#L548-L559 + # * https://werkzeug.palletsprojects.com/en/2.0.x/local/#werkzeug.local.LocalProxy._get_current_object + # pylint: enable=line-too-long + self.request = request._get_current_object() + + def _on_result(self, result): + return plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result) + +
[docs] def search(self) -> ResultContainer: + if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self): + super().search() + + plugins.call(self.ordered_plugin_list, 'post_search', self.request, self) + + self.result_container.close() + + return self.result_container
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/models.html b/_modules/searx/search/models.html new file mode 100644 index 000000000..d4d036fea --- /dev/null +++ b/_modules/searx/search/models.html @@ -0,0 +1,236 @@ + + + + + + + + searx.search.models — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.models

+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import typing
+import babel
+
+
+
[docs]class EngineRef: + """Reference by names to an engine and category""" + + __slots__ = 'name', 'category' + + def __init__(self, name: str, category: str): + self.name = name + self.category = category + + def __repr__(self): + return "EngineRef({!r}, {!r})".format(self.name, self.category) + + def __eq__(self, other): + return self.name == other.name and self.category == other.category + + def __hash__(self): + return hash((self.name, self.category))
+ + +
[docs]class SearchQuery: + """container for all the search parameters (query, language, etc...)""" + + __slots__ = ( + 'query', + 'engineref_list', + 'lang', + 'locale', + 'safesearch', + 'pageno', + 'time_range', + 'timeout_limit', + 'external_bang', + 'engine_data', + ) + + def __init__( + self, + query: str, + engineref_list: typing.List[EngineRef], + lang: str = 'all', + safesearch: int = 0, + pageno: int = 1, + time_range: typing.Optional[str] = None, + timeout_limit: typing.Optional[float] = None, + external_bang: typing.Optional[str] = None, + engine_data: typing.Optional[typing.Dict[str, str]] = None, + ): + self.query = query + self.engineref_list = engineref_list + self.lang = lang + self.safesearch = safesearch + self.pageno = pageno + self.time_range = time_range + self.timeout_limit = timeout_limit + self.external_bang = external_bang + self.engine_data = engine_data or {} + + self.locale = None + if self.lang: + try: + self.locale = babel.Locale.parse(self.lang, sep='-') + except babel.core.UnknownLocaleError: + pass + + @property + def categories(self): + return list(set(map(lambda engineref: engineref.category, self.engineref_list))) + + def __repr__(self): + return "SearchQuery({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r})".format( + self.query, + self.engineref_list, + self.lang, + self.safesearch, + self.pageno, + self.time_range, + self.timeout_limit, + self.external_bang, + ) + + def __eq__(self, other): + return ( + self.query == other.query + and self.engineref_list == other.engineref_list + and self.lang == other.lang + and self.safesearch == other.safesearch + and self.pageno == other.pageno + and self.time_range == other.time_range + and self.timeout_limit == other.timeout_limit + and self.external_bang == other.external_bang + ) + + def __hash__(self): + return hash( + ( + self.query, + tuple(self.engineref_list), + self.lang, + self.safesearch, + self.pageno, + self.time_range, + self.timeout_limit, + self.external_bang, + ) + ) + + def __copy__(self): + return SearchQuery( + self.query, + self.engineref_list, + self.lang, + self.safesearch, + self.pageno, + self.time_range, + self.timeout_limit, + self.external_bang, + self.engine_data, + )
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/processors/abstract.html b/_modules/searx/search/processors/abstract.html new file mode 100644 index 000000000..8cf18c55f --- /dev/null +++ b/_modules/searx/search/processors/abstract.html @@ -0,0 +1,303 @@ + + + + + + + + searx.search.processors.abstract — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.processors.abstract

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+
+"""Abstract base classes for engine request processores.
+
+"""
+
+import threading
+from abc import abstractmethod, ABC
+from timeit import default_timer
+from typing import Dict, Union
+
+from searx import settings, logger
+from searx.engines import engines
+from searx.network import get_time_for_thread, get_network
+from searx.metrics import histogram_observe, counter_inc, count_exception, count_error
+from searx.exceptions import SearxEngineAccessDeniedException, SearxEngineResponseException
+from searx.utils import get_engine_from_settings
+
+logger = logger.getChild('searx.search.processor')
+SUSPENDED_STATUS: Dict[Union[int, str], 'SuspendedStatus'] = {}
+
+
+
[docs]class SuspendedStatus: + """Class to handle suspend state.""" + + __slots__ = 'suspend_end_time', 'suspend_reason', 'continuous_errors', 'lock' + + def __init__(self): + self.lock = threading.Lock() + self.continuous_errors = 0 + self.suspend_end_time = 0 + self.suspend_reason = None + + @property + def is_suspended(self): + return self.suspend_end_time >= default_timer() + + def suspend(self, suspended_time, suspend_reason): + with self.lock: + # update continuous_errors / suspend_end_time + self.continuous_errors += 1 + if suspended_time is None: + suspended_time = min( + settings['search']['max_ban_time_on_fail'], + self.continuous_errors * settings['search']['ban_time_on_fail'], + ) + self.suspend_end_time = default_timer() + suspended_time + self.suspend_reason = suspend_reason + logger.debug('Suspend for %i seconds', suspended_time) + + def resume(self): + with self.lock: + # reset the suspend variables + self.continuous_errors = 0 + self.suspend_end_time = 0 + self.suspend_reason = None
+ + +
[docs]class EngineProcessor(ABC): + """Base classes used for all types of reqest processores.""" + + __slots__ = 'engine', 'engine_name', 'lock', 'suspended_status', 'logger' + + def __init__(self, engine, engine_name: str): + self.engine = engine + self.engine_name = engine_name + self.logger = engines[engine_name].logger + key = get_network(self.engine_name) + key = id(key) if key else self.engine_name + self.suspended_status = SUSPENDED_STATUS.setdefault(key, SuspendedStatus()) + + def initialize(self): + try: + self.engine.init(get_engine_from_settings(self.engine_name)) + except SearxEngineResponseException as exc: + self.logger.warning('Fail to initialize // %s', exc) + except Exception: # pylint: disable=broad-except + self.logger.exception('Fail to initialize') + else: + self.logger.debug('Initialized') + + @property + def has_initialize_function(self): + return hasattr(self.engine, 'init') + + def handle_exception(self, result_container, exception_or_message, suspend=False): + # update result_container + if isinstance(exception_or_message, BaseException): + exception_class = exception_or_message.__class__ + module_name = getattr(exception_class, '__module__', 'builtins') + module_name = '' if module_name == 'builtins' else module_name + '.' + error_message = module_name + exception_class.__qualname__ + else: + error_message = exception_or_message + result_container.add_unresponsive_engine(self.engine_name, error_message) + # metrics + counter_inc('engine', self.engine_name, 'search', 'count', 'error') + if isinstance(exception_or_message, BaseException): + count_exception(self.engine_name, exception_or_message) + else: + count_error(self.engine_name, exception_or_message) + # suspend the engine ? + if suspend: + suspended_time = None + if isinstance(exception_or_message, SearxEngineAccessDeniedException): + suspended_time = exception_or_message.suspended_time + self.suspended_status.suspend(suspended_time, error_message) # pylint: disable=no-member + + def _extend_container_basic(self, result_container, start_time, search_results): + # update result_container + result_container.extend(self.engine_name, search_results) + engine_time = default_timer() - start_time + page_load_time = get_time_for_thread() + result_container.add_timing(self.engine_name, engine_time, page_load_time) + # metrics + counter_inc('engine', self.engine_name, 'search', 'count', 'successful') + histogram_observe(engine_time, 'engine', self.engine_name, 'time', 'total') + if page_load_time is not None: + histogram_observe(page_load_time, 'engine', self.engine_name, 'time', 'http') + + def extend_container(self, result_container, start_time, search_results): + if getattr(threading.current_thread(), '_timeout', False): + # the main thread is not waiting anymore + self.handle_exception(result_container, 'timeout', None) + else: + # check if the engine accepted the request + if search_results is not None: + self._extend_container_basic(result_container, start_time, search_results) + self.suspended_status.resume() + + def extend_container_if_suspended(self, result_container): + if self.suspended_status.is_suspended: + result_container.add_unresponsive_engine( + self.engine_name, self.suspended_status.suspend_reason, suspended=True + ) + return True + return False + +
[docs] def get_params(self, search_query, engine_category): + """Returns a set of (see :ref:`request params <engine request arguments>`) or + ``None`` if request is not supported. + + Not supported conditions (``None`` is returned): + + - A page-number > 1 when engine does not support paging. + - A time range when the engine does not support time range. + """ + # if paging is not supported, skip + if search_query.pageno > 1 and not self.engine.paging: + return None + + # if time_range is not supported, skip + if search_query.time_range and not self.engine.time_range_support: + return None + + params = {} + params['category'] = engine_category + params['pageno'] = search_query.pageno + params['safesearch'] = search_query.safesearch + params['time_range'] = search_query.time_range + params['engine_data'] = search_query.engine_data.get(self.engine_name, {}) + params['searxng_locale'] = search_query.lang + + # deprecated / vintage --> use params['searxng_locale'] + # + # Conditions related to engine's traits are implemented in engine.traits + # module. Don't do 'locale' decissions here in the abstract layer of the + # search processor, just pass the value from user's choice unchanged to + # the engine request. + + if hasattr(self.engine, 'language') and self.engine.language: + params['language'] = self.engine.language + else: + params['language'] = search_query.lang + + return params
+ + @abstractmethod + def search(self, query, params, result_container, start_time, timeout_limit): + pass + + def get_tests(self): + tests = getattr(self.engine, 'tests', None) + if tests is None: + tests = getattr(self.engine, 'additional_tests', {}) + tests.update(self.get_default_tests()) + return tests + + def get_default_tests(self): + return {}
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/processors/offline.html b/_modules/searx/search/processors/offline.html new file mode 100644 index 000000000..8a9c67f48 --- /dev/null +++ b/_modules/searx/search/processors/offline.html @@ -0,0 +1,140 @@ + + + + + + + + searx.search.processors.offline — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.processors.offline

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+
+"""Processores for engine-type: ``offline``
+
+"""
+
+from .abstract import EngineProcessor
+
+
+
[docs]class OfflineProcessor(EngineProcessor): + """Processor class used by ``offline`` engines""" + + engine_type = 'offline' + + def _search_basic(self, query, params): + return self.engine.search(query, params) + + def search(self, query, params, result_container, start_time, timeout_limit): + try: + search_results = self._search_basic(query, params) + self.extend_container(result_container, start_time, search_results) + except ValueError as e: + # do not record the error + self.logger.exception('engine {0} : invalid input : {1}'.format(self.engine_name, e)) + except Exception as e: # pylint: disable=broad-except + self.handle_exception(result_container, e) + self.logger.exception('engine {0} : exception : {1}'.format(self.engine_name, e))
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/processors/online.html b/_modules/searx/search/processors/online.html new file mode 100644 index 000000000..40c6466a5 --- /dev/null +++ b/_modules/searx/search/processors/online.html @@ -0,0 +1,350 @@ + + + + + + + + searx.search.processors.online — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.processors.online

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+
+"""Processores for engine-type: ``online``
+
+"""
+# pylint: disable=use-dict-literal
+
+from timeit import default_timer
+import asyncio
+import ssl
+import httpx
+
+import searx.network
+from searx.utils import gen_useragent
+from searx.exceptions import (
+    SearxEngineAccessDeniedException,
+    SearxEngineCaptchaException,
+    SearxEngineTooManyRequestsException,
+)
+from searx.metrics.error_recorder import count_error
+from .abstract import EngineProcessor
+
+
+
[docs]def default_request_params(): + """Default request parameters for ``online`` engines.""" + return { + # fmt: off + 'method': 'GET', + 'headers': {}, + 'data': {}, + 'url': '', + 'cookies': {}, + 'auth': None + # fmt: on + }
+ + +
[docs]class OnlineProcessor(EngineProcessor): + """Processor class for ``online`` engines.""" + + engine_type = 'online' + + def initialize(self): + # set timeout for all HTTP requests + searx.network.set_timeout_for_thread(self.engine.timeout, start_time=default_timer()) + # reset the HTTP total time + searx.network.reset_time_for_thread() + # set the network + searx.network.set_context_network_name(self.engine_name) + super().initialize() + +
[docs] def get_params(self, search_query, engine_category): + """Returns a set of :ref:`request params <engine request online>` or ``None`` + if request is not supported. + """ + params = super().get_params(search_query, engine_category) + if params is None: + return None + + # add default params + params.update(default_request_params()) + + # add an user agent + params['headers']['User-Agent'] = gen_useragent() + + # add Accept-Language header + if self.engine.send_accept_language_header and search_query.locale: + ac_lang = search_query.locale.language + if search_query.locale.territory: + ac_lang = "%s-%s,%s;q=0.9,*;q=0.5" % ( + search_query.locale.language, + search_query.locale.territory, + search_query.locale.language, + ) + params['headers']['Accept-Language'] = ac_lang + + self.logger.debug('HTTP Accept-Language: %s', params['headers'].get('Accept-Language', '')) + return params
+ + def _send_http_request(self, params): + # create dictionary which contain all + # information about the request + request_args = dict(headers=params['headers'], cookies=params['cookies'], auth=params['auth']) + + # verify + # if not None, it overrides the verify value defined in the network. + # use False to accept any server certificate + # use a path to file to specify a server certificate + verify = params.get('verify') + if verify is not None: + request_args['verify'] = params['verify'] + + # max_redirects + max_redirects = params.get('max_redirects') + if max_redirects: + request_args['max_redirects'] = max_redirects + + # allow_redirects + if 'allow_redirects' in params: + request_args['allow_redirects'] = params['allow_redirects'] + + # soft_max_redirects + soft_max_redirects = params.get('soft_max_redirects', max_redirects or 0) + + # raise_for_status + request_args['raise_for_httperror'] = params.get('raise_for_httperror', True) + + # specific type of request (GET or POST) + if params['method'] == 'GET': + req = searx.network.get + else: + req = searx.network.post + + request_args['data'] = params['data'] + + # send the request + response = req(params['url'], **request_args) + + # check soft limit of the redirect count + if len(response.history) > soft_max_redirects: + # unexpected redirect : record an error + # but the engine might still return valid results. + status_code = str(response.status_code or '') + reason = response.reason_phrase or '' + hostname = response.url.host + count_error( + self.engine_name, + '{} redirects, maximum: {}'.format(len(response.history), soft_max_redirects), + (status_code, reason, hostname), + secondary=True, + ) + + return response + + def _search_basic(self, query, params): + # update request parameters dependent on + # search-engine (contained in engines folder) + self.engine.request(query, params) + + # ignoring empty urls + if params['url'] is None: + return None + + if not params['url']: + return None + + # send request + response = self._send_http_request(params) + + # parse the response + response.search_params = params + return self.engine.response(response) + + def search(self, query, params, result_container, start_time, timeout_limit): + # set timeout for all HTTP requests + searx.network.set_timeout_for_thread(timeout_limit, start_time=start_time) + # reset the HTTP total time + searx.network.reset_time_for_thread() + # set the network + searx.network.set_context_network_name(self.engine_name) + + try: + # send requests and parse the results + search_results = self._search_basic(query, params) + self.extend_container(result_container, start_time, search_results) + except ssl.SSLError as e: + # requests timeout (connect or read) + self.handle_exception(result_container, e, suspend=True) + self.logger.error("SSLError {}, verify={}".format(e, searx.network.get_network(self.engine_name).verify)) + except (httpx.TimeoutException, asyncio.TimeoutError) as e: + # requests timeout (connect or read) + self.handle_exception(result_container, e, suspend=True) + self.logger.error( + "HTTP requests timeout (search duration : {0} s, timeout: {1} s) : {2}".format( + default_timer() - start_time, timeout_limit, e.__class__.__name__ + ) + ) + except (httpx.HTTPError, httpx.StreamError) as e: + # other requests exception + self.handle_exception(result_container, e, suspend=True) + self.logger.exception( + "requests exception (search duration : {0} s, timeout: {1} s) : {2}".format( + default_timer() - start_time, timeout_limit, e + ) + ) + except SearxEngineCaptchaException as e: + self.handle_exception(result_container, e, suspend=True) + self.logger.exception('CAPTCHA') + except SearxEngineTooManyRequestsException as e: + self.handle_exception(result_container, e, suspend=True) + self.logger.exception('Too many requests') + except SearxEngineAccessDeniedException as e: + self.handle_exception(result_container, e, suspend=True) + self.logger.exception('Searx is blocked') + except Exception as e: # pylint: disable=broad-except + self.handle_exception(result_container, e) + self.logger.exception('exception : {0}'.format(e)) + + def get_default_tests(self): + tests = {} + + tests['simple'] = { + 'matrix': {'query': ('life', 'computer')}, + 'result_container': ['not_empty'], + } + + if getattr(self.engine, 'paging', False): + tests['paging'] = { + 'matrix': {'query': 'time', 'pageno': (1, 2, 3)}, + 'result_container': ['not_empty'], + 'test': ['unique_results'], + } + if 'general' in self.engine.categories: + # avoid documentation about HTML tags (<time> and <input type="time">) + tests['paging']['matrix']['query'] = 'news' + + if getattr(self.engine, 'time_range', False): + tests['time_range'] = { + 'matrix': {'query': 'news', 'time_range': (None, 'day')}, + 'result_container': ['not_empty'], + 'test': ['unique_results'], + } + + if getattr(self.engine, 'traits', False): + tests['lang_fr'] = { + 'matrix': {'query': 'paris', 'lang': 'fr'}, + 'result_container': ['not_empty', ('has_language', 'fr')], + } + tests['lang_en'] = { + 'matrix': {'query': 'paris', 'lang': 'en'}, + 'result_container': ['not_empty', ('has_language', 'en')], + } + + if getattr(self.engine, 'safesearch', False): + tests['safesearch'] = {'matrix': {'query': 'porn', 'safesearch': (0, 2)}, 'test': ['unique_results']} + + return tests
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/processors/online_currency.html b/_modules/searx/search/processors/online_currency.html new file mode 100644 index 000000000..f80fd2c47 --- /dev/null +++ b/_modules/searx/search/processors/online_currency.html @@ -0,0 +1,187 @@ + + + + + + + + searx.search.processors.online_currency — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.processors.online_currency

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Processores for engine-type: ``online_currency``
+
+"""
+
+import unicodedata
+import re
+
+from searx.data import CURRENCIES
+from .online import OnlineProcessor
+
+parser_re = re.compile('.*?(\\d+(?:\\.\\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)', re.I)
+
+
+def normalize_name(name):
+    name = name.lower().replace('-', ' ').rstrip('s')
+    name = re.sub(' +', ' ', name)
+    return unicodedata.normalize('NFKD', name).lower()
+
+
+def name_to_iso4217(name):
+    name = normalize_name(name)
+    currency = CURRENCIES['names'].get(name, [name])
+    if isinstance(currency, str):
+        return currency
+    return currency[0]
+
+
+def iso4217_to_name(iso4217, language):
+    return CURRENCIES['iso4217'].get(iso4217, {}).get(language, iso4217)
+
+
+
[docs]class OnlineCurrencyProcessor(OnlineProcessor): + + """Processor class used by ``online_currency`` engines.""" + + engine_type = 'online_currency' + +
[docs] def get_params(self, search_query, engine_category): + """Returns a set of :ref:`request params <engine request online_currency>` + or ``None`` if search query does not match to :py:obj:`parser_re`.""" + + params = super().get_params(search_query, engine_category) + if params is None: + return None + + m = parser_re.match(search_query.query) + if not m: + return None + + amount_str, from_currency, to_currency = m.groups() + try: + amount = float(amount_str) + except ValueError: + return None + from_currency = name_to_iso4217(from_currency.strip()) + to_currency = name_to_iso4217(to_currency.strip()) + + params['amount'] = amount + params['from'] = from_currency + params['to'] = to_currency + params['from_name'] = iso4217_to_name(from_currency, 'en') + params['to_name'] = iso4217_to_name(to_currency, 'en') + return params
+ + def get_default_tests(self): + tests = {} + + tests['currency'] = { + 'matrix': {'query': '1337 usd in rmb'}, + 'result_container': ['has_answer'], + } + + return tests
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/processors/online_dictionary.html b/_modules/searx/search/processors/online_dictionary.html new file mode 100644 index 000000000..f7bf8fbd8 --- /dev/null +++ b/_modules/searx/search/processors/online_dictionary.html @@ -0,0 +1,173 @@ + + + + + + + + searx.search.processors.online_dictionary — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.processors.online_dictionary

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Processores for engine-type: ``online_dictionary``
+
+"""
+
+import re
+
+from searx.utils import is_valid_lang
+from .online import OnlineProcessor
+
+parser_re = re.compile('.*?([a-z]+)-([a-z]+) (.+)$', re.I)
+
+
+
[docs]class OnlineDictionaryProcessor(OnlineProcessor): + """Processor class used by ``online_dictionary`` engines.""" + + engine_type = 'online_dictionary' + +
[docs] def get_params(self, search_query, engine_category): + """Returns a set of :ref:`request params <engine request online_dictionary>` or + ``None`` if search query does not match to :py:obj:`parser_re`. + """ + params = super().get_params(search_query, engine_category) + if params is None: + return None + + m = parser_re.match(search_query.query) + if not m: + return None + + from_lang, to_lang, query = m.groups() + + from_lang = is_valid_lang(from_lang) + to_lang = is_valid_lang(to_lang) + + if not from_lang or not to_lang: + return None + + params['from_lang'] = from_lang + params['to_lang'] = to_lang + params['query'] = query + + return params
+ + def get_default_tests(self): + tests = {} + + if getattr(self.engine, 'paging', False): + tests['translation_paging'] = { + 'matrix': {'query': 'en-es house', 'pageno': (1, 2, 3)}, + 'result_container': ['not_empty', ('one_title_contains', 'house')], + 'test': ['unique_results'], + } + else: + tests['translation'] = { + 'matrix': {'query': 'en-es house'}, + 'result_container': ['not_empty', ('one_title_contains', 'house')], + } + + return tests
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/search/processors/online_url_search.html b/_modules/searx/search/processors/online_url_search.html new file mode 100644 index 000000000..21ee3118d --- /dev/null +++ b/_modules/searx/search/processors/online_url_search.html @@ -0,0 +1,158 @@ + + + + + + + + searx.search.processors.online_url_search — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.search.processors.online_url_search

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Processores for engine-type: ``online_url_search``
+
+"""
+
+import re
+from .online import OnlineProcessor
+
+re_search_urls = {
+    'http': re.compile(r'https?:\/\/[^ ]*'),
+    'ftp': re.compile(r'ftps?:\/\/[^ ]*'),
+    'data:image': re.compile('data:image/[^; ]*;base64,[^ ]*'),
+}
+
+
+
[docs]class OnlineUrlSearchProcessor(OnlineProcessor): + """Processor class used by ``online_url_search`` engines.""" + + engine_type = 'online_url_search' + +
[docs] def get_params(self, search_query, engine_category): + """Returns a set of :ref:`request params <engine request online>` or ``None`` if + search query does not match to :py:obj:`re_search_urls`. + """ + + params = super().get_params(search_query, engine_category) + if params is None: + return None + + url_match = False + search_urls = {} + + for k, v in re_search_urls.items(): + m = v.search(search_query.query) + v = None + if m: + url_match = True + v = m[0] + search_urls[k] = v + + if not url_match: + return None + + params['search_urls'] = search_urls + return params
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searx/utils.html b/_modules/searx/utils.html new file mode 100644 index 000000000..c2fe358d1 --- /dev/null +++ b/_modules/searx/utils.html @@ -0,0 +1,731 @@ + + + + + + + + searx.utils — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searx.utils

+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+# pyright: basic
+"""Utility functions for the engines
+
+"""
+import re
+import importlib
+import importlib.util
+import types
+
+from typing import Optional, Union, Any, Set, List, Dict, MutableMapping, Tuple, Callable
+from numbers import Number
+from os.path import splitext, join
+from random import choice
+from html.parser import HTMLParser
+from urllib.parse import urljoin, urlparse
+
+from lxml import html
+from lxml.etree import ElementBase, XPath, XPathError, XPathSyntaxError, _ElementStringResult, _ElementUnicodeResult
+
+from searx import settings
+from searx.data import USER_AGENTS, data_dir
+from searx.version import VERSION_TAG
+from searx.sxng_locales import sxng_locales
+from searx.exceptions import SearxXPathSyntaxException, SearxEngineXPathException
+from searx import logger
+
+
+logger = logger.getChild('utils')
+
+XPathSpecType = Union[str, XPath]
+
+_BLOCKED_TAGS = ('script', 'style')
+
+_ECMA_UNESCAPE4_RE = re.compile(r'%u([0-9a-fA-F]{4})', re.UNICODE)
+_ECMA_UNESCAPE2_RE = re.compile(r'%([0-9a-fA-F]{2})', re.UNICODE)
+
+_STORAGE_UNIT_VALUE: Dict[str, int] = {
+    'TB': 1024 * 1024 * 1024 * 1024,
+    'GB': 1024 * 1024 * 1024,
+    'MB': 1024 * 1024,
+    'TiB': 1000 * 1000 * 1000 * 1000,
+    'MiB': 1000 * 1000,
+    'KiB': 1000,
+}
+
+_XPATH_CACHE: Dict[str, XPath] = {}
+_LANG_TO_LC_CACHE: Dict[str, Dict[str, str]] = {}
+
+_FASTTEXT_MODEL: Optional["fasttext.FastText._FastText"] = None
+"""fasttext model to predict laguage of a search term"""
+
+SEARCH_LANGUAGE_CODES = frozenset([searxng_locale[0].split('-')[0] for searxng_locale in sxng_locales])
+"""Languages supported by most searxng engines (:py:obj:`searx.sxng_locales.sxng_locales`)."""
+
+
+class _NotSetClass:  # pylint: disable=too-few-public-methods
+    """Internal class for this module, do not create instance of this class.
+    Replace the None value, allow explicitly pass None as a function argument"""
+
+
+_NOTSET = _NotSetClass()
+
+
+
[docs]def searx_useragent() -> str: + """Return the searx User Agent""" + return 'searx/{searx_version} {suffix}'.format( + searx_version=VERSION_TAG, suffix=settings['outgoing']['useragent_suffix'] + ).strip()
+ + +
[docs]def gen_useragent(os_string: Optional[str] = None) -> str: + """Return a random browser User Agent + + See searx/data/useragents.json + """ + return USER_AGENTS['ua'].format(os=os_string or choice(USER_AGENTS['os']), version=choice(USER_AGENTS['versions']))
+ + +class _HTMLTextExtractorException(Exception): + """Internal exception raised when the HTML is invalid""" + + +class _HTMLTextExtractor(HTMLParser): # pylint: disable=W0223 # (see https://bugs.python.org/issue31844) + """Internal class to extract text from HTML""" + + def __init__(self): + HTMLParser.__init__(self) + self.result = [] + self.tags = [] + + def handle_starttag(self, tag, attrs): + self.tags.append(tag) + if tag == 'br': + self.result.append(' ') + + def handle_endtag(self, tag): + if not self.tags: + return + + if tag != self.tags[-1]: + raise _HTMLTextExtractorException() + + self.tags.pop() + + def is_valid_tag(self): + return not self.tags or self.tags[-1] not in _BLOCKED_TAGS + + def handle_data(self, data): + if not self.is_valid_tag(): + return + self.result.append(data) + + def handle_charref(self, name): + if not self.is_valid_tag(): + return + if name[0] in ('x', 'X'): + codepoint = int(name[1:], 16) + else: + codepoint = int(name) + self.result.append(chr(codepoint)) + + def handle_entityref(self, name): + if not self.is_valid_tag(): + return + # codepoint = htmlentitydefs.name2codepoint[name] + # self.result.append(chr(codepoint)) + self.result.append(name) + + def get_text(self): + return ''.join(self.result).strip() + + +
[docs]def html_to_text(html_str: str) -> str: + """Extract text from a HTML string + + Args: + * html_str (str): string HTML + + Returns: + * str: extracted text + + Examples: + >>> html_to_text('Example <span id="42">#2</span>') + 'Example #2' + + >>> html_to_text('<style>.span { color: red; }</style><span>Example</span>') + 'Example' + """ + html_str = html_str.replace('\n', ' ').replace('\r', ' ') + html_str = ' '.join(html_str.split()) + s = _HTMLTextExtractor() + try: + s.feed(html_str) + except _HTMLTextExtractorException: + logger.debug("HTMLTextExtractor: invalid HTML\n%s", html_str) + return s.get_text()
+ + +
[docs]def extract_text(xpath_results, allow_none: bool = False) -> Optional[str]: + """Extract text from a lxml result + + * if xpath_results is list, extract the text from each result and concat the list + * if xpath_results is a xml element, extract all the text node from it + ( text_content() method from lxml ) + * if xpath_results is a string element, then it's already done + """ + if isinstance(xpath_results, list): + # it's list of result : concat everything using recursive call + result = '' + for e in xpath_results: + result = result + (extract_text(e) or '') + return result.strip() + if isinstance(xpath_results, ElementBase): + # it's a element + text: str = html.tostring(xpath_results, encoding='unicode', method='text', with_tail=False) + text = text.strip().replace('\n', ' ') + return ' '.join(text.split()) + if isinstance(xpath_results, (_ElementStringResult, _ElementUnicodeResult, str, Number, bool)): + return str(xpath_results) + if xpath_results is None and allow_none: + return None + if xpath_results is None and not allow_none: + raise ValueError('extract_text(None, allow_none=False)') + raise ValueError('unsupported type')
+ + +
[docs]def normalize_url(url: str, base_url: str) -> str: + """Normalize URL: add protocol, join URL with base_url, add trailing slash if there is no path + + Args: + * url (str): Relative URL + * base_url (str): Base URL, it must be an absolute URL. + + Example: + >>> normalize_url('https://example.com', 'http://example.com/') + 'https://example.com/' + >>> normalize_url('//example.com', 'http://example.com/') + 'http://example.com/' + >>> normalize_url('//example.com', 'https://example.com/') + 'https://example.com/' + >>> normalize_url('/path?a=1', 'https://example.com') + 'https://example.com/path?a=1' + >>> normalize_url('', 'https://example.com') + 'https://example.com/' + >>> normalize_url('/test', '/path') + raise ValueError + + Raises: + * lxml.etree.ParserError + + Returns: + * str: normalized URL + """ + if url.startswith('//'): + # add http or https to this kind of url //example.com/ + parsed_search_url = urlparse(base_url) + url = '{0}:{1}'.format(parsed_search_url.scheme or 'http', url) + elif url.startswith('/'): + # fix relative url to the search engine + url = urljoin(base_url, url) + + # fix relative urls that fall through the crack + if '://' not in url: + url = urljoin(base_url, url) + + parsed_url = urlparse(url) + + # add a / at this end of the url if there is no path + if not parsed_url.netloc: + raise ValueError('Cannot parse url') + if not parsed_url.path: + url += '/' + + return url
+ + +
[docs]def extract_url(xpath_results, base_url) -> str: + """Extract and normalize URL from lxml Element + + Args: + * xpath_results (Union[List[html.HtmlElement], html.HtmlElement]): lxml Element(s) + * base_url (str): Base URL + + Example: + >>> def f(s, search_url): + >>> return searx.utils.extract_url(html.fromstring(s), search_url) + >>> f('<span id="42">https://example.com</span>', 'http://example.com/') + 'https://example.com/' + >>> f('https://example.com', 'http://example.com/') + 'https://example.com/' + >>> f('//example.com', 'http://example.com/') + 'http://example.com/' + >>> f('//example.com', 'https://example.com/') + 'https://example.com/' + >>> f('/path?a=1', 'https://example.com') + 'https://example.com/path?a=1' + >>> f('', 'https://example.com') + raise lxml.etree.ParserError + >>> searx.utils.extract_url([], 'https://example.com') + raise ValueError + + Raises: + * ValueError + * lxml.etree.ParserError + + Returns: + * str: normalized URL + """ + if xpath_results == []: + raise ValueError('Empty url resultset') + + url = extract_text(xpath_results) + if url: + return normalize_url(url, base_url) + raise ValueError('URL not found')
+ + +
[docs]def dict_subset(dictionary: MutableMapping, properties: Set[str]) -> Dict: + """Extract a subset of a dict + + Examples: + >>> dict_subset({'A': 'a', 'B': 'b', 'C': 'c'}, ['A', 'C']) + {'A': 'a', 'C': 'c'} + >>> >> dict_subset({'A': 'a', 'B': 'b', 'C': 'c'}, ['A', 'D']) + {'A': 'a'} + """ + return {k: dictionary[k] for k in properties if k in dictionary}
+ + +
[docs]def get_torrent_size(filesize: str, filesize_multiplier: str) -> Optional[int]: + """ + + Args: + * filesize (str): size + * filesize_multiplier (str): TB, GB, .... TiB, GiB... + + Returns: + * int: number of bytes + + Example: + >>> get_torrent_size('5', 'GB') + 5368709120 + >>> get_torrent_size('3.14', 'MiB') + 3140000 + """ + try: + multiplier = _STORAGE_UNIT_VALUE.get(filesize_multiplier, 1) + return int(float(filesize) * multiplier) + except ValueError: + return None
+ + +
[docs]def convert_str_to_int(number_str: str) -> int: + """Convert number_str to int or 0 if number_str is not a number.""" + if number_str.isdigit(): + return int(number_str) + return 0
+ + +
[docs]def int_or_zero(num: Union[List[str], str]) -> int: + """Convert num to int or 0. num can be either a str or a list. + If num is a list, the first element is converted to int (or return 0 if the list is empty). + If num is a str, see convert_str_to_int + """ + if isinstance(num, list): + if len(num) < 1: + return 0 + num = num[0] + return convert_str_to_int(num)
+ + +
[docs]def is_valid_lang(lang) -> Optional[Tuple[bool, str, str]]: + """Return language code and name if lang describe a language. + + Examples: + >>> is_valid_lang('zz') + None + >>> is_valid_lang('uk') + (True, 'uk', 'ukrainian') + >>> is_valid_lang(b'uk') + (True, 'uk', 'ukrainian') + >>> is_valid_lang('en') + (True, 'en', 'english') + >>> searx.utils.is_valid_lang('Español') + (True, 'es', 'spanish') + >>> searx.utils.is_valid_lang('Spanish') + (True, 'es', 'spanish') + """ + if isinstance(lang, bytes): + lang = lang.decode() + is_abbr = len(lang) == 2 + lang = lang.lower() + if is_abbr: + for l in sxng_locales: + if l[0][:2] == lang: + return (True, l[0][:2], l[3].lower()) + return None + for l in sxng_locales: + if l[1].lower() == lang or l[3].lower() == lang: + return (True, l[0][:2], l[3].lower()) + return None
+ + +def load_module(filename: str, module_dir: str) -> types.ModuleType: + modname = splitext(filename)[0] + modpath = join(module_dir, filename) + # and https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly + spec = importlib.util.spec_from_file_location(modname, modpath) + if not spec: + raise ValueError(f"Error loading '{modpath}' module") + module = importlib.util.module_from_spec(spec) + if not spec.loader: + raise ValueError(f"Error loading '{modpath}' module") + spec.loader.exec_module(module) + return module + + +
[docs]def to_string(obj: Any) -> str: + """Convert obj to its string representation.""" + if isinstance(obj, str): + return obj + if hasattr(obj, '__str__'): + return str(obj) + return repr(obj)
+ + +
[docs]def ecma_unescape(string: str) -> str: + """Python implementation of the unescape javascript function + + https://www.ecma-international.org/ecma-262/6.0/#sec-unescape-string + https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/unescape + + Examples: + >>> ecma_unescape('%u5409') + '吉' + >>> ecma_unescape('%20') + ' ' + >>> ecma_unescape('%F3') + 'ó' + """ + # "%u5409" becomes "吉" + string = _ECMA_UNESCAPE4_RE.sub(lambda e: chr(int(e.group(1), 16)), string) + # "%20" becomes " ", "%F3" becomes "ó" + string = _ECMA_UNESCAPE2_RE.sub(lambda e: chr(int(e.group(1), 16)), string) + return string
+ + +def get_string_replaces_function(replaces: Dict[str, str]) -> Callable[[str], str]: + rep = {re.escape(k): v for k, v in replaces.items()} + pattern = re.compile("|".join(rep.keys())) + + def func(text): + return pattern.sub(lambda m: rep[re.escape(m.group(0))], text) + + return func + + +
[docs]def get_engine_from_settings(name: str) -> Dict: + """Return engine configuration from settings.yml of a given engine name""" + + if 'engines' not in settings: + return {} + + for engine in settings['engines']: + if 'name' not in engine: + continue + if name == engine['name']: + return engine + + return {}
+ + +
[docs]def get_xpath(xpath_spec: XPathSpecType) -> XPath: + """Return cached compiled XPath + + There is no thread lock. + Worst case scenario, xpath_str is compiled more than one time. + + Args: + * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath + + Returns: + * result (bool, float, list, str): Results. + + Raises: + * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath + * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath + """ + if isinstance(xpath_spec, str): + result = _XPATH_CACHE.get(xpath_spec, None) + if result is None: + try: + result = XPath(xpath_spec) + except XPathSyntaxError as e: + raise SearxXPathSyntaxException(xpath_spec, str(e.msg)) from e + _XPATH_CACHE[xpath_spec] = result + return result + + if isinstance(xpath_spec, XPath): + return xpath_spec + + raise TypeError('xpath_spec must be either a str or a lxml.etree.XPath')
+ + +
[docs]def eval_xpath(element: ElementBase, xpath_spec: XPathSpecType): + """Equivalent of element.xpath(xpath_str) but compile xpath_str once for all. + See https://lxml.de/xpathxslt.html#xpath-return-values + + Args: + * element (ElementBase): [description] + * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath + + Returns: + * result (bool, float, list, str): Results. + + Raises: + * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath + * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath + * SearxEngineXPathException: Raise when the XPath can't be evaluated. + """ + xpath = get_xpath(xpath_spec) + try: + return xpath(element) + except XPathError as e: + arg = ' '.join([str(i) for i in e.args]) + raise SearxEngineXPathException(xpath_spec, arg) from e
+ + +
[docs]def eval_xpath_list(element: ElementBase, xpath_spec: XPathSpecType, min_len: Optional[int] = None): + """Same as eval_xpath, check if the result is a list + + Args: + * element (ElementBase): [description] + * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath + * min_len (int, optional): [description]. Defaults to None. + + Raises: + * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath + * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath + * SearxEngineXPathException: raise if the result is not a list + + Returns: + * result (bool, float, list, str): Results. + """ + result = eval_xpath(element, xpath_spec) + if not isinstance(result, list): + raise SearxEngineXPathException(xpath_spec, 'the result is not a list') + if min_len is not None and min_len > len(result): + raise SearxEngineXPathException(xpath_spec, 'len(xpath_str) < ' + str(min_len)) + return result
+ + +
[docs]def eval_xpath_getindex(elements: ElementBase, xpath_spec: XPathSpecType, index: int, default=_NOTSET): + """Call eval_xpath_list then get one element using the index parameter. + If the index does not exist, either aise an exception is default is not set, + other return the default value (can be None). + + Args: + * elements (ElementBase): lxml element to apply the xpath. + * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath. + * index (int): index to get + * default (Object, optional): Defaults if index doesn't exist. + + Raises: + * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath + * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath + * SearxEngineXPathException: if the index is not found. Also see eval_xpath. + + Returns: + * result (bool, float, list, str): Results. + """ + result = eval_xpath_list(elements, xpath_spec) + if -len(result) <= index < len(result): + return result[index] + if default == _NOTSET: + # raise an SearxEngineXPathException instead of IndexError + # to record xpath_spec + raise SearxEngineXPathException(xpath_spec, 'index ' + str(index) + ' not found') + return default
+ + +def _get_fasttext_model() -> "fasttext.FastText._FastText": + global _FASTTEXT_MODEL # pylint: disable=global-statement + if _FASTTEXT_MODEL is None: + import fasttext # pylint: disable=import-outside-toplevel + + # Monkey patch: prevent fasttext from showing a (useless) warning when loading a model. + fasttext.FastText.eprint = lambda x: None + _FASTTEXT_MODEL = fasttext.load_model(str(data_dir / 'lid.176.ftz')) + return _FASTTEXT_MODEL + + +
[docs]def detect_language(text: str, threshold: float = 0.3, only_search_languages: bool = False) -> Optional[str]: + """Detect the language of the ``text`` parameter. + + :param str text: The string whose language is to be detected. + + :param float threshold: Threshold filters the returned labels by a threshold + on probability. A choice of 0.3 will return labels with at least 0.3 + probability. + + :param bool only_search_languages: If ``True``, returns only supported + SearXNG search languages. see :py:obj:`searx.languages` + + :rtype: str, None + :returns: + The detected language code or ``None``. See below. + + :raises ValueError: If ``text`` is not a string. + + The language detection is done by using `a fork`_ of the fastText_ library + (`python fasttext`_). fastText_ distributes the `language identification + model`_, for reference: + + - `FastText.zip: Compressing text classification models`_ + - `Bag of Tricks for Efficient Text Classification`_ + + The `language identification model`_ support the language codes + (ISO-639-3):: + + af als am an ar arz as ast av az azb ba bar bcl be bg bh bn bo bpy br bs + bxr ca cbk ce ceb ckb co cs cv cy da de diq dsb dty dv el eml en eo es + et eu fa fi fr frr fy ga gd gl gn gom gu gv he hi hif hr hsb ht hu hy ia + id ie ilo io is it ja jbo jv ka kk km kn ko krc ku kv kw ky la lb lez li + lmo lo lrc lt lv mai mg mhr min mk ml mn mr mrj ms mt mwl my myv mzn nah + nap nds ne new nl nn no oc or os pa pam pfl pl pms pnb ps pt qu rm ro ru + rue sa sah sc scn sco sd sh si sk sl so sq sr su sv sw ta te tg th tk tl + tr tt tyv ug uk ur uz vec vep vi vls vo wa war wuu xal xmf yi yo yue zh + + By using ``only_search_languages=True`` the `language identification model`_ + is harmonized with the SearXNG's language (locale) model. General + conditions of SearXNG's locale model are: + + a. SearXNG's locale of a query is passed to the + :py:obj:`searx.locales.get_engine_locale` to get a language and/or region + code that is used by an engine. + + b. Most of SearXNG's engines do not support all the languages from `language + identification model`_ and there is also a discrepancy in the ISO-639-3 + (fastext) and ISO-639-2 (SearXNG)handling. Further more, in SearXNG the + locales like ``zh-TH`` (``zh-CN``) are mapped to ``zh_Hant`` + (``zh_Hans``) while the `language identification model`_ reduce both to + ``zh``. + + .. _a fork: https://github.com/searxng/fasttext-predict + .. _fastText: https://fasttext.cc/ + .. _python fasttext: https://pypi.org/project/fasttext/ + .. _language identification model: https://fasttext.cc/docs/en/language-identification.html + .. _Bag of Tricks for Efficient Text Classification: https://arxiv.org/abs/1607.01759 + .. _`FastText.zip: Compressing text classification models`: https://arxiv.org/abs/1612.03651 + + """ + if not isinstance(text, str): + raise ValueError('text must a str') + r = _get_fasttext_model().predict(text.replace('\n', ' '), k=1, threshold=threshold) + if isinstance(r, tuple) and len(r) == 2 and len(r[0]) > 0 and len(r[1]) > 0: + language = r[0][0].split('__label__')[1] + if only_search_languages and language not in SEARCH_LANGUAGE_CODES: + return None + return language + return None
+
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searxng_extra/standalone_searx.html b/_modules/searxng_extra/standalone_searx.html new file mode 100644 index 000000000..469b43f48 --- /dev/null +++ b/_modules/searxng_extra/standalone_searx.html @@ -0,0 +1,288 @@ + + + + + + + + searxng_extra.standalone_searx — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searxng_extra.standalone_searx

+#!/usr/bin/env python
+# lint: pylint
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# (C) Copyright Contributors to the SearXNG project.
+
+"""Script to run SearXNG from terminal.
+
+  DON'T USE THIS SCRIPT!!
+
+.. danger::
+
+   Be warned, using the ``standalone_searx.py`` won't give you privacy!
+
+   On the contrary, this script behaves like a SearXNG server: your IP is
+   exposed and tracked by all active engines (google, bing, qwant, ... ), with
+   every query!
+
+.. note::
+
+   This is an old and grumpy hack / SearXNG is a Flask application with
+   client/server structure, which can't be turned into a command line tool the
+   way it was done here.
+
+Getting categories without initiate the engine will only return `['general']`
+
+>>> import searx.engines
+... list(searx.engines.categories.keys())
+['general']
+>>> import searx.search
+... searx.search.initialize()
+... list(searx.engines.categories.keys())
+['general', 'it', 'science', 'images', 'news', 'videos', 'music', 'files', 'social media', 'map']
+
+Example to use this script:
+
+.. code::  bash
+
+    $ python3 searxng_extra/standalone_searx.py rain
+
+"""  # pylint: disable=line-too-long
+
+import argparse
+import sys
+from datetime import datetime
+from json import dumps
+from typing import Any, Dict, List, Optional
+
+import searx
+import searx.preferences
+import searx.query
+import searx.search
+import searx.webadapter
+
+EngineCategoriesVar = Optional[List[str]]
+
+
+
[docs]def get_search_query( + args: argparse.Namespace, engine_categories: EngineCategoriesVar = None +) -> searx.search.SearchQuery: + """Get search results for the query""" + if engine_categories is None: + engine_categories = list(searx.engines.categories.keys()) + try: + category = args.category.decode('utf-8') + except AttributeError: + category = args.category + form = { + "q": args.query, + "categories": category, + "pageno": str(args.pageno), + "language": args.lang, + "time_range": args.timerange, + } + preferences = searx.preferences.Preferences(['simple'], engine_categories, searx.engines.engines, []) + preferences.key_value_settings['safesearch'].parse(args.safesearch) + + search_query = searx.webadapter.get_search_query_from_webapp(preferences, form)[0] + return search_query
+ + +
[docs]def no_parsed_url(results: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """Remove parsed url from dict.""" + for result in results: + del result['parsed_url'] + return results
+ + +
[docs]def json_serial(obj: Any) -> Any: + """JSON serializer for objects not serializable by default json code. + + :raise TypeError: raised when **obj** is not serializable + """ + if isinstance(obj, datetime): + serial = obj.isoformat() + return serial + if isinstance(obj, bytes): + return obj.decode('utf8') + if isinstance(obj, set): + return list(obj) + raise TypeError("Type ({}) not serializable".format(type(obj)))
+ + +
[docs]def to_dict(search_query: searx.search.SearchQuery) -> Dict[str, Any]: + """Get result from parsed arguments.""" + result_container = searx.search.Search(search_query).search() + result_container_json = { + "search": { + "q": search_query.query, + "pageno": search_query.pageno, + "lang": search_query.lang, + "safesearch": search_query.safesearch, + "timerange": search_query.time_range, + }, + "results": no_parsed_url(result_container.get_ordered_results()), + "infoboxes": result_container.infoboxes, + "suggestions": list(result_container.suggestions), + "answers": list(result_container.answers), + "paging": result_container.paging, + "number_of_results": result_container.number_of_results, + } + return result_container_json
+ + +
[docs]def parse_argument( + args: Optional[List[str]] = None, category_choices: EngineCategoriesVar = None +) -> argparse.Namespace: + """Parse command line. + + :raise SystemExit: Query argument required on `args` + + Examples: + + >>> import importlib + ... # load module + ... spec = importlib.util.spec_from_file_location( + ... 'utils.standalone_searx', 'utils/standalone_searx.py') + ... sas = importlib.util.module_from_spec(spec) + ... spec.loader.exec_module(sas) + ... sas.parse_argument() + usage: ptipython [-h] [--category [{general}]] [--lang [LANG]] [--pageno [PAGENO]] [--safesearch [{0,1,2}]] [--timerange [{day,week,month,year}]] + query + SystemExit: 2 + >>> sas.parse_argument(['rain']) + Namespace(category='general', lang='all', pageno=1, query='rain', safesearch='0', timerange=None) + """ # noqa: E501 + if not category_choices: + category_choices = list(searx.engines.categories.keys()) + parser = argparse.ArgumentParser(description='Standalone searx.') + parser.add_argument('query', type=str, help='Text query') + parser.add_argument( + '--category', type=str, nargs='?', choices=category_choices, default='general', help='Search category' + ) + parser.add_argument('--lang', type=str, nargs='?', default='all', help='Search language') + parser.add_argument('--pageno', type=int, nargs='?', default=1, help='Page number starting from 1') + parser.add_argument( + '--safesearch', + type=str, + nargs='?', + choices=['0', '1', '2'], + default='0', + help='Safe content filter from none to strict', + ) + parser.add_argument( + '--timerange', type=str, nargs='?', choices=['day', 'week', 'month', 'year'], help='Filter by time range' + ) + return parser.parse_args(args)
+ + +if __name__ == '__main__': + settings_engines = searx.settings['engines'] + searx.search.load_engines(settings_engines) + engine_cs = list(searx.engines.categories.keys()) + prog_args = parse_argument(category_choices=engine_cs) + searx.search.initialize_network(settings_engines, searx.settings['outgoing']) + searx.search.check_network_configuration() + searx.search.initialize_metrics([engine['name'] for engine in settings_engines]) + searx.search.initialize_processors(settings_engines) + search_q = get_search_query(prog_args, engine_categories=engine_cs) + res_dict = to_dict(search_q) + sys.stdout.write(dumps(res_dict, sort_keys=True, indent=4, ensure_ascii=False, default=json_serial)) +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searxng_extra/update/update_engine_descriptions.html b/_modules/searxng_extra/update/update_engine_descriptions.html new file mode 100644 index 000000000..76414a241 --- /dev/null +++ b/_modules/searxng_extra/update/update_engine_descriptions.html @@ -0,0 +1,478 @@ + + + + + + + + searxng_extra.update.update_engine_descriptions — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searxng_extra.update.update_engine_descriptions

+#!/usr/bin/env python
+# lint: pylint
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+"""Fetch website description from websites and from
+:origin:`searx/engines/wikidata.py` engine.
+
+Output file: :origin:`searx/data/engine_descriptions.json`.
+
+"""
+
+# pylint: disable=invalid-name, global-statement
+
+import json
+from urllib.parse import urlparse
+from os.path import join
+
+from lxml.html import fromstring
+
+from searx.engines import wikidata, set_loggers
+from searx.utils import extract_text, searx_useragent
+from searx.locales import LOCALE_NAMES, locales_initialize, match_locale
+from searx import searx_dir
+from searx.utils import gen_useragent, detect_language
+import searx.search
+import searx.network
+
+set_loggers(wikidata, 'wikidata')
+locales_initialize()
+
+# you can run the query in https://query.wikidata.org
+# replace %IDS% by Wikidata entities separated by spaces with the prefix wd:
+# for example wd:Q182496 wd:Q1540899
+# replace %LANGUAGES_SPARQL% by languages
+SPARQL_WIKIPEDIA_ARTICLE = """
+SELECT DISTINCT ?item ?name ?article ?lang
+WHERE {
+  hint:Query hint:optimizer "None".
+  VALUES ?item { %IDS% }
+  ?article schema:about ?item ;
+              schema:inLanguage ?lang ;
+              schema:name ?name ;
+              schema:isPartOf [ wikibase:wikiGroup "wikipedia" ] .
+  FILTER(?lang in (%LANGUAGES_SPARQL%)) .
+  FILTER (!CONTAINS(?name, ':')) .
+}
+ORDER BY ?item ?lang
+"""
+
+SPARQL_DESCRIPTION = """
+SELECT DISTINCT ?item ?itemDescription
+WHERE {
+  VALUES ?item { %IDS% }
+  ?item schema:description ?itemDescription .
+  FILTER (lang(?itemDescription) in (%LANGUAGES_SPARQL%))
+}
+ORDER BY ?itemLang
+"""
+
+NOT_A_DESCRIPTION = [
+    'web site',
+    'site web',
+    'komputa serĉilo',
+    'interreta serĉilo',
+    'bilaketa motor',
+    'web search engine',
+    'wikimedia täpsustuslehekülg',
+]
+
+SKIP_ENGINE_SOURCE = [
+    # fmt: off
+    ('gitlab', 'wikidata')
+    # descriptions are about wikipedia disambiguation pages
+    # fmt: on
+]
+
+WIKIPEDIA_LANGUAGES = {}
+LANGUAGES_SPARQL = ''
+IDS = None
+WIKIPEDIA_LANGUAGE_VARIANTS = {'zh_Hant': 'zh-tw'}
+
+
+descriptions = {}
+wd_to_engine_name = {}
+
+
+def normalize_description(description):
+    for c in [chr(c) for c in range(0, 31)]:
+        description = description.replace(c, ' ')
+    description = ' '.join(description.strip().split())
+    return description
+
+
+def update_description(engine_name, lang, description, source, replace=True):
+    if not isinstance(description, str):
+        return
+    description = normalize_description(description)
+    if description.lower() == engine_name.lower():
+        return
+    if description.lower() in NOT_A_DESCRIPTION:
+        return
+    if (engine_name, source) in SKIP_ENGINE_SOURCE:
+        return
+    if ' ' not in description:
+        # skip unique word description (like "website")
+        return
+    if replace or lang not in descriptions[engine_name]:
+        descriptions[engine_name][lang] = [description, source]
+
+
+def get_wikipedia_summary(wikipedia_url, searxng_locale):
+    # get the REST API URL from the HTML URL
+
+    # Headers
+    headers = {'User-Agent': searx_useragent()}
+
+    if searxng_locale in WIKIPEDIA_LANGUAGE_VARIANTS:
+        headers['Accept-Language'] = WIKIPEDIA_LANGUAGE_VARIANTS.get(searxng_locale)
+
+    # URL path : from HTML URL to REST API URL
+    parsed_url = urlparse(wikipedia_url)
+    # remove the /wiki/ prefix
+    article_name = parsed_url.path.split('/wiki/')[1]
+    # article_name is already encoded but not the / which is required for the REST API call
+    encoded_article_name = article_name.replace('/', '%2F')
+    path = '/api/rest_v1/page/summary/' + encoded_article_name
+    wikipedia_rest_url = parsed_url._replace(path=path).geturl()
+    try:
+        response = searx.network.get(wikipedia_rest_url, headers=headers, timeout=10)
+        response.raise_for_status()
+    except Exception as e:  # pylint: disable=broad-except
+        print("     ", wikipedia_url, e)
+        return None
+    api_result = json.loads(response.text)
+    return api_result.get('extract')
+
+
+def get_website_description(url, lang1, lang2=None):
+    headers = {
+        'User-Agent': gen_useragent(),
+        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
+        'DNT': '1',
+        'Upgrade-Insecure-Requests': '1',
+        'Sec-GPC': '1',
+        'Cache-Control': 'max-age=0',
+    }
+    if lang1 is not None:
+        lang_list = [lang1]
+        if lang2 is not None:
+            lang_list.append(lang2)
+        headers['Accept-Language'] = f'{",".join(lang_list)};q=0.8'
+    try:
+        response = searx.network.get(url, headers=headers, timeout=10)
+        response.raise_for_status()
+    except Exception:  # pylint: disable=broad-except
+        return (None, None)
+
+    try:
+        html = fromstring(response.text)
+    except ValueError:
+        html = fromstring(response.content)
+
+    description = extract_text(html.xpath('/html/head/meta[@name="description"]/@content'))
+    if not description:
+        description = extract_text(html.xpath('/html/head/meta[@property="og:description"]/@content'))
+    if not description:
+        description = extract_text(html.xpath('/html/head/title'))
+    lang = extract_text(html.xpath('/html/@lang'))
+    if lang is None and len(lang1) > 0:
+        lang = lang1
+    lang = detect_language(description) or lang or 'en'
+    lang = lang.split('_')[0]
+    lang = lang.split('-')[0]
+    return (lang, description)
+
+
+def initialize():
+    global IDS, LANGUAGES_SPARQL
+    searx.search.initialize()
+    wikipedia_engine = searx.engines.engines['wikipedia']
+
+    locale2lang = {'nl-BE': 'nl'}
+    for sxng_ui_lang in LOCALE_NAMES:
+
+        sxng_ui_alias = locale2lang.get(sxng_ui_lang, sxng_ui_lang)
+        wiki_lang = None
+
+        if sxng_ui_alias in wikipedia_engine.traits.custom['WIKIPEDIA_LANGUAGES']:
+            wiki_lang = sxng_ui_alias
+        if not wiki_lang:
+            wiki_lang = wikipedia_engine.traits.get_language(sxng_ui_alias)
+        if not wiki_lang:
+            print(f"WIKIPEDIA_LANGUAGES missing {sxng_ui_lang}")
+            continue
+        WIKIPEDIA_LANGUAGES[sxng_ui_lang] = wiki_lang
+
+    LANGUAGES_SPARQL = ', '.join(f"'{l}'" for l in set(WIKIPEDIA_LANGUAGES.values()))
+    for engine_name, engine in searx.engines.engines.items():
+        descriptions[engine_name] = {}
+        wikidata_id = getattr(engine, "about", {}).get('wikidata_id')
+        if wikidata_id is not None:
+            wd_to_engine_name.setdefault(wikidata_id, set()).add(engine_name)
+
+    IDS = ' '.join(list(map(lambda wd_id: 'wd:' + wd_id, wd_to_engine_name.keys())))
+
+
+def fetch_wikidata_descriptions():
+    print('Fetching wikidata descriptions')
+    searx.network.set_timeout_for_thread(60)
+    result = wikidata.send_wikidata_query(
+        SPARQL_DESCRIPTION.replace('%IDS%', IDS).replace('%LANGUAGES_SPARQL%', LANGUAGES_SPARQL)
+    )
+    if result is not None:
+        for binding in result['results']['bindings']:
+            wikidata_id = binding['item']['value'].replace('http://www.wikidata.org/entity/', '')
+            wikidata_lang = binding['itemDescription']['xml:lang']
+            desc = binding['itemDescription']['value']
+            for engine_name in wd_to_engine_name[wikidata_id]:
+                for searxng_locale in LOCALE_NAMES:
+                    if WIKIPEDIA_LANGUAGES[searxng_locale] != wikidata_lang:
+                        continue
+                    print(
+                        f"    engine: {engine_name:20} / wikidata_lang: {wikidata_lang:5}",
+                        f"/ len(wikidata_desc): {len(desc)}",
+                    )
+                    update_description(engine_name, searxng_locale, desc, 'wikidata')
+
+
+def fetch_wikipedia_descriptions():
+    print('Fetching wikipedia descriptions')
+    result = wikidata.send_wikidata_query(
+        SPARQL_WIKIPEDIA_ARTICLE.replace('%IDS%', IDS).replace('%LANGUAGES_SPARQL%', LANGUAGES_SPARQL)
+    )
+    if result is not None:
+        for binding in result['results']['bindings']:
+            wikidata_id = binding['item']['value'].replace('http://www.wikidata.org/entity/', '')
+            wikidata_lang = binding['name']['xml:lang']
+            wikipedia_url = binding['article']['value']  # for example the URL https://de.wikipedia.org/wiki/PubMed
+            for engine_name in wd_to_engine_name[wikidata_id]:
+                for searxng_locale in LOCALE_NAMES:
+                    if WIKIPEDIA_LANGUAGES[searxng_locale] != wikidata_lang:
+                        continue
+                    desc = get_wikipedia_summary(wikipedia_url, searxng_locale)
+                    if not desc:
+                        continue
+                    print(
+                        f"    engine: {engine_name:20} / wikidata_lang: {wikidata_lang:5}",
+                        f"/ len(wikipedia_desc): {len(desc)}",
+                    )
+                    update_description(engine_name, searxng_locale, desc, 'wikipedia')
+
+
+def normalize_url(url):
+    url = url.replace('{language}', 'en')
+    url = urlparse(url)._replace(path='/', params='', query='', fragment='').geturl()
+    url = url.replace('https://api.', 'https://')
+    return url
+
+
+def fetch_website_description(engine_name, website):
+    print(f"- fetch website descr: {engine_name} / {website}")
+    default_lang, default_description = get_website_description(website, None, None)
+
+    if default_lang is None or default_description is None:
+        # the front page can't be fetched: skip this engine
+        return
+
+    # to specify an order in where the most common languages are in front of the
+    # language list ..
+    languages = ['en', 'es', 'pt', 'ru', 'tr', 'fr']
+    languages = languages + [l for l in LOCALE_NAMES if l not in languages]
+
+    previous_matched_lang = None
+    previous_count = 0
+
+    for lang in languages:
+
+        if lang in descriptions[engine_name]:
+            continue
+
+        fetched_lang, desc = get_website_description(website, lang, WIKIPEDIA_LANGUAGES[lang])
+        if fetched_lang is None or desc is None:
+            continue
+
+        # check if desc changed with the different lang values
+
+        if fetched_lang == previous_matched_lang:
+            previous_count += 1
+            if previous_count == 6:
+                # the website has returned the same description for 6 different languages in Accept-Language header
+                # stop now
+                break
+        else:
+            previous_matched_lang = fetched_lang
+            previous_count = 0
+
+        # Don't trust in the value of fetched_lang, some websites return
+        # for some inappropriate values, by example bing-images::
+        #
+        #   requested lang: zh-Hans-CN / fetched lang: ceb / desc: 查看根据您的兴趣量身定制的提要
+        #
+        # The lang ceb is "Cebuano" but the description is given in zh-Hans-CN
+
+        print(
+            f"    engine: {engine_name:20} / requested lang:{lang:7}"
+            f" / fetched lang: {fetched_lang:7} / len(desc): {len(desc)}"
+        )
+
+        matched_lang = match_locale(fetched_lang, LOCALE_NAMES.keys(), fallback=lang)
+        update_description(engine_name, matched_lang, desc, website, replace=False)
+
+
+def fetch_website_descriptions():
+    print('Fetching website descriptions')
+    for engine_name, engine in searx.engines.engines.items():
+        website = getattr(engine, "about", {}).get('website')
+        if website is None and hasattr(engine, "search_url"):
+            website = normalize_url(getattr(engine, "search_url"))
+        if website is None and hasattr(engine, "base_url"):
+            website = normalize_url(getattr(engine, "base_url"))
+        if website is not None:
+            fetch_website_description(engine_name, website)
+
+
+def get_engine_descriptions_filename():
+    return join(join(searx_dir, "data"), "engine_descriptions.json")
+
+
+
[docs]def get_output(): + """ + From descriptions[engine][language] = [description, source] + To + + * output[language][engine] = description_and_source + * description_and_source can be: + * [description, source] + * description (if source = "wikipedia") + * [f"engine:lang", "ref"] (reference to another existing description) + """ + output = {locale: {} for locale in LOCALE_NAMES} + + seen_descriptions = {} + + for engine_name, lang_descriptions in descriptions.items(): + for language, description in lang_descriptions.items(): + if description[0] in seen_descriptions: + ref = seen_descriptions[description[0]] + description = [f'{ref[0]}:{ref[1]}', 'ref'] + else: + seen_descriptions[description[0]] = (engine_name, language) + if description[1] == 'wikipedia': + description = description[0] + output.setdefault(language, {}).setdefault(engine_name, description) + + return output
+ + +def main(): + initialize() + fetch_wikidata_descriptions() + fetch_wikipedia_descriptions() + fetch_website_descriptions() + + output = get_output() + with open(get_engine_descriptions_filename(), 'w', encoding='utf8') as f: + f.write(json.dumps(output, indent=1, separators=(',', ':'), ensure_ascii=False)) + + +if __name__ == "__main__": + main() +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searxng_extra/update/update_engine_traits.html b/_modules/searxng_extra/update/update_engine_traits.html new file mode 100644 index 000000000..d964a8292 --- /dev/null +++ b/_modules/searxng_extra/update/update_engine_traits.html @@ -0,0 +1,306 @@ + + + + + + + + searxng_extra.update.update_engine_traits — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searxng_extra.update.update_engine_traits

+#!/usr/bin/env python
+# lint: pylint
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Update :py:obj:`searx.enginelib.traits.EngineTraitsMap` and :origin:`searx/languages.py`
+
+:py:obj:`searx.enginelib.traits.EngineTraitsMap.ENGINE_TRAITS_FILE`:
+  Persistence of engines traits, fetched from the engines.
+
+:origin:`searx/languages.py`
+  Is generated  from intersecting each engine's supported traits.
+
+The script :origin:`searxng_extra/update/update_engine_traits.py` is called in
+the :origin:`CI Update data ... <.github/workflows/data-update.yml>`
+
+"""
+
+# pylint: disable=invalid-name
+from unicodedata import lookup
+from pathlib import Path
+from pprint import pformat
+import babel
+
+from searx import settings, searx_dir
+from searx import network
+from searx.engines import load_engines
+from searx.enginelib.traits import EngineTraitsMap
+
+# Output files.
+languages_file = Path(searx_dir) / 'sxng_locales.py'
+languages_file_header = """\
+# -*- coding: utf-8 -*-
+'''List of SearXNG's locale codes.
+
+This file is generated automatically by::
+
+   ./manage pyenv.cmd searxng_extra/update/update_engine_traits.py
+'''
+
+sxng_locales = (
+"""
+languages_file_footer = """,
+)
+'''
+A list of five-digit tuples:
+
+0. SearXNG's internal locale tag (a language or region tag)
+1. Name of the language (:py:obj:`babel.core.Locale.get_language_name`)
+2. For region tags the name of the region (:py:obj:`babel.core.Locale.get_territory_name`).
+   Empty string for language tags.
+3. English language name (from :py:obj:`babel.core.Locale.english_name`)
+4. Unicode flag (emoji) that fits to SearXNG's internal region tag. Languages
+   are represented by a globe (\U0001F310)
+
+.. code:: python
+
+   ('en',    'English', '',              'English', '\U0001f310'),
+   ('en-CA', 'English', 'Canada',        'English', '\U0001f1e8\U0001f1e6'),
+   ('en-US', 'English', 'United States', 'English', '\U0001f1fa\U0001f1f8'),
+   ..
+   ('fr',    'Français', '',             'French',  '\U0001f310'),
+   ('fr-BE', 'Français', 'Belgique',     'French',  '\U0001f1e7\U0001f1ea'),
+   ('fr-CA', 'Français', 'Canada',       'French',  '\U0001f1e8\U0001f1e6'),
+
+:meta hide-value:
+'''
+"""
+
+
+lang2emoji = {
+    'ha': '\U0001F1F3\U0001F1EA',  # Hausa / Niger
+    'bs': '\U0001F1E7\U0001F1E6',  # Bosnian / Bosnia & Herzegovina
+    'jp': '\U0001F1EF\U0001F1F5',  # Japanese
+    'ua': '\U0001F1FA\U0001F1E6',  # Ukrainian
+    'he': '\U0001F1EE\U0001F1F1',  # Hebrew
+}
+
+
+def main():
+    load_engines(settings['engines'])
+    # traits_map = EngineTraitsMap.from_data()
+    traits_map = fetch_traits_map()
+    sxng_tag_list = filter_locales(traits_map)
+    write_languages_file(sxng_tag_list)
+
+
+
[docs]def fetch_traits_map(): + """Fetchs supported languages for each engine and writes json file with those.""" + network.set_timeout_for_thread(10.0) + + def log(msg): + print(msg) + + traits_map = EngineTraitsMap.fetch_traits(log=log) + print("fetched properties from %s engines" % len(traits_map)) + print("write json file: %s" % traits_map.ENGINE_TRAITS_FILE) + traits_map.save_data() + return traits_map
+ + +
[docs]def filter_locales(traits_map: EngineTraitsMap): + """Filter language & region tags by a threshold.""" + + min_eng_per_region = 11 + min_eng_per_lang = 13 + + _ = {} + for eng in traits_map.values(): + for reg in eng.regions.keys(): + _[reg] = _.get(reg, 0) + 1 + + regions = set(k for k, v in _.items() if v >= min_eng_per_region) + lang_from_region = set(k.split('-')[0] for k in regions) + + _ = {} + for eng in traits_map.values(): + for lang in eng.languages.keys(): + # ignore script types like zh_Hant, zh_Hans or sr_Latin, pa_Arab (they + # already counted by existence of 'zh' or 'sr', 'pa') + if '_' in lang: + # print("ignore %s" % lang) + continue + _[lang] = _.get(lang, 0) + 1 + + languages = set(k for k, v in _.items() if v >= min_eng_per_lang) + + sxng_tag_list = set() + sxng_tag_list.update(regions) + sxng_tag_list.update(lang_from_region) + sxng_tag_list.update(languages) + + return sxng_tag_list
+ + +def write_languages_file(sxng_tag_list): + + language_codes = [] + + for sxng_tag in sorted(sxng_tag_list): + sxng_locale: babel.Locale = babel.Locale.parse(sxng_tag, sep='-') + + flag = get_unicode_flag(sxng_locale) or '' + + item = ( + sxng_tag, + sxng_locale.get_language_name().title(), + sxng_locale.get_territory_name() or '', + sxng_locale.english_name.split(' (')[0], + UnicodeEscape(flag), + ) + + language_codes.append(item) + + language_codes = tuple(language_codes) + + with open(languages_file, 'w', encoding='utf-8') as new_file: + file_content = "{header} {language_codes}{footer}".format( + header=languages_file_header, + language_codes=pformat(language_codes, width=120, indent=4)[1:-1], + footer=languages_file_footer, + ) + new_file.write(file_content) + new_file.close() + + +
[docs]class UnicodeEscape(str): + """Escape unicode string in :py:obj:`pprint.pformat`""" + + def __repr__(self): + return "'" + "".join([chr(c) for c in self.encode('unicode-escape')]) + "'"
+ + +
[docs]def get_unicode_flag(locale: babel.Locale): + """Determine a unicode flag (emoji) that fits to the ``locale``""" + + emoji = lang2emoji.get(locale.language) + if emoji: + return emoji + + if not locale.territory: + return '\U0001F310' + + emoji = lang2emoji.get(locale.territory.lower()) + if emoji: + return emoji + + try: + c1 = lookup('REGIONAL INDICATOR SYMBOL LETTER ' + locale.territory[0]) + c2 = lookup('REGIONAL INDICATOR SYMBOL LETTER ' + locale.territory[1]) + # print("OK : %s --> %s%s" % (locale, c1, c2)) + except KeyError as exc: + print("ERROR: %s --> %s" % (locale, exc)) + return None + + return c1 + c2
+ + +if __name__ == "__main__": + main() +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/_modules/searxng_extra/update/update_external_bangs.html b/_modules/searxng_extra/update/update_external_bangs.html new file mode 100644 index 000000000..a69eb1b0b --- /dev/null +++ b/_modules/searxng_extra/update/update_external_bangs.html @@ -0,0 +1,271 @@ + + + + + + + + searxng_extra.update.update_external_bangs — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +

Source code for searxng_extra.update.update_external_bangs

+#!/usr/bin/env python
+# lint: pylint
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Update :origin:`searx/data/external_bangs.json` using the duckduckgo bangs
+(:origin:`CI Update data ... <.github/workflows/data-update.yml>`).
+
+https://duckduckgo.com/newbang loads:
+
+* a javascript which provides the bang version ( https://duckduckgo.com/bv1.js )
+* a JSON file which contains the bangs ( https://duckduckgo.com/bang.v260.js for example )
+
+This script loads the javascript, then the bangs.
+
+The javascript URL may change in the future ( for example
+https://duckduckgo.com/bv2.js ), but most probably it will requires to update
+RE_BANG_VERSION
+
+"""
+# pylint: disable=C0116
+
+import json
+import re
+from os.path import join
+
+import httpx
+
+from searx import searx_dir  # pylint: disable=E0401 C0413
+from searx.external_bang import LEAF_KEY
+
+# from https://duckduckgo.com/newbang
+URL_BV1 = 'https://duckduckgo.com/bv1.js'
+RE_BANG_VERSION = re.compile(r'\/bang\.v([0-9]+)\.js')
+HTTPS_COLON = 'https:'
+HTTP_COLON = 'http:'
+
+
+def get_bang_url():
+    response = httpx.get(URL_BV1)
+    response.raise_for_status()
+
+    r = RE_BANG_VERSION.findall(response.text)
+    return f'https://duckduckgo.com/bang.v{r[0]}.js', r[0]
+
+
+def fetch_ddg_bangs(url):
+    response = httpx.get(url)
+    response.raise_for_status()
+    return json.loads(response.content.decode())
+
+
+
[docs]def merge_when_no_leaf(node): + """Minimize the number of nodes + + ``A -> B -> C`` + + - ``B`` is child of ``A`` + - ``C`` is child of ``B`` + + If there are no ``C`` equals to ``<LEAF_KEY>``, then each ``C`` are merged + into ``A``. For example (5 nodes):: + + d -> d -> g -> <LEAF_KEY> (ddg) + -> i -> g -> <LEAF_KEY> (dig) + + becomes (3 noodes):: + + d -> dg -> <LEAF_KEY> + -> ig -> <LEAF_KEY> + + """ + restart = False + if not isinstance(node, dict): + return + + # create a copy of the keys so node can be modified + keys = list(node.keys()) + + for key in keys: + if key == LEAF_KEY: + continue + + value = node[key] + value_keys = list(value.keys()) + if LEAF_KEY not in value_keys: + for value_key in value_keys: + node[key + value_key] = value[value_key] + merge_when_no_leaf(node[key + value_key]) + del node[key] + restart = True + else: + merge_when_no_leaf(value) + + if restart: + merge_when_no_leaf(node)
+ + +def optimize_leaf(parent, parent_key, node): + if not isinstance(node, dict): + return + + if len(node) == 1 and LEAF_KEY in node and parent is not None: + parent[parent_key] = node[LEAF_KEY] + else: + for key, value in node.items(): + optimize_leaf(node, key, value) + + +def parse_ddg_bangs(ddg_bangs): + bang_trie = {} + bang_urls = {} + + for bang_definition in ddg_bangs: + # bang_list + bang_url = bang_definition['u'] + if '{{{s}}}' not in bang_url: + # ignore invalid bang + continue + + bang_url = bang_url.replace('{{{s}}}', chr(2)) + + # only for the https protocol: "https://example.com" becomes "//example.com" + if bang_url.startswith(HTTPS_COLON + '//'): + bang_url = bang_url[len(HTTPS_COLON) :] + + # + if bang_url.startswith(HTTP_COLON + '//') and bang_url[len(HTTP_COLON) :] in bang_urls: + # if the bang_url uses the http:// protocol, and the same URL exists in https:// + # then reuse the https:// bang definition. (written //example.com) + bang_def_output = bang_urls[bang_url[len(HTTP_COLON) :]] + else: + # normal use case : new http:// URL or https:// URL (without "https:", see above) + bang_rank = str(bang_definition['r']) + bang_def_output = bang_url + chr(1) + bang_rank + bang_def_output = bang_urls.setdefault(bang_url, bang_def_output) + + bang_urls[bang_url] = bang_def_output + + # bang name + bang = bang_definition['t'] + + # bang_trie + t = bang_trie + for bang_letter in bang: + t = t.setdefault(bang_letter, {}) + t = t.setdefault(LEAF_KEY, bang_def_output) + + # optimize the trie + merge_when_no_leaf(bang_trie) + optimize_leaf(None, None, bang_trie) + + return bang_trie + + +def get_bangs_filename(): + return join(join(searx_dir, "data"), "external_bangs.json") + + +if __name__ == '__main__': + bangs_url, bangs_version = get_bang_url() + print(f'fetch bangs from {bangs_url}') + output = {'version': bangs_version, 'trie': parse_ddg_bangs(fetch_ddg_bangs(bangs_url))} + with open(get_bangs_filename(), 'w', encoding="utf8") as fp: + json.dump(output, fp, ensure_ascii=False, indent=4) +
+ +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/docs/admin/answer-captcha.rst b/_sources/admin/answer-captcha.rst.txt similarity index 100% rename from docs/admin/answer-captcha.rst rename to _sources/admin/answer-captcha.rst.txt diff --git a/docs/admin/api.rst b/_sources/admin/api.rst.txt similarity index 96% rename from docs/admin/api.rst rename to _sources/admin/api.rst.txt index 8f4552f9c..7bf465404 100644 --- a/docs/admin/api.rst +++ b/_sources/admin/api.rst.txt @@ -69,6 +69,10 @@ Sample response { "enabled": true, "name": "HTTPS rewrite" + }, + { + "enabled": false, + "name": "Vim-like hotkeys" } ], "safe_search": 0 diff --git a/docs/admin/architecture.rst b/_sources/admin/architecture.rst.txt similarity index 100% rename from docs/admin/architecture.rst rename to _sources/admin/architecture.rst.txt diff --git a/docs/admin/buildhosts.rst b/_sources/admin/buildhosts.rst.txt similarity index 98% rename from docs/admin/buildhosts.rst rename to _sources/admin/buildhosts.rst.txt index bdb9ae1d4..b7f317f74 100644 --- a/docs/admin/buildhosts.rst +++ b/_sources/admin/buildhosts.rst.txt @@ -33,7 +33,7 @@ This will install packages needed by SearXNG: :start-after: START distro-packages :end-before: END distro-packages -and packages needed to build documentation and run tests: +and packages needed to build docuemtation and run tests: .. kernel-include:: $DOCS_BUILD/includes/searxng.rst :start-after: START build-packages diff --git a/docs/admin/index.rst b/_sources/admin/index.rst.txt similarity index 95% rename from docs/admin/index.rst rename to _sources/admin/index.rst.txt index 606b51c22..583b6b428 100644 --- a/docs/admin/index.rst +++ b/_sources/admin/index.rst.txt @@ -15,7 +15,6 @@ Administrator documentation installation-apache update-searxng answer-captcha - searx.limiter api architecture plugins diff --git a/docs/admin/installation-apache.rst b/_sources/admin/installation-apache.rst.txt similarity index 99% rename from docs/admin/installation-apache.rst rename to _sources/admin/installation-apache.rst.txt index b0b580607..9fbb187c5 100644 --- a/docs/admin/installation-apache.rst +++ b/_sources/admin/installation-apache.rst.txt @@ -190,7 +190,7 @@ Debian: Apache modules -------------- -To load additional modules, in most distributions you have to uncomment the +To load additional modules, in most distributions you have to un-comment the lines with the corresponding LoadModule_ directive, except in :ref:`Debian's Apache layout`. diff --git a/docs/admin/installation-docker.rst b/_sources/admin/installation-docker.rst.txt similarity index 97% rename from docs/admin/installation-docker.rst rename to _sources/admin/installation-docker.rst.txt index c667c4f44..eb52c5828 100644 --- a/docs/admin/installation-docker.rst +++ b/_sources/admin/installation-docker.rst.txt @@ -43,7 +43,7 @@ of this container: - enables :ref:`limiter ` to protect against bots - enables :ref:`image proxy ` for better privacy -- enables :ref:`cache busting ` to save bandwidth +- enables :ref:`cache busting ` to save bandwith ---- @@ -108,7 +108,7 @@ can modify these files according to your needs and restart the Docker image. Use command ``container ls`` to list running containers, add flag `-a `__ to list exited containers also. With ``container stop`` a running container can be -stopped. To get rid of a container use ``container rm``: +stoped. To get rid of a container use ``container rm``: .. code:: sh diff --git a/docs/admin/installation-nginx.rst b/_sources/admin/installation-nginx.rst.txt similarity index 100% rename from docs/admin/installation-nginx.rst rename to _sources/admin/installation-nginx.rst.txt diff --git a/docs/admin/installation-scripts.rst b/_sources/admin/installation-scripts.rst.txt similarity index 100% rename from docs/admin/installation-scripts.rst rename to _sources/admin/installation-scripts.rst.txt diff --git a/docs/admin/installation-searxng.rst b/_sources/admin/installation-searxng.rst.txt similarity index 98% rename from docs/admin/installation-searxng.rst rename to _sources/admin/installation-searxng.rst.txt index 7bb936f15..3efc48e8c 100644 --- a/docs/admin/installation-searxng.rst +++ b/_sources/admin/installation-searxng.rst.txt @@ -86,7 +86,7 @@ below. This setup: - enables :ref:`limiter ` to protect against bots - enables :ref:`image proxy ` for better privacy -- enables :ref:`cache busting ` to save bandwidth +- enables :ref:`cache busting ` to save bandwith Modify the ``/etc/searxng/settings.yml`` to your needs: diff --git a/docs/admin/installation-uwsgi.rst b/_sources/admin/installation-uwsgi.rst.txt similarity index 100% rename from docs/admin/installation-uwsgi.rst rename to _sources/admin/installation-uwsgi.rst.txt diff --git a/docs/admin/installation.rst b/_sources/admin/installation.rst.txt similarity index 100% rename from docs/admin/installation.rst rename to _sources/admin/installation.rst.txt diff --git a/docs/admin/plugins.rst b/_sources/admin/plugins.rst.txt similarity index 100% rename from docs/admin/plugins.rst rename to _sources/admin/plugins.rst.txt diff --git a/docs/admin/settings/index.rst b/_sources/admin/settings/index.rst.txt similarity index 100% rename from docs/admin/settings/index.rst rename to _sources/admin/settings/index.rst.txt diff --git a/docs/admin/settings/settings.rst b/_sources/admin/settings/settings.rst.txt similarity index 100% rename from docs/admin/settings/settings.rst rename to _sources/admin/settings/settings.rst.txt diff --git a/docs/admin/settings/settings_brand.rst b/_sources/admin/settings/settings_brand.rst.txt similarity index 100% rename from docs/admin/settings/settings_brand.rst rename to _sources/admin/settings/settings_brand.rst.txt diff --git a/docs/admin/settings/settings_categories_as_tabs.rst b/_sources/admin/settings/settings_categories_as_tabs.rst.txt similarity index 100% rename from docs/admin/settings/settings_categories_as_tabs.rst rename to _sources/admin/settings/settings_categories_as_tabs.rst.txt diff --git a/docs/admin/settings/settings_engine.rst b/_sources/admin/settings/settings_engine.rst.txt similarity index 100% rename from docs/admin/settings/settings_engine.rst rename to _sources/admin/settings/settings_engine.rst.txt diff --git a/docs/admin/settings/settings_general.rst b/_sources/admin/settings/settings_general.rst.txt similarity index 100% rename from docs/admin/settings/settings_general.rst rename to _sources/admin/settings/settings_general.rst.txt diff --git a/docs/admin/settings/settings_outgoing.rst b/_sources/admin/settings/settings_outgoing.rst.txt similarity index 100% rename from docs/admin/settings/settings_outgoing.rst rename to _sources/admin/settings/settings_outgoing.rst.txt diff --git a/docs/admin/settings/settings_redis.rst b/_sources/admin/settings/settings_redis.rst.txt similarity index 94% rename from docs/admin/settings/settings_redis.rst rename to _sources/admin/settings/settings_redis.rst.txt index 9fb067553..df5dc743f 100644 --- a/docs/admin/settings/settings_redis.rst +++ b/_sources/admin/settings/settings_redis.rst.txt @@ -7,7 +7,7 @@ .. _Redis.from_url(url): https://redis-py.readthedocs.io/en/stable/connections.html#redis.client.Redis.from_url A redis DB can be connected by an URL, in :py:obj:`searx.redisdb` you -will find a description to test your redis connection in SearXNG. When using +will find a description to test your redis connection in SerXNG. When using sockets, don't forget to check the access rights on the socket:: ls -la /usr/local/searxng-redis/run/redis.sock diff --git a/docs/admin/settings/settings_search.rst b/_sources/admin/settings/settings_search.rst.txt similarity index 99% rename from docs/admin/settings/settings_search.rst rename to _sources/admin/settings/settings_search.rst.txt index 836207614..dcc0ff198 100644 --- a/docs/admin/settings/settings_search.rst +++ b/_sources/admin/settings/settings_search.rst.txt @@ -35,7 +35,6 @@ - ``dbpedia`` - ``duckduckgo`` - ``google`` - - ``mwmbl`` - ``startpage`` - ``swisscows`` - ``qwant`` diff --git a/docs/admin/settings/settings_server.rst b/_sources/admin/settings/settings_server.rst.txt similarity index 82% rename from docs/admin/settings/settings_server.rst rename to _sources/admin/settings/settings_server.rst.txt index e4e66ee2f..e2b4cb67d 100644 --- a/docs/admin/settings/settings_server.rst +++ b/_sources/admin/settings/settings_server.rst.txt @@ -12,7 +12,6 @@ bind_address: "127.0.0.1" secret_key: "ultrasecretkey" # change this! limiter: false - public_instance: false image_proxy: false default_http_headers: X-Content-Type-Options : nosniff @@ -21,6 +20,7 @@ X-Robots-Tag : noindex, nofollow Referrer-Policy : no-referrer + ``base_url`` : ``$SEARXNG_URL`` :ref:`buildenv ` The base URL where SearXNG is deployed. Used to create correct inbound links. If you change the value, don't forget to rebuild instance's environment @@ -36,19 +36,11 @@ ``secret_key`` : ``$SEARXNG_SECRET`` Used for cryptography purpose. +.. _limiter: + ``limiter`` : Rate limit the number of request on the instance, block some bots. The - :ref:`limiter` requires a :ref:`settings redis` database. - -.. _public_instance: - -``public_instance`` : - - Setting that allows to enable features specifically for public instances (not - needed for local usage). By set to ``true`` the following features are - activated: - - - :py:obj:`searx.botdetection.link_token` in the :ref:`limiter` + :ref:`limiter src` requires a :ref:`settings redis` database. .. _image_proxy: diff --git a/docs/admin/settings/settings_ui.rst b/_sources/admin/settings/settings_ui.rst.txt similarity index 84% rename from docs/admin/settings/settings_ui.rst rename to _sources/admin/settings/settings_ui.rst.txt index a5d1076ec..e355199a2 100644 --- a/docs/admin/settings/settings_ui.rst +++ b/_sources/admin/settings/settings_ui.rst.txt @@ -19,8 +19,6 @@ default_theme: simple theme_args: simple_style: auto - search_on_category_select: true - hotkeys: default .. _static_use_hash: @@ -48,7 +46,7 @@ .. cache_url: ``cache_url`` : ``https://web.archive.org/web/`` - URL prefix of the internet archive or cache, don't forget trailing slash (if + URL prefix of the internet archive or cache, don't forgett trailing slash (if needed). The default is https://web.archive.org/web/ alternatives are: - https://webcache.googleusercontent.com/search?q=cache: @@ -62,9 +60,3 @@ ``results_on_new_tab``: Open result links in a new tab by default. - -``search_on_category_select``: - Perform search immediately if a category selected. Disable to select multiple categories. - -``hotkeys``: - Hotkeys to use in the search interface: ``default``, ``vim`` (Vim-like). diff --git a/docs/admin/update-searxng.rst b/_sources/admin/update-searxng.rst.txt similarity index 98% rename from docs/admin/update-searxng.rst rename to _sources/admin/update-searxng.rst.txt index b9d15c3f7..27c0108d4 100644 --- a/docs/admin/update-searxng.rst +++ b/_sources/admin/update-searxng.rst.txt @@ -61,7 +61,7 @@ and then, to name just a few: - The image proxy morty is no longer needed, it has been replaced by the :ref:`image proxy ` from SearXNG. -- To save bandwidth :ref:`cache busting ` has been implemented. +- To save bandwith :ref:`cache busting ` has been implemented. To get in use, the ``static-expires`` needs to be set in the :ref:`uwsgi setup`. diff --git a/docs/dev/contribution_guide.rst b/_sources/dev/contribution_guide.rst.txt similarity index 98% rename from docs/dev/contribution_guide.rst rename to _sources/dev/contribution_guide.rst.txt index df5200637..bc4f6514d 100644 --- a/docs/dev/contribution_guide.rst +++ b/_sources/dev/contribution_guide.rst.txt @@ -186,5 +186,5 @@ commit and push: .. attention:: - If you are working in your own brand, don't forget to adjust your + If you are working in your own brand, don't forgett to adjust your :ref:`settings brand`. diff --git a/docs/dev/engines/demo/demo_offline.rst b/_sources/dev/engines/demo/demo_offline.rst.txt similarity index 100% rename from docs/dev/engines/demo/demo_offline.rst rename to _sources/dev/engines/demo/demo_offline.rst.txt diff --git a/docs/dev/engines/demo/demo_online.rst b/_sources/dev/engines/demo/demo_online.rst.txt similarity index 100% rename from docs/dev/engines/demo/demo_online.rst rename to _sources/dev/engines/demo/demo_online.rst.txt diff --git a/docs/dev/engines/engine_overview.rst b/_sources/dev/engines/engine_overview.rst.txt similarity index 99% rename from docs/dev/engines/engine_overview.rst rename to _sources/dev/engines/engine_overview.rst.txt index 00c766f2f..8052a8bea 100644 --- a/docs/dev/engines/engine_overview.rst +++ b/_sources/dev/engines/engine_overview.rst.txt @@ -87,8 +87,8 @@ For a more detailed description, see :ref:`settings engine` in the :ref:`settin Overrides --------- -A few of the options have default values in the namespace of the engine's python -module, but are often overwritten by the settings. If ``None`` is assigned to an +A few of the options have default values in the namespace of engine's python +modul, but are often overwritten by the settings. If ``None`` is assigned to an option in the engine file, it has to be redefined in the settings, otherwise SearXNG will not start with that engine (global names with a leading underline can be ``None``). diff --git a/docs/dev/engines/enginelib.rst b/_sources/dev/engines/enginelib.rst.txt similarity index 100% rename from docs/dev/engines/enginelib.rst rename to _sources/dev/engines/enginelib.rst.txt diff --git a/docs/dev/engines/engines.rst b/_sources/dev/engines/engines.rst.txt similarity index 100% rename from docs/dev/engines/engines.rst rename to _sources/dev/engines/engines.rst.txt diff --git a/docs/dev/engines/index.rst b/_sources/dev/engines/index.rst.txt similarity index 96% rename from docs/dev/engines/index.rst rename to _sources/dev/engines/index.rst.txt index 88dd874d3..b5c3184e0 100644 --- a/docs/dev/engines/index.rst +++ b/_sources/dev/engines/index.rst.txt @@ -26,7 +26,7 @@ The :py:obj:`engine_type ` of an engine determines which :ref:`search processor ` is used by the engine. -In this section a list of the engines that are documented is given, a complete +In this section a list of the enignes that are documented is given, a complete list of the engines can be found in the source under: :origin:`searx/engines`. .. _online engines: diff --git a/docs/dev/engines/mediawiki.rst b/_sources/dev/engines/mediawiki.rst.txt similarity index 100% rename from docs/dev/engines/mediawiki.rst rename to _sources/dev/engines/mediawiki.rst.txt diff --git a/docs/dev/engines/offline/command-line-engines.rst b/_sources/dev/engines/offline/command-line-engines.rst.txt similarity index 100% rename from docs/dev/engines/offline/command-line-engines.rst rename to _sources/dev/engines/offline/command-line-engines.rst.txt diff --git a/docs/dev/engines/offline/nosql-engines.rst b/_sources/dev/engines/offline/nosql-engines.rst.txt similarity index 100% rename from docs/dev/engines/offline/nosql-engines.rst rename to _sources/dev/engines/offline/nosql-engines.rst.txt diff --git a/docs/dev/engines/offline/search-indexer-engines.rst b/_sources/dev/engines/offline/search-indexer-engines.rst.txt similarity index 100% rename from docs/dev/engines/offline/search-indexer-engines.rst rename to _sources/dev/engines/offline/search-indexer-engines.rst.txt diff --git a/docs/dev/engines/offline/sql-engines.rst b/_sources/dev/engines/offline/sql-engines.rst.txt similarity index 100% rename from docs/dev/engines/offline/sql-engines.rst rename to _sources/dev/engines/offline/sql-engines.rst.txt diff --git a/docs/dev/engines/offline_concept.rst b/_sources/dev/engines/offline_concept.rst.txt similarity index 100% rename from docs/dev/engines/offline_concept.rst rename to _sources/dev/engines/offline_concept.rst.txt diff --git a/docs/dev/engines/online/annas_archive.rst b/_sources/dev/engines/online/annas_archive.rst.txt similarity index 100% rename from docs/dev/engines/online/annas_archive.rst rename to _sources/dev/engines/online/annas_archive.rst.txt diff --git a/docs/dev/engines/online/archlinux.rst b/_sources/dev/engines/online/archlinux.rst.txt similarity index 100% rename from docs/dev/engines/online/archlinux.rst rename to _sources/dev/engines/online/archlinux.rst.txt diff --git a/docs/dev/engines/online/bing.rst b/_sources/dev/engines/online/bing.rst.txt similarity index 100% rename from docs/dev/engines/online/bing.rst rename to _sources/dev/engines/online/bing.rst.txt diff --git a/docs/dev/engines/online/brave.rst b/_sources/dev/engines/online/brave.rst.txt similarity index 100% rename from docs/dev/engines/online/brave.rst rename to _sources/dev/engines/online/brave.rst.txt diff --git a/docs/dev/engines/online/bt4g.rst b/_sources/dev/engines/online/bt4g.rst.txt similarity index 100% rename from docs/dev/engines/online/bt4g.rst rename to _sources/dev/engines/online/bt4g.rst.txt diff --git a/docs/dev/engines/online/dailymotion.rst b/_sources/dev/engines/online/dailymotion.rst.txt similarity index 100% rename from docs/dev/engines/online/dailymotion.rst rename to _sources/dev/engines/online/dailymotion.rst.txt diff --git a/docs/dev/engines/online/duckduckgo.rst b/_sources/dev/engines/online/duckduckgo.rst.txt similarity index 73% rename from docs/dev/engines/online/duckduckgo.rst rename to _sources/dev/engines/online/duckduckgo.rst.txt index 0f1258ff9..d0d18eb8a 100644 --- a/docs/dev/engines/online/duckduckgo.rst +++ b/_sources/dev/engines/online/duckduckgo.rst.txt @@ -1,8 +1,8 @@ .. _duckduckgo engines: -================== -DuckDuckGo Engines -================== +================= +DukcDukGo Engines +================= .. contents:: :depth: 2 @@ -12,7 +12,7 @@ DuckDuckGo Engines .. automodule:: searx.engines.duckduckgo :members: -.. automodule:: searx.engines.duckduckgo_extra +.. automodule:: searx.engines.duckduckgo_images :members: .. automodule:: searx.engines.duckduckgo_definitions diff --git a/docs/dev/engines/online/google.rst b/_sources/dev/engines/online/google.rst.txt similarity index 100% rename from docs/dev/engines/online/google.rst rename to _sources/dev/engines/online/google.rst.txt diff --git a/docs/dev/engines/online/lemmy.rst b/_sources/dev/engines/online/lemmy.rst.txt similarity index 100% rename from docs/dev/engines/online/lemmy.rst rename to _sources/dev/engines/online/lemmy.rst.txt diff --git a/docs/dev/engines/online/peertube.rst b/_sources/dev/engines/online/peertube.rst.txt similarity index 100% rename from docs/dev/engines/online/peertube.rst rename to _sources/dev/engines/online/peertube.rst.txt diff --git a/docs/dev/engines/online/piped.rst b/_sources/dev/engines/online/piped.rst.txt similarity index 100% rename from docs/dev/engines/online/piped.rst rename to _sources/dev/engines/online/piped.rst.txt diff --git a/docs/dev/engines/online/recoll.rst b/_sources/dev/engines/online/recoll.rst.txt similarity index 100% rename from docs/dev/engines/online/recoll.rst rename to _sources/dev/engines/online/recoll.rst.txt diff --git a/docs/dev/engines/online/startpage.rst b/_sources/dev/engines/online/startpage.rst.txt similarity index 100% rename from docs/dev/engines/online/startpage.rst rename to _sources/dev/engines/online/startpage.rst.txt diff --git a/docs/dev/engines/online/tagesschau.rst b/_sources/dev/engines/online/tagesschau.rst.txt similarity index 100% rename from docs/dev/engines/online/tagesschau.rst rename to _sources/dev/engines/online/tagesschau.rst.txt diff --git a/docs/dev/engines/online/torznab.rst b/_sources/dev/engines/online/torznab.rst.txt similarity index 100% rename from docs/dev/engines/online/torznab.rst rename to _sources/dev/engines/online/torznab.rst.txt diff --git a/docs/dev/engines/online/wikipedia.rst b/_sources/dev/engines/online/wikipedia.rst.txt similarity index 100% rename from docs/dev/engines/online/wikipedia.rst rename to _sources/dev/engines/online/wikipedia.rst.txt diff --git a/docs/dev/engines/online/yacy.rst b/_sources/dev/engines/online/yacy.rst.txt similarity index 100% rename from docs/dev/engines/online/yacy.rst rename to _sources/dev/engines/online/yacy.rst.txt diff --git a/docs/dev/engines/online/yahoo.rst b/_sources/dev/engines/online/yahoo.rst.txt similarity index 100% rename from docs/dev/engines/online/yahoo.rst rename to _sources/dev/engines/online/yahoo.rst.txt diff --git a/docs/dev/engines/online/zlibrary.rst b/_sources/dev/engines/online/zlibrary.rst.txt similarity index 100% rename from docs/dev/engines/online/zlibrary.rst rename to _sources/dev/engines/online/zlibrary.rst.txt diff --git a/docs/dev/engines/online_url_search/tineye.rst b/_sources/dev/engines/online_url_search/tineye.rst.txt similarity index 100% rename from docs/dev/engines/online_url_search/tineye.rst rename to _sources/dev/engines/online_url_search/tineye.rst.txt diff --git a/docs/dev/engines/xpath.rst b/_sources/dev/engines/xpath.rst.txt similarity index 100% rename from docs/dev/engines/xpath.rst rename to _sources/dev/engines/xpath.rst.txt diff --git a/docs/dev/index.rst b/_sources/dev/index.rst.txt similarity index 100% rename from docs/dev/index.rst rename to _sources/dev/index.rst.txt diff --git a/docs/dev/lxcdev.rst b/_sources/dev/lxcdev.rst.txt similarity index 98% rename from docs/dev/lxcdev.rst rename to _sources/dev/lxcdev.rst.txt index 79716ae57..854b193ff 100644 --- a/docs/dev/lxcdev.rst +++ b/_sources/dev/lxcdev.rst.txt @@ -148,7 +148,7 @@ services quite easy. In the example above the SearXNG instance in the container is wrapped to ``http://n.n.n.140/searxng`` to the HOST system. Note, on your HOST system, the IP of your ``searxng-archlinux`` container is different to this example. To -test the instance in the container from outside of the container, in your WEB +test the instance in the conatiner from outside of the container, in your WEB browser on your desktop just open the URL reported in your installation .. _working in containers: @@ -255,7 +255,7 @@ With the use of the :ref:`searxng.sh` the SearXNG service was installed as With the command above, we stopped the SearXNG uWSGI-App in the archlinux container. -The uWSGI-App for the archlinux distros is configured in +The uWSGI-App for the archlinux dsitros is configured in :origin:`utils/templates/etc/uwsgi/apps-archlinux/searxng.ini`, from where at least you should attend the settings of ``uid``, ``chdir``, ``env`` and ``http``:: @@ -272,7 +272,7 @@ shares the root folder of the repository and the command ``utils/lxc.sh cmd`` handles relative path names **transparent**. To wrap the SearXNG installation in the container into a developer one, we -simple have to create a symlink to the **transparent** repository from the +simple have to create a smylink to the **transparent** reposetory from the desktop. Now lets replace the repository at ``searxng-src`` in the container with the working tree from outside of the container: diff --git a/docs/dev/makefile.rst b/_sources/dev/makefile.rst.txt similarity index 98% rename from docs/dev/makefile.rst rename to _sources/dev/makefile.rst.txt index 8f29dd252..62ac2e905 100644 --- a/docs/dev/makefile.rst +++ b/_sources/dev/makefile.rst.txt @@ -138,7 +138,7 @@ from the YAML configuration: - ``SEARXNG_PORT`` from :ref:`server.port ` The ``GIT_URL`` and ``GIT_BRANCH`` in the origin:`utils/brand.env` file, are -read from the git VCS and the branch that is checked out when ``make +readed from the git VCS and the branch that is checked out when ``make buildenv`` command runs. .. _brand: @@ -259,7 +259,7 @@ modify (:ref:`make themes`):: ``make format.python`` ====================== -Format Python source code using `Black code style`_. See ``$BLACK_OPTIONS`` +Format Python sourcee code using `Black code style`_. See ``$BLACK_OPTIONS`` and ``$BLACK_TARGETS`` in :origin:`Makefile`. .. attention:: @@ -423,7 +423,7 @@ To get live builds while modifying CSS & JS use (:ref:`make run`): The :origin:`Makefile` targets ``static.build.*`` cover common tasks to build (a commit of) the static files. The ``./manage static.build..*`` command line -can be used to convenient run common build tasks of the static files. +can be used to convenient run common build tasks of the satic files. .. program-output:: bash -c "cd ..; ./manage static.help" diff --git a/docs/dev/plugins.rst b/_sources/dev/plugins.rst.txt similarity index 100% rename from docs/dev/plugins.rst rename to _sources/dev/plugins.rst.txt diff --git a/docs/dev/quickstart.rst b/_sources/dev/quickstart.rst.txt similarity index 90% rename from docs/dev/quickstart.rst rename to _sources/dev/quickstart.rst.txt index c45c24491..9bee8f60c 100644 --- a/docs/dev/quickstart.rst +++ b/_sources/dev/quickstart.rst.txt @@ -67,14 +67,14 @@ the modified source code from the build products first run: make static.build.restore This will restore the old build products and only your changes of the code -remain in the working tree which can now be added & committed. When all sources -are committed, you can commit the build products simply by: +remain in the working tree which can now be added & commited. When all sources +are commited, you can commit the build products simply by: .. code:: bash make static.build.commit -Committing the build products should be the last step, just before you send us +Commiting the build products should be the last step, just before you send us your PR. There is also a make target to rewind this last build commit: .. code:: bash diff --git a/_sources/dev/reST.rst.txt b/_sources/dev/reST.rst.txt new file mode 100644 index 000000000..47af0b130 --- /dev/null +++ b/_sources/dev/reST.rst.txt @@ -0,0 +1,1438 @@ +.. _reST primer: + +=========== +reST primer +=========== + +.. sidebar:: KISS_ and readability_ + + Instead of defining more and more roles, we at SearXNG encourage our + contributors to follow principles like KISS_ and readability_. + +We at SearXNG are using reStructuredText (aka reST_) markup for all kind of +documentation. With the builders from the Sphinx_ project a HTML output is +generated and deployed at docs.searxng.org_. For build prerequisites read +:ref:`docs build`. + +.. _docs.searxng.org: https://docs.searxng.org/ + +The source files of SearXNG's documentation are located at :origin:`docs`. +Sphinx assumes source files to be encoded in UTF-8 by default. Run :ref:`make +docs.live ` to build HTML while editing. + +.. sidebar:: Further reading + + - Sphinx-Primer_ + - `Sphinx markup constructs`_ + - reST_, docutils_, `docutils FAQ`_ + - Sphinx_, `sphinx-doc FAQ`_ + - `sphinx config`_, doctree_ + - `sphinx cross references`_ + - linuxdoc_ + - intersphinx_ + - sphinx-jinja_ + - `Sphinx's autodoc`_ + - `Sphinx's Python domain`_, `Sphinx's C domain`_ + - SVG_, ImageMagick_ + - DOT_, `Graphviz's dot`_, Graphviz_ + + +.. contents:: + :depth: 3 + :local: + :backlinks: entry + +Sphinx_ and reST_ have their place in the python ecosystem. Over that reST is +used in popular projects, e.g the Linux kernel documentation `[kernel doc]`_. + +.. _[kernel doc]: https://www.kernel.org/doc/html/latest/doc-guide/sphinx.html + +.. sidebar:: Content matters + + The readability_ of the reST sources has its value, therefore we recommend to + make sparse usage of reST markup / .. content matters! + +**reST** is a plaintext markup language, its markup is *mostly* intuitive and +you will not need to learn much to produce well formed articles with. I use the +word *mostly*: like everything in live, reST has its advantages and +disadvantages, some markups feel a bit grumpy (especially if you are used to +other plaintext markups). + +Soft skills +=========== + +Before going any deeper into the markup let's face on some **soft skills** a +trained author brings with, to reach a well feedback from readers: + +- Documentation is dedicated to an audience and answers questions from the + audience point of view. +- Don't detail things which are general knowledge from the audience point of + view. +- Limit the subject, use cross links for any further reading. + +To be more concrete what a *point of view* means. In the (:origin:`docs`) +folder we have three sections (and the *blog* folder), each dedicate to a +different group of audience. + +User's POV: :origin:`docs/user` + A typical user knows about search engines and might have heard about + meta crawlers and privacy. + +Admin's POV: :origin:`docs/admin` + A typical Admin knows about setting up services on a linux system, but he does + not know all the pros and cons of a SearXNG setup. + +Developer's POV: :origin:`docs/dev` + Depending on the readability_ of code, a typical developer is able to read and + understand source code. Describe what a item aims to do (e.g. a function). + If the chronological order matters, describe it. Name the *out-of-limits + conditions* and all the side effects a external developer will not know. + +.. _reST inline markup: + +Basic inline markup +=================== + +.. sidebar:: Inline markup + + - :ref:`reST roles` + - :ref:`reST smart ref` + +Basic inline markup is done with asterisks and backquotes. If asterisks or +backquotes appear in running text and could be confused with inline markup +delimiters, they have to be escaped with a backslash (``\*pointer``). + +.. table:: basic inline markup + :widths: 4 3 7 + + ================================================ ==================== ======================== + description rendered markup + ================================================ ==================== ======================== + one asterisk for emphasis *italics* ``*italics*`` + two asterisks for strong emphasis **boldface** ``**boldface**`` + backquotes for code samples and literals ``foo()`` ````foo()```` + quote asterisks or backquotes \*foo is a pointer ``\*foo is a pointer`` + ================================================ ==================== ======================== + +.. _reST basic structure: + +Basic article structure +======================= + +The basic structure of an article makes use of heading adornments to markup +chapter, sections and subsections. + +.. _reST template: + +reST template +------------- + +reST template for an simple article: + +.. code:: reST + + .. _doc refname: + + ============== + Document title + ============== + + Lorem ipsum dolor sit amet, consectetur adipisici elit .. Further read + :ref:`chapter refname`. + + .. _chapter refname: + + Chapter + ======= + + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquid ex ea commodi consequat ... + + .. _section refname: + + Section + ------- + + lorem .. + + .. _subsection refname: + + Subsection + ~~~~~~~~~~ + + lorem .. + + +Headings +-------- + +#. title - with overline for document title: + + .. code:: reST + + ============== + Document title + ============== + + +#. chapter - with anchor named ``anchor name``: + + .. code:: reST + + .. _anchor name: + + Chapter + ======= + +#. section + + .. code:: reST + + Section + ------- + +#. subsection + + .. code:: reST + + Subsection + ~~~~~~~~~~ + + + +Anchors & Links +=============== + +.. _reST anchor: + +Anchors +------- + +.. _ref role: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref + +To refer a point in the documentation a anchor is needed. The :ref:`reST +template ` shows an example where a chapter titled *"Chapters"* +gets an anchor named ``chapter title``. Another example from *this* document, +where the anchor named ``reST anchor``: + +.. code:: reST + + .. _reST anchor: + + Anchors + ------- + + To refer a point in the documentation a anchor is needed ... + +To refer anchors use the `ref role`_ markup: + +.. code:: reST + + Visit chapter :ref:`reST anchor`. Or set hyperlink text manually :ref:`foo + bar `. + +.. admonition:: ``:ref:`` role + :class: rst-example + + Visist chapter :ref:`reST anchor`. Or set hyperlink text manually :ref:`foo + bar `. + +.. _reST ordinary ref: + +Link ordinary URL +----------------- + +If you need to reference external URLs use *named* hyperlinks to maintain +readability of reST sources. Here is a example taken from *this* article: + +.. code:: reST + + .. _Sphinx Field Lists: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/field-lists.html + + With the *named* hyperlink `Sphinx Field Lists`_, the raw text is much more + readable. + + And this shows the alternative (less readable) hyperlink markup `Sphinx Field + Lists + `__. + +.. admonition:: Named hyperlink + :class: rst-example + + With the *named* hyperlink `Sphinx Field Lists`_, the raw text is much more + readable. + + And this shows the alternative (less readable) hyperlink markup `Sphinx Field + Lists + `__. + + +.. _reST smart ref: + +Smart refs +---------- + +With the power of sphinx.ext.extlinks_ and intersphinx_ referencing external +content becomes smart. + +.. table:: smart refs with sphinx.ext.extlinks_ and intersphinx_ + :widths: 4 3 7 + + ========================== ================================== ==================================== + refer ... rendered example markup + ========================== ================================== ==================================== + :rst:role:`rfc` :rfc:`822` ``:rfc:`822``` + :rst:role:`pep` :pep:`8` ``:pep:`8``` + sphinx.ext.extlinks_ + -------------------------------------------------------------------------------------------------- + project's wiki article :wiki:`Offline-engines` ``:wiki:`Offline-engines``` + to docs public URL :docs:`dev/reST.html` ``:docs:`dev/reST.html``` + files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst``` + pull request :pull:`4` ``:pull:`4``` + patch :patch:`af2cae6` ``:patch:`af2cae6``` + PyPi package :pypi:`searx` ``:pypi:`searx``` + manual page man :man:`bash` ``:man:`bash``` + intersphinx_ + -------------------------------------------------------------------------------------------------- + external anchor :ref:`python:and` ``:ref:`python:and``` + external doc anchor :doc:`jinja:templates` ``:doc:`jinja:templates``` + python code object :py:obj:`datetime.datetime` ``:py:obj:`datetime.datetime``` + flask code object :py:obj:`flask.Flask` ``:py:obj:`flask.Flask``` + ========================== ================================== ==================================== + + +Intersphinx is configured in :origin:`docs/conf.py`: + +.. code:: python + + intersphinx_mapping = { + "python": ("https://docs.python.org/3/", None), + "flask": ("https://flask.palletsprojects.com/", None), + "jinja": ("https://jinja.palletsprojects.com/", None), + "linuxdoc" : ("https://return42.github.io/linuxdoc/", None), + "sphinx" : ("https://www.sphinx-doc.org/en/master/", None), + } + + +To list all anchors of the inventory (e.g. ``python``) use: + +.. code:: sh + + $ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv + ... + $ python -m sphinx.ext.intersphinx https://docs.searxng.org/objects.inv + ... + +Literal blocks +============== + +The simplest form of :duref:`literal-blocks` is a indented block introduced by +two colons (``::``). For highlighting use :dudir:`highlight` or :ref:`reST +code` directive. To include literals from external files use +:rst:dir:`literalinclude` or :ref:`kernel-include ` +directive (latter one expands environment variables in the path name). + +.. _reST literal: + +``::`` +------ + +.. code:: reST + + :: + + Literal block + + Lorem ipsum dolor:: + + Literal block + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore :: + + Literal block + +.. admonition:: Literal block + :class: rst-example + + :: + + Literal block + + Lorem ipsum dolor:: + + Literal block + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore :: + + Literal block + + +.. _reST code: + +``code-block`` +-------------- + +.. _pygments: https://pygments.org/languages/ + +.. sidebar:: Syntax highlighting + + is handled by pygments_. + +The :rst:dir:`code-block` directive is a variant of the :dudir:`code` directive +with additional options. To learn more about code literals visit +:ref:`sphinx:code-examples`. + +.. code-block:: reST + + The URL ``/stats`` handle is shown in :ref:`stats-handle` + + .. code-block:: Python + :caption: python code block + :name: stats-handle + + @app.route('/stats', methods=['GET']) + def stats(): + """Render engine statistics page.""" + stats = get_engines_stats() + return render( + 'stats.html' + , stats = stats ) + +.. code-block:: reST + +.. admonition:: Code block + :class: rst-example + + The URL ``/stats`` handle is shown in :ref:`stats-handle` + + .. code-block:: Python + :caption: python code block + :name: stats-handle + + @app.route('/stats', methods=['GET']) + def stats(): + """Render engine statistics page.""" + stats = get_engines_stats() + return render( + 'stats.html' + , stats = stats ) + +Unicode substitution +==================== + +The :dudir:`unicode directive ` converts Unicode +character codes (numerical values) to characters. This directive can only be +used within a substitution definition. + +.. code-block:: reST + + .. |copy| unicode:: 0xA9 .. copyright sign + .. |(TM)| unicode:: U+2122 + + Trademark |(TM)| and copyright |copy| glyphs. + +.. admonition:: Unicode + :class: rst-example + + .. |copy| unicode:: 0xA9 .. copyright sign + .. |(TM)| unicode:: U+2122 + + Trademark |(TM)| and copyright |copy| glyphs. + + +.. _reST roles: + +Roles +===== + +.. sidebar:: Further reading + + - `Sphinx Roles`_ + - :doc:`sphinx:usage/restructuredtext/domains` + + +A *custom interpreted text role* (:duref:`ref `) is an inline piece of +explicit markup. It signifies that that the enclosed text should be interpreted +in a specific way. + +The general markup is one of: + +.. code:: reST + + :rolename:`ref-name` + :rolename:`ref text ` + +.. table:: smart refs with sphinx.ext.extlinks_ and intersphinx_ + :widths: 4 3 7 + + ========================== ================================== ==================================== + role rendered example markup + ========================== ================================== ==================================== + :rst:role:`guilabel` :guilabel:`&Cancel` ``:guilabel:`&Cancel``` + :rst:role:`kbd` :kbd:`C-x C-f` ``:kbd:`C-x C-f``` + :rst:role:`menuselection` :menuselection:`Open --> File` ``:menuselection:`Open --> File``` + :rst:role:`download` :download:`this file ` ``:download:`this file ``` + math_ :math:`a^2 + b^2 = c^2` ``:math:`a^2 + b^2 = c^2``` + :rst:role:`ref` :ref:`svg image example` ``:ref:`svg image example``` + :rst:role:`command` :command:`ls -la` ``:command:`ls -la``` + :durole:`emphasis` :emphasis:`italic` ``:emphasis:`italic``` + :durole:`strong` :strong:`bold` ``:strong:`bold``` + :durole:`literal` :literal:`foo()` ``:literal:`foo()``` + :durole:`subscript` H\ :sub:`2`\ O ``H\ :sub:`2`\ O`` + :durole:`superscript` E = mc\ :sup:`2` ``E = mc\ :sup:`2``` + :durole:`title-reference` :title:`Time` ``:title:`Time``` + ========================== ================================== ==================================== + +Figures & Images +================ + +.. sidebar:: Image processing + + With the directives from :ref:`linuxdoc ` the build process + is flexible. To get best results in the generated output format, install + ImageMagick_ and Graphviz_. + +SearXNG's sphinx setup includes: :ref:`linuxdoc:kfigure`. Scalable here means; +scalable in sense of the build process. Normally in absence of a converter +tool, the build process will break. From the authors POV it’s annoying to care +about the build process when handling with images, especially since he has no +access to the build process. With :ref:`linuxdoc:kfigure` the build process +continues and scales output quality in dependence of installed image processors. + +If you want to add an image, you should use the ``kernel-figure`` (inheritance +of :dudir:`figure`) and ``kernel-image`` (inheritance of :dudir:`image`) +directives. E.g. to insert a figure with a scalable image format use SVG +(:ref:`svg image example`): + +.. code:: reST + + .. _svg image example: + + .. kernel-figure:: svg_image.svg + :alt: SVG image example + + Simple SVG image + + To refer the figure, a caption block is needed: :ref:`svg image example`. + +.. _svg image example: + +.. kernel-figure:: svg_image.svg + :alt: SVG image example + + Simple SVG image. + +To refer the figure, a caption block is needed: :ref:`svg image example`. + +DOT files (aka Graphviz) +------------------------ + +With :ref:`linuxdoc:kernel-figure` reST support for **DOT** formatted files is +given. + +- `Graphviz's dot`_ +- DOT_ +- Graphviz_ + +A simple example is shown in :ref:`dot file example`: + +.. code:: reST + + .. _dot file example: + + .. kernel-figure:: hello.dot + :alt: hello world + + DOT's hello world example + +.. admonition:: hello.dot + :class: rst-example + + .. _dot file example: + + .. kernel-figure:: hello.dot + :alt: hello world + + DOT's hello world example + +``kernel-render`` DOT +--------------------- + +Embed *render* markups (or languages) like Graphviz's **DOT** is provided by the +:ref:`linuxdoc:kernel-render` directive. A simple example of embedded DOT_ is +shown in figure :ref:`dot render example`: + +.. code:: reST + + .. _dot render example: + + .. kernel-render:: DOT + :alt: digraph + :caption: Embedded DOT (Graphviz) code + + digraph foo { + "bar" -> "baz"; + } + + Attribute ``caption`` is needed, if you want to refer the figure: :ref:`dot + render example`. + +Please note :ref:`build tools `. If Graphviz_ is +installed, you will see an vector image. If not, the raw markup is inserted as +*literal-block*. + +.. admonition:: kernel-render DOT + :class: rst-example + + .. _dot render example: + + .. kernel-render:: DOT + :alt: digraph + :caption: Embedded DOT (Graphviz) code + + digraph foo { + "bar" -> "baz"; + } + + Attribute ``caption`` is needed, if you want to refer the figure: :ref:`dot + render example`. + +``kernel-render`` SVG +--------------------- + +A simple example of embedded SVG_ is shown in figure :ref:`svg render example`: + +.. code:: reST + + .. _svg render example: + + .. kernel-render:: SVG + :caption: Embedded **SVG** markup + :alt: so-nw-arrow +.. + + .. code:: xml + + + + + + + +.. admonition:: kernel-render SVG + :class: rst-example + + .. _svg render example: + + .. kernel-render:: SVG + :caption: Embedded **SVG** markup + :alt: so-nw-arrow + + + + + + + + + + +.. _reST lists: + +List markups +============ + +Bullet list +----------- + +List markup (:duref:`ref `) is simple: + +.. code:: reST + + - This is a bulleted list. + + 1. Nested lists are possible, but be aware that they must be separated from + the parent list items by blank line + 2. Second item of nested list + + - It has two items, the second + item uses two lines. + + #. This is a numbered list. + #. It has two items too. + +.. admonition:: bullet list + :class: rst-example + + - This is a bulleted list. + + 1. Nested lists are possible, but be aware that they must be separated from + the parent list items by blank line + 2. Second item of nested list + + - It has two items, the second + item uses two lines. + + #. This is a numbered list. + #. It has two items too. + + +Horizontal list +--------------- + +The :rst:dir:`.. hlist:: ` transforms a bullet list into a more compact +list. + +.. code:: reST + + .. hlist:: + + - first list item + - second list item + - third list item + ... + +.. admonition:: hlist + :class: rst-example + + .. hlist:: + + - first list item + - second list item + - third list item + - next list item + - next list item xxxx + - next list item yyyy + - next list item zzzz + + +Definition list +--------------- + +.. sidebar:: Note .. + + - the term cannot have more than one line of text + + - there is **no blank line between term and definition block** // this + distinguishes definition lists (:duref:`ref `) from block + quotes (:duref:`ref `). + +Each definition list (:duref:`ref `) item contains a term, +optional classifiers and a definition. A term is a simple one-line word or +phrase. Optional classifiers may follow the term on the same line, each after +an inline ' : ' (**space, colon, space**). A definition is a block indented +relative to the term, and may contain multiple paragraphs and other body +elements. There may be no blank line between a term line and a definition block +(*this distinguishes definition lists from block quotes*). Blank lines are +required before the first and after the last definition list item, but are +optional in-between. + +Definition lists are created as follows: + +.. code:: reST + + term 1 (up to a line of text) + Definition 1. + + See the typo : this line is not a term! + + And this is not term's definition. **There is a blank line** in between + the line above and this paragraph. That's why this paragraph is taken as + **block quote** (:duref:`ref `) and not as term's definition! + + term 2 + Definition 2, paragraph 1. + + Definition 2, paragraph 2. + + term 3 : classifier + Definition 3. + + term 4 : classifier one : classifier two + Definition 4. + +.. admonition:: definition list + :class: rst-example + + term 1 (up to a line of text) + Definition 1. + + See the typo : this line is not a term! + + And this is not term's definition. **There is a blank line** in between + the line above and this paragraph. That's why this paragraph is taken as + **block quote** (:duref:`ref `) and not as term's definition! + + + term 2 + Definition 2, paragraph 1. + + Definition 2, paragraph 2. + + term 3 : classifier + Definition 3. + + term 4 : classifier one : classifier two + + +Quoted paragraphs +----------------- + +Quoted paragraphs (:duref:`ref `) are created by just indenting +them more than the surrounding paragraphs. Line blocks (:duref:`ref +`) are a way of preserving line breaks: + +.. code:: reST + + normal paragraph ... + lorem ipsum. + + Quoted paragraph ... + lorem ipsum. + + | These lines are + | broken exactly like in + | the source file. + + +.. admonition:: Quoted paragraph and line block + :class: rst-example + + normal paragraph ... + lorem ipsum. + + Quoted paragraph ... + lorem ipsum. + + | These lines are + | broken exactly like in + | the source file. + + +.. _reST field list: + +Field Lists +----------- + +.. _Sphinx Field Lists: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/field-lists.html + +.. sidebar:: bibliographic fields + + First lines fields are bibliographic fields, see `Sphinx Field Lists`_. + +Field lists are used as part of an extension syntax, such as options for +directives, or database-like records meant for further processing. Field lists +are mappings from field names to field bodies. They marked up like this: + +.. code:: reST + + :fieldname: Field content + :foo: first paragraph in field foo + + second paragraph in field foo + + :bar: Field content + +.. admonition:: Field List + :class: rst-example + + :fieldname: Field content + :foo: first paragraph in field foo + + second paragraph in field foo + + :bar: Field content + + +They are commonly used in Python documentation: + +.. code:: python + + def my_function(my_arg, my_other_arg): + """A function just for me. + + :param my_arg: The first of my arguments. + :param my_other_arg: The second of my arguments. + + :returns: A message (just for me, of course). + """ + +Further list blocks +------------------- + +- field lists (:duref:`ref `, with caveats noted in + :ref:`reST field list`) +- option lists (:duref:`ref `) +- quoted literal blocks (:duref:`ref `) +- doctest blocks (:duref:`ref `) + + +Admonitions +=========== + +Sidebar +------- + +Sidebar is an eye catcher, often used for admonitions pointing further stuff or +site effects. Here is the source of the sidebar :ref:`on top of this page `. + +.. code:: reST + + .. sidebar:: KISS_ and readability_ + + Instead of defining more and more roles, we at SearXNG encourage our + contributors to follow principles like KISS_ and readability_. + +Generic admonition +------------------ + +The generic :dudir:`admonition ` needs a title: + +.. code:: reST + + .. admonition:: generic admonition title + + lorem ipsum .. + + +.. admonition:: generic admonition title + + lorem ipsum .. + + +Specific admonitions +-------------------- + +Specific admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, +:dudir:`caution`, :dudir:`danger`, :dudir:`error`, , :dudir:`important`, and +:dudir:`warning` . + +.. code:: reST + + .. hint:: + + lorem ipsum .. + + .. note:: + + lorem ipsum .. + + .. warning:: + + lorem ipsum .. + + +.. hint:: + + lorem ipsum .. + +.. note:: + + lorem ipsum .. + +.. tip:: + + lorem ipsum .. + +.. attention:: + + lorem ipsum .. + +.. caution:: + + lorem ipsum .. + +.. danger:: + + lorem ipsum .. + +.. important:: + + lorem ipsum .. + +.. error:: + + lorem ipsum .. + +.. warning:: + + lorem ipsum .. + + +Tables +====== + +.. sidebar:: Nested tables + + Nested tables are ugly! Not all builder support nested tables, don't use + them! + +ASCII-art tables like :ref:`reST simple table` and :ref:`reST grid table` might +be comfortable for readers of the text-files, but they have huge disadvantages +in the creation and modifying. First, they are hard to edit. Think about +adding a row or a column to a ASCII-art table or adding a paragraph in a cell, +it is a nightmare on big tables. + + +.. sidebar:: List tables + + For meaningful patch and diff use :ref:`reST flat table`. + +Second the diff of modifying ASCII-art tables is not meaningful, e.g. widening a +cell generates a diff in which also changes are included, which are only +ascribable to the ASCII-art. Anyway, if you prefer ASCII-art for any reason, +here are some helpers: + +* `Emacs Table Mode`_ +* `Online Tables Generator`_ + +.. _reST simple table: + +Simple tables +------------- + +:duref:`Simple tables ` allow *colspan* but not *rowspan*. If +your table need some metadata (e.g. a title) you need to add the ``.. table:: +directive`` :dudir:`(ref) ` in front and place the table in its body: + +.. code:: reST + + .. table:: foo gate truth table + :widths: grid + :align: left + + ====== ====== ====== + Inputs Output + ------------- ------ + A B A or B + ====== ====== ====== + False + -------------------- + True + -------------------- + True False True + (foo) + ------ ------ ------ + False True + (foo) + ====== ============= + +.. admonition:: Simple ASCII table + :class: rst-example + + .. table:: foo gate truth table + :widths: grid + :align: left + + ====== ====== ====== + Inputs Output + ------------- ------ + A B A or B + ====== ====== ====== + False + -------------------- + True + -------------------- + True False True + (foo) + ------ ------ ------ + False True + (foo) + ====== ============= + + + +.. _reST grid table: + +Grid tables +----------- + +:duref:`Grid tables ` allow colspan *colspan* and *rowspan*: + +.. code:: reST + + .. table:: grid table example + :widths: 1 1 5 + + +------------+------------+-----------+ + | Header 1 | Header 2 | Header 3 | + +============+============+===========+ + | body row 1 | column 2 | column 3 | + +------------+------------+-----------+ + | body row 2 | Cells may span columns.| + +------------+------------+-----------+ + | body row 3 | Cells may | - Cells | + +------------+ span rows. | - contain | + | body row 4 | | - blocks. | + +------------+------------+-----------+ + +.. admonition:: ASCII grid table + :class: rst-example + + .. table:: grid table example + :widths: 1 1 5 + + +------------+------------+-----------+ + | Header 1 | Header 2 | Header 3 | + +============+============+===========+ + | body row 1 | column 2 | column 3 | + +------------+------------+-----------+ + | body row 2 | Cells may span columns.| + +------------+------------+-----------+ + | body row 3 | Cells may | - Cells | + +------------+ span rows. | - contain | + | body row 4 | | - blocks. | + +------------+------------+-----------+ + + +.. _reST flat table: + +flat-table +---------- + +The ``flat-table`` is a further developed variant of the :ref:`list tables +`. It is a double-stage list similar to the +:dudir:`list-table` with some additional features: + +column-span: ``cspan`` + with the role ``cspan`` a cell can be extended through additional columns + +row-span: ``rspan`` + with the role ``rspan`` a cell can be extended through additional rows + +auto-span: + spans rightmost cell of a table row over the missing cells on the right side + of that table-row. With Option ``:fill-cells:`` this behavior can changed + from *auto span* to *auto fill*, which automatically inserts (empty) cells + instead of spanning the last cell. + +options: + :header-rows: [int] count of header rows + :stub-columns: [int] count of stub columns + :widths: [[int] [int] ... ] widths of columns + :fill-cells: instead of auto-span missing cells, insert missing cells + +roles: + :cspan: [int] additional columns (*morecols*) + :rspan: [int] additional rows (*morerows*) + +The example below shows how to use this markup. The first level of the staged +list is the *table-row*. In the *table-row* there is only one markup allowed, +the list of the cells in this *table-row*. Exception are *comments* ( ``..`` ) +and *targets* (e.g. a ref to :ref:`row 2 of table's body `). + +.. code:: reST + + .. flat-table:: ``flat-table`` example + :header-rows: 2 + :stub-columns: 1 + :widths: 1 1 1 1 2 + + * - :rspan:`1` head / stub + - :cspan:`3` head 1.1-4 + + * - head 2.1 + - head 2.2 + - head 2.3 + - head 2.4 + + * .. row body 1 / this is a comment + + - row 1 + - :rspan:`2` cell 1-3.1 + - cell 1.2 + - cell 1.3 + - cell 1.4 + + * .. Comments and targets are allowed on *table-row* stage. + .. _`row body 2`: + + - row 2 + - cell 2.2 + - :rspan:`1` :cspan:`1` + cell 2.3 with a span over + + * col 3-4 & + * row 2-3 + + * - row 3 + - cell 3.2 + + * - row 4 + - cell 4.1 + - cell 4.2 + - cell 4.3 + - cell 4.4 + + * - row 5 + - cell 5.1 with automatic span to right end + + * - row 6 + - cell 6.1 + - .. + + +.. admonition:: List table + :class: rst-example + + .. flat-table:: ``flat-table`` example + :header-rows: 2 + :stub-columns: 1 + :widths: 1 1 1 1 2 + + * - :rspan:`1` head / stub + - :cspan:`3` head 1.1-4 + + * - head 2.1 + - head 2.2 + - head 2.3 + - head 2.4 + + * .. row body 1 / this is a comment + + - row 1 + - :rspan:`2` cell 1-3.1 + - cell 1.2 + - cell 1.3 + - cell 1.4 + + * .. Comments and targets are allowed on *table-row* stage. + .. _`row body 2`: + + - row 2 + - cell 2.2 + - :rspan:`1` :cspan:`1` + cell 2.3 with a span over + + * col 3-4 & + * row 2-3 + + * - row 3 + - cell 3.2 + + * - row 4 + - cell 4.1 + - cell 4.2 + - cell 4.3 + - cell 4.4 + + * - row 5 + - cell 5.1 with automatic span to right end + + * - row 6 + - cell 6.1 + - .. + + +CSV table +--------- + +CSV table might be the choice if you want to include CSV-data from a outstanding +(build) process into your documentation. + +.. code:: reST + + .. csv-table:: CSV table example + :header: .. , Column 1, Column 2 + :widths: 2 5 5 + :stub-columns: 1 + :file: csv_table.txt + +Content of file ``csv_table.txt``: + +.. literalinclude:: csv_table.txt + +.. admonition:: CSV table + :class: rst-example + + .. csv-table:: CSV table example + :header: .. , Column 1, Column 2 + :widths: 3 5 5 + :stub-columns: 1 + :file: csv_table.txt + +Templating +========== + +.. sidebar:: Build environment + + All *generic-doc* tasks are running in the :ref:`make install`. + +Templating is suitable for documentation which is created generic at the build +time. The sphinx-jinja_ extension evaluates jinja_ templates in the :ref:`make +install` (with SearXNG modules installed). We use this e.g. to build chapter: +:ref:`configured engines`. Below the jinja directive from the +:origin:`docs/admin/engines.rst` is shown: + +.. literalinclude:: ../user/configured_engines.rst + :language: reST + :start-after: .. _configured engines: + +The context for the template is selected in the line ``.. jinja:: searx``. In +sphinx's build configuration (:origin:`docs/conf.py`) the ``searx`` context +contains the ``engines`` and ``plugins``. + +.. code:: py + + import searx.search + import searx.engines + import searx.plugins + searx.search.initialize() + jinja_contexts = { + 'searx': { + 'engines': searx.engines.engines, + 'plugins': searx.plugins.plugins + }, + } + + +Tabbed views +============ + +.. _sphinx-tabs: https://github.com/djungelorm/sphinx-tabs +.. _basic-tabs: https://github.com/djungelorm/sphinx-tabs#basic-tabs +.. _group-tabs: https://github.com/djungelorm/sphinx-tabs#group-tabs +.. _code-tabs: https://github.com/djungelorm/sphinx-tabs#code-tabs + +With `sphinx-tabs`_ extension we have *tabbed views*. To provide installation +instructions with one tab per distribution we use the `group-tabs`_ directive, +others are basic-tabs_ and code-tabs_. Below a *group-tab* example from +:ref:`docs build` is shown: + +.. literalinclude:: ../admin/buildhosts.rst + :language: reST + :start-after: .. SNIP sh lint requirements + :end-before: .. SNAP sh lint requirements + +.. _math: + +Math equations +============== + +.. _Mathematics: https://en.wikibooks.org/wiki/LaTeX/Mathematics +.. _amsmath user guide: + http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/ctan/macros/latex/required/amsmath/amsldoc.pdf + +.. sidebar:: About LaTeX + + - `amsmath user guide`_ + - Mathematics_ + - :ref:`docs build` + +The input language for mathematics is LaTeX markup using the :ctan:`amsmath` +package. + +To embed LaTeX markup in reST documents, use role :rst:role:`:math: ` for +inline and directive :rst:dir:`.. math:: ` for block markup. + +.. code:: reST + + In :math:numref:`schroedinger general` the time-dependent Schrödinger equation + is shown. + + .. math:: + :label: schroedinger general + + \mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle = + \hat{H} |\,\psi (t) \rangle. + +.. admonition:: LaTeX math equation + :class: rst-example + + In :math:numref:`schroedinger general` the time-dependent Schrödinger equation + is shown. + + .. math:: + :label: schroedinger general + + \mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle = + \hat{H} |\,\psi (t) \rangle. + + +The next example shows the difference of ``\tfrac`` (*textstyle*) and ``\dfrac`` +(*displaystyle*) used in a inline markup or another fraction. + +.. code:: reST + + ``\tfrac`` **inline example** :math:`\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}` + ``\dfrac`` **inline example** :math:`\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}` + +.. admonition:: Line spacing + :class: rst-example + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. ... + ``\tfrac`` **inline example** :math:`\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}` + At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd + gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. ... + ``\tfrac`` **inline example** :math:`\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}` + At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd + gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + + +.. _KISS: https://en.wikipedia.org/wiki/KISS_principle + +.. _readability: https://docs.python-guide.org/writing/style/ +.. _Sphinx-Primer: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _reST: https://docutils.sourceforge.io/rst.html +.. _Sphinx Roles: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html +.. _Sphinx: https://www.sphinx-doc.org +.. _`sphinx-doc FAQ`: https://www.sphinx-doc.org/en/stable/faq.html +.. _Sphinx markup constructs: + https://www.sphinx-doc.org/en/stable/markup/index.html +.. _`sphinx cross references`: + https://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-arbitrary-locations +.. _sphinx.ext.extlinks: + https://www.sphinx-doc.org/en/master/usage/extensions/extlinks.html +.. _intersphinx: https://www.sphinx-doc.org/en/stable/ext/intersphinx.html +.. _sphinx config: https://www.sphinx-doc.org/en/stable/config.html +.. _Sphinx's autodoc: https://www.sphinx-doc.org/en/stable/ext/autodoc.html +.. _Sphinx's Python domain: + https://www.sphinx-doc.org/en/stable/domains.html#the-python-domain +.. _Sphinx's C domain: + https://www.sphinx-doc.org/en/stable/domains.html#cross-referencing-c-constructs +.. _doctree: + https://www.sphinx-doc.org/en/master/extdev/tutorial.html?highlight=doctree#build-phases +.. _docutils: http://docutils.sourceforge.net/docs/index.html +.. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html +.. _linuxdoc: https://return42.github.io/linuxdoc +.. _jinja: https://jinja.palletsprojects.com/ +.. _sphinx-jinja: https://github.com/tardyp/sphinx-jinja +.. _SVG: https://www.w3.org/TR/SVG11/expanded-toc.html +.. _DOT: https://graphviz.gitlab.io/_pages/doc/info/lang.html +.. _`Graphviz's dot`: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf +.. _Graphviz: https://graphviz.gitlab.io +.. _ImageMagick: https://www.imagemagick.org + +.. _`Emacs Table Mode`: https://www.emacswiki.org/emacs/TableMode +.. _`Online Tables Generator`: https://www.tablesgenerator.com/text_tables +.. _`OASIS XML Exchange Table Model`: https://www.oasis-open.org/specs/tm9901.html diff --git a/docs/dev/search_api.rst b/_sources/dev/search_api.rst.txt similarity index 89% rename from docs/dev/search_api.rst rename to _sources/dev/search_api.rst.txt index 13858ae9e..2333474a9 100644 --- a/docs/dev/search_api.rst +++ b/_sources/dev/search_api.rst.txt @@ -68,8 +68,8 @@ Parameters Proxy image results through SearXNG. ``autocomplete`` : default from :ref:`settings search` - [ ``google``, ``dbpedia``, ``duckduckgo``, ``mwmbl``, ``startpage``, - ``wikipedia``, ``swisscows``, ``qwant`` ] + [ ``google``, ``dbpedia``, ``duckduckgo``, ``startpage``, ``wikipedia``, + ``swisscows``, ``qwant`` ] Service which completes words as you type. @@ -92,14 +92,16 @@ Parameters List of enabled plugins. :default: - ``Hash_plugin``, ``Self_Information``, - ``Tracker_URL_remover``, ``Ahmia_blacklist`` + ``Hash_plugin``, ``Search_on_category_select``, + ``Self_Information``, ``Tracker_URL_remover``, + ``Ahmia_blacklist`` :values: .. enabled by default - ``Hash_plugin``, ``Self_Information``, - ``Tracker_URL_remover``, ``Ahmia_blacklist``, + ``Hash_plugin``, ``Search_on_category_select``, + ``Self_Information``, ``Tracker_URL_remover``, + ``Ahmia_blacklist``, .. disabled by default diff --git a/docs/dev/searxng_extra/index.rst b/_sources/dev/searxng_extra/index.rst.txt similarity index 100% rename from docs/dev/searxng_extra/index.rst rename to _sources/dev/searxng_extra/index.rst.txt diff --git a/docs/dev/searxng_extra/standalone_searx.py.rst b/_sources/dev/searxng_extra/standalone_searx.py.rst.txt similarity index 100% rename from docs/dev/searxng_extra/standalone_searx.py.rst rename to _sources/dev/searxng_extra/standalone_searx.py.rst.txt diff --git a/docs/dev/searxng_extra/update.rst b/_sources/dev/searxng_extra/update.rst.txt similarity index 100% rename from docs/dev/searxng_extra/update.rst rename to _sources/dev/searxng_extra/update.rst.txt diff --git a/docs/dev/translation.rst b/_sources/dev/translation.rst.txt similarity index 99% rename from docs/dev/translation.rst rename to _sources/dev/translation.rst.txt index 57c76a0c1..693f6d2da 100644 --- a/docs/dev/translation.rst +++ b/_sources/dev/translation.rst.txt @@ -56,7 +56,7 @@ Sync from *origin* to *weblate*: using ``make weblate.push.translations`` <.github/workflows/integration.yml>` checks for updated translations. Sync from *weblate* to *origin*: using ``make weblate.translations.commit`` - Every Friday, the GitHub workflow :origin:`babel / create PR for additions from + Every Friday, the GitHub workflow :origin:`babel / create PR for additons from weblate <.github/workflows/translations-update.yml>` creates a PR with the updated translation files: diff --git a/docs/index.rst b/_sources/index.rst.txt similarity index 100% rename from docs/index.rst rename to _sources/index.rst.txt diff --git a/docs/own-instance.rst b/_sources/own-instance.rst.txt similarity index 100% rename from docs/own-instance.rst rename to _sources/own-instance.rst.txt diff --git a/docs/src/index.rst b/_sources/src/index.rst.txt similarity index 100% rename from docs/src/index.rst rename to _sources/src/index.rst.txt diff --git a/docs/src/searx.babel_extract.rst b/_sources/src/searx.babel_extract.rst.txt similarity index 100% rename from docs/src/searx.babel_extract.rst rename to _sources/src/searx.babel_extract.rst.txt diff --git a/docs/src/searx.botdetection.rst b/_sources/src/searx.botdetection.rst.txt similarity index 79% rename from docs/src/searx.botdetection.rst rename to _sources/src/searx.botdetection.rst.txt index 04cb81dfd..48261ceac 100644 --- a/docs/src/searx.botdetection.rst +++ b/_sources/src/searx.botdetection.rst.txt @@ -12,17 +12,13 @@ Bot Detection .. automodule:: searx.botdetection :members: -.. _botdetection ip_lists: - -IP lists -======== +.. automodule:: searx.botdetection.limiter + :members: .. automodule:: searx.botdetection.ip_lists :members: -.. _botdetection rate limit: - Rate limit ========== @@ -33,8 +29,6 @@ Rate limit :members: -.. _botdetection probe headers: - Probe HTTP headers ================== @@ -52,11 +46,3 @@ Probe HTTP headers .. automodule:: searx.botdetection.http_user_agent :members: - -.. _botdetection config: - -Config -====== - -.. automodule:: searx.botdetection.config - :members: diff --git a/docs/src/searx.exceptions.rst b/_sources/src/searx.exceptions.rst.txt similarity index 100% rename from docs/src/searx.exceptions.rst rename to _sources/src/searx.exceptions.rst.txt diff --git a/docs/src/searx.infopage.rst b/_sources/src/searx.infopage.rst.txt similarity index 100% rename from docs/src/searx.infopage.rst rename to _sources/src/searx.infopage.rst.txt diff --git a/docs/src/searx.locales.rst b/_sources/src/searx.locales.rst.txt similarity index 100% rename from docs/src/searx.locales.rst rename to _sources/src/searx.locales.rst.txt diff --git a/docs/src/searx.plugins.tor_check.rst b/_sources/src/searx.plugins.tor_check.rst.txt similarity index 100% rename from docs/src/searx.plugins.tor_check.rst rename to _sources/src/searx.plugins.tor_check.rst.txt diff --git a/docs/src/searx.redisdb.rst b/_sources/src/searx.redisdb.rst.txt similarity index 100% rename from docs/src/searx.redisdb.rst rename to _sources/src/searx.redisdb.rst.txt diff --git a/docs/src/searx.redislib.rst b/_sources/src/searx.redislib.rst.txt similarity index 100% rename from docs/src/searx.redislib.rst rename to _sources/src/searx.redislib.rst.txt diff --git a/docs/src/searx.search.processors.rst b/_sources/src/searx.search.processors.rst.txt similarity index 100% rename from docs/src/searx.search.processors.rst rename to _sources/src/searx.search.processors.rst.txt diff --git a/docs/src/searx.search.rst b/_sources/src/searx.search.rst.txt similarity index 100% rename from docs/src/searx.search.rst rename to _sources/src/searx.search.rst.txt diff --git a/docs/src/searx.utils.rst b/_sources/src/searx.utils.rst.txt similarity index 100% rename from docs/src/searx.utils.rst rename to _sources/src/searx.utils.rst.txt diff --git a/docs/user/about.rst b/_sources/user/about.rst.txt similarity index 100% rename from docs/user/about.rst rename to _sources/user/about.rst.txt diff --git a/docs/user/configured_engines.rst b/_sources/user/configured_engines.rst.txt similarity index 100% rename from docs/user/configured_engines.rst rename to _sources/user/configured_engines.rst.txt diff --git a/docs/user/index.rst b/_sources/user/index.rst.txt similarity index 100% rename from docs/user/index.rst rename to _sources/user/index.rst.txt diff --git a/docs/user/search-syntax.rst b/_sources/user/search-syntax.rst.txt similarity index 100% rename from docs/user/search-syntax.rst rename to _sources/user/search-syntax.rst.txt diff --git a/docs/utils/index.rst b/_sources/utils/index.rst.txt similarity index 100% rename from docs/utils/index.rst rename to _sources/utils/index.rst.txt diff --git a/docs/utils/lxc.sh.rst b/_sources/utils/lxc.sh.rst.txt similarity index 97% rename from docs/utils/lxc.sh.rst rename to _sources/utils/lxc.sh.rst.txt index fae302c90..43dc915ef 100644 --- a/docs/utils/lxc.sh.rst +++ b/_sources/utils/lxc.sh.rst.txt @@ -175,7 +175,7 @@ Each container shares the root folder of the repository and the command /share/SearXNG The path ``/share/SearXNG`` will be different on your HOST system. The commands -in the container are executed by the ``root`` inside of the container. Compare +in the conatiner are executed by the ``root`` inside of the container. Compare output of:: $ ls -li Makefile @@ -188,9 +188,9 @@ output of:: Since the path ``/share/SearXNG`` of the HOST system is wrapped into the container under the same name, the shown ``Makefile`` (inode ``47712402``) in -the output is always the identical ``/share/SearXNG/Makefile`` from the HOST +the ouput is always the identical ``/share/SearXNG/Makefile`` from the HOST system. In the example shown above the owner of the path in the container is -the ``root`` user of the container (and the timezone in the container is +the ``root`` user of the conatiner (and the timezone in the container is different to HOST system). diff --git a/docs/utils/searxng.sh.rst b/_sources/utils/searxng.sh.rst.txt similarity index 100% rename from docs/utils/searxng.sh.rst rename to _sources/utils/searxng.sh.rst.txt diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 000000000..cfc60b86c --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,921 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 000000000..d06a71d75 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 000000000..04d53f644 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '2023.8.11+905ce2a6f', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 000000000..a858a410e Binary files /dev/null and b/_static/file.png differ diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 000000000..250f5665f --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 000000000..d96755fda Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 000000000..7107cec93 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pocoo.css b/_static/pocoo.css new file mode 100644 index 000000000..4f14b31ee --- /dev/null +++ b/_static/pocoo.css @@ -0,0 +1,525 @@ +@import url("basic.css"); + +/* -- page layout --------------------------------------------------- */ + +body { + font-family: 'Garamond', 'Georgia', serif; + font-size: 17px; + background-color: #fff; + color: #3e4349; + margin: 0; + padding: 0; +} + +div.related { + max-width: 1140px; + margin: 10px auto; + + /* displayed on mobile */ + display: none; +} + +div.document { + max-width: 1140px; + margin: 10px auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.body { + min-width: initial; + max-width: initial; + padding: 0 30px; +} + +div.sphinxsidebarwrapper { + padding: 10px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; + color: #444; +} + +div.sphinxsidebar li { + overflow: hidden; + text-overflow: ellipsis; +} + +div.sphinxsidebar li:hover { + overflow: visible; +} + +div.sphinxsidebar a, +div.sphinxsidebar a code { + color: #444; + border-color: #444; +} + +div.sphinxsidebar a:hover { + background-color:#fff; +} + +div.sphinxsidebar p.logo { + margin: 0; + text-align: center; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-size: 24px; + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p, +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; +} + +div.sphinxsidebar input { + border: 1px solid #999; + font-size: 1em; +} + +div.footer { + max-width: 1140px; + margin: 20px auto; + font-size: 14px; + text-align: right; + color: #888; +} + +div.footer a { + color: #888; + border-color: #888; +} + +/* -- quick search -------------------------------------------------- */ + +div.sphinxsidebar #searchbox form { + display: flex; +} + +div.sphinxsidebar #searchbox form > div { + display: flex; + flex: 1 1 auto; +} + +div.sphinxsidebar #searchbox input[type=text] { + flex: 1 1 auto; + width: 1% !important; +} + +div.sphinxsidebar #searchbox input[type=submit] { + border-left-width: 0; +} + +/* -- versions ------------------------------------------------------ */ + +div.sphinxsidebar ul.versions a.current { + font-style: italic; + border-bottom: 1px solid #000; + color: #000; +} + +div.sphinxsidebar ul.versions span.note { + color: #999; +} + +/* -- version warning ----------------------------------------------- */ + +p.version-warning { + top: 10px; + position: sticky; + + margin: 10px 0; + padding: 5px 10px; + border-radius: 4px; + + letter-spacing: 1px; + color: #fff; + text-shadow: 0 0 2px #000; + text-align: center; + + background: #d40 repeating-linear-gradient( + 135deg, + transparent, + transparent 56px, + rgba(255, 255, 255, 0.2) 56px, + rgba(255, 255, 255, 0.2) 112px + ); +} + +p.version-warning a { + color: #fff; + border-color: #fff; +} + +/* -- body styles --------------------------------------------------- */ + +a { + text-decoration: underline; + text-decoration-style: dotted; + text-decoration-color: #000; + text-decoration-thickness: 1px; +} + +a:hover { + text-decoration-style: solid; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: normal; + margin: 30px 0 10px; + padding: 0; + color: black; +} + +div.body h1 { + font-size: 240%; +} + +div.body h2 { + font-size: 180%; +} + +div.body h3 { + font-size: 150%; +} + +div.body h4 { + font-size: 130%; +} + +div.body h5 { + font-size: 100%; +} + +div.body h6 { + font-size: 100%; +} + +div.body h1:first-of-type { + margin-top: 0; +} + +a.headerlink { + color: #ddd; + margin: 0 0.2em; + padding: 0 0.2em; + border: none; +} + +a.headerlink:hover { + color: #444; +} + +div.body p, +div.body dd, +div.body li { + line-height: 1.4; +} + +img.screenshot { + box-shadow: 2px 2px 4px #eee; +} + +hr { + border: 1px solid #999; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + margin: 10px 0 10px 30px; + padding: 0; +} + +a.footnote-reference { + font-size: 0.7em; + vertical-align: top; +} + +/* -- admonitions --------------------------------------------------- */ + +div.admonition, +div.topic { + background-color: #fafafa; + margin: 10px -10px; + padding: 10px; + border-top: 1px solid #ccc; + border-right: none; + border-bottom: 1px solid #ccc; + border-left: none; +} + +div.admonition p.admonition-title, +div.topic p.topic-title { + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; + display: inline; +} + +p.admonition-title::after { + content: ":"; +} + +div.admonition p.last, +div.topic p:last-child { + margin-bottom: 0; +} + +div.danger, div.error { + background-color: #fff0f0; + border-color: #ffb0b0; +} + +div.seealso { + background-color: #fffff0; + border-color: #f0f0a8; +} + +/* -- changelog ----------------------------------------------------- */ + +details.changelog summary { + cursor: pointer; + font-style: italic; + margin-bottom: 10px; +} + +/* -- search highlight ---------------------------------------------- */ + +dt:target, +.footnote:target, +span.highlighted { + background-color: #ffdf80; +} + +rect.highlighted { + fill: #ffdf80; +} + +/* -- code displays ------------------------------------------------- */ + +pre, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +pre { + margin: 0; + padding: 0; + line-height: 1.3; +} + +div.literal-block-wrapper { + padding: 10px 0 0; +} + +div.code-block-caption { + padding: 0; +} + +div.highlight, div.literal-block-wrapper div.highlight { + margin: 10px -10px; + padding: 10px; +} + +code { + color: #222; + background: #e8eff0; +} + +/* -- tables -------------------------------------------------------- */ + +table.docutils { + border: 1px solid #888; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils td, +table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, +table.footnote { + border: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #eee; + background-color: #fafafa; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.footnote td.label { + width: 0; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +/* -- responsive screen --------------------------------------------- */ + +@media screen and (max-width: 1139px) { + p.version-warning { + margin: 10px; + } + + div.footer { + margin: 20px 10px; + } +} + +/* -- small screen -------------------------------------------------- */ + +@media screen and (max-width: 767px) { + body { + padding: 0 20px; + } + + div.related { + display: block; + } + + p.version-warning { + margin: 10px 0; + } + + div.documentwrapper { + float: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + div.sphinxsidebar { + float: none; + width: 100%; + margin: 0 -20px -10px; + padding: 0 20px; + background-color: #333; + color: #ccc; + } + + div.sphinxsidebar a, + div.sphinxsidebar a code, + div.sphinxsidebar h3, + div.sphinxsidebar h4, + div.footer a { + color: #ccc; + border-color: #ccc; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.sphinxsidebar ul.versions a.current { + border-bottom-color: #fff; + color: #fff; + } + + div.footer { + text-align: left; + margin: 0 -20px; + padding: 20px; + background-color: #333; + color: #ccc; + } +} + +/* https://github.com/twbs/bootstrap/blob + /0e8831505ac845f3102fa2c5996a7141c9ab01ee + /scss/mixins/_screen-reader.scss */ +.hide-header > h1:first-child { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +/* -- sphinx-tabs -------------------------------------------------- */ + +.sphinx-tabs { + margin-bottom: 0; +} + +.sphinx-tabs .ui.menu { + font-family: 'Garamond', 'Georgia', serif !important; +} + +.sphinx-tabs .ui.attached.menu { + border-bottom: none +} + +.sphinx-tabs .ui.tabular.menu .item { + border-bottom: 2px solid transparent; + border-left: none; + border-right: none; + border-top: none; + padding: .3em 0.6em; +} + +.sphinx-tabs .ui.attached.segment, .ui.segment { + border: 0; + padding: 0; +} diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 000000000..57c7df37b --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000 } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 000000000..97d56a74d --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/src/brand/searxng-wordmark.svg b/_static/searxng-wordmark.svg similarity index 100% rename from src/brand/searxng-wordmark.svg rename to _static/searxng-wordmark.svg diff --git a/docs/_themes/searxng/static/searxng.css b/_static/searxng.css similarity index 100% rename from docs/_themes/searxng/static/searxng.css rename to _static/searxng.css diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/_static/tabs.css b/_static/tabs.css new file mode 100644 index 000000000..957ba60d6 --- /dev/null +++ b/_static/tabs.css @@ -0,0 +1,89 @@ +.sphinx-tabs { + margin-bottom: 1rem; +} + +[role="tablist"] { + border-bottom: 1px solid #a0b3bf; +} + +.sphinx-tabs-tab { + position: relative; + font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; + color: #1D5C87; + line-height: 24px; + margin: 0; + font-size: 16px; + font-weight: 400; + background-color: rgba(255, 255, 255, 0); + border-radius: 5px 5px 0 0; + border: 0; + padding: 1rem 1.5rem; + margin-bottom: 0; +} + +.sphinx-tabs-tab[aria-selected="true"] { + font-weight: 700; + border: 1px solid #a0b3bf; + border-bottom: 1px solid white; + margin: -1px; + background-color: white; +} + +.sphinx-tabs-tab:focus { + z-index: 1; + outline-offset: 1px; +} + +.sphinx-tabs-panel { + position: relative; + padding: 1rem; + border: 1px solid #a0b3bf; + margin: 0px -1px -1px -1px; + border-radius: 0 0 5px 5px; + border-top: 0; + background: white; +} + +.sphinx-tabs-panel.code-tab { + padding: 0.4rem; +} + +.sphinx-tab img { + margin-bottom: 24 px; +} + +/* Dark theme preference styling */ + +@media (prefers-color-scheme: dark) { + body[data-theme="auto"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); + } + + body[data-theme="auto"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); + } + + body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 1px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); + } +} + +/* Explicit dark theme styling */ + +body[data-theme="dark"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); +} + +body[data-theme="dark"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); +} + +body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 2px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); +} diff --git a/_static/tabs.js b/_static/tabs.js new file mode 100644 index 000000000..48dc303c8 --- /dev/null +++ b/_static/tabs.js @@ -0,0 +1,145 @@ +try { + var session = window.sessionStorage || {}; +} catch (e) { + var session = {}; +} + +window.addEventListener("DOMContentLoaded", () => { + const allTabs = document.querySelectorAll('.sphinx-tabs-tab'); + const tabLists = document.querySelectorAll('[role="tablist"]'); + + allTabs.forEach(tab => { + tab.addEventListener("click", changeTabs); + }); + + tabLists.forEach(tabList => { + tabList.addEventListener("keydown", keyTabs); + }); + + // Restore group tab selection from session + const lastSelected = session.getItem('sphinx-tabs-last-selected'); + if (lastSelected != null) selectNamedTabs(lastSelected); +}); + +/** + * Key focus left and right between sibling elements using arrows + * @param {Node} e the element in focus when key was pressed + */ +function keyTabs(e) { + const tab = e.target; + let nextTab = null; + if (e.keyCode === 39 || e.keyCode === 37) { + tab.setAttribute("tabindex", -1); + // Move right + if (e.keyCode === 39) { + nextTab = tab.nextElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.firstElementChild; + } + // Move left + } else if (e.keyCode === 37) { + nextTab = tab.previousElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.lastElementChild; + } + } + } + + if (nextTab !== null) { + nextTab.setAttribute("tabindex", 0); + nextTab.focus(); + } +} + +/** + * Select or deselect clicked tab. If a group tab + * is selected, also select tab in other tabLists. + * @param {Node} e the element that was clicked + */ +function changeTabs(e) { + // Use this instead of the element that was clicked, in case it's a child + const notSelected = this.getAttribute("aria-selected") === "false"; + const positionBefore = this.parentNode.getBoundingClientRect().top; + const notClosable = !this.parentNode.classList.contains("closeable"); + + deselectTabList(this); + + if (notSelected || notClosable) { + selectTab(this); + const name = this.getAttribute("name"); + selectNamedTabs(name, this.id); + + if (this.classList.contains("group-tab")) { + // Persist during session + session.setItem('sphinx-tabs-last-selected', name); + } + } + + const positionAfter = this.parentNode.getBoundingClientRect().top; + const positionDelta = positionAfter - positionBefore; + // Scroll to offset content resizing + window.scrollTo(0, window.scrollY + positionDelta); +} + +/** + * Select tab and show associated panel. + * @param {Node} tab tab to select + */ +function selectTab(tab) { + tab.setAttribute("aria-selected", true); + + // Show the associated panel + document + .getElementById(tab.getAttribute("aria-controls")) + .removeAttribute("hidden"); +} + +/** + * Hide the panels associated with all tabs within the + * tablist containing this tab. + * @param {Node} tab a tab within the tablist to deselect + */ +function deselectTabList(tab) { + const parent = tab.parentNode; + const grandparent = parent.parentNode; + + Array.from(parent.children) + .forEach(t => t.setAttribute("aria-selected", false)); + + Array.from(grandparent.children) + .slice(1) // Skip tablist + .forEach(panel => panel.setAttribute("hidden", true)); +} + +/** + * Select grouped tabs with the same name, but no the tab + * with the given id. + * @param {Node} name name of grouped tab to be selected + * @param {Node} clickedId id of clicked tab + */ +function selectNamedTabs(name, clickedId=null) { + const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`); + const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode); + + tabLists + .forEach(tabList => { + // Don't want to change the tabList containing the clicked tab + const clickedTab = tabList.querySelector(`[id="${clickedId}"]`); + if (clickedTab === null ) { + // Select first tab with matching name + const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`); + deselectTabList(tab); + selectTab(tab); + } + }) +} + +if (typeof exports === 'undefined') { + exports = {}; +} + +exports.keyTabs = keyTabs; +exports.changeTabs = changeTabs; +exports.selectTab = selectTab; +exports.deselectTabList = deselectTabList; +exports.selectNamedTabs = selectNamedTabs; diff --git a/_static/version_warning_offset.js b/_static/version_warning_offset.js new file mode 100644 index 000000000..c7f9f49b5 --- /dev/null +++ b/_static/version_warning_offset.js @@ -0,0 +1,40 @@ +/* +When showing the sticky version warning, the warning will cover the +scroll target when navigating to #id hash locations. Take over scrolling +to adjust the position to account for the height of the warning. +*/ +$(() => { + const versionWarning = $('.version-warning') + + // Skip if there is no version warning, regular browser behavior is + // fine in that case. + if (versionWarning.length) { + const height = versionWarning.outerHeight(true) + const target = $(':target') + + // Adjust position when the initial link has a hash. + if (target.length) { + // Use absolute scrollTo instead of relative scrollBy to avoid + // scrolling when the viewport is already at the bottom of the + // document and has space. + const y = target.offset().top - height + // Delayed because the initial browser scroll doesn't seem to + // happen until after the document ready event, so scrolling + // immediately will be overridden. + setTimeout(() => scrollTo(0, y), 100) + } + + // Listen to clicks on hash anchors. + $('a[href^="#"]').on('click', e => { + // Stop default scroll. Also stops the automatic URL hash update. + e.preventDefault() + // Get the id to scroll to and set the URL hash manually. + const id = $(e.currentTarget).attr('href').substring(1) + location.hash = id + // Use getElementById since the hash may have dots in it. + const target = $(document.getElementById(id)) + // Scroll to top of target with space for the version warning. + scrollTo(0, target.offset().top - height) + }) + } +}) diff --git a/admin/answer-captcha.html b/admin/answer-captcha.html new file mode 100644 index 000000000..281243572 --- /dev/null +++ b/admin/answer-captcha.html @@ -0,0 +1,196 @@ + + + + + + + + Answer CAPTCHA from server’s IP — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

Answer CAPTCHA from server’s IP

+

With a SSH tunnel we can send requests from server’s IP and solve a CAPTCHA that +blocks requests from this IP. If your SearXNG instance is hosted at +example.org and your login is user you can setup a proxy simply by +ssh:

+
# SOCKS server: socks://127.0.0.1:8080
+
+$ ssh -q -N -D 8080 user@example.org
+
+
+

The socks://localhost:8080 from above can be tested by:

+
+
$ curl -x socks://127.0.0.1:8080 http://ipecho.net/plain
+n.n.n.n
+
+
+
+

In the settings of the WEB browser open the “Network Settings” and setup a +proxy on SOCKS5 127.0.0.1:8080 (see screenshot below). In the WEB browser +check the IP from the server is used:

+ +

Now open the search engine that blocks requests from your server’s IP. If you +have issues with the qwant engine, +solve the CAPTCHA from qwant.com.

+
+
+
+FFox proxy on SOCKS5, 127.0.0.1:8080 +
+

Fig. 1 Firefox’s network settings

+
+
+
+
+

ssh manual:

+
+
-D [bind_address:]port

Specifies a local “dynamic” application-level port forwarding. This works +by allocating a socket to listen to port on the local side .. Whenever a +connection is made to this port, the connection is forwarded over the +secure channel, and the application protocol is then used to determine +where to connect to from the remote machine .. ssh will act as a SOCKS +server ..

+
+
+
+
-N
+

Do not execute a remote command. This is useful for just forwarding ports.

+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/api.html b/admin/api.html new file mode 100644 index 000000000..c18918ba8 --- /dev/null +++ b/admin/api.html @@ -0,0 +1,226 @@ + + + + + + + + Administration API — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Administration API

+
+

Get configuration data

+
GET /config  HTTP/1.1
+
+
+
+

Sample response

+
{
+  "autocomplete": "",
+  "categories": [
+    "map",
+    "it",
+    "images",
+  ],
+  "default_locale": "",
+  "default_theme": "simple",
+  "engines": [
+    {
+      "categories": [
+        "map"
+      ],
+      "enabled": true,
+      "name": "openstreetmap",
+      "shortcut": "osm"
+    },
+    {
+      "categories": [
+        "it"
+      ],
+      "enabled": true,
+      "name": "arch linux wiki",
+      "shortcut": "al"
+    },
+    {
+      "categories": [
+        "images"
+      ],
+      "enabled": true,
+      "name": "google images",
+      "shortcut": "goi"
+    },
+    {
+      "categories": [
+        "it"
+      ],
+      "enabled": false,
+      "name": "bitbucket",
+      "shortcut": "bb"
+    },
+  ],
+  "instance_name": "searx",
+  "locales": {
+    "de": "Deutsch (German)",
+    "en": "English",
+    "eo": "Esperanto (Esperanto)",
+  },
+  "plugins": [
+    {
+      "enabled": true,
+      "name": "HTTPS rewrite"
+    },
+    {
+      "enabled": false,
+      "name": "Vim-like hotkeys"
+    }
+  ],
+  "safe_search": 0
+}
+
+
+
+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/architecture.html b/admin/architecture.html new file mode 100644 index 000000000..11dfce900 --- /dev/null +++ b/admin/architecture.html @@ -0,0 +1,191 @@ + + + + + + + + Architecture — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Architecture

+ +

Herein you will find some hints and suggestions about typical architectures of +SearXNG infrastructures.

+
+

uWSGI Setup

+

We start with a reference setup for public SearXNG instances which can be build +up and maintained by the scripts from our DevOps tooling box.

+
+arch_public.dot
+

Fig. 2 Reference architecture of a public SearXNG setup.

+
+
+

The reference installation activates server.limiter, server.image_proxy +and ui.static_use_hash (/etc/searxng/settings.yml)

+
# SearXNG settings
+
+use_default_settings: true
+
+general:
+  debug: false
+  instance_name: "SearXNG"
+
+search:
+  safe_search: 2
+  autocomplete: 'duckduckgo'
+
+server:
+  # Is overwritten by ${SEARXNG_SECRET}
+  secret_key: "ultrasecretkey"
+  limiter: true
+  image_proxy: true
+  # public URL of the instance, to ensure correct inbound links. Is overwritten
+  # by ${SEARXNG_URL}.
+  # base_url: http://example.com/location
+
+redis:
+  # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}.
+  url: unix:///usr/local/searxng-redis/run/redis.sock?db=0
+
+ui:
+  static_use_hash: true
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/buildhosts.html b/admin/buildhosts.html new file mode 100644 index 000000000..812ad79b6 --- /dev/null +++ b/admin/buildhosts.html @@ -0,0 +1,277 @@ + + + + + + + + Buildhosts — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

Buildhosts

+ +

To get best results from build, it’s recommend to install additional packages on +build hosts (see utils/searxng.sh).

+
+

Build and Development tools

+

To Install tools used by build and development tasks in once:

+
+
$ sudo -H ./utils/searxng.sh install buildhost
+
+
+
+

This will install packages needed by SearXNG:

+
+
$ sudo -H apt-get install -y \
+    python3-dev python3-babel python3-venv \
+    uwsgi uwsgi-plugin-python3 \
+    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev
+
+
+
+

and packages needed to build docuemtation and run tests:

+
+
$ sudo -H apt-get install -y \
+    firefox graphviz imagemagick texlive-xetex librsvg2-bin \
+    texlive-latex-recommended texlive-extra-utils fonts-dejavu \
+    latexmk shellcheck
+
+
+
+
+
+

Build docs

+ +

Most of the sphinx requirements are installed from git://setup.py and the +docs can be build from scratch with make docs.html. For better math and +image processing additional packages are needed. The XeTeX needed not only for +PDF creation, it’s also needed for Math equations when HTML output is build.

+

To be able to do Math support for HTML outputs in Sphinx without CDNs, the math are rendered +as images (sphinx.ext.imgmath extension).

+

Here is the extract from the git://docs/conf.py file, setting math renderer +to imgmath:

+
html_math_renderer = 'imgmath'
+imgmath_image_format = 'svg'
+imgmath_font_size = 14
+
+
+

If your docs build (make docs.html) shows warnings like this:

+
WARNING: dot(1) not found, for better output quality install \
+         graphviz from https://www.graphviz.org
+..
+WARNING: LaTeX command 'latex' cannot be run (needed for math \
+         display), check the imgmath_latex setting
+
+
+

you need to install additional packages on your build host, to get better HTML +output (install buildhost).

+
+
$ sudo apt install graphviz imagemagick texlive-xetex librsvg2-bin
+
+
+
+

For PDF output you also need:

+
+
$ sudo apt texlive-latex-recommended texlive-extra-utils ttf-dejavu
+
+
+
+
+
+

Lint shell scripts

+

To lint shell scripts we use ShellCheck - a shell script static analysis tool +(install buildhost).

+
+
$ sudo apt install shellcheck
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 000000000..802b96721 --- /dev/null +++ b/admin/index.html @@ -0,0 +1,213 @@ + + + + + + + + Administrator documentation — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation-apache.html b/admin/installation-apache.html new file mode 100644 index 000000000..1521cf6d0 --- /dev/null +++ b/admin/installation-apache.html @@ -0,0 +1,471 @@ + + + + + + + + Apache — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

Apache

+

This section explains how to set up a SearXNG instance using the HTTP server Apache. +If you did use the Installation Script and do not have any special preferences +you can install the SearXNG site using +searxng.sh:

+
$ sudo -H ./utils/searxng.sh install apache
+
+
+

If you have special interests or problems with setting up Apache, the following +section might give you some guidance.

+ + +
+

The Apache HTTP server

+

If Apache is not installed, install it now. If apache is new to you, the +Getting Started, Configuration Files and Terms Used to Describe +Directives documentation gives first orientation. There is also a list of +Apache directives to keep in the pocket.

+
+
sudo -H apt-get install apache2
+
+
+
+

Now at http://localhost you should see some kind of Welcome or Test page. +How this default site is configured, depends on the linux distribution +(compare Apache directives).

+
+
less /etc/apache2/sites-enabled/000-default.conf
+
+
+

In this file, there is a line setting the DocumentRoot directive:

+
DocumentRoot /var/www/html
+
+
+

And the welcome page is the HTML file at /var/www/html/index.html.

+
+
+

Debian’s Apache layout

+

Be aware, Debian’s Apache layout is quite different from the standard Apache +configuration. For details look at the apache2.README.Debian +(/usr/share/doc/apache2/README.Debian.gz). Some commands you should know on +Debian:

+ +
+
+

Apache modules

+

To load additional modules, in most distributions you have to un-comment the +lines with the corresponding LoadModule directive, except in Debian’s Apache layout.

+
+

Debian’s Apache layout uses a2enmod and a2dismod to +activate or disable modules:

+
sudo -H a2enmod ssl
+sudo -H a2enmod headers
+sudo -H a2enmod proxy
+sudo -H a2enmod proxy_http
+sudo -H a2enmod proxy_uwsgi
+
+
+
+
+
+

Apache sites

+
+

In Debian’s Apache layout you create a searxng.conf with the +<Location /searxng > directive and save this file in the sites +available folder at /etc/apache2/sites-available. To enable the +searxng.conf use a2ensite:

+
sudo -H a2ensite searxng.conf
+
+
+
+
+
+
+

Apache’s SearXNG site

+ +

To proxy the incoming requests to the SearXNG instance Apache needs the +mod_proxy module (Apache modules).

+ +

Depending on what your SearXNG installation is listening on, you need a http +mod_proxy_http) or socket (mod_proxy_uwsgi) communication to upstream.

+

The Installation Script installs the reference setup and a uWSGI setup that listens on a socket by default. +You can install and activate your own searxng.conf like shown in +Apache sites.

+
+
# -*- coding: utf-8; mode: apache -*-
+
+LoadModule ssl_module           /usr/lib/apache2/modules/mod_ssl.so
+LoadModule headers_module       /usr/lib/apache2/modules/mod_headers.so
+LoadModule proxy_module         /usr/lib/apache2/modules/mod_proxy.so
+LoadModule proxy_uwsgi_module   /usr/lib/apache2/modules/mod_proxy_uwsgi.so
+# LoadModule setenvif_module      /usr/lib/apache2/modules/mod_setenvif.so
+#
+# SetEnvIf Request_URI /searxng dontlog
+# CustomLog /dev/null combined env=dontlog
+
+<Location /searxng>
+
+    Require all granted
+    Order deny,allow
+    Deny from all
+    # Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+    Allow from all
+
+    # add the trailing slash
+    RedirectMatch  308 /searxng$ /searxng/
+
+    ProxyPreserveHost On
+    ProxyPass unix:/usr/local/searxng/run/socket|uwsgi://uwsgi-uds-searxng/
+
+    # see flaskfix.py
+    RequestHeader set X-Scheme %{REQUEST_SCHEME}s
+    RequestHeader set X-Script-Name /searxng
+
+    # see limiter.py
+    RequestHeader set X-Real-IP %{REMOTE_ADDR}s
+    RequestHeader append X-Forwarded-For %{REMOTE_ADDR}s
+
+</Location>
+
+# uWSGI serves the static files and in settings.yml we use::
+#
+#   ui:
+#     static_use_hash: true
+#
+# Alias /searxng/static/ /usr/local/searxng/searxng-src/searx/static/
+
+
+
+

Restart service:

+
+
sudo -H systemctl restart apache2
+sudo -H service uwsgi restart searxng
+
+
+
+
+
+

disable logs

+

For better privacy you can disable Apache logs. In the examples above activate +one of the lines and restart apache:

+
SetEnvIf Request_URI "/searxng" dontlog
+# CustomLog /dev/null combined env=dontlog
+
+
+

The CustomLog directive disables logs for the entire (virtual) server, use it +when the URL of the service does not have a path component (/searxng), so when +SearXNG is located at root (/).

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation-docker.html b/admin/installation-docker.html new file mode 100644 index 000000000..ed98f8d5a --- /dev/null +++ b/admin/installation-docker.html @@ -0,0 +1,319 @@ + + + + + + + + Docker Container — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Docker Container

+
+ +

If you intend to create a public instance using Docker, use our well maintained +docker container

+ + +

The sources are hosted at searxng-docker and the container includes:

+ +

The default SearXNG setup +of this container:

+ +
+
+

Get Docker

+

If you plan to build and maintain a docker image by yourself, make sure you have +Docker installed. On Linux don’t +forget to add your user to the docker group (log out and log back in so that +your group membership is re-evaluated):

+
$ sudo usermod -a -G docker $USER
+
+
+
+
+

searxng/searxng

+ +

The docker image is based on git://Dockerfile and available from +searxng/searxng @dockerhub. Using the docker image is quite easy, for +instance you can pull the searxng/searxng @dockerhub image and deploy a local +instance using docker run:

+
$ mkdir my-instance
+$ cd my-instance
+$ export PORT=8080
+$ docker pull searxng/searxng
+$ docker run --rm \
+             -d -p ${PORT}:8080 \
+             -v "${PWD}/searxng:/etc/searxng" \
+             -e "BASE_URL=http://localhost:$PORT/" \
+             -e "INSTANCE_NAME=my-instance" \
+             searxng/searxng
+2f998.... # container's ID
+
+
+

Open your WEB browser and visit the URL:

+
$ xdg-open "http://localhost:$PORT"
+
+
+

Inside ${PWD}/searxng, you will find settings.yml and uwsgi.ini. You +can modify these files according to your needs and restart the Docker image.

+
$ docker container restart 2f998
+
+
+

Use command container ls to list running containers, add flag -a to list +exited containers also. With container stop a running container can be +stoped. To get rid of a container use container rm:

+
$ docker container ls
+CONTAINER ID   IMAGE             COMMAND                  CREATED         ...
+2f998d725993   searxng/searxng   "/sbin/tini -- /usr/…"   7 minutes ago   ...
+
+$ docker container stop 2f998
+$ docker container rm 2f998
+
+
+ +

If you won’t use docker anymore and want to get rid of all containers & images +use the following prune command:

+
$ docker stop $(docker ps -aq)       # stop all containers
+$ docker system prune                # make some housekeeping
+$ docker rmi -f $(docker images -q)  # drop all images
+
+
+
+

shell inside container

+ +

Like in many other distributions, Alpine’s /bin/sh is dash. Dash is meant to be +POSIX-compliant. +Compared to debian, in the Alpine image bash is not installed. The +git://dockerfiles/docker-entrypoint.sh script is checked against dash +(make tests.shell).

+

To open a shell inside the container:

+
$ docker exec -it 2f998 sh
+
+
+
+
+
+

Build the image

+

It’s also possible to build SearXNG from the embedded git://Dockerfile:

+
$ git clone https://github.com/searxng/searxng.git
+$ cd searxng
+$ make docker.build
+...
+Successfully built 49586c016434
+Successfully tagged searxng/searxng:latest
+Successfully tagged searxng/searxng:1.0.0-209-9c823800-dirty
+
+$ docker images
+REPOSITORY        TAG                        IMAGE ID       CREATED          SIZE
+searxng/searxng   1.0.0-209-9c823800-dirty   49586c016434   13 minutes ago   308MB
+searxng/searxng   latest                     49586c016434   13 minutes ago   308MB
+alpine            3.13                       6dbb9cc54074   3 weeks ago      5.61MB
+
+
+
+
+

Command line

+ +

In the git://Dockerfile the ENTRYPOINT is defined as +git://dockerfiles/docker-entrypoint.sh

+
docker run --rm -it searxng/searxng -h
+
+
+
Command line:
+  -h  Display this help
+  -d  Dry run to update the configuration files.
+  -f  Always update on the configuration files (existing files are renamed with
+      the .old suffix).  Without this option, the new configuration files are
+      copied with the .new suffix
+Environment variables:
+  INSTANCE_NAME settings.yml : general.instance_name
+  AUTOCOMPLETE  settings.yml : search.autocomplete
+  BASE_URL      settings.yml : server.base_url
+  MORTY_URL     settings.yml : result_proxy.url
+  MORTY_KEY     settings.yml : result_proxy.key
+  BIND_ADDRESS  uwsgi bind to the specified TCP socket using HTTP protocol.
+                Default value: 0.0.0.0:8080
+Volume:
+  /etc/searxng  the docker entry point copies settings.yml and uwsgi.ini in
+                this directory (see the -f command line option)"
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation-nginx.html b/admin/installation-nginx.html new file mode 100644 index 000000000..a45e4dedb --- /dev/null +++ b/admin/installation-nginx.html @@ -0,0 +1,354 @@ + + + + + + + + NGINX — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

NGINX

+

This section explains how to set up a SearXNG instance using the HTTP server nginx. +If you have used the Installation Script and do not have any special preferences +you can install the SearXNG site using +searxng.sh:

+
$ sudo -H ./utils/searxng.sh install nginx
+
+
+

If you have special interests or problems with setting up nginx, the following +section might give you some guidance.

+ + +
+

The nginx HTTP server

+

If nginx is not installed, install it now.

+
+
sudo -H apt-get install nginx
+
+
+
+

Now at http://localhost you should see a Welcome to nginx! page, on Fedora you +see a Fedora Webserver - Test Page. The test page comes from the default +nginx server configuration. How this default site is configured, +depends on the linux distribution:

+
+
less /etc/nginx/nginx.conf
+
+
+

There is one line that includes site configurations from:

+
include /etc/nginx/sites-enabled/*;
+
+
+
+
+
+

NGINX’s SearXNG site

+

Now you have to create a configuration file (searxng.conf) for the SearXNG +site. If nginx is new to you, the nginx beginners guide is a good starting +point and the Getting Started wiki is always a good resource to keep in the +pocket.

+

Depending on what your SearXNG installation is listening on, you need a http or socket +communication to upstream.

+
+
location /searxng {
+
+    uwsgi_pass unix:///usr/local/searxng/run/socket;
+
+    include uwsgi_params;
+
+    uwsgi_param    HTTP_HOST             $host;
+    uwsgi_param    HTTP_CONNECTION       $http_connection;
+
+    # see flaskfix.py
+    uwsgi_param    HTTP_X_SCHEME         $scheme;
+    uwsgi_param    HTTP_X_SCRIPT_NAME    /searxng;
+
+    # see limiter.py
+    uwsgi_param    HTTP_X_REAL_IP        $remote_addr;
+    uwsgi_param    HTTP_X_FORWARDED_FOR  $proxy_add_x_forwarded_for;
+}
+
+# uWSGI serves the static files and in settings.yml we use::
+#
+#   ui:
+#     static_use_hash: true
+#
+# location /searxng/static/ {
+#     alias /usr/local/searxng/searxng-src/searx/static/;
+# }
+
+
+
+

The Installation Script installs the reference setup and a uWSGI setup that listens on a socket by default.

+
+

Create configuration at /etc/nginx/sites-available/ and place a +symlink to sites-enabled:

+
sudo -H ln -s /etc/nginx/sites-available/searxng.conf \
+              /etc/nginx/sites-enabled/searxng.conf
+
+
+
+

Restart services:

+
+
sudo -H systemctl restart nginx
+sudo -H service uwsgi restart searxng
+
+
+
+
+
+

Disable logs

+

For better privacy you can disable nginx logs in /etc/nginx/nginx.conf.

+
http {
+    # ...
+    access_log /dev/null;
+    error_log  /dev/null;
+    # ...
+}
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation-scripts.html b/admin/installation-scripts.html new file mode 100644 index 000000000..b8bd655e3 --- /dev/null +++ b/admin/installation-scripts.html @@ -0,0 +1,194 @@ + + + + + + + + Installation Script — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Installation Script

+ +

The following will install a setup as shown in the reference architecture. First you need to get a clone of the repository. The clone is only needed for +the installation procedure and some maintenance tasks.

+ +

Jump to a folder that is readable by others and start to clone SearXNG, +alternatively you can create your own fork and clone from there.

+
$ cd ~/Downloads
+$ git clone https://github.com/searxng/searxng.git searxng
+$ cd searxng
+
+
+ +

To install a SearXNG reference setup +including a uWSGI setup as described in the +Step by step installation and in the uWSGI section type:

+
$ sudo -H ./utils/searxng.sh install all
+
+
+
+

Attention

+

For the installation procedure, use a sudoer login to run the scripts. If +you install from root, take into account that the scripts are creating a +searxng user. In the installation procedure this new created user does +need to have read access to the cloned SearXNG repository, which is not the case if you clone +it into a folder below /root!

+
+ +

When all services are installed and running fine, you can add SearXNG to your +HTTP server. We do not have any preferences regarding the HTTP server, you can use +whatever you prefer.

+

We use caddy in our docker image and we have +implemented installation procedures for:

+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation-searxng.html b/admin/installation-searxng.html new file mode 100644 index 000000000..309e2eea9 --- /dev/null +++ b/admin/installation-searxng.html @@ -0,0 +1,599 @@ + + + + + + + + Step by step installation — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

Step by step installation

+ +

In this section we show the setup of a SearXNG instance that will be installed +by the Installation Script.

+
+

Install packages

+
+
$ sudo -H apt-get install -y \
+    python3-dev python3-babel python3-venv \
+    uwsgi uwsgi-plugin-python3 \
+    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev
+
+
+
+
+

Hint

+

This installs also the packages needed by uWSGI

+
+
+
+

Create user

+
+
$ sudo -H useradd --shell /bin/bash --system \
+    --home-dir "/usr/local/searxng" \
+    --comment 'Privacy-respecting metasearch engine' \
+    searxng
+
+$ sudo -H mkdir "/usr/local/searxng"
+$ sudo -H chown -R "searxng:searxng" "/usr/local/searxng"
+
+
+
+
+
+

Install SearXNG & dependencies

+

Start a interactive shell from new created user and clone SearXNG:

+
+
$ sudo -H -u searxng -i
+(searxng)$ git clone "https://github.com/searxng/searxng" \
+                   "/usr/local/searxng/searxng-src"
+
+
+
+

In the same shell create virtualenv:

+
+
(searxng)$ python3 -m venv "/usr/local/searxng/searx-pyenv"
+(searxng)$ echo ". /usr/local/searxng/searx-pyenv/bin/activate" \
+                   >>  "/usr/local/searxng/.profile"
+
+
+
+

To install SearXNG’s dependencies, exit the SearXNG bash session you opened above +and start a new one. Before installing, check if your virtualenv was sourced +from the login (~/.profile):

+
+
$ sudo -H -u searxng -i
+
+(searxng)$ command -v python && python --version
+/usr/local/searxng/searx-pyenv/bin/python
+Python 3.8.1
+
+# update pip's boilerplate ..
+pip install -U pip
+pip install -U setuptools
+pip install -U wheel
+pip install -U pyyaml
+
+# jump to SearXNG's working tree and install SearXNG into virtualenv
+(searxng)$ cd "/usr/local/searxng/searxng-src"
+(searxng)$ pip install -e .
+
+
+
+
+

Tip

+

Open a second terminal for the configuration tasks and leave the (searx)$ +terminal open for the tasks below.

+
+
+
+

Configuration

+ +

To create a initial /etc/searxng/settings.yml we recommend to start with a +copy of the file git://utils/templates/etc/searxng/settings.yml. This setup +use default settings from +git://searx/settings.yml and is shown in the tab “Use default settings” +below. This setup:

+ +

Modify the /etc/searxng/settings.yml to your needs:

+
+
# SearXNG settings
+
+use_default_settings: true
+
+general:
+  debug: false
+  instance_name: "SearXNG"
+
+search:
+  safe_search: 2
+  autocomplete: 'duckduckgo'
+
+server:
+  # Is overwritten by ${SEARXNG_SECRET}
+  secret_key: "ultrasecretkey"
+  limiter: true
+  image_proxy: true
+  # public URL of the instance, to ensure correct inbound links. Is overwritten
+  # by ${SEARXNG_URL}.
+  # base_url: http://example.com/location
+
+redis:
+  # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}.
+  url: unix:///usr/local/searxng-redis/run/redis.sock?db=0
+
+ui:
+  static_use_hash: true
+
+# preferences:
+#   lock:
+#     - autocomplete
+#     - method
+
+enabled_plugins:
+  - 'Hash plugin'
+  - 'Search on category select'
+  - 'Self Informations'
+  - 'Tracker URL remover'
+  - 'Ahmia blacklist'
+  # - 'Hostname replace'  # see hostname_replace configuration below
+  # - 'Infinite scroll'
+  # - 'Open Access DOI rewrite'
+  # - 'Vim-like hotkeys'
+
+# plugins:
+#   - only_show_green_results
+
+
+

To see the entire file jump to git://utils/templates/etc/searxng/settings.yml

+
+

For a minimal setup you need to set server:secret_key.

+
+
$ sudo -H mkdir -p "/etc/searxng"
+$ sudo -H cp "/usr/local/searxng/searxng-src/utils/templates/etc/searxng/settings.yml" \
+             "/etc/searxng/settings.yml"
+
+
+
+
+
+

Check

+

To check your SearXNG setup, optional enable debugging and start the webapp. +SearXNG looks at the exported environment $SEARXNG_SETTINGS_PATH for a +configuration file.

+
+
# enable debug ..
+$ sudo -H sed -i -e "s/debug : False/debug : True/g" "/etc/searxng/settings.yml"
+
+# start webapp
+$ sudo -H -u searxng -i
+(searxng)$ cd /usr/local/searxng/searxng-src
+(searxng)$ export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
+(searxng)$ python searx/webapp.py
+
+# disable debug
+$ sudo -H sed -i -e "s/debug : True/debug : False/g" "/etc/searxng/settings.yml"
+
+
+
+

Open WEB browser and visit http://127.0.0.1:8888 . If you are inside a +container or in a script, test with curl:

+
+
$ xdg-open http://127.0.0.1:8888
+
+
+
+

If everything works fine, hit [CTRL-C] to stop the webapp and disable the +debug option in settings.yml. You can now exit SearXNG user bash session (enter exit +command twice). At this point SearXNG is not demonized; uwsgi allows this.

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation-uwsgi.html b/admin/installation-uwsgi.html new file mode 100644 index 000000000..da3c5e05b --- /dev/null +++ b/admin/installation-uwsgi.html @@ -0,0 +1,630 @@ + + + + + + + + uWSGI — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

uWSGI

+ + +
+

Origin uWSGI

+

How uWSGI is implemented by distributors varies. The uWSGI project itself +recommends two methods:

+
    +
  1. systemd.unit template file as described here One service per app in systemd:

  2. +
+
+

There is one systemd unit template on the system installed and one uwsgi +ini file per uWSGI-app placed at dedicated locations. Take archlinux and a +searxng.ini as example:

+
systemd template unit: /usr/lib/systemd/system/uwsgi@.service
+        contains: [Service]
+                  ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/%I.ini
+
+SearXNG application:   /etc/uwsgi/searxng.ini
+        links to: /etc/uwsgi/apps-available/searxng.ini
+
+
+

The SearXNG app (template /etc/uwsgi/%I.ini) can be maintained as known +from common systemd units:

+
$ systemctl enable  uwsgi@searxng
+$ systemctl start   uwsgi@searxng
+$ systemctl restart uwsgi@searxng
+$ systemctl stop    uwsgi@searxng
+
+
+
+
    +
  1. The uWSGI Emperor which fits for maintaining a large range of uwsgi +apps and there is a Tyrant mode to secure multi-user hosting.

  2. +
+
+

The Emperor mode is a special uWSGI instance that will monitor specific +events. The Emperor mode (the service) is started by a (common, not template) +systemd unit.

+

The Emperor service will scan specific directories for uwsgi ini files +(also know as vassals). If a vassal is added, removed or the timestamp is +modified, a corresponding action takes place: a new uWSGI instance is started, +reload or stopped. Take Fedora and a searxng.ini as example:

+
to install & start SearXNG instance create --> /etc/uwsgi.d/searxng.ini
+to reload the instance edit timestamp      --> touch /etc/uwsgi.d/searxng.ini
+to stop instance remove ini                --> rm /etc/uwsgi.d/searxng.ini
+
+
+
+
+
+

Distributors

+

The uWSGI Emperor mode and systemd unit template is what the distributors +mostly offer their users, even if they differ in the way they implement both +modes and their defaults. Another point they might differ in is the packaging of +plugins (if so, compare Install packages) and what the default python +interpreter is (python2 vs. python3).

+

While archlinux does not start a uWSGI service by default, Fedora (RHEL) starts +a Emperor in Tyrant mode by default (you should have read Pitfalls of the Tyrant mode). Worth to know; debian (ubuntu) follow a complete different +approach, read see Debian’s uWSGI layout.

+
+

Debian’s uWSGI layout

+

Be aware, Debian’s uWSGI layout is quite different from the standard uWSGI +configuration. Your are familiar with Debian’s Apache layout? .. they do a +similar thing for the uWSGI infrastructure. The folders are:

+
/etc/uwsgi/apps-available/
+/etc/uwsgi/apps-enabled/
+
+
+

The uwsgi ini file is enabled by a symbolic link:

+
ln -s /etc/uwsgi/apps-available/searxng.ini /etc/uwsgi/apps-enabled/
+
+
+

More details can be found in the uwsgi.README.Debian +(/usr/share/doc/uwsgi/README.Debian.gz). Some commands you should know on +Debian:

+
Commands recognized by init.d script
+====================================
+
+You can issue to init.d script following commands:
+  * start        | starts daemon
+  * stop         | stops daemon
+  * reload       | sends to daemon SIGHUP signal
+  * force-reload | sends to daemon SIGTERM signal
+  * restart      | issues 'stop', then 'start' commands
+  * status       | shows status of daemon instance (running/not running)
+
+'status' command must be issued with exactly one argument: '<confname>'.
+
+Controlling specific instances of uWSGI
+=======================================
+
+You could control specific instance(s) by issuing:
+
+    SYSTEMCTL_SKIP_REDIRECT=1 service uwsgi <command> <confname> <confname>...
+
+where:
+  * <command> is one of 'start', 'stop' etc.
+  * <confname> is the name of configuration file (without extension)
+
+For example, this is how instance for /etc/uwsgi/apps-enabled/hello.xml is
+started:
+
+    SYSTEMCTL_SKIP_REDIRECT=1 service uwsgi start hello
+
+
+
+
+
+

uWSGI maintenance

+
+
# init.d --> /usr/share/doc/uwsgi/README.Debian.gz
+# For uWSGI debian uses the LSB init process, this might be changed
+# one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067
+
+create     /etc/uwsgi/apps-available/searxng.ini
+enable:    sudo -H ln -s /etc/uwsgi/apps-available/searxng.ini /etc/uwsgi/apps-enabled/
+start:     sudo -H service uwsgi start   searxng
+restart:   sudo -H service uwsgi restart searxng
+stop:      sudo -H service uwsgi stop    searxng
+disable:   sudo -H rm /etc/uwsgi/apps-enabled/searxng.ini
+
+
+
+
+
+

uWSGI setup

+

Create the configuration ini-file according to your distribution and restart the +uwsgi application. As shown below, the Installation Script installs by +default:

+
    +
  • a uWSGI setup that listens on a socket and

  • +
  • enables cache busting.

  • +
+
+
# -*- mode: conf; coding: utf-8  -*-
+[uwsgi]
+
+# uWSGI core
+# ----------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
+
+# Who will run the code / Hint: in emperor-tyrant mode uid & gid setting will be
+# ignored [1].  Mode emperor-tyrant is the default on fedora (/etc/uwsgi.ini).
+#
+# [1] https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html#tyrant-mode-secure-multi-user-hosting
+#
+uid = searxng
+gid = searxng
+
+# set (python) default encoding UTF-8
+env = LANG=C.UTF-8
+env = LANGUAGE=C.UTF-8
+env = LC_ALL=C.UTF-8
+
+# chdir to specified directory before apps loading
+chdir = /usr/local/searxng/searxng-src/searx
+
+# SearXNG configuration (settings.yml)
+env = SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml
+
+# disable logging for privacy
+disable-logging = true
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpreter config
+single-interpreter = true
+
+# enable master process
+master = true
+
+# load apps in each worker instead of the master
+lazy-apps = true
+
+# load uWSGI plugins
+plugin = python3,http
+
+# By default the Python plugin does not initialize the GIL.  This means your
+# app-generated threads will not run.  If you need threads, remember to enable
+# them with enable-threads.  Running uWSGI in multithreading mode (with the
+# threads options) will automatically enable threading support. This *strange*
+# default behaviour is for performance reasons.
+enable-threads = true
+
+
+# plugin: python
+# --------------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
+
+# load a WSGI module
+module = searx.webapp
+
+# set PYTHONHOME/virtualenv
+virtualenv = /usr/local/searxng/searx-pyenv
+
+# add directory (or glob) to pythonpath
+pythonpath = /usr/local/searxng/searxng-src
+
+
+# speak to upstream
+# -----------------
+
+socket = /usr/local/searxng/run/socket
+buffer-size = 8192
+
+# uWSGI serves the static files and in settings.yml we use::
+#
+#   ui:
+#     static_use_hash: true
+#
+static-map = /static=/usr/local/searxng/searxng-src/searx/static
+# expires set to one year since there are hashes
+static-expires = /* 31557600
+static-gzip-all = True
+offload-threads = %k
+
+# Cache
+cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
+
+
+
+
+
+

Pitfalls of the Tyrant mode

+

The implementation of the process owners and groups in the Tyrant mode is +somewhat unusual and requires special consideration. In Tyrant mode mode the +Emperor will run the vassal using the UID/GID of the vassal configuration file +(user and group of the app .ini file).

+

Without option emperor-tyrant-initgroups=true in /etc/uwsgi.ini the +process won’t get the additional groups, but this option is not available in +2.0.x branch (see #2099@uWSGI) the feature #752@uWSGI has been merged (on +Oct. 2014) to the master branch of uWSGI but had never been released; the last +major release is from Dec. 2013, since the there had been only bugfix releases +(see #2425uWSGI). To shorten up:

+
+

In Tyrant mode, there is no way to get additional groups, and the uWSGI +process misses additional permissions that may be needed.

+
+

For example on Fedora (RHEL): If you try to install a redis DB with socket +communication and you want to connect to it from the SearXNG uWSGI, you will see a +Permission denied in the log of your instance:

+
ERROR:searx.redisdb: [searxng (993)] can't connect redis DB ...
+ERROR:searx.redisdb:   Error 13 connecting to unix socket: /usr/local/searxng-redis/run/redis.sock. Permission denied.
+ERROR:searx.plugins.limiter: init limiter DB failed!!!
+
+
+

Even if your searxng user of the uWSGI process is added to additional groups +to give access to the socket from the redis DB:

+
$ groups searxng
+searxng : searxng searxng-redis
+
+
+

To see the effective groups of the uwsgi process, you have to look at the status +of the process, by example:

+
$ ps -aef | grep '/usr/sbin/uwsgi --ini searxng.ini'
+searxng       93      92  0 12:43 ?        00:00:00 /usr/sbin/uwsgi --ini searxng.ini
+searxng      186      93  0 12:44 ?        00:00:01 /usr/sbin/uwsgi --ini searxng.ini
+
+
+

Here you can see that the additional “Groups” of PID 186 are unset (missing gid +of searxng-redis):

+
$ cat /proc/186/task/186/status
+...
+Uid:      993     993     993     993
+Gid:      993     993     993     993
+FDSize:   128
+Groups:
+...
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/installation.html b/admin/installation.html new file mode 100644 index 000000000..947ebfad6 --- /dev/null +++ b/admin/installation.html @@ -0,0 +1,155 @@ + + + + + + + + Installation — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Installation

+

You’re spoilt for choice, choose your preferred method of installation.

+ +

The Step by step installation is an excellent illustration of how a SearXNG +instance is build up (see uWSGI Setup). If you do not have any +special preferences, it’s recommended to use the Docker Container or the +Installation Script.

+
+

Attention

+

SearXNG is growing rapidly, you should regularly read our Migrate and stay tuned! section. If you want to upgrade an existing instance or migrate +from searx to SearXNG, you should read this section first!

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/plugins.html b/admin/plugins.html new file mode 100644 index 000000000..720913258 --- /dev/null +++ b/admin/plugins.html @@ -0,0 +1,202 @@ + + + + + + + + Plugins builtin — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Plugins builtin

+ +

Configuration defaults (at built time):

+
+
DO:
+

Default on

+
+
+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Plugins configured at built time (defaults)

Name

DO

Description

+

JS & CSS dependencies

+

Hash plugin

y

Converts strings to different hash digests.

Hostname replace

Rewrite result hostnames or remove results based on the hostname

Open Access DOI rewrite

Avoid paywalls by redirecting to open-access versions of publications when available

Search on category select

y

Perform search immediately if a category selected. Disable to select multiple categories. (JavaScript required)

Self Information

y

Displays your IP if the query is “ip” and your user agent if the query contains “user agent”.

Tor check plugin

This plugin checks if the address of the request is a Tor exit-node, and informs the user if it is; like check.torproject.org, but from SearXNG.

Tracker URL remover

y

Remove trackers arguments from the returned URL

Vim-like hotkeys

Navigate search results with Vim-like hotkeys (JavaScript required). Press “h” key on main or result page to get help.

+ + + +
+ + + + + +
+ + + + + + + \ No newline at end of file diff --git a/admin/settings/index.html b/admin/settings/index.html new file mode 100644 index 000000000..1195b9143 --- /dev/null +++ b/admin/settings/index.html @@ -0,0 +1,172 @@ + + + + + + + + Settings — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/settings/settings.html b/admin/settings/settings.html new file mode 100644 index 000000000..8c3fd28c3 --- /dev/null +++ b/admin/settings/settings.html @@ -0,0 +1,246 @@ + + + + + + + + settings.yml — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

settings.yml

+

This page describe the options possibilities of the git://searx/settings.yml +file.

+ + +
+

settings.yml location

+

The initial settings.yml we be load from these locations:

+
    +
  1. the full path specified in the SEARXNG_SETTINGS_PATH environment variable.

  2. +
  3. /etc/searxng/settings.yml

  4. +
+

If these files don’t exist (or are empty or can’t be read), SearXNG uses the +git://searx/settings.yml file. Read use_default_settings to +see how you can simplify your user defined settings.yml.

+
+
+

use_default_settings

+ +

The user defined settings.yml is loaded from the settings.yml location +and can relied on the default configuration git://searx/settings.yml using:

+
+

use_default_settings: true

+
+
+
server:

In the following example, the actual settings are the default settings defined +in git://searx/settings.yml with the exception of the secret_key and +the bind_address:

+
use_default_settings: true
+server:
+    secret_key: "ultrasecretkey"   # change this!
+    bind_address: "0.0.0.0"
+
+
+
+
engines:

With use_default_settings: true, each settings can be override in a +similar way, the engines section is merged according to the engine +name. In this example, SearXNG will load all the default engines, will +enable the bing engine and define a token for +the arch linux engine:

+
use_default_settings: true
+server:
+  secret_key: "ultrasecretkey"   # change this!
+engines:
+  - name: arch linux wiki
+    tokens: ['$ecretValue']
+  - name: bing
+    disabled: false
+
+
+
+
engines: / remove:

It is possible to remove some engines from the default settings. The following +example is similar to the above one, but SearXNG doesn’t load the the google +engine:

+
use_default_settings:
+  engines:
+    remove:
+      - google
+server:
+  secret_key: "ultrasecretkey"   # change this!
+engines:
+  - name: arch linux wiki
+    tokens: ['$ecretValue']
+
+
+
+
engines: / keep_only:

As an alternative, it is possible to specify the engines to keep. In the +following example, SearXNG has only two engines:

+
use_default_settings:
+  engines:
+    keep_only:
+      - google
+      - duckduckgo
+server:
+  secret_key: "ultrasecretkey"   # change this!
+engines:
+  - name: google
+    tokens: ['$ecretValue']
+  - name: duckduckgo
+    tokens: ['$ecretValue']
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_brand.html b/admin/settings/settings_brand.html new file mode 100644 index 000000000..0b95fcde8 --- /dev/null +++ b/admin/settings/settings_brand.html @@ -0,0 +1,161 @@ + + + + + + + + brand: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

brand:

+
brand:
+  issue_url: https://github.com/searxng/searxng/issues
+  docs_url: https://docs.searxng.org
+  public_instances: https://searx.space
+  wiki_url: https://github.com/searxng/searxng/wiki
+
+
+
+
issue_url :

If you host your own issue tracker change this URL.

+
+
docs_url :

If you host your own documentation change this URL.

+
+
public_instances :

If you host your own https://searx.space change this URL.

+
+
wiki_url :

Link to your wiki (or false)

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_categories_as_tabs.html b/admin/settings/settings_categories_as_tabs.html new file mode 100644 index 000000000..f7be24dfc --- /dev/null +++ b/admin/settings/settings_categories_as_tabs.html @@ -0,0 +1,166 @@ + + + + + + + + categories_as_tabs: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

categories_as_tabs:

+

A list of the categories that are displayed as tabs in the user interface. +Categories not listed here can still be searched with the Search syntax.

+
categories_as_tabs:
+  general:
+  images:
+  videos:
+  news:
+  map:
+  music:
+  it:
+  science:
+  files:
+  social media:
+
+
+

Engines are added to categories: (compare categories), the +categories listed in categories_as_tabs are shown as tabs in the UI. If +there are no active engines in a category, the tab is not displayed (e.g. if a +user disables all engines in a category).

+

On the preferences page (/preferences) – under engines – there is an +additional tab, called other. In this tab are all engines listed that are not +in one of the UI tabs (not included in categories_as_tabs).

+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_engine.html b/admin/settings/settings_engine.html new file mode 100644 index 000000000..be056235f --- /dev/null +++ b/admin/settings/settings_engine.html @@ -0,0 +1,344 @@ + + + + + + + + engine: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

engine:

+ +

In the code example below a full fledged example of a YAML setup from a dummy +engine is shown. Most of the options have a default value or even are optional.

+
+

Hint

+

A few more options are possible, but they are pretty specific to some +engines (Engine Implementations).

+
+
- name: example engine
+  engine: example
+  shortcut: demo
+  base_url: 'https://{language}.example.com/'
+  send_accept_language_header: false
+  categories: general
+  timeout: 3.0
+  api_key: 'apikey'
+  disabled: false
+  language: en_US
+  tokens: [ 'my-secret-token' ]
+  weight: 1
+  display_error_messages: true
+  about:
+     website: https://example.com
+     wikidata_id: Q306656
+     official_api_documentation: https://example.com/api-doc
+     use_official_api: true
+     require_api_key: true
+     results: HTML
+
+  # overwrite values from section 'outgoing:'
+  enable_http2: false
+  retries: 1
+  max_connections: 100
+  max_keepalive_connections: 10
+  keepalive_expiry: 5.0
+  using_tor_proxy: false
+  proxies:
+    http:
+      - http://proxy1:8080
+      - http://proxy2:8080
+    https:
+      - http://proxy1:8080
+      - http://proxy2:8080
+      - socks5://user:password@proxy3:1080
+      - socks5h://user:password@proxy4:1080
+
+  # other network settings
+  enable_http: false
+  retry_on_http_error: true # or 403 or [404, 429]
+
+
+
+
name :

Name that will be used across SearXNG to define this engine. In settings, on +the result page…

+
+
engine :

Name of the python file used to handle requests and responses to and from this +search engine.

+
+
shortcut :

Code used to execute bang requests (in this case using !bi)

+
+
base_urloptional

Part of the URL that should be stable across every request. Can be useful to +use multiple sites using only one engine, or updating the site URL without +touching at the code.

+
+
send_accept_language_header :

Several engines that support languages (or regions) deal with the HTTP header +Accept-Language to build a response that fits to the locale. When this +option is activated, the language (locale) that is selected by the user is used +to build and send a Accept-Language header in the request to the origin +search engine.

+
+
+
+
categoriesoptional

Specifies to which categories the engine should be added. Engines can be +assigned to multiple categories.

+

Categories can be shown as tabs (categories_as_tabs:) in the +UI. A search in a tab (in the UI) will query all engines that are active in +this tab. In the preferences page (/preferences) – under engines – +users can select what engine should be active when querying in this tab.

+

Alternatively, !bang can be used to search all engines +in a category, regardless of whether they are active or not, or whether they +are in a tab of the UI or not. For example, !dictionaries can be used to +query all search engines in that category (group).

+
+
timeoutoptional

Timeout of the search with the current search engine. Overwrites +request_timeout from outgoing:. Be careful, it will +modify the global timeout of SearXNG.

+
+
api_keyoptional

In a few cases, using an API needs the use of a secret key. How to obtain them +is described in the file.

+
+
disabledoptional

To disable by default the engine, but not deleting it. It will allow the user +to manually activate it in the settings.

+
+
inactive: optional

Remove the engine from the settings (disabled & removed).

+
+
languageoptional

If you want to use another language for a specific engine, you can define it +by using the ISO code of language (and region), like fr, en-US, +de-DE.

+
+
tokensoptional

A list of secret tokens to make this engine private, more details see +Private Engines (tokens).

+
+
weightdefault 1

Weighting of the results of this engine.

+
+
display_error_messagesdefault true

When an engine returns an error, the message is displayed on the user interface.

+
+
networkoptional

Use the network configuration from another engine. +In addition, there are two default networks:

+
    +
  • ipv4 set local_addresses to 0.0.0.0 (use only IPv4 local addresses)

  • +
  • ipv6 set local_addresses to :: (use only IPv6 local addresses)

  • +
+
+
enable_httpoptional

Enable HTTP for this engine (by default only HTTPS is enabled).

+
+
retry_on_http_erroroptional

Retry request on some HTTP status code.

+

Example:

+
    +
  • true : on HTTP status code between 400 and 599.

  • +
  • 403 : on HTTP status code 403.

  • +
  • [403, 429]: on HTTP status code 403 and 429.

  • +
+
+
proxies :

Overwrites proxy settings from outgoing:.

+
+
using_tor_proxy :

Using tor proxy (true) or not (false) for this engine. The default is +taken from using_tor_proxy of the outgoing:.

+
+
+
+
max_keepalive_connection#s :
+
Pool limit configuration, overwrites value pool_maxsize from

outgoing: for this engine.

+
+
+
+
max_connections :

Pool limit configuration, overwrites value pool_connections from +outgoing: for this engine.

+
+
keepalive_expiry :

Pool limit configuration, overwrites value keepalive_expiry from +outgoing: for this engine.

+
+
+
+

Private Engines (tokens)

+

Administrators might find themselves wanting to limit access to some of the +enabled engines on their instances. It might be because they do not want to +expose some private information through Offline Engines. Or they would +rather share engines only with their trusted friends or colleagues.

+ +

To solve this issue the concept of private engines exists.

+

A new option was added to engines named tokens. It expects a list of strings. +If the user making a request presents one of the tokens of an engine, they can +access information about the engine and make search requests.

+

Example configuration to restrict access to the Arch Linux Wiki engine:

+
- name: arch linux wiki
+  engine: archlinux
+  shortcut: al
+  tokens: [ 'my-secret-token' ]
+
+
+

Unless a user has configured the right token, the engine is going to be hidden +from him/her. It is not going to be included in the list of engines on the +Preferences page and in the output of /config REST API call.

+

Tokens can be added to one’s configuration on the Preferences page under “Engine +tokens”. The input expects a comma separated list of strings.

+

The distribution of the tokens from the administrator to the users is not carved +in stone. As providing access to such engines implies that the admin knows and +trusts the user, we do not see necessary to come up with a strict process. +Instead, we would like to add guidelines to the documentation of the feature.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_general.html b/admin/settings/settings_general.html new file mode 100644 index 000000000..c5f253b97 --- /dev/null +++ b/admin/settings/settings_general.html @@ -0,0 +1,169 @@ + + + + + + + + general: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

general:

+
general:
+  debug: false
+  instance_name:  "SearXNG"
+  privacypolicy_url: false
+  donation_url: false
+  contact_url: false
+  enable_metrics: true
+
+
+
+
debug$SEARXNG_DEBUG

Allow a more detailed log if you run SearXNG directly. Display detailed error +messages in the browser too, so this must be deactivated in production.

+
+
donation_url :

Set value to true to use your own donation page written in the +searx/info/en/donate.md and use false to disable +the donation link altogether.

+
+
privacypolicy_url:

Link to privacy policy.

+
+
contact_url:

Contact mailto: address or WEB form.

+
+
enable_metrics:

Enabled by default. Record various anonymous metrics available at /stats, +/stats/errors and /preferences.

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_outgoing.html b/admin/settings/settings_outgoing.html new file mode 100644 index 000000000..2fb51fa4b --- /dev/null +++ b/admin/settings/settings_outgoing.html @@ -0,0 +1,234 @@ + + + + + + + + outgoing: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

outgoing:

+

Communication with search engines.

+
outgoing:
+  request_timeout: 2.0       # default timeout in seconds, can be override by engine
+  max_request_timeout: 10.0  # the maximum timeout in seconds
+  useragent_suffix: ""       # information like an email address to the administrator
+  pool_connections: 100      # Maximum number of allowable connections, or null
+                             # for no limits. The default is 100.
+  pool_maxsize: 10           # Number of allowable keep-alive connections, or null
+                             # to always allow. The default is 10.
+  enable_http2: true         # See https://www.python-httpx.org/http2/
+  # uncomment below section if you want to use a custom server certificate
+  # see https://www.python-httpx.org/advanced/#changing-the-verification-defaults
+  # and https://www.python-httpx.org/compatibility/#ssl-configuration
+  #  verify: ~/.mitmproxy/mitmproxy-ca-cert.cer
+  #
+  # uncomment below section if you want to use a proxyq see: SOCKS proxies
+  #   https://2.python-requests.org/en/latest/user/advanced/#proxies
+  # are also supported: see
+  #   https://2.python-requests.org/en/latest/user/advanced/#socks
+  #
+  #  proxies:
+  #    all://:
+  #      - http://proxy1:8080
+  #      - http://proxy2:8080
+  #
+  #  using_tor_proxy: true
+  #
+  # Extra seconds to add in order to account for the time taken by the proxy
+  #
+  #  extra_proxy_timeout: 10.0
+  #
+
+
+
+
request_timeout :

Global timeout of the requests made to others engines in seconds. A bigger +timeout will allow to wait for answers from slow engines, but in consequence +will slow SearXNG reactivity (the result page may take the time specified in the +timeout to load). Can be override by timeout in the engine:.

+
+
useragent_suffix :

Suffix to the user-agent SearXNG uses to send requests to others engines. If an +engine wish to block you, a contact info here may be useful to avoid that.

+
+
+
+
pool_maxsize:

Number of allowable keep-alive connections, or null to always allow. The +default is 10. See max_keepalive_connections Pool limit configuration.

+
+
pool_connections :

Maximum number of allowable connections, or null # for no limits. The +default is 100. See max_connections Pool limit configuration.

+
+
keepalive_expiry :

Number of seconds to keep a connection in the pool. By default 5.0 seconds. +See keepalive_expiry Pool limit configuration.

+
+
+
+
proxies :

Define one or more proxies you wish to use, see httpx proxies. +If there are more than one proxy for one protocol (http, https), +requests to the engines are distributed in a round-robin fashion.

+
+
source_ips :

If you use multiple network interfaces, define from which IP the requests must +be made. Example:

+
    +
  • 0.0.0.0 any local IPv4 address.

  • +
  • :: any local IPv6 address.

  • +
  • 192.168.0.1

  • +
  • [ 192.168.0.1, 192.168.0.2 ] these two specific IP addresses

  • +
  • fe80::60a2:1691:e5a2:ee1f

  • +
  • fe80::60a2:1691:e5a2:ee1f/126 all IP addresses in this network.

  • +
  • [ 192.168.0.1, fe80::/126 ]

  • +
+
+
retries :

Number of retry in case of an HTTP error. On each retry, SearXNG uses an +different proxy and source ip.

+
+
enable_http2 :

Enable by default. Set to false to disable HTTP/2.

+
+
+
+
verify:$SSL_CERT_FILE, $SSL_CERT_DIR

Allow to specify a path to certificate. +see httpx verification defaults.

+

In addition to verify, SearXNG supports the $SSL_CERT_FILE (for a file) and +$SSL_CERT_DIR (for a directory) OpenSSL variables. +see httpx ssl configuration.

+
+
max_redirects :

30 by default. Maximum redirect before it is an error.

+
+
using_tor_proxy :

Using tor proxy (true) or not (false) for all engines. The default is +false and can be overwritten in the engine:

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_redis.html b/admin/settings/settings_redis.html new file mode 100644 index 000000000..d9680a09b --- /dev/null +++ b/admin/settings/settings_redis.html @@ -0,0 +1,179 @@ + + + + + + + + redis: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

redis:

+

A redis DB can be connected by an URL, in searx.redisdb you +will find a description to test your redis connection in SerXNG. When using +sockets, don’t forget to check the access rights on the socket:

+
ls -la /usr/local/searxng-redis/run/redis.sock
+srwxrwx--- 1 searxng-redis searxng-redis ... /usr/local/searxng-redis/run/redis.sock
+
+
+

In this example read/write access is given to the searxng-redis group. To get +access rights to redis instance (the socket), your SearXNG (or even your +developer) account needs to be added to the searxng-redis group.

+
+
url$SEARXNG_REDIS_URL

URL to connect redis database, see Redis.from_url(url) & Redis DB:

+
redis://[[username]:[password]]@localhost:6379/0
+rediss://[[username]:[password]]@localhost:6379/0
+unix://[[username]:[password]]@/path/to/socket.sock?db=0
+
+
+
+
+
+

Redis Developer Notes

+

To set up a local redis instance, first set the socket path of the Redis DB +in your YAML setting:

+
redis:
+  url: unix:///usr/local/searxng-redis/run/redis.sock?db=0
+
+
+

Then use the following commands to install the redis instance (./manage redis.help):

+
$ ./manage redis.build
+$ sudo -H ./manage redis.install
+$ sudo -H ./manage redis.addgrp "${USER}"
+# don't forget to logout & login to get member of group
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_search.html b/admin/settings/settings_search.html new file mode 100644 index 000000000..356cb0aaf --- /dev/null +++ b/admin/settings/settings_search.html @@ -0,0 +1,232 @@ + + + + + + + + search: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ + + + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_server.html b/admin/settings/settings_server.html new file mode 100644 index 000000000..d04ddd7eb --- /dev/null +++ b/admin/settings/settings_server.html @@ -0,0 +1,186 @@ + + + + + + + + server: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

server:

+
server:
+    base_url: http://example.org/location  # change this!
+    port: 8888
+    bind_address: "127.0.0.1"
+    secret_key: "ultrasecretkey"           # change this!
+    limiter: false
+    image_proxy: false
+    default_http_headers:
+      X-Content-Type-Options : nosniff
+      X-XSS-Protection : 1; mode=block
+      X-Download-Options : noopen
+      X-Robots-Tag : noindex, nofollow
+      Referrer-Policy : no-referrer
+
+
+
+
base_url$SEARXNG_URL buildenv

The base URL where SearXNG is deployed. Used to create correct inbound links. +If you change the value, don’t forget to rebuild instance’s environment +(utils/brand.env)

+
+
port & bind_address: $SEARXNG_PORT & $SEARXNG_BIND_ADDRESS buildenv

Port number and bind address of the SearXNG web application if you run it +directly using python searx/webapp.py. Doesn’t apply to a SearXNG +services running behind a proxy and using socket communications. If you +change the value, don’t forget to rebuild instance’s environment +(utils/brand.env)

+
+
secret_key$SEARXNG_SECRET

Used for cryptography purpose.

+
+
+
+
limiter :

Rate limit the number of request on the instance, block some bots. The +Limiter requires a redis: database.

+
+
+
+
image_proxy :

Allow your instance of SearXNG of being able to proxy images. Uses memory space.

+
+
+
+
default_http_headers :

Set additional HTTP headers, see #755

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/settings/settings_ui.html b/admin/settings/settings_ui.html new file mode 100644 index 000000000..3d48b9e50 --- /dev/null +++ b/admin/settings/settings_ui.html @@ -0,0 +1,189 @@ + + + + + + + + ui: — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

ui:

+
ui:
+  static_use_hash: false
+  default_locale: ""
+  query_in_title: false
+  infinite_scroll: false
+  center_alignment: false
+  cache_url: https://web.archive.org/web/
+  default_theme: simple
+  theme_args:
+    simple_style: auto
+
+
+
+
static_use_hash :

Enables cache busting of static files.

+
+
default_locale :

SearXNG interface language. If blank, the locale is detected by using the +browser language. If it doesn’t work, or you are deploying a language +specific instance of searx, a locale can be defined using an ISO language +code, like fr, en, de.

+
+
query_in_title :

When true, the result page’s titles contains the query it decreases the +privacy, since the browser can records the page titles.

+
+
infinite_scroll:

When true, automatically loads the next page when scrolling to bottom of the current page.

+
+
center_alignmentdefault false

When enabled, the results are centered instead of being in the left (or RTL) +side of the screen. This setting only affects the desktop layout +(min-width: @tablet)

+
+
+
+
cache_urlhttps://web.archive.org/web/

URL prefix of the internet archive or cache, don’t forgett trailing slash (if +needed). The default is https://web.archive.org/web/ alternatives are:

+ +
+
default_theme :

Name of the theme you want to use by default on your SearXNG instance.

+
+
theme_args.simple_style:

Style of simple theme: auto, light, dark

+
+
results_on_new_tab:

Open result links in a new tab by default.

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/admin/update-searxng.html b/admin/update-searxng.html new file mode 100644 index 000000000..f2b16af0e --- /dev/null +++ b/admin/update-searxng.html @@ -0,0 +1,265 @@ + + + + + + + + SearXNG maintenance — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

SearXNG maintenance

+ + +
+

How to update

+

How to update depends on the Installation method. If you have used the +Installation Script, use the update command from the utils/searxng.sh +script.

+
sudo -H ./utils/searxng.sh instance update
+
+
+
+
+

How to inspect & debug

+

How to debug depends on the Installation method. If you have used the +Installation Script, use the inspect command from the utils/searxng.sh +script.

+
sudo -H ./utils/searxng.sh instance inspect
+
+
+
+
+

Migrate and stay tuned!

+ +

SearXNG is a rolling release; each commit to the master branch is a release. +SearXNG is growing rapidly, the services and opportunities are change every now +and then, to name just a few:

+
    +
  • Bot protection has been switched from filtron to SearXNG’s limiter, this requires a Redis database.

  • +
  • The image proxy morty is no longer needed, it has been replaced by the +image proxy from SearXNG.

  • +
  • To save bandwith cache busting has been implemented. +To get in use, the static-expires needs to be set in the uWSGI setup.

  • +
+

To stay tuned and get in use of the new features, instance maintainers have to +update the SearXNG code regularly (see How to update). As the above +examples show, this is not always enough, sometimes services have to be set up +or reconfigured and sometimes services that are no longer needed should be +uninstalled.

+
+

Hint

+

First of all: SearXNG is installed by the script utils/searxng.sh. If you +have old filtron, morty or searx setup you should consider complete +uninstall/reinstall.

+
+

Here you will find a list of changes that affect the infrastructure. Please +check to what extent it is necessary to update your installations:

+
+
PR 1595: [fix] uWSGI: increase buffer-size

Re-install uWSGI (utils/searxng.sh) or fix your uWSGI searxng.ini +file manually.

+
+
+
+

remove obsolete services

+

If your searx instance was installed “Step by step” or by the “Installation +scripts”, you need to undo the installation procedure completely. If you have +morty & filtron installed, it is recommended to uninstall these services also. +In case of scripts, to uninstall use the scripts from the origin you installed +searx from or try:

+
$ sudo -H ./utils/filtron.sh remove all
+$ sudo -H ./utils/morty.sh   remove all
+$ sudo -H ./utils/searx.sh   remove all
+
+
+
+

Hint

+

If you are migrate from searx take into account that the .config.sh is no +longer used.

+
+

If you upgrade from searx or from before PR 1332 has been merged and you +have filtron and/or morty installed, don’t forget to remove HTTP sites.

+

Apache:

+
$ sudo -H ./utils/filtron.sh apache remove
+$ sudo -H ./utils/morty.sh apache remove
+
+
+

nginx:

+
$ sudo -H ./utils/filtron.sh nginx remove
+$ sudo -H ./utils/morty.sh nginx remove
+
+
+
+
+

Check after Installation

+

Once you have done your installation, you can run a SearXNG check procedure, +to see if there are some left overs. In this example there exists a old +/etc/searx/settings.yml:

+
$ sudo -H ./utils/searxng.sh instance check
+
+SearXNG checks
+--------------
+ERROR: settings.yml in /etc/searx/ is deprecated, move file to folder /etc/searxng/
+INFO:  [OK] (old) account 'searx' does not exists
+INFO:  [OK] (old) account 'filtron' does not exists
+INFO:  [OK] (old) account 'morty' does not exists
+...
+INFO    searx.redisdb                 : connecting to Redis db=0 path='/usr/local/searxng-redis/run/redis.sock'
+INFO    searx.redisdb                 : connected to Redis
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/babel.cfg b/babel.cfg deleted file mode 100644 index 1d8945efd..000000000 --- a/babel.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[extractors] -searxng_msg = searx.babel_extract.extract -[ignore: **/node_modules/**] -[python: **.py] -[jinja2: **/templates/**.html] -[searxng_msg: **/searxng.msg] diff --git a/dev/contribution_guide.html b/dev/contribution_guide.html new file mode 100644 index 000000000..cf3bcc137 --- /dev/null +++ b/dev/contribution_guide.html @@ -0,0 +1,291 @@ + + + + + + + + How to contribute — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

How to contribute

+ +
+

Prime directives: Privacy, Hackability

+

SearXNG has two prime directives, privacy-by-design and hackability . The +hackability comes in three levels:

+
    +
  • support of search engines

  • +
  • plugins to alter search behaviour

  • +
  • hacking SearXNG itself

  • +
+

Note the lack of “world domination” among the directives. SearXNG has no +intention of wide mass-adoption, rounded corners, etc. The prime directive +“privacy” deserves a separate chapter, as it’s quite uncommon unfortunately.

+
+

Privacy-by-design

+

SearXNG was born out of the need for a privacy-respecting search tool which +can be extended easily to maximize both, its search and its privacy protecting +capabilities.

+

A few widely used features work differently or turned off by default or not +implemented at all as a consequence of privacy-by-design.

+

If a feature reduces the privacy preserving aspects of searx, it should be +switched off by default or should not implemented at all. There are plenty of +search engines already providing such features. If a feature reduces the +protection of searx, users must be informed about the effect of choosing to +enable it. Features that protect privacy but differ from the expectations of +the user should also be explained.

+

Also, if you think that something works weird with searx, it’s might be because +of the tool you use is designed in a way to interfere with the privacy respect. +Submitting a bugreport to the vendor of the tool that misbehaves might be a good +feedback to reconsider the disrespect to its customers (e.g. GET vs POST +requests in various browsers).

+

Remember the other prime directive of SearXNG is to be hackable, so if the above +privacy concerns do not fancy you, simply fork it.

+
+

Happy hacking.

+
+
+
+
+

Code

+ +

In order to submit a patch, please follow the steps below:

+
    +
  • Follow coding conventions.

    +
      +
    • PEP8 standards apply, except the convention of line length

    • +
    • Maximum line length is 120 characters

    • +
    +
  • +
  • The cardinal rule for creating good commits is to ensure there is only one +logical change per commit / read Structural split of changes

  • +
  • Check if your code breaks existing tests. If so, update the tests or fix your +code.

  • +
  • If your code can be unit-tested, add unit tests.

  • +
  • Add yourself to the git://AUTHORS.rst file.

  • +
  • Choose meaningful commit messages, read Conventional Commits

    +
    <type>[optional scope]: <description>
    +
    +[optional body]
    +
    +[optional footer(s)]
    +
    +
    +
  • +
  • Create a pull request.

  • +
+

For more help on getting started with SearXNG development, see Development Quickstart.

+
+
+

Translation

+

Translation currently takes place on weblate.

+
+
+

Documentation

+ +

The documentation is built using Sphinx. So in order to be able to generate +the required files, you have to install it on your system. Much easier, use +our Makefile & ./manage.

+

Here is an example which makes a complete rebuild:

+
$ make docs.clean docs.html
+...
+The HTML pages are in dist/docs.
+
+
+
+

live build

+ +

Live build is like WYSIWYG. If you want to edit the documentation, its +recommended to use. The Makefile target docs.live builds the docs, opens +URL in your favorite browser and rebuilds every time a reST file has been +changed (make docs.clean docs.live).

+
$ make docs.live
+...
+The HTML pages are in dist/docs.
+... Serving on http://0.0.0.0:8000
+... Start watching changes
+
+
+

Live builds are implemented by sphinx-autobuild. Use environment +$(SPHINXOPTS) to pass arguments to the sphinx-autobuild command. Except +option --host (which is always set to 0.0.0.0) you can pass any +argument. E.g to find and use a free port, use:

+
$ SPHINXOPTS="--port 0" make docs.live
+...
+... Serving on http://0.0.0.0:50593
+...
+
+
+
+
+

deploy on github.io

+

To deploy documentation at github.io use Makefile target make docs.gh-pages, which builds the documentation and runs all the needed git add, +commit and push:

+
$ make docs.clean docs.gh-pages
+
+
+
+

Attention

+

If you are working in your own brand, don’t forgett to adjust your +brand:.

+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/demo/demo_offline.html b/dev/engines/demo/demo_offline.html new file mode 100644 index 000000000..e4df85652 --- /dev/null +++ b/dev/engines/demo/demo_offline.html @@ -0,0 +1,166 @@ + + + + + + + + Demo Offline Engine — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Demo Offline Engine

+

Within this module we implement a demo offline engine. Do not look to +close to the implementation, its just a simple example. To get in use of this +demo engine add the following entry to your engines list in settings.yml:

+
- name: my offline engine
+  engine: demo_offline
+  shortcut: demo
+  disabled: false
+
+
+
+
+searx.engines.demo_offline.init(engine_settings=None)[source]
+

Initialization of the (offline) engine. The origin of this demo engine is a +simple json string which is loaded in this example while the engine is +initialized.

+
+ +
+
+searx.engines.demo_offline.search(query, request_params)[source]
+

Query (offline) engine and return results. Assemble the list of results from +your local engine. In this demo engine we ignore the ‘query’ term, usual +you would pass the ‘query’ term to your local engine to filter out the +results.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/demo/demo_online.html b/dev/engines/demo/demo_online.html new file mode 100644 index 000000000..01c187ad8 --- /dev/null +++ b/dev/engines/demo/demo_online.html @@ -0,0 +1,173 @@ + + + + + + + + Demo Online Engine — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Demo Online Engine

+

Within this module we implement a demo online engine. Do not look to +close to the implementation, its just a simple example which queries The Art +Institute of Chicago

+

To get in use of this demo engine add the following entry to your engines +list in settings.yml:

+
- name: my online engine
+  engine: demo_online
+  shortcut: demo
+  disabled: false
+
+
+
+
+searx.engines.demo_online.init(engine_settings)[source]
+

Initialization of the (online) engine. If no initialization is needed, drop +this init function.

+
+ +
+
+searx.engines.demo_online.request(query, params)[source]
+

Build up the params for the online request. In this example we build a +URL to fetch images from artic.edu

+
+ +
+
+searx.engines.demo_online.response(resp)[source]
+

Parse out the result items from the response. In this example we parse the +response from api.artic.edu and filter out all +images.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/engine_overview.html b/dev/engines/engine_overview.html new file mode 100644 index 000000000..6f99e2ec4 --- /dev/null +++ b/dev/engines/engine_overview.html @@ -0,0 +1,822 @@ + + + + + + + + Engine Overview — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Engine Overview

+ + +

SearXNG is a metasearch-engine, so it uses different search engines to provide +better results.

+

Because there is no general search API which could be used for every search +engine, an adapter has to be built between SearXNG and the external search +engines. Adapters are stored under the folder git://searx/engines.

+
+

General Engine Configuration

+

It is required to tell SearXNG the type of results the engine provides. The +arguments can be set in the engine file or in the settings file (normally +settings.yml). The arguments in the settings file override the ones in the +engine file.

+

It does not matter if an option is stored in the engine file or in the settings. +However, the standard way is the following:

+
+

Engine File

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Common options in the engine module

argument

type

information

categories

list

categories, in which the engine is working

paging

boolean

support multiple pages

time_range_support

boolean

support search time range

engine_type

str

    +
  • online [ref] by +default, other possibles values are:

  • +
  • offline [ref]

  • +
  • online_dictionary [ref]

  • +
  • online_currency [ref]

  • +
  • online_url_search [ref]

  • +
+
+
+
+

Engine settings.yml

+

For a more detailed description, see engine: in the settings.yml.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Common options in the engine setup (settings.yml)

argument

type

information

name

string

name of search-engine

engine

string

name of searxng-engine (file name without .py)

enable_http

bool

enable HTTP (by default only HTTPS is enabled).

shortcut

string

shortcut of search-engine

timeout

string

specific timeout for search-engine

display_error_messages

boolean

display error messages on the web UI

proxies

dict

set proxies for a specific engine +(e.g. proxies : {http: socks5://proxy:port, +https: socks5://proxy:port})

+
+
+

Overrides

+

A few of the options have default values in the namespace of engine’s python +modul, but are often overwritten by the settings. If None is assigned to an +option in the engine file, it has to be redefined in the settings, otherwise +SearXNG will not start with that engine (global names with a leading underline can +be None).

+

Here is an very simple example of the global names in the namespace of engine’s +module:

+
# engine dependent config
+categories = ['general']
+paging = True
+_non_overwritten_global = 'foo'
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 The naming of overrides is arbitrary / recommended overrides are:

argument

type

information

base_url

string

base-url, can be overwritten to use same +engine on other URL

number_of_results

int

maximum number of results per request

language

string

ISO code of language and country like en_US

api_key

string

api-key if required by engine

+
+
+
+

Making a Request

+

To perform a search an URL have to be specified. In addition to specifying an +URL, arguments can be passed to the query.

+
+

Passed Arguments (request)

+

These arguments can be used to construct the search query. Furthermore, +parameters with default value can be redefined for special purposes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 If the engine_type is online

argument

type

default-value, information

url

str

''

method

str

'GET'

headers

set

{}

data

set

{}

cookies

set

{}

verify

bool

True

headers.User-Agent

str

a random User-Agent

category

str

current category, like 'general'

safesearch

int

0, between 0 and 2 (normal, moderate, strict)

time_range

Optional[str]

None, can be day, week, month, year

pageno

int

current pagenumber

searxng_locale

str

SearXNG’s locale selected by user. Specific language code like +'en', 'en-US', or 'all' if unspecified.

+ + + + + + + + + + + + + + + + + + + + + + +
Table 6 If the engine_type is online_dictionary, + in addition to the online arguments:

argument

type

default-value, information

from_lang

str

specific language code like 'en_US'

to_lang

str

specific language code like 'en_US'

query

str

the text query without the languages

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 If the engine_type is online_currency, + in addition to the online arguments:

argument

type

default-value, information

amount

float

the amount to convert

from

str

ISO 4217 code

to

str

ISO 4217 code

from_name

str

currency name

to_name

str

currency name

+ + + + + + + + + + + + + + +
Table 8 If the engine_type is online_url_search, + in addition to the online arguments:

argument

type

default-value, information

search_url

dict

URLs from the search query:

+
{
+  'http': str,
+  'ftp': str,
+  'data:image': str
+}
+
+
+
+
+
+

Specify Request

+

The function def request(query, params): always returns the params variable, the +following parameters can be used to specify a search request:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

argument

type

information

url

str

requested url

method

str

HTTP request method

headers

set

HTTP header information

data

set

HTTP data information

cookies

set

HTTP cookies

verify

bool

Performing SSL-Validity check

allow_redirects

bool

Follow redirects

max_redirects

int

maximum redirects, hard limit

soft_max_redirects

int

maximum redirects, soft limit. Record an error but don’t stop the engine

raise_for_httperror

bool

True by default: raise an exception if the HTTP code of response is >= 300

+
+
+
+

Result Types (template)

+

Each result item of an engine can be of different media-types. Currently the +following media-types are supported. To set another media-type as +default, the parameter template must be set to the desired +type.

+
+

default

+ + + + + + + + + + + + + + + + + + + + + +
Table 9 Parameter of the default media type:

result-parameter

information

url

string, url of the result

title

string, title of the result

content

string, general result-text

publishedDate

datetime.datetime, time of publish

+
+
+

images

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 10 Parameter of the images media type:

result-parameter

information

template

is set to images.html

url

string, url to the result site

title

string, title of the result (partly implemented)

content

(partly implemented)

publishedDate

datetime.datetime, +time of publish (partly implemented)

img_src

string, url to the result image

thumbnail_src

string, url to a small-preview image

+
+
+

videos

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 11 Parameter of the videos media type:

result-parameter

information

template

is set to videos.html

url

string, url of the result

title

string, title of the result

content

(not implemented yet)

publishedDate

datetime.datetime, time of publish

thumbnail

string, url to a small-preview image

+
+
+

torrent

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12 Parameter of the torrent media type:

result-parameter

information

template

is set to torrent.html

url

string, url of the result

title

string, title of the result

content

string, general result-text

publishedDate

datetime.datetime, +time of publish (not implemented yet)

seed

int, number of seeder

leech

int, number of leecher

filesize

int, size of file in bytes

files

int, number of files

magnetlink

string, magnetlink of the result

torrentfile

string, torrentfile of the result

+
+
+

map

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 13 Parameter of the map media type:

result-parameter

information

template

is set to map.html

url

string, url of the result

title

string, title of the result

content

string, general result-text

publishedDate

datetime.datetime, time of publish

latitude

latitude of result (in decimal format)

longitude

longitude of result (in decimal format)

boundingbox

boundingbox of result (array of 4. values +[lat-min, lat-max, lon-min, lon-max])

geojson

geojson of result (https://geojson.org/)

osm.type

type of osm-object (if OSM-Result)

osm.id

id of osm-object (if OSM-Result)

address.name

name of object

address.road

street name of object

address.house_number

house number of object

address.locality

city, place of object

address.postcode

postcode of object

address.country

country of object

+
+
+

paper

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14 Parameter of the paper media type / + see BibTeX field types and BibTeX format

result-parameter

Python type

information

template

str

is set to paper.html

title

str

title of the result

content

str

abstract

comments

str

free text display in italic below the content

tags

List[str]

free tag list

publishedDate

datetime

last publication date

type

str

short description of medium type, e.g. book, pdf or html

authors

List[str]

list of authors of the work (authors with a “s”)

editor

str

list of editors of a book

publisher

str

name of the publisher

journal

str

name of the journal or magazine the article was +published in

volume

str

volume number

pages

str

page range where the article is

number

str

number of the report or the issue number for a journal article

doi

str

DOI number (like 10.1038/d41586-018-07848-2)

issn

List[str]

ISSN number like 1476-4687

isbn

List[str]

ISBN number like 9780201896831

pdf_url

str

URL to the full article, the PDF version

html_url

str

URL to full article, HTML version

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/enginelib.html b/dev/engines/enginelib.html new file mode 100644 index 000000000..a053233b9 --- /dev/null +++ b/dev/engines/enginelib.html @@ -0,0 +1,530 @@ + + + + + + + + Engine Library — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Engine Library

+ +

Implementations of the framework for the SearXNG engines.

+
+

Hint

+

The long term goal is to modularize all implementations of the engine +framework here in this Python package. ToDo:

+ +
+
+
+class searx.enginelib.Engine[source]
+

Class of engine instances build from YAML settings.

+

Further documentation see General Engine Configuration.

+
+

Hint

+

This class is currently never initialized and only used for type hinting.

+
+
+
+about: dict
+

Additional fileds describing the engine.

+
about:
+   website: https://example.com
+   wikidata_id: Q306656
+   official_api_documentation: https://example.com/api-doc
+   use_official_api: true
+   require_api_key: true
+   results: HTML
+
+
+
+ +
+
+categories: List[str]
+

Specifies to which categories the engine should be added.

+
+ +
+
+disabled: bool
+

To disable by default the engine, but not deleting it. It will allow the +user to manually activate it in the settings.

+
+ +
+
+display_error_messages: bool
+

Display error messages on the web UI.

+
+ +
+
+enable_http: bool
+

Enable HTTP (by default only HTTPS is enabled).

+
+ +
+
+engine: str
+

Name of the python file used to handle requests and responses to and from +this search engine (file name from git://searx/engines without +.py).

+
+ +
+
+engine_type: str
+

Type of the engine (Search processors)

+
+ +
+
+fetch_traits: Callable
+

Function to to fetch engine’s traits from origin.

+
+ +
+
+inactive: bool
+

Remove the engine from the settings (disabled & removed).

+
+ +
+
+language: str
+

For an engine, when there is language: ... in the YAML settings the engine +does support only this one language:

+
- name: google french
+  engine: google
+  language: fr
+
+
+
+ +
+
+language_support: bool
+

Engine supports languages (locales) search.

+
+ +
+
+name: str
+

Name that will be used across SearXNG to define this engine. In settings, on +the result page ..

+
+ +
+
+paging: bool
+

Engine supports multiple pages.

+
+ +
+
+proxies: dict
+

Set proxies for a specific engine (YAML):

+
proxies :
+  http:  socks5://proxy:port
+  https: socks5://proxy:port
+
+
+
+ +
+
+region: str
+

For an engine, when there is region: ... in the YAML settings the engine +does support only this one region:

+
.. code:: yaml
+
+
+
+
    +
  • name: google belgium +engine: google +region: fr-BE

  • +
+
+
+ +
+
+safesearch: bool
+

Engine supports SafeSearch

+
+ +
+
+send_accept_language_header: bool
+

When this option is activated, the language (locale) that is selected by +the user is used to build and send a Accept-Language header in the +request to the origin search engine.

+
+ +
+
+shortcut: str
+

Code used to execute bang requests (!foo)

+
+ +
+
+time_range_support: bool
+

Engine supports search time range.

+
+ +
+
+timeout: float
+

Specific timeout for search-engine.

+
+ +
+
+tokens: List[str]
+

A list of secret tokens to make this engine private, more details see +Private Engines (tokens).

+
+ +
+
+traits: EngineTraits
+

Traits of the engine.

+
+ +
+
+using_tor_proxy: bool
+

Using tor proxy (true) or not (false) for this engine.

+
+ +
+ +
+

Engine traits

+

Engine’s traits are fetched from the origin engines and stored in a JSON file +in the data folder. Most often traits are languages and region codes and +their mapping from SearXNG’s representation to the representation in the origin +search engine. For new traits new properties can be added to the class +EngineTraits.

+

To load traits from the persistence EngineTraitsMap.from_data can be +used.

+
+
+class searx.enginelib.traits.EngineTraits(regions: ~typing.Dict[str, str] = <factory>, languages: ~typing.Dict[str, str] = <factory>, all_locale: str | None = None, data_type: typing_extensions.Literal[traits_v1] = 'traits_v1', custom: ~typing.Dict[str, ~typing.Dict[str, ~typing.Dict] | ~typing.Iterable[str]] = <factory>)[source]
+

The class is intended to be instantiated for each engine.

+
+
+copy()[source]
+

Create a copy of the dataclass object.

+
+ +
+
+classmethod fetch_traits(engine: Engine) Self | None[source]
+

Call a function fetch_traits(engine_traits) from engines namespace to fetch +and set properties from the origin engine in the object engine_traits. If +function does not exists, None is returned.

+
+ +
+
+get_language(searxng_locale: str, default=None)[source]
+

Return engine’s language string that best fits to SearXNG’s locale.

+
+
Parameters:
+
    +
  • searxng_locale – SearXNG’s internal representation of locale +selected by the user.

  • +
  • default – engine’s default language

  • +
+
+
+

The best fits rules are implemented in +searx.locales.get_engine_locale. Except for the special value all +which is determined from EngineTraits.all_locale.

+
+ +
+
+get_region(searxng_locale: str, default=None)[source]
+

Return engine’s region string that best fits to SearXNG’s locale.

+
+
Parameters:
+
    +
  • searxng_locale – SearXNG’s internal representation of locale +selected by the user.

  • +
  • default – engine’s default region

  • +
+
+
+

The best fits rules are implemented in +searx.locales.get_engine_locale. Except for the special value all +which is determined from EngineTraits.all_locale.

+
+ +
+
+is_locale_supported(searxng_locale: str) bool[source]
+

A locale (SearXNG’s internal representation) is considered to be +supported by the engine if the region or the language is supported +by the engine.

+

For verification the functions EngineTraits.get_region() and +EngineTraits.get_language() are used.

+
+ +
+
+set_traits(engine: Engine)[source]
+

Set traits from self object in a Engine namespace.

+
+
Parameters:
+

engine – engine instance build by searx.engines.load_engine()

+
+
+
+ +
+
+all_locale: str | None = None
+

To which locale value SearXNG’s all language is mapped (shown a “Default +language”).

+
+ +
+
+custom: Dict[str, Dict[str, Dict] | Iterable[str]]
+

A place to store engine’s custom traits, not related to the SearXNG core.

+
+ +
+
+data_type: typing_extensions.Literal[traits_v1] = 'traits_v1'
+

Data type, default is ‘traits_v1’.

+
+ +
+
+languages: Dict[str, str]
+

Maps SearXNG’s internal representation of a language to the one of the engine.

+

SearXNG’s internal representation can be parsed by babel and the value is +send to the engine:

+
languages = {
+    'ca' : <engine's language name>,
+}
+
+for key, egnine_lang in languages.items():
+   searxng_lang = babel.Locale.parse(key)
+   ...
+
+
+
+ +
+
+regions: Dict[str, str]
+

Maps SearXNG’s internal representation of a region to the one of the engine.

+

SearXNG’s internal representation can be parsed by babel and the value is +send to the engine:

+
regions ={
+    'fr-BE' : <engine's region name>,
+}
+
+for key, egnine_region regions.items():
+   searxng_region = babel.Locale.parse(key, sep='-')
+   ...
+
+
+
+ +
+ +
+
+class searx.enginelib.traits.EngineTraitsEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]
+

Encodes EngineTraits to a serializable object, see +json.JSONEncoder.

+
+
+default(o)[source]
+

Return dictionary of a EngineTraits object.

+
+ +
+ +
+
+class searx.enginelib.traits.EngineTraitsMap[source]
+

A python dictionary to map EngineTraits by engine name.

+
+
+classmethod from_data() Self[source]
+

Instantiate EngineTraitsMap object from ENGINE_TRAITS

+
+ +
+
+save_data()[source]
+

Store EngineTraitsMap in in file self.ENGINE_TRAITS_FILE

+
+ +
+
+set_traits(engine: Engine | types.ModuleType)[source]
+

Set traits in a Engine namespace.

+
+
Parameters:
+

engine – engine instance build by searx.engines.load_engine()

+
+
+
+ +
+
+ENGINE_TRAITS_FILE = PosixPath('/home/runner/work/searxng/searxng/searx/data/engine_traits.json')
+

File with persistence of the EngineTraitsMap.

+
+ +
+ +
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/engines.html b/dev/engines/engines.html new file mode 100644 index 000000000..aba8cffb3 --- /dev/null +++ b/dev/engines/engines.html @@ -0,0 +1,204 @@ + + + + + + + + SearXNG’s engines loader — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

SearXNG’s engines loader

+

Load and initialize the engines, see load_engines() and register +engine_shortcuts.

+

usage:

+
load_engines( settings['engines'] )
+
+
+
+
+searx.engines.is_missing_required_attributes(engine)[source]
+

An attribute is required when its name doesn’t start with _ (underline). +Required attributes must not be None.

+
+ +
+
+searx.engines.load_engine(engine_data: dict) Engine | types.ModuleType | None[source]
+

Load engine from engine_data.

+
+
Parameters:
+

engine_data (dict) – Attributes from YAML settings:engines/<engine>

+
+
Returns:
+

initialized namespace of the <engine>.

+
+
+
    +
  1. create a namespace and load module of the <engine>

  2. +
  3. update namespace with the defaults from ENGINE_DEFAULT_ARGS

  4. +
  5. update namespace with values from engine_data

  6. +
+

If engine is active, return namespace of the engine, otherwise return +None.

+

This function also returns None if initialization of the namespace fails +for one of the following reasons:

+ +
+ +
+
+searx.engines.load_engines(engine_list)[source]
+

usage: engine_list = settings['engines']

+
+ +
+
+searx.engines.using_tor_proxy(engine: Engine | types.ModuleType)[source]
+

Return True if the engine configuration declares to use Tor.

+
+ +
+
+searx.engines.engine_shortcuts
+

Simple map of registered shortcuts to name of the engine (or None).

+
engine_shortcuts[engine.shortcut] = engine.name
+
+
+
+
+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/index.html b/dev/engines/index.html new file mode 100644 index 000000000..e69ea1ccd --- /dev/null +++ b/dev/engines/index.html @@ -0,0 +1,273 @@ + + + + + + + + Engine Implementations — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Engine Implementations

+ + +
+

Engine Types

+

The engine_type of an engine +determines which search processor is used by +the engine.

+

In this section a list of the enignes that are documented is given, a complete +list of the engines can be found in the source under: git://searx/engines.

+
+

Online Engines

+ + + +
+
+

Offline Engines

+ + +
+ +
+

Online Currency

+ +

no engine of this type is documented yet / comming soon

+
+
+

Online Dictionary

+ +

no engine of this type is documented yet / comming soon

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/mediawiki.html b/dev/engines/mediawiki.html new file mode 100644 index 000000000..7f740153e --- /dev/null +++ b/dev/engines/mediawiki.html @@ -0,0 +1,223 @@ + + + + + + + + MediaWiki Engine — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

MediaWiki Engine

+ +

The MediaWiki engine is a generic engine to query Wikimedia wikis by +the MediaWiki Action API. For a query action all Wikimedia wikis have +endpoints that follow this pattern:

+
https://{base_url}/w/api.php?action=query&list=search&format=json
+
+
+
+

Note

+

In its actual state, this engine is implemented to parse JSON result +(format=json) from a search query (list=search). If you need other +action and list types ask SearXNG developers to extend the +implementation according to your needs.

+
+
+

Configuration

+

Request:

+ +
+
+

Implementations

+
+
+
+searx.engines.mediawiki.base_url: str = 'https://{language}.wikipedia.org/'
+

Base URL of the Wikimedia wiki.

+
+
{language}:

ISO 639-1 language code (en, de, fr ..) of the search language.

+
+
+
+ +
+
+searx.engines.mediawiki.search_type: str = 'nearmatch'
+

Which type of search to perform. One of the following values: nearmatch, +text or title.

+

See srwhat argument in list=search documentation.

+
+ +
+
+searx.engines.mediawiki.srenablerewrites: bool = True
+

Enable internal query rewriting (Type: boolean). Some search backends can +rewrite the query into another which is thought to provide better results, for +instance by correcting spelling errors.

+

See srenablerewrites argument in list=search documentation.

+
+ +
+
+searx.engines.mediawiki.srprop: str = 'sectiontitle|snippet|timestamp|categorysnippet'
+

Which properties to return.

+

See srprop argument in list=search documentation.

+
+ +
+
+searx.engines.mediawiki.srsort: str = 'relevance'
+

Set the sort order of returned results. One of the following values: +create_timestamp_asc, create_timestamp_desc, incoming_links_asc, +incoming_links_desc, just_match, last_edit_asc, last_edit_desc, +none, random, relevance, user_random.

+

See srenablerewrites argument in list=search documentation.

+
+ +
+
+searx.engines.mediawiki.timestamp_format = '%Y-%m-%dT%H:%M:%SZ'
+

The longhand version of MediaWiki time strings.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/offline/command-line-engines.html b/dev/engines/offline/command-line-engines.html new file mode 100644 index 000000000..6a6d9b727 --- /dev/null +++ b/dev/engines/offline/command-line-engines.html @@ -0,0 +1,230 @@ + + + + + + + + Command Line Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Command Line Engines

+ + + +

With command engines administrators can run engines to integrate arbitrary +shell commands.

+
+

Attention

+

When creating and enabling a command engine on a public instance, you +must be careful to avoid leaking private data.

+
+

The easiest solution is to limit the access by setting tokens as described +in section Private Engines (tokens). The engine base is flexible. Only your +imagination can limit the power of this engine (and maybe security concerns).

+
+

Configuration

+

The following options are available:

+
+
command:

A comma separated list of the elements of the command. A special token +{{QUERY}} tells where to put the search terms of the user. Example:

+
['ls', '-l', '-h', '{{QUERY}}']
+
+
+
+
delimiter:

A mapping containing a delimiter char and the titles of each element in +keys.

+
+
parse_regex:

A dict containing the regular expressions for each result key.

+
+
+

query_type:

+
+

The expected type of user search terms. Possible values: path and +enum.

+
+
path:

Checks if the user provided path is inside the working directory. If not, +the query is not executed.

+
+
enum:

Is a list of allowed search terms. If the user submits something which is +not included in the list, the query returns an error.

+
+
+
+
+
query_enum:

A list containing allowed search terms if query_type is set to enum.

+
+
working_dir:

The directory where the command has to be executed. Default: ./.

+
+
result_separator:

The character that separates results. Default: \n.

+
+
+
+
+

Example

+

The example engine below can be used to find files with a specific name in the +configured working directory:

+
- name: find
+  engine: command
+  command: ['find', '.', '-name', '{{QUERY}}']
+  query_type: path
+  shortcut: fnd
+  delimiter:
+      chars: ' '
+      keys: ['line']
+
+
+
+
+

Implementations

+
+
+
+searx.engines.command.check_parsing_options(engine_settings)[source]
+

Checks if delimiter based parsing or regex parsing is configured correctly

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/offline/nosql-engines.html b/dev/engines/offline/nosql-engines.html new file mode 100644 index 000000000..ad3bb2044 --- /dev/null +++ b/dev/engines/offline/nosql-engines.html @@ -0,0 +1,281 @@ + + + + + + + + NoSQL databases — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

NoSQL databases

+ + + +

The following NoSQL databases are supported:

+ +

All of the engines above are just commented out in the settings.yml, as you have to set various options and install +dependencies before using them.

+

By default, the engines use the key-value template for displaying results / +see simple +theme. If you are not satisfied with the original result layout, you can use +your own template, set result_template attribute to {template_name} and +place the templates at:

+
searx/templates/{theme_name}/result_templates/{template_name}
+
+
+

Furthermore, if you do not wish to expose these engines on a public instance, you +can still add them and limit the access by setting tokens as described in +section Private Engines (tokens).

+
+

Extra Dependencies

+

For using Redis Server or MongoDB you need to +install additional packages in Python’s Virtual Environment of your SearXNG +instance. To switch into the environment (Install SearXNG & dependencies) you can use +utils/searxng.sh:

+
$ sudo utils/searxng.sh instance cmd bash
+(searxng-pyenv)$ pip install ...
+
+
+
+
+

Configure the engines

+

NoSQL databases are used for storing arbitrary data without first defining +their structure.

+
+

Redis Server

+ +

Redis is an open source (BSD licensed), in-memory data structure (key value +based) store. Before configuring the redis_server engine, you must install +the dependency redis.

+
+

Configuration

+

Select a database to search in and set its index in the option db. You can +either look for exact matches or use partial keywords to find what you are +looking for by configuring exact_match_only.

+
+
+

Example

+

Below is an example configuration:

+
# Required dependency: redis
+
+- name: myredis
+  shortcut : rds
+  engine: redis_server
+  exact_match_only: false
+  host: '127.0.0.1'
+  port: 6379
+  enable_http: true
+  password: ''
+  db: 0
+
+
+
+
+

Implementations

+
+
+
+

MongoDB

+ +

MongoDB is a document based database program that handles JSON like data. +Before configuring the mongodb engine, you must install the dependency +pymongo.

+
+

Configuration

+

In order to query MongoDB, you have to select a database and a +collection. Furthermore, you have to select a key that is going to be +searched. MongoDB also supports the option exact_match_only, so configure +it as you wish.

+
+
+

Example

+

Below is an example configuration for using a MongoDB collection:

+
# MongoDB engine
+# Required dependency: pymongo
+
+- name: mymongo
+  engine: mongodb
+  shortcut: md
+  exact_match_only: false
+  host: '127.0.0.1'
+  port: 27017
+  enable_http: true
+  results_per_page: 20
+  database: 'business'
+  collection: 'reviews'  # name of the db collection
+  key: 'name'            # key in the collection to search for
+
+
+
+
+

Implementations

+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/offline/search-indexer-engines.html b/dev/engines/offline/search-indexer-engines.html new file mode 100644 index 000000000..7a3e92ecf --- /dev/null +++ b/dev/engines/offline/search-indexer-engines.html @@ -0,0 +1,270 @@ + + + + + + + + Local Search APIs — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Local Search APIs

+ + + +

Administrators might find themselves wanting to integrate locally running search +engines. The following ones are supported for now:

+ +

Each search engine is powerful, capable of full-text search. All of the engines +above are added to settings.yml just commented out, as you have to +base_url for all them.

+

Please note that if you are not using HTTPS to access these engines, you have to +enable HTTP requests by setting enable_http to True.

+

Furthermore, if you do not want to expose these engines on a public instance, +you can still add them and limit the access by setting tokens as described +in section Private Engines (tokens).

+
+

MeiliSearch

+ +

MeiliSearch is aimed at individuals and small companies. It is designed for +small-scale (less than 10 million documents) data collections. E.g. it is great +for storing web pages you have visited and searching in the contents later.

+

The engine supports faceted search, so you can search in a subset of documents +of the collection. Furthermore, you can search in MeiliSearch instances that +require authentication by setting auth_token.

+
+

Example

+

Here is a simple example to query a Meilisearch instance:

+
- name: meilisearch
+  engine: meilisearch
+  shortcut: mes
+  base_url: http://localhost:7700
+  index: my-index
+  enable_http: true
+
+
+
+
+
+

Elasticsearch

+ +

Elasticsearch supports numerous ways to query the data it is storing. At the +moment the engine supports the most popular search methods (query_type):

+
    +
  • match,

  • +
  • simple_query_string,

  • +
  • term and

  • +
  • terms.

  • +
+

If none of the methods fit your use case, you can select custom query type +and provide the JSON payload to submit to Elasticsearch in +custom_query_json.

+
+

Example

+

The following is an example configuration for an Elasticsearch instance with +authentication configured to read from my-index index.

+
- name: elasticsearch
+  shortcut: es
+  engine: elasticsearch
+  base_url: http://localhost:9200
+  username: elastic
+  password: changeme
+  index: my-index
+  query_type: match
+  # custom_query_json: '{ ... }'
+  enable_http: true
+
+
+
+
+
+

Solr

+ +

Solr is a popular search engine based on Lucene, just like Elasticsearch. But +instead of searching in indices, you can search in collections.

+
+

Example

+

This is an example configuration for searching in the collection +my-collection and get the results in ascending order.

+
- name: solr
+  engine: solr
+  shortcut: slr
+  base_url: http://localhost:8983
+  collection: my-collection
+  sort: asc
+  enable_http: true
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/offline/sql-engines.html b/dev/engines/offline/sql-engines.html new file mode 100644 index 000000000..1028bcc45 --- /dev/null +++ b/dev/engines/offline/sql-engines.html @@ -0,0 +1,323 @@ + + + + + + + + SQL Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

SQL Engines

+ + + +

With the SQL engines you can bind SQL databases into SearXNG. The following +Relational Database Management System (RDBMS) are supported:

+ +

All of the engines above are just commented out in the settings.yml, as you have to set the required attributes for the +engines, e.g. database:

+
- name: ...
+  engine: {sqlite|postgresql|mysql_server}
+  database: ...
+  result_template: {template_name}
+  query_str: ...
+
+
+

By default, the engines use the key-value template for displaying results / +see simple +theme. If you are not satisfied with the original result layout, you can use +your own template, set result_template attribute to {template_name} and +place the templates at:

+
searx/templates/{theme_name}/result_templates/{template_name}
+
+
+

If you do not wish to expose these engines on a public instance, you can still +add them and limit the access by setting tokens as described in section +Private Engines (tokens).

+
+

Extra Dependencies

+

For using PostgreSQL or MySQL you need to +install additional packages in Python’s Virtual Environment of your SearXNG +instance. To switch into the environment (Install SearXNG & dependencies) you can use +utils/searxng.sh:

+
$ sudo utils/searxng.sh instance cmd bash
+(searxng-pyenv)$ pip install ...
+
+
+
+
+

Configure the engines

+

The configuration of the new database engines are similar. You must put a valid +SQL-SELECT query in query_str. At the moment you can only bind at most one +parameter in your query. By setting the attribute limit you can define how +many results you want from the SQL server. Basically, it is the same as the +LIMIT keyword in SQL.

+

Please, do not include LIMIT or OFFSET in your SQL query as the engines +rely on these keywords during paging. If you want to configure the number of +returned results use the option limit.

+
+

SQLite

+ +

SQLite is a small, fast and reliable SQL database engine. It does not require +any extra dependency.

+
+

Example

+

To demonstrate the power of database engines, here is a more complex example +which reads from a MediathekView (DE) movie database. For this example of the +SQlite engine download the database:

+ +

and unpack into searx/data/filmliste-v2.db. To search the database use e.g +Query to test: !mediathekview concert

+
- name: mediathekview
+  engine: sqlite
+  disabled: False
+  categories: general
+  result_template: default.html
+  database: searx/data/filmliste-v2.db
+  query_str:  >-
+    SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title,
+           COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url,
+           description AS content
+      FROM film
+     WHERE title LIKE :wildcard OR description LIKE :wildcard
+     ORDER BY duration DESC
+
+
+
+
+

Implementations

+
+
+
+searx.engines.sqlite.sqlite_cursor()[source]
+

Implements a Context Manager for a +sqlite3.Cursor.

+

Open database in read only mode: if the database doesn’t exist. The default +mode creates an empty file on the file system. See:

+ +
+ +
+
+

PostgreSQL

+ +

PostgreSQL is a powerful and robust open source database. Before configuring +the PostgreSQL engine, you must install the dependency psychopg2.

+
+

Example

+

Below is an example configuration:

+
- name: my_database
+  engine: postgresql
+  database: my_database
+  username: searxng
+  password: password
+  query_str: 'SELECT * from my_table WHERE my_column = %(query)s'
+
+
+
+
+

Implementations

+
+
+
+

MySQL

+ +

MySQL is said to be the most popular open source database. Before enabling +MySQL engine, you must install the package mysql-connector-python.

+

The authentication plugin is configurable by setting auth_plugin in the +attributes. By default it is set to caching_sha2_password.

+
+

Example

+

This is an example configuration for querying a MySQL server:

+
- name: my_database
+  engine: mysql_server
+  database: my_database
+  username: searxng
+  password: password
+  limit: 5
+  query_str: 'SELECT * from my_table WHERE my_column=%(query)s'
+
+
+
+
+

Implementations

+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/offline_concept.html b/dev/engines/offline_concept.html new file mode 100644 index 000000000..cbaeb1105 --- /dev/null +++ b/dev/engines/offline_concept.html @@ -0,0 +1,196 @@ + + + + + + + + Offline Concept — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Offline Concept

+ +

To extend the functionality of SearXNG, offline engines are going to be +introduced. An offline engine is an engine which does not need Internet +connection to perform a search and does not use HTTP to communicate.

+

Offline engines can be configured, by adding those to the engines list of +settings.yml. An example skeleton for offline +engines can be found in Demo Offline Engine (demo_offline.py).

+
+

Programming Interface

+
+
init(engine_settings=None)

All offline engines can have their own init function to setup the engine before +accepting requests. The function gets the settings from settings.yml as a +parameter. This function can be omitted, if there is no need to setup anything +in advance.

+
+
search(query, params)

Each offline engine has a function named search. This function is +responsible to perform a search and return the results in a presentable +format. (Where presentable means presentable by the selected result +template.)

+

The return value is a list of results retrieved by the engine.

+
+
Engine representation in /config

If an engine is offline, the attribute offline is set to True.

+
+
+
+
+

Extra Dependencies

+

If an offline engine depends on an external tool, SearXNG does not install it by +default. When an administrator configures such engine and starts the instance, +the process returns an error with the list of missing dependencies. Also, +required dependencies will be added to the comment/description of the engine, so +admins can install packages in advance.

+

If there is a need to install additional packages in Python’s Virtual +Environment of your SearXNG instance you need to switch into the environment +(Install SearXNG & dependencies) first, for this you can use utils/searxng.sh:

+
$ sudo utils/searxng.sh instance cmd bash
+(searxng-pyenv)$ pip install ...
+
+
+
+
+

Private engines (Security)

+

To limit the access to offline engines, if an instance is available publicly, +administrators can set token(s) for each of the Private Engines (tokens). If a +query contains a valid token, then SearXNG performs the requested private +search. If not, requests from an offline engines return errors.

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/annas_archive.html b/dev/engines/online/annas_archive.html new file mode 100644 index 000000000..a1a0c3cfd --- /dev/null +++ b/dev/engines/online/annas_archive.html @@ -0,0 +1,217 @@ + + + + + + + + Anna’s Archive — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Anna’s Archive

+ +

Anna’s Archive is a free non-profit online shadow library metasearch +engine providing access to a variety of book resources (also via IPFS), created +by a team of anonymous archivists (AnnaArchivist).

+
+

Configuration

+

The engine has the following additional settings:

+ +

With this options a SearXNG maintainer is able to configure additional +engines for specific searches in Anna’s Archive. For example a engine to search +for newest articles and journals (PDF) / by shortcut !aaa <search-term>.

+
- name: annas articles
+  engine: annas_archive
+  shortcut: aaa
+  aa_content: 'journal_article'
+  aa_ext: 'pdf'
+  aa_sort: 'newest'
+
+
+
+
+

Implementations

+
+
+
+searx.engines.annas_archive.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and other search arguments from Anna’s search form.

+
+ +
+
+searx.engines.annas_archive.init(engine_settings=None)[source]
+

Check of engine’s settings.

+
+ +
+
+searx.engines.annas_archive.aa_content: str = ''
+

Anan’s search form field Content / possible values:

+
journal_article, book_any, book_fiction, book_unknown, book_nonfiction,
+book_comic, magazine, standards_document
+
+
+

To not filter use an empty string (default).

+
+ +
+
+searx.engines.annas_archive.aa_ext: str = ''
+

Filter Anna’s results by a file ending. Common filters for example are +pdf and epub.

+
+

Note

+

Anna’s Archive is a beta release: Filter results by file extension does not +really work on Anna’s Archive.

+
+
+ +
+
+searx.engines.annas_archive.aa_sort: str = ''
+

Sort Anna’s results, possible values:

+
newest, oldest, largest, smallest
+
+
+

To sort by most relevant use an empty string (default).

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/archlinux.html b/dev/engines/online/archlinux.html new file mode 100644 index 000000000..a98b704e4 --- /dev/null +++ b/dev/engines/online/archlinux.html @@ -0,0 +1,172 @@ + + + + + + + + Arch Linux — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Arch Linux

+ +
+

Arch Linux Wiki

+

This implementation does not use a official API: Mediawiki provides API, but +Arch Wiki blocks access to it.

+
+
+
+searx.engines.archlinux.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages from Archlinix-Wiki. The location of the Wiki address of a +language is mapped in a custom field (wiki_netloc). Depending +on the location, the title argument in the request is translated.

+
"custom": {
+  "wiki_netloc": {
+    "de": "wiki.archlinux.de",
+     # ...
+    "zh": "wiki.archlinuxcn.org"
+  }
+  "title": {
+    "de": "Spezial:Suche",
+     # ...
+    "zh": "Special:搜索"
+  },
+},
+
+
+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/bing.html b/dev/engines/online/bing.html new file mode 100644 index 000000000..c1cb1111d --- /dev/null +++ b/dev/engines/online/bing.html @@ -0,0 +1,325 @@ + + + + + + + + Bing Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Bing Engines

+ +
+

Bing WEB

+

This is the implementation of the Bing-WEB engine. Some of this +implementations are shared by other engines:

+ +

On the preference page Bing offers a lot of languages an regions (see section +‘Search results languages’ and ‘Country/region’). However, the abundant choice +does not correspond to reality, where Bing has a full-text indexer only for a +limited number of languages. By example: you can select a language like Māori +but you never get a result in this language.

+

What comes a bit closer to the truth are the search-APIs but they don`t seem +to be completely correct either (if you take a closer look you will find some +inaccuracies there too):

+ +
+
+searx.engines.bing.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and regions from Bing-Web.

+
+ +
+
+searx.engines.bing.request(query, params)[source]
+

Assemble a Bing-Web request.

+
+ +
+
+searx.engines.bing.base_url = 'https://www.bing.com/search'
+

Bing (Web) search URL

+
+ +
+
+searx.engines.bing.bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/reference/market-codes'
+

Bing (Web) search API description

+
+ +
+
+searx.engines.bing.send_accept_language_header = True
+

Bing tries to guess user’s language and territory from the HTTP +Accept-Language. Optional the user can select a search-language (can be +different to the UI language) and a region (market code).

+
+ +
+
+

Bing Images

+

Bing-Images: description see searx.engines.bing.

+
+
+searx.engines.bing_images.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and regions from Bing-News.

+
+ +
+
+searx.engines.bing_images.request(query, params)[source]
+

Assemble a Bing-Image request.

+
+ +
+
+searx.engines.bing_images.response(resp)[source]
+

Get response from Bing-Images

+
+ +
+
+searx.engines.bing_images.base_url = 'https://www.bing.com/images/async'
+

Bing (Images) search URL

+
+ +
+
+searx.engines.bing_images.bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-image-search/reference/market-codes'
+

Bing (Images) search API description

+
+ +
+
+

Bing Videos

+

Bing-Videos: description see searx.engines.bing.

+
+
+searx.engines.bing_videos.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and regions from Bing-Videos.

+
+ +
+
+searx.engines.bing_videos.request(query, params)[source]
+

Assemble a Bing-Video request.

+
+ +
+
+searx.engines.bing_videos.response(resp)[source]
+

Get response from Bing-Video

+
+ +
+
+searx.engines.bing_videos.base_url = 'https://www.bing.com/videos/asyncv2'
+

Bing (Videos) async search URL.

+
+ +
+
+searx.engines.bing_videos.bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-video-search/reference/market-codes'
+

Bing (Video) search API description

+
+ +
+
+

Bing News

+

Bing-News: description see searx.engines.bing.

+
+
+searx.engines.bing_news.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and regions from Bing-News.

+

The description of the +first table says “query parameter when calling the Video Search API.” +.. thats why I use the 4. table “News Category API markets” for the +xpath_market_codes.

+
+ +
+
+searx.engines.bing_news.request(query, params)[source]
+

Assemble a Bing-News request.

+
+ +
+
+searx.engines.bing_news.response(resp)[source]
+

Get response from Bing-Video

+
+ +
+
+searx.engines.bing_news.base_url = 'https://www.bing.com/news/infinitescrollajax'
+

Bing (News) search URL

+
+ +
+
+searx.engines.bing_news.bing_traits_url = 'https://learn.microsoft.com/en-us/bing/search-apis/bing-news-search/reference/market-codes'
+

Bing (News) search API description

+
+ +
+
+searx.engines.bing_news.mkt_alias = {'zh': 'en-WW', 'zh-CN': 'en-WW'}
+

Bing News has an official market code ‘zh-CN’ but we won’t get a result with +this market code. For ‘zh’ and ‘zh-CN’ we better use the Worldwide aggregate +market code (en-WW).

+
+ +
+
+searx.engines.bing_news.time_map = {'day': '4', 'month': '9', 'week': '8'}
+

A string ‘4’ means last hour. We use last hour for day here since the +difference of last day and last week in the result list is just marginally.

+
+ +
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/brave.html b/dev/engines/online/brave.html new file mode 100644 index 000000000..786929f62 --- /dev/null +++ b/dev/engines/online/brave.html @@ -0,0 +1,265 @@ + + + + + + + + Brave Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Brave Engines

+ +

Brave supports the categories listed in brave_category (General, +news, videos, images). The support of paging and time range is limited (see remarks).

+

Configured brave engines:

+
- name: brave
+  engine: brave
+  ...
+  brave_category: search
+  time_range_support: true
+  paging: true
+
+- name: brave.images
+  engine: brave
+  ...
+  brave_category: images
+
+- name: brave.videos
+  engine: brave
+  ...
+  brave_category: videos
+
+- name: brave.news
+  engine: brave
+  ...
+  brave_category: news
+
+
+
+

Brave regions

+

Brave uses two-digit tags for the regions like ca while SearXNG deals with +locales. To get a mapping, all officatl de-facto languages of the Brave +region are mapped to regions in SearXNG (see babel):

+
"regions": {
+  ..
+  "en-CA": "ca",
+  "fr-CA": "ca",
+  ..
+ }
+
+
+
+

Note

+

The language (aka region) support of Brave’s index is limited to very basic +languages. The search results for languages like Chinese or Arabic are of +low quality.

+
+
+
+

Brave languages

+

Brave’s language support is limited to the UI (menues, area local notations, +etc). Brave’s index only seems to support a locale, but it does not seem to +support any languages in its index. The choice of available languages is very +small (and its not clear to me where the differencee in UI is when switching +from en-us to en-ca or en-gb).

+

In the EngineTraits object the +UI languages are stored in a custom field named ui_lang:

+
"custom": {
+  "ui_lang": {
+    "ca": "ca",
+    "de-DE": "de-de",
+    "en-CA": "en-ca",
+    "en-GB": "en-gb",
+    "en-US": "en-us",
+    "es": "es",
+    "fr-CA": "fr-ca",
+    "fr-FR": "fr-fr",
+    "ja-JP": "ja-jp",
+    "pt-BR": "pt-br",
+    "sq-AL": "sq-al"
+  }
+},
+
+
+
+
+

Implementations

+
+
+
+searx.engines.brave.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and regions from Brave.

+
+ +
+
+searx.engines.brave.brave_category = 'search'
+

Brave supports common web-search, video search, image and video search.

+
    +
  • search: Common WEB search

  • +
  • videos: search for videos

  • +
  • images: search for images

  • +
  • news: search for news

  • +
+
+ +
+
+searx.engines.brave.brave_spellcheck = False
+

Brave supports some kind of spell checking. When activated, Brave tries to +fix typos, e.g. it searches for food when the user queries for fooh. In +the UI of Brave the user gets warned about this, since we can not warn the user +in SearXNG, the spellchecking is disabled by default.

+
+ +
+
+searx.engines.brave.paging = False
+

Brave only supports paging in brave_category search (UI +category All).

+
+ +
+
+searx.engines.brave.time_range_support = False
+

Brave only supports time-range in brave_category search (UI +category All).

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/bt4g.html b/dev/engines/online/bt4g.html new file mode 100644 index 000000000..a6d21d64b --- /dev/null +++ b/dev/engines/online/bt4g.html @@ -0,0 +1,194 @@ + + + + + + + + BT4G — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

BT4G

+ +

BT4G (bt4g.com) is not a tracker and doesn’t store any content and only +collects torrent metadata (such as file names and file sizes) and a magnet link +(torrent identifier).

+

This engine does not parse the HTML page because there is an API in XML (RSS). +The RSS feed provides fewer data like amount of seeders/leechers and the files +in the torrent file. It’s a tradeoff for a “stable” engine as the XML from RSS +content will change way less than the HTML page.

+
+

Configuration

+

The engine has the following additional settings:

+ +

With this options a SearXNG maintainer is able to configure additional +engines for specific torrent searches. For example a engine to search only for +Movies and sort the result list by the count of seeders.

+
- name: bt4g.movie
+  engine: bt4g
+  shortcut: bt4gv
+  categories: video
+  bt4g_order_by: seeders
+  bt4g_category: 'movie'
+
+
+
+
+

Implementations

+
+
+
+searx.engines.bt4g.bt4g_category = 'all'
+

BT$G offers categoies: all (default), audio, movie, doc, +app and `` other``.

+
+ +
+
+searx.engines.bt4g.bt4g_order_by = 'relevance'
+

Result list can be ordered by relevance (default), size, seeders +or time.

+
+

Hint

+

When time_range is activate, the results always orderd by time.

+
+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/dailymotion.html b/dev/engines/online/dailymotion.html new file mode 100644 index 000000000..b5957c2c5 --- /dev/null +++ b/dev/engines/online/dailymotion.html @@ -0,0 +1,204 @@ + + + + + + + + Dailymotion — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Dailymotion

+ +
+

Dailymotion (Videos)

+
+
+
+searx.engines.dailymotion.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch locales & languages from dailymotion.

+

Locales fetched from api/locales. +There are duplications in the locale codes returned from Dailymotion which +can be ignored:

+
en_EN --> en_GB, en_US
+ar_AA --> ar_EG, ar_AE, ar_SA
+
+
+

The language list api/languages +contains over 7000 languages codes (see PR1071). We use only those +language codes that are used in the locales.

+
+ +
+
+searx.engines.dailymotion.family_filter_map = {0: 'false', 1: 'true', 2: 'true'}
+

By default, the family filter is turned on. Setting this parameter to +false will stop filtering-out explicit content from searches and global +contexts (family_filter in Global API Parameters ).

+
+ +
+
+searx.engines.dailymotion.iframe_src = 'https://www.dailymotion.com/embed/video/{video_id}'
+

URL template to embed video in SearXNG’s result list.

+
+ +
+
+searx.engines.dailymotion.result_fields = ['allow_embed', 'description', 'title', 'created_time', 'duration', 'url', 'thumbnail_360_url', 'id']
+

Fields selection, by default, a few fields are returned. To request more +specific fields, the fields parameter is used with the list of fields +SearXNG needs in the response to build a video result list.

+
+ +
+
+searx.engines.dailymotion.safesearch_params = {0: {}, 1: {'is_created_for_kids': 'true'}, 2: {'is_created_for_kids': 'true'}}
+

True if this video is “Created for Kids” / intends to target an audience +under the age of 16 (is_created_for_kids in Video filters API )

+
+ +
+
+searx.engines.dailymotion.search_url = 'https://api.dailymotion.com/videos?'
+

URL to retrieve a list of videos.

+ +
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/duckduckgo.html b/dev/engines/online/duckduckgo.html new file mode 100644 index 000000000..9a7025666 --- /dev/null +++ b/dev/engines/online/duckduckgo.html @@ -0,0 +1,256 @@ + + + + + + + + DukcDukGo Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

DukcDukGo Engines

+ +
+

DuckDuckGo Lite

+
+
+
+searx.engines.duckduckgo.cache_vqd(query, value)[source]
+

Caches a vqd value from a query.

+

The vqd value depends on the query string and is needed for the follow up +pages or the images loaded by a XMLHttpRequest:

+
    +
  • DuckDuckGo Web: https://links.duckduckgo.com/d.js?q=…&vqd=…

  • +
  • DuckDuckGo Images: https://duckduckgo.com/i.js??q=…&vqd=…

  • +
+
+ +
+
+searx.engines.duckduckgo.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages & regions from DuckDuckGo.

+

SearXNG’s all locale maps DuckDuckGo’s “Alle regions” (wt-wt). +DuckDuckGo’s language “Browsers prefered language” (wt_WT) makes no +sense in a SearXNG request since SearXNG’s all will not add a +Accept-Language HTTP header. The value in engine_traits.all_locale +is wt-wt (the region).

+

Beside regions DuckDuckGo also defines its lanaguages by region codes. By +example these are the english languages in DuckDuckGo:

+
    +
  • en_US

  • +
  • en_AU

  • +
  • en_CA

  • +
  • en_GB

  • +
+

The function get_ddg_lang evaluates DuckDuckGo’s language from +SearXNG’s locale.

+
+ +
+
+searx.engines.duckduckgo.get_ddg_lang(eng_traits: EngineTraits, sxng_locale, default='en_US')[source]
+

Get DuckDuckGo’s language identifier from SearXNG’s locale.

+

DuckDuckGo defines its lanaguages by region codes (see +fetch_traits).

+

To get region and language of a DDG service use:

+

It might confuse, but the l value of the cookie is what SearXNG calls +the region:

+
# !ddi paris :es-AR --> {'ad': 'es_AR', 'ah': 'ar-es', 'l': 'ar-es'}
+params['cookies']['ad'] = eng_lang
+params['cookies']['ah'] = eng_region
+params['cookies']['l'] = eng_region
+
+
+
+

Hint

+

DDG-lite does not offer a language +selection to the user, only a region can be selected by the user +(eng_region from the example above). DDG-lite stores the selected +region in a cookie:

+
params['cookies']['kl'] = eng_region  # 'ar-es'
+
+
+
+
+ +
+
+searx.engines.duckduckgo.get_vqd(query, headers)[source]
+

Returns the vqd that fits to the query. If there is no vqd cached +(cache_vqd) the query is sent to DDG to get a vqd value from the +response.

+
+ +
+
+searx.engines.duckduckgo.send_accept_language_header = True
+

DuckDuckGo-Lite tries to guess user’s prefered language from the HTTP +Accept-Language. Optional the user can select a region filter (but not a +language).

+
+ +
+

DuckDuckGo Images

+
+
+

DuckDuckGo Instant Answer API

+

The DDG-API is no longer documented but from +reverse engineering we can see that some services (e.g. instant answers) still +in use from the DDG search engine.

+

As far we can say the instant answers API does not support languages, or at +least we could not find out how language support should work. It seems that +most of the features are based on English terms.

+
+
+
+searx.engines.duckduckgo_definitions.area_to_str(area)[source]
+

parse {'unit': 'https://www.wikidata.org/entity/Q712226', 'amount': '+20.99'}

+
+ +
+
+searx.engines.duckduckgo_definitions.is_broken_text(text)[source]
+

duckduckgo may return something like <a href="xxxx">http://somewhere Related website<a/>

+

The href URL is broken, the “Related website” may contains some HTML.

+

The best solution seems to ignore these results.

+
+ +
+

DuckDuckGo Weather

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/google.html b/dev/engines/online/google.html new file mode 100644 index 000000000..d368e7267 --- /dev/null +++ b/dev/engines/online/google.html @@ -0,0 +1,413 @@ + + + + + + + + Google Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Google Engines

+ +
+

Google API

+

SearXNG’s implementation of the Google API is mainly done in +get_google_info.

+

For detailed description of the REST-full API see: Query Parameter +Definitions. The linked API documentation can sometimes be helpful during +reverse engineering. However, we cannot use it in the freely accessible WEB +services; not all parameters can be applied and some engines are more special +than other (e.g. Google News).

+
+
+

Google WEB

+

This is the implementation of the Google WEB engine. Some of this +implementations (manly the get_google_info) are shared by other +engines:

+ +
+
+searx.engines.google.fetch_traits(engine_traits: EngineTraits, add_domains: bool = True)[source]
+

Fetch languages from Google.

+
+ +
+
+searx.engines.google.get_google_info(params, eng_traits)[source]
+

Composing various (language) properties for the google engines (Google API).

+

This function is called by the various google engines (Google WEB, Google Images, Google News and +Google Videos).

+
+
Parameters:
+
    +
  • param (dict) – Request parameters of the engine. At least +a searxng_locale key should be in the dictionary.

  • +
  • eng_traits – Engine’s traits fetched from google preferences +(searx.enginelib.traits.EngineTraits)

  • +
+
+
Return type:
+

dict

+
+
Returns:
+

Py-Dictionary with the key/value pairs:

+
+
language:

The language code that is used by google (e.g. lang_en or +lang_zh-TW)

+
+
country:

The country code that is used by google (e.g. US or TW)

+
+
locale:

A instance of babel.core.Locale build from the +searxng_locale value.

+
+
subdomain:

Google subdomain google_domains that fits to the country +code.

+
+
params:

Py-Dictionary with additional request arguments (can be passed to +urllib.parse.urlencode()).

+
    +
  • hl parameter: specifies the interface language of user interface.

  • +
  • lr parameter: restricts search results to documents written in +a particular language.

  • +
  • cr parameter: restricts search results to documents +originating in a particular country.

  • +
  • ie parameter: sets the character encoding scheme that should +be used to interpret the query string (‘utf8’).

  • +
  • oe parameter: sets the character encoding scheme that should +be used to decode the XML result (‘utf8’).

  • +
+
+
headers:

Py-Dictionary with additional HTTP headers (can be passed to +request’s headers)

+
    +
  • Accept: '*/*

  • +
+
+
+

+
+
+
+ +
+
+searx.engines.google.request(query, params)[source]
+

Google search request

+
+ +
+
+searx.engines.google.response(resp)[source]
+

Get response from google’s search request

+
+ +
+
+searx.engines.google.UI_ASYNC = 'use_ac:true,_fmt:prog'
+

Format of the response from UI’s async request.

+
+ +
+
+

Google Autocomplete

+
+
+searx.autocomplete.google_complete(query, sxng_locale)[source]
+

Autocomplete from Google. Supports Google’s languages and subdomains +(searx.engines.google.get_google_info) by using the async REST +API:

+
https://{subdomain}/complete/search?{args}
+
+
+
+ +
+
+

Google Images

+

This is the implementation of the Google Images engine using the internal +Google API used by the Google Go Android app.

+

This internal API offer results in

+
    +
  • JSON (_fmt:json)

  • +
  • Protobuf (_fmt:pb)

  • +
  • Protobuf compressed? (_fmt:pc)

  • +
  • HTML (_fmt:html)

  • +
  • Protobuf encoded in JSON (_fmt:jspb).

  • +
+
+
+searx.engines.google_images.request(query, params)[source]
+

Google-Image search request

+
+ +
+
+searx.engines.google_images.response(resp)[source]
+

Get response from google’s search request

+
+ +
+
+

Google Videos

+

This is the implementation of the Google Videos engine.

+
+

Content-Security-Policy (CSP)

+

This engine needs to allow images from the data URLs (prefixed with the +data: scheme):

+
Header set Content-Security-Policy "img-src 'self' data: ;"
+
+
+
+
+
+searx.engines.google_videos.request(query, params)[source]
+

Google-Video search request

+
+ +
+
+searx.engines.google_videos.response(resp)[source]
+

Get response from google’s search request

+
+ +
+
+

Google News

+

This is the implementation of the Google News engine.

+

Google News has a different region handling compared to Google WEB.

+
    +
  • the ceid argument has to be set (ceid_list)

  • +
  • the hl argument has to be set correctly (and different to Google WEB)

  • +
  • the gl argument is mandatory

  • +
+

If one of this argument is not set correctly, the request is redirected to +CONSENT dialog:

+
https://consent.google.com/m?continue=
+
+
+

The google news API ignores some parameters from the common Google API:

+
    +
  • num : the number of search results is ignored / there is no paging all +results for a query term are in the first response.

  • +
  • save : is ignored / Google-News results are always SafeSearch

  • +
+
+
+searx.engines.google_news.request(query, params)[source]
+

Google-News search request

+
+ +
+
+searx.engines.google_news.response(resp)[source]
+

Get response from google’s search request

+
+ +
+
+searx.engines.google_news.ceid_list = ['AE:ar', 'AR:es-419', 'AT:de', 'AU:en', 'BD:bn', 'BE:fr', 'BE:nl', 'BG:bg', 'BR:pt-419', 'BW:en', 'CA:en', 'CA:fr', 'CH:de', 'CH:fr', 'CL:es-419', 'CN:zh-Hans', 'CO:es-419', 'CU:es-419', 'CZ:cs', 'DE:de', 'EG:ar', 'ES:es', 'ET:en', 'FR:fr', 'GB:en', 'GH:en', 'GR:el', 'HK:zh-Hant', 'HU:hu', 'ID:en', 'ID:id', 'IE:en', 'IL:en', 'IL:he', 'IN:bn', 'IN:en', 'IN:hi', 'IN:ml', 'IN:mr', 'IN:ta', 'IN:te', 'IT:it', 'JP:ja', 'KE:en', 'KR:ko', 'LB:ar', 'LT:lt', 'LV:en', 'LV:lv', 'MA:fr', 'MX:es-419', 'MY:en', 'NA:en', 'NG:en', 'NL:nl', 'NO:no', 'NZ:en', 'PE:es-419', 'PH:en', 'PK:en', 'PL:pl', 'PT:pt-150', 'RO:ro', 'RS:sr', 'RU:ru', 'SA:ar', 'SE:sv', 'SG:en', 'SI:sl', 'SK:sk', 'SN:fr', 'TH:th', 'TR:tr', 'TW:zh-Hant', 'TZ:en', 'UA:ru', 'UA:uk', 'UG:en', 'US:en', 'US:es-419', 'VE:es-419', 'VN:vi', 'ZA:en', 'ZW:en']
+

List of region/language combinations supported by Google News. Values of the +ceid argument of the Google News REST API.

+
+ +
+
+

Google Scholar

+

This is the implementation of the Google Scholar engine.

+

Compared to other Google services the Scholar engine has a simple GET REST-API +and there does not exists async API. Even though the API slightly vintage we +can make use of the Google API to assemble the arguments of the GET +request.

+
+
+searx.engines.google_scholar.detect_google_captcha(dom)[source]
+

In case of CAPTCHA Google Scholar open its own not a Robot dialog and is +not redirected to sorry.google.com.

+
+ +
+
+searx.engines.google_scholar.parse_gs_a(text: str | None)[source]
+

Parse the text written in green.

+

Possible formats: +* “{authors} - {journal}, {year} - {publisher}” +* “{authors} - {year} - {publisher}” +* “{authors} - {publisher}”

+
+ +
+
+searx.engines.google_scholar.request(query, params)[source]
+

Google-Scholar search request

+
+ +
+
+searx.engines.google_scholar.response(resp)[source]
+

Parse response from Google Scholar

+
+ +
+
+searx.engines.google_scholar.time_range_args(params)[source]
+

Returns a dictionary with a time range arguments based on +params['time_range'].

+

Google Scholar supports a detailed search by year. Searching by last +month or last week (as offered by SearXNG) is uncommon for scientific +publications and is not supported by Google Scholar.

+

To limit the result list when the users selects a range, all the SearXNG +ranges (day, week, month, year) are mapped to year. If no range +is set an empty dictionary of arguments is returned. Example; when +user selects a time range (current year minus one in 2022):

+
{ 'as_ylo' : 2021 }
+
+
+
+ +
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/lemmy.html b/dev/engines/online/lemmy.html new file mode 100644 index 000000000..1a6b6ba89 --- /dev/null +++ b/dev/engines/online/lemmy.html @@ -0,0 +1,190 @@ + + + + + + + + Lemmy — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Lemmy

+ +

This engine uses the Lemmy API (https://lemmy.ml/api/v3/search), which is +documented at lemmy-js-client / Interface Search. Since Lemmy is +federated, results are from many different, independent lemmy instances, and not +only the official one.

+
+

Configuration

+

The engine has the following additional settings:

+ +

This implementation is used by different lemmy engines in the settings.yml:

+
- name: lemmy communities
+  lemmy_type: Communities
+  ...
+- name: lemmy users
+  lemmy_type: Users
+  ...
+- name: lemmy posts
+  lemmy_type: Posts
+  ...
+- name: lemmy comments
+  lemmy_type: Comments
+  ...
+
+
+
+
+

Implementations

+
+
+
+searx.engines.lemmy.base_url = 'https://lemmy.ml/'
+

By default, https://lemmy.ml is used for providing the results. If you want +to use a different lemmy instance, you can specify base_url.

+
+ +
+
+searx.engines.lemmy.lemmy_type = 'Communities'
+

Any of Communities, Users, Posts, Comments

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/peertube.html b/dev/engines/online/peertube.html new file mode 100644 index 000000000..bff730d59 --- /dev/null +++ b/dev/engines/online/peertube.html @@ -0,0 +1,190 @@ + + + + + + + + Peertube Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Peertube Engines

+ +
+

Peertube Video

+

Peertube and SepiaSearch do share +(more or less) the same REST API and the schema of the JSON result is identical.

+
+
+searx.engines.peertube.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages from peertube’s search-index source code.

+

See videoLanguages in commit 8ed5c729 - Refactor and redesign client

+
+ +
+
+searx.engines.peertube.request(query, params)[source]
+

Assemble request for the Peertube API

+
+ +
+
+searx.engines.peertube.video_response(resp)[source]
+

Parse video response from SepiaSearch and Peertube instances.

+
+ +
+
+searx.engines.peertube.base_url = 'https://peer.tube'
+

Base URL of the Peertube instance. A list of instances is available at:

+ +
+ +
+
+

SepiaSearch

+

SepiaSearch uses the same languages as Peertube and the response is identical to the response from the +peertube engines.

+
+
+searx.engines.sepiasearch.request(query, params)[source]
+

Assemble request for the SepiaSearch API

+
+ +
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/piped.html b/dev/engines/online/piped.html new file mode 100644 index 000000000..469d1c7e8 --- /dev/null +++ b/dev/engines/online/piped.html @@ -0,0 +1,208 @@ + + + + + + + + Piped — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Piped

+ +

An alternative privacy-friendly YouTube frontend which is efficient by +design. Piped’s architecture consists of 3 components:

+ +
+

Configuration

+

The backend_url and frontend_url has to be set in the engine +named piped and are used by all piped engines

+
- name: piped
+  engine: piped
+  piped_filter: videos
+  ...
+  frontend_url: https://..
+  backend_url:
+    - https://..
+    - https://..
+
+- name: piped.music
+  engine: piped
+  network: piped
+  shortcut: ppdm
+  piped_filter: music_songs
+  ...
+
+
+
+
+

Known Quirks

+

The implementation to support paging +is based on the nextpage method of Piped’s REST API / the frontend +API. This feature is next page driven and plays well with the +infinite_scroll setting in SearXNG but it does not really +fit into SearXNG’s UI to select a page by number.

+
+
+

Implementations

+
+
+
+searx.engines.piped.backend_url: list | str = 'https://pipedapi.kavin.rocks'
+

Piped-Backend: The core component behind Piped. The value is an URL or a +list of URLs. In the latter case instance will be selected randomly. For a +complete list of offical instances see Piped-Instances (JSON)

+
+ +
+
+searx.engines.piped.frontend_url: str = 'https://piped.video'
+

Piped-Frontend: URL to use as link and for embeds.

+
+ +
+
+searx.engines.piped.piped_filter = 'all'
+

Content filter music_songs or videos

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/recoll.html b/dev/engines/online/recoll.html new file mode 100644 index 000000000..716710b8e --- /dev/null +++ b/dev/engines/online/recoll.html @@ -0,0 +1,190 @@ + + + + + + + + Recoll Engine — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Recoll Engine

+ + +

Recoll is a desktop full-text search tool based on Xapian. By itself Recoll +does not offer WEB or API access, this can be achieved using recoll-webui

+
+

Configuration

+

You must configure the following settings:

+
+
base_url:

Location where recoll-webui can be reached.

+
+
mount_prefix:

Location where the file hierarchy is mounted on your local filesystem.

+
+
dl_prefix:

Location where the file hierarchy as indexed by recoll can be reached.

+
+
search_dir:

Part of the indexed file hierarchy to be search, if empty the full domain is +searched.

+
+
+
+
+

Example

+

Scenario:

+
    +
  1. Recoll indexes a local filesystem mounted in /export/documents/reference,

  2. +
  3. the Recoll search interface can be reached at https://recoll.example.org/ and

  4. +
  5. the contents of this filesystem can be reached though https://download.example.org/reference

  6. +
+
base_url: https://recoll.example.org/
+mount_prefix: /export/documents
+dl_prefix: https://download.example.org
+search_dir: ''
+
+
+
+
+

Implementations

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/startpage.html b/dev/engines/online/startpage.html new file mode 100644 index 000000000..51f47be29 --- /dev/null +++ b/dev/engines/online/startpage.html @@ -0,0 +1,281 @@ + + + + + + + + Startpage Engines — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Startpage Engines

+ +

Startpage’s language & region selectors are a mess ..

+
+

Startpage regions

+

In the list of regions there are tags we need to map to common region tags:

+
pt-BR_BR --> pt_BR
+zh-CN_CN --> zh_Hans_CN
+zh-TW_TW --> zh_Hant_TW
+zh-TW_HK --> zh_Hant_HK
+en-GB_GB --> en_GB
+
+
+

and there is at least one tag with a three letter language tag (ISO 639-2):

+
fil_PH --> fil_PH
+
+
+

The locale code no_NO from Startpage does not exists and is mapped to +nb-NO:

+
babel.core.UnknownLocaleError: unknown locale 'no_NO'
+
+
+

For reference see languages-subtag at iana; no is the macrolanguage [1] and +W3C recommends subtag over macrolanguage [2].

+ +
+
+

Startpage languages

+
+
send_accept_language_header:

The displayed name in Startpage’s settings page depend on the location of the +IP when Accept-Language HTTP header is unset. In fetch_traits +we use:

+
'Accept-Language': "en-US,en;q=0.5",
+..
+
+
+

to get uniform names independent from the IP).

+
+
+
+
+

Startpage categories

+

Startpage’s category (for Web-search, News, Videos, ..) is set by +startpage_categ in settings.yml:

+
- name: startpage
+  engine: startpage
+  startpage_categ: web
+  ...
+
+
+
+

Hint

+

The default category is web .. and other categories than web are not +yet implemented.

+
+
+
+
+searx.engines.startpage.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages and regions from Startpage.

+
+ +
+
+searx.engines.startpage.get_sc_code(searxng_locale, params)[source]
+

Get an actual sc argument from Startpage’s search form (HTML page).

+

Startpage puts a sc argument on every HTML search form. Without this argument Startpage considers the request +is from a bot. We do not know what is encoded in the value of the sc +argument, but it seems to be a kind of a time-stamp.

+

Startpage’s search form generates a new sc-code on each request. This +function scrap a new sc-code from Startpage’s home page every +sc_code_cache_sec seconds.

+
+ +
+
+searx.engines.startpage.request(query, params)[source]
+

Assemble a Startpage request.

+

To avoid CAPTCHA we need to send a well formed HTTP POST request with a +cookie. We need to form a request that is identical to the request build by +Startpage’s search form:

+
    +
  • in the cookie the region is selected

  • +
  • in the HTTP POST data the language is selected

  • +
+

Additionally the arguments form Startpage’s search form needs to be set in +HTML POST data / compare <input> elements: search_form_xpath.

+
+ +
+
+searx.engines.startpage.sc_code_cache_sec = 30
+

Time in seconds the sc-code is cached in memory get_sc_code.

+
+ +
+
+searx.engines.startpage.search_form_xpath = '//form[@id="search"]'
+

XPath of Startpage’s origin search form

+
+ +
+
+searx.engines.startpage.send_accept_language_header = True
+

Startpage tries to guess user’s language and territory from the HTTP +Accept-Language. Optional the user can select a search-language (can be +different to the UI language) and a region filter.

+
+ +
+
+searx.engines.startpage.startpage_categ = 'web'
+

Startpage’s category, visit Startpage categories.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/tagesschau.html b/dev/engines/online/tagesschau.html new file mode 100644 index 000000000..6ef472a51 --- /dev/null +++ b/dev/engines/online/tagesschau.html @@ -0,0 +1,146 @@ + + + + + + + + Tagesschau API — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Tagesschau API

+

ARD: Tagesschau API

+

The Tagesschau is a news program of the ARD. Via the Tagesschau API, current +news and media reports are available in JSON format. The Bundesstelle für Open +Data offers a OpenAPI portal at bundDEV where APIs are documented an can +be tested.

+

This SearXNG engine uses the /api2u/search API.

+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/torznab.html b/dev/engines/online/torznab.html new file mode 100644 index 000000000..37c2f0b63 --- /dev/null +++ b/dev/engines/online/torznab.html @@ -0,0 +1,212 @@ + + + + + + + + Torznab WebAPI — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Torznab WebAPI

+ +

Torznab is an API specification that provides a standardized way to query +torrent site for content. It is used by a number of torrent applications, +including Prowlarr and Jackett.

+

Using this engine together with Prowlarr or Jackett allows you to search +a huge number of torrent sites which are not directly supported.

+
+

Configuration

+

The engine has the following settings:

+
+
base_url:

Torznab endpoint URL.

+
+
api_key:

The API key to use for authentication.

+
+
torznab_categories:

The categories to use for searching. This is a list of category IDs. See +Prowlarr-categories or Jackett-categories for more information.

+
+
show_torrent_files:

Whether to show the torrent file in the search results. Be carful as using +this with Prowlarr or Jackett leaks the API key. This should be used only +if you are querying a Torznab endpoint without authentication or if the +instance is private. Be aware that private trackers may ban you if you share +the torrent file. Defaults to false.

+
+
show_magnet_links:

Whether to show the magnet link in the search results. Be aware that private +trackers may ban you if you share the magnet link. Defaults to true.

+
+
+
+
+

Implementations

+
+
+
+searx.engines.torznab.build_result(item: Element) Dict[str, Any][source]
+

Build a result from a XML item.

+
+ +
+
+searx.engines.torznab.get_attribute(item: etree.Element, property_name: str) str | None[source]
+

Get attribute from item.

+
+ +
+
+searx.engines.torznab.get_torznab_attribute(item: etree.Element, attribute_name: str) str | None[source]
+

Get torznab special attribute from item.

+
+ +
+
+searx.engines.torznab.init(engine_settings=None)[source]
+

Initialize the engine.

+
+ +
+
+searx.engines.torznab.request(query: str, params: Dict[str, Any]) Dict[str, Any][source]
+

Build the request params.

+
+ +
+
+searx.engines.torznab.response(resp: httpx.Response) List[Dict[str, Any]][source]
+

Parse the XML response and return a list of results.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/wikipedia.html b/dev/engines/online/wikipedia.html new file mode 100644 index 000000000..577cf61c5 --- /dev/null +++ b/dev/engines/online/wikipedia.html @@ -0,0 +1,299 @@ + + + + + + + + Wikimedia — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Wikimedia

+ +
+

Wikipedia

+

This module implements the Wikipedia engine. Some of this implementations +are shared by other engines:

+ +

The list of supported languages is fetched from +the article linked by list_of_wikipedias.

+

Unlike traditional search engines, wikipedia does not support one Wikipedia for +all languages, but there is one Wikipedia for each supported language. Some of +these Wikipedias have a LanguageConverter enabled +(rest_v1_summary_url).

+

A LanguageConverter (LC) is a system based on language variants that +automatically converts the content of a page into a different variant. A variant +is mostly the same language in a different script.

+ +
+
PR-2554:

The Wikipedia link returned by the API is still the same in all cases +(https://zh.wikipedia.org/wiki/出租車) but if your browser’s +Accept-Language is set to any of zh, zh-CN, zh-TW, zh-HK +or .. Wikipedia’s LC automatically returns the desired script in their +web-page.

+ +
+
+

To support Wikipedia’s LanguageConverter, a SearXNG request to Wikipedia uses +get_wiki_params and wiki_lc_locale_variants' in the +:py:obj:`fetch_wikimedia_traits function.

+

To test in SearXNG, query for !wp 出租車 with each of the available Chinese +options:

+
    +
  • !wp 出租車 :zh should show 出租車

  • +
  • !wp 出租車 :zh-CN should show 出租车

  • +
  • !wp 出租車 :zh-TW should show 計程車

  • +
  • !wp 出租車 :zh-HK should show 的士

  • +
  • !wp 出租車 :zh-SG should show 德士

  • +
+
+
+searx.engines.wikipedia.fetch_wikimedia_traits(engine_traits: EngineTraits)[source]
+

Fetch languages from Wikipedia. Not all languages from the +list_of_wikipedias are supported by SearXNG locales, only those +known from searx.locales.LOCALE_NAMES or those with a minimal +editing depth.

+

The location of the Wikipedia address of a language is mapped in a +custom field +(wiki_netloc). Here is a reduced example:

+
traits.custom['wiki_netloc'] = {
+    "en": "en.wikipedia.org",
+    ..
+    "gsw": "als.wikipedia.org",
+    ..
+    "zh": "zh.wikipedia.org",
+    "zh-classical": "zh-classical.wikipedia.org"
+}
+
+
+
+ +
+
+searx.engines.wikipedia.get_wiki_params(sxng_locale, eng_traits)[source]
+

Returns the Wikipedia language tag and the netloc that fits to the +sxng_locale. To support LanguageConverter this function rates a locale +(region) higher than a language (compare wiki_lc_locale_variants).

+
+ +
+
+searx.engines.wikipedia.request(query, params)[source]
+

Assemble a request (wikipedia rest_v1 summary API).

+
+ +
+
+searx.engines.wikipedia.list_of_wikipedias = 'https://meta.wikimedia.org/wiki/List_of_Wikipedias'
+

List of all wikipedias

+
+ +
+
+searx.engines.wikipedia.rest_v1_summary_url = 'https://{wiki_netloc}/api/rest_v1/page/summary/{title}'
+
+
wikipedia rest_v1 summary API:

The summary response includes an extract of the first paragraph of the page in +plain text and HTML as well as the type of page. This is useful for page +previews (fka. Hovercards, aka. Popups) on the web and link previews in the +apps.

+
+
HTTP Accept-Language header (send_accept_language_header):

The desired language variant code for wikis where LanguageConverter is +enabled.

+
+
+
+ +
+
+searx.engines.wikipedia.send_accept_language_header = True
+

The HTTP Accept-Language header is needed for wikis where +LanguageConverter is enabled.

+
+ +
+
+searx.engines.wikipedia.wiki_lc_locale_variants = {'zh': ('zh-CN', 'zh-HK', 'zh-MO', 'zh-MY', 'zh-SG', 'zh-TW'), 'zh-classical': ('zh-classical',)}
+

Mapping rule of the LanguageConverter to map a language and its variants to +a Locale (used in the HTTP Accept-Language header). For example see LC +Chinese.

+
+ +
+
+searx.engines.wikipedia.wikipedia_article_depth = 'https://meta.wikimedia.org/wiki/Wikipedia_article_depth'
+

The editing depth of Wikipedia is one of several possible rough indicators +of the encyclopedia’s collaborative quality, showing how frequently its articles +are updated. The measurement of depth was introduced after some limitations of +the classic measurement of article count were realized.

+
+ +
+
+

Wikidata

+

This module implements the Wikidata engine. Some implementations are shared +from Wikipedia.

+
+
+searx.engines.wikidata.fetch_traits(engine_traits: EngineTraits)[source]
+

Uses languages evaluated from wikipedia.fetch_wikimedia_traits and removes

+
    +
  • traits.custom['wiki_netloc']: wikidata does not have net-locations for +the languages and the list of all

  • +
  • traits.custom['WIKIPEDIA_LANGUAGES']: not used in the wikipedia engine

  • +
+
+ +
+
+searx.engines.wikidata.get_thumbnail(img_src)[source]
+

Get Thumbnail image from wikimedia commons

+

Images from commons.wikimedia.org are (HTTP) redirected to +upload.wikimedia.org. The redirected URL can be calculated by this +function.

+ +
+ +
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/yacy.html b/dev/engines/online/yacy.html new file mode 100644 index 000000000..0009614e8 --- /dev/null +++ b/dev/engines/online/yacy.html @@ -0,0 +1,186 @@ + + + + + + + + Yacy — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Yacy

+ +

YaCy is a free distributed search engine, built on the principles of +peer-to-peer (P2P) networks.

+

API: Dev:APIyacysearch

+

Releases:

+ +
+

Configuration

+

The engine has the following (additional) settings:

+
- name: yacy
+  engine: yacy
+  shortcut: ya
+  base_url: http://localhost:8090
+  # Yacy search mode. 'global' or 'local'.
+  search_mode: 'global'
+  number_of_results: 5
+  http_digest_auth_user: ""
+  http_digest_auth_pass: ""
+
+
+
+
+

Implementations

+
+
+
+searx.engines.yacy.search_mode = 'global'
+

Yacy search mode global or local. By default, Yacy operates in global +mode.

+
+
global

Peer-to-Peer search

+
+
local

Privacy or Stealth mode, restricts the search to local yacy instance.

+
+
+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/yahoo.html b/dev/engines/online/yahoo.html new file mode 100644 index 000000000..889afdc0c --- /dev/null +++ b/dev/engines/online/yahoo.html @@ -0,0 +1,173 @@ + + + + + + + + Yahoo Engine — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Yahoo Engine

+

Yahoo Search (Web)

+

Languages are supported by mapping the language to a domain. If domain is not +found in lang2domain URL <lang>.search.yahoo.com is used.

+
+
+searx.engines.yahoo.fetch_traits(engine_traits: EngineTraits)[source]
+

Fetch languages from yahoo

+
+ +
+
+searx.engines.yahoo.parse_url(url_string)[source]
+

remove yahoo-specific tracking-url

+
+ +
+
+searx.engines.yahoo.request(query, params)[source]
+

build request

+
+ +
+
+searx.engines.yahoo.response(resp)[source]
+

parse response

+
+ +
+
+searx.engines.yahoo.lang2domain = {'any': 'search.yahoo.com', 'bg': 'search.yahoo.com', 'cs': 'search.yahoo.com', 'da': 'search.yahoo.com', 'el': 'search.yahoo.com', 'en': 'search.yahoo.com', 'et': 'search.yahoo.com', 'he': 'search.yahoo.com', 'hr': 'search.yahoo.com', 'ja': 'search.yahoo.com', 'ko': 'search.yahoo.com', 'sk': 'search.yahoo.com', 'sl': 'search.yahoo.com', 'zh_chs': 'hk.search.yahoo.com', 'zh_cht': 'tw.search.yahoo.com'}
+

Map language to domain

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online/zlibrary.html b/dev/engines/online/zlibrary.html new file mode 100644 index 000000000..73499614a --- /dev/null +++ b/dev/engines/online/zlibrary.html @@ -0,0 +1,205 @@ + + + + + + + + Z-Library — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Z-Library

+ +

Z-Library (abbreviated as z-lib, formerly BookFinder) is a shadow library +project for file-sharing access to scholarly journal articles, academic texts +and general-interest books. It began as a mirror of Library Genesis, from which +most of its books originate.

+
+

Configuration

+

The engine has the following additional settings:

+ +

With this options a SearXNG maintainer is able to configure additional +engines for specific searches in Z-Library. For example a engine to search +only for EPUB from 2010 to 2020.

+
- name: z-library 2010s epub
+  engine: zlibrary
+  shortcut: zlib2010s
+  zlib_year_from: '2010'
+  zlib_year_to: '2020'
+  zlib_ext: 'EPUB'
+
+
+
+
+

Implementations

+
+
+
+searx.engines.zlibrary.fetch_traits(engine_traits: EngineTraits) None[source]
+

Fetch languages and other search arguments from zlibrary’s search form.

+
+ +
+
+searx.engines.zlibrary.init(engine_settings=None) None[source]
+

Check of engine’s settings.

+
+ +
+
+searx.engines.zlibrary.zlib_ext: str = ''
+

Filter z-library’s results by a file ending. Common filters for example are +PDF and EPUB.

+
+ +
+
+searx.engines.zlibrary.zlib_year_from: str = ''
+

Filter z-library’s results by year from. E.g ‘2010’.

+
+ +
+
+searx.engines.zlibrary.zlib_year_to: str = ''
+

Filter z-library’s results by year to. E.g. ‘2010’.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/online_url_search/tineye.html b/dev/engines/online_url_search/tineye.html new file mode 100644 index 000000000..8940849ba --- /dev/null +++ b/dev/engines/online_url_search/tineye.html @@ -0,0 +1,215 @@ + + + + + + + + Tineye — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Tineye

+

This engine implements Tineye - reverse image search

+

Using TinEye, you can search by image or perform what we call a reverse image +search. You can do that by uploading an image or searching by URL. You can also +simply drag and drop your images to start your search. TinEye constantly crawls +the web and adds images to its index. Today, the TinEye index is over 50.2 +billion images [tineye.com].

+
+

Hint

+

This SearXNG engine only supports ‘searching by URL’ and it does not use +the official API [api.tineye.com].

+
+
+
+searx.engines.tineye.parse_tineye_match(match_json)[source]
+

Takes parsed JSON from the API server and turns it into a dict +object.

+

Attributes (class Match)

+
    +
  • image_url, link to the result image.

  • +
  • domain, domain this result was found on.

  • +
  • score, a number (0 to 100) that indicates how closely the images match.

  • +
  • width, image width in pixels.

  • +
  • height, image height in pixels.

  • +
  • size, image area in pixels.

  • +
  • format, image format.

  • +
  • filesize, image size in bytes.

  • +
  • overlay, overlay URL.

  • +
  • tags, whether this match belongs to a collection or stock domain.

  • +
  • backlinks, a list of Backlink objects pointing to the original websites +and image URLs. List items are instances of dict, (Backlink):

    +
      +
    • url, the image URL to the image.

    • +
    • backlink, the original website URL.

    • +
    • crawl_date, the date the image was crawled.

    • +
    +
  • +
+
+ +
+
+searx.engines.tineye.request(query, params)[source]
+

Build TinEye HTTP request using search_urls of a engine_type.

+
+ +
+
+searx.engines.tineye.response(resp)[source]
+

Parse HTTP response from TinEye.

+
+ +
+
+searx.engines.tineye.DOWNLOAD_ERROR = 'The image could not be downloaded.'
+

TinEye error message

+
+ +
+
+searx.engines.tineye.FORMAT_NOT_SUPPORTED = 'Could not read that image url. This may be due to an unsupported file format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or WebP.'
+

TinEye error message

+
+ +
+
+searx.engines.tineye.NO_SIGNATURE_ERROR = 'The image is too simple to find matches. TinEye requires a basic level of visual detail to successfully identify matches.'
+

TinEye error message

+
+ +
+
+searx.engines.tineye.engine_type = 'online_url_search'
+

searx.search.processors.online_url_search

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/engines/xpath.html b/dev/engines/xpath.html new file mode 100644 index 000000000..8286b20e7 --- /dev/null +++ b/dev/engines/xpath.html @@ -0,0 +1,389 @@ + + + + + + + + XPath Engine — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

XPath Engine

+ +

The XPath engine is a generic engine with which it is possible to configure +engines in the settings.

+
+

Configuration

+

Request:

+ +

Paging:

+ +

Time Range:

+ +

Safe-Search:

+ +

Response:

+ +

XPath selector:

+ +
+
+

Example

+

Here is a simple example of a XPath engine configured in the engine: section, further read Engine Overview.

+
- name : bitbucket
+  engine : xpath
+  paging : True
+  search_url : https://bitbucket.org/repo/all/{pageno}?name={query}
+  url_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]/@href
+  title_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]
+  content_xpath : //article[@class="repo-summary"]/p
+
+
+
+
+

Implementations

+
+
+
+searx.engines.xpath.request(query, params)[source]
+

Build request parameters (see Making a Request).

+
+ +
+
+searx.engines.xpath.response(resp)[source]
+

Scrap results from the response (see Result Types (template)).

+
+ +
+
+searx.engines.xpath.content_xpath = None
+

XPath selector of result’s content.

+
+ +
+
+searx.engines.xpath.cookies = {}
+

Some engines might offer different result based on cookies. +Possible use-case: To set safesearch cookie.

+
+ +
+
+searx.engines.xpath.first_page_num = 1
+

Number of the first page (usually 0 or 1).

+
+ +
+
+searx.engines.xpath.headers = {}
+

Some engines might offer different result based headers. Possible use-case: +To set header to moderate.

+
+ +
+
+searx.engines.xpath.lang_all = 'en'
+

Replacement {lang} in search_url if language all is +selected.

+
+ +
+
+searx.engines.xpath.no_result_for_http_status = []
+

Return empty result for these HTTP status codes instead of throwing an error.

+
no_result_for_http_status: []
+
+
+
+ +
+
+searx.engines.xpath.page_size = 1
+

Number of results on each page. Only needed if the site requires not a page +number, but an offset.

+
+ +
+
+searx.engines.xpath.paging = False
+

Engine supports paging [True or False].

+
+ +
+
+searx.engines.xpath.results_xpath = ''
+

XPath selector for the list of result items

+
+ +
+
+searx.engines.xpath.safe_search_map = {0: '&filter=none', 1: '&filter=moderate', 2: '&filter=strict'}
+

Maps safe-search value to {safe_search} in search_url.

+
safesearch: true
+safes_search_map:
+  0: '&filter=none'
+  1: '&filter=moderate'
+  2: '&filter=strict'
+
+
+
+ +
+
+searx.engines.xpath.safe_search_support = False
+

Engine supports safe-search.

+
+ +
+
+searx.engines.xpath.search_url = None
+

Search URL of the engine. Example:

+
https://example.org/?search={query}&page={pageno}{time_range}{safe_search}
+
+
+

Replacements are:

+
+
{query}:

Search terms from user.

+
+
{pageno}:

Page number if engine supports pagging paging

+
+
{lang}:

ISO 639-1 language code (en, de, fr ..)

+
+
{time_range}:

URL parameter if engine supports time +range. The value for the parameter is taken from +time_range_map.

+
+
{safe_search}:

Safe-search URL parameter if engine +supports safe-search. The {safe_search} +replacement is taken from the safes_search_map. Filter results:

+
0: none, 1: moderate, 2:strict
+
+
+

If not supported, the URL parameter is an empty string.

+
+
+
+ +
+
+searx.engines.xpath.soft_max_redirects = 0
+

Maximum redirects, soft limit. Record an error but don’t stop the engine

+
+ +
+
+searx.engines.xpath.suggestion_xpath = ''
+

XPath selector of result’s suggestion.

+
+ +
+
+searx.engines.xpath.thumbnail_xpath = False
+

XPath selector of result’s img_src.

+
+ +
+
+searx.engines.xpath.time_range_map = {'day': 24, 'month': 720, 'week': 168, 'year': 8760}
+

Maps time range value from user to {time_range_val} in +time_range_url.

+
time_range_map:
+  day: 1
+  week: 7
+  month: 30
+  year: 365
+
+
+
+ +
+
+searx.engines.xpath.time_range_support = False
+

Engine supports search time range.

+
+ +
+
+searx.engines.xpath.time_range_url = '&hours={time_range_val}'
+

Time range URL parameter in the in search_url. If no time range is +requested by the user, the URL parameter is an empty string. The +{time_range_val} replacement is taken from the time_range_map.

+
time_range_url : '&days={time_range_val}'
+
+
+
+ +
+
+searx.engines.xpath.title_xpath = None
+

XPath selector of result’s title.

+
+ +
+
+searx.engines.xpath.url_xpath = None
+

XPath selector of result’s url.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/index.html b/dev/index.html new file mode 100644 index 000000000..adc49b2e5 --- /dev/null +++ b/dev/index.html @@ -0,0 +1,211 @@ + + + + + + + + Developer documentation — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/lxcdev.html b/dev/lxcdev.html new file mode 100644 index 000000000..77929b8b3 --- /dev/null +++ b/dev/lxcdev.html @@ -0,0 +1,455 @@ + + + + + + + + Developing in Linux Containers — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

Developing in Linux Containers

+

In this article we will show, how you can make use of Linux Containers (LXC) in +distributed and heterogeneous development cycles (TL;DR; jump to the +Summary).

+ + +
+

Motivation

+

Most often in our development cycle, we edit the sources and run some test +and/or builds by using make [ref] before we commit. This +cycle is simple and perfect but might fail in some aspects we should not +overlook.

+
+

The environment in which we run all our development processes matters!

+
+

The Makefile & ./manage and the Python environment (make install) encapsulate a lot for us, but +these tools do not have access to all prerequisites. For example, there may +have dependencies on packages that are installed on developer’s desktop, but +usually are not preinstalled on a server or client system. Another example is; +settings have been made to the software on developer’s desktop that would never +be set on a production system.

+
+

Linux Containers are isolate environments, we use them to not mix up all +the prerequisites from various projects on developer’s desktop.

+
+

The scripts from DevOps tooling box can divide in those to install and maintain +software

+ +

and the script

+ +

with we can scale our installation, maintenance or even development tasks over a +stack of isolated containers / what we call the:

+ +
+
+

Gentlemen, start your engines!

+

Before you can start with containers, you need to install and initiate LXD +once:

+
+
$ snap install lxd
+$ lxd init --auto
+
+
+
+

And you need to clone from origin or if you have your own fork, clone from your +fork:

+
+
$ cd ~/Downloads
+$ git clone https://github.com/searxng/searxng.git searxng
+$ cd searxng
+
+
+
+ +

The SearXNG suite config consists of several images, see export +LXC_SUITE=(... near by git://utils/lxc-searxng.env#L19. +For this blog post we exercise on a archlinux image. The container of this +image is named searxng-archlinux.

+

Lets build the container, but be sure that this container does not already +exists, so first lets remove possible old one:

+
+
$ sudo -H ./utils/lxc.sh remove searxng-archlinux
+$ sudo -H ./utils/lxc.sh build searxng-archlinux
+
+
+
+ +

To install the complete SearXNG suite and the HTTP +proxy NGINX into the archlinux container run:

+
+
$ sudo -H ./utils/lxc.sh install suite searxng-archlinux
+$ sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/searxng.sh install nginx
+$ sudo ./utils/lxc.sh show suite | grep SEARXNG_URL
+...
+[searxng-archlinux]    SEARXNG_URL          : http://n.n.n.140/searxng
+
+
+
+ +

In such a SearXNG suite admins can maintain and access the debug log of the +services quite easy.

+

In the example above the SearXNG instance in the container is wrapped to +http://n.n.n.140/searxng to the HOST system. Note, on your HOST system, the +IP of your searxng-archlinux container is different to this example. To +test the instance in the conatiner from outside of the container, in your WEB +browser on your desktop just open the URL reported in your installation

+
+
+

In containers, work as usual

+

Usually you open a root-bash using sudo -H bash. In case of LXC containers +open the root-bash in the container is done by the ./utils/lxc.sh cmd +searxng-archlinux command:

+
+
$ sudo -H ./utils/lxc.sh cmd searxng-archlinux bash
+INFO:  [searxng-archlinux] bash
+[root@searxng-archlinux SearXNG]$
+
+
+
+

The prompt [root@searxng-archlinux ...] signals, that you are the root user +in the container (GUEST). To debug the running SearXNG instance use:

+
+
$ ./utils/searxng.sh instance inspect
+...
+use [CTRL-C] to stop monitoring the log
+...
+
+
+
+

Back in the browser on your desktop open the service http://n.n.n.140/searxng +and run your application tests while the debug log is shown in the terminal from +above. You can stop monitoring using CTRL-C, this also disables the “debug +option” in SearXNG’s settings file and restarts the SearXNG uwsgi application.

+

Another point we have to notice is that the service SearXNG +runs under dedicated system user account with the same name (compare +Create user). To get a login shell from these accounts, simply +call:

+
+
$ ./utils/searxng.sh instance cmd bash -l
+(searx-pyenv) [searxng@searxng-archlinux ~]$ pwd
+/usr/local/searxng
+
+
+
+

The prompt [searxng@searxng-archlinux] signals that you are logged in as system +user searxng in the searxng-archlinux container and the python virtualenv +(searxng-pyenv) environment is activated.

+
+
+

Wrap production into developer suite

+

In this section we will see how to change the “Fully functional SearXNG suite” +from a LXC container (which is quite ready for production) into a developer +suite. For this, we have to keep an eye on the Step by step installation:

+
    +
  • SearXNG setup in: /etc/searxng/settings.yml

  • +
  • SearXNG user’s home: /usr/local/searxng

  • +
  • virtualenv in: /usr/local/searxng/searxng-pyenv

  • +
  • SearXNG software in: /usr/local/searxng/searxng-src

  • +
+

With the use of the utils/searxng.sh the SearXNG service was installed as +uWSGI application. To maintain this service, we can use +systemctl (compare uWSGI maintenance).

+
+
$ sudo -H ./utils/lxc.sh cmd searxng-archlinux systemctl stop uwsgi@searxng
+
+
+
+

With the command above, we stopped the SearXNG uWSGI-App in the archlinux +container.

+

The uWSGI-App for the archlinux dsitros is configured in +git://utils/templates/etc/uwsgi/apps-archlinux/searxng.ini, from where at +least you should attend the settings of uid, chdir, env and +http:

+
env = SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml
+http = 127.0.0.1:8888
+
+chdir = /usr/local/searxng/searxng-src/searx
+virtualenv = /usr/local/searxng/searxng-pyenv
+pythonpath = /usr/local/searxng/searxng-src
+
+
+

If you have read the Good to know you remember, that each container +shares the root folder of the repository and the command utils/lxc.sh cmd +handles relative path names transparent.

+

To wrap the SearXNG installation in the container into a developer one, we +simple have to create a smylink to the transparent reposetory from the +desktop. Now lets replace the repository at searxng-src in the container +with the working tree from outside of the container:

+
+
$ mv /usr/local/searxng/searxng-src  /usr/local/searxng/searxng-src.old
+$ ln -s /share/SearXNG/ /usr/local/searxng/searxng-src
+
+
+
+

Now we can develop as usual in the working tree of our desktop system. Every +time the software was changed, you have to restart the SearXNG service (in the +container):

+
+
$ sudo -H ./utils/lxc.sh cmd searxng-archlinux systemctl restart uwsgi@searxng
+
+
+
+

Remember: In containers, work as usual .. here are just some examples from my +daily usage:

+

To inspect the SearXNG instance (already described above):

+
+
$ ./utils/searx.sh inspect service
+
+
+
+

Run Makefile & ./manage, e.g. to test inside the container:

+
+
$ make test
+
+
+
+

To install all prerequisites needed for a Buildhosts:

+
+
$ ./utils/searxng.sh install buildhost
+
+
+
+

To build the docs on a buildhost Buildhosts:

+
+
$ make docs.html
+
+
+
+
+
+

Summary

+

We build up a fully functional SearXNG suite in a archlinux container:

+
$ sudo -H ./utils/lxc.sh build searxng-archlinux
+$ sudo -H ./utils/lxc.sh install suite searxng-archlinux
+...
+Developer install? (wraps source from HOST into the running instance) [YES/no]
+
+
+

To wrap the suite into a developer one answer YES (or press Enter).

+
link SearXNG's sources to: /share/SearXNG
+=========================================
+
+mv -f "/usr/local/searxng/searxng-src" "/usr/local/searxng/searxng-src.backup"
+ln -s "/share/SearXNG" "/usr/local/searxng/searxng-src"
+ls -ld /usr/local/searxng/searxng-src
+  |searxng| lrwxrwxrwx 1 searxng searxng ... /usr/local/searxng/searxng-src -> /share/SearXNG
+
+
+

On code modification the instance has to be restarted (see uWSGI maintenance):

+
$ sudo -H ./utils/lxc.sh cmd searxng-archlinux systemctl restart uwsgi@searxng
+
+
+

To access HTTP from the desktop we installed nginx for the services inside the +container:

+
$ sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/searxng.sh install nginx
+
+
+

To get information about the SearxNG suite in the archlinux container we can +use:

+
$ sudo -H ./utils/lxc.sh show suite searxng-archlinux
+[searxng-archlinux]  INFO:  (eth0) docs-live:  http:///n.n.n.140:8080/
+[searxng-archlinux]  INFO:  (eth0) IPv6:       http://[fd42:555b:2af9:e121:216:3eff:fe5b:1744]
+[searxng-archlinux]  uWSGI:
+[searxng-archlinux]    SEARXNG_UWSGI_SOCKET : /usr/local/searxng/run/socket
+[searxng-archlinux]  environment /usr/local/searxng/searxng-src/utils/brand.env:
+[searxng-archlinux]    GIT_URL              : https://github.com/searxng/searxng
+[searxng-archlinux]    GIT_BRANCH           : master
+[searxng-archlinux]    SEARXNG_URL          : http:///n.n.n.140/searxng
+[searxng-archlinux]    SEARXNG_PORT         : 8888
+[searxng-archlinux]    SEARXNG_BIND_ADDRESS : 127.0.0.1
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/makefile.html b/dev/makefile.html new file mode 100644 index 000000000..574eb68b0 --- /dev/null +++ b/dev/makefile.html @@ -0,0 +1,625 @@ + + + + + + + + Makefile & ./manage — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + +
+
+
+
+ +
+

Makefile & ./manage

+

All relevant build and development tasks are implemented in the +./manage script and for CI or IDE integration a small +git://Makefile wrapper is available. If you are not familiar with +Makefiles, we recommend to read gnu-make introduction.

+ + +

The usage is simple, just type make {target-name} to build a target. +Calling the help target gives a first overview (make help):

+
+
INFO:  sourced NVM environment from /home/runner/.nvm
+nvm.: use nvm (without dot) to execute nvm commands directly
+  install   : install NVM locally at /home/runner/work/searxng/searxng/.nvm
+  clean     : remove NVM installation
+  status    : prompt some status informations about nvm & node
+  nodejs    : install Node.js latest LTS
+  cmd ...   : run command ... in NVM environment
+  bash      : start bash interpreter with NVM environment sourced
+buildenv:
+  rebuild ./utils/brand.env
+webapp.:
+  run       : run developer instance
+docs.:
+  html      : build HTML documentation
+  live      : autobuild HTML documentation while editing
+  gh-pages  : deploy on gh-pages branch
+  prebuild  : build reST include files (./build/docs/includes)
+  clean     : clean documentation build
+docker.:
+  build     : build docker image
+  push      : build and push docker image
+gecko.driver:
+  download & install geckodriver if not already installed (required for
+  robot_tests)
+redis:
+  build     : build redis binaries at /home/runner/work/searxng/searxng/dist/redis/6.2.6/amd64
+  install   : create user (searxng-redis) and install systemd service (searxng-redis)
+  help      : show more redis commands
+py.:
+  build     : Build python packages at ./dist
+  clean     : delete virtualenv and intermediate py files
+pyenv.:
+  install   : developer install of SearXNG into virtualenv
+  uninstall : uninstall developer installation
+  cmd ...   : run command ... in virtualenv
+  OK        : test if virtualenv is OK
+pypi.upload:
+  Upload python packages to PyPi (to test use pypi.upload.test)
+format.:
+  python    : format Python code source using black
+pygments.:
+  less      : build LESS files for pygments
+go.:
+  ls        : list golang binary archives (stable)
+  golang    : (re-) install golang binary in user's $HOME/local folder
+  install   : install go package in user's $HOME/go-apps folder
+  bash      : start bash interpreter with golang environment sourced
+node.:
+  env       : download & install SearXNG's npm dependencies locally
+  env.dev   : download & install developer and CI tools
+  clean     : drop locally npm installations
+weblate.:
+  push.translations: push translation changes from SearXNG to Weblate's counterpart
+  to.translations: Update 'translations' branch with last additions from Weblate.
+data.:
+  all       : update searx/sxng_locales.py and searx/data/*
+  traits    : update searx/data/engine_traits.json & searx/sxng_locales.py
+  useragents: update searx/data/useragents.json with the most recent versions of Firefox
+test.:
+  yamllint  : lint YAML files (YAMLLINT_FILES)
+  pylint    : lint PYLINT_FILES, searx/engines, searx & tests
+  pyright   : static type check of python sources
+  black     : check black code format
+  unit      : run unit tests
+  coverage  : run unit tests with coverage
+  robot     : run robot test
+  rst       : test .rst files incl. README.rst
+  clean     : clean intermediate test stuff
+themes.:
+  all       : build all themes
+  live      : to get live builds of CSS & JS use 'LIVE_THEME=simple make run'
+  simple.:
+    build   : build simple theme
+    test    : test simple theme
+static.build.:  [build] /static
+  commit    : build & commit /static folder
+  drop      : drop last commit if it was previously done by static.build.commit
+  restore   : git restore of the /static folder (after themes.all)
+environment ...
+  SEARXNG_REDIS_URL : 
+----
+run            - run developer instance
+install        - developer install of SearxNG into virtualenv
+uninstall      - uninstall developer installation
+clean          - clean up working tree
+search.checker - check search engines
+test           - run shell & CI tests
+test.shell     - test shell scripts
+ci.test        - run CI tests
+
+
+
+
+

Python environment (make install)

+ +

We do no longer need to build up the virtualenv manually. Jump into your git +working tree and release a make install to get a virtualenv with a +developer install of SearXNG (git://setup.py).

+
$ cd ~/searxng-clone
+$ make install
+PYENV     [virtualenv] installing ./requirements*.txt into local/py3
+...
+PYENV     OK
+PYENV     [install] pip install -e 'searx[test]'
+...
+Successfully installed argparse-1.4.0 searx
+BUILDENV  INFO:searx:load the default settings from ./searx/settings.yml
+BUILDENV  INFO:searx:Initialisation done
+BUILDENV  build utils/brand.env
+
+
+

If you release make install multiple times the installation will only +rebuild if the sha256 sum of the requirement files fails. With other words: +the check fails if you edit the requirements listed in +git://requirements-dev.txt and git://requirements.txt).

+
$ make install
+PYENV     OK
+PYENV     [virtualenv] requirements.sha256 failed
+          [virtualenv] - 6cea6eb6def9e14a18bf32f8a3e...  ./requirements-dev.txt
+          [virtualenv] - 471efef6c73558e391c3adb35f4...  ./requirements.txt
+...
+PYENV     [virtualenv] installing ./requirements*.txt into local/py3
+...
+PYENV     OK
+PYENV     [install] pip install -e 'searx[test]'
+...
+Successfully installed argparse-1.4.0 searx
+BUILDENV  INFO:searx:load the default settings from ./searx/settings.yml
+BUILDENV  INFO:searx:Initialisation done
+BUILDENV  build utils/brand.env
+
+
+ +

If you think, something goes wrong with your ./local environment or you change +the git://setup.py file, you have to call make clean.

+
+
+

make buildenv

+

Rebuild instance’s environment with the modified settings from the +brand: and server: section of your +settings.yml.

+
+

What is the git://utils/brand.env needed for and why do you need to rebuild +it if necessary?

+

Short answer: installation and maintenance +scripts are running outside of instance’s runtime environment and need some +values defined in the runtime environment.

+
+

All the SearXNG setups are centralized in the settings.yml file. This +setup is available as long we are in a installed instance. E.g. the +installed instance on the server or the installed developer instance at +./local (the later one is created by a make install or +make run).

+

Tasks running outside of an installed instance, especially installation +and maintenance tasks running at (pre-) installation time +do not have access to the SearXNG setup (from a installed instance). Those +tasks need a build environment.

+

The make buildenv target will update the build environment in:

+ +

Tasks running outside of an installed instance, need the following settings +from the YAML configuration:

+ +

The GIT_URL and GIT_BRANCH in the origin:utils/brand.env file, are +readed from the git VCS and the branch that is checked out when make +buildenv command runs.

+

I would like to create my own brand, how should I proceed?

+

Create a remote branch (example.org), checkout the remote branch (on your +local developer desktop) and in the git://searx/settings.yml file in the +server: section set base_url. Run make buildenv and +create a commit for your brand.

+

On your server you clone the branch (example.org) into your HOME folder +~ from where you run the installation and +maintenance task.

+

To upgrade you brand, rebase on SearXNG’s master branch (on your local +developer desktop), force push it to your remote branch. Go to your server, do +a force pull and run sudo -H ./utils/searxng.sh instance update.

+
+
+

Node.js environment (make node.env)

+

Node.js version 16.13.0 or higher is required to build the themes. +If the requirement is not met, the build chain uses nvm (Node Version +Manager) to install latest LTS of Node.js locally: there is no need to +install nvm or npm on your system.

+

To install NVM and Node.js in once you can use make nvm.nodejs.

+
+

NVM make nvm.install nvm.status

+

Use make nvm.status to get the current status of your Node.js and nvm +setup.

+
+
$ LANG=C make nvm.install
+INFO:  install (update) NVM at ./searxng/.nvm
+INFO:  clone: https://github.com/nvm-sh/nvm.git
+  || Cloning into './searxng/.nvm'...
+INFO:  checkout v0.39.4
+  || HEAD is now at 8fbf8ab v0.39.4
+
+
+
+
+
+

make nvm.nodejs

+

Install latest Node.js LTS locally (uses nvm):

+
$ make nvm.nodejs
+INFO:  install (update) NVM at /share/searxng/.nvm
+INFO:  clone: https://github.com/nvm-sh/nvm.git
+...
+Downloading and installing node v16.13.0...
+...
+INFO:  Node.js is installed at searxng/.nvm/versions/node/v16.13.0/bin/node
+INFO:  Node.js is version v16.13.0
+INFO:  npm is installed at searxng/.nvm/versions/node/v16.13.0/bin/npm
+INFO:  npm is version 8.1.0
+INFO:  NVM is installed at searxng/.nvm
+
+
+
+
+
+

make run

+

To get up a running a developer instance simply call make run. This enables +debug option in git://searx/settings.yml, starts a ./searx/webapp.py +instance and opens the URL in your favorite WEB browser (xdg-open):

+
$ make run
+
+
+

Changes to theme’s HTML templates (jinja2) are instant. Changes to the CSS & JS +sources of the theme need to be rebuild. You can do that by running:

+
$ make themes.all
+
+
+

Alternatively to themes.all you can run live builds of the theme you are +modify (make themes.*):

+
$ LIVE_THEME=simple make run
+
+
+
+
+

make format.python

+

Format Python sourcee code using Black code style. See $BLACK_OPTIONS +and $BLACK_TARGETS in git://Makefile.

+
+

Attention

+

We stuck at Black 22.12.0, please read comment in PR Bump black from 22.12.0 +to 23.1.0

+
+
+
+

make clean

+

Drops all intermediate files, all builds, but keep sources untouched. Before +calling make clean stop all processes using the Python environment (make install) or +Node.js environment (make node.env).

+
$ make clean
+CLEAN     pyenv
+PYENV     [virtualenv] drop local/py3
+CLEAN     docs -- build/docs dist/docs
+CLEAN     themes -- locally installed npm dependencies
+...
+CLEAN     test stuff
+CLEAN     common files
+
+
+
+
+

make docs

+

Target docs builds the documentation:

+
$ make docs
+HTML ./docs --> file://
+DOCS      build build/docs/includes
+...
+The HTML pages are in dist/docs.
+
+
+
+

make docs.clean docs.live

+

We describe the usage of the doc.* targets in the How to contribute / +Documentation section. If you want to edit the documentation +read our live build section. If you are working in your own brand, +adjust your brand:.

+
+
+

make docs.gh-pages

+

To deploy on github.io first adjust your brand:. For any +further read deploy on github.io.

+
+
+
+

make test

+

Runs a series of tests: make test.pylint, test.pep8, test.unit +and test.robot. You can run tests selective, e.g.:

+
$ make test.pep8 test.unit test.shell
+TEST      test.pep8 OK
+...
+TEST      test.unit OK
+...
+TEST      test.shell OK
+
+
+
+

make test.shell

+

Lint shell scripts / if you have changed some bash scripting run this test before +commit.

+
+
+

make test.pylint

+

Pylint is known as one of the best source-code, bug and quality checker for the +Python programming language. The pylint profile used in the SearXNG project is +found in project’s root folder git://.pylintrc.

+
+
+
+

make search.checker.{engine name}

+

To check all engines:

+
make search.checker
+
+
+

To check a engine with whitespace in the name like google news replace space +by underline:

+
make search.checker.google_news
+
+
+

To see HTTP requests and more use SEARXNG_DEBUG:

+
make SEARXNG_DEBUG=1 search.checker.google_news
+
+
+

To filter out HTTP redirects (3xx):

+
make SEARXNG_DEBUG=1 search.checker.google_news | grep -A1 "HTTP/1.1\" 3[0-9][0-9]"
+...
+Engine google news                   Checking
+https://news.google.com:443 "GET /search?q=life&hl=en&lr=lang_en&ie=utf8&oe=utf8&ceid=US%3Aen&gl=US HTTP/1.1" 302 0
+https://news.google.com:443 "GET /search?q=life&hl=en-US&lr=lang_en&ie=utf8&oe=utf8&ceid=US:en&gl=US HTTP/1.1" 200 None
+--
+https://news.google.com:443 "GET /search?q=computer&hl=en&lr=lang_en&ie=utf8&oe=utf8&ceid=US%3Aen&gl=US HTTP/1.1" 302 0
+https://news.google.com:443 "GET /search?q=computer&hl=en-US&lr=lang_en&ie=utf8&oe=utf8&ceid=US:en&gl=US HTTP/1.1" 200 None
+--
+
+
+
+
+

make themes.*

+ +

The git://Makefile targets make theme.* cover common tasks to build the +theme(s). The ./manage themes.* command line can be used to convenient run +common theme build tasks.

+
INFO:  sourced NVM environment from /home/runner/.nvm
+themes.:
+  all       : build all themes
+  live      : to get live builds of CSS & JS use 'LIVE_THEME=simple make run'
+  simple.:
+    build   : build simple theme
+    test    : test simple theme
+
+
+

To get live builds while modifying CSS & JS use (make run):

+
$ LIVE_THEME=simple make run
+
+
+
+
+

make static.build.*

+ +

The git://Makefile targets static.build.* cover common tasks to build (a +commit of) the static files. The ./manage static.build..* command line +can be used to convenient run common build tasks of the satic files.

+
INFO:  sourced NVM environment from /home/runner/.nvm
+static.build.:  [build] /static
+  commit    : build & commit /static folder
+  drop      : drop last commit if it was previously done by static.build.commit
+  restore   : git restore of the /static folder (after themes.all)
+
+
+
+
+

./manage redis.help

+

The ./manage redis.* command line can be used to convenient run common Redis +tasks (Redis Developer Notes).

+
INFO:  sourced NVM environment from /home/runner/.nvm
+redis.:
+  devpkg    : install essential packages to compile redis
+  build     : build redis binaries at /home/runner/work/searxng/searxng/dist/redis/6.2.6/amd64
+  install   : create user (searxng-redis) and install systemd service (searxng-redis)
+  remove    : delete user (searxng-redis) and remove service (searxng-redis)
+  shell     : start bash interpreter from user searxng-redis
+  src       : clone redis source code to <path> and checkput 6.2.6
+  useradd   : create user (searxng-redis) at /usr/local/searxng-redis
+  userdel   : delete user (searxng-redis)
+  addgrp    : add <user> to group (searxng-redis)
+  rmgrp     : remove <user> from group (searxng-redis)
+
+
+
+
+

./manage go.help

+

The ./manage go.* command line can be used to convenient run common go +(wiki) tasks.

+
INFO:  sourced NVM environment from /home/runner/.nvm
+go.:
+  ls        : list golang binary archives (stable)
+  golang    : (re-) install golang binary in user's $HOME/local folder
+  install   : install go package in user's $HOME/go-apps folder
+  bash      : start bash interpreter with golang environment sourced
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/plugins.html b/dev/plugins.html new file mode 100644 index 000000000..75c32e640 --- /dev/null +++ b/dev/plugins.html @@ -0,0 +1,254 @@ + + + + + + + + Plugins — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Plugins

+ +

Plugins can extend or replace functionality of various components of searx.

+
+

Example plugin

+
name = 'Example plugin'
+description = 'This plugin extends the suggestions with the word "example"'
+default_on = False  # disabled by default
+
+# attach callback to the post search hook
+#  request: flask request object
+#  ctx: the whole local context of the post search hook
+def post_search(request, search):
+    search.result_container.suggestions.add('example')
+    return True
+
+
+
+
+

External plugins

+

SearXNG supports external plugins / there is no need to install one, SearXNG +runs out of the box. But to demonstrate; in the example below we install the +SearXNG plugins from The Green Web Foundation [ref]:

+
$ sudo utils/searxng.sh instance cmd bash -c
+(searxng-pyenv)$ pip install git+https://github.com/return42/tgwf-searx-plugins
+
+
+

In the settings.yml activate the plugins: section and add module +only_show_green_results from tgwf-searx-plugins.

+
plugins:
+  ...
+  - only_show_green_results
+  ...
+
+
+
+
+

Plugin entry points

+

Entry points (hooks) define when a plugin runs. Right now only three hooks are +implemented. So feel free to implement a hook if it fits the behaviour of your +plugin. A plugin doesn’t need to implement all the hooks.

+
+ +

Runs BEFORE the search request.

+

search.result_container can be changed.

+

Return a boolean:

+
    +
  • True to continue the search

  • +
  • False to stop the search

  • +
+
+
Parameters:
+
+
+
Returns:
+

False to stop the search

+
+
Return type:
+

bool

+
+
+
+ +
+
+post_search(request, search) None
+

Runs AFTER the search request.

+
+
Parameters:
+
+
+
+
+ +
+
+on_result(request, search, result) bool
+

Runs for each result of each engine.

+

result can be changed.

+

If result[“url”] is defined, then result[“parsed_url”] = urlparse(result[‘url’])

+
+

Warning

+

result[“url”] can be changed, but result[“parsed_url”] must be updated too.

+
+

Return a boolean:

+
    +
  • True to keep the result

  • +
  • False to remove the result

  • +
+
+
Parameters:
+
+
+
Returns:
+

True to keep the result

+
+
Return type:
+

bool

+
+
+
+ +
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/quickstart.html b/dev/quickstart.html new file mode 100644 index 000000000..d19148f39 --- /dev/null +++ b/dev/quickstart.html @@ -0,0 +1,200 @@ + + + + + + + + Development Quickstart — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Development Quickstart

+ +

SearXNG loves developers; Developers do not need to worry about tool chains, the +usual developer tasks can be comfortably executed via make.

+

Don’t hesitate, just clone SearXNG’s sources and start hacking right now ..

+
git clone https://github.com/searxng/searxng.git searxng
+
+
+

Here is how a minimal workflow looks like:

+
    +
  1. start hacking

  2. +
  3. run your code: make run

  4. +
  5. format & test your code: make format.python and make test

  6. +
+

If you think at some point something fails, go back to start. Otherwise, +choose a meaningful commit message and we are happy to receive your pull +request. To not end in wild west we have some directives, please pay attention +to our “How to contribute” guideline.

+ +

If you implement themes, you will need to setup a Node.js environment: make node.env

+

Before you call make run (2.), you need to compile the modified styles and +JavaScript: make themes.all

+

Alternatively you can also compile selective the theme you have modified, +e.g. the simple theme.

+
make themes.simple
+
+
+
+

Tip

+

To get live builds while modifying CSS & JS use: LIVE_THEME=simple make run

+
+ +

If you finished your tests you can start to commit your changes. To separate +the modified source code from the build products first run:

+
make static.build.restore
+
+
+

This will restore the old build products and only your changes of the code +remain in the working tree which can now be added & commited. When all sources +are commited, you can commit the build products simply by:

+
make static.build.commit
+
+
+

Commiting the build products should be the last step, just before you send us +your PR. There is also a make target to rewind this last build commit:

+
make static.build.drop
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/reST.html b/dev/reST.html new file mode 100644 index 000000000..90b1a553b --- /dev/null +++ b/dev/reST.html @@ -0,0 +1,1694 @@ + + + + + + + + reST primer — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

reST primer

+ +

We at SearXNG are using reStructuredText (aka reST) markup for all kind of +documentation. With the builders from the Sphinx project a HTML output is +generated and deployed at docs.searxng.org. For build prerequisites read +Build docs.

+

The source files of SearXNG’s documentation are located at git://docs. +Sphinx assumes source files to be encoded in UTF-8 by default. Run make +docs.live to build HTML while editing.

+ + +

Sphinx and reST have their place in the python ecosystem. Over that reST is +used in popular projects, e.g the Linux kernel documentation [kernel doc].

+ +

reST is a plaintext markup language, its markup is mostly intuitive and +you will not need to learn much to produce well formed articles with. I use the +word mostly: like everything in live, reST has its advantages and +disadvantages, some markups feel a bit grumpy (especially if you are used to +other plaintext markups).

+
+

Soft skills

+

Before going any deeper into the markup let’s face on some soft skills a +trained author brings with, to reach a well feedback from readers:

+
    +
  • Documentation is dedicated to an audience and answers questions from the +audience point of view.

  • +
  • Don’t detail things which are general knowledge from the audience point of +view.

  • +
  • Limit the subject, use cross links for any further reading.

  • +
+

To be more concrete what a point of view means. In the (git://docs) +folder we have three sections (and the blog folder), each dedicate to a +different group of audience.

+
+
User’s POV: git://docs/user

A typical user knows about search engines and might have heard about +meta crawlers and privacy.

+
+
Admin’s POV: git://docs/admin

A typical Admin knows about setting up services on a linux system, but he does +not know all the pros and cons of a SearXNG setup.

+
+
Developer’s POV: git://docs/dev

Depending on the readability of code, a typical developer is able to read and +understand source code. Describe what a item aims to do (e.g. a function). +If the chronological order matters, describe it. Name the out-of-limits +conditions and all the side effects a external developer will not know.

+
+
+
+
+

Basic inline markup

+ +

Basic inline markup is done with asterisks and backquotes. If asterisks or +backquotes appear in running text and could be confused with inline markup +delimiters, they have to be escaped with a backslash (\*pointer).

+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 15 basic inline markup

description

rendered

markup

one asterisk for emphasis

italics

*italics*

two asterisks for strong emphasis

boldface

**boldface**

backquotes for code samples and literals

foo()

``foo()``

quote asterisks or backquotes

*foo is a pointer

\*foo is a pointer

+
+
+

Basic article structure

+

The basic structure of an article makes use of heading adornments to markup +chapter, sections and subsections.

+
+

reST template

+

reST template for an simple article:

+
.. _doc refname:
+
+==============
+Document title
+==============
+
+Lorem ipsum dolor sit amet, consectetur adipisici elit ..  Further read
+:ref:`chapter refname`.
+
+.. _chapter refname:
+
+Chapter
+=======
+
+Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+aliquid ex ea commodi consequat ...
+
+.. _section refname:
+
+Section
+-------
+
+lorem ..
+
+.. _subsection refname:
+
+Subsection
+~~~~~~~~~~
+
+lorem ..
+
+
+
+
+

Headings

+
    +
  1. title - with overline for document title:

  2. +
+
+
==============
+Document title
+==============
+
+
+
+
    +
  1. chapter - with anchor named anchor name:

    +
    .. _anchor name:
    +
    +Chapter
    +=======
    +
    +
    +
  2. +
  3. section

    +
    Section
    +-------
    +
    +
    +
  4. +
  5. subsection

    +
    Subsection
    +~~~~~~~~~~
    +
    +
    +
  6. +
+
+
+ +
+

Literal blocks

+

The simplest form of literal-blocks is a indented block introduced by +two colons (::). For highlighting use highlight or code-block directive. To include literals from external files use +literalinclude or kernel-include +directive (latter one expands environment variables in the path name).

+
+

::

+
::
+
+  Literal block
+
+Lorem ipsum dolor::
+
+  Literal block
+
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+eirmod tempor invidunt ut labore ::
+
+  Literal block
+
+
+
+

Literal block

+
Literal block
+
+
+

Lorem ipsum dolor:

+
Literal block
+
+
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy +eirmod tempor invidunt ut labore

+
Literal block
+
+
+
+
+
+

code-block

+ +

The code-block directive is a variant of the code directive +with additional options. To learn more about code literals visit +Showing code examples.

+
The URL ``/stats`` handle is shown in :ref:`stats-handle`
+
+.. code-block:: Python
+   :caption: python code block
+   :name: stats-handle
+
+   @app.route('/stats', methods=['GET'])
+   def stats():
+       """Render engine statistics page."""
+       stats = get_engines_stats()
+       return render(
+           'stats.html'
+           , stats = stats )
+
+
+

+
+
+
+

Code block

+

The URL /stats handle is shown in python code block

+
+
Listing 1 python code block
+
@app.route('/stats', methods=['GET'])
+def stats():
+    """Render engine statistics page."""
+    stats = get_engines_stats()
+    return render(
+        'stats.html'
+        , stats = stats )
+
+
+
+
+
+
+
+

Unicode substitution

+

The unicode directive converts Unicode +character codes (numerical values) to characters. This directive can only be +used within a substitution definition.

+
.. |copy| unicode:: 0xA9 .. copyright sign
+.. |(TM)| unicode:: U+2122
+
+Trademark |(TM)| and copyright |copy| glyphs.
+
+
+
+

Unicode

+

Trademark ™ and copyright © glyphs.

+
+
+
+

Roles

+ +

A custom interpreted text role (ref) is an inline piece of +explicit markup. It signifies that that the enclosed text should be interpreted +in a specific way.

+

The general markup is one of:

+
:rolename:`ref-name`
+:rolename:`ref text <ref-name>`
+
+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 17 smart refs with sphinx.ext.extlinks and intersphinx

role

rendered example

markup

guilabel

Cancel

:guilabel:`&Cancel`

kbd

C-x C-f

:kbd:`C-x C-f`

menuselection

Open ‣ File

:menuselection:`Open --> File`

download

this file

:download:`this file <reST.rst>`

math

a^2 + b^2 = c^2

:math:`a^2 + b^2 = c^2`

ref

Simple SVG image.

:ref:`svg image example`

command

ls -la

:command:`ls -la`

emphasis

italic

:emphasis:`italic`

strong

bold

:strong:`bold`

literal

foo()

:literal:`foo()`

subscript

H2O

H\ :sub:`2`\ O

superscript

E = mc2

E = mc\ :sup:`2`

title-reference

Time

:title:`Time`

+
+
+

Figures & Images

+ +

SearXNG’s sphinx setup includes: Scalable figure and image handling. Scalable here means; +scalable in sense of the build process. Normally in absence of a converter +tool, the build process will break. From the authors POV it’s annoying to care +about the build process when handling with images, especially since he has no +access to the build process. With Scalable figure and image handling the build process +continues and scales output quality in dependence of installed image processors.

+

If you want to add an image, you should use the kernel-figure (inheritance +of figure) and kernel-image (inheritance of image) +directives. E.g. to insert a figure with a scalable image format use SVG +(Simple SVG image.):

+
.. _svg image example:
+
+.. kernel-figure:: svg_image.svg
+   :alt: SVG image example
+
+   Simple SVG image
+
+ To refer the figure, a caption block is needed: :ref:`svg image example`.
+
+
+
+SVG image example
+

Fig. 4 Simple SVG image.

+
+
+

To refer the figure, a caption block is needed: Simple SVG image..

+
+

DOT files (aka Graphviz)

+

With kernel-figure & kernel-image reST support for DOT formatted files is +given.

+ +

A simple example is shown in DOT’s hello world example:

+
.. _dot file example:
+
+.. kernel-figure:: hello.dot
+   :alt: hello world
+
+   DOT's hello world example
+
+
+
+

hello.dot

+
+hello world
+

Fig. 5 DOT’s hello world example

+
+
+
+
+
+

kernel-render DOT

+

Embed render markups (or languages) like Graphviz’s DOT is provided by the +kernel-render directive. A simple example of embedded DOT is +shown in figure Embedded DOT (Graphviz) code:

+
.. _dot render example:
+
+.. kernel-render:: DOT
+   :alt: digraph
+   :caption: Embedded  DOT (Graphviz) code
+
+   digraph foo {
+     "bar" -> "baz";
+   }
+
+Attribute ``caption`` is needed, if you want to refer the figure: :ref:`dot
+render example`.
+
+
+

Please note build tools. If Graphviz is +installed, you will see an vector image. If not, the raw markup is inserted as +literal-block.

+
+

kernel-render DOT

+
+digraph
+

Fig. 6 Embedded DOT (Graphviz) code

+
+
+

Attribute caption is needed, if you want to refer the figure: Embedded DOT (Graphviz) code.

+
+
+
+

kernel-render SVG

+

A simple example of embedded SVG is shown in figure Embedded SVG markup:

+
.. _svg render example:
+
+.. kernel-render:: SVG
+   :caption: Embedded **SVG** markup
+   :alt: so-nw-arrow
+
+
+
+
<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
+     baseProfile="full" width="70px" height="40px"
+     viewBox="0 0 700 400"
+     >
+  <line x1="180" y1="370"
+        x2="500" y2="50"
+        stroke="black" stroke-width="15px"
+        />
+  <polygon points="585 0 525 25 585 50"
+           transform="rotate(135 525 25)"
+           />
+</svg>
+
+
+
+
+

kernel-render SVG

+
+so-nw-arrow
+

Fig. 7 Embedded SVG markup

+
+
+
+
+
+
+

List markups

+
+

Bullet list

+

List markup (ref) is simple:

+
- This is a bulleted list.
+
+  1. Nested lists are possible, but be aware that they must be separated from
+     the parent list items by blank line
+  2. Second item of nested list
+
+- It has two items, the second
+  item uses two lines.
+
+#. This is a numbered list.
+#. It has two items too.
+
+
+
+

bullet list

+
    +
  • This is a bulleted list.

    +
      +
    1. Nested lists are possible, but be aware that they must be separated from +the parent list items by blank line

    2. +
    3. Second item of nested list

    4. +
    +
  • +
  • It has two items, the second +item uses two lines.

  • +
+
    +
  1. This is a numbered list.

  2. +
  3. It has two items too.

  4. +
+
+
+
+

Horizontal list

+

The .. hlist:: transforms a bullet list into a more compact +list.

+
.. hlist::
+
+   - first list item
+   - second list item
+   - third list item
+   ...
+
+
+
+

hlist

+
    +
  • first list item

  • +
  • second list item

  • +
  • third list item

  • +
  • next list item

  • +
+
    +
  • next list item xxxx

  • +
  • next list item yyyy

  • +
  • next list item zzzz

  • +
+
+
+
+
+

Definition list

+ +

Each definition list (ref) item contains a term, +optional classifiers and a definition. A term is a simple one-line word or +phrase. Optional classifiers may follow the term on the same line, each after +an inline ‘ : ‘ (space, colon, space). A definition is a block indented +relative to the term, and may contain multiple paragraphs and other body +elements. There may be no blank line between a term line and a definition block +(this distinguishes definition lists from block quotes). Blank lines are +required before the first and after the last definition list item, but are +optional in-between.

+

Definition lists are created as follows:

+
term 1 (up to a line of text)
+    Definition 1.
+
+See the typo : this line is not a term!
+
+  And this is not term's definition.  **There is a blank line** in between
+  the line above and this paragraph.  That's why this paragraph is taken as
+  **block quote** (:duref:`ref <block-quotes>`) and not as term's definition!
+
+term 2
+    Definition 2, paragraph 1.
+
+    Definition 2, paragraph 2.
+
+term 3 : classifier
+    Definition 3.
+
+term 4 : classifier one : classifier two
+    Definition 4.
+
+
+
+

definition list

+
+
term 1 (up to a line of text)

Definition 1.

+
+
+

See the typo : this line is not a term!

+
+

And this is not term’s definition. There is a blank line in between +the line above and this paragraph. That’s why this paragraph is taken as +block quote (ref) and not as term’s definition!

+
+
+
term 2

Definition 2, paragraph 1.

+

Definition 2, paragraph 2.

+
+
term 3classifier

Definition 3.

+
+
+

term 4 : classifier one : classifier two

+
+
+
+

Quoted paragraphs

+

Quoted paragraphs (ref) are created by just indenting +them more than the surrounding paragraphs. Line blocks (ref) are a way of preserving line breaks:

+
normal paragraph ...
+lorem ipsum.
+
+   Quoted paragraph ...
+   lorem ipsum.
+
+| These lines are
+| broken exactly like in
+| the source file.
+
+
+
+

Quoted paragraph and line block

+

normal paragraph … +lorem ipsum.

+
+

Quoted paragraph … +lorem ipsum.

+
+
+
These lines are
+
broken exactly like in
+
the source file.
+
+
+
+
+

Field Lists

+ +

Field lists are used as part of an extension syntax, such as options for +directives, or database-like records meant for further processing. Field lists +are mappings from field names to field bodies. They marked up like this:

+
:fieldname: Field content
+:foo:       first paragraph in field foo
+
+            second paragraph in field foo
+
+:bar:       Field content
+
+
+
+

Field List

+
+
fieldname:
+

Field content

+
+
foo:
+

first paragraph in field foo

+

second paragraph in field foo

+
+
bar:
+

Field content

+
+
+
+

They are commonly used in Python documentation:

+
def my_function(my_arg, my_other_arg):
+    """A function just for me.
+
+    :param my_arg: The first of my arguments.
+    :param my_other_arg: The second of my arguments.
+
+    :returns: A message (just for me, of course).
+    """
+
+
+
+
+

Further list blocks

+
    +
  • field lists (ref, with caveats noted in +Field Lists)

  • +
  • option lists (ref)

  • +
  • quoted literal blocks (ref)

  • +
  • doctest blocks (ref)

  • +
+
+
+
+

Admonitions

+ +
+

Generic admonition

+

The generic admonition needs a title:

+
.. admonition:: generic admonition title
+
+   lorem ipsum ..
+
+
+
+

generic admonition title

+

lorem ipsum ..

+
+
+
+

Specific admonitions

+

Specific admonitions: hint, note, tip attention, +caution, danger, error, , important, and +warning .

+
.. hint::
+
+   lorem ipsum ..
+
+.. note::
+
+   lorem ipsum ..
+
+.. warning::
+
+   lorem ipsum ..
+
+
+
+

Hint

+

lorem ipsum ..

+
+
+

Note

+

lorem ipsum ..

+
+
+

Tip

+

lorem ipsum ..

+
+
+

Attention

+

lorem ipsum ..

+
+
+

Caution

+

lorem ipsum ..

+
+
+

Danger

+

lorem ipsum ..

+
+
+

Important

+

lorem ipsum ..

+
+
+

Error

+

lorem ipsum ..

+
+
+

Warning

+

lorem ipsum ..

+
+
+
+
+

Tables

+ +

ASCII-art tables like Simple tables and Grid tables might +be comfortable for readers of the text-files, but they have huge disadvantages +in the creation and modifying. First, they are hard to edit. Think about +adding a row or a column to a ASCII-art table or adding a paragraph in a cell, +it is a nightmare on big tables.

+ +

Second the diff of modifying ASCII-art tables is not meaningful, e.g. widening a +cell generates a diff in which also changes are included, which are only +ascribable to the ASCII-art. Anyway, if you prefer ASCII-art for any reason, +here are some helpers:

+ +
+

Simple tables

+

Simple tables allow colspan but not rowspan. If +your table need some metadata (e.g. a title) you need to add the .. table:: +directive (ref) in front and place the table in its body:

+
.. table:: foo gate truth table
+   :widths: grid
+   :align: left
+
+   ====== ====== ======
+       Inputs    Output
+   ------------- ------
+   A      B      A or B
+   ====== ====== ======
+   False
+   --------------------
+   True
+   --------------------
+   True   False  True
+          (foo)
+   ------ ------ ------
+   False  True
+          (foo)
+   ====== =============
+
+
+
+

Simple ASCII table

+ + +++++ + + + + + + + + + + + + + + + + + + + + + + +
Table 18 foo gate truth table

Inputs

Output

A

B

A or B

False

True

True

False +(foo)

True

False

True +(foo)

+
+
+
+

Grid tables

+

Grid tables allow colspan colspan and rowspan:

+
.. table:: grid table example
+   :widths: 1 1 5
+
+   +------------+------------+-----------+
+   | Header 1   | Header 2   | Header 3  |
+   +============+============+===========+
+   | body row 1 | column 2   | column 3  |
+   +------------+------------+-----------+
+   | body row 2 | Cells may span columns.|
+   +------------+------------+-----------+
+   | body row 3 | Cells may  | - Cells   |
+   +------------+ span rows. | - contain |
+   | body row 4 |            | - blocks. |
+   +------------+------------+-----------+
+
+
+
+

ASCII grid table

+ + +++++ + + + + + + + + + + + + + + + + + + + + + +
Table 19 grid table example

Header 1

Header 2

Header 3

body row 1

column 2

column 3

body row 2

Cells may span columns.

body row 3

Cells may +span rows.

    +
  • Cells

  • +
  • contain

  • +
  • blocks.

  • +
+

body row 4

+
+
+
+

flat-table

+

The flat-table is a further developed variant of the list tables. It is a double-stage list similar to the +list-table with some additional features:

+
+
column-span: cspan

with the role cspan a cell can be extended through additional columns

+
+
row-span: rspan

with the role rspan a cell can be extended through additional rows

+
+
auto-span:

spans rightmost cell of a table row over the missing cells on the right side +of that table-row. With Option :fill-cells: this behavior can changed +from auto span to auto fill, which automatically inserts (empty) cells +instead of spanning the last cell.

+
+
options:
+
header-rows:
+

[int] count of header rows

+
+
stub-columns:
+

[int] count of stub columns

+
+
widths:
+

[[int] [int] … ] widths of columns

+
+
fill-cells:
+

instead of auto-span missing cells, insert missing cells

+
+
+
+
roles:
+
cspan:
+

[int] additional columns (morecols)

+
+
rspan:
+

[int] additional rows (morerows)

+
+
+
+
+

The example below shows how to use this markup. The first level of the staged +list is the table-row. In the table-row there is only one markup allowed, +the list of the cells in this table-row. Exception are comments ( .. ) +and targets (e.g. a ref to row 2 of table’s body).

+
.. flat-table:: ``flat-table`` example
+   :header-rows: 2
+   :stub-columns: 1
+   :widths: 1 1 1 1 2
+
+   * - :rspan:`1` head / stub
+     - :cspan:`3` head 1.1-4
+
+   * - head 2.1
+     - head 2.2
+     - head 2.3
+     - head 2.4
+
+   * .. row body 1 / this is a comment
+
+     - row 1
+     - :rspan:`2` cell 1-3.1
+     - cell 1.2
+     - cell 1.3
+     - cell 1.4
+
+   * .. Comments and targets are allowed on *table-row* stage.
+     .. _`row body 2`:
+
+     - row 2
+     - cell 2.2
+     - :rspan:`1` :cspan:`1`
+       cell 2.3 with a span over
+
+       * col 3-4 &
+       * row 2-3
+
+   * - row 3
+     - cell 3.2
+
+   * - row 4
+     - cell 4.1
+     - cell 4.2
+     - cell 4.3
+     - cell 4.4
+
+   * - row 5
+     - cell 5.1 with automatic span to right end
+
+   * - row 6
+     - cell 6.1
+     - ..
+
+
+
+

List table

+ + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 20 flat-table example

head / stub

head 1.1-4

head 2.1

head 2.2

head 2.3

head 2.4

row 1

cell 1-3.1

cell 1.2

cell 1.3

cell 1.4

row 2

+

cell 2.2

+

+cell 2.3 with a span over

+
    +
  • col 3-4 &

  • +
  • row 2-3

  • +
+

row 3

cell 3.2

row 4

cell 4.1

cell 4.2

cell 4.3

cell 4.4

row 5

cell 5.1 with automatic span to right end

row 6

cell 6.1

+
+
+
+

CSV table

+

CSV table might be the choice if you want to include CSV-data from a outstanding +(build) process into your documentation.

+
.. csv-table:: CSV table example
+   :header: .. , Column 1, Column 2
+   :widths: 2 5 5
+   :stub-columns: 1
+   :file: csv_table.txt
+
+
+

Content of file csv_table.txt:

+
stub col row 1, column, "loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
+voluptua."
+stub col row 1, "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
+kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", column
+stub col row 1, column, column
+
+
+
+

CSV table

+ + +++++ + + + + + + + + + + + + + + + + + + + + +
Table 21 CSV table example

Column 1

Column 2

stub col row 1

column

loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy +eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam +voluptua.

stub col row 1

At vero eos et accusam et justo duo dolores et ea rebum. Stet clita +kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

column

stub col row 1

column

column

+
+
+
+
+

Templating

+ +

Templating is suitable for documentation which is created generic at the build +time. The sphinx-jinja extension evaluates jinja templates in the Python environment (make install) (with SearXNG modules installed). We use this e.g. to build chapter: +Configured Engines. Below the jinja directive from the +git://docs/admin/engines.rst is shown:

+
==================
+Configured Engines
+==================
+
+.. sidebar:: Further reading ..
+
+   - :ref:`settings categories_as_tabs`
+   - :ref:`engines-dev`
+   - :ref:`settings engine`
+   - :ref:`general engine configuration`
+
+.. jinja:: searx
+
+   SearXNG supports {{engines | length}} search engines of which
+   {{enabled_engine_count}} are enabled by default.
+
+   Engines can be assigned to multiple :ref:`categories <engine categories>`.
+   The UI displays the tabs that are configured in :ref:`categories_as_tabs
+   <settings categories_as_tabs>`.  In addition to these UI categories (also
+   called *tabs*), engines can be queried by their name or the categories they
+   belong to, by using a :ref:`\!bing syntax <search-syntax>`.
+
+.. contents::
+   :depth: 2
+   :local:
+   :backlinks: entry
+
+.. jinja:: searx
+
+   {% for category, engines in categories_as_tabs.items() %}
+
+   tab ``!{{category.replace(' ', '_')}}``
+   ---------------------------------------
+
+   {% for group, group_bang, engines in engines | group_engines_in_tab %}
+
+   {% if loop.length > 1 %}
+   {% if group_bang %}group ``{{group_bang}}``{% else %}{{group}}{% endif %}
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+   {% endif %}
+
+   .. flat-table::
+      :header-rows: 2
+      :stub-columns: 1
+      :widths: 10 1 10 1 1 1 1 1 1 1
+
+      * - :cspan:`5` Engines configured by default (in :ref:`settings.yml <engine settings>`)
+        - :cspan:`3` :ref:`Supported features <engine file>`
+
+      * - Name
+        - !bang
+        - Module
+        - Disabled
+        - Timeout
+        - Weight
+        - Paging
+        - Locale
+        - Safe search
+        - Time range
+
+      {% for mod in engines %}
+
+      * - `{{mod.name}} <{{mod.about and mod.about.website}}>`_
+          {%- if mod.about and  mod.about.language %}
+          ({{mod.about.language | upper}})
+          {%- endif %}
+        - ``!{{mod.shortcut}}``
+        - {%- if 'searx.engines.' + mod.__name__ in documented_modules %}
+          :py:mod:`~searx.engines.{{mod.__name__}}`
+          {%- else %}
+          :origin:`{{mod.__name__}} <searx/engines/{{mod.__name__}}.py>`
+          {%- endif %}
+        - {{(mod.disabled and "y") or ""}}
+        - {{mod.timeout}}
+        - {{mod.weight or 1 }}
+        {% if mod.engine_type == 'online' %}
+        - {{(mod.paging and "y") or ""}}
+        - {{(mod.language_support and "y") or ""}}
+        - {{(mod.safesearch and "y") or ""}}
+        - {{(mod.time_range_support and "y") or ""}}
+        {% else %}
+        - :cspan:`3` not applicable ({{mod.engine_type}})
+        {% endif %}
+
+     {% endfor %}
+     {% endfor %}
+     {% endfor %}
+
+
+

The context for the template is selected in the line .. jinja:: searx. In +sphinx’s build configuration (git://docs/conf.py) the searx context +contains the engines and plugins.

+
import searx.search
+import searx.engines
+import searx.plugins
+searx.search.initialize()
+jinja_contexts = {
+   'searx': {
+      'engines': searx.engines.engines,
+      'plugins': searx.plugins.plugins
+   },
+}
+
+
+
+
+

Tabbed views

+

With sphinx-tabs extension we have tabbed views. To provide installation +instructions with one tab per distribution we use the group-tabs directive, +others are basic-tabs and code-tabs. Below a group-tab example from +Build docs is shown:

+
.. tabs::
+
+   .. group-tab:: Ubuntu / debian
+
+      .. code-block:: sh
+
+         $ sudo apt install shellcheck
+
+   .. group-tab:: Arch Linux
+
+      .. code-block:: sh
+
+         $ sudo pacman -S shellcheck
+
+   .. group-tab::  Fedora / RHEL
+
+      .. code-block:: sh
+
+         $ sudo dnf install ShellCheck
+
+
+
+
+

Math equations

+ +

The input language for mathematics is LaTeX markup using the CTAN: amsmath +package.

+

To embed LaTeX markup in reST documents, use role :math: for +inline and directive .. math:: for block markup.

+
In :math:numref:`schroedinger general` the time-dependent Schrödinger equation
+is shown.
+
+.. math::
+   :label: schroedinger general
+
+    \mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle =
+          \hat{H} |\,\psi (t) \rangle.
+
+
+
+

LaTeX math equation

+

In (1) the time-dependent Schrödinger equation +is shown.

+
+

(1)\mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle =
+       \hat{H} |\,\psi (t) \rangle.

+
+

The next example shows the difference of \tfrac (textstyle) and \dfrac +(displaystyle) used in a inline markup or another fraction.

+
``\tfrac`` **inline example** :math:`\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}`
+``\dfrac`` **inline example** :math:`\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}`
+
+
+
+

Line spacing

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy +eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam +voluptua. … +\tfrac inline example \tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z} +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd +gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy +eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam +voluptua. … +\tfrac inline example \dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z} +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd +gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/search_api.html b/dev/search_api.html new file mode 100644 index 000000000..56c793b03 --- /dev/null +++ b/dev/search_api.html @@ -0,0 +1,228 @@ + + + + + + + + Search API — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Search API

+

The search supports both GET and POST.

+

Furthermore, two endpoints / and /search are available for querying.

+

GET /

+

GET /search

+
+

Parameters

+ +
+
qrequired

The search query. This string is passed to external search services. Thus, +SearXNG supports syntax of each search service. For example, site:github.com +SearXNG is a valid query for Google. However, if simply the query above is +passed to any search engine which does not filter its results based on this +syntax, you might not get the results you wanted.

+

See more at Search syntax

+
+
categoriesoptional

Comma separated list, specifies the active search categories (see +Configured Engines)

+
+
enginesoptional

Comma separated list, specifies the active search engines (see +Configured Engines).

+
+
languagedefault from search:

Code of the language.

+
+
pagenodefault 1

Search page number.

+
+
time_rangeoptional

[ day, month, year ]

+

Time range of search for engines which support it. See if an engine supports +time range search in the preferences page of an instance.

+
+
formatoptional

[ json, csv, rss ]

+

Output format of results. Format needs to be activated in search:.

+
+
results_on_new_tabdefault 0

[ 0, 1 ]

+

Open search results on new tab.

+
+
image_proxydefault from server:

[ True, False ]

+

Proxy image results through SearXNG.

+
+
autocompletedefault from search:

[ google, dbpedia, duckduckgo, startpage, wikipedia, +swisscows, qwant ]

+

Service which completes words as you type.

+
+
safesearchdefault from search:

[ 0, 1, 2 ]

+

Filter search results of engines which support safe search. See if an engine +supports safe search in the preferences page of an instance.

+
+
themedefault simple

[ simple ]

+

Theme of instance.

+

Please note, available themes depend on an instance. It is possible that an +instance administrator deleted, created or renamed themes on their instance. +See the available options in the preferences page of the instance.

+
+
enabled_pluginsoptional

List of enabled plugins.

+
+
default:
+

Hash_plugin, Search_on_category_select, +Self_Information, Tracker_URL_remover, +Ahmia_blacklist

+
+
values:
+

Hash_plugin, Search_on_category_select, +Self_Information, Tracker_URL_remover, +Ahmia_blacklist,

+

Hostname_replace, Open_Access_DOI_rewrite, +Vim-like_hotkeys, Tor_check_plugin

+
+
+
+
disabled_plugins: optional

List of disabled plugins.

+
+
default:
+

Hostname_replace, Open_Access_DOI_rewrite, +Vim-like_hotkeys, Tor_check_plugin

+
+
values:
+

see values from enabled_plugins

+
+
+
+
enabled_enginesoptionalall engines

List of enabled engines.

+
+
disabled_enginesoptionalall engines

List of disabled engines.

+
+
+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/searxng_extra/index.html b/dev/searxng_extra/index.html new file mode 100644 index 000000000..6ef0a5e91 --- /dev/null +++ b/dev/searxng_extra/index.html @@ -0,0 +1,162 @@ + + + + + + + + Tooling box searxng_extra — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dev/searxng_extra/standalone_searx.py.html b/dev/searxng_extra/standalone_searx.py.html new file mode 100644 index 000000000..c666f4135 --- /dev/null +++ b/dev/searxng_extra/standalone_searx.py.html @@ -0,0 +1,226 @@ + + + + + + + + searxng_extra/standalone_searx.py — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

searxng_extra/standalone_searx.py

+

Script to run SearXNG from terminal.

+
+

DON’T USE THIS SCRIPT!!

+
+
+

Danger

+

Be warned, using the standalone_searx.py won’t give you privacy!

+

On the contrary, this script behaves like a SearXNG server: your IP is +exposed and tracked by all active engines (google, bing, qwant, … ), with +every query!

+
+
+

Note

+

This is an old and grumpy hack / SearXNG is a Flask application with +client/server structure, which can’t be turned into a command line tool the +way it was done here.

+
+

Getting categories without initiate the engine will only return [‘general’]

+
>>> import searx.engines
+... list(searx.engines.categories.keys())
+['general']
+>>> import searx.search
+... searx.search.initialize()
+... list(searx.engines.categories.keys())
+['general', 'it', 'science', 'images', 'news', 'videos', 'music', 'files', 'social media', 'map']
+
+
+

Example to use this script:

+
$ python3 searxng_extra/standalone_searx.py rain
+
+
+
+
+searxng_extra.standalone_searx.get_search_query(args: Namespace, engine_categories: List[str] | None = None) SearchQuery[source]
+

Get search results for the query

+
+ +
+
+searxng_extra.standalone_searx.json_serial(obj: Any) Any[source]
+

JSON serializer for objects not serializable by default json code.

+
+
Raises:
+

TypeError – raised when obj is not serializable

+
+
+
+ +
+
+searxng_extra.standalone_searx.no_parsed_url(results: List[Dict[str, Any]]) List[Dict[str, Any]][source]
+

Remove parsed url from dict.

+
+ +
+
+searxng_extra.standalone_searx.parse_argument(args: List[str] | None = None, category_choices: List[str] | None = None) Namespace[source]
+

Parse command line.

+
+
Raises:
+

SystemExit – Query argument required on args

+
+
+

Examples:

+
>>> import importlib
+... # load module
+... spec = importlib.util.spec_from_file_location(
+...     'utils.standalone_searx', 'utils/standalone_searx.py')
+... sas = importlib.util.module_from_spec(spec)
+... spec.loader.exec_module(sas)
+... sas.parse_argument()
+usage: ptipython [-h] [--category [{general}]] [--lang [LANG]] [--pageno [PAGENO]] [--safesearch [{0,1,2}]] [--timerange [{day,week,month,year}]]
+                 query
+SystemExit: 2
+>>> sas.parse_argument(['rain'])
+Namespace(category='general', lang='all', pageno=1, query='rain', safesearch='0', timerange=None)
+
+
+
+ +
+
+searxng_extra.standalone_searx.to_dict(search_query: SearchQuery) Dict[str, Any][source]
+

Get result from parsed arguments.

+
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/searxng_extra/update.html b/dev/searxng_extra/update.html new file mode 100644 index 000000000..7b93d2fcf --- /dev/null +++ b/dev/searxng_extra/update.html @@ -0,0 +1,311 @@ + + + + + + + + searxng_extra/update/ — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

searxng_extra/update/

+

[source]

+

Scripts to update static data in git://searx/data/

+
+

update_ahmia_blacklist.py

+

[source]

+

This script saves Ahmia’s blacklist for onion sites.

+

Output file: git://searx/data/ahmia_blacklist.txt (CI Update data +…).

+
+
+

update_currencies.py

+

[source]

+

Fetch currencies from git://searx/engines/wikidata.py engine.

+

Output file: git://searx/data/currencies.json (CI Update data …).

+
+
+

update_engine_descriptions.py

+

[source]

+

Fetch website description from websites and from +git://searx/engines/wikidata.py engine.

+

Output file: git://searx/data/engine_descriptions.json.

+
+
+searxng_extra.update.update_engine_descriptions.get_output()[source]
+

From descriptions[engine][language] = [description, source] +To

+
    +
  • output[language][engine] = description_and_source

  • +
  • +
    description_and_source can be:
      +
    • [description, source]

    • +
    • description (if source = “wikipedia”)

    • +
    • [f”engine:lang”, “ref”] (reference to another existing description)

    • +
    +
    +
    +
  • +
+
+ +
+
+

update_external_bangs.py

+

[source]

+

Update git://searx/data/external_bangs.json using the duckduckgo bangs +(CI Update data …).

+

https://duckduckgo.com/newbang loads:

+ +

This script loads the javascript, then the bangs.

+

The javascript URL may change in the future ( for example +https://duckduckgo.com/bv2.js ), but most probably it will requires to update +RE_BANG_VERSION

+
+
+searxng_extra.update.update_external_bangs.merge_when_no_leaf(node)[source]
+

Minimize the number of nodes

+

A -> B -> C

+
    +
  • B is child of A

  • +
  • C is child of B

  • +
+

If there are no C equals to <LEAF_KEY>, then each C are merged +into A. For example (5 nodes):

+
d -> d -> g -> <LEAF_KEY> (ddg)
+  -> i -> g -> <LEAF_KEY> (dig)
+
+
+

becomes (3 noodes):

+
d -> dg -> <LEAF_KEY>
+  -> ig -> <LEAF_KEY>
+
+
+
+ +
+
+

update_firefox_version.py

+

[source]

+

Fetch firefox useragent signatures

+

Output file: git://searx/data/useragents.json (CI Update data …).

+
+
+

update_engine_traits.py

+

[source]

+

Update searx.enginelib.traits.EngineTraitsMap and git://searx/languages.py

+
+
searx.enginelib.traits.EngineTraitsMap.ENGINE_TRAITS_FILE:

Persistence of engines traits, fetched from the engines.

+
+
git://searx/languages.py

Is generated from intersecting each engine’s supported traits.

+
+
+

The script git://searxng_extra/update/update_engine_traits.py is called in +the CI Update data …

+
+
+class searxng_extra.update.update_engine_traits.UnicodeEscape[source]
+

Escape unicode string in pprint.pformat

+
+ +
+
+searxng_extra.update.update_engine_traits.fetch_traits_map()[source]
+

Fetchs supported languages for each engine and writes json file with those.

+
+ +
+
+searxng_extra.update.update_engine_traits.filter_locales(traits_map: EngineTraitsMap)[source]
+

Filter language & region tags by a threshold.

+
+ +
+
+searxng_extra.update.update_engine_traits.get_unicode_flag(locale: Locale)[source]
+

Determine a unicode flag (emoji) that fits to the locale

+
+ +
+
+

update_osm_keys_tags.py

+

[source]

+

Fetch OSM keys and tags.

+

To get the i18n names, the scripts uses Wikidata Query Service instead of for +example OSM tags API (sidenote: the actual change log from +map.atownsend.org.uk might be useful to normalize OSM tags).

+

Output file: git://searx/data/osm_keys_tags (CI Update data …).

+
+
SPARQL_TAGS_REQUEST :

Wikidata SPARQL query that returns type-categories and types. The +returned tag is Tag:{category}={type} (see get_tags()). +Example:

+ +
+
SPARQL_KEYS_REQUEST :

Wikidata SPARQL query that returns keys. Example with “payment”:

+ +

rdfs:label get all the labels without language selection +(as opposed to SERVICE wikibase:label).

+
+
+
+
+

update_pygments.py

+

[source]

+

Update pygments style

+

Call this script after each upgrade of pygments

+
+
+

update_wikidata_units.py

+

[source]

+

Fetch units from git://searx/engines/wikidata.py engine.

+

Output file: git://searx/data/wikidata_units.json (CI Update data +…).

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dev/translation.html b/dev/translation.html new file mode 100644 index 000000000..da83e7e5d --- /dev/null +++ b/dev/translation.html @@ -0,0 +1,193 @@ + + + + + + + + Translation — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Translation

+ +

Translation takes place on translate.codeberg.org.

+

Translations which has been added by translators on the translate.codeberg.org UI are +committed to Weblate’s counterpart of the SearXNG origin repository which is +located at https://translate.codeberg.org/git/searxng/searxng.

+

There is no need to clone this repository, SearXNG’s PR workflow to be in sync with Weblate take +care of the synchronization with the origin. To avoid merging commits from +the counterpart directly on the master branch of SearXNG origin, a pull +request (PR) is created by this workflow.

+

Weblate monitors the translations branch, not the master branch. This +branch is an orphan branch, decoupled from the master branch (we already know +orphan branches from the gh-pages). The translations branch contains +only the

+
    +
  • translation/messages.pot and the

  • +
  • translation/*/messages.po files, nothing else.

  • +
+
+../_images/translation.svg
+

Fig. 3 SearXNG’s PR workflow to be in sync with Weblate

+
+
+
+
Sync from origin to weblate: using make weblate.push.translations

For each commit on the master branch of SearXNG origin the GitHub job +babel / Update translations branch checks for updated translations.

+
+
Sync from weblate to origin: using make weblate.translations.commit

Every Friday, the GitHub workflow babel / create PR for additons from +weblate creates a PR with the +updated translation files:

+
    +
  • translation/messages.pot,

  • +
  • translation/*/messages.po and

  • +
  • translation/*/messages.mo

  • +
+
+
+
+

wlc

+

All weblate integration is done by GitHub workflows, but if you want to use wlc, +copy this content into wlc configuration in your HOME ~/.config/weblate

+
[keys]
+https://translate.codeberg.org/api/ = APIKEY
+
+
+

Replace APIKEY by your API key.

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/dockerfiles/docker-entrypoint.sh b/dockerfiles/docker-entrypoint.sh deleted file mode 100755 index 332d5c2bb..000000000 --- a/dockerfiles/docker-entrypoint.sh +++ /dev/null @@ -1,178 +0,0 @@ -#!/bin/sh - -help() { - cat </dev/null -} - -SEARXNG_VERSION="$(get_searxng_version)" -export SEARXNG_VERSION -echo "SearXNG version ${SEARXNG_VERSION}" - -# helpers to update the configuration files -patch_uwsgi_settings() { - CONF="$1" - - # update uwsg.ini - sed -i \ - -e "s|workers = .*|workers = ${UWSGI_WORKERS:-%k}|g" \ - -e "s|threads = .*|threads = ${UWSGI_THREADS:-4}|g" \ - "${CONF}" -} - -patch_searxng_settings() { - CONF="$1" - - # Make sure that there is trailing slash at the end of BASE_URL - # see https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Parameter-Expansion - export BASE_URL="${BASE_URL%/}/" - - # update settings.yml - sed -i \ - -e "s|base_url: false|base_url: ${BASE_URL}|g" \ - -e "s/instance_name: \"SearXNG\"/instance_name: \"${INSTANCE_NAME}\"/g" \ - -e "s/autocomplete: \"\"/autocomplete: \"${AUTOCOMPLETE}\"/g" \ - -e "s/ultrasecretkey/$(openssl rand -hex 32)/g" \ - "${CONF}" - - # Morty configuration - - if [ -n "${MORTY_KEY}" ] && [ -n "${MORTY_URL}" ]; then - sed -i -e "s/image_proxy: false/image_proxy: true/g" \ - "${CONF}" - cat >> "${CONF}" <<-EOF - -# Morty configuration -result_proxy: - url: ${MORTY_URL} - key: !!binary "${MORTY_KEY}" -EOF - fi -} - -update_conf() { - FORCE_CONF_UPDATE=$1 - CONF="$2" - NEW_CONF="${2}.new" - OLD_CONF="${2}.old" - REF_CONF="$3" - PATCH_REF_CONF="$4" - - if [ -f "${CONF}" ]; then - if [ "${REF_CONF}" -nt "${CONF}" ]; then - # There is a new version - if [ "$FORCE_CONF_UPDATE" -ne 0 ]; then - # Replace the current configuration - printf '⚠️ Automatically update %s to the new version\n' "${CONF}" - if [ ! -f "${OLD_CONF}" ]; then - printf 'The previous configuration is saved to %s\n' "${OLD_CONF}" - mv "${CONF}" "${OLD_CONF}" - fi - cp "${REF_CONF}" "${CONF}" - $PATCH_REF_CONF "${CONF}" - else - # Keep the current configuration - printf '⚠️ Check new version %s to make sure SearXNG is working properly\n' "${NEW_CONF}" - cp "${REF_CONF}" "${NEW_CONF}" - $PATCH_REF_CONF "${NEW_CONF}" - fi - else - printf 'Use existing %s\n' "${CONF}" - fi - else - printf 'Create %s\n' "${CONF}" - cp "${REF_CONF}" "${CONF}" - $PATCH_REF_CONF "${CONF}" - fi -} - -# searx compatibility: copy /etc/searx/* to /etc/searxng/* -SEARX_CONF=0 -if [ -f "/etc/searx/settings.yml" ]; then - if [ ! -f "${SEARXNG_SETTINGS_PATH}" ]; then - printf '⚠️ /etc/searx/settings.yml is copied to /etc/searxng\n' - cp "/etc/searx/settings.yml" "${SEARXNG_SETTINGS_PATH}" - fi - SEARX_CONF=1 -fi -if [ -f "/etc/searx/uwsgi.ini" ]; then - printf '⚠️ /etc/searx/uwsgi.ini is ignored. Use the volume /etc/searxng\n' - SEARX_CONF=1 -fi -if [ "$SEARX_CONF" -eq "1" ]; then - printf '⚠️ The deprecated volume /etc/searx is mounted. Please update your configuration to use /etc/searxng ⚠️\n' - cat << EOF > /etc/searx/deprecated_volume_read_me.txt -This Docker image uses the volume /etc/searxng -Update your configuration: -* remove uwsgi.ini (or very carefully update your existing uwsgi.ini using https://github.com/searxng/searxng/blob/master/dockerfiles/uwsgi.ini ) -* mount /etc/searxng instead of /etc/searx -EOF -fi -# end of searx compatibility - -# make sure there are uwsgi settings -update_conf "${FORCE_CONF_UPDATE}" "${UWSGI_SETTINGS_PATH}" "/usr/local/searxng/dockerfiles/uwsgi.ini" "patch_uwsgi_settings" - -# make sure there are searxng settings -update_conf "${FORCE_CONF_UPDATE}" "${SEARXNG_SETTINGS_PATH}" "/usr/local/searxng/searx/settings.yml" "patch_searxng_settings" - -# dry run (to update configuration files, then inspect them) -if [ $DRY_RUN -eq 1 ]; then - printf 'Dry run\n' - exit -fi - -unset MORTY_KEY - -# Start uwsgi -printf 'Listen on %s\n' "${BIND_ADDRESS}" -exec su-exec searxng:searxng uwsgi --master --http-socket "${BIND_ADDRESS}" "${UWSGI_SETTINGS_PATH}" diff --git a/dockerfiles/uwsgi.ini b/dockerfiles/uwsgi.ini deleted file mode 100644 index 2d3155976..000000000 --- a/dockerfiles/uwsgi.ini +++ /dev/null @@ -1,46 +0,0 @@ -[uwsgi] -# Who will run the code -uid = searxng -gid = searxng - -# Number of workers (usually CPU count) -workers = %k -threads = 4 - -# The right granted on the created socket -chmod-socket = 666 - -# Plugin to use and interpreter config -single-interpreter = true -master = true -plugin = python3 -lazy-apps = true -enable-threads = true - -# Module to import -module = searx.webapp - -# Virtualenv and python path -pythonpath = /usr/local/searxng/ -chdir = /usr/local/searxng/searx/ - -# automatically set processes name to something meaningful -auto-procname = true - -# Disable request logging for privacy -disable-logging = true -log-5xx = true - -# Set the max size of a request (request-body excluded) -buffer-size = 8192 - -# No keep alive -# See https://github.com/searx/searx-docker/issues/24 -add-header = Connection: close - -# uwsgi serves the static files -static-map = /static=/usr/local/searxng/searx/static -# expires set to one day -static-expires = /* 86400 -static-gzip-all = True -offload-threads = %k diff --git a/docs/_themes/searxng/theme.conf b/docs/_themes/searxng/theme.conf deleted file mode 100644 index 069a40818..000000000 --- a/docs/_themes/searxng/theme.conf +++ /dev/null @@ -1,7 +0,0 @@ -[theme] -inherit = pocoo -stylesheet = searxng.css - -[options] -touch_icon = -globaltoc_maxdepth = 5 \ No newline at end of file diff --git a/docs/admin/searx.limiter.rst b/docs/admin/searx.limiter.rst deleted file mode 100644 index c23635571..000000000 --- a/docs/admin/searx.limiter.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _limiter: - -======= -Limiter -======= - -.. sidebar:: info - - The limiter requires a :ref:`Redis ` database. - -.. contents:: - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.limiter - :members: diff --git a/docs/build-templates/searxng.rst b/docs/build-templates/searxng.rst deleted file mode 100644 index 14b385468..000000000 --- a/docs/build-templates/searxng.rst +++ /dev/null @@ -1,203 +0,0 @@ -.. template evaluated by: ./utils/searxng.sh searxng.doc.rst -.. hint: all dollar-names are variables, dollar sign itself is quoted by: \\$ - -.. START distro-packages - -.. tabs:: - - .. group-tab:: Ubuntu / debian - - .. code-block:: sh - - $ sudo -H apt-get install -y \\ -${debian} - - .. group-tab:: Arch Linux - - .. code-block:: sh - - $ sudo -H pacman -S --noconfirm \\ -${arch} - - .. group-tab:: Fedora / RHEL - - .. code-block:: sh - - $ sudo -H dnf install -y \\ -${fedora} - -.. END distro-packages - -.. START build-packages - -.. tabs:: - - .. group-tab:: Ubuntu / debian - - .. code-block:: sh - - $ sudo -H apt-get install -y \\ -${debian_build} - - .. group-tab:: Arch Linux - - .. code-block:: sh - - $ sudo -H pacman -S --noconfirm \\ -${arch_build} - - .. group-tab:: Fedora / RHEL - - .. code-block:: sh - - $ sudo -H dnf install -y \\ -${fedora_build} - -.. END build-packages - -.. START create user - -.. tabs:: - - .. group-tab:: bash - - .. code-block:: sh - - $ sudo -H useradd --shell /bin/bash --system \\ - --home-dir \"$SERVICE_HOME\" \\ - --comment 'Privacy-respecting metasearch engine' \\ - $SERVICE_USER - - $ sudo -H mkdir \"$SERVICE_HOME\" - $ sudo -H chown -R \"$SERVICE_GROUP:$SERVICE_GROUP\" \"$SERVICE_HOME\" - -.. END create user - -.. START clone searxng - -.. tabs:: - - .. group-tab:: bash - - .. code-block:: sh - - $ sudo -H -u ${SERVICE_USER} -i - (${SERVICE_USER})$ git clone \"$GIT_URL\" \\ - \"$SEARXNG_SRC\" - -.. END clone searxng - -.. START create virtualenv - -.. tabs:: - - .. group-tab:: bash - - .. code-block:: sh - - (${SERVICE_USER})$ python3 -m venv \"${SEARXNG_PYENV}\" - (${SERVICE_USER})$ echo \". ${SEARXNG_PYENV}/bin/activate\" \\ - >> \"$SERVICE_HOME/.profile\" - -.. END create virtualenv - -.. START manage.sh update_packages - -.. tabs:: - - .. group-tab:: bash - - .. code-block:: sh - - $ sudo -H -u ${SERVICE_USER} -i - - (${SERVICE_USER})$ command -v python && python --version - $SEARXNG_PYENV/bin/python - Python 3.8.1 - - # update pip's boilerplate .. - pip install -U pip - pip install -U setuptools - pip install -U wheel - pip install -U pyyaml - - # jump to SearXNG's working tree and install SearXNG into virtualenv - (${SERVICE_USER})$ cd \"$SEARXNG_SRC\" - (${SERVICE_USER})$ pip install -e . - - -.. END manage.sh update_packages - -.. START searxng config - -.. tabs:: - - .. group-tab:: Use default settings - - .. code-block:: sh - - $ sudo -H mkdir -p \"$(dirname ${SEARXNG_SETTINGS_PATH})\" - $ sudo -H cp \"$SEARXNG_SRC/utils/templates/etc/searxng/settings.yml\" \\ - \"${SEARXNG_SETTINGS_PATH}\" - - .. group-tab:: minimal setup - - .. code-block:: sh - - $ sudo -H sed -i -e \"s/ultrasecretkey/\$(openssl rand -hex 16)/g\" \\ - \"$SEARXNG_SETTINGS_PATH\" - -.. END searxng config - -.. START check searxng installation - -.. tabs:: - - .. group-tab:: bash - - .. code-block:: sh - - # enable debug .. - $ sudo -H sed -i -e \"s/debug : False/debug : True/g\" \"$SEARXNG_SETTINGS_PATH\" - - # start webapp - $ sudo -H -u ${SERVICE_USER} -i - (${SERVICE_USER})$ cd ${SEARXNG_SRC} - (${SERVICE_USER})$ export SEARXNG_SETTINGS_PATH=\"${SEARXNG_SETTINGS_PATH}\" - (${SERVICE_USER})$ python searx/webapp.py - - # disable debug - $ sudo -H sed -i -e \"s/debug : True/debug : False/g\" \"$SEARXNG_SETTINGS_PATH\" - -Open WEB browser and visit http://$SEARXNG_INTERNAL_HTTP . If you are inside a -container or in a script, test with curl: - -.. tabs:: - - .. group-tab:: WEB browser - - .. code-block:: sh - - $ xdg-open http://$SEARXNG_INTERNAL_HTTP - - .. group-tab:: curl - - .. code-block:: none - - $ curl --location --verbose --head --insecure $SEARXNG_INTERNAL_HTTP - - * Trying 127.0.0.1:8888... - * TCP_NODELAY set - * Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0) - > HEAD / HTTP/1.1 - > Host: 127.0.0.1:8888 - > User-Agent: curl/7.68.0 - > Accept: */* - > - * Mark bundle as not supporting multiuse - * HTTP 1.0, assume close after body - < HTTP/1.0 200 OK - HTTP/1.0 200 OK - ... - -.. END check searxng installation diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index 2ed85a800..000000000 --- a/docs/conf.py +++ /dev/null @@ -1,208 +0,0 @@ -# -*- coding: utf-8 -*- -# SPDX-License-Identifier: AGPL-3.0-or-later - -import sys, os -from pathlib import Path -from pallets_sphinx_themes import ProjectLink - -from searx import get_setting -from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH - -# Project -------------------------------------------------------------- - -project = 'SearXNG' -copyright = 'SearXNG team' -author = 'SearXNG team' -release, version = VERSION_STRING, VERSION_STRING -SEARXNG_URL = get_setting('server.base_url') or 'https://example.org/searxng' -ISSUE_URL = get_setting('brand.issue_url') -DOCS_URL = get_setting('brand.docs_url') -PUBLIC_INSTANCES = get_setting('brand.public_instances') -PRIVACYPOLICY_URL = get_setting('general.privacypolicy_url') -CONTACT_URL = get_setting('general.contact_url') -WIKI_URL = get_setting('brand.wiki_url') - -SOURCEDIR = Path(__file__).parent.parent / "searx" -os.environ['SOURCEDIR'] = str(SOURCEDIR) - -# hint: sphinx.ext.viewcode won't highlight when 'highlight_language' [1] is set -# to string 'none' [2] -# -# [1] https://www.sphinx-doc.org/en/master/usage/extensions/viewcode.html -# [2] https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-highlight_language - -highlight_language = 'default' - -# General -------------------------------------------------------------- - -master_doc = "index" -source_suffix = '.rst' -numfig = True - -exclude_patterns = ['build-templates/*.rst', 'user/*.md'] - -import searx.engines -import searx.plugins -import searx.webutils - -# import searx.webapp is needed to init the engines & plugins, to init a -# (empty) secret_key is needed. -searx.settings['server']['secret_key'] = '' -import searx.webapp - -searx.engines.load_engines(searx.settings['engines']) - -jinja_contexts = { - 'searx': { - 'engines': searx.engines.engines, - 'plugins': searx.plugins.plugins, - 'version': { - 'node': os.getenv('NODE_MINIMUM_VERSION') - }, - 'enabled_engine_count': sum(not x.disabled for x in searx.engines.engines.values()), - 'categories': searx.engines.categories, - 'categories_as_tabs': {c: searx.engines.categories[c] for c in searx.settings['categories_as_tabs']}, - }, -} -jinja_filters = { - 'group_engines_in_tab': searx.webutils.group_engines_in_tab, -} - -# Let the Jinja template in configured_engines.rst access documented_modules -# to automatically link documentation for modules if it exists. -def setup(app): - ENGINES_DOCNAME = 'user/configured_engines' - - def before_read_docs(app, env, docnames): - assert ENGINES_DOCNAME in docnames - docnames.remove(ENGINES_DOCNAME) - docnames.append(ENGINES_DOCNAME) - # configured_engines must come last so that sphinx already has - # discovered the python module documentations - - def source_read(app, docname, source): - if docname == ENGINES_DOCNAME: - jinja_contexts['searx']['documented_modules'] = app.env.domains['py'].modules - - app.connect('env-before-read-docs', before_read_docs) - app.connect('source-read', source_read) - -# usage:: lorem :patch:`f373169` ipsum -extlinks = {} - -# upstream links -extlinks['wiki'] = ('https://github.com/searxng/searxng/wiki/%s', ' %s') -extlinks['pull'] = ('https://github.com/searxng/searxng/pull/%s', 'PR %s') -extlinks['pull-searx'] = ('https://github.com/searx/searx/pull/%s', 'PR %s') - -# links to custom brand -extlinks['origin'] = (GIT_URL + '/blob/' + GIT_BRANCH + '/%s', 'git://%s') -extlinks['patch'] = (GIT_URL + '/commit/%s', '#%s') -extlinks['docs'] = (DOCS_URL + '/%s', 'docs: %s') -extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: %s') -extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '%s') -#extlinks['role'] = ( -# 'https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-%s', '') -extlinks['duref'] = ( - 'https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#%s', '%s') -extlinks['durole'] = ( - 'https://docutils.sourceforge.io/docs/ref/rst/roles.html#%s', '%s') -extlinks['dudir'] = ( - 'https://docutils.sourceforge.io/docs/ref/rst/directives.html#%s', '%s') -extlinks['ctan'] = ( - 'https://ctan.org/pkg/%s', 'CTAN: %s') - -extensions = [ - 'sphinx.ext.imgmath', - 'sphinx.ext.extlinks', - 'sphinx.ext.viewcode', - "sphinx.ext.autodoc", - "sphinx.ext.intersphinx", - "pallets_sphinx_themes", - "sphinx_issues", # https://github.com/sloria/sphinx-issues/blob/master/README.rst - "sphinx_jinja", # https://github.com/tardyp/sphinx-jinja - "sphinxcontrib.programoutput", # https://github.com/NextThought/sphinxcontrib-programoutput - 'linuxdoc.kernel_include', # Implementation of the 'kernel-include' reST-directive. - 'linuxdoc.rstFlatTable', # Implementation of the 'flat-table' reST-directive. - 'linuxdoc.kfigure', # Sphinx extension which implements scalable image handling. - "sphinx_tabs.tabs", # https://github.com/djungelorm/sphinx-tabs - 'myst_parser', # https://www.sphinx-doc.org/en/master/usage/markdown.html - 'notfound.extension', # https://github.com/readthedocs/sphinx-notfound-page -] - -autodoc_default_options = { - 'member-order': 'groupwise', -} - -myst_enable_extensions = [ - "replacements", "smartquotes" -] - -suppress_warnings = ['myst.domains'] - -intersphinx_mapping = { - "python": ("https://docs.python.org/3/", None), - "babel" : ("https://babel.readthedocs.io/en/latest/", None), - "flask": ("https://flask.palletsprojects.com/", None), - "flask_babel": ("https://python-babel.github.io/flask-babel/", None), - # "werkzeug": ("https://werkzeug.palletsprojects.com/", None), - "jinja": ("https://jinja.palletsprojects.com/", None), - "linuxdoc" : ("https://return42.github.io/linuxdoc/", None), - "sphinx" : ("https://www.sphinx-doc.org/en/master/", None), - "redis": ('https://redis.readthedocs.io/en/stable/', None), -} - -issues_github_path = "searxng/searxng" - -# HTML ----------------------------------------------------------------- - -# https://searxng.github.io/searxng --> '/searxng/' -# https://docs.searxng.org --> '/' -notfound_urls_prefix = '/' - -sys.path.append(os.path.abspath('_themes')) -sys.path.insert(0, os.path.abspath("../utils/")) -html_theme_path = ['_themes'] -html_theme = "searxng" - -# sphinx.ext.imgmath setup -html_math_renderer = 'imgmath' -imgmath_image_format = 'svg' -imgmath_font_size = 14 -# sphinx.ext.imgmath setup END - -html_show_sphinx = False -html_theme_options = {"index_sidebar_logo": True} -html_context = {"project_links": [] } -html_context["project_links"].append(ProjectLink("Source", GIT_URL + '/tree/' + GIT_BRANCH)) - -if WIKI_URL: - html_context["project_links"].append(ProjectLink("Wiki", WIKI_URL)) -if PUBLIC_INSTANCES: - html_context["project_links"].append(ProjectLink("Public instances", PUBLIC_INSTANCES)) -if ISSUE_URL: - html_context["project_links"].append(ProjectLink("Issue Tracker", ISSUE_URL)) -if PRIVACYPOLICY_URL: - html_context["project_links"].append(ProjectLink("Privacy Policy", PRIVACYPOLICY_URL)) -if CONTACT_URL: - html_context["project_links"].append(ProjectLink("Contact", CONTACT_URL)) - -html_sidebars = { - "**": [ - "globaltoc.html", - "project.html", - "relations.html", - "searchbox.html", - "sourcelink.html" - ], -} -singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]} -html_logo = "../src/brand/searxng-wordmark.svg" -html_title = "SearXNG Documentation ({})".format(VERSION_STRING) -html_show_sourcelink = True - -# LaTeX ---------------------------------------------------------------- - -latex_documents = [ - (master_doc, "searxng-{}.tex".format(VERSION_STRING), html_title, author, "manual") -] diff --git a/docs/dev/csv_table.txt b/docs/dev/csv_table.txt deleted file mode 100644 index 8a1454137..000000000 --- a/docs/dev/csv_table.txt +++ /dev/null @@ -1,6 +0,0 @@ -stub col row 1, column, "loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam -voluptua." -stub col row 1, "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", column -stub col row 1, column, column diff --git a/docs/dev/engines/online/loc.rst b/docs/dev/engines/online/loc.rst deleted file mode 100644 index 2ed76cd81..000000000 --- a/docs/dev/engines/online/loc.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _loc engine: - -=================== -Library of Congress -=================== - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.loc - :members: diff --git a/docs/dev/engines/online/mastodon.rst b/docs/dev/engines/online/mastodon.rst deleted file mode 100644 index dc372f121..000000000 --- a/docs/dev/engines/online/mastodon.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _mastodon engine: - -======== -Mastodon -======== - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.mastodon - :members: diff --git a/docs/dev/engines/online/moviepilot.rst b/docs/dev/engines/online/moviepilot.rst deleted file mode 100644 index ba35574e5..000000000 --- a/docs/dev/engines/online/moviepilot.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _moviepilot engine: - -========== -Moviepilot -========== - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.moviepilot - :members: diff --git a/docs/dev/engines/online/mrs.rst b/docs/dev/engines/online/mrs.rst deleted file mode 100644 index 671f35ea5..000000000 --- a/docs/dev/engines/online/mrs.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _mrs engine: - -========================= -Matrix Rooms Search (MRS) -========================= - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.mrs - :members: diff --git a/docs/dev/engines/online/mwmbl.rst b/docs/dev/engines/online/mwmbl.rst deleted file mode 100644 index 8eac7d7c5..000000000 --- a/docs/dev/engines/online/mwmbl.rst +++ /dev/null @@ -1,27 +0,0 @@ -.. _Mwmbl engine: - -============ -Mwmbl Engine -============ - -.. contents:: - :depth: 2 - :local: - :backlinks: entry - - -.. _mwmbl web engine: - -Mwmbl WEB -========= - -.. automodule:: searx.engines.mwmbl - :members: - - -.. _mwmbl autocomplete: - -Mwmbl Autocomplete -================== - -.. autofunction:: searx.autocomplete.mwmbl diff --git a/docs/dev/engines/online/odysee.rst b/docs/dev/engines/online/odysee.rst deleted file mode 100644 index 75be1ad11..000000000 --- a/docs/dev/engines/online/odysee.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _odysee engine: - -====== -Odysee -====== - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.odysee - :members: diff --git a/docs/dev/engines/online/qwant.rst b/docs/dev/engines/online/qwant.rst deleted file mode 100644 index 66ad302d1..000000000 --- a/docs/dev/engines/online/qwant.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _qwant engine: - -===== -Qwant -===== - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.qwant - :members: diff --git a/docs/dev/engines/online/radio_browser.rst b/docs/dev/engines/online/radio_browser.rst deleted file mode 100644 index a150e59c5..000000000 --- a/docs/dev/engines/online/radio_browser.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _RadioBrowser engine: - -============ -RadioBrowser -============ - -.. contents:: - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.radio_browser - :members: diff --git a/docs/dev/engines/online/seekr.rst b/docs/dev/engines/online/seekr.rst deleted file mode 100644 index fcbc7bf82..000000000 --- a/docs/dev/engines/online/seekr.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _seekr engine: - -============= -Seekr Engines -============= - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.seekr - :members: diff --git a/docs/dev/engines/online/wallhaven.rst b/docs/dev/engines/online/wallhaven.rst deleted file mode 100644 index b473293ca..000000000 --- a/docs/dev/engines/online/wallhaven.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _wallhaven engine: - -========= -Wallhaven -========= - -.. contents:: Contents - :depth: 2 - :local: - :backlinks: entry - -.. automodule:: searx.engines.wallhaven - :members: diff --git a/docs/user/.gitignore b/docs/user/.gitignore deleted file mode 100644 index 2e1fa2d52..000000000 --- a/docs/user/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.md \ No newline at end of file diff --git a/examples/basic_engine.py b/examples/basic_engine.py deleted file mode 100644 index c7d02afa6..000000000 --- a/examples/basic_engine.py +++ /dev/null @@ -1,25 +0,0 @@ - -categories = ['general'] # optional - - -def request(query, params): - '''pre-request callback - params: - method : POST/GET - headers : {} - data : {} # if method == POST - url : '' - category: 'search category' - pageno : 1 # number of the requested page - ''' - - params['url'] = 'https://host/%s' % query - - return params - - -def response(resp): - '''post-response callback - resp: requests response object - ''' - return [{'url': '', 'title': '', 'content': ''}] diff --git a/genindex.html b/genindex.html new file mode 100644 index 000000000..5c7873701 --- /dev/null +++ b/genindex.html @@ -0,0 +1,1815 @@ + + + + + + + + Index — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | F + | G + | H + | I + | J + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | Z + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

J

+ + +
+ +

L

+ + + +
+ +

M

+ + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

Q

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + +
+ +

W

+ + + +
+ +

Z

+ + + +
+ + + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..cafbfd646 --- /dev/null +++ b/index.html @@ -0,0 +1,221 @@ + + + + + + + + Welcome to SearXNG — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + +
+
+
+
+ +
+

Welcome to SearXNG

+
+

Search without being tracked.

+
+

SearXNG is a free internet metasearch engine which aggregates results from more +than 70 search services. Users are neither tracked nor profiled. Additionally, +SearXNG can be used over Tor for online anonymity.

+

Get started with SearXNG by using one of the instances listed at searx.space. +If you don’t trust anyone, you can set up your own, see Installation.

+ + + + +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/manage b/manage deleted file mode 100755 index 49bfca4b0..000000000 --- a/manage +++ /dev/null @@ -1,420 +0,0 @@ -#!/usr/bin/env bash -# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*- -# SPDX-License-Identifier: AGPL-3.0-or-later - -# shellcheck disable=SC2034 -main_cmd="$(basename "$0")" - -# shellcheck source=utils/lib.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib.sh" - -# shellcheck source=utils/lib.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_nvm.sh" - -# shellcheck source=utils/lib_sxng_data.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_data.sh" - -# shellcheck source=utils/lib_sxng_weblate.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_weblate.sh" - -# shellcheck source=utils/lib_sxng_static.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_static.sh" - -# shellcheck source=utils/lib_sxng_node.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_node.sh" - -# shellcheck source=utils/lib_sxng_themes.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_themes.sh" - -# shellcheck source=utils/lib_sxng_test.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_test.sh" - -# shellcheck source=utils/lib_go.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_go.sh" - -# shellcheck source=utils/lib_redis.sh -source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_redis.sh" - -PATH="${REPO_ROOT}/node_modules/.bin:${PATH}" - -# config - -PYOBJECTS="searx" -PY_SETUP_EXTRAS='[test]' -GECKODRIVER_VERSION="v0.33.0" -# SPHINXOPTS= -BLACK_OPTIONS=("--target-version" "py311" "--line-length" "120" "--skip-string-normalization") -BLACK_TARGETS=("--exclude" "(searx/static|searx/languages.py)" "--include" 'searxng.msg|\.pyi?$' "searx" "searxng_extra" "tests") - -_dev_redis_sock="/usr/local/searxng-redis/run/redis.sock" -# set SEARXNG_REDIS_URL if it is not defined and "{_dev_redis_sock}" exists. -if [ -S "${_dev_redis_sock}" ] && [ -z "${SEARXNG_REDIS_URL}" ]; then - export SEARXNG_REDIS_URL="unix://${_dev_redis_sock}?db=0" -fi - -pylint.FILES() { - - # List files tagged by comment: - # - # # lint: pylint - # - # These py files are linted by test.pylint() - - grep -l -r --include \*.py '^#[[:blank:]]*lint:[[:blank:]]*pylint' searx searxng_extra tests - find . -name searxng.msg -} - -YAMLLINT_FILES=() -while IFS= read -r line; do - YAMLLINT_FILES+=("$line") -done <<< "$(git ls-files './tests/*.yml' './searx/*.yml' './utils/templates/etc/searxng/*.yml')" - -RST_FILES=( - 'README.rst' -) - -PYLINT_SEARXNG_DISABLE_OPTION="\ -I,C,R,\ -W0105,W0212,W0511,W0603,W0613,W0621,W0702,W0703,W1401,\ -E1136" -PYLINT_ADDITIONAL_BUILTINS_FOR_ENGINES="traits,supported_languages,language_aliases,logger,categories" -PYLINT_OPTIONS="-m pylint -j 0 --rcfile .pylintrc" - -help() { - nvm.help - cat <&1 \ - | prefix_stdout "${_Blue}BUILDENV${_creset} " - ) - return "${PIPESTATUS[0]}" -} - -docker.push() { - docker.build push -} - -docker.buildx() { - docker.build buildx -} - -# shellcheck disable=SC2119 -docker.build() { - pyenv.install - - local SEARXNG_GIT_VERSION - local VERSION_GITCOMMIT - local GITHUB_USER - local SEARXNG_IMAGE_NAME - local BUILD - - build_msg DOCKER build - # run installation in a subprocess and activate pyenv - - # See https://www.shellcheck.net/wiki/SC1001 and others .. - # shellcheck disable=SC2031,SC2230,SC2002,SC2236,SC2143,SC1001 - ( set -e - pyenv.activate - - # Check if it is a git repository - if [ ! -d .git ]; then - die 1 "This is not Git repository" - fi - if [ ! -x "$(which git)" ]; then - die 1 "git is not installed" - fi - - if ! git remote get-url origin 2> /dev/null; then - die 1 "there is no remote origin" - fi - - # This is a git repository - git update-index -q --refresh - python -m searx.version freeze - eval "$(python -m searx.version)" - - # Get the last git commit id - VERSION_GITCOMMIT=$(echo "$VERSION_TAG" | cut -d+ -f2) - build_msg DOCKER "Last commit : $VERSION_GITCOMMIT" - - # define the docker image name - GITHUB_USER=$(echo "${GIT_URL}" | sed 's/.*github\.com\/\([^\/]*\).*/\1/') - SEARXNG_IMAGE_NAME="${SEARXNG_IMAGE_NAME:-${GITHUB_USER:-searxng}/searxng}" - - BUILD="build" - if [ "$1" = "buildx" ]; then - # buildx includes the push option - CACHE_TAG="${SEARXNG_IMAGE_NAME}:latest-build-cache" - BUILD="buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --push --cache-from=type=registry,ref=$CACHE_TAG --cache-to=type=registry,ref=$CACHE_TAG,mode=max" - shift - fi - build_msg DOCKER "Build command: ${BUILD}" - - # build Docker image - build_msg DOCKER "Building image ${SEARXNG_IMAGE_NAME}:${SEARXNG_GIT_VERSION}" - # shellcheck disable=SC2086 - docker $BUILD \ - --build-arg BASE_IMAGE="${DEPENDENCIES_IMAGE_NAME}" \ - --build-arg GIT_URL="${GIT_URL}" \ - --build-arg SEARXNG_DOCKER_TAG="${DOCKER_TAG}" \ - --build-arg SEARXNG_GIT_VERSION="${VERSION_STRING}" \ - --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \ - --build-arg LABEL_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ - --build-arg LABEL_VCS_REF="$(git rev-parse HEAD)" \ - --build-arg LABEL_VCS_URL="${GIT_URL}" \ - --build-arg TIMESTAMP_SETTINGS="$(git log -1 --format="%cd" --date=unix -- searx/settings.yml)" \ - --build-arg TIMESTAMP_UWSGI="$(git log -1 --format="%cd" --date=unix -- dockerfiles/uwsgi.ini)" \ - -t "${SEARXNG_IMAGE_NAME}:latest" -t "${SEARXNG_IMAGE_NAME}:${DOCKER_TAG}" . - - if [ "$1" = "push" ]; then - docker push "${SEARXNG_IMAGE_NAME}:latest" - docker push "${SEARXNG_IMAGE_NAME}:${DOCKER_TAG}" - fi - ) - dump_return $? -} - -# shellcheck disable=SC2119 -gecko.driver() { - pyenv.install - - build_msg INSTALL "gecko.driver" - # run installation in a subprocess and activate pyenv - ( set -e - pyenv.activate - - INSTALLED_VERSION=$(geckodriver -V 2> /dev/null | head -1 | awk '{ print "v" $2}') || INSTALLED_VERSION="" - set +e - if [ "${INSTALLED_VERSION}" = "${GECKODRIVER_VERSION}" ]; then - build_msg INSTALL "geckodriver already installed" - return - fi - PLATFORM="$(python3 -c 'import platform; print(platform.system().lower(), platform.architecture()[0])')" - case "$PLATFORM" in - "linux 32bit" | "linux2 32bit") ARCH="linux32";; - "linux 64bit" | "linux2 64bit") ARCH="linux64";; - "windows 32 bit") ARCH="win32";; - "windows 64 bit") ARCH="win64";; - "mac 64bit") ARCH="macos";; - esac - GECKODRIVER_URL="https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-$ARCH.tar.gz"; - - build_msg GECKO "Installing ${PY_ENV_BIN}/geckodriver from $GECKODRIVER_URL" - - FILE="$(mktemp)" - wget -qO "$FILE" -- "$GECKODRIVER_URL" && tar xz -C "${PY_ENV_BIN}" -f "$FILE" geckodriver - rm -- "$FILE" - chmod 755 -- "${PY_ENV_BIN}/geckodriver" - ) - dump_return $? -} - -pygments.less() { - build_msg PYGMENTS "searxng_extra/update/update_pygments.py" - if ! pyenv.cmd python searxng_extra/update/update_pygments.py; then - build_msg PYGMENTS "building LESS files for pygments failed" - return 1 - fi - return 0 -} - -py.build() { - build_msg BUILD "python package ${PYDIST}" - pyenv.cmd python setup.py \ - sdist -d "${PYDIST}" \ - bdist_wheel --bdist-dir "${PYBUILD}" -d "${PYDIST}" -} - -py.clean() { - build_msg CLEAN pyenv - ( set -e - pyenv.drop - [ "$VERBOSE" = "1" ] && set -x - rm -rf "${PYDIST}" "${PYBUILD}" "${PY_ENV}" ./.tox ./*.egg-info - find . -name '*.pyc' -exec rm -f {} + - find . -name '*.pyo' -exec rm -f {} + - find . -name __pycache__ -exec rm -rf {} + - ) -} - -pyenv.check() { - cat < OK') -EOF -} - -pyenv.install() { - - if ! pyenv.OK; then - py.clean > /dev/null - fi - if pyenv.install.OK > /dev/null; then - return 0 - fi - - ( set -e - pyenv - build_msg PYENV "[install] pip install -e 'searx${PY_SETUP_EXTRAS}'" - "${PY_ENV_BIN}/python" -m pip install -e ".${PY_SETUP_EXTRAS}" - buildenv - ) - local exit_val=$? - if [ ! $exit_val -eq 0 ]; then - die 42 "error while pip install (${PY_ENV_BIN})" - fi -} - -pyenv.uninstall() { - build_msg PYENV "[pyenv.uninstall] uninstall packages: ${PYOBJECTS}" - pyenv.cmd python setup.py develop --uninstall 2>&1 \ - | prefix_stdout "${_Blue}PYENV ${_creset}[pyenv.uninstall] " - -} - -pypi.upload() { - py.clean - py.build - # https://github.com/pypa/twine - pyenv.cmd twine upload "${PYDIST}"/* -} - -pypi.upload.test() { - py.clean - py.build - pyenv.cmd twine upload -r testpypi "${PYDIST}"/* -} - -format.python() { - build_msg TEST "[format.python] black \$BLACK_TARGETS" - pyenv.cmd black "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}" - dump_return $? -} - - -PYLINT_FILES=() -while IFS= read -r line; do - PYLINT_FILES+=("$line") -done <<< "$(pylint.FILES)" - -# shellcheck disable=SC2119 -main() { - - local _type - local cmd="$1"; shift - - if [ "$cmd" == "" ]; then - help - err_msg "missing command" - return 42 - fi - - case "$cmd" in - --getenv) var="$1"; echo "${!var}";; - --help) help;; - --*) - help - err_msg "unknown option $cmd" - return 42 - ;; - *) - _type="$(type -t "$cmd")" - if [ "$_type" != 'function' ]; then - err_msg "unknown command: $cmd / use --help" - return 42 - else - "$cmd" "$@" - fi - ;; - esac -} - -main "$@" diff --git a/objects.inv b/objects.inv new file mode 100644 index 000000000..495968cb4 Binary files /dev/null and b/objects.inv differ diff --git a/own-instance.html b/own-instance.html new file mode 100644 index 000000000..2e229b640 --- /dev/null +++ b/own-instance.html @@ -0,0 +1,201 @@ + + + + + + + + Why use a private instance? — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + +
+
+
+
+ +
+

Why use a private instance?

+ + +

Public instances are open to everyone who has access to its URL. Usually, these +are operated by unknown parties (from the users’ point of view). Private +instances can be used by a select group of people. It is for example a SearXNG of +group of friends or a company which can be accessed through VPN. Also it can be +single user one which runs on the user’s laptop.

+

To gain more insight on how these instances work let’s dive into how SearXNG +protects its users.

+
+

How does SearXNG protect privacy?

+

SearXNG protects the privacy of its users in multiple ways regardless of the type +of the instance (private, public). Removal of private data from search requests +comes in three forms:

+
+
    +
  1. removal of private data from requests going to search services

  2. +
  3. not forwarding anything from a third party services through search services +(e.g. advertisement)

  4. +
  5. removal of private data from requests going to the result pages

  6. +
+
+

Removing private data means not sending cookies to external search engines and +generating a random browser profile for every request. Thus, it does not matter +if a public or private instance handles the request, because it is anonymized in +both cases. IP addresses will be the IP of the instance. But SearXNG can be +configured to use proxy or Tor. Result proxy is supported, too.

+

SearXNG does not serve ads or tracking content unlike most search services. So +private data is not forwarded to third parties who might monetize it. Besides +protecting users from search services, both referring page and search query are +hidden from visited result pages.

+
+

What are the consequences of using public instances?

+

If someone uses a public instance, they have to trust the administrator of that +instance. This means that the user of the public instance does not know whether +their requests are logged, aggregated and sent or sold to a third party.

+

Also, public instances without proper protection are more vulnerable to abusing +the search service, In this case the external service in exchange returns +CAPTCHAs or bans the IP of the instance. Thus, search requests return less +results.

+
+
+

I see. What about private instances?

+

If users run their own instances, everything is in their +control: the source code, logging settings and private data. Unknown instance +administrators do not have to be trusted.

+

Furthermore, as the default settings of their instance is editable, there is no +need to use cookies to tailor SearXNG to their needs. So preferences will not be +reset to defaults when clearing browser cookies. As settings are stored on +their computer, it will not be accessible to others as long as their computer is +not compromised.

+
+
+
+

Conclusion

+

Always use an instance which is operated by people you trust. The privacy +features of SearXNG are available to users no matter what kind of instance they +use.

+

If someone is on the go or just wants to try SearXNG for the first time public +instances are the best choices. Additionally, public instance are making a +world a better place, because those who cannot or do not want to run an +instance, have access to a privacy respecting search service.

+
+
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index dd24a34f8..000000000 --- a/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "dependencies": { - "eslint": "^8.50.0", - "pyright": "^1.1.329" - }, - "scripts": { - "clean": "rm -Rf node_modules package-lock.json" - } -} diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 000000000..c6595a39b --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,542 @@ + + + + + + + + Python Module Index — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + + +
+
+
+
+ + +

Python Module Index

+ +
+ s +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ s
+ searx +
    + searx.babel_extract +
    + searx.botdetection +
    + searx.botdetection.http_accept +
    + searx.botdetection.http_accept_encoding +
    + searx.botdetection.http_accept_language +
    + searx.botdetection.http_connection +
    + searx.botdetection.http_user_agent +
    + searx.botdetection.ip_limit +
    + searx.botdetection.ip_lists +
    + searx.botdetection.limiter +
    + searx.botdetection.link_token +
    + searx.enginelib +
    + searx.enginelib.traits +
    + searx.engines +
    + searx.engines.annas_archive +
    + searx.engines.archlinux +
    + searx.engines.bing +
    + searx.engines.bing_images +
    + searx.engines.bing_news +
    + searx.engines.bing_videos +
    + searx.engines.brave +
    + searx.engines.bt4g +
    + searx.engines.command +
    + searx.engines.dailymotion +
    + searx.engines.demo_offline +
    + searx.engines.demo_online +
    + searx.engines.duckduckgo +
    + searx.engines.duckduckgo_definitions +
    + searx.engines.duckduckgo_images +
    + searx.engines.duckduckgo_weather +
    + searx.engines.elasticsearch +
    + searx.engines.google +
    + searx.engines.google_images +
    + searx.engines.google_news +
    + searx.engines.google_scholar +
    + searx.engines.google_videos +
    + searx.engines.lemmy +
    + searx.engines.mediawiki +
    + searx.engines.meilisearch +
    + searx.engines.mongodb +
    + searx.engines.mysql_server +
    + searx.engines.peertube +
    + searx.engines.piped +
    + searx.engines.postgresql +
    + searx.engines.recoll +
    + searx.engines.redis_server +
    + searx.engines.sepiasearch +
    + searx.engines.solr +
    + searx.engines.sqlite +
    + searx.engines.startpage +
    + searx.engines.tagesschau +
    + searx.engines.tineye +
    + searx.engines.torznab +
    + searx.engines.wikidata +
    + searx.engines.wikipedia +
    + searx.engines.xpath +
    + searx.engines.yacy +
    + searx.engines.yahoo +
    + searx.engines.zlibrary +
    + searx.exceptions +
    + searx.infopage +
    + searx.locales +
    + searx.plugins.tor_check +
    + searx.redisdb +
    + searx.redislib +
    + searx.search.processors.abstract +
    + searx.search.processors.offline +
    + searx.search.processors.online +
    + searx.search.processors.online_currency +
    + searx.search.processors.online_dictionary +
    + searx.search.processors.online_url_search +
    + searx.sxng_locales +
    + searx.utils +
+ searxng_extra +
    + searxng_extra.standalone_searx +
    + searxng_extra.update.update_ahmia_blacklist +
    + searxng_extra.update.update_currencies +
    + searxng_extra.update.update_engine_descriptions +
    + searxng_extra.update.update_engine_traits +
    + searxng_extra.update.update_external_bangs +
    + searxng_extra.update.update_firefox_version +
    + searxng_extra.update.update_osm_keys_tags +
    + searxng_extra.update.update_pygments +
    + searxng_extra.update.update_wikidata_units +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/pyrightconfig-ci.json b/pyrightconfig-ci.json deleted file mode 100644 index 9082b0790..000000000 --- a/pyrightconfig-ci.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "venvPath": "local", - "venv": "py3", - "include": [ - "searx", - "searxng_extra", - "tests" - ], - "typeCheckingMode": "off" -} diff --git a/pyrightconfig.json b/pyrightconfig.json deleted file mode 100644 index 56573c75f..000000000 --- a/pyrightconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "venvPath": "local", - "venv": "py3", - "include": [ - "searx", - "searxng_extra", - "tests" - ] -} diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index ec5818e7f..000000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,23 +0,0 @@ -mock==5.1.0 -nose2[coverage_plugin]==0.14.0 -cov-core==1.15.0 -black==22.12.0 -pylint==3.0.2 -splinter==0.19.0 -selenium==4.14.0 -twine==4.0.2 -Pallets-Sphinx-Themes==2.1.1 -Sphinx<=7.1.2; python_version == '3.8' -Sphinx==7.2.6; python_version > '3.8' -sphinx-issues==3.0.1 -sphinx-jinja==2.0.2 -sphinx-tabs==3.4.4 -sphinxcontrib-programoutput==0.17 -sphinx-autobuild==2021.3.14 -sphinx-notfound-page==1.0.0 -myst-parser==2.0.0 -linuxdoc==20230827 -aiounittest==1.4.2 -yamllint==1.32.0 -wlc==1.13 -coloredlogs==15.0.1 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 5a19a723c..000000000 --- a/requirements.txt +++ /dev/null @@ -1,19 +0,0 @@ -certifi==2023.7.22 -babel==2.13.1 -flask-babel==4.0.0 -flask==3.0.0 -jinja2==3.1.2 -lxml==4.9.3 -pygments==2.16.1 -python-dateutil==2.8.2 -pyyaml==6.0.1 -httpx[http2]==0.24.1 -Brotli==1.1.0 -uvloop==0.19.0 -httpx-socks[asyncio]==0.7.7 -setproctitle==1.3.3 -redis==4.6.0 -markdown-it-py==3.0.0 -typing_extensions==4.8.0 -fasttext-predict==0.9.2.1 -pytomlpp==1.0.13 diff --git a/search.html b/search.html new file mode 100644 index 000000000..0a93b2661 --- /dev/null +++ b/search.html @@ -0,0 +1,125 @@ + + + + + + + + Search — SearXNG Documentation (2023.8.11+905ce2a6f) + + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + + +
+ +
+ + +
+
+
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 000000000..869af20e6 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["admin/answer-captcha", "admin/api", "admin/architecture", "admin/buildhosts", "admin/index", "admin/installation", "admin/installation-apache", "admin/installation-docker", "admin/installation-nginx", "admin/installation-scripts", "admin/installation-searxng", "admin/installation-uwsgi", "admin/plugins", "admin/settings/index", "admin/settings/settings", "admin/settings/settings_brand", "admin/settings/settings_categories_as_tabs", "admin/settings/settings_engine", "admin/settings/settings_general", "admin/settings/settings_outgoing", "admin/settings/settings_redis", "admin/settings/settings_search", "admin/settings/settings_server", "admin/settings/settings_ui", "admin/update-searxng", "dev/contribution_guide", "dev/engines/demo/demo_offline", "dev/engines/demo/demo_online", "dev/engines/engine_overview", "dev/engines/enginelib", "dev/engines/engines", "dev/engines/index", "dev/engines/mediawiki", "dev/engines/offline/command-line-engines", "dev/engines/offline/nosql-engines", "dev/engines/offline/search-indexer-engines", "dev/engines/offline/sql-engines", "dev/engines/offline_concept", "dev/engines/online/annas_archive", "dev/engines/online/archlinux", "dev/engines/online/bing", "dev/engines/online/brave", "dev/engines/online/bt4g", "dev/engines/online/dailymotion", "dev/engines/online/duckduckgo", "dev/engines/online/google", "dev/engines/online/lemmy", "dev/engines/online/peertube", "dev/engines/online/piped", "dev/engines/online/recoll", "dev/engines/online/startpage", "dev/engines/online/tagesschau", "dev/engines/online/torznab", "dev/engines/online/wikipedia", "dev/engines/online/yacy", "dev/engines/online/yahoo", "dev/engines/online/zlibrary", "dev/engines/online_url_search/tineye", "dev/engines/xpath", "dev/index", "dev/lxcdev", "dev/makefile", "dev/plugins", "dev/quickstart", "dev/reST", "dev/search_api", "dev/searxng_extra/index", "dev/searxng_extra/standalone_searx.py", "dev/searxng_extra/update", "dev/translation", "index", "own-instance", "src/index", "src/searx.babel_extract", "src/searx.botdetection", "src/searx.exceptions", "src/searx.infopage", "src/searx.locales", "src/searx.plugins.tor_check", "src/searx.redisdb", "src/searx.redislib", "src/searx.search", "src/searx.search.processors", "src/searx.utils", "user/about", "user/configured_engines", "user/index", "user/search-syntax", "utils/index", "utils/lxc.sh", "utils/searxng.sh"], "filenames": ["admin/answer-captcha.rst", "admin/api.rst", "admin/architecture.rst", "admin/buildhosts.rst", "admin/index.rst", "admin/installation.rst", "admin/installation-apache.rst", "admin/installation-docker.rst", "admin/installation-nginx.rst", "admin/installation-scripts.rst", "admin/installation-searxng.rst", "admin/installation-uwsgi.rst", "admin/plugins.rst", "admin/settings/index.rst", "admin/settings/settings.rst", "admin/settings/settings_brand.rst", "admin/settings/settings_categories_as_tabs.rst", "admin/settings/settings_engine.rst", "admin/settings/settings_general.rst", "admin/settings/settings_outgoing.rst", "admin/settings/settings_redis.rst", "admin/settings/settings_search.rst", "admin/settings/settings_server.rst", "admin/settings/settings_ui.rst", "admin/update-searxng.rst", "dev/contribution_guide.rst", "dev/engines/demo/demo_offline.rst", "dev/engines/demo/demo_online.rst", "dev/engines/engine_overview.rst", "dev/engines/enginelib.rst", "dev/engines/engines.rst", "dev/engines/index.rst", "dev/engines/mediawiki.rst", "dev/engines/offline/command-line-engines.rst", "dev/engines/offline/nosql-engines.rst", "dev/engines/offline/search-indexer-engines.rst", "dev/engines/offline/sql-engines.rst", "dev/engines/offline_concept.rst", "dev/engines/online/annas_archive.rst", "dev/engines/online/archlinux.rst", "dev/engines/online/bing.rst", "dev/engines/online/brave.rst", "dev/engines/online/bt4g.rst", "dev/engines/online/dailymotion.rst", "dev/engines/online/duckduckgo.rst", "dev/engines/online/google.rst", "dev/engines/online/lemmy.rst", "dev/engines/online/peertube.rst", "dev/engines/online/piped.rst", "dev/engines/online/recoll.rst", "dev/engines/online/startpage.rst", "dev/engines/online/tagesschau.rst", "dev/engines/online/torznab.rst", "dev/engines/online/wikipedia.rst", "dev/engines/online/yacy.rst", "dev/engines/online/yahoo.rst", "dev/engines/online/zlibrary.rst", "dev/engines/online_url_search/tineye.rst", "dev/engines/xpath.rst", "dev/index.rst", "dev/lxcdev.rst", "dev/makefile.rst", "dev/plugins.rst", "dev/quickstart.rst", "dev/reST.rst", "dev/search_api.rst", "dev/searxng_extra/index.rst", "dev/searxng_extra/standalone_searx.py.rst", "dev/searxng_extra/update.rst", "dev/translation.rst", "index.rst", "own-instance.rst", "src/index.rst", "src/searx.babel_extract.rst", "src/searx.botdetection.rst", "src/searx.exceptions.rst", "src/searx.infopage.rst", "src/searx.locales.rst", "src/searx.plugins.tor_check.rst", "src/searx.redisdb.rst", "src/searx.redislib.rst", "src/searx.search.rst", "src/searx.search.processors.rst", "src/searx.utils.rst", "user/about.rst", "user/configured_engines.rst", "user/index.rst", "user/search-syntax.rst", "utils/index.rst", "utils/lxc.sh.rst", "utils/searxng.sh.rst"], "titles": ["Answer CAPTCHA from server\u2019s IP", "Administration API", "Architecture", "Buildhosts", "Administrator documentation", "Installation", "Apache", "Docker Container", "NGINX", "Installation Script", "Step by step installation", "uWSGI", "Plugins builtin", "Settings", "settings.yml", "brand:", "categories_as_tabs:", "engine:", "general:", "outgoing:", "redis:", "search:", "server:", "ui:", "SearXNG maintenance", "How to contribute", "Demo Offline Engine", "Demo Online Engine", "Engine Overview", "Engine Library", "SearXNG\u2019s engines loader", "Engine Implementations", "MediaWiki Engine", "Command Line Engines", "NoSQL databases", "Local Search APIs", "SQL Engines", "Offline Concept", "Anna\u2019s Archive", "Arch Linux", "Bing Engines", "Brave Engines", "BT4G", "Dailymotion", "DukcDukGo Engines", "Google Engines", "Lemmy", "Peertube Engines", "Piped", "Recoll Engine", "Startpage Engines", "Tagesschau API", "Torznab WebAPI", "Wikimedia", "Yacy", "Yahoo Engine", "Z-Library", "Tineye", "XPath Engine", "Developer documentation", "Developing in Linux Containers", "Makefile & ./manage", "Plugins", "Development Quickstart", "reST primer", "Search API", "Tooling box searxng_extra", "searxng_extra/standalone_searx.py", "searxng_extra/update/", "Translation", "Welcome to SearXNG", "Why use a private instance?", "Source-Code", "Custom message extractor (i18n)", "Bot Detection", "SearXNG Exceptions", "Online /info", "Locales", "Tor check plugin", "Redis DB", "Redis Library", "Search", "Search processors", "Utility functions for the engines", "About SearXNG", "Configured Engines", "User information", "Search syntax", "DevOps tooling box", "utils/lxc.sh", "utils/searxng.sh"], "terms": {"With": [0, 6, 7, 14, 33, 36, 38, 42, 56, 60, 61, 64, 89], "tunnel": 0, "we": [0, 2, 3, 6, 8, 9, 10, 11, 14, 17, 26, 27, 40, 41, 43, 44, 45, 50, 57, 60, 61, 62, 63, 64, 66, 69, 72, 77, 84, 88, 89], "can": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 14, 16, 17, 19, 20, 23, 24, 25, 28, 29, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 46, 49, 50, 51, 53, 57, 60, 61, 62, 63, 64, 67, 68, 70, 71, 73, 74, 77, 79, 80, 83, 85, 86, 87, 89, 90], "send": [0, 11, 17, 19, 21, 29, 50, 63, 71, 74, 75, 84], "request": [0, 6, 10, 12, 17, 19, 21, 22, 25, 27, 29, 31, 32, 35, 37, 39, 40, 43, 44, 45, 47, 50, 52, 53, 55, 57, 58, 61, 62, 63, 64, 69, 71, 72, 75, 76, 78, 81, 82], "solv": [0, 17], "block": [0, 10, 11, 19, 22, 39, 59, 74, 75, 80, 89], "thi": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 48, 49, 50, 51, 52, 53, 56, 57, 60, 61, 62, 63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 79, 80, 84, 87, 89], "If": [0, 3, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 19, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 36, 37, 44, 45, 46, 55, 58, 60, 61, 62, 63, 64, 68, 70, 71, 74, 77, 80, 83, 84, 88, 89], "your": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 22, 23, 24, 25, 26, 27, 32, 33, 34, 35, 36, 37, 49, 53, 57, 59, 61, 62, 63, 64, 67, 69, 70, 74, 84, 87, 89], "searxng": [0, 1, 2, 3, 4, 5, 9, 11, 12, 14, 15, 17, 18, 19, 20, 22, 23, 25, 28, 29, 31, 32, 34, 36, 37, 38, 41, 42, 43, 44, 45, 48, 51, 53, 56, 57, 59, 61, 62, 63, 64, 65, 67, 69, 72, 73, 74, 76, 78, 79, 80, 83, 85, 86, 87, 88], "instanc": [0, 1, 2, 5, 6, 7, 8, 10, 11, 17, 20, 22, 23, 24, 29, 32, 33, 34, 35, 36, 37, 45, 46, 47, 48, 52, 54, 57, 60, 61, 62, 65, 70, 74, 76, 77, 80, 84, 89, 90], "i": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 75, 77, 78, 80, 82, 83, 85, 86, 89, 90], "host": [0, 3, 6, 7, 8, 10, 11, 15, 25, 34, 60, 70, 89], "exampl": [0, 1, 2, 6, 10, 11, 13, 14, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 37, 38, 40, 42, 44, 45, 53, 56, 59, 60, 61, 65, 67, 68, 71, 74, 77, 78, 83, 87, 88, 89], "org": [0, 1, 3, 10, 11, 12, 15, 19, 22, 23, 28, 32, 36, 39, 44, 47, 49, 53, 58, 61, 64, 68, 69, 74, 78, 83, 84, 89], "login": [0, 9, 10, 20, 60], "user": [0, 4, 7, 9, 11, 12, 14, 16, 17, 19, 20, 21, 25, 28, 29, 33, 40, 41, 44, 45, 46, 50, 58, 60, 61, 64, 70, 71, 74, 77, 78, 83, 84, 85, 87, 89, 90], "you": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 37, 40, 46, 49, 50, 52, 53, 57, 60, 61, 63, 64, 65, 67, 69, 70, 71, 84, 87, 88, 89, 90], "setup": [0, 3, 4, 5, 6, 7, 8, 9, 10, 17, 24, 37, 60, 61, 63, 64, 74, 79, 88], "proxi": [0, 2, 6, 7, 10, 17, 19, 22, 24, 28, 29, 48, 60, 65, 71, 74, 88, 89], "simpli": [0, 25, 57, 60, 61, 63, 65, 90], "sock": [0, 2, 10, 11, 19, 20, 24, 74, 79, 90], "127": [0, 6, 8, 10, 22, 34, 60, 90], "0": [0, 1, 2, 6, 7, 8, 10, 11, 14, 17, 19, 20, 21, 22, 24, 25, 28, 34, 43, 50, 57, 58, 60, 61, 64, 65, 67, 74, 79, 80, 81, 83, 85, 88, 89, 90], "1": [0, 1, 3, 6, 7, 8, 10, 11, 17, 19, 20, 21, 22, 32, 34, 43, 50, 58, 60, 61, 64, 65, 67, 74, 75, 77, 80, 81, 82, 83, 85, 89, 90], "8080": [0, 7, 10, 17, 19, 60, 89], "q": [0, 1, 7, 10, 23, 44, 50, 61, 65], "n": [0, 33, 60, 89], "d": [0, 6, 7, 8, 11, 44, 68, 83, 89], "The": [0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 14, 17, 19, 21, 22, 23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 50, 51, 52, 53, 54, 56, 57, 58, 61, 62, 64, 65, 68, 69, 71, 73, 74, 75, 77, 78, 80, 83, 84, 85, 88, 89, 90], "localhost": [0, 6, 7, 8, 20, 35, 54], "abov": [0, 6, 10, 14, 24, 25, 34, 35, 36, 44, 50, 60, 64, 65, 89], "test": [0, 3, 6, 7, 8, 10, 20, 25, 36, 51, 53, 59, 60, 63, 70, 74, 79, 83, 89, 90], "desktop": [0, 23, 49, 60, 61], "curl": [0, 10], "x": [0, 6, 8, 10, 11, 22, 64, 72, 89], "http": [0, 1, 2, 3, 4, 7, 9, 10, 11, 15, 17, 19, 21, 22, 23, 24, 25, 28, 29, 32, 35, 36, 37, 40, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 57, 58, 60, 61, 62, 63, 64, 68, 69, 72, 78, 83, 89, 90], "ipecho": 0, "net": [0, 53, 54], "plain": [0, 53], "In": [0, 6, 7, 8, 9, 10, 11, 14, 16, 17, 19, 20, 24, 25, 26, 27, 28, 29, 31, 32, 34, 41, 45, 48, 50, 59, 62, 64, 66, 71, 74, 85, 87, 88, 89, 90], "set": [0, 2, 3, 4, 6, 7, 8, 10, 11, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 36, 37, 38, 42, 43, 45, 46, 48, 49, 50, 52, 53, 54, 56, 58, 60, 61, 62, 64, 65, 70, 71, 74, 75, 77, 78, 79, 80, 82, 83, 85, 86, 87, 88, 89, 90], "web": [0, 7, 10, 18, 21, 22, 23, 28, 29, 35, 41, 44, 49, 50, 53, 55, 57, 60, 61, 62, 74, 83, 89], "browser": [0, 7, 10, 18, 21, 23, 25, 44, 53, 60, 61, 71, 74, 83, 84, 87, 89], "open": [0, 6, 7, 10, 12, 23, 25, 34, 36, 45, 51, 60, 61, 64, 65, 70, 71, 84, 89], "network": [0, 10, 17, 19, 48, 54, 74, 89], "socks5": [0, 17, 28, 29], "see": [0, 3, 5, 6, 7, 8, 10, 11, 14, 17, 19, 20, 22, 24, 25, 29, 30, 32, 34, 36, 40, 41, 43, 44, 45, 47, 48, 50, 52, 53, 58, 60, 61, 62, 64, 65, 68, 70, 73, 74, 77, 80, 82, 83, 84, 87, 89], "screenshot": 0, "below": [0, 9, 10, 11, 17, 19, 25, 28, 33, 34, 36, 62, 64, 74, 83], "check": [0, 3, 4, 7, 12, 20, 25, 28, 33, 38, 41, 56, 61, 69, 70, 72, 74, 77, 83, 89, 90], "us": [0, 3, 5, 6, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 60, 61, 63, 64, 66, 67, 68, 69, 70, 74, 76, 77, 79, 80, 82, 83, 85, 86, 87, 88, 89, 90], "now": [0, 6, 8, 10, 24, 35, 60, 61, 62, 63], "search": [0, 2, 4, 7, 10, 12, 13, 14, 16, 19, 23, 25, 26, 28, 29, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 64, 67, 70, 71, 72, 74, 75, 77, 78, 83, 85, 86], "engin": [0, 1, 4, 10, 13, 14, 16, 19, 21, 25, 35, 38, 39, 42, 43, 46, 48, 51, 52, 53, 54, 56, 57, 59, 62, 64, 65, 67, 68, 70, 71, 72, 74, 75, 77, 81, 82, 86], "have": [0, 5, 6, 7, 8, 9, 10, 11, 17, 24, 25, 28, 32, 34, 35, 36, 37, 50, 53, 60, 61, 63, 64, 71, 74, 77, 84, 89], "issu": [0, 10, 11, 15, 17, 28, 60, 84, 89], "qwant": [0, 10, 21, 65, 67, 85], "com": [0, 2, 7, 9, 10, 15, 17, 23, 29, 31, 40, 42, 43, 44, 45, 53, 54, 55, 57, 60, 61, 62, 63, 64, 65, 68, 83, 89, 90], "firefox": [0, 3, 10, 61, 68, 84], "bind_address": [0, 7, 10, 14, 22, 61], "port": [0, 7, 10, 22, 25, 28, 29, 34, 61, 89], "specifi": [0, 7, 11, 14, 17, 19, 29, 45, 46, 65], "local": [0, 1, 2, 6, 7, 8, 10, 11, 17, 19, 20, 23, 24, 26, 28, 29, 31, 41, 43, 44, 45, 49, 50, 53, 54, 60, 61, 62, 64, 68, 70, 72, 74, 76, 79, 83, 85, 89, 90], "dynam": 0, "applic": [0, 11, 22, 52, 60, 64, 67, 75, 85], "level": [0, 25, 57, 64], "forward": [0, 6, 8, 71, 72, 89], "work": [0, 7, 10, 23, 25, 28, 29, 33, 38, 44, 59, 61, 63, 71, 74, 86, 89], "alloc": 0, "socket": [0, 6, 7, 8, 11, 20, 22, 60, 90], "listen": [0, 6, 8, 11, 89], "side": [0, 9, 23, 64, 68], "whenev": [0, 89], "connect": [0, 2, 8, 10, 11, 19, 20, 24, 36, 37, 60, 70, 74, 79], "made": [0, 19, 60, 68], "over": [0, 24, 43, 50, 57, 60, 64, 70, 76, 77, 89], "secur": [0, 10, 11, 33, 70], "channel": 0, "protocol": [0, 7, 19, 83], "determin": [0, 29, 31, 68, 74, 77], "where": [0, 11, 22, 28, 33, 36, 37, 40, 41, 49, 51, 53, 60, 61, 64, 78, 80, 84], "remot": [0, 61, 74, 89], "machin": 0, "act": 0, "do": [0, 3, 5, 6, 8, 9, 11, 12, 17, 25, 26, 27, 34, 35, 36, 47, 50, 57, 60, 61, 63, 64, 71, 77, 83, 86, 89], "execut": [0, 17, 29, 33, 61, 63, 73, 89], "command": [0, 3, 4, 6, 10, 11, 20, 24, 25, 31, 37, 60, 61, 64, 67, 69, 70, 80], "just": [0, 1, 24, 26, 27, 34, 35, 36, 40, 60, 61, 63, 64, 71, 84, 89], "config": [1, 10, 11, 17, 24, 28, 37, 60, 64, 69, 74, 88], "autocomplet": [1, 2, 7, 10, 21, 65], "categori": [1, 10, 12, 16, 17, 28, 29, 36, 40, 41, 42, 52, 64, 65, 67, 68, 81, 85, 86], "map": [1, 11, 16, 29, 30, 33, 39, 41, 44, 45, 50, 53, 55, 58, 64, 67, 68, 77, 83, 86, 87], "imag": [1, 3, 4, 9, 10, 16, 22, 24, 27, 41, 53, 57, 59, 60, 61, 65, 67, 86, 87, 89], "default_local": [1, 10, 23], "default_them": [1, 10, 23], "simpl": [1, 10, 23, 26, 27, 28, 30, 34, 35, 36, 45, 57, 58, 60, 61, 63, 65, 80, 89], "enabl": [1, 6, 7, 8, 10, 11, 14, 17, 18, 19, 23, 25, 28, 29, 32, 33, 35, 36, 53, 61, 64, 65, 74, 78, 85], "true": [1, 2, 6, 8, 11, 17, 18, 19, 23, 28, 29, 30, 32, 34, 35, 37, 40, 41, 43, 44, 45, 50, 52, 53, 58, 62, 64, 65, 74, 77, 79, 83], "name": [1, 6, 8, 10, 11, 12, 14, 17, 23, 24, 26, 27, 29, 30, 33, 34, 35, 36, 37, 38, 41, 42, 46, 48, 50, 54, 56, 58, 59, 60, 62, 68, 72, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 89], "openstreetmap": [1, 68, 85], "shortcut": [1, 17, 26, 27, 28, 29, 30, 33, 34, 35, 38, 42, 48, 54, 56, 64], "osm": [1, 28, 68, 85], "arch": [1, 3, 6, 8, 10, 11, 14, 17, 31, 64, 85], "linux": [1, 3, 6, 7, 8, 10, 11, 14, 17, 31, 59, 64, 70, 85, 89], "wiki": [1, 7, 8, 10, 14, 15, 17, 32, 53, 61, 64, 68, 85, 89], "al": [1, 17, 41, 53, 83, 85], "googl": [1, 10, 14, 17, 21, 29, 31, 61, 65, 67, 84, 85], "goi": [1, 85], "fals": [1, 2, 10, 14, 15, 17, 18, 19, 22, 23, 26, 27, 29, 34, 36, 41, 43, 52, 58, 62, 64, 65, 74, 76, 77, 83], "bitbucket": [1, 58, 85], "bb": [1, 85], "instance_nam": [1, 2, 7, 10, 18], "searx": [1, 5, 6, 8, 10, 11, 14, 15, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 64, 67, 68, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 89, 90], "de": [1, 10, 11, 17, 21, 23, 32, 36, 39, 41, 45, 58, 77, 83, 85, 90], "deutsch": 1, "german": [1, 17], "en": [1, 10, 11, 17, 18, 19, 21, 23, 28, 32, 40, 41, 45, 50, 53, 55, 58, 61, 64, 76, 77, 83], "english": [1, 17, 21, 44, 77, 83], "eo": [1, 64, 83], "esperanto": 1, "plugin": [1, 3, 4, 10, 11, 25, 36, 59, 64, 65, 70, 72, 81], "rewrit": [1, 10, 12, 32], "vim": [1, 10, 12, 65], "like": [1, 3, 6, 7, 10, 12, 17, 19, 23, 25, 28, 34, 35, 36, 40, 41, 42, 44, 61, 63, 64, 67, 78, 83], "hotkei": [1, 10, 12], "safe_search": [1, 2, 10, 21, 58], "embed": [1, 7, 64], "websit": [1, 17, 29, 44, 57, 64, 68, 75, 84], "past": 1, "html": [1, 3, 6, 10, 11, 17, 21, 25, 28, 29, 36, 42, 44, 45, 50, 53, 60, 61, 64, 74, 76, 83], "site": [1, 4, 17, 24, 28, 52, 58, 64, 65, 68, 90], "url": [1, 2, 6, 7, 10, 12, 15, 17, 20, 22, 23, 25, 27, 28, 32, 36, 40, 43, 44, 45, 47, 48, 52, 53, 55, 57, 58, 60, 61, 62, 67, 68, 71, 72, 74, 79, 83, 89], "valu": [1, 7, 10, 17, 18, 21, 22, 28, 29, 30, 32, 33, 34, 36, 37, 38, 44, 45, 48, 50, 58, 61, 64, 65, 68, 74, 75, 76, 77, 80, 83, 90], "ar": [1, 3, 7, 9, 10, 11, 14, 16, 17, 19, 23, 24, 25, 29, 31, 33, 34, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 48, 50, 51, 52, 53, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 68, 69, 70, 72, 73, 74, 77, 80, 83, 85, 87, 89], "customiz": 1, "form": [1, 10, 18, 38, 50, 56, 64, 71], "method": [1, 5, 10, 11, 24, 28, 35, 48, 64, 72, 73, 76, 83], "post": [1, 10, 25, 46, 50, 60, 62, 65, 74, 85], "action": [1, 11, 32], "input": [1, 17, 50, 64], "type": [1, 9, 10, 22, 25, 29, 30, 32, 33, 35, 45, 50, 53, 58, 59, 61, 62, 65, 68, 71, 74, 75, 76, 82, 83, 89], "text": [1, 28, 32, 35, 40, 44, 45, 49, 53, 56, 64, 74, 83], "hidden": [1, 17, 71], "gener": [1, 2, 4, 6, 7, 10, 11, 13, 16, 17, 25, 29, 31, 32, 36, 41, 50, 56, 58, 67, 68, 71, 74, 77, 83, 84, 86, 87], "social": [1, 16, 67], "media": [1, 16, 51, 67], "languag": [1, 10, 11, 17, 21, 23, 28, 29, 32, 38, 39, 40, 43, 44, 45, 47, 53, 55, 56, 58, 61, 64, 65, 68, 74, 76, 77, 81, 83, 86], "lang": [1, 11, 55, 58, 61, 67, 68, 81, 83], "all": [1, 6, 7, 9, 10, 11, 14, 16, 17, 19, 21, 24, 25, 27, 28, 29, 32, 34, 35, 36, 37, 41, 42, 44, 45, 48, 53, 58, 60, 61, 62, 63, 64, 65, 67, 68, 69, 74, 76, 77, 78, 80, 81, 82, 83, 88, 89, 90], "date": [1, 28, 57], "filter": [1, 10, 21, 26, 27, 38, 43, 44, 48, 50, 56, 58, 61, 65, 68, 83, 87], "time_rang": [1, 28, 42, 45, 58, 65, 81], "month": [1, 28, 40, 45, 58, 65, 67], "revers": [2, 7, 44, 45, 57, 89], "apach": [2, 4, 9, 11, 24, 70, 74, 89, 90], "nginx": [2, 4, 9, 24, 60, 70, 74, 88, 89, 90], "step": [2, 4, 5, 9, 24, 25, 60, 63, 70, 90], "instal": [2, 3, 4, 6, 7, 8, 11, 20, 25, 34, 35, 36, 37, 59, 60, 62, 63, 64, 70, 88], "herein": 2, "find": [2, 7, 10, 17, 20, 24, 25, 33, 34, 35, 40, 44, 57, 77, 84, 87, 89], "some": [2, 6, 7, 8, 9, 10, 11, 14, 17, 21, 22, 24, 25, 32, 40, 41, 44, 45, 50, 53, 58, 60, 61, 63, 64, 66, 74, 84, 88, 89, 90], "hint": [2, 11, 29, 60, 64], "suggest": [2, 58, 62, 70], "about": [2, 17, 24, 25, 29, 41, 60, 61, 63, 70, 86, 89], "typic": [2, 61, 64], "infrastructur": [2, 11, 24], "start": [2, 6, 7, 8, 9, 10, 11, 25, 28, 30, 37, 57, 59, 61, 63, 70, 89], "refer": [2, 6, 8, 9, 40, 49, 50, 64, 68, 71, 81, 83], "public": [2, 7, 10, 12, 28, 33, 34, 35, 36, 45, 64, 84], "which": [2, 9, 10, 11, 17, 19, 25, 26, 27, 28, 29, 31, 32, 33, 36, 37, 43, 46, 48, 52, 56, 58, 60, 61, 63, 64, 65, 67, 68, 69, 70, 71, 74, 77, 80, 84, 85], "build": [2, 4, 5, 10, 17, 20, 27, 29, 43, 45, 50, 52, 55, 57, 58, 59, 60, 63, 68, 77, 89, 90], "up": [2, 5, 6, 7, 8, 10, 11, 17, 20, 24, 27, 44, 60, 61, 64, 70, 77], "maintain": [2, 7, 10, 11, 24, 38, 42, 56, 60, 64, 66, 70, 88], "script": [2, 4, 5, 6, 7, 8, 10, 11, 24, 50, 53, 60, 61, 67, 68, 70, 77, 80, 88, 89, 90], "from": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 19, 21, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 52, 53, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 83, 84, 87, 89, 90], "our": [2, 5, 7, 9, 25, 60, 61, 63, 64, 72, 88, 89], "devop": [2, 9, 24, 60, 70, 89], "tool": [2, 4, 9, 10, 24, 25, 37, 49, 59, 60, 61, 63, 64, 67, 70, 89], "box": [2, 9, 24, 59, 60, 62, 70, 89], "activ": [2, 6, 10, 16, 17, 25, 29, 30, 41, 42, 60, 62, 65, 67, 74, 87, 90], "server": [2, 4, 7, 9, 10, 13, 14, 19, 36, 57, 60, 61, 65, 67, 70, 74, 80, 84, 88, 89, 90], "limit": [2, 6, 7, 8, 10, 11, 17, 19, 22, 24, 28, 33, 34, 35, 36, 37, 40, 41, 45, 53, 58, 64, 72, 80], "image_proxi": [2, 10, 22, 65], "ui": [2, 4, 6, 8, 10, 11, 13, 16, 17, 28, 29, 40, 41, 45, 48, 50, 64, 69, 70, 77, 85], "static_use_hash": [2, 6, 8, 10, 11, 23], "etc": [2, 6, 7, 8, 10, 11, 14, 24, 25, 41, 60, 74, 81, 89, 90], "yml": [2, 4, 6, 7, 8, 10, 11, 13, 17, 24, 26, 27, 34, 35, 36, 37, 46, 50, 60, 61, 62, 64, 65, 78, 79, 83, 85, 90], "use_default_set": [2, 13], "debug": [2, 4, 9, 10, 18, 60, 61], "2": [2, 10, 11, 19, 21, 28, 43, 50, 57, 58, 61, 63, 64, 65, 67, 74, 80, 83, 85, 87], "duckduckgo": [2, 10, 14, 21, 65, 68, 85, 87], "overwritten": [2, 10, 19, 28], "searxng_secret": [2, 10, 22], "secret_kei": [2, 10, 14, 22, 80], "ultrasecretkei": [2, 10, 14, 22], "ensur": [2, 10, 25], "correct": [2, 10, 22, 32, 40, 74], "inbound": [2, 10, 22], "link": [2, 10, 11, 15, 18, 22, 23, 42, 44, 45, 48, 52, 53, 57, 58, 59, 60, 68, 74, 84], "searxng_url": [2, 10, 22, 60, 61, 89, 90], "base_url": [2, 7, 10, 17, 22, 28, 32, 35, 40, 46, 47, 49, 52, 54, 61, 83], "locat": [2, 6, 8, 10, 11, 13, 22, 39, 49, 50, 53, 64, 69, 76], "redi": [2, 4, 7, 10, 11, 13, 22, 24, 59, 60, 70, 72, 74, 90], "databas": [2, 10, 20, 22, 24, 31, 36, 37, 64, 74, 80], "searxng_redis_url": [2, 10, 20, 61], "unix": [2, 6, 8, 10, 11, 20, 74, 79], "usr": [2, 6, 7, 8, 10, 11, 20, 24, 60, 61, 74, 79, 90], "run": [2, 3, 6, 8, 9, 10, 11, 18, 20, 22, 24, 25, 33, 35, 59, 60, 62, 63, 64, 67, 74, 79, 84, 88, 90], "db": [2, 7, 10, 11, 20, 24, 34, 36, 60, 70, 72, 74, 80], "To": [3, 6, 7, 9, 10, 11, 17, 20, 24, 25, 26, 27, 28, 29, 34, 36, 37, 38, 41, 43, 44, 45, 50, 53, 58, 60, 61, 63, 64, 68, 69, 71, 74, 77, 84, 87, 89, 90], "get": [3, 4, 6, 8, 9, 10, 11, 12, 20, 24, 25, 26, 27, 28, 35, 37, 40, 41, 43, 44, 45, 50, 52, 53, 60, 61, 63, 64, 65, 67, 68, 70, 74, 75, 76, 77, 79, 80, 83, 84, 89, 90], "best": [3, 29, 44, 61, 64, 71, 77], "result": [3, 10, 12, 17, 19, 21, 23, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 52, 56, 57, 58, 62, 64, 65, 67, 70, 71, 74, 75, 77, 81, 83, 84], "": [3, 4, 5, 7, 10, 17, 22, 23, 24, 25, 28, 29, 31, 34, 36, 37, 40, 41, 42, 43, 44, 45, 47, 48, 50, 53, 56, 58, 59, 60, 61, 63, 64, 68, 69, 70, 71, 72, 73, 74, 78, 80, 83, 84, 89, 90], "recommend": [3, 5, 10, 11, 24, 25, 50, 61, 64], "addit": [3, 6, 11, 16, 17, 19, 22, 29, 34, 36, 37, 38, 42, 45, 46, 54, 56, 61, 64, 73, 74, 77, 85], "packag": [3, 4, 7, 11, 29, 34, 36, 37, 60, 61, 64, 73, 89, 90], "util": [3, 6, 8, 9, 10, 22, 24, 34, 36, 37, 60, 61, 62, 67, 70, 72, 88], "sh": [3, 6, 7, 8, 9, 24, 34, 36, 37, 60, 61, 62, 64, 70, 83, 88], "task": [3, 9, 10, 11, 60, 61, 63, 64, 74, 89], "onc": [3, 24, 60, 61, 80, 83, 89], "sudo": [3, 6, 7, 8, 9, 10, 11, 20, 24, 34, 36, 37, 60, 61, 62, 64, 88, 89, 90], "h": [3, 6, 7, 8, 9, 10, 11, 12, 20, 24, 32, 33, 60, 61, 64, 67, 88, 89, 90], "ubuntu": [3, 6, 8, 10, 11, 61, 64, 85, 89], "debian": [3, 7, 8, 10, 64], "fedora": [3, 6, 8, 10, 11, 64, 89], "rhel": [3, 6, 8, 10, 11, 64], "apt": [3, 6, 7, 8, 10, 64], "y": [3, 10, 12, 32, 64, 85], "python3": [3, 10, 11, 67], "dev": [3, 6, 8, 10, 54, 61, 64, 85], "babel": [3, 10, 29, 41, 45, 50, 69, 73, 77], "venv": [3, 10], "uwsgi": [3, 4, 5, 7, 8, 9, 10, 24, 60, 70, 90], "git": [3, 7, 9, 10, 14, 21, 25, 28, 29, 31, 49, 60, 61, 62, 63, 64, 66, 68, 69, 73, 88, 89, 90], "essenti": [3, 10, 61, 74], "libxslt": [3, 10], "zlib1g": [3, 10], "libffi": [3, 10], "libssl": [3, 10], "pacman": [3, 6, 8, 10, 64], "noconfirm": [3, 10], "python": [3, 10, 11, 17, 19, 22, 28, 29, 34, 36, 37, 59, 60, 63, 64, 73, 74, 77, 83, 90], "pip": [3, 10, 34, 36, 37, 61, 62], "lxml": [3, 10, 83], "base": [3, 7, 10, 12, 22, 28, 32, 33, 34, 35, 44, 45, 47, 48, 49, 53, 58, 60, 65, 74, 75, 82, 83, 84, 89], "devel": [3, 10], "libxml2": [3, 10], "dnf": [3, 6, 8, 10, 64], "openssl": [3, 10, 19], "docuemt": 3, "graphviz": 3, "imagemagick": [3, 64], "texliv": 3, "xetex": 3, "librsvg2": 3, "bin": [3, 7, 10, 11, 61, 85, 89], "latex": 3, "extra": [3, 6, 10, 19], "font": 3, "dejavu": 3, "latexmk": 3, "shellcheck": [3, 64, 89], "librsvg": 3, "core": [3, 11, 29, 45, 48, 50, 77], "latexextra": 3, "ttf": 3, "gd": [3, 83], "collect": [3, 34, 35, 42, 50, 57, 80], "fontsrecommend": 3, "san": 3, "serif": 3, "mono": 3, "dvisvgm": 3, "most": [3, 6, 17, 21, 29, 35, 36, 38, 44, 50, 56, 60, 61, 68, 71, 83, 90], "requir": [3, 6, 11, 12, 22, 24, 25, 28, 30, 34, 35, 36, 37, 57, 58, 61, 64, 65, 67, 68, 74, 75, 90], "py": [3, 6, 8, 10, 21, 22, 28, 29, 33, 34, 35, 36, 37, 45, 49, 53, 59, 61, 64, 66, 76, 77, 79, 90], "scratch": 3, "make": [3, 7, 10, 17, 25, 29, 31, 44, 45, 58, 59, 60, 63, 64, 69, 71, 74, 86, 89], "For": [3, 6, 8, 9, 10, 11, 17, 21, 25, 28, 29, 32, 34, 36, 38, 40, 42, 45, 48, 50, 53, 56, 60, 61, 64, 65, 68, 69, 72, 77, 84, 89], "better": [3, 6, 7, 8, 10, 28, 32, 40, 71, 84], "math": [3, 59], "process": [3, 7, 11, 17, 37, 60, 61], "onli": [3, 7, 9, 10, 11, 14, 17, 23, 25, 28, 29, 33, 36, 40, 41, 42, 43, 44, 46, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 69, 74, 77, 80, 83, 84, 89], "pdf": [3, 28, 38, 56], "creation": [3, 64], "also": [3, 6, 7, 10, 11, 19, 24, 25, 30, 34, 37, 38, 44, 57, 60, 63, 64, 71, 74, 77, 83, 84, 85, 87], "equat": [3, 59], "when": [3, 6, 7, 9, 10, 12, 17, 20, 23, 29, 30, 33, 37, 40, 41, 42, 45, 50, 61, 62, 63, 64, 67, 71, 72, 75, 77, 82, 83, 84], "output": [3, 17, 61, 64, 65, 68, 89, 90], "abl": [3, 22, 25, 38, 42, 56, 64, 74, 87], "support": [3, 8, 10, 11, 17, 19, 25, 28, 29, 34, 35, 36, 41, 44, 45, 48, 52, 53, 55, 57, 58, 62, 64, 65, 68, 71, 76, 77, 82, 83, 84, 85, 87, 89], "without": [3, 7, 11, 17, 21, 28, 29, 34, 50, 52, 61, 67, 68, 70, 71, 76, 77, 84, 89], "cdn": 3, "render": [3, 76], "ext": 3, "imgmath": 3, "extens": [3, 11, 38, 64], "here": [3, 11, 16, 19, 24, 25, 28, 29, 35, 36, 40, 53, 58, 60, 61, 63, 64, 67, 89], "extract": [3, 53, 72, 73, 83], "conf": [3, 6, 8, 11, 64, 90], "file": [3, 6, 7, 8, 10, 11, 13, 14, 16, 17, 19, 23, 24, 25, 29, 33, 36, 38, 42, 49, 52, 56, 57, 60, 61, 67, 68, 69, 73, 76, 77, 86, 89], "html_math_render": 3, "imgmath_image_format": 3, "svg": 3, "imgmath_font_s": 3, "14": [3, 61, 83], "show": [3, 6, 10, 11, 24, 52, 53, 60, 61, 64, 87, 89], "warn": [3, 41, 61, 64, 67, 89], "dot": [3, 61], "found": [3, 11, 31, 37, 55, 57, 61, 83], "qualiti": [3, 41, 53, 61, 64, 70], "www": [3, 6, 10, 19, 36, 40, 43, 44, 64, 68, 83, 89], "cannot": [3, 45, 64, 71, 74, 84, 87], "displai": [3, 7, 10, 12, 16, 17, 18, 28, 29, 34, 36, 50, 64, 85], "imgmath_latex": 3, "static": [3, 6, 8, 10, 11, 23, 24, 59, 63, 68, 74], "analysi": 3, "brand": [4, 10, 13, 22, 25, 60, 61, 90], "outgo": [4, 10, 13, 17], "categories_as_tab": [4, 13, 17, 64, 85], "docker": [4, 5, 9, 60, 61, 70, 85], "contain": [4, 5, 10, 11, 12, 23, 30, 33, 37, 43, 44, 59, 64, 68, 69, 70, 74, 75, 81, 84, 88, 89], "line": [4, 6, 8, 25, 31, 37, 61, 67, 69, 89], "creat": [4, 6, 7, 8, 9, 11, 22, 29, 30, 33, 36, 38, 43, 60, 61, 64, 65, 69, 80, 89], "depend": [4, 6, 8, 12, 24, 28, 39, 44, 50, 60, 61, 64, 65, 74], "configur": [4, 6, 7, 8, 11, 14, 17, 19, 29, 30, 31, 35, 37, 41, 60, 61, 64, 65, 69, 70, 71, 73, 74, 83, 86], "origin": [4, 17, 24, 26, 29, 34, 36, 45, 50, 56, 57, 60, 61, 64, 69, 74], "distributor": 4, "mainten": [4, 9, 60, 61, 70, 90], "pitfal": 4, "tyrant": 4, "mode": [4, 6, 10, 22, 36, 54, 64, 89], "disabl": [4, 10, 11, 12, 14, 16, 17, 18, 19, 21, 26, 27, 29, 36, 41, 60, 62, 64, 65, 85, 89], "log": [4, 7, 11, 18, 60, 68, 71, 74, 84, 90], "how": [4, 5, 6, 7, 8, 9, 11, 14, 17, 36, 44, 53, 57, 59, 60, 61, 63, 64, 70, 86], "updat": [4, 7, 10, 17, 25, 30, 53, 59, 61, 62, 66, 69, 77, 90], "inspect": [4, 9, 60, 90], "migrat": [4, 5], "stai": [4, 5], "tune": [4, 5], "answer": [4, 19, 60, 61, 64, 70, 71], "captcha": [4, 10, 21, 45, 50, 70, 71, 74, 75], "ip": [4, 6, 8, 12, 19, 50, 60, 67, 70, 71, 74, 78, 89], "api": [4, 14, 17, 27, 28, 29, 31, 32, 39, 40, 42, 43, 46, 47, 48, 49, 52, 53, 54, 57, 59, 68, 69, 70, 74], "data": [4, 28, 29, 33, 34, 35, 36, 42, 45, 50, 51, 61, 64, 68, 71, 83, 84], "emb": [4, 43, 48, 64], "bar": [4, 64, 79, 83, 84], "architectur": [4, 9, 48, 70, 90], "builtin": [4, 62, 70], "buildhost": [4, 60, 61, 63, 70, 88, 90], "develop": [4, 10, 13, 25, 32, 61, 64, 66, 70, 83, 84, 88, 89], "doc": [4, 6, 10, 11, 15, 17, 29, 36, 42, 59, 60, 64, 83, 84, 89], "lint": [4, 61], "shell": [4, 10, 33, 60, 89], "re": [5, 7, 24, 61, 85], "spoilt": 5, "choic": [5, 40, 41, 64, 71, 83, 88], "choos": [5, 25, 63], "prefer": [5, 6, 8, 9, 10, 16, 17, 18, 40, 44, 45, 64, 65, 71, 76, 78, 87], "an": [5, 10, 14, 16, 17, 19, 20, 23, 25, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 40, 42, 43, 45, 48, 50, 51, 52, 53, 57, 58, 60, 61, 64, 65, 67, 69, 70, 71, 74, 75, 77, 81, 83, 84, 87], "excel": 5, "illustr": 5, "ani": [5, 6, 8, 9, 19, 25, 36, 41, 42, 46, 52, 53, 55, 61, 64, 65, 67, 76, 77, 83], "special": [5, 6, 8, 11, 28, 29, 33, 39, 45, 52, 86], "grow": [5, 24], "rapidli": [5, 24], "should": [5, 6, 8, 11, 17, 24, 25, 29, 44, 45, 50, 52, 53, 60, 61, 63, 64, 77], "regularli": [5, 24], "read": [5, 10, 20, 25, 57, 58], "section": [5, 6, 8, 9, 10, 14, 17, 19, 31, 33, 34, 35, 36, 40, 58, 60, 61, 62, 64, 78, 89], "want": [5, 7, 10, 11, 17, 19, 23, 25, 35, 36, 46, 61, 64, 65, 69, 71, 84, 88, 89], "upgrad": [5, 24, 61, 68], "exist": [5, 7, 10, 14, 17, 21, 24, 25, 29, 36, 45, 50, 60, 61, 68, 74, 80, 83, 89], "first": [5, 6, 20, 24, 34, 37, 40, 45, 53, 58, 60, 61, 63, 64, 71, 74, 77, 83, 89], "explain": [6, 8, 25], "did": [6, 74], "interest": [6, 7, 8, 56], "problem": [6, 8, 10, 84, 89], "follow": [6, 7, 8, 9, 10, 11, 14, 20, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 42, 44, 46, 49, 52, 54, 56, 61, 64, 74, 89], "might": [6, 7, 8, 11, 17, 25, 35, 44, 58, 60, 64, 65, 68, 71, 89], "give": [6, 8, 11, 61, 67, 84, 87], "guidanc": [6, 8], "apache2": [6, 90], "readm": [6, 11, 61], "direct": [6, 8, 59, 63, 64, 77], "new": [6, 7, 8, 9, 10, 11, 16, 17, 23, 24, 29, 36, 41, 50, 51, 61, 65, 67, 74, 80, 83, 86], "term": [6, 26, 29, 33, 35, 38, 44, 45, 58, 60, 64], "describ": [6, 9, 11, 14, 17, 29, 33, 34, 35, 36, 60, 61, 64, 83, 90], "document": [6, 15, 17, 29, 31, 32, 34, 35, 44, 45, 46, 49, 51, 61, 64, 70, 72, 76, 84, 89], "orient": 6, "There": [6, 8, 11, 25, 43, 63, 64, 69, 83, 89], "list": [6, 7, 16, 17, 21, 24, 26, 27, 28, 29, 31, 32, 33, 36, 37, 40, 41, 42, 43, 45, 47, 48, 50, 52, 53, 57, 58, 59, 61, 65, 67, 70, 74, 76, 77, 78, 81, 83, 84, 87], "keep": [6, 8, 10, 14, 19, 60, 61, 62], "pocket": [6, 8], "systemctl": [6, 8, 11, 60], "httpd": 6, "kind": [6, 41, 50, 64, 71], "welcom": [6, 8, 84], "page": [6, 8, 10, 12, 14, 16, 17, 18, 19, 23, 25, 28, 29, 35, 36, 40, 41, 42, 44, 45, 48, 50, 53, 58, 64, 65, 68, 69, 71, 76, 82, 84, 85, 87], "default": [6, 7, 8, 10, 11, 14, 17, 18, 19, 21, 23, 25, 29, 30, 33, 34, 36, 37, 38, 41, 42, 43, 44, 46, 50, 52, 54, 61, 62, 64, 65, 67, 71, 74, 75, 76, 77, 79, 80, 82, 83, 85, 86, 88, 89, 90], "distribut": [6, 7, 8, 11, 17, 19, 54, 60, 64, 83], "compar": [6, 7, 11, 16, 45, 50, 53, 60, 89], "less": [6, 8, 35, 42, 47, 61, 64, 71, 74], "000": 6, "documentroot": 6, "var": 6, "And": [6, 60, 64, 74], "index": [6, 34, 35, 40, 41, 47, 49, 57, 83], "srv": 6, "directori": [6, 7, 11, 19, 33, 76, 77, 85], "option": [6, 7, 10, 11, 14, 17, 22, 25, 29, 33, 34, 36, 38, 40, 42, 44, 50, 53, 56, 60, 61, 64, 65, 70, 71, 73, 83], "followsymlink": 6, "allowoverrid": 6, "none": [6, 10, 21, 26, 28, 29, 30, 32, 35, 37, 38, 45, 52, 56, 58, 61, 62, 64, 67, 74, 75, 76, 77, 80, 81, 82, 83], "grant": [6, 11], "mod_autoindex": 6, "loadmodul": 6, "autoindex_modul": 6, "so": [6, 7, 11, 18, 25, 28, 34, 35, 37, 60, 62, 64, 71, 83, 84], "includ": [6, 7, 8, 9, 16, 17, 33, 36, 52, 53, 60, 61, 64, 77, 89], "autoindex": 6, "allow": [6, 10, 17, 18, 19, 22, 29, 33, 45, 52, 64], "access": [6, 9, 10, 11, 12, 17, 20, 21, 33, 34, 35, 36, 37, 38, 39, 45, 49, 56, 60, 61, 64, 71, 74, 75], "On": [6, 7, 16, 19, 40, 60, 61, 67], "fresh": 6, "empti": [6, 14, 36, 38, 45, 49, 58, 64, 77, 83, 89], "shown": [6, 9, 10, 11, 16, 17, 21, 29, 60, 64, 78, 89], "Be": [6, 11, 17, 52, 67], "awar": [6, 11, 52, 64], "quit": [6, 7, 11, 25, 60], "differ": [6, 11, 12, 17, 19, 25, 28, 40, 45, 46, 50, 53, 58, 60, 64, 84, 87, 89], "standard": [6, 11, 25, 28, 52, 89], "detail": [6, 10, 11, 17, 18, 28, 29, 45, 57, 64], "look": [6, 10, 11, 26, 27, 34, 40, 61, 63], "share": [6, 11, 17, 40, 45, 47, 52, 53, 56, 60, 61, 84, 89], "gz": [6, 11], "know": [6, 11, 17, 50, 60, 64, 69, 71], "apache2ctl": 6, "control": [6, 11, 61, 71], "interfac": [6, 10, 16, 17, 19, 21, 23, 45, 46, 49], "a2enmod": 6, "a2dismod": 6, "switch": [6, 24, 25, 34, 36, 37, 41], "off": [6, 8, 10, 21, 25, 89], "a2enconf": 6, "a2disconf": 6, "a2ensit": 6, "a2dissit": 6, "load": [6, 10, 11, 14, 19, 23, 26, 29, 30, 44, 61, 67, 68, 75, 89], "un": [6, 10], "comment": [6, 10, 24, 28, 34, 35, 36, 37, 46, 61, 64, 85], "correspond": [6, 11, 40, 77], "except": [6, 14, 25, 28, 29, 64, 70, 72, 83], "ssl": [6, 10, 19, 28], "proxy_http": 6, "proxy_uwsgi": 6, "ssl_modul": 6, "mod_ssl": 6, "headers_modul": 6, "mod_head": 6, "proxy_modul": 6, "mod_proxi": 6, "proxy_http_modul": 6, "mod_proxy_http": 6, "proxy_uwsgi_modul": 6, "mod_proxy_uwsgi": 6, "save": [6, 7, 10, 24, 45, 68, 89], "avail": [6, 7, 8, 10, 11, 12, 18, 21, 33, 37, 41, 47, 51, 53, 61, 65, 71, 90], "folder": [6, 8, 9, 11, 24, 28, 29, 60, 61, 64, 66, 76, 88, 89], "add": [6, 7, 8, 9, 10, 11, 17, 19, 25, 26, 27, 34, 35, 36, 44, 57, 61, 62, 64, 72, 74, 81, 83, 84], "includeopt": 6, "two": [6, 7, 8, 11, 14, 17, 19, 25, 41, 64, 65], "one": [6, 8, 10, 11, 14, 16, 17, 19, 25, 29, 30, 36, 45, 46, 50, 53, 60, 61, 62, 64, 68, 70, 71, 73, 74, 77, 83, 89], "mkdir": [6, 7, 8, 10], "p": [6, 7, 8, 10, 11, 58, 83, 89], "place": [6, 8, 11, 25, 28, 29, 34, 36, 64, 69, 71], "symlink": [6, 8], "ln": [6, 8, 11, 60], "don": [6, 7, 10, 14, 20, 22, 23, 24, 25, 28, 40, 58, 63, 64, 67, 70, 89], "t": [6, 7, 10, 11, 14, 20, 22, 23, 24, 25, 28, 30, 36, 40, 42, 58, 62, 63, 64, 67, 70, 83, 84, 85, 89], "old": [6, 7, 24, 60, 63, 67], "mod_uwsgi": 6, "anymor": [6, 7], "incom": [6, 74], "need": [6, 7, 8, 9, 10, 11, 17, 20, 23, 24, 25, 27, 32, 34, 36, 37, 43, 44, 45, 50, 53, 58, 60, 61, 62, 63, 64, 65, 69, 70, 71, 74, 87, 89], "proxypreservehost": 6, "pass": [6, 25, 26, 45, 65, 74, 77, 83], "what": [6, 8, 11, 17, 24, 34, 40, 44, 50, 57, 60, 61, 64, 77, 80, 84, 89], "commun": [6, 8, 10, 11, 19, 22, 37, 46, 70, 84, 85], "upstream": [6, 8, 11], "own": [6, 7, 9, 10, 15, 18, 25, 34, 36, 37, 45, 60, 61, 70, 86], "code": [6, 10, 11, 17, 21, 23, 24, 28, 29, 32, 40, 43, 44, 45, 47, 50, 53, 58, 59, 60, 61, 63, 65, 67, 70, 71, 75, 80, 83, 84, 85, 89], "utf": [6, 11, 64, 89], "8": [6, 10, 11, 40, 61, 64, 89], "lib": [6, 11, 56, 85], "setenvif_modul": 6, "mod_setenvif": 6, "setenvif": 6, "request_uri": 6, "dontlog": 6, "customlog": 6, "null": [6, 8, 19], "combin": [6, 45, 80], "env": [6, 11, 22, 59, 60, 63, 89, 90], "order": [6, 10, 19, 25, 32, 34, 35, 36, 42, 64, 74], "deni": [6, 10, 11, 21, 75], "fd00": 6, "192": [6, 19, 74], "168": [6, 19, 58, 74], "16": [6, 10, 43, 50, 61, 74], "fe80": [6, 10, 19, 74], "10": [6, 10, 17, 19, 28, 35, 50, 64, 74, 85], "trail": [6, 10, 23, 83], "slash": [6, 10, 23, 83], "redirectmatch": 6, "308": 6, "proxypass": 6, "ud": 6, "flaskfix": [6, 8], "requesthead": [6, 74], "scheme": [6, 8, 45], "request_schem": 6, "real": [6, 8, 74], "remote_addr": [6, 8], "append": 6, "serv": [6, 8, 11, 25, 61, 71, 89], "alia": [6, 8], "src": [6, 8, 10, 11, 45, 60, 61, 90], "8888": [6, 8, 10, 22, 60, 90], "restart": [6, 7, 8, 11, 60], "servic": [6, 8, 9, 10, 11, 22, 44, 45, 60, 61, 64, 65, 68, 70, 71, 89, 90], "touch": [6, 8, 11, 17], "ini": [6, 7, 8, 11, 24, 60, 90], "privaci": [6, 7, 8, 10, 11, 18, 23, 48, 54, 59, 64, 67, 70, 74, 84, 87], "entir": [6, 10, 80], "virtual": [6, 34, 36, 37], "doe": [6, 9, 11, 17, 24, 28, 29, 36, 37, 38, 39, 40, 41, 42, 44, 45, 48, 49, 50, 53, 57, 60, 64, 65, 70, 80, 82, 83, 86, 89], "path": [6, 10, 14, 19, 20, 24, 33, 60, 61, 64, 83, 84, 89], "compon": [6, 48, 62, 74], "root": [6, 9, 60, 61, 89], "dockerhub": 7, "dockerfil": 7, "overview": [7, 17, 31, 58, 59, 61, 65, 68, 85], "cheat": 7, "sheet": 7, "alpin": 7, "dash": 7, "intend": [7, 29, 43], "well": [7, 48, 50, 53, 64, 70, 84], "rest": [7, 17, 43, 45, 47, 48, 59, 61, 70], "articl": [7, 28, 38, 53, 56, 58, 59, 60, 76, 80], "those": [7, 37, 43, 53, 60, 61, 68, 71], "who": [7, 11, 71], "sourc": [7, 10, 19, 26, 27, 29, 30, 31, 33, 34, 36, 38, 39, 40, 41, 43, 44, 45, 47, 50, 52, 53, 55, 56, 57, 58, 60, 61, 63, 64, 67, 68, 70, 71, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 89], "caddi": [7, 9], "protect": [7, 10, 22, 24, 25, 70, 74, 87], "against": [7, 10], "bot": [7, 10, 22, 24, 50, 70, 72], "cach": [7, 10, 11, 23, 24, 44, 50, 76, 80, 83], "bust": [7, 10, 11, 23, 24], "bandwith": [7, 10, 24], "plan": 7, "yourself": [7, 25, 84], "sure": [7, 60], "forget": [7, 10, 20, 22, 24, 89], "group": [7, 11, 17, 20, 61, 64, 71], "out": [7, 25, 26, 27, 34, 35, 36, 43, 44, 61, 62, 64], "back": [7, 60, 63, 80], "membership": 7, "evalu": [7, 44, 53, 64, 74, 83, 89], "usermod": 7, "g": [7, 10, 16, 25, 28, 35, 36, 41, 42, 44, 45, 56, 60, 61, 63, 64, 68, 71, 74, 76, 77, 87, 89, 90], "rm": [7, 11, 83], "automat": [7, 10, 11, 23, 53, 64, 77], "clean": [7, 59], "exit": [7, 10, 12, 77, 78], "detach": 7, "v": [7, 10, 11, 25], "mount": [7, 49], "volum": [7, 28], "easi": [7, 60, 70], "pull": [7, 25, 61, 63, 64, 69], "deploi": [7, 22, 23, 61, 64], "my": [7, 17, 26, 27, 35, 45, 53, 60, 61, 64, 83, 86], "cd": [7, 9, 10, 60, 61], "export": [7, 10, 49, 60, 89], "pwd": [7, 60, 89], "e": [7, 10, 16, 25, 28, 35, 36, 41, 44, 45, 50, 56, 60, 61, 63, 64, 71, 74, 76, 77, 83, 87, 89, 90], "2f998": 7, "id": [7, 10, 28, 43, 45, 50, 52, 61, 83], "visit": [7, 10, 35, 50, 64, 71, 84], "xdg": [7, 10, 61], "modifi": [7, 10, 11, 17, 61, 63, 64, 87], "accord": [7, 11, 14, 32, 77], "l": [7, 20, 33, 44, 60, 61, 64, 89], "flag": [7, 68, 77], "stop": [7, 10, 11, 28, 43, 58, 60, 61, 62, 75, 80, 89], "stope": 7, "rid": [7, 61, 89], "2f998d725993": 7, "sbin": [7, 11], "tini": 7, "7": [7, 10, 58, 85], "minut": [7, 74], "ago": 7, "remov": [7, 10, 11, 12, 14, 17, 21, 29, 53, 55, 60, 61, 62, 67, 71, 80, 84, 89, 90], "item": [7, 11, 27, 28, 29, 52, 57, 58, 64, 72, 80], "won": [7, 11, 40, 67], "prune": 7, "aq": 7, "system": [7, 10, 11, 25, 36, 53, 60, 61, 64, 89], "housekeep": 7, "rmi": 7, "f": [7, 60, 64, 68, 83, 89], "drop": [7, 27, 57, 63, 80, 89], "A": [7, 16, 17, 19, 20, 24, 25, 28, 29, 33, 40, 45, 47, 53, 62, 64, 68, 73, 74, 76, 77, 78, 79, 80, 82, 83, 89], "tale": 7, "bash": [7, 10, 34, 36, 37, 60, 61, 62, 64, 89, 90], "mani": [7, 10, 21, 36, 46, 74, 75], "other": [7, 9, 16, 17, 19, 25, 28, 32, 38, 40, 42, 45, 50, 53, 56, 61, 64, 71, 74, 83, 84], "meant": [7, 21, 64], "posix": 7, "compliant": 7, "entrypoint": 7, "exec": 7, "It": [7, 14, 17, 25, 28, 29, 35, 36, 42, 44, 52, 56, 64, 65, 71, 78, 84, 89], "possibl": [7, 14, 17, 28, 33, 38, 45, 53, 58, 60, 64, 65], "clone": [7, 9, 10, 60, 61, 63, 69, 90], "github": [7, 9, 10, 15, 54, 60, 61, 62, 63, 64, 65, 69, 85, 89, 90], "successfulli": [7, 57, 61], "built": [7, 25, 28, 54], "49586c016434": 7, "tag": [7, 10, 22, 28, 41, 50, 53, 54, 57, 68, 77], "latest": [7, 10, 11, 19, 61], "209": 7, "9c823800": 7, "dirti": 7, "repositori": [7, 9, 60, 69, 89], "size": [7, 11, 24, 28, 42, 57, 83], "13": [7, 11, 61, 89], "308mb": 7, "3": [7, 10, 17, 36, 48, 61, 64, 68, 74, 80, 83, 85, 89], "6dbb9cc54074": 7, "week": [7, 28, 40, 45, 58, 67], "5": [7, 10, 17, 19, 21, 36, 50, 54, 64, 68, 74, 80, 83, 85], "61mb": 7, "interact": [7, 10, 88, 89], "defin": [7, 14, 17, 19, 23, 29, 34, 36, 44, 61, 62, 64, 89], "help": [7, 12, 20, 25, 45, 59, 70, 84, 88], "dry": 7, "alwai": [7, 8, 19, 24, 25, 28, 42, 45, 71, 89], "renam": [7, 65], "suffix": [7, 10, 19], "copi": [7, 10, 29, 64, 69, 89], "environ": [7, 10, 14, 22, 25, 34, 36, 37, 59, 60, 63, 70, 77, 89, 90], "variabl": [7, 14, 19, 28, 64], "morty_url": 7, "result_proxi": [7, 10], "morty_kei": 7, "kei": [7, 10, 12, 17, 28, 29, 33, 34, 36, 45, 52, 67, 68, 69, 74, 77, 80], "bind": [7, 22, 36], "tcp": 7, "entri": [7, 26, 27, 59, 64], "point": [7, 8, 10, 11, 57, 59, 60, 63, 64, 71], "beginn": 8, "guid": [8, 35, 64], "mainlin": 8, "webserv": 8, "come": [8, 17, 25, 40, 70, 71, 74, 84, 87, 89], "80": 8, "server_nam": 8, "good": [8, 60, 77], "resourc": [8, 35, 38], "uwsgi_pass": 8, "uwsgi_param": 8, "http_host": 8, "http_connect": 8, "http_x_scheme": 8, "http_x_script_nam": 8, "http_x_real_ip": 8, "http_x_forwarded_for": 8, "proxy_add_x_forwarded_for": 8, "proxy_pass": 8, "proxy_set_head": 8, "proxy_buff": 8, "proxy_request_buff": 8, "proxy_buffer_s": 8, "8k": 8, "app": [8, 11, 42, 45, 53, 60, 61, 64, 74, 76, 90], "access_log": 8, "error_log": 8, "avoid": [9, 12, 19, 33, 50, 69, 74], "unwant": 9, "effect": [9, 11, 25, 64], "befor": [9, 10, 11, 19, 24, 25, 34, 36, 37, 60, 61, 62, 63, 64, 71, 74, 89], "procedur": [9, 24, 89], "jump": [9, 10, 60, 61, 87], "readabl": 9, "altern": [9, 14, 17, 23, 35, 48, 61, 63, 64, 89], "fork": [9, 25, 60, 70, 83, 84], "download": [9, 10, 22, 36, 49, 54, 57, 60, 61, 64], "sudoer": 9, "take": [9, 11, 19, 24, 25, 40, 57, 69, 74, 80, 84, 89], "account": [9, 10, 19, 20, 24, 60], "case": [9, 10, 17, 19, 21, 24, 35, 45, 48, 50, 53, 58, 60, 71, 83, 90], "fine": [9, 10], "regard": [9, 84], "whatev": [9, 89], "implement": [9, 11, 17, 24, 25, 26, 27, 28, 29, 39, 40, 45, 50, 53, 57, 59, 61, 62, 63, 70, 73, 74, 77, 79, 80, 83, 89], "useradd": [10, 61], "home": [10, 29, 50, 60, 61, 69, 74], "dir": 10, "respect": [10, 25, 71], "metasearch": [10, 28, 38, 70, 84], "chown": 10, "r": [10, 45, 85, 89], "u": [10, 17, 21, 28, 40, 41, 45, 50, 60, 61, 63, 64, 70, 77, 84, 85], "same": [10, 28, 36, 47, 53, 60, 64, 83, 84, 89], "virtualenv": [10, 11, 60, 61, 90], "m": [10, 32, 45, 64, 83], "pyenv": [10, 11, 34, 36, 37, 60, 61, 62, 77, 90], "echo": [10, 89], "profil": [10, 61, 70, 71, 84], "session": [10, 74, 77], "wa": [10, 17, 24, 25, 28, 53, 57, 60, 61, 67, 79, 80, 83, 84, 85], "version": [10, 12, 28, 32, 61, 64, 68, 77], "boilerpl": 10, "setuptool": 10, "wheel": 10, "pyyaml": 10, "tree": [10, 60, 61, 63], "second": [10, 19, 21, 50, 64, 77, 80], "termin": [10, 60, 67], "leav": [10, 21, 89], "initi": [10, 11, 14, 17, 26, 27, 29, 30, 33, 34, 35, 36, 52, 60, 64, 67, 77, 79, 80, 89], "templat": [10, 11, 31, 34, 36, 37, 43, 58, 59, 60, 61, 62, 74], "tab": [10, 16, 17, 23, 59, 61, 65, 86, 89], "lock": [10, 83], "enabled_plugin": [10, 65, 78], "hash": [10, 11, 12, 74, 80, 87], "select": [10, 12, 17, 28, 29, 34, 35, 36, 37, 40, 43, 44, 45, 48, 50, 58, 61, 63, 64, 68, 71, 73, 77, 86, 89], "self": [10, 12, 29, 45, 70, 89, 90], "inform": [10, 12, 17, 19, 21, 25, 28, 52, 60, 61, 70, 76, 78, 81, 84, 89], "tracker": [10, 12, 15, 42, 52], "ahmia": [10, 68], "blacklist": [10, 68], "hostnam": [10, 12, 89], "replac": [10, 12, 24, 58, 60, 61, 62, 64, 69, 80], "hostname_replac": [10, 65], "infinit": [10, 80], "scroll": [10, 23], "doi": [10, 12, 28], "only_show_green_result": [10, 62], "searxng_debug": [10, 18, 61], "privacypolicy_url": [10, 18], "donat": [10, 18], "written": [10, 18, 45, 60], "info": [10, 18, 19, 60, 61, 70, 72, 89], "md": [10, 18, 34], "donation_url": [10, 18], "mailto": [10, 18], "contact": [10, 18, 19, 84], "contact_url": [10, 18], "record": [10, 18, 23, 28, 58, 64], "stat": [10, 18, 64, 84], "enable_metr": [10, 18], "new_issue_url": 10, "docs_url": [10, 15], "public_inst": [10, 15], "space": [10, 15, 22, 61, 70, 74], "wiki_url": [10, 15], "issue_url": [10, 15], "moder": [10, 21, 28, 58], "strict": [10, 17, 21, 28, 58], "backend": [10, 21, 32, 48], "dbpedia": [10, 21, 65], "yandex": 10, "seznam": [10, 85], "startpag": [10, 21, 31, 65, 85], "swisscow": [10, 21, 65], "wikipedia": [10, 21, 32, 65, 68, 85, 87], "blank": [10, 21, 23, 64], "turn": [10, 21, 25, 43, 57, 67, 80], "minimun": 10, "charact": [10, 25, 33, 45, 53, 64], "autocomplete_min": 10, "4": [10, 28, 40, 61, 64, 74, 80, 85], "detect": [10, 21, 23, 70, 72, 83], "default_lang": [10, 17, 21], "auto": [10, 23, 60, 64, 89], "IT": [10, 21, 45], "fr": [10, 17, 21, 23, 29, 32, 41, 45, 58, 77, 83, 85, 87], "BE": [10, 21, 29, 45, 77], "ban": [10, 21, 52, 71], "time": [10, 19, 21, 25, 28, 29, 32, 36, 41, 42, 45, 50, 58, 60, 61, 64, 65, 71, 74, 75, 80, 82, 83, 85, 89], "after": [10, 21, 53, 61, 62, 64, 68, 89], "error": [10, 11, 17, 18, 19, 21, 24, 28, 29, 32, 33, 37, 57, 58, 64, 74, 75, 83], "ban_time_on_fail": [10, 21], "max": [10, 21, 28, 80], "max_ban_time_on_fail": [10, 21], "120": [10, 21, 25], "suspended_tim": [10, 21, 75], "suspens": [10, 21], "402": [10, 21], "403": [10, 17, 21], "searxengineaccessdeni": [10, 21, 75], "86400": [10, 21, 75], "searxenginecaptcha": [10, 21, 75], "too": [10, 18, 21, 40, 57, 62, 64, 71, 75], "429": [10, 17, 21], "searxenginetoomanyrequest": [10, 21, 75], "3600": [10, 21, 74], "cloudflar": [10, 21], "cf_searxenginecaptcha": [10, 21], "1296000": [10, 21], "cf_searxengineaccessdeni": [10, 21], "recaptcha": 10, "recaptcha_searxenginecaptcha": [10, 21], "604800": [10, 21], "format": [10, 21, 32, 37, 45, 51, 57, 59, 63, 64, 65, 74], "lower": [10, 21, 80], "csv": [10, 21, 65], "json": [10, 21, 26, 29, 32, 34, 35, 45, 47, 48, 51, 57, 61, 65, 67, 68, 83], "rss": [10, 21, 42, 65], "chang": [10, 11, 14, 15, 19, 22, 24, 25, 42, 60, 61, 62, 63, 64, 68, 84], "rebuild": [10, 22, 25, 61], "buildenv": [10, 22, 59], "searxng_port": [10, 22, 60, 61, 90], "searxng_bind_address": [10, 22, 60, 61, 90], "rate": [10, 22, 53, 72], "number": [10, 19, 22, 28, 36, 40, 45, 48, 50, 52, 57, 58, 64, 65, 68, 74, 80, 82, 83, 89], "through": [10, 17, 64, 65, 71, 74], "http_protocol_vers": 10, "queri": [10, 12, 17, 21, 23, 26, 27, 28, 32, 33, 34, 35, 36, 37, 40, 41, 44, 45, 47, 50, 52, 53, 55, 57, 58, 64, 65, 67, 68, 71, 75, 78, 80, 81, 82, 83, 84, 85, 86], "more": [10, 11, 17, 18, 19, 25, 28, 29, 36, 43, 45, 47, 50, 52, 61, 64, 65, 70, 71, 74, 80, 83, 84, 87, 89], "thei": [10, 11, 17, 40, 64, 71, 74, 85], "histori": 10, "mai": [10, 11, 19, 44, 52, 57, 60, 64, 68, 74, 83, 84, 89], "caus": 10, "default_http_head": [10, 22], "content": [10, 22, 28, 35, 36, 38, 43, 49, 52, 53, 58, 69, 71, 76], "nosniff": [10, 22], "xss": [10, 22], "noopen": [10, 22], "robot": [10, 22, 45, 61], "noindex": [10, 22], "nofollow": [10, 22], "referr": [10, 22], "polici": [10, 18, 22, 89], "readthedoc": [10, 11], "io": [10, 11, 34, 61, 64, 83], "stabl": [10, 17, 42, 61], "client": [10, 46, 47, 60, 67, 69, 74, 79, 80], "from_url": [10, 20], "custom": [10, 19, 25, 29, 35, 39, 41, 53, 64, 69, 70, 72, 87], "didn": 10, "static_path": 10, "templates_path": 10, "query_in_titl": [10, 23], "titl": [10, 23, 28, 32, 33, 36, 39, 43, 53, 58, 76], "decreas": [10, 23], "sinc": [10, 11, 23, 40, 41, 44, 46, 64, 74, 89], "infinite_scrol": [10, 23, 48], "next": [10, 23, 48, 64], "bottom": [10, 23, 68], "current": [10, 17, 23, 25, 28, 29, 45, 51, 61, 74, 80], "theme": [10, 23, 34, 36, 59, 63, 65], "center": [10, 23], "center_align": [10, 23], "prefix": [10, 17, 23, 45, 74, 80, 87], "internet": [10, 23, 37, 60, 70, 84], "archiv": [10, 23, 31, 61, 74, 85], "forgett": [10, 23, 25], "cache_url": [10, 23], "webcach": [10, 23], "googleusercont": [10, 23], "results_on_new_tab": [10, 23, 65], "theme_arg": [10, 23], "style": [10, 23, 61, 63, 68, 83], "light": [10, 23], "dark": [10, 23], "simple_styl": [10, 23], "arbitrari": [10, 33, 34], "proxif": 10, "extern": [10, 28, 37, 59, 64, 65, 71, 86], "asciimoo": 10, "morti": [10, 24], "uncom": [10, 19], "base64": 10, "encod": [10, 11, 29, 45, 50, 64, 74], "binari": [10, 36, 61], "notat": [10, 41], "note": [10, 13, 25, 35, 60, 61, 65, 87], "commit": [10, 24, 47, 60, 61, 63, 69], "af77ec3": 10, "accept": [10, 17, 29, 37, 40, 44, 45, 50, 53, 74, 87, 89], "3000": 10, "string": [10, 12, 17, 26, 28, 29, 32, 38, 40, 44, 45, 58, 65, 68, 77, 80, 83, 87], "yaml": [10, 17, 20, 29, 30, 61], "your_morty_proxy_kei": 10, "button": 10, "each": [10, 11, 14, 19, 24, 28, 29, 33, 35, 37, 50, 53, 58, 60, 62, 64, 65, 68, 69, 80, 83, 89], "proxify_result": 10, "timeout": [10, 17, 19, 28, 29, 64, 85, 88], "overrid": [10, 14, 19], "request_timeout": [10, 17, 19], "maximum": [10, 19, 25, 28, 58, 74], "max_request_timeout": [10, 19], "searx_userag": [10, 72, 83], "could": [10, 11, 28, 44, 57, 64, 80], "email": [10, 19], "address": [10, 12, 17, 18, 19, 22, 28, 39, 53, 71, 78], "administr": [10, 17, 19, 33, 35, 37, 65, 70, 71, 88], "useragent_suffix": [10, 19], "concurr": 10, "establish": 10, "pool_connect": [10, 17, 19], "100": [10, 17, 19, 57, 70, 84, 85], "pool": [10, 17, 19], "aliv": [10, 19], "pool_maxs": [10, 17, 19], "20": [10, 34, 44, 61, 74, 83, 89], "httpx": [10, 19, 52], "http2": [10, 19], "enable_http2": [10, 17, 19], "certif": [10, 19], "advanc": [10, 19, 37], "verif": [10, 19, 29], "compat": [10, 19, 74], "verifi": [10, 19, 28], "mitmproxi": [10, 19], "ca": [10, 19, 29, 41, 45, 77, 83], "cert": [10, 19], "cer": [10, 19], "proxyq": [10, 19], "proxy1": [10, 17, 19], "proxy2": [10, 17, 19], "using_tor_proxi": [10, 17, 19, 29, 30, 31], "taken": [10, 17, 19, 58, 64, 74], "extra_proxy_timeout": [10, 19], "than": [10, 19, 35, 42, 45, 50, 53, 64, 70, 83, 84], "source_ip": [10, 19], "126": [10, 19], "plugin1": 10, "plugin2": 10, "deactiv": [10, 18], "noth": [10, 69], "tor": [10, 12, 17, 19, 29, 30, 70, 71, 72], "detriment": 10, "expect": [10, 17, 25, 33], "autodetect": 10, "minim": [10, 53, 61, 63, 64, 68], "cp": 10, "sed": [10, 64], "rand": 10, "hex": 10, "webapp": [10, 11, 22, 61], "searxng_settings_path": [10, 11, 14, 60], "insid": [10, 33, 60, 75, 89], "verbos": 10, "head": [10, 61], "insecur": 10, "try": [10, 11, 24, 50, 71], "tcp_nodelai": 10, "agent": [10, 12, 19, 28, 74, 83, 87], "68": 10, "mark": [10, 64], "bundl": 10, "multius": 10, "assum": [10, 64], "close": [10, 26, 27, 57, 74], "bodi": [10, 25, 64], "200": [10, 61], "ok": [10, 24, 61], "everyth": [10, 64, 71], "hit": 10, "ctrl": [10, 60], "c": [10, 11, 45, 55, 60, 61, 62, 64, 68, 83], "enter": [10, 60], "twice": 10, "At": [10, 35, 36, 45, 64, 89], "demon": 10, "systemd": [11, 61], "unit": [11, 25, 44, 61, 68, 77], "emperor": 11, "vari": 11, "project": [11, 56, 60, 61, 64, 70, 84], "itself": [11, 25, 49, 74], "One": [11, 32], "per": [11, 25, 28, 64, 68], "dedic": [11, 60, 64], "archlinux": [11, 17, 39, 85, 89], "execstart": 11, "known": [11, 53, 61, 74, 77, 84], "common": [11, 38, 41, 45, 50, 53, 56, 61, 70, 71], "fit": [11, 17, 29, 35, 44, 45, 48, 53, 62, 68, 74, 77], "larg": [11, 89, 90], "rang": [11, 28, 29, 41, 45, 58, 64, 65, 74, 80, 82, 85], "multi": 11, "monitor": [11, 60, 69], "specif": [11, 17, 19, 23, 28, 29, 33, 38, 42, 43, 50, 52, 55, 56], "event": 11, "scan": 11, "vassal": 11, "ad": [11, 16, 17, 20, 29, 35, 37, 44, 50, 63, 64, 69, 71, 73, 74, 77, 84], "timestamp": [11, 32], "reload": 11, "edit": [11, 25, 53, 60, 61, 64, 71], "mostli": [11, 53, 64], "offer": [11, 40, 42, 44, 45, 49, 51, 58, 84], "even": [11, 17, 20, 45, 60, 89], "wai": [11, 14, 25, 28, 35, 42, 52, 64, 67, 71, 74], "both": [11, 25, 65, 71, 74, 83], "anoth": [11, 17, 28, 32, 60, 64, 68, 89], "interpret": [11, 45, 61, 64], "python2": 11, "while": [11, 26, 41, 60, 61, 63, 64, 75, 80, 83, 84], "worth": 11, "complet": [11, 24, 25, 31, 40, 45, 48, 60, 61, 65, 89, 90], "approach": 11, "familiar": [11, 61], "similar": [11, 14, 36, 64, 77], "thing": [11, 64], "symbol": 11, "recogn": 11, "init": [11, 26, 27, 37, 38, 52, 56, 60, 77, 89], "daemon": 11, "sighup": 11, "signal": [11, 60], "forc": [11, 61], "sigterm": 11, "statu": [11, 17, 58, 63, 75, 77, 90], "must": [11, 18, 19, 25, 28, 30, 33, 34, 36, 49, 62, 64, 74, 83, 84], "exactli": [11, 64], "argument": [11, 12, 25, 32, 38, 39, 45, 50, 56, 64, 67, 74, 77, 80, 89], "confnam": 11, "systemctl_skip_redirect": 11, "hello": 11, "xml": [11, 42, 45, 52, 64, 83], "lsb": 11, "dai": [11, 28, 40, 45, 58, 65, 67, 75], "bug": [11, 61, 70], "cgi": 11, "bugreport": [11, 25], "833067": 11, "0pointer": 11, "blog": [11, 60, 64], "As": [11, 14, 17, 24, 44, 50, 71, 74, 89], "uid": [11, 60], "gid": 11, "ignor": [11, 26, 43, 44, 45, 74, 77], "lc_all": 11, "chdir": [11, 60], "right": [11, 17, 20, 62, 63, 64, 68, 77], "chmod": [11, 89], "666": 11, "singl": [11, 71, 89], "master": [11, 24, 25, 60, 61, 64, 69, 90], "worker": 11, "instead": [11, 17, 23, 35, 58, 64, 68, 80], "lazi": 11, "By": [11, 17, 19, 34, 36, 40, 43, 44, 46, 49, 54, 74, 75, 77, 83, 88, 89], "gil": 11, "mean": [11, 21, 37, 40, 60, 64, 71, 80], "thread": [11, 83], "rememb": [11, 25, 60], "them": [11, 17, 34, 35, 36, 60, 64], "multithread": 11, "strang": 11, "behaviour": [11, 25, 62], "perform": [11, 12, 28, 32, 37, 57, 74, 80, 87], "reason": [11, 30, 64, 80], "wsgi": 11, "modul": [11, 26, 27, 29, 30, 53, 62, 64, 67, 73, 75, 85], "pythonhom": 11, "glob": 11, "pythonpath": [11, 60], "speak": 11, "buffer": [11, 24], "8192": 11, "expir": [11, 24, 74, 80], "year": [11, 28, 45, 56, 58, 65, 67], "31557600": 11, "gzip": [11, 74], "offload": 11, "k": 11, "cache2": 11, "searxngcach": 11, "2000": [11, 64], "blocksiz": 11, "4096": 11, "bitmap": 11, "logger": 11, "owner": [11, 84, 89], "somewhat": 11, "unusu": 11, "consider": 11, "initgroup": 11, "branch": [11, 24, 25, 61, 69], "2099": 11, "featur": [11, 17, 24, 25, 44, 48, 64, 71, 85], "752": 11, "ha": [11, 14, 17, 24, 25, 28, 33, 37, 38, 40, 42, 45, 46, 48, 52, 54, 56, 60, 64, 69, 70, 71, 75, 76, 77, 80, 89], "been": [11, 24, 25, 60, 69, 70, 80, 89], "merg": [11, 14, 24, 60, 68, 69], "oct": 11, "2014": 11, "had": 11, "never": [11, 29, 40, 60, 84], "releas": [11, 24, 38, 54, 61, 89], "last": [11, 28, 40, 45, 61, 63, 64], "major": 11, "dec": 11, "2013": 11, "bugfix": 11, "2425uwsgi": 11, "shorten": 11, "miss": [11, 37, 64, 74, 75], "permiss": 11, "redisdb": [11, 20, 24, 79], "993": 11, "fail": [11, 30, 60, 61, 63], "aef": 11, "grep": [11, 60, 61, 89], "93": [11, 74], "92": 11, "12": [11, 61], "43": 11, "00": [11, 89], "186": 11, "44": 11, "01": 11, "pid": 11, "unset": [11, 21, 50, 74, 77], "cat": [11, 89], "proc": 11, "fdsize": 11, "128": 11, "descript": [12, 20, 25, 28, 36, 37, 40, 43, 45, 50, 62, 64, 68, 72, 77, 78, 83], "j": [12, 44, 46, 59, 63, 68], "css": [12, 61, 63, 74], "convert": [12, 28, 53, 64, 83, 87], "digest": [12, 87], "paywal": 12, "redirect": [12, 19, 28, 45, 53, 58, 61], "immedi": [12, 80], "multipl": [12, 17, 19, 28, 29, 53, 61, 64, 71, 85], "javascript": [12, 63, 68, 83], "node": [12, 59, 63, 68, 78, 83], "torproject": [12, 78], "return": [12, 17, 26, 28, 29, 30, 32, 33, 36, 37, 43, 44, 45, 52, 53, 58, 62, 64, 67, 68, 71, 74, 75, 76, 77, 80, 82, 83], "navig": [12, 84], "press": [12, 60], "main": 12, "privat": [13, 29, 33, 34, 35, 36, 52, 70, 74], "token": [13, 14, 29, 33, 34, 35, 36, 37, 74], "multilingu": 13, "full": [14, 17, 28, 35, 40, 45, 49, 64], "simplifi": [14, 53, 90], "reli": [14, 36], "actual": [14, 32, 50, 68], "bing": [14, 31, 64, 67, 85], "ecretvalu": 14, "doesn": [14, 22, 23, 30, 36, 42, 62, 83, 84], "keep_onli": 14, "still": [16, 34, 35, 36, 44, 53], "syntax": [16, 65, 70, 75, 83, 85, 86], "video": [16, 41, 42, 48, 50, 67, 86], "music": [16, 48, 67, 86], "scienc": [16, 67, 86], "under": [16, 17, 28, 31, 43, 60, 89], "call": [16, 17, 29, 40, 44, 45, 57, 60, 61, 63, 64, 68, 74, 80, 81, 83, 85, 89], "fledg": 17, "dummi": 17, "few": [17, 24, 25, 28, 43, 87], "pretti": 17, "demo": [17, 31, 37, 80], "send_accept_language_head": [17, 29, 40, 44, 50, 53], "api_kei": [17, 28, 52], "apikei": [17, 69], "en_u": [17, 28, 43, 44], "secret": [17, 29, 80], "weight": [17, 64, 85], "display_error_messag": [17, 28, 29], "wikidata_id": [17, 29], "q306656": [17, 29], "official_api_document": [17, 29], "use_official_api": [17, 29], "require_api_kei": [17, 29], "overwrit": 17, "retri": [17, 19], "max_connect": [17, 19], "max_keepalive_connect": [17, 19], "keepalive_expiri": [17, 19], "password": [17, 20, 34, 35, 36], "proxy3": 17, "1080": 17, "socks5h": 17, "proxy4": 17, "enable_http": [17, 28, 29, 34, 35], "retry_on_http_error": 17, "404": 17, "across": [17, 29], "handl": [17, 29, 34, 45, 60, 64, 71, 82, 83, 89], "respons": [17, 27, 28, 29, 37, 40, 43, 44, 45, 47, 52, 53, 55, 57, 58, 74], "bang": [17, 29, 64, 68, 85, 86], "bi": [17, 85], "part": [17, 49, 64, 89], "everi": [17, 24, 25, 28, 50, 60, 67, 69, 71, 72, 89], "sever": [17, 53, 60], "region": [17, 29, 40, 44, 45, 53, 68, 77, 83], "deal": [17, 41], "header": [17, 22, 28, 29, 44, 45, 50, 53, 58, 64, 72], "assign": [17, 28, 64, 74, 77, 85], "regardless": [17, 71], "whether": [17, 52, 57, 71, 74], "dictionari": [17, 29, 45, 72, 77, 80, 83], "care": [17, 33, 50, 64, 69, 84, 89], "global": [17, 19, 28, 43, 54, 77, 80], "obtain": 17, "delet": [17, 29, 61, 65, 80, 89], "manual": [17, 24, 29, 61, 64], "inact": [17, 29], "iso": [17, 23, 28, 32, 50, 58, 83], "messag": [17, 18, 25, 28, 29, 57, 63, 64, 69, 70, 72, 75], "ipv4": [17, 19, 74, 89], "local_address": 17, "ipv6": [17, 19, 60, 74, 89], "between": [17, 28, 53, 64, 77], "400": [17, 64], "599": 17, "themselv": [17, 35], "becaus": [17, 25, 28, 42, 71], "expos": [17, 34, 35, 36, 67], "offlin": [17, 28, 33, 64, 72], "Or": [17, 64], "would": [17, 26, 60, 61], "rather": 17, "trust": [17, 70, 71], "friend": [17, 71], "colleagu": 17, "sponsor": [17, 33, 34, 35, 36], "discoveri": [17, 33, 34, 35, 36], "fund": [17, 33, 34, 35, 36], "nlnet": [17, 33, 34, 35, 36], "foundat": [17, 33, 34, 35, 36, 62], "concept": [17, 31], "present": [17, 37], "restrict": [17, 45, 54], "unless": 17, "go": [17, 34, 37, 45, 59, 63, 64, 71, 74, 85], "him": 17, "her": 17, "comma": [17, 33, 65], "separ": [17, 25, 29, 33, 63, 64, 65], "carv": 17, "stone": 17, "provid": [17, 25, 28, 32, 33, 35, 38, 39, 42, 46, 52, 64, 68, 84], "impli": 17, "admin": [17, 37, 60, 64], "necessari": [17, 24, 61], "guidelin": [17, 63], "But": [17, 35, 62, 71, 89], "workaround": 17, "speaker": 17, "directli": [18, 22, 52, 61, 69, 87, 89], "product": [18, 59, 63], "altogeth": 18, "variou": [18, 25, 34, 45, 60, 62], "anonym": [18, 38, 70, 71, 84], "metric": 18, "bigger": 19, "wait": [19, 80], "slow": 19, "consequ": [19, 25], "reactiv": 19, "wish": [19, 34, 36], "round": [19, 25], "robin": 19, "fashion": 19, "60a2": 19, "1691": 19, "e5a2": 19, "ee1f": 19, "ssl_cert_fil": 19, "ssl_cert_dir": 19, "max_redirect": [19, 28], "30": [19, 50, 58, 85], "serxng": 20, "la": [20, 64, 83, 89], "srwxrwx": 20, "write": [20, 53, 68], "given": [20, 31, 64, 80, 83], "usernam": [20, 35, 36], "6379": [20, 34], "rediss": 20, "Then": 20, "manag": [20, 25, 36, 59, 60, 63, 70, 77, 90], "addgrp": [20, 61], "logout": 20, "member": [20, 74, 77], "otherwis": [21, 28, 30, 63, 84, 89], "paramet": [21, 29, 30, 36, 37, 40, 43, 45, 58, 59, 62, 76, 77, 80, 81, 82, 83], "appli": [22, 25, 45, 83, 89], "behind": [22, 48, 74, 84], "cryptographi": 22, "purpos": [22, 28], "being": [22, 23, 70], "memori": [22, 34, 50], "755": 22, "left": [23, 24, 64, 77], "rtl": 23, "screen": 23, "affect": [23, 24], "layout": [23, 34, 36], "min": [23, 28, 83], "width": [23, 57, 64], "tablet": 23, "todai": [23, 57], "pr": [24, 25, 53, 61, 63, 64, 69], "1332": 24, "456": 24, "roll": [24, 89], "opportun": 24, "filtron": 24, "longer": [24, 44, 61, 74, 89], "enough": 24, "sometim": [24, 45], "reconfigur": 24, "uninstal": [24, 61], "consid": [24, 29, 50], "reinstal": 24, "pleas": [24, 25, 35, 36, 61, 63, 64, 65, 87], "extent": 24, "1595": 24, "fix": [24, 25, 41], "increas": 24, "undo": 24, "done": [24, 45, 60, 61, 64, 67, 69, 74, 83, 89], "deprec": 24, "move": [24, 25, 29, 80], "three": [25, 50, 62, 64, 71], "alter": 25, "hack": [25, 63, 67], "lack": 25, "world": [25, 64, 71], "domin": 25, "among": [25, 71], "intent": [25, 74, 89], "wide": 25, "mass": 25, "adopt": 25, "corner": 25, "deserv": 25, "chapter": [25, 64, 90], "uncommon": [25, 45], "unfortun": 25, "born": 25, "extend": [25, 32, 37, 62, 64], "easili": 25, "maxim": 25, "its": [25, 26, 27, 30, 32, 34, 41, 44, 45, 53, 56, 57, 64, 65, 71, 83, 84, 89], "capabl": [25, 35], "reduc": [25, 53, 74, 83], "preserv": [25, 64], "aspect": [25, 60], "plenti": 25, "alreadi": [25, 60, 61, 69, 83], "think": [25, 61, 63, 64], "someth": [25, 33, 44, 61, 63], "weird": 25, "interfer": 25, "submit": [25, 33, 35], "vendor": 25, "misbehav": 25, "feedback": [25, 64], "reconsid": 25, "disrespect": 25, "concern": [25, 33, 84], "fanci": 25, "happi": [25, 63], "structur": [25, 34, 59, 67], "split": 25, "convent": 25, "practic": 25, "gitmoji": 25, "yet": [25, 28, 31, 50, 89], "semant": [25, 85], "patch": [25, 64, 77], "pep8": [25, 61], "length": [25, 64], "cardin": 25, "rule": [25, 29, 53, 77, 89], "logic": 25, "break": [25, 64], "author": [25, 28, 45, 64], "rst": [25, 61, 64], "meaning": [25, 63, 64], "scope": [25, 50], "footer": 25, "quickstart": [25, 59, 61, 70], "weblat": [25, 61, 69, 84], "gh": [25, 45, 69, 85], "sphinx": 25, "much": [25, 64], "easier": 25, "makefil": [25, 59, 60, 63, 70, 89], "dist": [25, 61], "assert": 25, "wysiwyg": 25, "target": [25, 43, 61, 63, 64], "favorit": [25, 61], "8000": 25, "watch": 25, "autobuild": [25, 61], "sphinxopt": 25, "free": [25, 28, 38, 54, 62, 70, 84, 85], "50593": 25, "push": [25, 61, 69], "adjust": [25, 61], "within": [26, 27, 64], "demo_offlin": [26, 37], "engine_set": [26, 27, 33, 37, 38, 52, 56], "request_param": 26, "assembl": [26, 40, 45, 47, 50, 53], "usual": [26, 58, 59, 63, 71, 89], "art": [27, 64], "institut": 27, "chicago": 27, "demo_onlin": 27, "function": [27, 28, 29, 30, 37, 44, 45, 50, 53, 62, 64, 70, 72, 73, 74, 77, 80, 89], "param": [27, 28, 37, 40, 44, 45, 47, 50, 52, 53, 55, 57, 58, 64, 82], "fetch": [27, 29, 38, 39, 40, 41, 43, 44, 45, 47, 50, 53, 55, 56, 68, 78, 90], "artic": [27, 85], "edu": 27, "resp": [27, 40, 45, 47, 52, 55, 57, 58], "pars": [27, 29, 32, 33, 42, 44, 45, 47, 52, 55, 57, 67, 75, 77, 78], "adapt": 28, "store": [28, 29, 34, 35, 41, 42, 44, 71, 74, 84, 85], "tell": [28, 33], "normal": [28, 64, 68, 83], "ones": [28, 35], "matter": [28, 60, 71], "howev": [28, 40, 45, 65], "boolean": [28, 32, 62, 64], "time_range_support": [28, 29, 41, 58, 64], "str": [28, 29, 32, 38, 45, 48, 52, 56, 67, 74, 75, 76, 77, 80, 81, 82, 83], "ref": [28, 60, 62, 68, 89], "bool": [28, 29, 32, 45, 62, 74, 77, 83], "dict": [28, 29, 30, 33, 45, 52, 57, 62, 67, 77, 81, 83], "namespac": [28, 29, 30, 67], "often": [28, 29, 60, 64, 88], "redefin": 28, "lead": 28, "underlin": [28, 30, 61], "veri": [28, 41, 89], "_non_overwritten_glob": 28, "foo": [28, 29, 79, 80], "number_of_result": [28, 54], "int": [28, 64, 75, 80, 81, 83], "countri": [28, 40, 45, 77], "These": [28, 64], "construct": [28, 64], "furthermor": [28, 34, 35, 65, 71], "cooki": [28, 44, 50, 58, 70, 71], "random": [28, 32, 71, 74, 83, 87], "safesearch": [28, 29, 45, 58, 64, 65, 67, 81], "pageno": [28, 58, 65, 67, 81], "pagenumb": 28, "searxng_local": [28, 29, 45, 50, 77], "unspecifi": 28, "from_lang": 28, "to_lang": 28, "amount": [28, 42, 44, 80], "float": [28, 29, 81, 83], "4217": 28, "from_nam": 28, "currenc": [28, 68, 72, 85], "to_nam": 28, "search_url": [28, 43, 57, 58, 83], "ftp": 28, "def": [28, 62, 64, 74, 76, 83], "valid": [28, 36, 37, 65, 74], "allow_redirect": 28, "hard": [28, 64], "soft_max_redirect": [28, 58], "soft": [28, 58, 59], "raise_for_httperror": 28, "rais": [28, 67, 75, 83], "300": 28, "desir": [28, 53], "publishedd": 28, "datetim": [28, 64], "publish": [28, 45], "partli": 28, "img_src": [28, 53, 58], "thumbnail_src": 28, "small": [28, 35, 36, 41, 61, 89, 90], "preview": [28, 53], "thumbnail": [28, 53], "seed": 28, "seeder": [28, 42], "leech": 28, "leecher": [28, 42], "files": [28, 57, 83], "byte": [28, 57, 83], "magnetlink": 28, "torrentfil": 28, "latitud": 28, "decim": 28, "longitud": 28, "boundingbox": 28, "arrai": 28, "lat": 28, "lon": 28, "geojson": 28, "object": [28, 29, 41, 57, 62, 64, 67, 77, 80, 83], "road": 28, "street": 28, "house_numb": 28, "hous": [28, 68], "citi": 28, "postcod": 28, "abstract": [28, 72], "ital": [28, 64], "short": [28, 61], "medium": 28, "book": [28, 38, 56], "editor": 28, "journal": [28, 38, 45, 56], "magazin": [28, 38], "report": [28, 51, 60, 70, 84], "1038": 28, "d41586": 28, "018": 28, "07848": 28, "issn": 28, "1476": 28, "4687": 28, "isbn": 28, "9780201896831": 28, "pdf_url": 28, "html_url": 28, "framework": 29, "long": [29, 61, 71], "goal": 29, "modular": 29, "todo": 29, "loader": [29, 31, 59, 67], "enginelib": [29, 45, 68], "class": [29, 57, 58, 68, 72, 74, 76, 81], "further": [29, 58, 83, 84], "engine_typ": [29, 31, 57, 64], "processor": [29, 31, 37, 57, 64, 70, 72], "fetch_trait": [29, 38, 39, 40, 41, 43, 44, 45, 47, 50, 53, 55, 56, 77], "callabl": 29, "french": [29, 77], "language_support": [29, 64], "belgium": 29, "enginetrait": [29, 38, 39, 40, 41, 43, 44, 45, 47, 50, 53, 55, 56], "represent": [29, 37, 77, 83], "properti": [29, 32, 45, 68, 76, 83], "persist": [29, 68], "enginetraitsmap": [29, 68], "from_data": 29, "factori": 29, "all_local": [29, 44], "data_typ": 29, "typing_extens": 29, "liter": [29, 59], "traits_v1": 29, "iter": [29, 76], "instanti": [29, 80], "dataclass": 29, "classmethod": 29, "engine_trait": [29, 38, 39, 40, 41, 43, 44, 45, 47, 50, 53, 55, 56, 61], "get_languag": 29, "intern": [29, 32, 45, 77, 83], "get_engine_local": [29, 72, 77, 83], "get_region": 29, "is_locale_support": 29, "set_trait": 29, "load_engin": [29, 30, 31], "relat": [29, 36, 44], "egnine_lang": 29, "searxng_lang": 29, "egnine_region": 29, "searxng_region": 29, "sep": [29, 85], "enginetraitsencod": 29, "skipkei": 29, "ensure_ascii": 29, "check_circular": 29, "allow_nan": 29, "sort_kei": 29, "indent": [29, 64, 89], "serializ": [29, 67], "jsonencod": 29, "o": [29, 64, 83, 90], "save_data": 29, "engine_traits_fil": [29, 68], "moduletyp": [29, 30], "posixpath": [29, 74], "runner": [29, 61, 74], "regist": 30, "engine_shortcut": [30, 31], "usag": [30, 60, 61, 64, 67, 76, 84, 89, 90], "is_missing_required_attribut": [30, 31], "attribut": [30, 34, 36, 37, 52, 57, 64], "_": [30, 64], "engine_data": [30, 81], "engine_default_arg": 30, "underscor": [30, 77], "lowercas": 30, "engine_list": 30, "declar": 30, "librari": [31, 36, 38, 59, 70, 72, 83, 85], "trait": [31, 45, 53, 61, 68], "enign": 31, "xpath": [31, 50, 75, 83, 85], "mediawiki": [31, 39, 85], "anna": [31, 85], "brave": [31, 85], "bt4g": [31, 85], "dailymot": [31, 85], "dukcdukgo": 31, "lemmi": [31, 85], "peertub": [31, 85], "pipe": [31, 85], "recol": 31, "tagesschau": [31, 85], "torznab": 31, "webapi": 31, "wikimedia": [31, 32], "yaci": 31, "yahoo": [31, 74, 85], "z": [31, 64, 85], "nosql": [31, 37], "sql": [31, 37], "online_url_search": [31, 57, 82, 85], "tiney": [31, 85], "online_curr": [31, 82, 85], "soon": [31, 74], "online_dictionari": [31, 82, 85], "endpoint": [32, 52, 65], "pattern": 32, "w": [32, 85], "php": 32, "state": [32, 77, 82, 89], "ask": 32, "search_typ": 32, "srenablerewrit": 32, "srsort": 32, "srprop": 32, "639": [32, 50, 58, 83], "nearmatch": 32, "srwhat": 32, "thought": 32, "spell": [32, 41], "sectiontitl": 32, "snippet": 32, "categorysnippet": 32, "relev": [32, 38, 42, 61], "sort": [32, 35, 38, 42, 80], "create_timestamp_asc": 32, "create_timestamp_desc": 32, "incoming_links_asc": 32, "incoming_links_desc": 32, "just_match": 32, "last_edit_asc": 32, "last_edit_desc": 32, "user_random": 32, "timestamp_format": 32, "dt": 32, "sz": 32, "longhand": 32, "integr": [33, 35, 61, 69, 70], "leak": [33, 52], "easiest": 33, "solut": [33, 44, 89], "flexibl": [33, 64], "imagin": 33, "power": [33, 35, 36, 64], "mayb": 33, "element": [33, 50, 52, 64, 83], "put": [33, 36, 50], "delimit": [33, 64, 77], "char": 33, "parse_regex": 33, "regular": [33, 74], "express": [33, 74, 75], "query_typ": [33, 35], "enum": 33, "query_enum": 33, "working_dir": 33, "result_separ": 33, "fnd": 33, "check_parsing_opt": 33, "regex": 33, "correctli": [33, 45, 74], "satisfi": [34, 36], "result_templ": [34, 36], "template_nam": [34, 36], "theme_nam": [34, 36], "cmd": [34, 36, 37, 60, 61, 62, 77, 88, 89, 90], "redis_serv": 34, "bsd": 34, "licens": [34, 89], "either": [34, 40, 83, 84], "exact": 34, "match": [34, 35, 57, 74, 77, 82], "partial": [34, 64, 72, 80], "keyword": [34, 36, 73, 78, 87], "exact_match_onli": 34, "myredi": 34, "rd": 34, "pymongo": 34, "program": [34, 51, 61], "mymongo": 34, "27017": 34, "results_per_pag": 34, "busi": 34, "review": 34, "comparison": 35, "aim": [35, 64, 72], "individu": 35, "compani": [35, 71], "design": [35, 48, 64], "scale": [35, 60, 64, 89], "million": 35, "great": 35, "later": [35, 61, 89], "facet": 35, "subset": [35, 83], "authent": [35, 36, 52], "auth_token": 35, "me": [35, 41, 64, 89], "7700": 35, "numer": [35, 64], "moment": [35, 36], "popular": [35, 36, 64], "simple_query_str": 35, "payload": 35, "custom_query_json": 35, "9200": 35, "elast": 35, "changem": 35, "lucen": 35, "indic": [35, 53, 57], "ascend": 35, "slr": 35, "8983": 35, "asc": 35, "rdbm": 36, "mysql_serv": 36, "query_str": 36, "basic": [36, 41, 57, 59, 84, 89], "offset": [36, 58], "dure": [36, 45], "fast": 36, "reliabl": 36, "demonstr": [36, 62], "complex": 36, "mediathekview": 36, "movi": [36, 42, 85], "filmlist": 36, "v2": 36, "bz2": 36, "unpack": 36, "concert": 36, "durat": [36, 43, 80], "unixepoch": 36, "AS": 36, "coalesc": 36, "nullif": 36, "url_video_hd": 36, "url_video_sd": 36, "url_video": 36, "film": 36, "wildcard": 36, "OR": 36, "BY": 36, "desc": 36, "sqlite_cursor": 36, "context": [36, 43, 62, 64, 76, 89], "sqlite3": 36, "cursor": 36, "uri": 36, "psycopg2": 36, "robust": 36, "psychopg2": 36, "my_databas": 36, "my_tabl": 36, "my_column": 36, "connector": 36, "said": 36, "auth_plugin": 36, "caching_sha2_password": 36, "introduc": [37, 53, 64, 89], "skeleton": 37, "omit": 37, "anyth": [37, 71, 84], "retriev": [37, 43], "publicli": 37, "non": 38, "profit": 38, "onlin": [38, 64, 70, 72], "shadow": [38, 56], "varieti": 38, "via": [38, 51, 63], "ipf": 38, "team": 38, "archivist": 38, "annaarchivist": 38, "aa_cont": 38, "aa_ext": 38, "aa_sort": 38, "newest": 38, "aaa": 38, "annas_arch": [38, 85], "journal_articl": 38, "anan": 38, "field": [38, 39, 41, 43, 50, 53], "book_ani": 38, "book_fict": 38, "book_unknown": 38, "book_nonfict": 38, "book_com": 38, "standards_docu": 38, "end": [38, 56, 63, 64, 89], "epub": [38, 56], "beta": 38, "realli": [38, 48], "oldest": 38, "largest": 38, "smallest": 38, "offici": [39, 40, 46, 57, 77], "archlinix": 39, "wiki_netloc": [39, 53], "translat": [39, 59, 61, 70, 77, 78, 84], "zh": [39, 40, 45, 50, 53, 77, 83], "archlinuxcn": 39, "spezial": 39, "Suche": 39, "\u641c\u7d22": 39, "lot": [40, 60, 80], "abund": 40, "realiti": 40, "m\u0101ori": 40, "bit": [40, 64, 89], "closer": 40, "truth": 40, "seem": [40, 41, 44, 50], "inaccuraci": 40, "bing_traits_url": 40, "bing_video": [40, 85], "bing_imag": [40, 85], "bing_new": [40, 85], "learn": [40, 64], "microsoft": [40, 84], "market": 40, "tri": [40, 41, 44, 50, 74, 77], "guess": [40, 44, 50], "territori": [40, 50, 77], "async": [40, 45], "asyncv2": 40, "tabl": [40, 59], "sai": [40, 44], "thats": 40, "why": [40, 61, 64, 70, 86], "xpath_market_cod": 40, "infinitescrollajax": 40, "mkt_alia": 40, "ww": [40, 74], "cn": [40, 45, 53, 77, 83], "worldwid": 40, "aggreg": [40, 70, 71, 84], "time_map": 40, "9": [40, 61, 85], "hour": [40, 58, 75], "margin": 40, "brave_categori": 41, "remark": 41, "digit": [41, 77, 84], "officatl": 41, "facto": [41, 77], "aka": [41, 53, 61, 76, 77], "chines": [41, 53], "arab": 41, "low": 41, "menu": 41, "area": [41, 44, 57], "clear": [41, 71], "difference": 41, "gb": [41, 45, 83], "ui_lang": 41, "ja": [41, 45, 55, 83, 85], "jp": [41, 45], "pt": [41, 45, 50, 77, 83], "br": [41, 45, 77, 83, 85], "sq": [41, 83], "brave_spellcheck": 41, "typo": [41, 64], "food": 41, "fooh": 41, "spellcheck": 41, "torrent": [42, 52], "metadata": [42, 64], "magnet": [42, 52], "identifi": [42, 44, 57, 89], "feed": 42, "fewer": 42, "tradeoff": 42, "bt4g_order_bi": 42, "bt4g_categori": 42, "count": [42, 53, 64, 74], "bt4gv": 42, "bt": [42, 85], "categoi": 42, "audio": 42, "orderd": 42, "duplic": [43, 84], "en_en": 43, "en_gb": [43, 44, 50], "ar_aa": 43, "ar_eg": 43, "ar_a": 43, "ar_sa": 43, "7000": 43, "pr1071": 43, "family_filter_map": 43, "famili": 43, "explicit": [43, 64], "family_filt": 43, "iframe_src": 43, "video_id": 43, "result_field": 43, "allow_emb": 43, "created_tim": 43, "thumbnail_360_url": 43, "safesearch_param": 43, "is_created_for_kid": 43, "kid": 43, "audienc": [43, 64], "ag": 43, "cache_vqd": 44, "vqd": 44, "xmlhttprequest": 44, "wt": 44, "wt_wt": 44, "sens": [44, 64], "besid": [44, 71], "lanaguag": 44, "en_au": 44, "en_ca": 44, "get_ddg_lang": 44, "eng_trait": [44, 45, 53], "sxng_local": [44, 45, 53, 61, 77, 83], "ddg": [44, 68, 85, 87], "confus": [44, 64], "ddi": [44, 85], "pari": [44, 87], "es_ar": 44, "ah": 44, "eng_lang": 44, "eng_region": 44, "kl": 44, "get_vqd": 44, "sent": [44, 71], "far": 44, "least": [44, 45, 50, 60, 74, 83], "duckduckgo_definit": [44, 85], "area_to_str": 44, "wikidata": [44, 68, 85], "entiti": 44, "q712226": 44, "99": 44, "is_broken_text": 44, "href": [44, 58, 74], "xxxx": [44, 64], "somewher": 44, "broken": [44, 64], "mainli": [45, 77], "get_google_info": 45, "definit": [45, 85], "freeli": 45, "manli": 45, "add_domain": 45, "compos": 45, "pair": 45, "lang_en": [45, 61], "lang_zh": 45, "tw": [45, 53, 55, 77, 85], "subdomain": 45, "google_domain": 45, "urllib": 45, "urlencod": 45, "hl": [45, 61], "lr": [45, 61, 85], "particular": 45, "cr": [45, 85], "ie": [45, 61, 83], "utf8": [45, 61], "oe": [45, 61], "decod": 45, "ui_async": 45, "use_ac": 45, "_fmt": 45, "prog": 45, "google_complet": 45, "arg": [45, 67, 83], "android": 45, "protobuf": 45, "pb": 45, "compress": [45, 83], "pc": 45, "jspb": 45, "google_imag": [45, 85], "img": 45, "google_video": [45, 85], "ceid": [45, 61], "ceid_list": 45, "gl": [45, 61, 83, 85], "mandatori": 45, "consent": 45, "dialog": 45, "continu": [45, 62, 64], "num": [45, 83], "google_new": [45, 61, 85], "ae": 45, "419": 45, "AT": 45, "au": 45, "bd": 45, "bn": [45, 83], "nl": [45, 77, 83], "bg": [45, 55, 83], "bw": 45, "ch": [45, 77], "cl": [45, 85], "han": [45, 77], "co": [45, 83], "cu": 45, "cz": [45, 85], "eg": 45, "et": [45, 55, 64, 83], "gr": 45, "el": [45, 55, 83], "hk": [45, 53, 55, 77], "hant": [45, 77], "hu": [45, 83], "il": 45, "he": [45, 55, 64, 77, 83], "IN": 45, "hi": [45, 83], "ml": [45, 46, 83], "mr": [45, 83], "ta": [45, 83], "te": [45, 83], "ke": 45, "kr": 45, "ko": [45, 55, 83, 85], "lb": [45, 83], "lt": [45, 61, 83, 89], "lv": [45, 83, 85], "ma": 45, "mx": 45, "na": 45, "ng": 45, "NO": [45, 50], "nz": 45, "pe": 45, "ph": [45, 85], "pk": 45, "pl": [45, 77, 83], "150": [45, 74, 89], "ro": [45, 83], "sr": [45, 83], "ru": [45, 83, 85], "sa": [45, 67, 83], "se": [45, 85], "sv": [45, 83], "sg": [45, 53], "si": [45, 77, 83], "sl": [45, 55, 83], "sk": [45, 55, 83], "sn": 45, "th": [45, 83], "tr": [45, 83], "tz": 45, "ua": 45, "uk": [45, 68, 83], "ug": [45, 83], "ve": 45, "vn": 45, "vi": [45, 83], "za": 45, "zw": 45, "though": [45, 49], "slightli": 45, "vintag": 45, "google_scholar": [45, 85], "detect_google_captcha": 45, "dom": 45, "sorri": 45, "parse_gs_a": 45, "green": [45, 62], "time_range_arg": 45, "scientif": 45, "minu": [45, 80], "2022": 45, "as_ylo": 45, "2021": [45, 70], "v3": 46, "feder": 46, "independ": [46, 50], "lemmy_typ": 46, "schema": [47, 74, 80], "ident": [47, 50, 89], "videolanguag": 47, "8ed5c729": 47, "refactor": 47, "redesign": 47, "video_respons": 47, "peer": [47, 54], "tube": 47, "joinpeertub": 47, "friendli": 48, "youtub": [48, 85], "frontend": 48, "effici": [48, 83], "consist": [48, 60], "backend_url": 48, "frontend_url": 48, "piped_filt": 48, "ppdm": [48, 85], "music_song": 48, "nextpag": 48, "driven": [48, 70, 84], "plai": [48, 85], "pipedapi": 48, "kavin": 48, "rock": 48, "latter": [48, 64], "randomli": [48, 74], "offic": [48, 77], "webui": 49, "xapian": 49, "achiev": 49, "reach": [49, 64, 80], "mount_prefix": 49, "hierarchi": 49, "filesystem": 49, "dl_prefix": 49, "search_dir": 49, "domain": [49, 55, 57, 64], "scenario": [49, 83], "selector": [50, 58], "mess": 50, "br_br": 50, "pt_br": [50, 77], "cn_cn": 50, "zh_hans_cn": [50, 76], "tw_tw": 50, "zh_hant_tw": 50, "tw_hk": 50, "zh_hant_hk": 50, "gb_gb": 50, "letter": 50, "fil_ph": 50, "no_no": 50, "nb": [50, 83], "unknownlocaleerror": 50, "unknown": [50, 71, 74], "subtag": 50, "iana": 50, "macrolanguag": 50, "w3c": 50, "registri": 50, "norwegian": 50, "bokm\u00e5l": 50, "2005": 50, "suppress": 50, "latn": 50, "primari": 50, "encompass": 50, "mention": 50, "w3": [50, 64], "uniform": 50, "startpage_categ": 50, "get_sc_cod": 50, "sc": [50, 83, 85], "stamp": 50, "scrap": [50, 58], "sc_code_cache_sec": 50, "addition": [50, 70, 71], "search_form_xpath": 50, "ard": 51, "bundesstel": 51, "f\u00fcr": 51, "openapi": 51, "portal": 51, "bunddev": 51, "api2u": 51, "prowlarr": 52, "jackett": 52, "togeth": 52, "huge": [52, 64], "torznab_categori": 52, "show_torrent_fil": 52, "car": 52, "show_magnet_link": 52, "build_result": 52, "get_attribut": 52, "etre": [52, 83], "property_nam": 52, "get_torznab_attribut": 52, "attribute_nam": 52, "list_of_wikipedia": 53, "unlik": [53, 71], "tradit": 53, "languageconvert": 53, "rest_v1_summary_url": 53, "lc": 53, "variant": [53, 64], "convers": 53, "2554": 53, "\u51fa\u79df\u8eca": 53, "reqbin": 53, "gesg2kvx": 53, "get_wiki_param": 53, "wiki_lc_locale_vari": 53, "obj": [53, 64, 67, 83], "fetch_wikimedia_trait": 53, "wp": [53, 85, 87], "\u51fa\u79df\u8f66": 53, "\u8a08\u7a0b\u8eca": 53, "\u7684\u58eb": 53, "\u5fb7\u58eb": 53, "Not": [53, 64, 82], "locale_nam": [53, 72, 77], "depth": [53, 64], "gsw": 53, "classic": 53, "netloc": 53, "higher": [53, 61], "rest_v1": 53, "summari": [53, 58, 59], "meta": [53, 64], "paragraph": 53, "fka": 53, "hovercard": 53, "popup": 53, "mo": [53, 69], "wikipedia_article_depth": 53, "rough": 53, "encyclopedia": 53, "collabor": 53, "frequent": 53, "measur": 53, "were": 53, "realiz": 53, "wikipedia_languag": 53, "get_thumbnail": 53, "upload": [53, 57, 61], "calcul": 53, "stackoverflow": [53, 85], "33691240": 53, "principl": [54, 64], "p2p": 54, "apiyacysearch": 54, "yacy_search_serv": 54, "ya": 54, "8090": 54, "search_mod": 54, "http_digest_auth_us": 54, "http_digest_auth_pass": 54, "oper": [54, 64, 71, 89], "stealth": 54, "lang2domain": 55, "parse_url": 55, "url_str": 55, "track": [55, 67, 70, 71, 84], "da": [55, 83, 85], "hr": [55, 83], "zh_ch": 55, "zh_cht": 55, "abbrevi": [56, 87], "formerli": 56, "bookfind": 56, "scholarli": 56, "academ": 56, "began": 56, "mirror": [56, 85], "genesi": [56, 85], "zlib_year_from": 56, "zlib_year_to": 56, "zlib_ext": 56, "2010": 56, "2020": 56, "zlibrari": [56, 85], "zlib2010": 56, "drag": 57, "constantli": 57, "crawl": 57, "50": [57, 64], "billion": 57, "parse_tineye_match": 57, "match_json": 57, "image_url": 57, "score": [57, 80], "pixel": 57, "height": [57, 64], "overlai": 57, "belong": [57, 64, 85], "stock": 57, "backlink": [57, 64], "crawl_dat": 57, "download_error": 57, "format_not_support": 57, "due": [57, 80], "unsupport": 57, "jpeg": 57, "png": 57, "gif": 57, "bmp": 57, "tiff": 57, "webp": 57, "no_signature_error": 57, "visual": 57, "lang_al": 58, "page_s": 58, "first_page_num": 58, "time_range_url": 58, "time_range_map": 58, "safe": [58, 64, 65, 85], "safe_search_support": 58, "safe_search_map": 58, "no_result_for_http_statu": 58, "results_xpath": 58, "url_xpath": 58, "title_xpath": 58, "content_xpath": 58, "thumbnail_xpath": 58, "suggestion_xpath": 58, "repo": 58, "throw": 58, "safes_search_map": 58, "pag": 58, "24": [58, 87], "720": 58, "8760": 58, "time_range_v": 58, "365": 58, "contribut": [59, 61, 63, 70, 84], "prime": 59, "hackabl": 59, "wlc": 59, "motiv": [59, 74], "gentlemen": 59, "wrap": [59, 89], "suit": [59, 88], "checker": 59, "primer": [59, 70], "skill": 59, "inlin": 59, "markup": [59, 76], "anchor": 59, "unicod": [59, 68, 77], "substitut": 59, "role": 59, "figur": 59, "admonit": 59, "view": [59, 71], "searxng_extra": [59, 70, 77], "standalone_searx": [59, 66], "lxc": [60, 70, 88], "heterogen": 60, "cycl": 60, "tl": [60, 83], "dr": 60, "experienc": 60, "reader": [60, 64], "seriou": 60, "perfect": 60, "overlook": 60, "encapsul": 60, "prerequisit": [60, 64], "preinstal": 60, "softwar": [60, 84, 85], "isol": 60, "mix": [60, 84], "divid": 60, "stack": [60, 89], "lxd": [60, 88], "snap": [60, 89], "exercis": 60, "lxc_suit": [60, 89], "l19": 60, "let": [60, 64, 71], "force_timeout": [60, 88, 89], "140": [60, 74, 89], "conatin": [60, 89], "outsid": [60, 61], "prompt": [60, 61, 88], "guest": 60, "notic": 60, "readi": 60, "ey": [60, 64], "dsitro": 60, "attend": 60, "rel": [60, 64, 74, 83, 89], "transpar": [60, 89], "smylink": 60, "reposetori": 60, "mv": 60, "daili": 60, "ye": 60, "backup": 60, "ld": 60, "lrwxrwxrwx": 60, "modif": 60, "eth0": [60, 89], "live": [60, 63, 64, 80, 89], "fd42": 60, "555b": 60, "2af9": 60, "e121": 60, "216": [60, 74], "3eff": 60, "fe5b": 60, "1744": 60, "searxng_uwsgi_socket": [60, 90], "git_url": [60, 61, 90], "git_branch": [60, 61, 90], "ci": [61, 66, 68, 70], "wrapper": 61, "gnu": 61, "introduct": 61, "deeper": [61, 64], "prebuild": 61, "gecko": 61, "driver": 61, "geckodriv": 61, "robot_test": 61, "6": [61, 64, 80, 83, 85], "amd64": 61, "intermedi": 61, "pypi": [61, 64, 85], "black": [61, 64], "pygment": [61, 64, 68], "golang": 61, "npm": [61, 85], "counterpart": [61, 69], "userag": [61, 68, 83], "recent": 61, "yamllint": 61, "yamllint_fil": 61, "pylint_fil": 61, "pyright": 61, "coverag": 61, "incl": 61, "stuff": [61, 64], "live_them": [61, 63], "previous": 61, "restor": [61, 63], "comfort": [61, 63, 64], "granular": 61, "py3": 61, "txt": [61, 64, 68], "argpars": 61, "initialis": 61, "sha256": 61, "sum": 61, "word": [61, 62, 64, 65], "6cea6eb6def9e14a18bf32f8a3": 61, "471efef6c73558e391c3adb35f4": 61, "goe": 61, "wrong": 61, "runtim": 61, "central": 61, "especi": [61, 64], "pre": 61, "public_url": 61, "vc": 61, "proce": 61, "checkout": 61, "rebas": 61, "met": 61, "chain": [61, 63, 87, 89], "ubu2004": [61, 89], "v0": 61, "39": 61, "8fbf8ab": 61, "04": [61, 87, 89], "v10": 61, "19": [61, 89], "v16": 61, "jinja2": 61, "instant": 61, "source": 61, "black_opt": 61, "black_target": 61, "stuck": 61, "22": [61, 89], "bump": 61, "23": 61, "untouch": 61, "seri": 61, "pylintrc": 61, "whitespac": 61, "3xx": 61, "a1": 61, "443": 61, "life": 61, "3aen": 61, "302": 61, "comput": [61, 71], "cover": 61, "conveni": [61, 80], "satic": 61, "devpkg": 61, "compil": [61, 63, 83], "checkput": 61, "userdel": 61, "rmgrp": 61, "default_on": 62, "attach": 62, "callback": 62, "hook": 62, "flask": [62, 64, 67, 76, 81], "ctx": 62, "whole": 62, "post_search": 62, "result_contain": [62, 81], "return42": [62, 64], "tgwf": 62, "feel": [62, 64], "pre_search": 62, "searchwithplugin": [62, 72, 81], "on_result": 62, "parsed_url": 62, "urlpars": 62, "love": 63, "worri": 63, "hesit": [63, 70], "workflow": [63, 69], "receiv": [63, 74], "wild": 63, "west": 63, "pai": 63, "attent": [63, 64], "nvm": 63, "finish": [63, 89], "remain": 63, "rewind": 63, "encourag": 64, "contributor": 64, "restructuredtext": 64, "builder": 64, "docutil": 64, "faq": 64, "doctre": 64, "cross": 64, "linuxdoc": 64, "jinja": [64, 76], "autodoc": 64, "ecosystem": 64, "therefor": 64, "spars": 64, "plaintext": 64, "intuit": 64, "produc": 64, "advantag": 64, "disadvantag": 64, "grumpi": [64, 67], "face": 64, "train": 64, "bring": [64, 77], "question": [64, 71, 84], "knowledg": 64, "subject": 64, "concret": 64, "pov": 64, "heard": 64, "crawler": 64, "pro": 64, "con": 64, "understand": [64, 77], "chronolog": 64, "condit": [64, 82, 83], "asterisk": 64, "backquot": 64, "appear": 64, "escap": [64, 68], "backslash": 64, "pointer": 64, "emphasi": 64, "strong": 64, "boldfac": 64, "sampl": 64, "adorn": 64, "subsect": 64, "_doc": 64, "refnam": 64, "lorem": [64, 87], "ipsum": [64, 87], "dolor": 64, "sit": 64, "amet": 64, "consectetur": 64, "adipisici": 64, "elit": 64, "_chapter": 64, "ut": 64, "enim": 64, "veniam": 64, "qui": 64, "nostrud": 64, "exercit": 64, "ullamco": 64, "labori": 64, "nisi": 64, "aliquid": 64, "ex": 64, "ea": 64, "commodi": 64, "consequat": 64, "_section": 64, "_subsect": 64, "overlin": 64, "_anchor": 64, "_rest": 64, "visist": 64, "_sphinx": 64, "raw": [64, 76], "__": 64, "referenc": 64, "becom": [64, 68], "rfc": 64, "822": 64, "pep": 64, "af2cae6": 64, "man": [64, 85], "intersphinx_map": 64, "palletsproject": 64, "inventori": 64, "inv": 64, "simplest": 64, "colon": 64, "literalinclud": 64, "expand": 64, "consetetur": 64, "sadipsc": 64, "elitr": 64, "diam": 64, "nonumi": 64, "eirmod": 64, "tempor": 64, "invidunt": 64, "labor": 64, "caption": 64, "rout": [64, 74, 76], "statist": [64, 84], "get_engines_stat": 64, "0xa9": 64, "copyright": 64, "sign": 64, "tm": 64, "2122": 64, "trademark": 64, "glyph": 64, "piec": 64, "signifi": 64, "enclos": 64, "rolenam": 64, "guilabel": 64, "ancel": 64, "cancel": 64, "kbd": 64, "menuselect": 64, "b": [64, 68, 79, 83], "bold": 64, "subscript": 64, "sub": 64, "superscript": 64, "mc": [64, 85], "sup": 64, "scalabl": 64, "absenc": 64, "annoi": 64, "inherit": [64, 81], "insert": [64, 89], "_svg": 64, "svg_imag": 64, "alt": 64, "_dot": 64, "digraph": 64, "baz": 64, "vector": 64, "nw": 64, "arrow": 64, "xmln": 64, "baseprofil": 64, "70px": 64, "40px": 64, "viewbox": 64, "700": 64, "x1": 64, "180": 64, "y1": 64, "370": 64, "x2": 64, "500": 64, "y2": 64, "stroke": 64, "15px": 64, "polygon": 64, "585": 64, "525": 64, "25": 64, "transform": 64, "rotat": 64, "135": 64, "parent": 64, "compact": 64, "third": [64, 71, 80, 84], "yyyi": 64, "zzzz": 64, "distinguish": [64, 77], "classifi": [64, 74], "phrase": 64, "That": 64, "duref": 64, "surround": 64, "fieldnam": 64, "commonli": 64, "my_funct": 64, "my_arg": 64, "my_other_arg": 64, "cours": 64, "caveat": 64, "doctest": 64, "catcher": 64, "top": 64, "kiss_": 64, "readability_": 64, "tip": 64, "caution": 64, "danger": 64, "import": [64, 67, 76, 77, 79], "ugli": 64, "row": 64, "column": 64, "cell": 64, "nightmar": 64, "big": [64, 80], "diff": 64, "widen": 64, "ascrib": 64, "anywai": 64, "helper": 64, "emac": 64, "colspan": 64, "rowspan": 64, "front": 64, "align": 64, "span": [64, 83], "doubl": 64, "stage": 64, "cspan": 64, "rspan": 64, "rightmost": 64, "fill": 64, "behavior": 64, "stub": 64, "morecol": 64, "morerow": 64, "col": 64, "outstand": 64, "csv_tabl": 64, "loremlorem": 64, "magna": 64, "aliquyam": 64, "erat": 64, "voluptua": 64, "vero": 64, "accusam": 64, "justo": 64, "duo": 64, "rebum": 64, "stet": 64, "clita": 64, "kasd": 64, "gubergren": 64, "sea": 64, "takimata": 64, "sanctu": 64, "est": 64, "suitabl": 64, "enabled_engine_count": 64, "group_bang": 64, "group_engines_in_tab": 64, "loop": [64, 80], "els": [64, 69, 89], "endif": 64, "mod": 64, "upper": 64, "__name__": 64, "documented_modul": 64, "endfor": 64, "jinja_context": 64, "instruct": [64, 84], "amsmath": 64, "mathemat": 64, "ctan": 64, "numref": 64, "schroeding": 64, "schr\u00f6dinger": 64, "label": [64, 68, 83], "mathrm": 64, "hbar": 64, "dfrac": 64, "psi": 64, "rangl": 64, "hat": 64, "tfrac": 64, "textstyl": 64, "displaystyl": 64, "fraction": 64, "thu": [65, 71, 74], "hash_plugin": 65, "search_on_category_select": 65, "self_inform": 65, "tracker_url_remov": 65, "ahmia_blacklist": [65, 68], "open_access_doi_rewrit": 65, "like_hotkei": 65, "tor_check_plugin": 65, "disabled_plugin": 65, "enabled_engin": 65, "disabled_engin": 65, "update_ahmia_blacklist": 66, "update_curr": 66, "update_engine_descript": 66, "update_external_bang": 66, "update_firefox_vers": 66, "update_engine_trait": [66, 77], "update_osm_keys_tag": 66, "update_pyg": 66, "update_wikidata_unit": 66, "get_search_queri": [66, 67], "json_seri": [66, 67], "no_parsed_url": [66, 67], "parse_argu": [66, 67], "to_dict": [66, 67], "contrari": 67, "behav": 67, "rain": 67, "engine_categori": [67, 82], "searchqueri": [67, 72, 81], "serial": 67, "typeerror": [67, 83], "category_choic": 67, "systemexit": 67, "importlib": 67, "spec": 67, "spec_from_file_loc": 67, "module_from_spec": 67, "exec_modul": 67, "ptipython": 67, "timerang": 67, "search_queri": [67, 81, 82], "onion": 68, "engine_descript": 68, "get_output": 68, "description_and_sourc": 68, "external_bang": [68, 81], "newbang": 68, "bv1": 68, "v260": 68, "futur": 68, "bv2": 68, "probabl": [68, 83], "re_bang_vers": 68, "merge_when_no_leaf": 68, "child": 68, "equal": 68, "leaf_kei": 68, "dig": 68, "nood": 68, "dg": 68, "ig": 68, "signatur": 68, "intersect": [68, 77], "unicodeescap": 68, "pprint": 68, "pformat": 68, "fetch_traits_map": 68, "filter_local": 68, "traits_map": 68, "threshold": [68, 83], "get_unicode_flag": 68, "emoji": [68, 77], "i18n": [68, 69, 70, 72], "sidenot": 68, "atownsend": 68, "osm_keys_tag": 68, "sparql_tags_request": 68, "sparql": 68, "get_tag": 68, "taginfo": 68, "3dhous": 68, "infobox": 68, "q3947": 68, "p1282": 68, "3abuild": 68, "3dbungalow": 68, "q850107": 68, "sparql_keys_request": 68, "payment": 68, "3apay": 68, "q1148747": 68, "confirm": 68, "cash": 68, "rdf": 68, "oppos": 68, "wikibas": 68, "wikidata_unit": 68, "extractor": [69, 70, 72], "pybabel": 69, "codeberg": [69, 85], "sync": 69, "synchron": 69, "orphan": 69, "decoupl": 69, "pot": 69, "po": 69, "job": [69, 88], "fridai": 69, "additon": 69, "70": 70, "neither": [70, 83], "nor": [70, 83], "anyon": 70, "encrypt": 70, "130": 70, "60": 70, "profession": 70, "assur": 70, "autom": 70, "join": [70, 83, 84], "expert": 70, "everyon": [70, 71, 84], "improv": [70, 84], "discuss": 70, "middl": 70, "conclus": 70, "parti": [71, 84], "peopl": [71, 84], "vpn": 71, "laptop": 71, "gain": 71, "insight": 71, "dive": 71, "advertis": 71, "monet": 71, "someon": 71, "sold": 71, "proper": 71, "vulner": 71, "abus": 71, "exchang": 71, "tailor": 71, "reset": [71, 74, 89, 90], "compromis": [71, 84], "limiter_cfg": [72, 74], "limiter_cfg_schema": [72, 74], "ip_list": 72, "block_ip": [72, 74], "pass_ip": [72, 74], "searxng_org": [72, 74], "probe": 72, "searxengineapiexcept": [72, 75], "searxengineaccessdeniedexcept": [72, 75], "searxenginecaptchaexcept": [72, 75], "searxengineexcept": [72, 75], "searxengineresponseexcept": [72, 75], "searxenginetoomanyrequestsexcept": [72, 75], "searxenginexpathexcept": [72, 75, 83], "searxexcept": [72, 75], "searxparameterexcept": [72, 75], "searxsettingsexcept": [72, 75], "searxxpathsyntaxexcept": [72, 75, 83], "infopag": [72, 76], "infopageset": [72, 76], "build_engine_local": [72, 77], "get_local": [72, 77], "get_locale_descr": [72, 77], "get_offical_local": [72, 77], "get_transl": [72, 77], "language_tag": [72, 77], "locales_initi": [72, 77], "match_local": [72, 77], "region_tag": [72, 77], "additional_transl": [72, 77], "locale_best_match": [72, 77], "rtl_local": [72, 77], "preference_sect": [72, 78], "query_exampl": [72, 78], "query_keyword": [72, 78], "old_redis_url_default_url": [72, 79], "drop_count": [72, 80], "incr_count": [72, 80], "incr_sliding_window": [72, 80], "lua_script_storag": [72, 80], "purge_by_prefix": [72, 80], "secret_hash": [72, 80], "engineref": [72, 81], "convert_str_to_int": [72, 83], "detect_languag": [72, 83], "dict_subset": [72, 83], "ecma_unescap": [72, 83], "eval_xpath": [72, 83], "eval_xpath_getindex": [72, 83], "eval_xpath_list": [72, 83], "extract_text": [72, 83], "extract_url": [72, 83], "gen_userag": [72, 83], "get_engine_from_set": [72, 83], "get_torrent_s": [72, 83], "get_xpath": [72, 83], "html_to_text": [72, 83], "int_or_zero": [72, 83], "is_valid_lang": [72, 83], "normalize_url": [72, 83], "to_str": [72, 83], "search_language_cod": [72, 83], "searxng_msg": 73, "msg": 73, "cfg": [73, 74], "babel_extract": 73, "yield": 73, "fileobj": 73, "comment_tag": 73, "botdetect": 74, "get_real_ip": 74, "fake": 74, "happen": 74, "werkzeug": 74, "proxyfix": 74, "x_for": 74, "inconsist": 74, "suspici": 74, "fact": 74, "toml": 74, "lokal": 74, "238": 74, "172": 74, "132": 74, "linkloc": 74, "184": 74, "34": 74, "257": 74, "invalid": 74, "real_ip": 74, "ipv4address": 74, "ipv6address": 74, "tupl": [74, 77, 83], "subnet": 74, "2603": 74, "c022": 74, "4900": 74, "56": 74, "passlist": 74, "organ": 74, "slide": [74, 80], "window": [74, 80], "investig": 74, "burst_max": 74, "burst_max_suspici": 74, "long_max": 74, "long_max_suspici": 74, "intercept": 74, "suspicious_ip_window": 74, "suspicious_ip_max": 74, "drope": 74, "api_max": 74, "api_wondow": 74, "sec": [74, 75, 80, 83], "15": [74, 89], "burst_window": 74, "burst": 74, "long_window": 74, "600": 74, "2592000": 74, "ping": 74, "client_token": 74, "mimetyp": 74, "stylesheet": 74, "get_token": 74, "url_for": 74, "get_ping_kei": 74, "ipv4network": 74, "ipv6network": 74, "token_live_tim": 74, "token_kei": 74, "is_suspici": 74, "renew": 74, "ping_live_tim": 74, "ping_kei": 74, "searxng_limit": 74, "livetim": 74, "AND": 74, "deflat": 74, "user_ag": 74, "cc": [74, 85], "uu": 74, "rr": 74, "ll": 74, "scrapi": 74, "splash": 74, "javafx": 74, "feedfetch": 74, "java": 74, "jakarta": 74, "okhttp": 74, "httpclient": 74, "jersei": 74, "libwww": 74, "perl": 74, "rubi": 74, "synhttpclient": 74, "universalfeedpars": 74, "googlebot": 74, "googleimageproxi": 74, "bingbot": 74, "baiduspid": 74, "yacybot": 74, "yandexmobilebot": 74, "yandexbot": 74, "slurp": 74, "mj12bot": 74, "ahrefsbot": 74, "org_bot": 74, "msnbot": 74, "seznambot": 74, "linkdexbot": 74, "netvib": 74, "smtbot": 74, "zgrab": 74, "jame": 74, "sogou": 74, "abonti": 74, "pixrai": 74, "spinn3r": 74, "semrushbot": 74, "exabot": 74, "zmeu": 74, "blexbot": 74, "bitlybot": 74, "mozilla": [74, 83], "farsid": 74, "petalbot": 74, "suspend_time_set": 75, "suspend": [75, 82], "imposs": 75, "3660": 75, "xpath_spec": [75, 83], "paramat": 75, "filenam": 75, "_info_pag": 76, "mistletoepag": 76, "pagenam": 76, "get_valu": 76, "get_pag": 76, "fname": 76, "get_ctx": 76, "conntext": 76, "markdown": 76, "commonmark": 76, "raw_cont": 76, "page_class": 76, "info_fold": 76, "parser": 76, "toc": 76, "i18n_origin": 76, "iter_pag": 76, "fallback_to_default": 76, "markdwon": 76, "locale_default": 76, "tag_list": 77, "engine_local": 77, "zh_han": [77, 83], "zh_hant": [77, 83], "model": [77, 83], "ca_e": 77, "fr_be": 77, "fr_ca": 77, "fr_ch": 77, "fr_fr": 77, "pl_pl": 77, "pt_pt": 77, "zh_tw": 77, "narrow": 77, "down": 77, "approxim": 77, "attempt": 77, "assumpt": 77, "optim": 77, "prioriti": 77, "terrirtori": 77, "locale_tag": 77, "fran\u00e7ai": 77, "portugu\u00ea": 77, "brasil": 77, "de_facto": 77, "get_official_languag": 77, "monkei": 77, "flask_babel": 77, "locale_tag_list": 77, "fallback": 77, "dv": [77, 83], "\u078b": 77, "\u0788": 77, "\u0780": 77, "dhivehi": 77, "oc": [77, 83], "occitan": 77, "pap": 77, "papiamento": 77, "szl": 77, "\u015bl\u014dnski": 77, "silesian": 77, "taiwan": 77, "hong": 77, "kong": 77, "fa": [77, 83], "ir": 77, "five": 77, "get_language_nam": 77, "get_territory_nam": 77, "english_nam": 77, "repres": 77, "globe": 77, "canada": 77, "belgiqu": 77, "tor_check": 78, "lua": 80, "inspir": [80, 84], "bullet": 80, "proof": 80, "redispi": 80, "redislib": 80, "counter": 80, "searxng_counter_": 80, "increment": 80, "64": 80, "incr": 80, "sleep": 80, "typedur": 80, "zadd": 80, "zremrangebyscor": 80, "refresh": 80, "zcount": 80, "until": 80, "register_script": 80, "searxng_": 80, "purg": 80, "zero": [80, 89], "del": 80, "anonymis": 80, "engineref_list": 81, "timeout_limit": 81, "resultcontain": 81, "ordered_plugin_list": 81, "engineprocessor": 82, "engine_nam": 82, "reqest": 82, "get_param": 82, "suspendedstatu": 82, "offlineprocessor": 82, "onlineprocessor": 82, "default_request_param": 82, "onlinecurrencyprocessor": 82, "parser_r": 82, "onlinedictionaryprocessor": 82, "onlineurlsearchprocessor": 82, "re_search_url": 82, "number_str": 83, "only_search_languag": 83, "whose": 83, "valueerror": 83, "fasttext": 83, "identif": 83, "zip": 83, "classif": 83, "bag": 83, "trick": 83, "af": 83, "am": 83, "arz": 83, "ast": 83, "av": 83, "az": 83, "azb": 83, "ba": 83, "bcl": 83, "bh": 83, "bo": 83, "bpy": 83, "bxr": 83, "cbk": 83, "ce": 83, "ceb": 83, "ckb": 83, "cv": [83, 85], "cy": 83, "diq": 83, "dsb": 83, "dty": 83, "eml": 83, "eu": 83, "fi": [83, 89], "frr": 83, "fy": 83, "ga": 83, "gn": 83, "gom": 83, "gu": 83, "gv": 83, "hif": 83, "hsb": 83, "ht": 83, "hy": 83, "ia": 83, "ilo": 83, "jbo": 83, "jv": 83, "ka": 83, "kk": 83, "km": 83, "kn": 83, "krc": 83, "ku": 83, "kv": 83, "kw": 83, "ky": 83, "lez": 83, "li": [83, 89], "lmo": 83, "lo": [83, 85], "lrc": 83, "mg": 83, "mhr": 83, "mk": 83, "mn": 83, "mrj": 83, "mt": 83, "mwl": 83, "myv": 83, "mzn": 83, "nah": 83, "nap": 83, "nd": 83, "ne": 83, "nn": 83, "pa": 83, "pam": 83, "pfl": 83, "pm": 83, "pnb": 83, "qu": 83, "rue": 83, "sah": 83, "scn": 83, "sco": 83, "sd": 83, "su": [83, 85], "sw": 83, "tg": 83, "tk": 83, "tt": [83, 85], "tyv": 83, "ur": 83, "uz": 83, "vec": 83, "vep": 83, "vl": 83, "vo": 83, "war": 83, "wuu": 83, "xal": 83, "xmf": 83, "yi": 83, "yo": 83, "yue": 83, "harmon": 83, "discrep": 83, "fastext": 83, "mutablemap": 83, "unescap": 83, "ecma": 83, "262": 83, "objets_globaux": 83, "u5409": 83, "\u5409": 83, "f3": 83, "\u00f3": 83, "elementbas": 83, "equival": 83, "xpath_str": 83, "xpathxslt": 83, "_notsetclass": 83, "ais": 83, "min_len": 83, "xpath_result": 83, "allow_non": 83, "concat": 83, "text_cont": 83, "union": 83, "htmlelement": 83, "fromstr": 83, "42": [83, 89], "parsererror": 83, "os_str": 83, "filesize_multipli": 83, "tb": 83, "tib": 83, "gib": 83, "5368709120": 83, "mib": 83, "3140000": 83, "worst": 83, "html_str": 83, "color": 83, "red": 83, "zz": 83, "ukrainian": 83, "espa\u00f1ol": 83, "spanish": 83, "absolut": 83, "frozenset": 83, "matrix": 84, "chat": 84, "person": 84, "consciou": 84, "believ": 84, "freedom": 84, "opensearch": 84, "edg": 84, "chrome": 84, "safari": 84, "chromium": 84, "encount": 84, "seek": 84, "platform": 84, "moreov": 84, "appreci": 84, "reclaim": 84, "freer": 84, "decentr": 84, "149": 85, "77": 85, "mojeek": 85, "mjk": 85, "qw": 85, "sp": 85, "wibi": 85, "wib": 85, "json_engin": 85, "yh": 85, "szn": 85, "goo": 85, "naver": 85, "nvr": 85, "wikibook": 85, "wb": 85, "wikiquot": 85, "wq": 85, "wikisourc": 85, "wikispeci": 85, "wsp": 85, "wikivers": 85, "wv": 85, "wikivoyag": 85, "wy": 85, "alexandria": 85, "alx": 85, "ai": 85, "crowdview": 85, "curli": 85, "currency_convert": 85, "ddd": 85, "dictzon": 85, "dc": 85, "lingva": 85, "tin": 85, "wd": 85, "wolframalpha": 85, "wolframalpha_noapi": 85, "yep": 85, "wikimini": 85, "wkmn": 85, "bii": 85, "brimg": 85, "duckduckgo_imag": 85, "qwi": 85, "1x": 85, "www1x": 85, "arc": 85, "deviantart": 85, "flickr": 85, "fl": 85, "flickr_noapi": 85, "frinkiac": 85, "frk": 85, "congress": 85, "loc": 85, "openvers": 85, "opv": 85, "unsplash": 85, "biv": 85, "brvid": 85, "gov": 85, "qwv": 85, "ccc": 85, "tv": 85, "c3tv": 85, "dm": 85, "gpm": 85, "google_plai": 85, "invidi": 85, "iv": 85, "ptb": 85, "ppd": 85, "rumbl": 85, "sepiasearch": 85, "vimeo": 85, "vm": 85, "yt": 85, "youtube_noapi": 85, "mediathekviewweb": 85, "mvw": 85, "ina": 85, "wikinew": 85, "wn": 85, "brnew": 85, "gon": 85, "qwn": 85, "yhn": 85, "yahoo_new": 85, "appl": 85, "apm": 85, "apple_map": 85, "photon": 85, "azlyr": 85, "geniu": 85, "gen": 85, "bandcamp": 85, "bc": 85, "deezer": 85, "dz": 85, "gpodder": 85, "gpod": 85, "mixcloud": 85, "soundcloud": 85, "hub": 85, "dh": 85, "docker_hub": 85, "hoogl": 85, "ho": 85, "metacpan": 85, "cpan": 85, "packagist": 85, "pack": 85, "pub": 85, "pd": 85, "rubygem": 85, "rbg": 85, "askubuntu": 85, "stackexchang": 85, "st": 85, "superus": 85, "cb": 85, "gitlab": 85, "sourcehut": 85, "srht": 85, "fsd": 85, "gentoo": 85, "ge": 85, "anaconda": 85, "conda": 85, "framalibr": 85, "frl": 85, "habrahabr": 85, "habr": 85, "lobst": 85, "mankier": 85, "searchcod": 85, "scc": 85, "searchcode_cod": 85, "arxiv": 85, "arx": 85, "crossref": 85, "scholar": 85, "pubm": 85, "semantic_scholar": 85, "openairedataset": 85, "oad": 85, "openairepubl": 85, "oap": 85, "pdbe": 85, "pdb": 85, "apk": 85, "apkm": 85, "apkmirror": 85, "ap": 85, "apple_app_stor": 85, "fdroid": 85, "fd": 85, "gpa": 85, "1337x": 85, "aa": 85, "btdigg": 85, "kickass": 85, "kc": 85, "lg": 85, "nyaa": 85, "nt": 85, "openrepo": 85, "piratebai": 85, "tpb": 85, "solidtorr": 85, "solid": 85, "tokyotoshokan": 85, "zlib": 85, "9gag": 85, "9g": 85, "lecom": 85, "leco": 85, "lepo": 85, "leu": 85, "reddit": 85, "twitter": 85, "social_media": 86, "wau": 87, "holland": 87, "inclus": 87, "wfr": 87, "uuid": 87, "averag": 87, "avg": 87, "123": 87, "548": 87, "md5": 87, "sha512": 87, "dispos": 88, "batch": 88, "snapcraft": 89, "cup": 89, "coffe": 89, "iptabl": 89, "fralef": 89, "conflict": 89, "reboot": 89, "7048": 89, "7851230": 89, "handi": 89, "ugo": 89, "ubu2204": 89, "fedora35": 89, "snapshot": 89, "upon": 89, "ever": 89, "47712402": 89, "rw": 89, "marku": 89, "2923": 89, "apr": 89, "52": 89, "11": 89, "inod": 89, "ouput": 89, "timezon": 89, "ubu2110": 89, "170": 89, "160": 89, "searxnggfedora35": 89, "200331": 89, "296": 89, "explanatori": [89, 90], "launch": 89, "storag": 89, "quot": 89, "prepar": 89, "nil": 89, "spdx": 89, "agpl": 89, "manipul": 89, "subshel": 89, "lxc_set_suite_env": 89, "lxc_suite_nam": 89, "linuxcontain": 89, "linuxcontainers_org_nam": 89, "lxc_host_prefix": 89, "eoss": 89, "april": 89, "2025": 89, "2027": 89, "eol": 89, "fedoraproject": 89, "35": 89, "releng": 89, "lxc_suite_install_info": 89, "eof": 89, "local_imag": 89, "lxc_suite_instal": 89, "lxc_repo_root": 89, "rst_titl": 89, "ask_yn": 89, "yn": 89, "link_src": 89, "lxc_suite_info": 89, "global_ip": 89, "info_msg": 89, "sc2034": 89, "sc2031": 89, "localtest": 90, "searxng_check": 90, "get_set": 90, "fv": 90, "az808": 90, "537": 90}, "objects": {"": [[62, 0, 1, "", "on_result"], [62, 0, 1, "", "post_search"], [62, 0, 1, "", "pre_search"]], "searx.autocomplete": [[45, 0, 1, "", "google_complete"]], "searx": [[73, 1, 0, "-", "babel_extract"], [74, 1, 0, "-", "botdetection"], [29, 1, 0, "-", "enginelib"], [30, 1, 0, "-", "engines"], [75, 1, 0, "-", "exceptions"], [76, 1, 0, "-", "infopage"], [77, 1, 0, "-", "locales"], [79, 1, 0, "-", "redisdb"], [80, 1, 0, "-", "redislib"], [77, 1, 0, "-", "sxng_locales"], [83, 1, 0, "-", "utils"]], "searx.babel_extract": [[73, 0, 1, "", "extract"]], "searx.botdetection": [[74, 0, 1, "", "get_real_ip"], [74, 1, 0, "-", "http_accept"], [74, 1, 0, "-", "http_accept_encoding"], [74, 1, 0, "-", "http_accept_language"], [74, 1, 0, "-", "http_connection"], [74, 1, 0, "-", "http_user_agent"], [74, 1, 0, "-", "ip_limit"], [74, 1, 0, "-", "ip_lists"], [74, 1, 0, "-", "limiter"], [74, 1, 0, "-", "link_token"]], "searx.botdetection.http_user_agent": [[74, 2, 1, "", "USER_AGENT"]], "searx.botdetection.ip_limit": [[74, 2, 1, "", "API_MAX"], [74, 2, 1, "", "API_WONDOW"], [74, 2, 1, "", "BURST_MAX"], [74, 2, 1, "", "BURST_MAX_SUSPICIOUS"], [74, 2, 1, "", "BURST_WINDOW"], [74, 2, 1, "", "LONG_MAX"], [74, 2, 1, "", "LONG_MAX_SUSPICIOUS"], [74, 2, 1, "", "LONG_WINDOW"], [74, 2, 1, "", "SUSPICIOUS_IP_MAX"], [74, 2, 1, "", "SUSPICIOUS_IP_WINDOW"]], "searx.botdetection.ip_lists": [[74, 2, 1, "", "SEARXNG_ORG"], [74, 0, 1, "", "block_ip"], [74, 0, 1, "", "pass_ip"]], "searx.botdetection.limiter": [[74, 2, 1, "", "LIMITER_CFG"], [74, 2, 1, "", "LIMITER_CFG_SCHEMA"]], "searx.botdetection.link_token": [[74, 2, 1, "", "PING_KEY"], [74, 2, 1, "", "PING_LIVE_TIME"], [74, 2, 1, "", "TOKEN_KEY"], [74, 2, 1, "", "TOKEN_LIVE_TIME"], [74, 0, 1, "", "get_ping_key"], [74, 0, 1, "", "get_token"], [74, 0, 1, "", "is_suspicious"], [74, 0, 1, "", "ping"]], "searx.enginelib": [[29, 3, 1, "", "Engine"], [29, 1, 0, "-", "traits"]], "searx.enginelib.Engine": [[29, 4, 1, "", "about"], [29, 4, 1, "", "categories"], [29, 4, 1, "", "disabled"], [29, 4, 1, "", "display_error_messages"], [29, 4, 1, "", "enable_http"], [29, 4, 1, "", "engine"], [29, 4, 1, "", "engine_type"], [29, 4, 1, "", "fetch_traits"], [29, 4, 1, "", "inactive"], [29, 4, 1, "", "language"], [29, 4, 1, "", "language_support"], [29, 4, 1, "", "name"], [29, 4, 1, "", "paging"], [29, 4, 1, "", "proxies"], [29, 4, 1, "", "region"], [29, 4, 1, "", "safesearch"], [29, 4, 1, "", "send_accept_language_header"], [29, 4, 1, "", "shortcut"], [29, 4, 1, "", "time_range_support"], [29, 4, 1, "", "timeout"], [29, 4, 1, "", "tokens"], [29, 4, 1, "", "traits"], [29, 4, 1, "", "using_tor_proxy"]], "searx.enginelib.traits": [[29, 3, 1, "", "EngineTraits"], [29, 3, 1, "", "EngineTraitsEncoder"], [29, 3, 1, "", "EngineTraitsMap"]], "searx.enginelib.traits.EngineTraits": [[29, 4, 1, "", "all_locale"], [29, 5, 1, "", "copy"], [29, 4, 1, "", "custom"], [29, 4, 1, "", "data_type"], [29, 5, 1, "", "fetch_traits"], [29, 5, 1, "", "get_language"], [29, 5, 1, "", "get_region"], [29, 5, 1, "", "is_locale_supported"], [29, 4, 1, "", "languages"], [29, 4, 1, "", "regions"], [29, 5, 1, "", "set_traits"]], "searx.enginelib.traits.EngineTraitsEncoder": [[29, 5, 1, "", "default"]], "searx.enginelib.traits.EngineTraitsMap": [[29, 4, 1, "", "ENGINE_TRAITS_FILE"], [29, 5, 1, "", "from_data"], [29, 5, 1, "", "save_data"], [29, 5, 1, "", "set_traits"]], "searx.engines": [[38, 1, 0, "-", "annas_archive"], [39, 1, 0, "-", "archlinux"], [40, 1, 0, "-", "bing"], [40, 1, 0, "-", "bing_images"], [40, 1, 0, "-", "bing_news"], [40, 1, 0, "-", "bing_videos"], [41, 1, 0, "-", "brave"], [42, 1, 0, "-", "bt4g"], [33, 1, 0, "-", "command"], [43, 1, 0, "-", "dailymotion"], [26, 1, 0, "-", "demo_offline"], [27, 1, 0, "-", "demo_online"], [44, 1, 0, "-", "duckduckgo"], [44, 1, 0, "-", "duckduckgo_definitions"], [44, 1, 0, "-", "duckduckgo_images"], [44, 1, 0, "-", "duckduckgo_weather"], [35, 1, 0, "-", "elasticsearch"], [30, 2, 1, "", "engine_shortcuts"], [45, 1, 0, "-", "google"], [45, 1, 0, "-", "google_images"], [45, 1, 0, "-", "google_news"], [45, 1, 0, "-", "google_scholar"], [45, 1, 0, "-", "google_videos"], [30, 0, 1, "", "is_missing_required_attributes"], [46, 1, 0, "-", "lemmy"], [30, 0, 1, "", "load_engine"], [30, 0, 1, "", "load_engines"], [32, 1, 0, "-", "mediawiki"], [35, 1, 0, "-", "meilisearch"], [34, 1, 0, "-", "mongodb"], [36, 1, 0, "-", "mysql_server"], [47, 1, 0, "-", "peertube"], [48, 1, 0, "-", "piped"], [36, 1, 0, "-", "postgresql"], [49, 1, 0, "-", "recoll"], [34, 1, 0, "-", "redis_server"], [47, 1, 0, "-", "sepiasearch"], [35, 1, 0, "-", "solr"], [36, 1, 0, "-", "sqlite"], [50, 1, 0, "-", "startpage"], [51, 1, 0, "-", "tagesschau"], [57, 1, 0, "-", "tineye"], [52, 1, 0, "-", "torznab"], [30, 0, 1, "", "using_tor_proxy"], [53, 1, 0, "-", "wikidata"], [53, 1, 0, "-", "wikipedia"], [58, 1, 0, "-", "xpath"], [54, 1, 0, "-", "yacy"], [55, 1, 0, "-", "yahoo"], [56, 1, 0, "-", "zlibrary"]], "searx.engines.annas_archive": [[38, 2, 1, "", "aa_content"], [38, 2, 1, "", "aa_ext"], [38, 2, 1, "", "aa_sort"], [38, 0, 1, "", "fetch_traits"], [38, 0, 1, "", "init"]], "searx.engines.archlinux": [[39, 0, 1, "", "fetch_traits"]], "searx.engines.bing": [[40, 2, 1, "", "base_url"], [40, 2, 1, "", "bing_traits_url"], [40, 0, 1, "", "fetch_traits"], [40, 0, 1, "", "request"], [40, 2, 1, "", "send_accept_language_header"]], "searx.engines.bing_images": [[40, 2, 1, "", "base_url"], [40, 2, 1, "", "bing_traits_url"], [40, 0, 1, "", "fetch_traits"], [40, 0, 1, "", "request"], [40, 0, 1, "", "response"]], "searx.engines.bing_news": [[40, 2, 1, "", "base_url"], [40, 2, 1, "", "bing_traits_url"], [40, 0, 1, "", "fetch_traits"], [40, 2, 1, "", "mkt_alias"], [40, 0, 1, "", "request"], [40, 0, 1, "", "response"], [40, 2, 1, "", "time_map"]], "searx.engines.bing_videos": [[40, 2, 1, "", "base_url"], [40, 2, 1, "", "bing_traits_url"], [40, 0, 1, "", "fetch_traits"], [40, 0, 1, "", "request"], [40, 0, 1, "", "response"]], "searx.engines.brave": [[41, 2, 1, "", "brave_category"], [41, 2, 1, "", "brave_spellcheck"], [41, 0, 1, "", "fetch_traits"], [41, 2, 1, "", "paging"], [41, 2, 1, "", "time_range_support"]], "searx.engines.bt4g": [[42, 2, 1, "", "bt4g_category"], [42, 2, 1, "", "bt4g_order_by"]], "searx.engines.command": [[33, 0, 1, "", "check_parsing_options"]], "searx.engines.dailymotion": [[43, 2, 1, "", "family_filter_map"], [43, 0, 1, "", "fetch_traits"], [43, 2, 1, "", "iframe_src"], [43, 2, 1, "", "result_fields"], [43, 2, 1, "", "safesearch_params"], [43, 2, 1, "", "search_url"]], "searx.engines.demo_offline": [[26, 0, 1, "", "init"], [26, 0, 1, "", "search"]], "searx.engines.demo_online": [[27, 0, 1, "", "init"], [27, 0, 1, "", "request"], [27, 0, 1, "", "response"]], "searx.engines.duckduckgo": [[44, 0, 1, "", "cache_vqd"], [44, 0, 1, "", "fetch_traits"], [44, 0, 1, "", "get_ddg_lang"], [44, 0, 1, "", "get_vqd"], [44, 2, 1, "", "send_accept_language_header"]], "searx.engines.duckduckgo_definitions": [[44, 0, 1, "", "area_to_str"], [44, 0, 1, "", "is_broken_text"]], "searx.engines.google": [[45, 2, 1, "", "UI_ASYNC"], [45, 0, 1, "", "fetch_traits"], [45, 0, 1, "", "get_google_info"], [45, 0, 1, "", "request"], [45, 0, 1, "", "response"]], "searx.engines.google_images": [[45, 0, 1, "", "request"], [45, 0, 1, "", "response"]], "searx.engines.google_news": [[45, 2, 1, "", "ceid_list"], [45, 0, 1, "", "request"], [45, 0, 1, "", "response"]], "searx.engines.google_scholar": [[45, 0, 1, "", "detect_google_captcha"], [45, 0, 1, "", "parse_gs_a"], [45, 0, 1, "", "request"], [45, 0, 1, "", "response"], [45, 0, 1, "", "time_range_args"]], "searx.engines.google_videos": [[45, 0, 1, "", "request"], [45, 0, 1, "", "response"]], "searx.engines.lemmy": [[46, 2, 1, "", "base_url"], [46, 2, 1, "", "lemmy_type"]], "searx.engines.mediawiki": [[32, 2, 1, "", "base_url"], [32, 2, 1, "", "search_type"], [32, 2, 1, "", "srenablerewrites"], [32, 2, 1, "", "srprop"], [32, 2, 1, "", "srsort"], [32, 2, 1, "", "timestamp_format"]], "searx.engines.peertube": [[47, 2, 1, "", "base_url"], [47, 0, 1, "", "fetch_traits"], [47, 0, 1, "", "request"], [47, 0, 1, "", "video_response"]], "searx.engines.piped": [[48, 2, 1, "", "backend_url"], [48, 2, 1, "", "frontend_url"], [48, 2, 1, "", "piped_filter"]], "searx.engines.sepiasearch": [[47, 0, 1, "", "request"]], "searx.engines.sqlite": [[36, 0, 1, "", "sqlite_cursor"]], "searx.engines.startpage": [[50, 0, 1, "", "fetch_traits"], [50, 0, 1, "", "get_sc_code"], [50, 0, 1, "", "request"], [50, 2, 1, "", "sc_code_cache_sec"], [50, 2, 1, "", "search_form_xpath"], [50, 2, 1, "", "send_accept_language_header"], [50, 2, 1, "", "startpage_categ"]], "searx.engines.tineye": [[57, 2, 1, "", "DOWNLOAD_ERROR"], [57, 2, 1, "", "FORMAT_NOT_SUPPORTED"], [57, 2, 1, "", "NO_SIGNATURE_ERROR"], [57, 2, 1, "", "engine_type"], [57, 0, 1, "", "parse_tineye_match"], [57, 0, 1, "", "request"], [57, 0, 1, "", "response"]], "searx.engines.torznab": [[52, 0, 1, "", "build_result"], [52, 0, 1, "", "get_attribute"], [52, 0, 1, "", "get_torznab_attribute"], [52, 0, 1, "", "init"], [52, 0, 1, "", "request"], [52, 0, 1, "", "response"]], "searx.engines.wikidata": [[53, 0, 1, "", "fetch_traits"], [53, 0, 1, "", "get_thumbnail"]], "searx.engines.wikipedia": [[53, 0, 1, "", "fetch_wikimedia_traits"], [53, 0, 1, "", "get_wiki_params"], [53, 2, 1, "", "list_of_wikipedias"], [53, 0, 1, "", "request"], [53, 2, 1, "", "rest_v1_summary_url"], [53, 2, 1, "", "send_accept_language_header"], [53, 2, 1, "", "wiki_lc_locale_variants"], [53, 2, 1, "", "wikipedia_article_depth"]], "searx.engines.xpath": [[58, 2, 1, "", "content_xpath"], [58, 2, 1, "", "cookies"], [58, 2, 1, "", "first_page_num"], [58, 2, 1, "", "headers"], [58, 2, 1, "", "lang_all"], [58, 2, 1, "", "no_result_for_http_status"], [58, 2, 1, "", "page_size"], [58, 2, 1, "", "paging"], [58, 0, 1, "", "request"], [58, 0, 1, "", "response"], [58, 2, 1, "", "results_xpath"], [58, 2, 1, "", "safe_search_map"], [58, 2, 1, "", "safe_search_support"], [58, 2, 1, "", "search_url"], [58, 2, 1, "", "soft_max_redirects"], [58, 2, 1, "", "suggestion_xpath"], [58, 2, 1, "", "thumbnail_xpath"], [58, 2, 1, "", "time_range_map"], [58, 2, 1, "", "time_range_support"], [58, 2, 1, "", "time_range_url"], [58, 2, 1, "", "title_xpath"], [58, 2, 1, "", "url_xpath"]], "searx.engines.yacy": [[54, 2, 1, "", "search_mode"]], "searx.engines.yahoo": [[55, 0, 1, "", "fetch_traits"], [55, 2, 1, "", "lang2domain"], [55, 0, 1, "", "parse_url"], [55, 0, 1, "", "request"], [55, 0, 1, "", "response"]], "searx.engines.zlibrary": [[56, 0, 1, "", "fetch_traits"], [56, 0, 1, "", "init"], [56, 2, 1, "", "zlib_ext"], [56, 2, 1, "", "zlib_year_from"], [56, 2, 1, "", "zlib_year_to"]], "searx.exceptions": [[75, 6, 1, "", "SearxEngineAPIException"], [75, 6, 1, "", "SearxEngineAccessDeniedException"], [75, 6, 1, "", "SearxEngineCaptchaException"], [75, 6, 1, "", "SearxEngineException"], [75, 6, 1, "", "SearxEngineResponseException"], [75, 6, 1, "", "SearxEngineTooManyRequestsException"], [75, 6, 1, "", "SearxEngineXPathException"], [75, 6, 1, "", "SearxException"], [75, 6, 1, "", "SearxParameterException"], [75, 6, 1, "", "SearxSettingsException"], [75, 6, 1, "", "SearxXPathSyntaxException"]], "searx.exceptions.SearxEngineAccessDeniedException": [[75, 4, 1, "", "SUSPEND_TIME_SETTING"]], "searx.exceptions.SearxEngineCaptchaException": [[75, 4, 1, "", "SUSPEND_TIME_SETTING"]], "searx.exceptions.SearxEngineTooManyRequestsException": [[75, 4, 1, "", "SUSPEND_TIME_SETTING"]], "searx.infopage": [[76, 3, 1, "", "InfoPage"], [76, 3, 1, "", "InfoPageSet"]], "searx.infopage.InfoPage": [[76, 7, 1, "", "content"], [76, 5, 1, "", "get_ctx"], [76, 7, 1, "", "html"], [76, 7, 1, "", "raw_content"], [76, 7, 1, "", "title"]], "searx.infopage.InfoPageSet": [[76, 4, 1, "", "folder"], [76, 5, 1, "", "get_page"], [76, 5, 1, "", "iter_pages"], [76, 4, 1, "", "locale_default"], [76, 4, 1, "", "locales"], [76, 4, 1, "", "toc"]], "searx.locales": [[77, 2, 1, "", "ADDITIONAL_TRANSLATIONS"], [77, 2, 1, "", "LOCALE_BEST_MATCH"], [77, 2, 1, "", "LOCALE_NAMES"], [77, 2, 1, "", "RTL_LOCALES"], [77, 0, 1, "", "build_engine_locales"], [77, 0, 1, "", "get_engine_locale"], [77, 0, 1, "", "get_locale"], [77, 0, 1, "", "get_locale_descr"], [77, 0, 1, "", "get_offical_locales"], [77, 0, 1, "", "get_translations"], [77, 0, 1, "", "language_tag"], [77, 0, 1, "", "locales_initialize"], [77, 0, 1, "", "match_locale"], [77, 0, 1, "", "region_tag"]], "searx.plugins": [[78, 1, 0, "-", "tor_check"]], "searx.plugins.tor_check": [[78, 2, 1, "", "description"], [78, 2, 1, "", "name"], [78, 2, 1, "", "preference_section"], [78, 2, 1, "", "query_examples"], [78, 2, 1, "", "query_keywords"]], "searx.redisdb": [[79, 2, 1, "", "OLD_REDIS_URL_DEFAULT_URL"]], "searx.redislib": [[80, 2, 1, "", "LUA_SCRIPT_STORAGE"], [80, 0, 1, "", "drop_counter"], [80, 0, 1, "", "incr_counter"], [80, 0, 1, "", "incr_sliding_window"], [80, 0, 1, "", "lua_script_storage"], [80, 0, 1, "", "purge_by_prefix"], [80, 0, 1, "", "secret_hash"]], "searx.search": [[81, 3, 1, "", "EngineRef"], [81, 3, 1, "", "Search"], [81, 3, 1, "", "SearchQuery"], [81, 3, 1, "", "SearchWithPlugins"]], "searx.search.Search": [[81, 4, 1, "", "result_container"], [81, 5, 1, "", "search"], [81, 4, 1, "", "search_query"]], "searx.search.SearchWithPlugins": [[81, 4, 1, "", "ordered_plugin_list"], [81, 4, 1, "", "request"], [81, 4, 1, "", "result_container"], [81, 5, 1, "", "search"], [81, 4, 1, "", "search_query"]], "searx.search.processors": [[82, 1, 0, "-", "abstract"], [82, 1, 0, "-", "offline"], [82, 1, 0, "-", "online"], [82, 1, 0, "-", "online_currency"], [82, 1, 0, "-", "online_dictionary"], [82, 1, 0, "-", "online_url_search"]], "searx.search.processors.abstract": [[82, 3, 1, "", "EngineProcessor"], [82, 3, 1, "", "SuspendedStatus"]], "searx.search.processors.abstract.EngineProcessor": [[82, 5, 1, "", "get_params"]], "searx.search.processors.offline": [[82, 3, 1, "", "OfflineProcessor"]], "searx.search.processors.online": [[82, 3, 1, "", "OnlineProcessor"], [82, 0, 1, "", "default_request_params"]], "searx.search.processors.online.OnlineProcessor": [[82, 5, 1, "", "get_params"]], "searx.search.processors.online_currency": [[82, 3, 1, "", "OnlineCurrencyProcessor"]], "searx.search.processors.online_currency.OnlineCurrencyProcessor": [[82, 5, 1, "", "get_params"]], "searx.search.processors.online_dictionary": [[82, 3, 1, "", "OnlineDictionaryProcessor"]], "searx.search.processors.online_dictionary.OnlineDictionaryProcessor": [[82, 5, 1, "", "get_params"]], "searx.search.processors.online_url_search": [[82, 3, 1, "", "OnlineUrlSearchProcessor"]], "searx.search.processors.online_url_search.OnlineUrlSearchProcessor": [[82, 5, 1, "", "get_params"]], "searx.sxng_locales": [[77, 2, 1, "", "sxng_locales"]], "searx.utils": [[83, 2, 1, "", "SEARCH_LANGUAGE_CODES"], [83, 0, 1, "", "convert_str_to_int"], [83, 0, 1, "", "detect_language"], [83, 0, 1, "", "dict_subset"], [83, 0, 1, "", "ecma_unescape"], [83, 0, 1, "", "eval_xpath"], [83, 0, 1, "", "eval_xpath_getindex"], [83, 0, 1, "", "eval_xpath_list"], [83, 0, 1, "", "extract_text"], [83, 0, 1, "", "extract_url"], [83, 0, 1, "", "gen_useragent"], [83, 0, 1, "", "get_engine_from_settings"], [83, 0, 1, "", "get_torrent_size"], [83, 0, 1, "", "get_xpath"], [83, 0, 1, "", "html_to_text"], [83, 0, 1, "", "int_or_zero"], [83, 0, 1, "", "is_valid_lang"], [83, 0, 1, "", "normalize_url"], [83, 0, 1, "", "searx_useragent"], [83, 0, 1, "", "to_string"]], "searxng_extra": [[67, 1, 0, "-", "standalone_searx"]], "searxng_extra.standalone_searx": [[67, 0, 1, "", "get_search_query"], [67, 0, 1, "", "json_serial"], [67, 0, 1, "", "no_parsed_url"], [67, 0, 1, "", "parse_argument"], [67, 0, 1, "", "to_dict"]], "searxng_extra.update": [[68, 1, 0, "-", "update_ahmia_blacklist"], [68, 1, 0, "-", "update_currencies"], [68, 1, 0, "-", "update_engine_descriptions"], [68, 1, 0, "-", "update_engine_traits"], [68, 1, 0, "-", "update_external_bangs"], [68, 1, 0, "-", "update_firefox_version"], [68, 1, 0, "-", "update_osm_keys_tags"], [68, 1, 0, "-", "update_pygments"], [68, 1, 0, "-", "update_wikidata_units"]], "searxng_extra.update.update_engine_descriptions": [[68, 0, 1, "", "get_output"]], "searxng_extra.update.update_engine_traits": [[68, 3, 1, "", "UnicodeEscape"], [68, 0, 1, "", "fetch_traits_map"], [68, 0, 1, "", "filter_locales"], [68, 0, 1, "", "get_unicode_flag"]], "searxng_extra.update.update_external_bangs": [[68, 0, 1, "", "merge_when_no_leaf"]]}, "objtypes": {"0": "py:function", "1": "py:module", "2": "py:data", "3": "py:class", "4": "py:attribute", "5": "py:method", "6": "py:exception", "7": "py:property"}, "objnames": {"0": ["py", "function", "Python function"], "1": ["py", "module", "Python module"], "2": ["py", "data", "Python data"], "3": ["py", "class", "Python class"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "method", "Python method"], "6": ["py", "exception", "Python exception"], "7": ["py", "property", "Python property"]}, "titleterms": {"answer": [0, 44], "captcha": 0, "from": 0, "server": [0, 6, 8, 22, 34], "": [0, 6, 8, 11, 30, 38, 77], "ip": 0, "ssh": 0, "manual": 0, "administr": [1, 4], "api": [1, 35, 44, 45, 51, 65], "get": [1, 7], "configur": [1, 10, 12, 28, 32, 33, 34, 36, 38, 42, 46, 48, 49, 52, 54, 56, 58, 85], "data": 1, "sampl": 1, "respons": 1, "emb": 1, "search": [1, 17, 21, 31, 35, 61, 65, 81, 82, 84, 87], "bar": 1, "architectur": 2, "further": [2, 6, 8, 9, 11, 12, 13, 14, 17, 24, 28, 34, 35, 36, 60, 61, 62, 63, 64, 65, 85, 89, 90], "read": [2, 6, 8, 9, 11, 12, 13, 14, 17, 24, 28, 34, 35, 36, 60, 61, 62, 63, 64, 65, 85, 89, 90], "uwsgi": [2, 6, 11], "setup": [2, 11, 28, 89], "buildhost": [3, 89], "build": [3, 7, 25, 61, 64], "develop": [3, 20, 59, 60, 63], "tool": [3, 66, 88], "doc": [3, 25, 61], "sphinx": [3, 64], "need": 3, "lint": 3, "shell": [3, 7, 61], "script": [3, 9], "document": [4, 25, 59], "instal": [5, 9, 10, 24, 61, 89, 90], "apach": 6, "The": [6, 8, 25, 28, 60], "http": [6, 8, 74], "debian": [6, 11], "layout": [6, 11], "modul": [6, 28], "site": [6, 8], "searxng": [6, 7, 8, 10, 24, 30, 60, 70, 71, 75, 77, 84, 89, 90], "header": [6, 74], "disabl": [6, 8], "log": [6, 8], "docker": [7, 89], "contain": [7, 60], "info": [7, 17, 24, 31, 33, 34, 35, 36, 49, 74, 76], "hint": [7, 89], "run": [7, 61, 71, 89], "warn": 7, "insid": 7, "bashism": 7, "imag": [7, 28, 40, 44, 45, 64, 85], "command": [7, 33, 88, 89, 90], "line": [7, 33, 64], "nginx": 8, "updat": [9, 24, 68], "o": 9, "first": 9, "step": 10, "packag": [10, 85], "creat": [10, 25], "user": [10, 86], "depend": [10, 34, 36, 37], "use_default_set": [10, 14], "true": [10, 14], "check": [10, 24, 78], "origin": [11, 70], "distributor": 11, "mainten": [11, 24], "pitfal": 11, "tyrant": 11, "mode": 11, "plugin": [12, 62, 78], "builtin": 12, "built": 12, "time": 12, "default": [12, 28, 84], "set": [13, 14, 28, 84], "yml": [14, 28], "locat": 14, "brand": 15, "categories_as_tab": 16, "engin": [17, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 40, 41, 44, 45, 47, 49, 50, 55, 58, 60, 61, 83, 84, 85, 87], "privat": [17, 37, 71], "token": 17, "exampl": [17, 33, 34, 35, 36, 49, 58, 62, 64], "multilingu": 17, "gener": [18, 28, 64, 85], "outgo": 19, "redi": [20, 34, 61, 79, 80], "note": [20, 64], "ui": 23, "how": [24, 25, 71, 84], "inspect": 24, "debug": 24, "migrat": 24, "stai": 24, "tune": 24, "remov": 24, "obsolet": 24, "servic": 24, "after": 24, "contribut": 25, "prime": 25, "direct": 25, "privaci": [25, 71], "hackabl": 25, "design": 25, "code": [25, 64, 72, 77], "good": [25, 89], "commit": 25, "translat": [25, 69], "rest": [25, 64], "sourc": [25, 72], "live": [25, 61], "clean": [25, 61, 89], "deploi": 25, "github": 25, "io": 25, "demo": [26, 27], "offlin": [26, 31, 37, 82], "onlin": [27, 28, 31, 76, 82], "overview": 28, "file": [28, 64, 85], "common": [28, 88], "option": 28, "overrid": 28, "name": [28, 61, 64], "i": [28, 71, 84], "arbitrari": 28, "recommend": 28, "ar": [28, 71], "make": [28, 61, 84], "request": [28, 74], "pass": 28, "argument": 28, "If": 28, "engine_typ": 28, "online_dictionari": 28, "addit": 28, "online_curr": 28, "online_url_search": 28, "specifi": 28, "result": 28, "type": [28, 31], "templat": [28, 64], "paramet": [28, 65], "media": 28, "video": [28, 40, 43, 45, 47, 85], "torrent": 28, "map": [28, 85], "paper": 28, "see": [28, 71], "bibtex": 28, "field": [28, 64], "format": [28, 61], "librari": [29, 56, 80], "trait": 29, "loader": 30, "implement": [31, 32, 33, 34, 36, 38, 41, 42, 46, 48, 49, 52, 54, 56, 58], "framework": 31, "compon": 31, "url": [31, 64, 82], "currenc": [31, 82], "dictionari": [31, 82], "mediawiki": 32, "nosql": 34, "databas": 34, "extra": [34, 36, 37], "mongodb": 34, "local": [35, 77], "meilisearch": 35, "elasticsearch": 35, "solr": 35, "sql": 36, "sqlite": 36, "postgresql": 36, "mysql": 36, "concept": 37, "program": 37, "interfac": 37, "secur": [37, 45], "anna": 38, "archiv": 38, "arch": 39, "linux": [39, 60], "wiki": 39, "bing": 40, "web": [40, 45, 85], "new": [40, 45, 85], "brave": 41, "content": [41, 42, 45, 46, 48, 54, 56, 64], "region": [41, 50], "languag": [41, 50, 87], "bt4g": 42, "dailymot": 43, "dukcdukgo": 44, "duckduckgo": 44, "lite": 44, "instant": 44, "weather": 44, "googl": 45, "autocomplet": 45, "polici": 45, "csp": 45, "scholar": 45, "lemmi": 46, "peertub": 47, "sepiasearch": 47, "pipe": 48, "known": 48, "quirk": 48, "recol": 49, "startpag": 50, "categori": [50, 87], "tagesschau": 51, "torznab": 52, "webapi": 52, "wikimedia": [53, 85], "wikipedia": 53, "wikidata": 53, "yaci": 54, "yahoo": 55, "z": 56, "tiney": 57, "xpath": 58, "audienc": 60, "motiv": 60, "gentlemen": 60, "start": 60, "your": 60, "archlinux": 60, "fulli": 60, "function": [60, 83], "suit": [60, 89], "In": 60, "work": [60, 84], "usual": 60, "wrap": 60, "product": 60, "summari": 60, "makefil": 61, "manag": 61, "environ": [61, 64, 88], "python": 61, "activ": 61, "drop": 61, "buildenv": 61, "node": 61, "j": 61, "env": 61, "nvm": 61, "statu": 61, "nodej": 61, "gh": 61, "page": 61, "test": 61, "pylint": 61, "checker": 61, "theme": 61, "static": 61, "help": [61, 89, 90], "go": 61, "extern": [62, 87], "entri": 62, "point": 62, "quickstart": 63, "primer": 64, "kiss": 64, "readabl": 64, "matter": 64, "soft": 64, "skill": 64, "basic": 64, "inlin": 64, "markup": 64, "articl": 64, "structur": 64, "head": 64, "anchor": 64, "link": 64, "ref": 64, "role": 64, "ordinari": 64, "hyperlink": 64, "smart": 64, "ext": 64, "extlink": 64, "intersphinx": 64, "liter": 64, "block": 64, "syntax": [64, 87], "highlight": 64, "unicod": 64, "substitut": 64, "figur": 64, "process": 64, "dot": 64, "aka": 64, "graphviz": 64, "hello": 64, "kernel": 64, "render": 64, "svg": 64, "list": 64, "bullet": 64, "horizont": 64, "hlist": 64, "definit": 64, "quot": 64, "paragraph": 64, "bibliograph": 64, "admonit": 64, "sidebar": 64, "titl": 64, "specif": 64, "tabl": 64, "nest": 64, "simpl": 64, "ascii": 64, "foo": 64, "gate": 64, "truth": 64, "grid": 64, "flat": 64, "csv": 64, "tab": [64, 85], "view": 64, "math": 64, "equat": 64, "about": [64, 71, 84], "latex": 64, "space": 64, "box": [66, 88], "searxng_extra": [66, 67, 68], "standalone_searx": 67, "py": [67, 68], "update_ahmia_blacklist": 68, "update_curr": 68, "update_engine_descript": 68, "update_external_bang": 68, "update_firefox_vers": 68, "update_engine_trait": 68, "update_osm_keys_tag": 68, "update_pyg": 68, "update_wikidata_unit": 68, "wlc": 69, "welcom": 70, "featur": 70, "part": 70, "why": [71, 84], "us": [71, 84], "instanc": 71, "worth": 71, "my": [71, 84], "own": [71, 84], "doe": [71, 84], "protect": 71, "what": 71, "consequ": 71, "public": 71, "conclus": 71, "custom": 73, "messag": 73, "extractor": 73, "i18n": 73, "bot": 74, "detect": 74, "x": 74, "forward": 74, "For": 74, "flask": 74, "remote_addr": 74, "limit": 74, "method": 74, "ip_list": 74, "rate": 74, "ip_limit": 74, "link_token": 74, "probe": 74, "http_accept": 74, "http_accept_encod": 74, "http_accept_languag": 74, "http_connect": 74, "http_user_ag": 74, "except": 75, "tor": 78, "db": 79, "processor": 82, "abstract": 82, "class": 82, "util": [83, 89, 90], "do": 84, "can": 84, "group": 85, "without": 85, "subgroup": 85, "music": 85, "lyric": 85, "q": 85, "repo": 85, "software_wiki": 85, "scienc": 85, "scientific_publ": 85, "app": 85, "social_media": 85, "inform": 86, "select": 87, "bang": 87, "special": 87, "queri": 87, "devop": 88, "lxc": 89, "sh": [89, 90], "lxd": 89, "internet": 89, "connect": 89, "know": 89, "up": 89, "config": 89}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx.ext.intersphinx": 1, "sphinx": 58}, "alltitles": {"Answer CAPTCHA from server\u2019s IP": [[0, "answer-captcha-from-server-s-ip"]], "ssh manual:": [[0, null]], "Administration API": [[1, "administration-api"]], "Get configuration data": [[1, "get-configuration-data"]], "Sample response": [[1, "sample-response"]], "Embed search bar": [[1, "embed-search-bar"]], "Architecture": [[2, "architecture"]], "Further reading": [[2, null], [64, null], [64, null]], "uWSGI Setup": [[2, "uwsgi-setup"]], "Buildhosts": [[3, "buildhosts"]], "Build and Development tools": [[3, "build-and-development-tools"]], "Build docs": [[3, "build-docs"]], "Sphinx build needs": [[3, null]], "Lint shell scripts": [[3, "lint-shell-scripts"]], "Administrator documentation": [[4, "administrator-documentation"]], "Installation": [[5, "installation"]], "Apache": [[6, "apache"]], "further read": [[6, null], [9, null], [9, null], [9, null], [24, null], [34, null], [35, null], [36, null], [60, null], [61, null], [61, null], [63, null], [63, null], [63, null], [89, null], [89, null]], "The Apache HTTP server": [[6, "the-apache-http-server"]], "Debian\u2019s Apache layout": [[6, "debian-s-apache-layout"]], "Apache modules": [[6, "apache-modules"]], "Apache sites": [[6, "apache-sites"]], "Apache\u2019s SearXNG site": [[6, "apache-s-searxng-site"]], "uWSGI": [[6, null], [11, "uwsgi"]], "HTTP headers": [[6, null]], "disable logs": [[6, "disable-logs"]], "Docker Container": [[7, "docker-container"]], "info": [[7, null], [17, null], [24, null], [31, null], [31, null], [31, null], [31, null], [31, null], [33, null], [33, null], [34, null], [34, null], [34, null], [35, null], [35, null], [35, null], [35, null], [36, null], [36, null], [36, null], [36, null], [49, null], [74, null]], "hint": [[7, null], [89, null]], "Get Docker": [[7, "get-docker"]], "searxng/searxng": [[7, "searxng-searxng"]], "docker run": [[7, null], [7, null]], "Warning": [[7, null]], "shell inside container": [[7, "shell-inside-container"]], "Bashism": [[7, null]], "Build the image": [[7, "build-the-image"]], "Command line": [[7, "command-line"]], "NGINX": [[8, "nginx"]], "further reading": [[8, null], [11, null], [89, null], [90, null]], "The nginx HTTP server": [[8, "the-nginx-http-server"]], "NGINX\u2019s SearXNG site": [[8, "nginx-s-searxng-site"]], "Disable logs": [[8, "disable-logs"]], "Installation Script": [[9, "installation-script"]], "Update the OS first!": [[9, null]], "Step by step installation": [[10, "step-by-step-installation"]], "Install packages": [[10, "install-packages"]], "Create user": [[10, "create-user"]], "Install SearXNG & dependencies": [[10, "install-searxng-dependencies"]], "Configuration": [[10, "configuration"], [32, "configuration"], [33, "configuration"], [34, "configuration"], [34, "id3"], [38, "configuration"], [42, "configuration"], [46, "configuration"], [48, "configuration"], [49, "configuration"], [52, "configuration"], [54, "configuration"], [56, "configuration"], [58, "configuration"]], "use_default_settings: True": [[10, null]], "Check": [[10, "check"]], "Origin uWSGI": [[11, "origin-uwsgi"]], "Distributors": [[11, "distributors"]], "Debian\u2019s uWSGI layout": [[11, "debian-s-uwsgi-layout"]], "uWSGI maintenance": [[11, "uwsgi-maintenance"]], "uWSGI setup": [[11, "uwsgi-setup"]], "Pitfalls of the Tyrant mode": [[11, "pitfalls-of-the-tyrant-mode"]], "Plugins builtin": [[12, "plugins-builtin"]], "Further reading ..": [[12, null], [13, null], [14, null], [17, null], [28, null], [62, null], [65, null], [85, null]], "Plugins configured at built time (defaults)": [[12, "id1"]], "Settings": [[13, "settings"]], "settings.yml": [[14, "settings-yml"]], "settings.yml location": [[14, "settings-yml-location"]], "use_default_settings": [[14, "use-default-settings"]], "use_default_settings: true": [[14, null]], "brand:": [[15, "brand"]], "categories_as_tabs:": [[16, "categories-as-tabs"]], "engine:": [[17, "engine"]], "Private Engines (tokens)": [[17, "private-engines-tokens"]], "Example: Multilingual Search": [[17, "example-multilingual-search"]], "general:": [[18, "general"]], "outgoing:": [[19, "outgoing"]], "redis:": [[20, "redis"]], "Redis Developer Notes": [[20, "redis-developer-notes"]], "search:": [[21, "search"]], "server:": [[22, "server"]], "ui:": [[23, "ui"]], "SearXNG maintenance": [[24, "searxng-maintenance"]], "How to update": [[24, "how-to-update"]], "How to inspect & debug": [[24, "how-to-inspect-debug"]], "Migrate and stay tuned!": [[24, "migrate-and-stay-tuned"]], "remove obsolete services": [[24, "remove-obsolete-services"]], "Check after Installation": [[24, "check-after-installation"]], "How to contribute": [[25, "how-to-contribute"]], "Prime directives: Privacy, Hackability": [[25, "prime-directives-privacy-hackability"]], "Privacy-by-design": [[25, "privacy-by-design"]], "Code": [[25, "code"]], "Create good commits!": [[25, null]], "Translation": [[25, "translation"], [69, "translation"]], "Documentation": [[25, "documentation"]], "The reST sources": [[25, null]], "live build": [[25, "live-build"]], "docs.clean": [[25, null]], "deploy on github.io": [[25, "deploy-on-github-io"]], "Demo Offline Engine": [[26, "demo-offline-engine"]], "Demo Online Engine": [[27, "demo-online-engine"]], "Engine Overview": [[28, "engine-overview"]], "General Engine Configuration": [[28, "general-engine-configuration"]], "Engine File": [[28, "engine-file"]], "Common options in the engine module": [[28, "id3"]], "Engine settings.yml": [[28, "engine-settings-yml"]], "Common options in the engine setup (settings.yml)": [[28, "id4"]], "Overrides": [[28, "overrides"]], "The naming of overrides is arbitrary / recommended overrides are:": [[28, "id5"]], "Making a Request": [[28, "making-a-request"]], "Passed Arguments (request)": [[28, "passed-arguments-request"]], "If the engine_type is online": [[28, "id6"]], "If the engine_type is online_dictionary,\n in addition to the online arguments:": [[28, "id7"]], "If the engine_type is online_currency,\n in addition to the online arguments:": [[28, "id8"]], "If the engine_type is online_url_search,\n in addition to the online arguments:": [[28, "id9"]], "Specify Request": [[28, "specify-request"]], "Result Types (template)": [[28, "result-types-template"]], "default": [[28, "default"]], "Parameter of the default media type:": [[28, "id10"]], "images": [[28, "images"]], "Parameter of the images media type:": [[28, "id11"]], "videos": [[28, "videos"]], "Parameter of the videos media type:": [[28, "id12"]], "torrent": [[28, "torrent"]], "Parameter of the torrent media type:": [[28, "id13"]], "map": [[28, "map"]], "Parameter of the map media type:": [[28, "id14"]], "paper": [[28, "paper"]], "Parameter of the paper media type /\n see BibTeX field types and BibTeX format": [[28, "id15"]], "Engine Library": [[29, "engine-library"]], "Engine traits": [[29, "module-searx.enginelib.traits"]], "SearXNG\u2019s engines loader": [[30, "module-searx.engines"]], "Engine Implementations": [[31, "engine-implementations"]], "Framework Components": [[31, null]], "Engine Types": [[31, "engine-types"]], "Online Engines": [[31, "online-engines"]], "Offline Engines": [[31, "offline-engines"]], "Online URL Search": [[31, "online-url-search"]], "Online Currency": [[31, "online-currency"]], "Online Dictionary": [[31, "online-dictionary"]], "MediaWiki Engine": [[32, "mediawiki-engine"]], "Implementations": [[32, "implementations"], [33, "implementations"], [34, "implementations"], [34, "id5"], [36, "implementations"], [36, "id5"], [36, "id8"], [38, "implementations"], [41, "implementations"], [42, "implementations"], [46, "implementations"], [48, "implementations"], [49, "implementations"], [52, "implementations"], [54, "implementations"], [56, "implementations"], [58, "implementations"]], "Command Line Engines": [[33, "command-line-engines"]], "Example": [[33, "example"], [34, "example"], [34, "id4"], [35, "example"], [35, "id3"], [35, "id5"], [36, "example"], [36, "id4"], [36, "id7"], [49, "example"], [58, "example"]], "NoSQL databases": [[34, "nosql-databases"]], "Extra Dependencies": [[34, "extra-dependencies"], [36, "extra-dependencies"], [37, "extra-dependencies"]], "Configure the engines": [[34, "configure-the-engines"], [36, "configure-the-engines"]], "Redis Server": [[34, "redis-server"]], "MongoDB": [[34, "engine-mongodb"]], "Local Search APIs": [[35, "local-search-apis"]], "MeiliSearch": [[35, "module-searx.engines.meilisearch"]], "Elasticsearch": [[35, "module-searx.engines.elasticsearch"]], "Solr": [[35, "module-searx.engines.solr"]], "SQL Engines": [[36, "sql-engines"]], "SQLite": [[36, "engine-sqlite"]], "PostgreSQL": [[36, "engine-postgresql"]], "MySQL": [[36, "engine-mysql-server"]], "Offline Concept": [[37, "offline-concept"]], "offline engines": [[37, null]], "Programming Interface": [[37, "programming-interface"]], "Private engines (Security)": [[37, "private-engines-security"]], "Anna\u2019s Archive": [[38, "anna-s-archive"]], "Arch Linux": [[39, "arch-linux"]], "Arch Linux Wiki": [[39, "arch-linux-wiki"]], "Bing Engines": [[40, "bing-engines"]], "Bing WEB": [[40, "module-searx.engines.bing"]], "Bing Images": [[40, "module-searx.engines.bing_images"]], "Bing Videos": [[40, "module-searx.engines.bing_videos"]], "Bing News": [[40, "module-searx.engines.bing_news"]], "Brave Engines": [[41, "brave-engines"]], "Contents": [[41, "contents"], [42, "contents"], [46, "contents"], [48, "contents"], [54, "contents"], [56, "contents"]], "Brave regions": [[41, "brave-regions"]], "Brave languages": [[41, "brave-languages"]], "BT4G": [[42, "bt4g"]], "Dailymotion": [[43, "dailymotion"]], "Dailymotion (Videos)": [[43, "dailymotion-videos"]], "DukcDukGo Engines": [[44, "dukcdukgo-engines"]], "DuckDuckGo Lite": [[44, "duckduckgo-lite"]], "DuckDuckGo Images": [[44, "duckduckgo-images"]], "DuckDuckGo Instant Answer API": [[44, "duckduckgo-instant-answer-api"]], "DuckDuckGo Weather": [[44, "duckduckgo-weather"]], "Google Engines": [[45, "google-engines"]], "Google API": [[45, "google-api"]], "Google WEB": [[45, "module-searx.engines.google"]], "Google Autocomplete": [[45, "google-autocomplete"]], "Google Images": [[45, "module-searx.engines.google_images"]], "Google Videos": [[45, "module-searx.engines.google_videos"]], "Content-Security-Policy (CSP)": [[45, null]], "Google News": [[45, "module-searx.engines.google_news"]], "Google Scholar": [[45, "module-searx.engines.google_scholar"]], "Lemmy": [[46, "lemmy"]], "Peertube Engines": [[47, "peertube-engines"]], "Peertube Video": [[47, "module-searx.engines.peertube"]], "SepiaSearch": [[47, "module-searx.engines.sepiasearch"]], "Piped": [[48, "piped"]], "Known Quirks": [[48, "known-quirks"]], "Recoll Engine": [[49, "recoll-engine"]], "Startpage Engines": [[50, "startpage-engines"]], "Startpage regions": [[50, "startpage-regions"]], "Startpage languages": [[50, "startpage-languages"]], "Startpage categories": [[50, "startpage-categories"]], "Tagesschau API": [[51, "tagesschau-api"]], "Torznab WebAPI": [[52, "torznab-webapi"]], "Wikimedia": [[53, "wikimedia"]], "Wikipedia": [[53, "module-searx.engines.wikipedia"]], "Wikidata": [[53, "module-searx.engines.wikidata"]], "Yacy": [[54, "yacy"]], "Yahoo Engine": [[55, "yahoo-engine"]], "Z-Library": [[56, "z-library"]], "Tineye": [[57, "tineye"]], "XPath Engine": [[58, "xpath-engine"]], "Developer documentation": [[59, "developer-documentation"]], "Developing in Linux Containers": [[60, "developing-in-linux-containers"]], "Audience": [[60, null]], "Motivation": [[60, "motivation"]], "Gentlemen, start your engines!": [[60, "gentlemen-start-your-engines"]], "The searxng-archlinux container": [[60, null]], "Fully functional SearXNG suite": [[60, null]], "In containers, work as usual": [[60, "in-containers-work-as-usual"]], "Wrap production into developer suite": [[60, "wrap-production-into-developer-suite"]], "Summary": [[60, "summary"]], "Makefile & ./manage": [[61, "makefile-manage"]], "build environment": [[61, null]], "Python environment (make install)": [[61, "python-environment-make-install"]], "activate environment": [[61, null]], "drop environment": [[61, null]], "make buildenv": [[61, "make-buildenv"]], "Node.js environment (make node.env)": [[61, "node-js-environment-make-node-env"]], "NVM make nvm.install nvm.status": [[61, "nvm-make-nvm-install-nvm-status"]], "make nvm.nodejs": [[61, "make-nvm-nodejs"]], "make run": [[61, "make-run"]], "make format.python": [[61, "make-format-python"]], "make clean": [[61, "make-clean"]], "make docs": [[61, "make-docs"]], "make docs.clean docs.live": [[61, "make-docs-clean-docs-live"]], "make docs.gh-pages": [[61, "make-docs-gh-pages"]], "make test": [[61, "make-test"]], "make test.shell": [[61, "make-test-shell"]], "make test.pylint": [[61, "make-test-pylint"]], "make search.checker.{engine name}": [[61, "make-search-checker-engine-name"]], "make themes.*": [[61, "make-themes"]], "make static.build.*": [[61, "make-static-build"]], "./manage redis.help": [[61, "manage-redis-help"]], "./manage go.help": [[61, "manage-go-help"]], "Plugins": [[62, "plugins"]], "Example plugin": [[62, "example-plugin"]], "External plugins": [[62, "external-plugins"]], "Plugin entry points": [[62, "plugin-entry-points"]], "Development Quickstart": [[63, "development-quickstart"]], "reST primer": [[64, "rest-primer"]], "KISS and readability": [[64, null]], "Content matters": [[64, null]], "Soft skills": [[64, "soft-skills"]], "Basic inline markup": [[64, "basic-inline-markup"]], "Inline markup": [[64, null]], "basic inline markup": [[64, "id4"]], "Basic article structure": [[64, "basic-article-structure"]], "reST template": [[64, "rest-template"]], "Headings": [[64, "headings"]], "Anchors & Links": [[64, "anchors-links"]], "Anchors": [[64, "anchors"]], ":ref: role": [[64, null]], "Link ordinary URL": [[64, "link-ordinary-url"]], "Named hyperlink": [[64, null]], "Smart refs": [[64, "smart-refs"]], "smart refs with sphinx.ext.extlinks and intersphinx": [[64, "id5"], [64, "id6"]], "Literal blocks": [[64, "literal-blocks"]], "::": [[64, "rest-literal"]], "Literal block": [[64, null]], "code-block": [[64, "code-block"]], "Syntax highlighting": [[64, null]], "Code block": [[64, null]], "Unicode substitution": [[64, "unicode-substitution"]], "Unicode": [[64, null]], "Roles": [[64, "roles"]], "Figures & Images": [[64, "figures-images"]], "Image processing": [[64, null]], "DOT files (aka Graphviz)": [[64, "dot-files-aka-graphviz"]], "hello.dot": [[64, null]], "kernel-render DOT": [[64, "kernel-render-dot"], [64, null]], "kernel-render SVG": [[64, "kernel-render-svg"], [64, null]], "List markups": [[64, "list-markups"]], "Bullet list": [[64, "bullet-list"]], "bullet list": [[64, null]], "Horizontal list": [[64, "horizontal-list"]], "hlist": [[64, null]], "Definition list": [[64, "definition-list"]], "Note ..": [[64, null]], "definition list": [[64, null]], "Quoted paragraphs": [[64, "quoted-paragraphs"]], "Quoted paragraph and line block": [[64, null]], "Field Lists": [[64, "field-lists"]], "bibliographic fields": [[64, null]], "Field List": [[64, null]], "Further list blocks": [[64, "further-list-blocks"]], "Admonitions": [[64, "admonitions"]], "Sidebar": [[64, "sidebar"]], "Generic admonition": [[64, "generic-admonition"]], "generic admonition title": [[64, null]], "Specific admonitions": [[64, "specific-admonitions"]], "Tables": [[64, "tables"]], "Nested tables": [[64, null]], "List tables": [[64, null]], "Simple tables": [[64, "simple-tables"]], "Simple ASCII table": [[64, null]], "foo gate truth table": [[64, "id11"]], "Grid tables": [[64, "grid-tables"]], "ASCII grid table": [[64, null]], "grid table example": [[64, "id12"]], "flat-table": [[64, "flat-table"]], "List table": [[64, null]], "flat-table example": [[64, "id13"]], "CSV table": [[64, "csv-table"], [64, null]], "CSV table example": [[64, "id14"]], "Templating": [[64, "templating"]], "Build environment": [[64, null]], "Tabbed views": [[64, "tabbed-views"]], "Math equations": [[64, "math-equations"]], "About LaTeX": [[64, null]], "LaTeX math equation": [[64, null]], "Line spacing": [[64, null]], "Search API": [[65, "search-api"]], "Parameters": [[65, "parameters"]], "Tooling box searxng_extra": [[66, "tooling-box-searxng-extra"]], "searxng_extra/standalone_searx.py": [[67, "module-searxng_extra.standalone_searx"]], "searxng_extra/update/": [[68, "searxng-extra-update"]], "update_ahmia_blacklist.py": [[68, "update-ahmia-blacklist-py"]], "update_currencies.py": [[68, "update-currencies-py"]], "update_engine_descriptions.py": [[68, "update-engine-descriptions-py"]], "update_external_bangs.py": [[68, "update-external-bangs-py"]], "update_firefox_version.py": [[68, "update-firefox-version-py"]], "update_engine_traits.py": [[68, "update-engine-traits-py"]], "update_osm_keys_tags.py": [[68, "update-osm-keys-tags-py"]], "update_pygments.py": [[68, "update-pygments-py"]], "update_wikidata_units.py": [[68, "update-wikidata-units-py"]], "translated": [[69, null]], "wlc": [[69, "id2"]], "Welcome to SearXNG": [[70, "welcome-to-searxng"]], "features": [[70, null]], "be a part": [[70, null]], "the origin": [[70, null]], "Why use a private instance?": [[71, "why-use-a-private-instance"]], "Is it worth to run my own instance?": [[71, null]], "How does SearXNG protect privacy?": [[71, "how-does-searxng-protect-privacy"]], "What are the consequences of using public instances?": [[71, "what-are-the-consequences-of-using-public-instances"]], "I see. What about private instances?": [[71, "i-see-what-about-private-instances"]], "Conclusion": [[71, "conclusion"]], "Source-Code": [[72, "source-code"]], "Custom message extractor (i18n)": [[73, "module-searx.babel_extract"]], "Bot Detection": [[74, "bot-detection"]], "X-Forwarded-For": [[74, "x-forwarded-for"]], "flask.Request.remote_addr": [[74, null]], "Limiter": [[74, "limiter"]], "Method ip_lists": [[74, "method-ip-lists"]], "Rate limit": [[74, "module-searx.botdetection.ip_limit"]], "Method ip_limit": [[74, "method-ip-limit"]], "Method link_token": [[74, "method-link-token"]], "Probe HTTP headers": [[74, "module-searx.botdetection.http_accept"]], "Method http_accept": [[74, "method-http-accept"]], "Method http_accept_encoding": [[74, "method-http-accept-encoding"]], "Method http_accept_language": [[74, "method-http-accept-language"]], "Method http_connection": [[74, "method-http-connection"]], "Method http_user_agent": [[74, "method-http-user-agent"]], "SearXNG Exceptions": [[75, "module-searx.exceptions"]], "Online /info": [[76, "module-searx.infopage"]], "Locales": [[77, "locales"]], "SearXNG\u2019s locale codes": [[77, "module-searx.sxng_locales"]], "Tor check plugin": [[78, "tor-check-plugin"]], "Redis DB": [[79, "redis-db"]], "Redis Library": [[80, "module-searx.redislib"]], "Search": [[81, "search"]], "Search processors": [[82, "search-processors"]], "Abstract processor class": [[82, "module-searx.search.processors.abstract"]], "Offline processor": [[82, "module-searx.search.processors.offline"]], "Online processor": [[82, "module-searx.search.processors.online"]], "Online currency processor": [[82, "module-searx.search.processors.online_currency"]], "Online dictionary processor": [[82, "module-searx.search.processors.online_dictionary"]], "Online URL search processor": [[82, "module-searx.search.processors.online_url_search"]], "Utility functions for the engines": [[83, "module-searx.utils"]], "About SearXNG": [[84, "about-searxng"]], "Why use it?": [[84, "why-use-it"]], "How do I set it as the default search engine?": [[84, "how-do-i-set-it-as-the-default-search-engine"]], "How does it work?": [[84, "how-does-it-work"]], "How can I make it my own?": [[84, "how-can-i-make-it-my-own"]], "User information": [[86, "user-information"]], "Search syntax": [[87, "search-syntax"]], "! select engine and category": [[87, "select-engine-and-category"]], ": select language": [[87, "select-language"]], "!! external bangs": [[87, "external-bangs"]], "Special Queries": [[87, "special-queries"]], "DevOps tooling box": [[88, "devops-tooling-box"]], "Common command environments": [[88, "common-command-environments"]], "utils/lxc.sh": [[89, "utils-lxc-sh"]], "Install LXD": [[89, "install-lxd"]], "Internet Connectivity & Docker": [[89, "internet-connectivity-docker"]], "SearXNG LXC suite": [[89, "searxng-lxc-suite"]], "Running commands": [[89, "running-commands"]], "Good to know": [[89, "good-to-know"]], "Install suite": [[89, "install-suite"]], "Clean up": [[89, "clean-up"]], "Setup SearXNG buildhost": [[89, "setup-searxng-buildhost"]], "Command Help": [[89, "command-help"], [90, "command-help"]], "SearXNG suite config": [[89, "searxng-suite-config"]], "utils/searxng.sh": [[90, "utils-searxng-sh"]], "Install": [[90, "install"]], "Configured Engines": [[85, "configured-engines"]], "tab !general": [[85, "tab-general"]], "group !web": [[85, "group-web"], [85, "id2"], [85, "id4"]], "group !wikimedia": [[85, "group-wikimedia"], [85, "id6"], [85, "id13"]], "without further subgrouping": [[85, "without-further-subgrouping"], [85, "id3"], [85, "id5"], [85, "id7"], [85, "id9"], [85, "id12"], [85, "id15"], [85, "id16"]], "tab !images": [[85, "tab-images"]], "tab !videos": [[85, "tab-videos"]], "tab !news": [[85, "tab-news"]], "tab !map": [[85, "tab-map"]], "tab !music": [[85, "tab-music"]], "group !lyrics": [[85, "group-lyrics"]], "tab !it": [[85, "tab-it"]], "group !packages": [[85, "group-packages"]], "group !q&a": [[85, "group-q-a"]], "group !repos": [[85, "group-repos"]], "group !software_wikis": [[85, "group-software-wikis"]], "tab !science": [[85, "tab-science"]], "group !scientific_publications": [[85, "group-scientific-publications"]], "tab !files": [[85, "tab-files"]], "group !apps": [[85, "group-apps"]], "tab !social_media": [[85, "tab-social-media"]]}, "indexentries": {"init() (in module searx.engines.demo_offline)": [[26, "searx.engines.demo_offline.init"]], "module": [[26, "module-searx.engines.demo_offline"], [27, "module-searx.engines.demo_online"], [29, "module-searx.enginelib"], [29, "module-searx.enginelib.traits"], [30, "module-searx.engines"], [32, "module-searx.engines.mediawiki"], [33, "module-searx.engines.command"], [34, "module-searx.engines.mongodb"], [34, "module-searx.engines.redis_server"], [35, "module-searx.engines.elasticsearch"], [35, "module-searx.engines.meilisearch"], [35, "module-searx.engines.solr"], [36, "module-searx.engines.mysql_server"], [36, "module-searx.engines.postgresql"], [36, "module-searx.engines.sqlite"], [38, "module-searx.engines.annas_archive"], [39, "module-searx.engines.archlinux"], [40, "module-searx.engines.bing"], [40, "module-searx.engines.bing_images"], [40, "module-searx.engines.bing_news"], [40, "module-searx.engines.bing_videos"], [41, "module-searx.engines.brave"], [42, "module-searx.engines.bt4g"], [43, "module-searx.engines.dailymotion"], [44, "module-searx.engines.duckduckgo"], [44, "module-searx.engines.duckduckgo_definitions"], [44, "module-searx.engines.duckduckgo_images"], [44, "module-searx.engines.duckduckgo_weather"], [45, "module-searx.engines.google"], [45, "module-searx.engines.google_images"], [45, "module-searx.engines.google_news"], [45, "module-searx.engines.google_scholar"], [45, "module-searx.engines.google_videos"], [46, "module-searx.engines.lemmy"], [47, "module-searx.engines.peertube"], [47, "module-searx.engines.sepiasearch"], [48, "module-searx.engines.piped"], [49, "module-searx.engines.recoll"], [50, "module-searx.engines.startpage"], [51, "module-searx.engines.tagesschau"], [52, "module-searx.engines.torznab"], [53, "module-searx.engines.wikidata"], [53, "module-searx.engines.wikipedia"], [54, "module-searx.engines.yacy"], [55, "module-searx.engines.yahoo"], [56, "module-searx.engines.zlibrary"], [57, "module-searx.engines.tineye"], [58, "module-searx.engines.xpath"], [67, "module-searxng_extra.standalone_searx"], [68, "module-searxng_extra.update.update_ahmia_blacklist"], [68, "module-searxng_extra.update.update_currencies"], [68, "module-searxng_extra.update.update_engine_descriptions"], [68, "module-searxng_extra.update.update_engine_traits"], [68, "module-searxng_extra.update.update_external_bangs"], [68, "module-searxng_extra.update.update_firefox_version"], [68, "module-searxng_extra.update.update_osm_keys_tags"], [68, "module-searxng_extra.update.update_pygments"], [68, "module-searxng_extra.update.update_wikidata_units"], [73, "module-searx.babel_extract"], [74, "module-searx.botdetection"], [74, "module-searx.botdetection.http_accept"], [74, "module-searx.botdetection.http_accept_encoding"], [74, "module-searx.botdetection.http_accept_language"], [74, "module-searx.botdetection.http_connection"], [74, "module-searx.botdetection.http_user_agent"], [74, "module-searx.botdetection.ip_limit"], [74, "module-searx.botdetection.ip_lists"], [74, "module-searx.botdetection.limiter"], [74, "module-searx.botdetection.link_token"], [75, "module-searx.exceptions"], [76, "module-searx.infopage"], [77, "module-searx.locales"], [77, "module-searx.sxng_locales"], [78, "module-searx.plugins.tor_check"], [79, "module-searx.redisdb"], [80, "module-searx.redislib"], [82, "module-searx.search.processors.abstract"], [82, "module-searx.search.processors.offline"], [82, "module-searx.search.processors.online"], [82, "module-searx.search.processors.online_currency"], [82, "module-searx.search.processors.online_dictionary"], [82, "module-searx.search.processors.online_url_search"], [83, "module-searx.utils"]], "search() (in module searx.engines.demo_offline)": [[26, "searx.engines.demo_offline.search"]], "searx.engines.demo_offline": [[26, "module-searx.engines.demo_offline"]], "init() (in module searx.engines.demo_online)": [[27, "searx.engines.demo_online.init"]], "request() (in module searx.engines.demo_online)": [[27, "searx.engines.demo_online.request"]], "response() (in module searx.engines.demo_online)": [[27, "searx.engines.demo_online.response"]], "searx.engines.demo_online": [[27, "module-searx.engines.demo_online"]], "engine_traits_file (searx.enginelib.traits.enginetraitsmap attribute)": [[29, "searx.enginelib.traits.EngineTraitsMap.ENGINE_TRAITS_FILE"]], "engine (class in searx.enginelib)": [[29, "searx.enginelib.Engine"]], "enginetraits (class in searx.enginelib.traits)": [[29, "searx.enginelib.traits.EngineTraits"]], "enginetraitsencoder (class in searx.enginelib.traits)": [[29, "searx.enginelib.traits.EngineTraitsEncoder"]], "enginetraitsmap (class in searx.enginelib.traits)": [[29, "searx.enginelib.traits.EngineTraitsMap"]], "about (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.about"]], "all_locale (searx.enginelib.traits.enginetraits attribute)": [[29, "searx.enginelib.traits.EngineTraits.all_locale"]], "categories (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.categories"]], "copy() (searx.enginelib.traits.enginetraits method)": [[29, "searx.enginelib.traits.EngineTraits.copy"]], "custom (searx.enginelib.traits.enginetraits attribute)": [[29, "searx.enginelib.traits.EngineTraits.custom"]], "data_type (searx.enginelib.traits.enginetraits attribute)": [[29, "searx.enginelib.traits.EngineTraits.data_type"]], "default() (searx.enginelib.traits.enginetraitsencoder method)": [[29, "searx.enginelib.traits.EngineTraitsEncoder.default"]], "disabled (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.disabled"]], "display_error_messages (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.display_error_messages"]], "enable_http (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.enable_http"]], "engine (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.engine"]], "engine_type (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.engine_type"]], "fetch_traits (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.fetch_traits"]], "fetch_traits() (searx.enginelib.traits.enginetraits class method)": [[29, "searx.enginelib.traits.EngineTraits.fetch_traits"]], "from_data() (searx.enginelib.traits.enginetraitsmap class method)": [[29, "searx.enginelib.traits.EngineTraitsMap.from_data"]], "get_language() (searx.enginelib.traits.enginetraits method)": [[29, "searx.enginelib.traits.EngineTraits.get_language"]], "get_region() (searx.enginelib.traits.enginetraits method)": [[29, "searx.enginelib.traits.EngineTraits.get_region"]], "inactive (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.inactive"]], "is_locale_supported() (searx.enginelib.traits.enginetraits method)": [[29, "searx.enginelib.traits.EngineTraits.is_locale_supported"]], "language (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.language"]], "language_support (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.language_support"]], "languages (searx.enginelib.traits.enginetraits attribute)": [[29, "searx.enginelib.traits.EngineTraits.languages"]], "name (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.name"]], "paging (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.paging"]], "proxies (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.proxies"]], "region (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.region"]], "regions (searx.enginelib.traits.enginetraits attribute)": [[29, "searx.enginelib.traits.EngineTraits.regions"]], "safesearch (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.safesearch"]], "save_data() (searx.enginelib.traits.enginetraitsmap method)": [[29, "searx.enginelib.traits.EngineTraitsMap.save_data"]], "searx.enginelib": [[29, "module-searx.enginelib"]], "searx.enginelib.traits": [[29, "module-searx.enginelib.traits"]], "send_accept_language_header (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.send_accept_language_header"]], "set_traits() (searx.enginelib.traits.enginetraits method)": [[29, "searx.enginelib.traits.EngineTraits.set_traits"]], "set_traits() (searx.enginelib.traits.enginetraitsmap method)": [[29, "searx.enginelib.traits.EngineTraitsMap.set_traits"]], "shortcut (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.shortcut"]], "time_range_support (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.time_range_support"]], "timeout (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.timeout"]], "tokens (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.tokens"]], "traits (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.traits"]], "using_tor_proxy (searx.enginelib.engine attribute)": [[29, "searx.enginelib.Engine.using_tor_proxy"]], "engine_shortcuts (in module searx.engines)": [[30, "searx.engines.engine_shortcuts"]], "is_missing_required_attributes() (in module searx.engines)": [[30, "searx.engines.is_missing_required_attributes"]], "load_engine() (in module searx.engines)": [[30, "searx.engines.load_engine"]], "load_engines() (in module searx.engines)": [[30, "searx.engines.load_engines"]], "searx.engines": [[30, "module-searx.engines"]], "using_tor_proxy() (in module searx.engines)": [[30, "searx.engines.using_tor_proxy"]], "base_url (in module searx.engines.mediawiki)": [[32, "searx.engines.mediawiki.base_url"]], "search_type (in module searx.engines.mediawiki)": [[32, "searx.engines.mediawiki.search_type"]], "searx.engines.mediawiki": [[32, "module-searx.engines.mediawiki"]], "srenablerewrites (in module searx.engines.mediawiki)": [[32, "searx.engines.mediawiki.srenablerewrites"]], "srprop (in module searx.engines.mediawiki)": [[32, "searx.engines.mediawiki.srprop"]], "srsort (in module searx.engines.mediawiki)": [[32, "searx.engines.mediawiki.srsort"]], "timestamp_format (in module searx.engines.mediawiki)": [[32, "searx.engines.mediawiki.timestamp_format"]], "check_parsing_options() (in module searx.engines.command)": [[33, "searx.engines.command.check_parsing_options"]], "searx.engines.command": [[33, "module-searx.engines.command"]], "searx.engines.mongodb": [[34, "module-searx.engines.mongodb"]], "searx.engines.redis_server": [[34, "module-searx.engines.redis_server"]], "searx.engines.elasticsearch": [[35, "module-searx.engines.elasticsearch"]], "searx.engines.meilisearch": [[35, "module-searx.engines.meilisearch"]], "searx.engines.solr": [[35, "module-searx.engines.solr"]], "searx.engines.mysql_server": [[36, "module-searx.engines.mysql_server"]], "searx.engines.postgresql": [[36, "module-searx.engines.postgresql"]], "searx.engines.sqlite": [[36, "module-searx.engines.sqlite"]], "sqlite_cursor() (in module searx.engines.sqlite)": [[36, "searx.engines.sqlite.sqlite_cursor"]], "aa_content (in module searx.engines.annas_archive)": [[38, "searx.engines.annas_archive.aa_content"]], "aa_ext (in module searx.engines.annas_archive)": [[38, "searx.engines.annas_archive.aa_ext"]], "aa_sort (in module searx.engines.annas_archive)": [[38, "searx.engines.annas_archive.aa_sort"]], "fetch_traits() (in module searx.engines.annas_archive)": [[38, "searx.engines.annas_archive.fetch_traits"]], "init() (in module searx.engines.annas_archive)": [[38, "searx.engines.annas_archive.init"]], "searx.engines.annas_archive": [[38, "module-searx.engines.annas_archive"]], "fetch_traits() (in module searx.engines.archlinux)": [[39, "searx.engines.archlinux.fetch_traits"]], "searx.engines.archlinux": [[39, "module-searx.engines.archlinux"]], "base_url (in module searx.engines.bing)": [[40, "searx.engines.bing.base_url"]], "base_url (in module searx.engines.bing_images)": [[40, "searx.engines.bing_images.base_url"]], "base_url (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.base_url"]], "base_url (in module searx.engines.bing_videos)": [[40, "searx.engines.bing_videos.base_url"]], "bing_traits_url (in module searx.engines.bing)": [[40, "searx.engines.bing.bing_traits_url"]], "bing_traits_url (in module searx.engines.bing_images)": [[40, "searx.engines.bing_images.bing_traits_url"]], "bing_traits_url (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.bing_traits_url"]], "bing_traits_url (in module searx.engines.bing_videos)": [[40, "searx.engines.bing_videos.bing_traits_url"]], "fetch_traits() (in module searx.engines.bing)": [[40, "searx.engines.bing.fetch_traits"]], "fetch_traits() (in module searx.engines.bing_images)": [[40, "searx.engines.bing_images.fetch_traits"]], "fetch_traits() (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.fetch_traits"]], "fetch_traits() (in module searx.engines.bing_videos)": [[40, "searx.engines.bing_videos.fetch_traits"]], "mkt_alias (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.mkt_alias"]], "request() (in module searx.engines.bing)": [[40, "searx.engines.bing.request"]], "request() (in module searx.engines.bing_images)": [[40, "searx.engines.bing_images.request"]], "request() (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.request"]], "request() (in module searx.engines.bing_videos)": [[40, "searx.engines.bing_videos.request"]], "response() (in module searx.engines.bing_images)": [[40, "searx.engines.bing_images.response"]], "response() (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.response"]], "response() (in module searx.engines.bing_videos)": [[40, "searx.engines.bing_videos.response"]], "searx.engines.bing": [[40, "module-searx.engines.bing"]], "searx.engines.bing_images": [[40, "module-searx.engines.bing_images"]], "searx.engines.bing_news": [[40, "module-searx.engines.bing_news"]], "searx.engines.bing_videos": [[40, "module-searx.engines.bing_videos"]], "send_accept_language_header (in module searx.engines.bing)": [[40, "searx.engines.bing.send_accept_language_header"]], "time_map (in module searx.engines.bing_news)": [[40, "searx.engines.bing_news.time_map"]], "brave_category (in module searx.engines.brave)": [[41, "searx.engines.brave.brave_category"]], "brave_spellcheck (in module searx.engines.brave)": [[41, "searx.engines.brave.brave_spellcheck"]], "fetch_traits() (in module searx.engines.brave)": [[41, "searx.engines.brave.fetch_traits"]], "paging (in module searx.engines.brave)": [[41, "searx.engines.brave.paging"]], "searx.engines.brave": [[41, "module-searx.engines.brave"]], "time_range_support (in module searx.engines.brave)": [[41, "searx.engines.brave.time_range_support"]], "bt4g_category (in module searx.engines.bt4g)": [[42, "searx.engines.bt4g.bt4g_category"]], "bt4g_order_by (in module searx.engines.bt4g)": [[42, "searx.engines.bt4g.bt4g_order_by"]], "searx.engines.bt4g": [[42, "module-searx.engines.bt4g"]], "family_filter_map (in module searx.engines.dailymotion)": [[43, "searx.engines.dailymotion.family_filter_map"]], "fetch_traits() (in module searx.engines.dailymotion)": [[43, "searx.engines.dailymotion.fetch_traits"]], "iframe_src (in module searx.engines.dailymotion)": [[43, "searx.engines.dailymotion.iframe_src"]], "result_fields (in module searx.engines.dailymotion)": [[43, "searx.engines.dailymotion.result_fields"]], "safesearch_params (in module searx.engines.dailymotion)": [[43, "searx.engines.dailymotion.safesearch_params"]], "search_url (in module searx.engines.dailymotion)": [[43, "searx.engines.dailymotion.search_url"]], "searx.engines.dailymotion": [[43, "module-searx.engines.dailymotion"]], "area_to_str() (in module searx.engines.duckduckgo_definitions)": [[44, "searx.engines.duckduckgo_definitions.area_to_str"]], "cache_vqd() (in module searx.engines.duckduckgo)": [[44, "searx.engines.duckduckgo.cache_vqd"]], "fetch_traits() (in module searx.engines.duckduckgo)": [[44, "searx.engines.duckduckgo.fetch_traits"]], "get_ddg_lang() (in module searx.engines.duckduckgo)": [[44, "searx.engines.duckduckgo.get_ddg_lang"]], "get_vqd() (in module searx.engines.duckduckgo)": [[44, "searx.engines.duckduckgo.get_vqd"]], "is_broken_text() (in module searx.engines.duckduckgo_definitions)": [[44, "searx.engines.duckduckgo_definitions.is_broken_text"]], "searx.engines.duckduckgo": [[44, "module-searx.engines.duckduckgo"]], "searx.engines.duckduckgo_definitions": [[44, "module-searx.engines.duckduckgo_definitions"]], "searx.engines.duckduckgo_images": [[44, "module-searx.engines.duckduckgo_images"]], "searx.engines.duckduckgo_weather": [[44, "module-searx.engines.duckduckgo_weather"]], "send_accept_language_header (in module searx.engines.duckduckgo)": [[44, "searx.engines.duckduckgo.send_accept_language_header"]], "ui_async (in module searx.engines.google)": [[45, "searx.engines.google.UI_ASYNC"]], "ceid_list (in module searx.engines.google_news)": [[45, "searx.engines.google_news.ceid_list"]], "detect_google_captcha() (in module searx.engines.google_scholar)": [[45, "searx.engines.google_scholar.detect_google_captcha"]], "fetch_traits() (in module searx.engines.google)": [[45, "searx.engines.google.fetch_traits"]], "get_google_info() (in module searx.engines.google)": [[45, "searx.engines.google.get_google_info"]], "google_complete() (in module searx.autocomplete)": [[45, "searx.autocomplete.google_complete"]], "parse_gs_a() (in module searx.engines.google_scholar)": [[45, "searx.engines.google_scholar.parse_gs_a"]], "request() (in module searx.engines.google)": [[45, "searx.engines.google.request"]], "request() (in module searx.engines.google_images)": [[45, "searx.engines.google_images.request"]], "request() (in module searx.engines.google_news)": [[45, "searx.engines.google_news.request"]], "request() (in module searx.engines.google_scholar)": [[45, "searx.engines.google_scholar.request"]], "request() (in module searx.engines.google_videos)": [[45, "searx.engines.google_videos.request"]], "response() (in module searx.engines.google)": [[45, "searx.engines.google.response"]], "response() (in module searx.engines.google_images)": [[45, "searx.engines.google_images.response"]], "response() (in module searx.engines.google_news)": [[45, "searx.engines.google_news.response"]], "response() (in module searx.engines.google_scholar)": [[45, "searx.engines.google_scholar.response"]], "response() (in module searx.engines.google_videos)": [[45, "searx.engines.google_videos.response"]], "searx.engines.google": [[45, "module-searx.engines.google"]], "searx.engines.google_images": [[45, "module-searx.engines.google_images"]], "searx.engines.google_news": [[45, "module-searx.engines.google_news"]], "searx.engines.google_scholar": [[45, "module-searx.engines.google_scholar"]], "searx.engines.google_videos": [[45, "module-searx.engines.google_videos"]], "time_range_args() (in module searx.engines.google_scholar)": [[45, "searx.engines.google_scholar.time_range_args"]], "base_url (in module searx.engines.lemmy)": [[46, "searx.engines.lemmy.base_url"]], "lemmy_type (in module searx.engines.lemmy)": [[46, "searx.engines.lemmy.lemmy_type"]], "searx.engines.lemmy": [[46, "module-searx.engines.lemmy"]], "base_url (in module searx.engines.peertube)": [[47, "searx.engines.peertube.base_url"]], "fetch_traits() (in module searx.engines.peertube)": [[47, "searx.engines.peertube.fetch_traits"]], "request() (in module searx.engines.peertube)": [[47, "searx.engines.peertube.request"]], "request() (in module searx.engines.sepiasearch)": [[47, "searx.engines.sepiasearch.request"]], "searx.engines.peertube": [[47, "module-searx.engines.peertube"]], "searx.engines.sepiasearch": [[47, "module-searx.engines.sepiasearch"]], "video_response() (in module searx.engines.peertube)": [[47, "searx.engines.peertube.video_response"]], "backend_url (in module searx.engines.piped)": [[48, "searx.engines.piped.backend_url"]], "frontend_url (in module searx.engines.piped)": [[48, "searx.engines.piped.frontend_url"]], "piped_filter (in module searx.engines.piped)": [[48, "searx.engines.piped.piped_filter"]], "searx.engines.piped": [[48, "module-searx.engines.piped"]], "searx.engines.recoll": [[49, "module-searx.engines.recoll"]], "fetch_traits() (in module searx.engines.startpage)": [[50, "searx.engines.startpage.fetch_traits"]], "get_sc_code() (in module searx.engines.startpage)": [[50, "searx.engines.startpage.get_sc_code"]], "request() (in module searx.engines.startpage)": [[50, "searx.engines.startpage.request"]], "sc_code_cache_sec (in module searx.engines.startpage)": [[50, "searx.engines.startpage.sc_code_cache_sec"]], "search_form_xpath (in module searx.engines.startpage)": [[50, "searx.engines.startpage.search_form_xpath"]], "searx.engines.startpage": [[50, "module-searx.engines.startpage"]], "send_accept_language_header (in module searx.engines.startpage)": [[50, "searx.engines.startpage.send_accept_language_header"]], "startpage_categ (in module searx.engines.startpage)": [[50, "searx.engines.startpage.startpage_categ"]], "searx.engines.tagesschau": [[51, "module-searx.engines.tagesschau"]], "build_result() (in module searx.engines.torznab)": [[52, "searx.engines.torznab.build_result"]], "get_attribute() (in module searx.engines.torznab)": [[52, "searx.engines.torznab.get_attribute"]], "get_torznab_attribute() (in module searx.engines.torznab)": [[52, "searx.engines.torznab.get_torznab_attribute"]], "init() (in module searx.engines.torznab)": [[52, "searx.engines.torznab.init"]], "request() (in module searx.engines.torznab)": [[52, "searx.engines.torznab.request"]], "response() (in module searx.engines.torznab)": [[52, "searx.engines.torznab.response"]], "searx.engines.torznab": [[52, "module-searx.engines.torznab"]], "fetch_traits() (in module searx.engines.wikidata)": [[53, "searx.engines.wikidata.fetch_traits"]], "fetch_wikimedia_traits() (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.fetch_wikimedia_traits"]], "get_thumbnail() (in module searx.engines.wikidata)": [[53, "searx.engines.wikidata.get_thumbnail"]], "get_wiki_params() (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.get_wiki_params"]], "list_of_wikipedias (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.list_of_wikipedias"]], "request() (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.request"]], "rest_v1_summary_url (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.rest_v1_summary_url"]], "searx.engines.wikidata": [[53, "module-searx.engines.wikidata"]], "searx.engines.wikipedia": [[53, "module-searx.engines.wikipedia"]], "send_accept_language_header (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.send_accept_language_header"]], "wiki_lc_locale_variants (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.wiki_lc_locale_variants"]], "wikipedia_article_depth (in module searx.engines.wikipedia)": [[53, "searx.engines.wikipedia.wikipedia_article_depth"]], "search_mode (in module searx.engines.yacy)": [[54, "searx.engines.yacy.search_mode"]], "searx.engines.yacy": [[54, "module-searx.engines.yacy"]], "fetch_traits() (in module searx.engines.yahoo)": [[55, "searx.engines.yahoo.fetch_traits"]], "lang2domain (in module searx.engines.yahoo)": [[55, "searx.engines.yahoo.lang2domain"]], "parse_url() (in module searx.engines.yahoo)": [[55, "searx.engines.yahoo.parse_url"]], "request() (in module searx.engines.yahoo)": [[55, "searx.engines.yahoo.request"]], "response() (in module searx.engines.yahoo)": [[55, "searx.engines.yahoo.response"]], "searx.engines.yahoo": [[55, "module-searx.engines.yahoo"]], "fetch_traits() (in module searx.engines.zlibrary)": [[56, "searx.engines.zlibrary.fetch_traits"]], "init() (in module searx.engines.zlibrary)": [[56, "searx.engines.zlibrary.init"]], "searx.engines.zlibrary": [[56, "module-searx.engines.zlibrary"]], "zlib_ext (in module searx.engines.zlibrary)": [[56, "searx.engines.zlibrary.zlib_ext"]], "zlib_year_from (in module searx.engines.zlibrary)": [[56, "searx.engines.zlibrary.zlib_year_from"]], "zlib_year_to (in module searx.engines.zlibrary)": [[56, "searx.engines.zlibrary.zlib_year_to"]], "download_error (in module searx.engines.tineye)": [[57, "searx.engines.tineye.DOWNLOAD_ERROR"]], "format_not_supported (in module searx.engines.tineye)": [[57, "searx.engines.tineye.FORMAT_NOT_SUPPORTED"]], "no_signature_error (in module searx.engines.tineye)": [[57, "searx.engines.tineye.NO_SIGNATURE_ERROR"]], "engine_type (in module searx.engines.tineye)": [[57, "searx.engines.tineye.engine_type"]], "parse_tineye_match() (in module searx.engines.tineye)": [[57, "searx.engines.tineye.parse_tineye_match"]], "request() (in module searx.engines.tineye)": [[57, "searx.engines.tineye.request"]], "response() (in module searx.engines.tineye)": [[57, "searx.engines.tineye.response"]], "searx.engines.tineye": [[57, "module-searx.engines.tineye"]], "content_xpath (in module searx.engines.xpath)": [[58, "searx.engines.xpath.content_xpath"]], "cookies (in module searx.engines.xpath)": [[58, "searx.engines.xpath.cookies"]], "first_page_num (in module searx.engines.xpath)": [[58, "searx.engines.xpath.first_page_num"]], "headers (in module searx.engines.xpath)": [[58, "searx.engines.xpath.headers"]], "lang_all (in module searx.engines.xpath)": [[58, "searx.engines.xpath.lang_all"]], "no_result_for_http_status (in module searx.engines.xpath)": [[58, "searx.engines.xpath.no_result_for_http_status"]], "page_size (in module searx.engines.xpath)": [[58, "searx.engines.xpath.page_size"]], "paging (in module searx.engines.xpath)": [[58, "searx.engines.xpath.paging"]], "request() (in module searx.engines.xpath)": [[58, "searx.engines.xpath.request"]], "response() (in module searx.engines.xpath)": [[58, "searx.engines.xpath.response"]], "results_xpath (in module searx.engines.xpath)": [[58, "searx.engines.xpath.results_xpath"]], "safe_search_map (in module searx.engines.xpath)": [[58, "searx.engines.xpath.safe_search_map"]], "safe_search_support (in module searx.engines.xpath)": [[58, "searx.engines.xpath.safe_search_support"]], "search_url (in module searx.engines.xpath)": [[58, "searx.engines.xpath.search_url"]], "searx.engines.xpath": [[58, "module-searx.engines.xpath"]], "soft_max_redirects (in module searx.engines.xpath)": [[58, "searx.engines.xpath.soft_max_redirects"]], "suggestion_xpath (in module searx.engines.xpath)": [[58, "searx.engines.xpath.suggestion_xpath"]], "thumbnail_xpath (in module searx.engines.xpath)": [[58, "searx.engines.xpath.thumbnail_xpath"]], "time_range_map (in module searx.engines.xpath)": [[58, "searx.engines.xpath.time_range_map"]], "time_range_support (in module searx.engines.xpath)": [[58, "searx.engines.xpath.time_range_support"]], "time_range_url (in module searx.engines.xpath)": [[58, "searx.engines.xpath.time_range_url"]], "title_xpath (in module searx.engines.xpath)": [[58, "searx.engines.xpath.title_xpath"]], "url_xpath (in module searx.engines.xpath)": [[58, "searx.engines.xpath.url_xpath"]], "built-in function": [[62, "on_result"], [62, "post_search"], [62, "pre_search"]], "on_result()": [[62, "on_result"]], "post_search()": [[62, "post_search"]], "pre_search()": [[62, "pre_search"]], "pep 8": [[64, "index-1"]], "python enhancement proposals": [[64, "index-1"]], "rfc": [[64, "index-0"]], "rfc 822": [[64, "index-0"]], "get_search_query() (in module searxng_extra.standalone_searx)": [[67, "searxng_extra.standalone_searx.get_search_query"]], "json_serial() (in module searxng_extra.standalone_searx)": [[67, "searxng_extra.standalone_searx.json_serial"]], "no_parsed_url() (in module searxng_extra.standalone_searx)": [[67, "searxng_extra.standalone_searx.no_parsed_url"]], "parse_argument() (in module searxng_extra.standalone_searx)": [[67, "searxng_extra.standalone_searx.parse_argument"]], "searxng_extra.standalone_searx": [[67, "module-searxng_extra.standalone_searx"]], "to_dict() (in module searxng_extra.standalone_searx)": [[67, "searxng_extra.standalone_searx.to_dict"]], "unicodeescape (class in searxng_extra.update.update_engine_traits)": [[68, "searxng_extra.update.update_engine_traits.UnicodeEscape"]], "fetch_traits_map() (in module searxng_extra.update.update_engine_traits)": [[68, "searxng_extra.update.update_engine_traits.fetch_traits_map"]], "filter_locales() (in module searxng_extra.update.update_engine_traits)": [[68, "searxng_extra.update.update_engine_traits.filter_locales"]], "get_output() (in module searxng_extra.update.update_engine_descriptions)": [[68, "searxng_extra.update.update_engine_descriptions.get_output"]], "get_unicode_flag() (in module searxng_extra.update.update_engine_traits)": [[68, "searxng_extra.update.update_engine_traits.get_unicode_flag"]], "merge_when_no_leaf() (in module searxng_extra.update.update_external_bangs)": [[68, "searxng_extra.update.update_external_bangs.merge_when_no_leaf"]], "searxng_extra.update.update_ahmia_blacklist": [[68, "module-searxng_extra.update.update_ahmia_blacklist"]], "searxng_extra.update.update_currencies": [[68, "module-searxng_extra.update.update_currencies"]], "searxng_extra.update.update_engine_descriptions": [[68, "module-searxng_extra.update.update_engine_descriptions"]], "searxng_extra.update.update_engine_traits": [[68, "module-searxng_extra.update.update_engine_traits"]], "searxng_extra.update.update_external_bangs": [[68, "module-searxng_extra.update.update_external_bangs"]], "searxng_extra.update.update_firefox_version": [[68, "module-searxng_extra.update.update_firefox_version"]], "searxng_extra.update.update_osm_keys_tags": [[68, "module-searxng_extra.update.update_osm_keys_tags"]], "searxng_extra.update.update_pygments": [[68, "module-searxng_extra.update.update_pygments"]], "searxng_extra.update.update_wikidata_units": [[68, "module-searxng_extra.update.update_wikidata_units"]], "extract() (in module searx.babel_extract)": [[73, "searx.babel_extract.extract"]], "searx.babel_extract": [[73, "module-searx.babel_extract"]], "api_max (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.API_MAX"]], "api_wondow (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.API_WONDOW"]], "burst_max (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.BURST_MAX"]], "burst_max_suspicious (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.BURST_MAX_SUSPICIOUS"]], "burst_window (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.BURST_WINDOW"]], "limiter_cfg (in module searx.botdetection.limiter)": [[74, "searx.botdetection.limiter.LIMITER_CFG"]], "limiter_cfg_schema (in module searx.botdetection.limiter)": [[74, "searx.botdetection.limiter.LIMITER_CFG_SCHEMA"]], "long_max (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.LONG_MAX"]], "long_max_suspicious (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.LONG_MAX_SUSPICIOUS"]], "long_window (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.LONG_WINDOW"]], "ping_key (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.PING_KEY"]], "ping_live_time (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.PING_LIVE_TIME"]], "searxng_org (in module searx.botdetection.ip_lists)": [[74, "searx.botdetection.ip_lists.SEARXNG_ORG"]], "suspicious_ip_max (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.SUSPICIOUS_IP_MAX"]], "suspicious_ip_window (in module searx.botdetection.ip_limit)": [[74, "searx.botdetection.ip_limit.SUSPICIOUS_IP_WINDOW"]], "token_key (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.TOKEN_KEY"]], "token_live_time (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.TOKEN_LIVE_TIME"]], "user_agent (in module searx.botdetection.http_user_agent)": [[74, "searx.botdetection.http_user_agent.USER_AGENT"]], "block_ip() (in module searx.botdetection.ip_lists)": [[74, "searx.botdetection.ip_lists.block_ip"]], "get_ping_key() (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.get_ping_key"]], "get_real_ip() (in module searx.botdetection)": [[74, "searx.botdetection.get_real_ip"]], "get_token() (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.get_token"]], "is_suspicious() (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.is_suspicious"]], "pass_ip() (in module searx.botdetection.ip_lists)": [[74, "searx.botdetection.ip_lists.pass_ip"]], "ping() (in module searx.botdetection.link_token)": [[74, "searx.botdetection.link_token.ping"]], "searx.botdetection": [[74, "module-searx.botdetection"]], "searx.botdetection.http_accept": [[74, "module-searx.botdetection.http_accept"]], "searx.botdetection.http_accept_encoding": [[74, "module-searx.botdetection.http_accept_encoding"]], "searx.botdetection.http_accept_language": [[74, "module-searx.botdetection.http_accept_language"]], "searx.botdetection.http_connection": [[74, "module-searx.botdetection.http_connection"]], "searx.botdetection.http_user_agent": [[74, "module-searx.botdetection.http_user_agent"]], "searx.botdetection.ip_limit": [[74, "module-searx.botdetection.ip_limit"]], "searx.botdetection.ip_lists": [[74, "module-searx.botdetection.ip_lists"]], "searx.botdetection.limiter": [[74, "module-searx.botdetection.limiter"]], "searx.botdetection.link_token": [[74, "module-searx.botdetection.link_token"]], "suspend_time_setting (searx.exceptions.searxengineaccessdeniedexception attribute)": [[75, "searx.exceptions.SearxEngineAccessDeniedException.SUSPEND_TIME_SETTING"]], "suspend_time_setting (searx.exceptions.searxenginecaptchaexception attribute)": [[75, "searx.exceptions.SearxEngineCaptchaException.SUSPEND_TIME_SETTING"]], "suspend_time_setting (searx.exceptions.searxenginetoomanyrequestsexception attribute)": [[75, "searx.exceptions.SearxEngineTooManyRequestsException.SUSPEND_TIME_SETTING"]], "searxengineapiexception": [[75, "searx.exceptions.SearxEngineAPIException"]], "searxengineaccessdeniedexception": [[75, "searx.exceptions.SearxEngineAccessDeniedException"]], "searxenginecaptchaexception": [[75, "searx.exceptions.SearxEngineCaptchaException"]], "searxengineexception": [[75, "searx.exceptions.SearxEngineException"]], "searxengineresponseexception": [[75, "searx.exceptions.SearxEngineResponseException"]], "searxenginetoomanyrequestsexception": [[75, "searx.exceptions.SearxEngineTooManyRequestsException"]], "searxenginexpathexception": [[75, "searx.exceptions.SearxEngineXPathException"]], "searxexception": [[75, "searx.exceptions.SearxException"]], "searxparameterexception": [[75, "searx.exceptions.SearxParameterException"]], "searxsettingsexception": [[75, "searx.exceptions.SearxSettingsException"]], "searxxpathsyntaxexception": [[75, "searx.exceptions.SearxXPathSyntaxException"]], "searx.exceptions": [[75, "module-searx.exceptions"]], "infopage (class in searx.infopage)": [[76, "searx.infopage.InfoPage"]], "infopageset (class in searx.infopage)": [[76, "searx.infopage.InfoPageSet"]], "content (searx.infopage.infopage property)": [[76, "searx.infopage.InfoPage.content"]], "folder (searx.infopage.infopageset attribute)": [[76, "searx.infopage.InfoPageSet.folder"]], "get_ctx() (searx.infopage.infopage method)": [[76, "searx.infopage.InfoPage.get_ctx"]], "get_page() (searx.infopage.infopageset method)": [[76, "searx.infopage.InfoPageSet.get_page"]], "html (searx.infopage.infopage property)": [[76, "searx.infopage.InfoPage.html"]], "iter_pages() (searx.infopage.infopageset method)": [[76, "searx.infopage.InfoPageSet.iter_pages"]], "locale_default (searx.infopage.infopageset attribute)": [[76, "searx.infopage.InfoPageSet.locale_default"]], "locales (searx.infopage.infopageset attribute)": [[76, "searx.infopage.InfoPageSet.locales"]], "raw_content (searx.infopage.infopage property)": [[76, "searx.infopage.InfoPage.raw_content"]], "searx.infopage": [[76, "module-searx.infopage"]], "title (searx.infopage.infopage property)": [[76, "searx.infopage.InfoPage.title"]], "toc (searx.infopage.infopageset attribute)": [[76, "searx.infopage.InfoPageSet.toc"]], "additional_translations (in module searx.locales)": [[77, "searx.locales.ADDITIONAL_TRANSLATIONS"]], "locale_best_match (in module searx.locales)": [[77, "searx.locales.LOCALE_BEST_MATCH"]], "locale_names (in module searx.locales)": [[77, "searx.locales.LOCALE_NAMES"]], "rtl_locales (in module searx.locales)": [[77, "searx.locales.RTL_LOCALES"]], "build_engine_locales() (in module searx.locales)": [[77, "searx.locales.build_engine_locales"]], "get_engine_locale() (in module searx.locales)": [[77, "searx.locales.get_engine_locale"]], "get_locale() (in module searx.locales)": [[77, "searx.locales.get_locale"]], "get_locale_descr() (in module searx.locales)": [[77, "searx.locales.get_locale_descr"]], "get_offical_locales() (in module searx.locales)": [[77, "searx.locales.get_offical_locales"]], "get_translations() (in module searx.locales)": [[77, "searx.locales.get_translations"]], "language_tag() (in module searx.locales)": [[77, "searx.locales.language_tag"]], "locales_initialize() (in module searx.locales)": [[77, "searx.locales.locales_initialize"]], "match_locale() (in module searx.locales)": [[77, "searx.locales.match_locale"]], "region_tag() (in module searx.locales)": [[77, "searx.locales.region_tag"]], "searx.locales": [[77, "module-searx.locales"]], "searx.sxng_locales": [[77, "module-searx.sxng_locales"]], "sxng_locales (in module searx.sxng_locales)": [[77, "searx.sxng_locales.sxng_locales"]], "description (in module searx.plugins.tor_check)": [[78, "searx.plugins.tor_check.description"]], "name (in module searx.plugins.tor_check)": [[78, "searx.plugins.tor_check.name"]], "preference_section (in module searx.plugins.tor_check)": [[78, "searx.plugins.tor_check.preference_section"]], "query_examples (in module searx.plugins.tor_check)": [[78, "searx.plugins.tor_check.query_examples"]], "query_keywords (in module searx.plugins.tor_check)": [[78, "searx.plugins.tor_check.query_keywords"]], "searx.plugins.tor_check": [[78, "module-searx.plugins.tor_check"]], "old_redis_url_default_url (in module searx.redisdb)": [[79, "searx.redisdb.OLD_REDIS_URL_DEFAULT_URL"]], "searx.redisdb": [[79, "module-searx.redisdb"]], "lua_script_storage (in module searx.redislib)": [[80, "searx.redislib.LUA_SCRIPT_STORAGE"]], "drop_counter() (in module searx.redislib)": [[80, "searx.redislib.drop_counter"]], "incr_counter() (in module searx.redislib)": [[80, "searx.redislib.incr_counter"]], "incr_sliding_window() (in module searx.redislib)": [[80, "searx.redislib.incr_sliding_window"]], "lua_script_storage() (in module searx.redislib)": [[80, "searx.redislib.lua_script_storage"]], "purge_by_prefix() (in module searx.redislib)": [[80, "searx.redislib.purge_by_prefix"]], "searx.redislib": [[80, "module-searx.redislib"]], "secret_hash() (in module searx.redislib)": [[80, "searx.redislib.secret_hash"]], "engineref (class in searx.search)": [[81, "searx.search.EngineRef"]], "search (class in searx.search)": [[81, "searx.search.Search"]], "searchquery (class in searx.search)": [[81, "searx.search.SearchQuery"]], "searchwithplugins (class in searx.search)": [[81, "searx.search.SearchWithPlugins"]], "ordered_plugin_list (searx.search.searchwithplugins attribute)": [[81, "searx.search.SearchWithPlugins.ordered_plugin_list"]], "request (searx.search.searchwithplugins attribute)": [[81, "searx.search.SearchWithPlugins.request"]], "result_container (searx.search.search attribute)": [[81, "searx.search.Search.result_container"]], "result_container (searx.search.searchwithplugins attribute)": [[81, "searx.search.SearchWithPlugins.result_container"]], "search() (searx.search.search method)": [[81, "searx.search.Search.search"]], "search() (searx.search.searchwithplugins method)": [[81, "searx.search.SearchWithPlugins.search"]], "search_query (searx.search.search attribute)": [[81, "searx.search.Search.search_query"]], "search_query (searx.search.searchwithplugins attribute)": [[81, "searx.search.SearchWithPlugins.search_query"]], "engineprocessor (class in searx.search.processors.abstract)": [[82, "searx.search.processors.abstract.EngineProcessor"]], "offlineprocessor (class in searx.search.processors.offline)": [[82, "searx.search.processors.offline.OfflineProcessor"]], "onlinecurrencyprocessor (class in searx.search.processors.online_currency)": [[82, "searx.search.processors.online_currency.OnlineCurrencyProcessor"]], "onlinedictionaryprocessor (class in searx.search.processors.online_dictionary)": [[82, "searx.search.processors.online_dictionary.OnlineDictionaryProcessor"]], "onlineprocessor (class in searx.search.processors.online)": [[82, "searx.search.processors.online.OnlineProcessor"]], "onlineurlsearchprocessor (class in searx.search.processors.online_url_search)": [[82, "searx.search.processors.online_url_search.OnlineUrlSearchProcessor"]], "suspendedstatus (class in searx.search.processors.abstract)": [[82, "searx.search.processors.abstract.SuspendedStatus"]], "default_request_params() (in module searx.search.processors.online)": [[82, "searx.search.processors.online.default_request_params"]], "get_params() (searx.search.processors.abstract.engineprocessor method)": [[82, "searx.search.processors.abstract.EngineProcessor.get_params"]], "get_params() (searx.search.processors.online.onlineprocessor method)": [[82, "searx.search.processors.online.OnlineProcessor.get_params"]], "get_params() (searx.search.processors.online_currency.onlinecurrencyprocessor method)": [[82, "searx.search.processors.online_currency.OnlineCurrencyProcessor.get_params"]], "get_params() (searx.search.processors.online_dictionary.onlinedictionaryprocessor method)": [[82, "searx.search.processors.online_dictionary.OnlineDictionaryProcessor.get_params"]], "get_params() (searx.search.processors.online_url_search.onlineurlsearchprocessor method)": [[82, "searx.search.processors.online_url_search.OnlineUrlSearchProcessor.get_params"]], "searx.search.processors.abstract": [[82, "module-searx.search.processors.abstract"]], "searx.search.processors.offline": [[82, "module-searx.search.processors.offline"]], "searx.search.processors.online": [[82, "module-searx.search.processors.online"]], "searx.search.processors.online_currency": [[82, "module-searx.search.processors.online_currency"]], "searx.search.processors.online_dictionary": [[82, "module-searx.search.processors.online_dictionary"]], "searx.search.processors.online_url_search": [[82, "module-searx.search.processors.online_url_search"]], "search_language_codes (in module searx.utils)": [[83, "searx.utils.SEARCH_LANGUAGE_CODES"]], "convert_str_to_int() (in module searx.utils)": [[83, "searx.utils.convert_str_to_int"]], "detect_language() (in module searx.utils)": [[83, "searx.utils.detect_language"]], "dict_subset() (in module searx.utils)": [[83, "searx.utils.dict_subset"]], "ecma_unescape() (in module searx.utils)": [[83, "searx.utils.ecma_unescape"]], "eval_xpath() (in module searx.utils)": [[83, "searx.utils.eval_xpath"]], "eval_xpath_getindex() (in module searx.utils)": [[83, "searx.utils.eval_xpath_getindex"]], "eval_xpath_list() (in module searx.utils)": [[83, "searx.utils.eval_xpath_list"]], "extract_text() (in module searx.utils)": [[83, "searx.utils.extract_text"]], "extract_url() (in module searx.utils)": [[83, "searx.utils.extract_url"]], "gen_useragent() (in module searx.utils)": [[83, "searx.utils.gen_useragent"]], "get_engine_from_settings() (in module searx.utils)": [[83, "searx.utils.get_engine_from_settings"]], "get_torrent_size() (in module searx.utils)": [[83, "searx.utils.get_torrent_size"]], "get_xpath() (in module searx.utils)": [[83, "searx.utils.get_xpath"]], "html_to_text() (in module searx.utils)": [[83, "searx.utils.html_to_text"]], "int_or_zero() (in module searx.utils)": [[83, "searx.utils.int_or_zero"]], "is_valid_lang() (in module searx.utils)": [[83, "searx.utils.is_valid_lang"]], "normalize_url() (in module searx.utils)": [[83, "searx.utils.normalize_url"]], "searx.utils": [[83, "module-searx.utils"]], "searx_useragent() (in module searx.utils)": [[83, "searx.utils.searx_useragent"]], "to_string() (in module searx.utils)": [[83, "searx.utils.to_string"]]}}) \ No newline at end of file diff --git a/searx/__init__.py b/searx/__init__.py deleted file mode 100644 index d611ef6a2..000000000 --- a/searx/__init__.py +++ /dev/null @@ -1,113 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring - -import sys -import os -from os.path import dirname, abspath - -import logging - -import searx.unixthreadname -import searx.settings_loader -from searx.settings_defaults import settings_set_defaults - - -# Debug -LOG_FORMAT_DEBUG = '%(levelname)-7s %(name)-30.30s: %(message)s' - -# Production -LOG_FORMAT_PROD = '%(asctime)-15s %(levelname)s:%(name)s: %(message)s' -LOG_LEVEL_PROD = logging.WARNING - -searx_dir = abspath(dirname(__file__)) -searx_parent_dir = abspath(dirname(dirname(__file__))) -settings, settings_load_message = searx.settings_loader.load_settings() - -if settings is not None: - settings = settings_set_defaults(settings) - -_unset = object() - - -def get_setting(name, default=_unset): - """Returns the value to which ``name`` point. If there is no such name in the - settings and the ``default`` is unset, a :py:obj:`KeyError` is raised. - - """ - value = settings - for a in name.split('.'): - if isinstance(value, dict): - value = value.get(a, _unset) - else: - value = _unset - - if value is _unset: - if default is _unset: - raise KeyError(name) - value = default - break - - return value - - -def is_color_terminal(): - if os.getenv('TERM') in ('dumb', 'unknown'): - return False - return sys.stdout.isatty() - - -def logging_config_debug(): - try: - import coloredlogs # pylint: disable=import-outside-toplevel - except ImportError: - coloredlogs = None - - log_level = os.environ.get('SEARXNG_DEBUG_LOG_LEVEL', 'DEBUG') - if coloredlogs and is_color_terminal(): - level_styles = { - 'spam': {'color': 'green', 'faint': True}, - 'debug': {}, - 'notice': {'color': 'magenta'}, - 'success': {'bold': True, 'color': 'green'}, - 'info': {'bold': True, 'color': 'cyan'}, - 'warning': {'color': 'yellow'}, - 'error': {'color': 'red'}, - 'critical': {'bold': True, 'color': 'red'}, - } - field_styles = { - 'asctime': {'color': 'green'}, - 'hostname': {'color': 'magenta'}, - 'levelname': {'color': 8}, - 'name': {'color': 8}, - 'programname': {'color': 'cyan'}, - 'username': {'color': 'yellow'}, - } - coloredlogs.install(level=log_level, level_styles=level_styles, field_styles=field_styles, fmt=LOG_FORMAT_DEBUG) - else: - logging.basicConfig(level=logging.getLevelName(log_level), format=LOG_FORMAT_DEBUG) - - -searx_debug = settings['general']['debug'] -if searx_debug: - logging_config_debug() -else: - logging.basicConfig(level=LOG_LEVEL_PROD, format=LOG_FORMAT_PROD) - logging.root.setLevel(level=LOG_LEVEL_PROD) - logging.getLogger('werkzeug').setLevel(level=LOG_LEVEL_PROD) -logger = logging.getLogger('searx') -logger.info(settings_load_message) - -# log max_request_timeout -max_request_timeout = settings['outgoing']['max_request_timeout'] -if max_request_timeout is None: - logger.info('max_request_timeout=%s', repr(max_request_timeout)) -else: - logger.info('max_request_timeout=%i second(s)', max_request_timeout) - -if settings['server']['public_instance']: - logger.warning( - "Be aware you have activated features intended only for public instances. " - "This force the usage of the limiter and link_token / " - "see https://docs.searxng.org/admin/searx.limiter.html" - ) diff --git a/searx/answerers/__init__.py b/searx/answerers/__init__.py deleted file mode 100644 index 8e2b9b35a..000000000 --- a/searx/answerers/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -from os import listdir -from os.path import realpath, dirname, join, isdir -from searx.utils import load_module -from collections import defaultdict - - -answerers_dir = dirname(realpath(__file__)) - - -def load_answerers(): - answerers = [] - for filename in listdir(answerers_dir): - if not isdir(join(answerers_dir, filename)) or filename.startswith('_'): - continue - module = load_module('answerer.py', join(answerers_dir, filename)) - if not hasattr(module, 'keywords') or not isinstance(module.keywords, tuple) or not len(module.keywords): - exit(2) - answerers.append(module) - return answerers - - -def get_answerers_by_keywords(answerers): - by_keyword = defaultdict(list) - for answerer in answerers: - for keyword in answerer.keywords: - for keyword in answerer.keywords: - by_keyword[keyword].append(answerer.answer) - return by_keyword - - -def ask(query): - results = [] - query_parts = list(filter(None, query.query.split())) - - if not query_parts or query_parts[0] not in answerers_by_keywords: - return results - - for answerer in answerers_by_keywords[query_parts[0]]: - result = answerer(query) - if result: - results.append(result) - return results - - -answerers = load_answerers() -answerers_by_keywords = get_answerers_by_keywords(answerers) diff --git a/searx/answerers/random/answerer.py b/searx/answerers/random/answerer.py deleted file mode 100644 index a1306e2eb..000000000 --- a/searx/answerers/random/answerer.py +++ /dev/null @@ -1,76 +0,0 @@ -import hashlib -import random -import string -import uuid -from flask_babel import gettext - -# required answerer attribute -# specifies which search query keywords triggers this answerer -keywords = ('random',) - -random_int_max = 2**31 -random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase - - -def random_characters(): - return [random.choice(random_string_letters) for _ in range(random.randint(8, 32))] - - -def random_string(): - return ''.join(random_characters()) - - -def random_float(): - return str(random.random()) - - -def random_int(): - return str(random.randint(-random_int_max, random_int_max)) - - -def random_sha256(): - m = hashlib.sha256() - m.update(''.join(random_characters()).encode()) - return str(m.hexdigest()) - - -def random_uuid(): - return str(uuid.uuid4()) - - -def random_color(): - color = "%06x" % random.randint(0, 0xFFFFFF) - return f"#{color.upper()}" - - -random_types = { - 'string': random_string, - 'int': random_int, - 'float': random_float, - 'sha256': random_sha256, - 'uuid': random_uuid, - 'color': random_color, -} - - -# required answerer function -# can return a list of results (any result type) for a given query -def answer(query): - parts = query.query.split() - if len(parts) != 2: - return [] - - if parts[1] not in random_types: - return [] - - return [{'answer': random_types[parts[1]]()}] - - -# required answerer function -# returns information about the answerer -def self_info(): - return { - 'name': gettext('Random value generator'), - 'description': gettext('Generate different random values'), - 'examples': ['random {}'.format(x) for x in random_types], - } diff --git a/searx/answerers/statistics/answerer.py b/searx/answerers/statistics/answerer.py deleted file mode 100644 index 60f0d304f..000000000 --- a/searx/answerers/statistics/answerer.py +++ /dev/null @@ -1,50 +0,0 @@ -from functools import reduce -from operator import mul - -from flask_babel import gettext - - -keywords = ('min', 'max', 'avg', 'sum', 'prod') - - -# required answerer function -# can return a list of results (any result type) for a given query -def answer(query): - parts = query.query.split() - - if len(parts) < 2: - return [] - - try: - args = list(map(float, parts[1:])) - except: - return [] - - func = parts[0] - answer = None - - if func == 'min': - answer = min(args) - elif func == 'max': - answer = max(args) - elif func == 'avg': - answer = sum(args) / len(args) - elif func == 'sum': - answer = sum(args) - elif func == 'prod': - answer = reduce(mul, args, 1) - - if answer is None: - return [] - - return [{'answer': str(answer)}] - - -# required answerer function -# returns information about the answerer -def self_info(): - return { - 'name': gettext('Statistics functions'), - 'description': gettext('Compute {functions} of the arguments').format(functions='/'.join(keywords)), - 'examples': ['avg 123 548 2.04 24.2'], - } diff --git a/searx/autocomplete.py b/searx/autocomplete.py deleted file mode 100644 index 58655e26f..000000000 --- a/searx/autocomplete.py +++ /dev/null @@ -1,241 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This module implements functions needed for the autocompleter. - -""" -# pylint: disable=use-dict-literal - -import json -from urllib.parse import urlencode - -import lxml -from httpx import HTTPError - -from searx import settings -from searx.engines import ( - engines, - google, -) -from searx.network import get as http_get -from searx.exceptions import SearxEngineResponseException - - -def get(*args, **kwargs): - if 'timeout' not in kwargs: - kwargs['timeout'] = settings['outgoing']['request_timeout'] - kwargs['raise_for_httperror'] = True - return http_get(*args, **kwargs) - - -def brave(query, _lang): - # brave search autocompleter - url = 'https://search.brave.com/api/suggest?' - url += urlencode({'q': query}) - country = 'all' - # if lang in _brave: - # country = lang - kwargs = {'cookies': {'country': country}} - resp = get(url, **kwargs) - - results = [] - - if resp.ok: - data = resp.json() - for item in data[1]: - results.append(item) - return results - - -def dbpedia(query, _lang): - # dbpedia autocompleter, no HTTPS - autocomplete_url = 'https://lookup.dbpedia.org/api/search.asmx/KeywordSearch?' - - response = get(autocomplete_url + urlencode(dict(QueryString=query))) - - results = [] - - if response.ok: - dom = lxml.etree.fromstring(response.content) - results = dom.xpath('//Result/Label//text()') - - return results - - -def duckduckgo(query, sxng_locale): - """Autocomplete from DuckDuckGo. Supports DuckDuckGo's languages""" - - traits = engines['duckduckgo'].traits - args = { - 'q': query, - 'kl': traits.get_region(sxng_locale, traits.all_locale), - } - - url = 'https://duckduckgo.com/ac/?type=list&' + urlencode(args) - resp = get(url) - - ret_val = [] - if resp.ok: - j = resp.json() - if len(j) > 1: - ret_val = j[1] - return ret_val - - -def google_complete(query, sxng_locale): - """Autocomplete from Google. Supports Google's languages and subdomains - (:py:obj:`searx.engines.google.get_google_info`) by using the async REST - API:: - - https://{subdomain}/complete/search?{args} - - """ - - google_info = google.get_google_info({'searxng_locale': sxng_locale}, engines['google'].traits) - - url = 'https://{subdomain}/complete/search?{args}' - args = urlencode( - { - 'q': query, - 'client': 'gws-wiz', - 'hl': google_info['params']['hl'], - } - ) - results = [] - resp = get(url.format(subdomain=google_info['subdomain'], args=args)) - if resp.ok: - json_txt = resp.text[resp.text.find('[') : resp.text.find(']', -3) + 1] - data = json.loads(json_txt) - for item in data[0]: - results.append(lxml.html.fromstring(item[0]).text_content()) - return results - - -def mwmbl(query, _lang): - """Autocomplete from Mwmbl_.""" - - # mwmbl autocompleter - url = 'https://api.mwmbl.org/search/complete?{query}' - - results = get(url.format(query=urlencode({'q': query}))).json()[1] - - # results starting with `go:` are direct urls and not useful for auto completion - return [result for result in results if not result.startswith("go: ") and not result.startswith("search: ")] - - -def seznam(query, _lang): - # seznam search autocompleter - url = 'https://suggest.seznam.cz/fulltext/cs?{query}' - - resp = get( - url.format( - query=urlencode( - {'phrase': query, 'cursorPosition': len(query), 'format': 'json-2', 'highlight': '1', 'count': '6'} - ) - ) - ) - - if not resp.ok: - return [] - - data = resp.json() - return [ - ''.join([part.get('text', '') for part in item.get('text', [])]) - for item in data.get('result', []) - if item.get('itemType', None) == 'ItemType.TEXT' - ] - - -def startpage(query, sxng_locale): - """Autocomplete from Startpage. Supports Startpage's languages""" - lui = engines['startpage'].traits.get_language(sxng_locale, 'english') - url = 'https://startpage.com/suggestions?{query}' - resp = get(url.format(query=urlencode({'q': query, 'segment': 'startpage.udog', 'lui': lui}))) - data = resp.json() - return [e['text'] for e in data.get('suggestions', []) if 'text' in e] - - -def swisscows(query, _lang): - # swisscows autocompleter - url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5' - - resp = json.loads(get(url.format(query=urlencode({'query': query}))).text) - return resp - - -def qwant(query, sxng_locale): - """Autocomplete from Qwant. Supports Qwant's regions.""" - results = [] - - locale = engines['qwant'].traits.get_region(sxng_locale, 'en_US') - url = 'https://api.qwant.com/v3/suggest?{query}' - resp = get(url.format(query=urlencode({'q': query, 'locale': locale, 'version': '2'}))) - - if resp.ok: - data = resp.json() - if data['status'] == 'success': - for item in data['data']['items']: - results.append(item['value']) - - return results - - -def wikipedia(query, sxng_locale): - """Autocomplete from Wikipedia. Supports Wikipedia's languages (aka netloc).""" - results = [] - eng_traits = engines['wikipedia'].traits - wiki_lang = eng_traits.get_language(sxng_locale, 'en') - wiki_netloc = eng_traits.custom['wiki_netloc'].get(wiki_lang, 'en.wikipedia.org') - - url = 'https://{wiki_netloc}/w/api.php?{args}' - args = urlencode( - { - 'action': 'opensearch', - 'format': 'json', - 'formatversion': '2', - 'search': query, - 'namespace': '0', - 'limit': '10', - } - ) - resp = get(url.format(args=args, wiki_netloc=wiki_netloc)) - if resp.ok: - data = resp.json() - if len(data) > 1: - results = data[1] - - return results - - -def yandex(query, _lang): - # yandex autocompleter - url = "https://suggest.yandex.com/suggest-ff.cgi?{0}" - - resp = json.loads(get(url.format(urlencode(dict(part=query)))).text) - if len(resp) > 1: - return resp[1] - return [] - - -backends = { - 'dbpedia': dbpedia, - 'duckduckgo': duckduckgo, - 'google': google_complete, - 'mwmbl': mwmbl, - 'seznam': seznam, - 'startpage': startpage, - 'swisscows': swisscows, - 'qwant': qwant, - 'wikipedia': wikipedia, - 'brave': brave, - 'yandex': yandex, -} - - -def search_autocomplete(backend_name, query, sxng_locale): - backend = backends.get(backend_name) - if backend is None: - return [] - try: - return backend(query, sxng_locale) - except (HTTPError, SearxEngineResponseException): - return [] diff --git a/searx/babel_extract.py b/searx/babel_extract.py deleted file mode 100644 index 5bcb1f0e9..000000000 --- a/searx/babel_extract.py +++ /dev/null @@ -1,51 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This module implements the :origin:`searxng_msg ` extractor to -extract messages from: - -- :origin:`searx/searxng.msg` - -The ``searxng.msg`` files are selected by Babel_, see Babel's configuration in -:origin:`babel.cfg`:: - - searxng_msg = searx.babel_extract.extract - ... - [searxng_msg: **/searxng.msg] - -A ``searxng.msg`` file is a python file that is *executed* by the -:py:obj:`extract` function. Additional ``searxng.msg`` files can be added by: - -1. Adding a ``searxng.msg`` file in one of the SearXNG python packages and -2. implement a method in :py:obj:`extract` that yields messages from this file. - -.. _Babel: https://babel.pocoo.org/en/latest/index.html - -""" - -from os import path - -SEARXNG_MSG_FILE = "searxng.msg" -_MSG_FILES = [path.join(path.dirname(__file__), SEARXNG_MSG_FILE)] - - -def extract( - # pylint: disable=unused-argument - fileobj, - keywords, - comment_tags, - options, -): - """Extract messages from ``searxng.msg`` files by a custom extractor_. - - .. _extractor: - https://babel.pocoo.org/en/latest/messages.html#writing-extraction-methods - """ - if fileobj.name not in _MSG_FILES: - raise RuntimeError("don't know how to extract messages from %s" % fileobj.name) - - namespace = {} - exec(fileobj.read(), {}, namespace) # pylint: disable=exec-used - - for name in namespace['__all__']: - for k, v in namespace[name].items(): - yield 0, '_', v, ["%s['%s']" % (name, k)] diff --git a/searx/botdetection/__init__.py b/searx/botdetection/__init__.py deleted file mode 100644 index d5716bcc8..000000000 --- a/searx/botdetection/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""".. _botdetection src: - -Implementations used for bot detection. - -""" - -from ._helpers import dump_request -from ._helpers import get_real_ip -from ._helpers import get_network -from ._helpers import too_many_requests - -__all__ = ['dump_request', 'get_network', 'get_real_ip', 'too_many_requests'] - -redis_client = None -cfg = None - - -def init(_cfg, _redis_client): - global redis_client, cfg # pylint: disable=global-statement - redis_client = _redis_client - cfg = _cfg diff --git a/searx/botdetection/_helpers.py b/searx/botdetection/_helpers.py deleted file mode 100644 index 365067c24..000000000 --- a/searx/botdetection/_helpers.py +++ /dev/null @@ -1,129 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring, invalid-name -from __future__ import annotations - -from ipaddress import ( - IPv4Network, - IPv6Network, - IPv4Address, - IPv6Address, - ip_network, -) -import flask -import werkzeug - -from searx import logger -from . import config - -logger = logger.getChild('botdetection') - - -def dump_request(request: flask.Request): - return ( - request.path - + " || X-Forwarded-For: %s" % request.headers.get('X-Forwarded-For') - + " || X-Real-IP: %s" % request.headers.get('X-Real-IP') - + " || form: %s" % request.form - + " || Accept: %s" % request.headers.get('Accept') - + " || Accept-Language: %s" % request.headers.get('Accept-Language') - + " || Accept-Encoding: %s" % request.headers.get('Accept-Encoding') - + " || Content-Type: %s" % request.headers.get('Content-Type') - + " || Content-Length: %s" % request.headers.get('Content-Length') - + " || Connection: %s" % request.headers.get('Connection') - + " || User-Agent: %s" % request.headers.get('User-Agent') - ) - - -def too_many_requests(network: IPv4Network | IPv6Network, log_msg: str) -> werkzeug.Response | None: - """Returns a HTTP 429 response object and writes a ERROR message to the - 'botdetection' logger. This function is used in part by the filter methods - to return the default ``Too Many Requests`` response. - - """ - - logger.debug("BLOCK %s: %s", network.compressed, log_msg) - return flask.make_response(('Too Many Requests', 429)) - - -def get_network(real_ip: IPv4Address | IPv6Address, cfg: config.Config) -> IPv4Network | IPv6Network: - """Returns the (client) network of whether the real_ip is part of.""" - - if real_ip.version == 6: - prefix = cfg['real_ip.ipv6_prefix'] - else: - prefix = cfg['real_ip.ipv4_prefix'] - network = ip_network(f"{real_ip}/{prefix}", strict=False) - # logger.debug("get_network(): %s", network.compressed) - return network - - -_logged_errors = [] - - -def _log_error_only_once(err_msg): - if err_msg not in _logged_errors: - logger.error(err_msg) - _logged_errors.append(err_msg) - - -def get_real_ip(request: flask.Request) -> str: - """Returns real IP of the request. Since not all proxies set all the HTTP - headers and incoming headers can be faked it may happen that the IP cannot - be determined correctly. - - .. sidebar:: :py:obj:`flask.Request.remote_addr` - - SearXNG uses Werkzeug's ProxyFix_ (with it default ``x_for=1``). - - This function tries to get the remote IP in the order listed below, - additional some tests are done and if inconsistencies or errors are - detected, they are logged. - - The remote IP of the request is taken from (first match): - - - X-Forwarded-For_ header - - `X-real-IP header `__ - - :py:obj:`flask.Request.remote_addr` - - .. _ProxyFix: - https://werkzeug.palletsprojects.com/middleware/proxy_fix/ - - .. _X-Forwarded-For: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For - - """ - - forwarded_for = request.headers.get("X-Forwarded-For") - real_ip = request.headers.get('X-Real-IP') - remote_addr = request.remote_addr - # logger.debug( - # "X-Forwarded-For: %s || X-Real-IP: %s || request.remote_addr: %s", forwarded_for, real_ip, remote_addr - # ) - - if not forwarded_for: - _log_error_only_once("X-Forwarded-For header is not set!") - else: - from . import cfg # pylint: disable=import-outside-toplevel, cyclic-import - - forwarded_for = [x.strip() for x in forwarded_for.split(',')] - x_for: int = cfg['real_ip.x_for'] # type: ignore - forwarded_for = forwarded_for[-min(len(forwarded_for), x_for)] - - if not real_ip: - _log_error_only_once("X-Real-IP header is not set!") - - if forwarded_for and real_ip and forwarded_for != real_ip: - logger.warning("IP from X-Real-IP (%s) is not equal to IP from X-Forwarded-For (%s)", real_ip, forwarded_for) - - if forwarded_for and remote_addr and forwarded_for != remote_addr: - logger.warning( - "IP from WSGI environment (%s) is not equal to IP from X-Forwarded-For (%s)", remote_addr, forwarded_for - ) - - if real_ip and remote_addr and real_ip != remote_addr: - logger.warning("IP from WSGI environment (%s) is not equal to IP from X-Real-IP (%s)", remote_addr, real_ip) - - request_ip = forwarded_for or real_ip or remote_addr or '0.0.0.0' - # logger.debug("get_real_ip() -> %s", request_ip) - return request_ip diff --git a/searx/botdetection/config.py b/searx/botdetection/config.py deleted file mode 100644 index d2710456f..000000000 --- a/searx/botdetection/config.py +++ /dev/null @@ -1,377 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Configuration class :py:class:`Config` with deep-update, schema validation -and deprecated names. - -The :py:class:`Config` class implements a configuration that is based on -structured dictionaries. The configuration schema is defined in a dictionary -structure and the configuration data is given in a dictionary structure. -""" -from __future__ import annotations -from typing import Any - -import copy -import typing -import logging -import pathlib -import pytomlpp as toml - -__all__ = ['Config', 'UNSET', 'SchemaIssue'] - -log = logging.getLogger(__name__) - - -class FALSE: - """Class of ``False`` singelton""" - - # pylint: disable=multiple-statements - def __init__(self, msg): - self.msg = msg - - def __bool__(self): - return False - - def __str__(self): - return self.msg - - __repr__ = __str__ - - -UNSET = FALSE('') - - -class SchemaIssue(ValueError): - """Exception to store and/or raise a message from a schema issue.""" - - def __init__(self, level: typing.Literal['warn', 'invalid'], msg: str): - self.level = level - super().__init__(msg) - - def __str__(self): - return f"[cfg schema {self.level}] {self.args[0]}" - - -class Config: - """Base class used for configuration""" - - UNSET = UNSET - - @classmethod - def from_toml(cls, schema_file: pathlib.Path, cfg_file: pathlib.Path, deprecated: dict) -> Config: - - # init schema - - log.debug("load schema file: %s", schema_file) - cfg = cls(cfg_schema=toml.load(schema_file), deprecated=deprecated) - if not cfg_file.exists(): - log.warning("missing config file: %s", cfg_file) - return cfg - - # load configuration - - log.debug("load config file: %s", cfg_file) - try: - upd_cfg = toml.load(cfg_file) - except toml.DecodeError as exc: - msg = str(exc).replace('\t', '').replace('\n', ' ') - log.error("%s: %s", cfg_file, msg) - raise - - is_valid, issue_list = cfg.validate(upd_cfg) - for msg in issue_list: - log.error(str(msg)) - if not is_valid: - raise TypeError(f"schema of {cfg_file} is invalid!") - cfg.update(upd_cfg) - return cfg - - def __init__(self, cfg_schema: typing.Dict, deprecated: typing.Dict[str, str]): - """Construtor of class Config. - - :param cfg_schema: Schema of the configuration - :param deprecated: dictionary that maps deprecated configuration names to a messages - - These values are needed for validation, see :py:obj:`validate`. - - """ - self.cfg_schema = cfg_schema - self.deprecated = deprecated - self.cfg = copy.deepcopy(cfg_schema) - - def __getitem__(self, key: str) -> Any: - return self.get(key) - - def validate(self, cfg: dict): - """Validation of dictionary ``cfg`` on :py:obj:`Config.SCHEMA`. - Validation is done by :py:obj:`validate`.""" - - return validate(self.cfg_schema, cfg, self.deprecated) - - def update(self, upd_cfg: dict): - """Update this configuration by ``upd_cfg``.""" - - dict_deepupdate(self.cfg, upd_cfg) - - def default(self, name: str): - """Returns default value of field ``name`` in ``self.cfg_schema``.""" - return value(name, self.cfg_schema) - - def get(self, name: str, default: Any = UNSET, replace: bool = True) -> Any: - """Returns the value to which ``name`` points in the configuration. - - If there is no such ``name`` in the config and the ``default`` is - :py:obj:`UNSET`, a :py:obj:`KeyError` is raised. - """ - - parent = self._get_parent_dict(name) - val = parent.get(name.split('.')[-1], UNSET) - if val is UNSET: - if default is UNSET: - raise KeyError(name) - val = default - - if replace and isinstance(val, str): - val = val % self - return val - - def set(self, name: str, val): - """Set the value to which ``name`` points in the configuration. - - If there is no such ``name`` in the config, a :py:obj:`KeyError` is - raised. - """ - parent = self._get_parent_dict(name) - parent[name.split('.')[-1]] = val - - def _get_parent_dict(self, name): - parent_name = '.'.join(name.split('.')[:-1]) - if parent_name: - parent = value(parent_name, self.cfg) - else: - parent = self.cfg - if (parent is UNSET) or (not isinstance(parent, dict)): - raise KeyError(parent_name) - return parent - - def path(self, name: str, default=UNSET): - """Get a :py:class:`pathlib.Path` object from a config string.""" - - val = self.get(name, default) - if val is UNSET: - if default is UNSET: - raise KeyError(name) - return default - return pathlib.Path(str(val)) - - def pyobj(self, name, default=UNSET): - """Get python object refered by full qualiffied name (FQN) in the config - string.""" - - fqn = self.get(name, default) - if fqn is UNSET: - if default is UNSET: - raise KeyError(name) - return default - (modulename, name) = str(fqn).rsplit('.', 1) - m = __import__(modulename, {}, {}, [name], 0) - return getattr(m, name) - - -# working with dictionaries - - -def value(name: str, data_dict: dict): - """Returns the value to which ``name`` points in the ``dat_dict``. - - .. code: python - - >>> data_dict = { - "foo": {"bar": 1 }, - "bar": {"foo": 2 }, - "foobar": [1, 2, 3], - } - >>> value('foobar', data_dict) - [1, 2, 3] - >>> value('foo.bar', data_dict) - 1 - >>> value('foo.bar.xxx', data_dict) - - - """ - - ret_val = data_dict - for part in name.split('.'): - if isinstance(ret_val, dict): - ret_val = ret_val.get(part, UNSET) - if ret_val is UNSET: - break - return ret_val - - -def validate( - schema_dict: typing.Dict, data_dict: typing.Dict, deprecated: typing.Dict[str, str] -) -> typing.Tuple[bool, list]: - - """Deep validation of dictionary in ``data_dict`` against dictionary in - ``schema_dict``. Argument deprecated is a dictionary that maps deprecated - configuration names to a messages:: - - deprecated = { - "foo.bar" : "config 'foo.bar' is deprecated, use 'bar.foo'", - "..." : "..." - } - - The function returns a python tuple ``(is_valid, issue_list)``: - - ``is_valid``: - A bool value indicating ``data_dict`` is valid or not. - - ``issue_list``: - A list of messages (:py:obj:`SchemaIssue`) from the validation:: - - [schema warn] data_dict: deprecated 'fontlib.foo': - [schema invalid] data_dict: key unknown 'fontlib.foo' - [schema invalid] data_dict: type mismatch 'fontlib.foo': expected ..., is ... - - If ``schema_dict`` or ``data_dict`` is not a dictionary type a - :py:obj:`SchemaIssue` is raised. - - """ - names = [] - is_valid = True - issue_list = [] - - if not isinstance(schema_dict, dict): - raise SchemaIssue('invalid', "schema_dict is not a dict type") - if not isinstance(data_dict, dict): - raise SchemaIssue('invalid', f"data_dict issue{'.'.join(names)} is not a dict type") - - is_valid, issue_list = _validate(names, issue_list, schema_dict, data_dict, deprecated) - return is_valid, issue_list - - -def _validate( - names: typing.List, - issue_list: typing.List, - schema_dict: typing.Dict, - data_dict: typing.Dict, - deprecated: typing.Dict[str, str], -) -> typing.Tuple[bool, typing.List]: - - is_valid = True - - for key, data_value in data_dict.items(): - - names.append(key) - name = '.'.join(names) - - deprecated_msg = deprecated.get(name) - # print("XXX %s: key %s // data_value: %s" % (name, key, data_value)) - if deprecated_msg: - issue_list.append(SchemaIssue('warn', f"data_dict '{name}': deprecated - {deprecated_msg}")) - - schema_value = value(name, schema_dict) - # print("YYY %s: key %s // schema_value: %s" % (name, key, schema_value)) - if schema_value is UNSET: - if not deprecated_msg: - issue_list.append(SchemaIssue('invalid', f"data_dict '{name}': key unknown in schema_dict")) - is_valid = False - - elif type(schema_value) != type(data_value): # pylint: disable=unidiomatic-typecheck - issue_list.append( - SchemaIssue( - 'invalid', - (f"data_dict: type mismatch '{name}':" f" expected {type(schema_value)}, is: {type(data_value)}"), - ) - ) - is_valid = False - - elif isinstance(data_value, dict): - _valid, _ = _validate(names, issue_list, schema_dict, data_value, deprecated) - is_valid = is_valid and _valid - names.pop() - - return is_valid, issue_list - - -def dict_deepupdate(base_dict: dict, upd_dict: dict, names=None): - """Deep-update of dictionary in ``base_dict`` by dictionary in ``upd_dict``. - - For each ``upd_key`` & ``upd_val`` pair in ``upd_dict``: - - 0. If types of ``base_dict[upd_key]`` and ``upd_val`` do not match raise a - :py:obj:`TypeError`. - - 1. If ``base_dict[upd_key]`` is a dict: recursively deep-update it by ``upd_val``. - - 2. If ``base_dict[upd_key]`` not exist: set ``base_dict[upd_key]`` from a - (deep-) copy of ``upd_val``. - - 3. If ``upd_val`` is a list, extend list in ``base_dict[upd_key]`` by the - list in ``upd_val``. - - 4. If ``upd_val`` is a set, update set in ``base_dict[upd_key]`` by set in - ``upd_val``. - """ - # pylint: disable=too-many-branches - if not isinstance(base_dict, dict): - raise TypeError("argument 'base_dict' is not a ditionary type") - if not isinstance(upd_dict, dict): - raise TypeError("argument 'upd_dict' is not a ditionary type") - - if names is None: - names = [] - - for upd_key, upd_val in upd_dict.items(): - # For each upd_key & upd_val pair in upd_dict: - - if isinstance(upd_val, dict): - - if upd_key in base_dict: - # if base_dict[upd_key] exists, recursively deep-update it - if not isinstance(base_dict[upd_key], dict): - raise TypeError(f"type mismatch {'.'.join(names)}: is not a dict type in base_dict") - dict_deepupdate( - base_dict[upd_key], - upd_val, - names - + [ - upd_key, - ], - ) - - else: - # if base_dict[upd_key] not exist, set base_dict[upd_key] from deepcopy of upd_val - base_dict[upd_key] = copy.deepcopy(upd_val) - - elif isinstance(upd_val, list): - - if upd_key in base_dict: - # if base_dict[upd_key] exists, base_dict[up_key] is extended by - # the list from upd_val - if not isinstance(base_dict[upd_key], list): - raise TypeError(f"type mismatch {'.'.join(names)}: is not a list type in base_dict") - base_dict[upd_key].extend(upd_val) - - else: - # if base_dict[upd_key] doesn't exists, set base_dict[key] from a deepcopy of the - # list in upd_val. - base_dict[upd_key] = copy.deepcopy(upd_val) - - elif isinstance(upd_val, set): - - if upd_key in base_dict: - # if base_dict[upd_key] exists, base_dict[up_key] is updated by the set in upd_val - if not isinstance(base_dict[upd_key], set): - raise TypeError(f"type mismatch {'.'.join(names)}: is not a set type in base_dict") - base_dict[upd_key].update(upd_val.copy()) - - else: - # if base_dict[upd_key] doesn't exists, set base_dict[upd_key] from a copy of the - # set in upd_val - base_dict[upd_key] = upd_val.copy() - - else: - # for any other type of upd_val replace or add base_dict[upd_key] by a copy - # of upd_val - base_dict[upd_key] = copy.copy(upd_val) diff --git a/searx/botdetection/http_accept.py b/searx/botdetection/http_accept.py deleted file mode 100644 index b1f524593..000000000 --- a/searx/botdetection/http_accept.py +++ /dev/null @@ -1,39 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Method ``http_accept`` ----------------------- - -The ``http_accept`` method evaluates a request as the request of a bot if the -Accept_ header .. - -- did not contain ``text/html`` - -.. _Accept: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept - -""" -# pylint: disable=unused-argument - -from __future__ import annotations -from ipaddress import ( - IPv4Network, - IPv6Network, -) - -import flask -import werkzeug - -from . import config -from ._helpers import too_many_requests - - -def filter_request( - network: IPv4Network | IPv6Network, - request: flask.Request, - cfg: config.Config, -) -> werkzeug.Response | None: - - if 'text/html' not in request.accept_mimetypes: - return too_many_requests(network, "HTTP header Accept did not contain text/html") - return None diff --git a/searx/botdetection/http_accept_encoding.py b/searx/botdetection/http_accept_encoding.py deleted file mode 100644 index e0c03cc73..000000000 --- a/searx/botdetection/http_accept_encoding.py +++ /dev/null @@ -1,41 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Method ``http_accept_encoding`` -------------------------------- - -The ``http_accept_encoding`` method evaluates a request as the request of a -bot if the Accept-Encoding_ header .. - -- did not contain ``gzip`` AND ``deflate`` (if both values are missed) -- did not contain ``text/html`` - -.. _Accept-Encoding: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - -""" -# pylint: disable=unused-argument - -from __future__ import annotations -from ipaddress import ( - IPv4Network, - IPv6Network, -) - -import flask -import werkzeug - -from . import config -from ._helpers import too_many_requests - - -def filter_request( - network: IPv4Network | IPv6Network, - request: flask.Request, - cfg: config.Config, -) -> werkzeug.Response | None: - - accept_list = [l.strip() for l in request.headers.get('Accept-Encoding', '').split(',')] - if not ('gzip' in accept_list or 'deflate' in accept_list): - return too_many_requests(network, "HTTP header Accept-Encoding did not contain gzip nor deflate") - return None diff --git a/searx/botdetection/http_accept_language.py b/searx/botdetection/http_accept_language.py deleted file mode 100644 index aaef81cc4..000000000 --- a/searx/botdetection/http_accept_language.py +++ /dev/null @@ -1,35 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Method ``http_accept_language`` -------------------------------- - -The ``http_accept_language`` method evaluates a request as the request of a bot -if the Accept-Language_ header is unset. - -.. _Accept-Language: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent - -""" -# pylint: disable=unused-argument -from __future__ import annotations -from ipaddress import ( - IPv4Network, - IPv6Network, -) - -import flask -import werkzeug - -from . import config -from ._helpers import too_many_requests - - -def filter_request( - network: IPv4Network | IPv6Network, - request: flask.Request, - cfg: config.Config, -) -> werkzeug.Response | None: - if request.headers.get('Accept-Language', '').strip() == '': - return too_many_requests(network, "missing HTTP header Accept-Language") - return None diff --git a/searx/botdetection/http_connection.py b/searx/botdetection/http_connection.py deleted file mode 100644 index a32877158..000000000 --- a/searx/botdetection/http_connection.py +++ /dev/null @@ -1,37 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Method ``http_connection`` --------------------------- - -The ``http_connection`` method evaluates a request as the request of a bot if -the Connection_ header is set to ``close``. - -.. _Connection: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Connection - -""" -# pylint: disable=unused-argument - -from __future__ import annotations -from ipaddress import ( - IPv4Network, - IPv6Network, -) - -import flask -import werkzeug - -from . import config -from ._helpers import too_many_requests - - -def filter_request( - network: IPv4Network | IPv6Network, - request: flask.Request, - cfg: config.Config, -) -> werkzeug.Response | None: - - if request.headers.get('Connection', '').strip() == 'close': - return too_many_requests(network, "HTTP header 'Connection=close") - return None diff --git a/searx/botdetection/http_user_agent.py b/searx/botdetection/http_user_agent.py deleted file mode 100644 index e2e02a9bb..000000000 --- a/searx/botdetection/http_user_agent.py +++ /dev/null @@ -1,67 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Method ``http_user_agent`` --------------------------- - -The ``http_user_agent`` method evaluates a request as the request of a bot if -the User-Agent_ header is unset or matches the regular expression -:py:obj:`USER_AGENT`. - -.. _User-Agent: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent - -""" -# pylint: disable=unused-argument - -from __future__ import annotations -import re -from ipaddress import ( - IPv4Network, - IPv6Network, -) - -import flask -import werkzeug - -from . import config -from ._helpers import too_many_requests - - -USER_AGENT = ( - r'(' - + r'unknown' - + r'|[Cc][Uu][Rr][Ll]|[wW]get|Scrapy|splash|JavaFX|FeedFetcher|python-requests|Go-http-client|Java|Jakarta|okhttp' - + r'|HttpClient|Jersey|Python|libwww-perl|Ruby|SynHttpClient|UniversalFeedParser|Googlebot|GoogleImageProxy' - + r'|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot' - + r'|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT|Sogou|Abonti|Pixray|Spinn3r|SemrushBot|Exabot' - + r'|ZmEu|BLEXBot|bitlybot' - # unmaintained Farside instances - + r'|' - + re.escape(r'Mozilla/5.0 (compatible; Farside/0.1.0; +https://farside.link)') - # other bots and client to block - + '|.*PetalBot.*' - + r')' -) -"""Regular expression that matches to User-Agent_ from known *bots*""" - -_regexp = None - - -def regexp_user_agent(): - global _regexp # pylint: disable=global-statement - if not _regexp: - _regexp = re.compile(USER_AGENT) - return _regexp - - -def filter_request( - network: IPv4Network | IPv6Network, - request: flask.Request, - cfg: config.Config, -) -> werkzeug.Response | None: - - user_agent = request.headers.get('User-Agent', 'unknown') - if regexp_user_agent().match(user_agent): - return too_many_requests(network, f"bot detected, HTTP header User-Agent: {user_agent}") - return None diff --git a/searx/botdetection/ip_limit.py b/searx/botdetection/ip_limit.py deleted file mode 100644 index 387e580ee..000000000 --- a/searx/botdetection/ip_limit.py +++ /dev/null @@ -1,147 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""".. _botdetection.ip_limit: - -Method ``ip_limit`` -------------------- - -The ``ip_limit`` method counts request from an IP in *sliding windows*. If -there are to many requests in a sliding window, the request is evaluated as a -bot request. This method requires a redis DB and needs a HTTP X-Forwarded-For_ -header. To take privacy only the hash value of an IP is stored in the redis DB -and at least for a maximum of 10 minutes. - -The :py:obj:`.link_token` method can be used to investigate whether a request is -*suspicious*. To activate the :py:obj:`.link_token` method in the -:py:obj:`.ip_limit` method add the following configuration: - -.. code:: toml - - [botdetection.ip_limit] - link_token = true - -If the :py:obj:`.link_token` method is activated and a request is *suspicious* -the request rates are reduced: - -- :py:obj:`BURST_MAX` -> :py:obj:`BURST_MAX_SUSPICIOUS` -- :py:obj:`LONG_MAX` -> :py:obj:`LONG_MAX_SUSPICIOUS` - -To intercept bots that get their IPs from a range of IPs, there is a -:py:obj:`SUSPICIOUS_IP_WINDOW`. In this window the suspicious IPs are stored -for a longer time. IPs stored in this sliding window have a maximum of -:py:obj:`SUSPICIOUS_IP_MAX` accesses before they are blocked. As soon as the IP -makes a request that is not suspicious, the sliding window for this IP is -dropped. - -.. _X-Forwarded-For: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For - -""" -from __future__ import annotations -from ipaddress import ( - IPv4Network, - IPv6Network, -) - -import flask -import werkzeug - -from searx import redisdb -from searx.redislib import incr_sliding_window, drop_counter - -from . import link_token -from . import config -from ._helpers import ( - too_many_requests, - logger, -) - - -logger = logger.getChild('ip_limit') - -BURST_WINDOW = 20 -"""Time (sec) before sliding window for *burst* requests expires.""" - -BURST_MAX = 15 -"""Maximum requests from one IP in the :py:obj:`BURST_WINDOW`""" - -BURST_MAX_SUSPICIOUS = 2 -"""Maximum of suspicious requests from one IP in the :py:obj:`BURST_WINDOW`""" - -LONG_WINDOW = 600 -"""Time (sec) before the longer sliding window expires.""" - -LONG_MAX = 150 -"""Maximum requests from one IP in the :py:obj:`LONG_WINDOW`""" - -LONG_MAX_SUSPICIOUS = 10 -"""Maximum suspicious requests from one IP in the :py:obj:`LONG_WINDOW`""" - -API_WONDOW = 3600 -"""Time (sec) before sliding window for API requests (format != html) expires.""" - -API_MAX = 4 -"""Maximum requests from one IP in the :py:obj:`API_WONDOW`""" - -SUSPICIOUS_IP_WINDOW = 3600 * 24 * 30 -"""Time (sec) before sliding window for one suspicious IP expires.""" - -SUSPICIOUS_IP_MAX = 3 -"""Maximum requests from one suspicious IP in the :py:obj:`SUSPICIOUS_IP_WINDOW`.""" - - -def filter_request( - network: IPv4Network | IPv6Network, - request: flask.Request, - cfg: config.Config, -) -> werkzeug.Response | None: - - # pylint: disable=too-many-return-statements - redis_client = redisdb.client() - - if network.is_link_local and not cfg['botdetection.ip_limit.filter_link_local']: - logger.debug("network %s is link-local -> not monitored by ip_limit method", network.compressed) - return None - - if request.args.get('format', 'html') != 'html': - c = incr_sliding_window(redis_client, 'ip_limit.API_WONDOW:' + network.compressed, API_WONDOW) - if c > API_MAX: - return too_many_requests(network, "too many request in API_WINDOW") - - if cfg['botdetection.ip_limit.link_token']: - - suspicious = link_token.is_suspicious(network, request, True) - - if not suspicious: - # this IP is no longer suspicious: release ip again / delete the counter of this IP - drop_counter(redis_client, 'ip_limit.SUSPICIOUS_IP_WINDOW' + network.compressed) - return None - - # this IP is suspicious: count requests from this IP - c = incr_sliding_window( - redis_client, 'ip_limit.SUSPICIOUS_IP_WINDOW' + network.compressed, SUSPICIOUS_IP_WINDOW - ) - if c > SUSPICIOUS_IP_MAX: - logger.error("BLOCK: too many request from %s in SUSPICIOUS_IP_WINDOW (redirect to /)", network) - return flask.redirect(flask.url_for('index'), code=302) - - c = incr_sliding_window(redis_client, 'ip_limit.BURST_WINDOW' + network.compressed, BURST_WINDOW) - if c > BURST_MAX_SUSPICIOUS: - return too_many_requests(network, "too many request in BURST_WINDOW (BURST_MAX_SUSPICIOUS)") - - c = incr_sliding_window(redis_client, 'ip_limit.LONG_WINDOW' + network.compressed, LONG_WINDOW) - if c > LONG_MAX_SUSPICIOUS: - return too_many_requests(network, "too many request in LONG_WINDOW (LONG_MAX_SUSPICIOUS)") - - return None - - # vanilla limiter without extensions counts BURST_MAX and LONG_MAX - c = incr_sliding_window(redis_client, 'ip_limit.BURST_WINDOW' + network.compressed, BURST_WINDOW) - if c > BURST_MAX: - return too_many_requests(network, "too many request in BURST_WINDOW (BURST_MAX)") - - c = incr_sliding_window(redis_client, 'ip_limit.LONG_WINDOW' + network.compressed, LONG_WINDOW) - if c > LONG_MAX: - return too_many_requests(network, "too many request in LONG_WINDOW (LONG_MAX)") - - return None diff --git a/searx/botdetection/ip_lists.py b/searx/botdetection/ip_lists.py deleted file mode 100644 index 5c904f4ae..000000000 --- a/searx/botdetection/ip_lists.py +++ /dev/null @@ -1,85 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""".. _botdetection.ip_lists: - -Method ``ip_lists`` -------------------- - -The ``ip_lists`` method implements IP :py:obj:`block- ` and -:py:obj:`pass-lists `. - -.. code:: toml - - [botdetection.ip_lists] - - pass_ip = [ - '140.238.172.132', # IPv4 of check.searx.space - '192.168.0.0/16', # IPv4 private network - 'fe80::/10' # IPv6 linklocal - ] - block_ip = [ - '93.184.216.34', # IPv4 of example.org - '257.1.1.1', # invalid IP --> will be ignored, logged in ERROR class - ] - -""" -# pylint: disable=unused-argument - -from __future__ import annotations -from typing import Tuple -from ipaddress import ( - ip_network, - IPv4Address, - IPv6Address, -) - -from . import config -from ._helpers import logger - -logger = logger.getChild('ip_limit') - -SEARXNG_ORG = [ - # https://github.com/searxng/searxng/pull/2484#issuecomment-1576639195 - '140.238.172.132', # IPv4 check.searx.space - '2603:c022:0:4900::/56', # IPv6 check.searx.space -] -"""Passlist of IPs from the SearXNG organization, e.g. `check.searx.space`.""" - - -def pass_ip(real_ip: IPv4Address | IPv6Address, cfg: config.Config) -> Tuple[bool, str]: - """Checks if the IP on the subnet is in one of the members of the - ``botdetection.ip_lists.pass_ip`` list. - """ - - if cfg.get('botdetection.ip_lists.pass_searxng_org', default=True): - for net in SEARXNG_ORG: - net = ip_network(net, strict=False) - if real_ip.version == net.version and real_ip in net: - return True, f"IP matches {net.compressed} in SEARXNG_ORG list." - return ip_is_subnet_of_member_in_list(real_ip, 'botdetection.ip_lists.pass_ip', cfg) - - -def block_ip(real_ip: IPv4Address | IPv6Address, cfg: config.Config) -> Tuple[bool, str]: - """Checks if the IP on the subnet is in one of the members of the - ``botdetection.ip_lists.block_ip`` list. - """ - - block, msg = ip_is_subnet_of_member_in_list(real_ip, 'botdetection.ip_lists.block_ip', cfg) - if block: - msg += " To remove IP from list, please contact the maintainer of the service." - return block, msg - - -def ip_is_subnet_of_member_in_list( - real_ip: IPv4Address | IPv6Address, list_name: str, cfg: config.Config -) -> Tuple[bool, str]: - - for net in cfg.get(list_name, default=[]): - try: - net = ip_network(net, strict=False) - except ValueError: - logger.error("invalid IP %s in %s", net, list_name) - continue - if real_ip.version == net.version and real_ip in net: - return True, f"IP matches {net.compressed} in {list_name}." - return False, f"IP is not a member of an item in the f{list_name} list" diff --git a/searx/botdetection/link_token.py b/searx/botdetection/link_token.py deleted file mode 100644 index dcfee33d9..000000000 --- a/searx/botdetection/link_token.py +++ /dev/null @@ -1,155 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Method ``link_token`` ---------------------- - -The ``link_token`` method evaluates a request as :py:obj:`suspicious -` if the URL ``/client.css`` is not requested by the -client. By adding a random component (the token) in the URL, a bot can not send -a ping by request a static URL. - -.. note:: - - This method requires a redis DB and needs a HTTP X-Forwarded-For_ header. - -To get in use of this method a flask URL route needs to be added: - -.. code:: python - - @app.route('/client.css', methods=['GET', 'POST']) - def client_token(token=None): - link_token.ping(request, token) - return Response('', mimetype='text/css') - -And in the HTML template from flask a stylesheet link is needed (the value of -``link_token`` comes from :py:obj:`get_token`): - -.. code:: html - - - -.. _X-Forwarded-For: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For - -""" -from __future__ import annotations -from ipaddress import ( - IPv4Network, - IPv6Network, - ip_address, -) - -import string -import random -import flask - -from searx import logger -from searx import redisdb -from searx.redislib import secret_hash - -from ._helpers import ( - get_network, - get_real_ip, -) - -TOKEN_LIVE_TIME = 600 -"""Livetime (sec) of limiter's CSS token.""" - -PING_LIVE_TIME = 3600 -"""Livetime (sec) of the ping-key from a client (request)""" - -PING_KEY = 'SearXNG_limiter.ping' -"""Prefix of all ping-keys generated by :py:obj:`get_ping_key`""" - -TOKEN_KEY = 'SearXNG_limiter.token' -"""Key for which the current token is stored in the DB""" - -logger = logger.getChild('botdetection.link_token') - - -def is_suspicious(network: IPv4Network | IPv6Network, request: flask.Request, renew: bool = False): - """Checks whether a valid ping is exists for this (client) network, if not - this request is rated as *suspicious*. If a valid ping exists and argument - ``renew`` is ``True`` the expire time of this ping is reset to - :py:obj:`PING_LIVE_TIME`. - - """ - redis_client = redisdb.client() - if not redis_client: - return False - - ping_key = get_ping_key(network, request) - if not redis_client.get(ping_key): - logger.info("missing ping (IP: %s) / request: %s", network.compressed, ping_key) - return True - - if renew: - redis_client.set(ping_key, 1, ex=PING_LIVE_TIME) - - logger.debug("found ping for (client) network %s -> %s", network.compressed, ping_key) - return False - - -def ping(request: flask.Request, token: str): - """This function is called by a request to URL ``/client.css``. If - ``token`` is valid a :py:obj:`PING_KEY` for the client is stored in the DB. - The expire time of this ping-key is :py:obj:`PING_LIVE_TIME`. - - """ - from . import redis_client, cfg # pylint: disable=import-outside-toplevel, cyclic-import - - if not redis_client: - return - if not token_is_valid(token): - return - - real_ip = ip_address(get_real_ip(request)) - network = get_network(real_ip, cfg) - - ping_key = get_ping_key(network, request) - logger.debug("store ping_key for (client) network %s (IP %s) -> %s", network.compressed, real_ip, ping_key) - redis_client.set(ping_key, 1, ex=PING_LIVE_TIME) - - -def get_ping_key(network: IPv4Network | IPv6Network, request: flask.Request) -> str: - """Generates a hashed key that fits (more or less) to a *WEB-browser - session* in a network.""" - return ( - PING_KEY - + "[" - + secret_hash( - network.compressed + request.headers.get('Accept-Language', '') + request.headers.get('User-Agent', '') - ) - + "]" - ) - - -def token_is_valid(token) -> bool: - valid = token == get_token() - logger.debug("token is valid --> %s", valid) - return valid - - -def get_token() -> str: - """Returns current token. If there is no currently active token a new token - is generated randomly and stored in the redis DB. - - - :py:obj:`TOKEN_LIVE_TIME` - - :py:obj:`TOKEN_KEY` - - """ - redis_client = redisdb.client() - if not redis_client: - # This function is also called when limiter is inactive / no redis DB - # (see render function in webapp.py) - return '12345678' - token = redis_client.get(TOKEN_KEY) - if token: - token = token.decode('UTF-8') - else: - token = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(16)) - redis_client.set(TOKEN_KEY, token, ex=TOKEN_LIVE_TIME) - return token diff --git a/searx/compat.py b/searx/compat.py deleted file mode 100644 index 15e27d45d..000000000 --- a/searx/compat.py +++ /dev/null @@ -1,73 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pyright: basic -"""Module for backward compatibility. - -""" -# pylint: disable=C,R - - -__all__ = ('cached_property',) - - -try: - from functools import cached_property # type: ignore - -except ImportError: - - # cache_property has been added in py3.8 [1] - # - # To support cache_property in py3.7 the implementation from 3.8 has been - # copied here. This code can be cleanup with EOL of py3.7. - # - # [1] https://docs.python.org/3/library/functools.html#functools.cached_property - - from threading import RLock - - _NOT_FOUND = object() - - class cached_property: - def __init__(self, func): - self.func = func - self.attrname = None - self.__doc__ = func.__doc__ - self.lock = RLock() - - def __set_name__(self, owner, name): - if self.attrname is None: - self.attrname = name - elif name != self.attrname: - raise TypeError( - "Cannot assign the same cached_property to two different names " - f"({self.attrname!r} and {name!r})." - ) - - def __get__(self, instance, owner=None): - if instance is None: - return self - if self.attrname is None: - raise TypeError("Cannot use cached_property instance without calling __set_name__ on it.") - try: - cache = instance.__dict__ - except AttributeError: # not all objects have __dict__ (e.g. class defines slots) - msg = ( - f"No '__dict__' attribute on {type(instance).__name__!r} " - f"instance to cache {self.attrname!r} property." - ) - raise TypeError(msg) from None - val = cache.get(self.attrname, _NOT_FOUND) - if val is _NOT_FOUND: - with self.lock: - # check if another thread filled cache while we awaited lock - val = cache.get(self.attrname, _NOT_FOUND) - if val is _NOT_FOUND: - val = self.func(instance) - try: - cache[self.attrname] = val - except TypeError: - msg = ( - f"The '__dict__' attribute on {type(instance).__name__!r} instance " - f"does not support item assignment for caching {self.attrname!r} property." - ) - raise TypeError(msg) from None - return val diff --git a/searx/data/__init__.py b/searx/data/__init__.py deleted file mode 100644 index 0822f4ac8..000000000 --- a/searx/data/__init__.py +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This module holds the *data* created by:: - - make data.all - -""" - -__all__ = [ - 'ENGINE_TRAITS', - 'CURRENCIES', - 'USER_AGENTS', - 'EXTERNAL_URLS', - 'WIKIDATA_UNITS', - 'EXTERNAL_BANGS', - 'OSM_KEYS_TAGS', - 'ENGINE_DESCRIPTIONS', - 'ahmia_blacklist_loader', -] - -import json -from pathlib import Path - -data_dir = Path(__file__).parent - - -def _load(filename): - with open(data_dir / filename, encoding='utf-8') as f: - return json.load(f) - - -def ahmia_blacklist_loader(): - """Load data from `ahmia_blacklist.txt` and return a list of MD5 values of onion - names. The MD5 values are fetched by:: - - searxng_extra/update/update_ahmia_blacklist.py - - This function is used by :py:mod:`searx.plugins.ahmia_filter`. - - """ - with open(data_dir / 'ahmia_blacklist.txt', encoding='utf-8') as f: - return f.read().split() - - -CURRENCIES = _load('currencies.json') -USER_AGENTS = _load('useragents.json') -EXTERNAL_URLS = _load('external_urls.json') -WIKIDATA_UNITS = _load('wikidata_units.json') -EXTERNAL_BANGS = _load('external_bangs.json') -OSM_KEYS_TAGS = _load('osm_keys_tags.json') -ENGINE_DESCRIPTIONS = _load('engine_descriptions.json') -ENGINE_TRAITS = _load('engine_traits.json') diff --git a/searx/data/ahmia_blacklist.txt b/searx/data/ahmia_blacklist.txt deleted file mode 100644 index 343e4f39d..000000000 --- a/searx/data/ahmia_blacklist.txt +++ /dev/null @@ -1,18329 +0,0 @@ -0008f4726e2b9231c09355c0a176cd94 -00145453e48c99747fd7bb981cca0798 -001489ecdac8b8535f34bb65a678003d -001a850b58240b760ed5c11821e64c7b -001f3b8aa0ce8168a0d3d3a68bc25503 -002e24dfe7cb15d7ee132aaf8814fb78 -0034e8102d0d6b44a12c44940e79e134 -00367fbc39135a28347dd17f25095cc4 -00377cce47784d49d250ec1527dd4c6a -00392e810e7825e5a7e4635795626015 -003ed39119889b93fae7751c2ceb7756 -00433ed7d7fb1e659de569635558a96c -0043a52f8ce0cb89d192e0dfe820abe8 -004545573381002c98edbea07ecce710 -0047134d4208ae96bb0ca1244b4cea16 -004dd508000ce4ea657b497a9230e33f -005058cec8d6ffd3bad1c749a25589bd -00538809ed5fd00a7d145dc536e105f1 -0053df1dd38b0a7e373723ad6c7307b8 -00540cb990e0e00d9dd2464f49d876a8 -005bce7e32375ce7ba2fd35a187464ff -006330527de64776b3c72872aeab790a -0065ffbcd83b06c6238289e2647f8404 -006764d9f710c03932876234851ffc7c -0068fef95269643f13568966e2c40286 -006dfda40722e493b2f724f2e073b896 -006e5d1b8734dafc45e75554ce644b28 -006ed781ea4e05accc7727a58316a67a -0071f5068289a6770bc9003c9fbfd393 -0073818c20b2c7709056e3196ade537b -007a73add89e3bf5f8ca180184604ebb -007b7aaa348d99204dd924ab0aac069c -007be7c1c38f6f29f77b65ade2b01853 -007c3df36f8cb0a35ad4fba7c28128e9 -007cb49f081b6df740f8c685f187306c -00841f6a61d42fda33d45aa50d857fa7 -008756069af99d66329488e61caf9b12 -008b0025d3f03ace831c0967fa4a0ecd -008c5c0d9174a0ae90c59cf2028557ec -00928ba6bd24dfd87e12a830900a6d89 -00929b53c605e9e50cc818f382be038f -009dc638a21ee6eac7d6bb201916cac1 -00a0859a2fa01e724fc6cf366c476644 -00a1a940ae7ff04787b384747572f618 -00a3b612a567540163894169b78b9c92 -00a5b6a7cb3bc71f269b1b520da212c8 -00ab0106dbd7b42b47f63255b76a434f -00ac3bce80bdc994f303941bc803cbb8 -00af3e057264a0e23567903904f49664 -00b104609fdb18e54fa03f90f499c49f -00b14adf176addf980b83eb857673d2b -00b5c2ae3783a5043ec0c35dc96db33c -00b82da4c3a94338330a3b2a56d4b052 -00b99982113fcb6a0020afa486ecb1b4 -00bbe567d13b101562c550087a4d9034 -00c25827b5c5bb282ada3a46a9dfed37 -00c5ba46fb5e18efbebad6b03b33881d -00c5e3a334cae51709c9b98dc24274a9 -00c97286685afa91fdcc05d08d8f4d31 -00d22f431df8cd9021b604fd40a7976c -00d4d02681cabe3c1bc45b4416bcc78f -00d6866f18cc6c112ec78454c1a74385 -00d9c83b0193b470637606b8815d95a0 -00e2beeb6c12995c892fcc9c15841dd9 -00e4fc981bdf5b7f387212199de7a93a -00eb1e933df9aadc281fddd853cb9f32 -00ecee0799f8f036bad0825473e9608c -00ee964a85a4c681ccab861fc6ee46d7 -00f3dd2bb0b34bd96b426884ec5dccad -0103f981ed3351e36a12d29d631224f8 -010669db7b90458bbeb4e3de4c758f78 -01067d8a4b16ec2466200c3e41961c1d -0111f597eb58bcf715807b568b2a1d86 -0115f62f2c3a7601fa229bd3053428b1 -0116d303c7f51659900e56455e80ddd9 -01177c79cc4dae823970094c4822b6fb -011b32bf6df99d8eb946e6b678f0603d -011b5d530cece0a3fed2f1bee9a12256 -0121791d3a0ab2b6f9adc85a7c3320ba -012965053ea4379b5c08e1bccfddcc87 -012a10e3befc963ddc87c63ae2911878 -012af294cfd28389f56f062b4b44083c -012b36bdf7cd2f6c7cb60b0b3210f10c -012de4343dff50b94a2222d0f22b6de7 -012ef974f5b4f307d168e00ada58cf96 -01323cea7c44f7d4587d83d7e9fe232c -01440f491db052b0b7918508ed138362 -014460c8ab46c9bfbf64c740f5fe9768 -0146656b5d8c4dc633d1759356bca217 -0147327639f2821d0b306aea87c2724c -0148b20eafc7a4822fee536c4532ba3c -01496e704e320321c1ac785bdc8dbc03 -014be60ea314977759a3a853595f06c5 -014f5d09fca09a8e6345e1b34935b0f1 -015e18e7f2207ff2c57a0328ef004880 -0166b9829bbf2f34904259f2fafa78cf -016791d8701640b7e50386542bd163d3 -017ad86837c9e31991f7c4edff0c22a3 -017c171ce1fcb2507e7f5baab4c4a9b9 -01814982bd45481f313f7cf0d8c3c11a -01855839a423395a888e944413028d60 -018d457c6524fdb9be16925a28dfc586 -018ecf2b8adb2004617eb9198283d809 -01921db4fa7a1e71ebfeabfc9b99810b -0197260635dfec18d1ca367413fc20ff -0197fd936ab57b542a4bffceaeb2d6f0 -019ae64ed14fde2e9c6fe55e801357e0 -01a3fea2e45541449e96bbc4471751ab -01a4098f62671bcf75db2c8e1d16ba44 -01a42bc0853a2c6d55e47281c4ab846e -01a57bfca99842bd8dc6d00ff6faa6cf -01a83de81a34db23d8e1d0cdedb226d7 -01aedb3771557061afb063f27a88410b -01afc712bc9365ee31634f7f031904a4 -01b55b5cf8d89ea3ace1d71283c15001 -01b72048eaff4934722383cafc265671 -01b95d6fc16b946dc179ad2dfa78dee2 -01bb8766589166620cc790b603acc02b -01bfce0b47cda6c4a61241a611273b43 -01c083cbd068d0ff1bcc2a958f315e04 -01c5179717fc6fc643dda1285ae78816 -01c6251521aa0af82faf17dcd27de47f -01cc73f7be6c6a09f1405f21f737a364 -01d2bebc3d521bd49cec1dcf1807b861 -01d3d01b22f6e11b73f971aef79321ab -01de33bd940fd991fd55563d692a74a9 -01e07cee478068e733e781e923958941 -01e37fc7951eed79cf4ab99d7de56008 -01f35948fc5b1c422459113ce786ac79 -01fa008eedea8531f2751786ba49bc82 -01fd5e14bbde4ed921212f4ec9d39b13 -01fd972b886429f3a6d2bdfe3ca95a36 -01fde11f5c7e9b1a3b1287bfbf4ddcaf -01fe114f85a3cc6d5e288f694b937fc2 -01fe443b6981e7c3c0076c25332ac9ad -02003740b7bdbafad9d20cfb8b2b6068 -020a26bd2e07e1340068bd2bff420d3b -020a3663ca4809d49a3154ff3e3ddb3d -020baf4cd4ebb620c88ba26a47e5758d -0216d286551434f146b10a800cdf5e32 -021ff20738a9f49a07cc856ddeb345b8 -02201937de04b0f44384fe7a8729a097 -02208c64452eb1fe8e84a56ec3739b6e -0220bc9ffb50299a78b6357bb153a13b -02286c6f519f8f1753cf99abe4f513f7 -022dfac06cf6f7863d4e6856a9ea3d87 -022ebf0c266fece2af161e97c3f9c48c -023361fed7e6bef5979f1cad627748a3 -02338f61dcfc26b78eab670857683d91 -02400fd7eb58ed95cebf6b8ab9175ef6 -02405af04ec61aeef1a908e8a457c39a -024092c599ecb95abc003f43b66d6364 -0245236428a5f036063fa6e2aa1564ef -0246843c3c1af4b3591cf1bc86296054 -0248b116ecd91230882a25a65f7faeef -0254b35a80052f596d30ab7178812f11 -025a6e40958e34e996e4b03698984827 -025cf1341b8dc023045bf0b8c4d2b43c -02626cc7d639b8dc20f48f3b33eafc7d -0262a39e8c1e1d7433f662362c2416ad -0262f0480959a0611a14b95644bc0c2e -026610e8aa4fc1d2ff0b85d1fc79352e -026e82fb0d650f67f0f4d42da0a9b3bb -0270be0aef7214c7fdd44aa854ee0989 -02753144ec92c462cd8e20b01ee95548 -02773e6376cf04b3bd5bc557edb207cb -02791258c0df53c5528b48260b57608d -0279279cbd315b5d3d1543dee28025b5 -027d2c8a0f15afab38f185a661a12f63 -0285a8152235d46839b4a0c08d58ddc5 -02869dc869b7982e80932addef97a26b -028b4bade611761182500c53fe013c67 -028e52b6a413f9b0152368e376cc6256 -0295fe6011a3b7ac80cc51f05554bc21 -029c585134b256ada1805781fa7465e3 -029d5c9f1228d06216d16298d78ba2a0 -02a1e6a16f2510ec267fd7a88013bb01 -02b19e3221162da19b50051d02c5248d -02b1a9090caf1cd126166307c3763621 -02b8c4ae7ac67b3fcfb1e52785e64f96 -02bc6589cc54fc58e0fbc9e7890b101d -02be705a024cc47ce53fc57ef1cec8bc -02be8ead302cdfc47a4a91a260a64d33 -02c1a70284bce340a698b49ef2263933 -02c2d02f75f7de60e03ec87e177cc69e -02c6b70f686ba611b3e1ba4a0ca47241 -02cbe12eed8def9500203f3254eefc77 -02cc2dc5875b7e4e3bb3dbfe1f1a8bf8 -02cf7f4e4d0a4ee49897e51a29da0978 -02d464bfce934d7a4f23959210003aa4 -02d9ac257258724eb6f59b033f0474d6 -02e5aaf277682ece7a63244c5f505436 -02f29aa196f835b28aed2b47c0e831d1 -02f47953ea98adcfcb7b936b005af2f2 -02f8f6f23f366ea8581897c6b8096764 -02fea5bcf3a85e295cc07c0408b95783 -03011ae0150d9d2274143c87e66e073c -0303485e6444bb737a6dc5877073c9bb -0308813ea03b46ea48b2187dfed16267 -030cfd4b8713e856d5f252ff18ff17b2 -0313972aa62a4af17bc838656681b628 -03144298c092883fc02701c6cc9fa9ed -031ab14fb1eed153c5871560a00e93c4 -03257a5e60aeafd8c7f1966d68e871cc -03335b010c7d458cc1008c4649162849 -0333fe7404cd8ec3503514a45ef899b7 -033ab26e48d62c0251b1df6c407bf8c1 -033b2fccf84c358c7a5cb38eaecb6918 -033b4be321f909f97ed301295eb6e204 -033e1cf13d22f08baf70113e58087714 -033e3be5ab9e6b7f2d7d561a556d9d85 -033e72b4f869a11df6c077f921de9396 -03434cd052821f38f0484ce86bc46ba3 -0343ccf85d3ab5d5d5be9589ca7628dd -0347a3b56554a8b8b0c0ebc1ad46bfb4 -03483bb949079341515ca85794a96c29 -0348b7fda21987cc79fcfe51d6265dfd -034c2f1f7b2cf830a3477b30b44590f6 -03535813c7d9215a1e2cbdddb84f044a -03542701b5fcdee9e7397fb9ccb84a5c -0355dfcc33108181db526ac37ef673d8 -0355f17a3d208dd1c908faa0f2f9e93f -035a2b6c907eefb47fd3517b3482938f -035a33089b5d3fdec040858232fdacf5 -035cba6e28aeffceae434696cbf72252 -036f6c9aec54fb351e8a16375db542ce -0374e989fed11efbfa6d6c4d761b1aa8 -0377249687933e1b60e6d011184b55f4 -037f14932d70fd33e9ab68b0abe087e8 -037f34b93a0d81bdef370fd37441d8ec -0387f0b61d7ee8b06ce1e813ee5f5b0c -0388920c2ddf0d31a417418f7df2c03b -039dd6be1f103d38602837e84fe96ead -039df073fe5630a13e3e47caa45362a6 -03a0dc9107b4fe1bff1bc6feb9fc774f -03a1b57ccedac923faed4913416aaf1f -03a57237b8847605a332d502610513c3 -03aed656e65b433fa51871cdf2db9f0f -03b37e35f3f818e4e7f5b08b3ea1ad76 -03b4737fc62c890b4f6e220b72ad8004 -03bc20b2b401d4def45a310edbc747a4 -03bc87ad3ae40cb88ffdc2ff5adc3635 -03c097bac9b23a9e162bd7df9bf52803 -03c7ab320c464c18b78b8cea44c0cde6 -03d0b79d8a5b9440991d2593b9a3f9c1 -03d1a0c15481b13250bfe51b9de1807f -03d28ca59cf59519963ce5a73c81e7d8 -03d5bbcd0641e99748e70539e0dc40cd -03d9e1429bfad4815c2922c86a6880dd -03e0d5ff65ea6d81d709bc42ba50cfad -03ec33ed97a4b5af1b6147fe966771c9 -03ee606788ac2b365dc2b079d5d1d1f7 -03ef6a5b6bdb7cd6a1a8205160f06a18 -03f4a47d1f433848d8d19fc40fb9bbf3 -03ffd1dfb83547396200e3f325f40904 -0400c08ee9a0b422b72fad8e0bba3015 -040c8e1e8fe3614ccfd121cce82a4ee6 -040fda88fd07087d9935f4921a443a93 -04100a501a59f302dec6860a2601421e -0411c8ebec965c87c292542c2a335719 -041647e1e376ee30192aebc0138ae6ad -04188574d8e432f9523eb6c038a7fa7d -041d74cae74d82e6958fde3dc9399b5d -041ff214a5779ace005c6a929deacc37 -0420bd330033f65e5fcfb8a2241c17bd -0421cfc35a1a36f09a84768f6dae9ab1 -04270668bda73f4609b7ad3ddbfd0d94 -0428da0dbaf654291f3bb753a145a199 -042eddd089a86d6c60760bf867caaf03 -043061594cbc9a4ebcaedd79575b47b2 -04392289403b44b5f15a1d4f37113baf -043d3eee7d90f8efffa564f423ee4b8b -043e4f61fb03b8355dd5515dd5acae62 -043fdbc4e305130c6c060cc93bd746dc -044445d31d95d932f91acdc0c0121010 -0444523ef1998b3ae0a3ea5d61ba1f8d -04475b198bea75dde1ce0150c72076ca -0452d8c9fb6525d98b9b648f3baaa5fe -0456b3e9dbedda1513e4254cbf9732a3 -045e292803fa0592bfc2a2eac71ce779 -046a02879cc799a6f7e572ca3cc28dd7 -046a3cbec7311a64109170bb4f606629 -046f6740984029704e72d7522b601303 -04718655e06dc9f3b44e05a26d3e02d6 -047657fad1a0e1ecde91aa8dc903ddec -0477a428cf5591d0fcee466f56e84ff7 -047b34e5a9c8aa0b9b158eb69151e3c3 -047c9505707fbe1f54af4567310288cd -048655817dfd90ec0c83bbd9503eeedd -048940101fbcb90f903cadc03790518e -048f50979000d98d330f87513c63ea12 -04901c1b8ee03233f1504890a33a1e61 -049037ad335be9b7ae41331304ed40b7 -04933d16ff025b0fd5f236156cf0f1fd -049f0f07992ec5e755855fb1e0562bf2 -04a155448fcab81d12e842fd2243fed7 -04a627438a4333145b3c17185f601244 -04a8c4a47cd42c27d03327a71656a56f -04a9e724322752867c6fa81394f7cdab -04acb9a09ad3dac9c3066100e38851cb -04adf6a990aea9bfa6c07d7c1601c3d5 -04b0511f96dcc3d763bbfb6964319cb6 -04b29e460c3838fa2234681600e0aef8 -04b53e2e5006aace3e374ed38ba1adf5 -04b67be655edcd4ab46f1f0cd001a04d -04b7ac97e5b43dd83f727c724554ad7d -04b8b30b33fccc9193b0d4e3b8af4ae3 -04b97d0ff7c983f39a877f84bcc53e49 -04b9dd20b4a5d9673d1cce9488a82a65 -04c144edc8aefe30041c65cce13afa40 -04c3b6cc04321791d93fc33a2dd4e99a -04c3efcdef248f9d2f197e98d0bcb86c -04c81d13cfccaaf2c56d9302744c445e -04c82086d33f38b06240e247285052cf -04cdfbc6d2f6de1c08cfe30e4bc2d32f -04d399f49c673113ef70e5c9652f2453 -04d3e6bbd0ba917977caa1df23427760 -04d4835390509d26adaa2afab725afd6 -04d4e66d555ccdcbf7eb0e039f8b70cc -04d579338f042a5c6035cb044046e514 -04d8159d73072b0cc91ddeee8e29b0f1 -04e3756d06bf4353d4a6198118638d83 -04e55dbe57f3973eb8c18e32fdf40777 -04e8e9c9feca5fa86ed60dd2953efe75 -04ea261384887ef6e8f5602a9a24a024 -04eb8f5cf86a40e68317b5751c0480f3 -04f2c6f496de3110fa2021598dc7dce2 -04f4357e7ca3413b627b1d1e5e9fac97 -04f5fec56796218b247a2ae982bd5a49 -04fc5d02fec9135856a328d7a257c29e -0503eb131e712a38b5ea49a834002d8d -0505b2bf267347d4936468d0980b64ea -0509271c25c2ccc40a47d139f485e442 -050d55200a22cd6ab9e1cf2a29577451 -050f4dddb88ea78a6c89a48de086b668 -051a0a23918f86b44126a412094b2174 -051d2a12e26ee9d484a3d29a008cd423 -051ea70f37c7c634b8360a3a65e97702 -052a95fe99fb2f97809d96016a99fe52 -052ecc8b74ef1c73fb9ee6c489a43aed -0532afc126983c2d56fbc1a47e92a553 -053da5b5b20cb6259301ae5f8e71b89b -05403cbd64e031ca6a7b6fc8cbd1c6ad -0540ecac6fe8a4fac8dd71a7338a159c -0540f8e1b015d066a807ea28e54460fe -05446ff2c377c98ba364c8a7dd3ae94e -05458bebf559d1adc0df4bcb42b0f59b -0548a9443138d2ac97eab4026721cb38 -0549d54b2e7c305fa6b7cb5e1eead3b3 -054d7f716fa483cea7d0af127de01501 -0551bf641208eacf641d1238383f1e9e -0556db1a07773e58bde94cbd16c3daa9 -05600a454c17ac66045de113dbcaaa0b -0562986958d0e1449c858abb16ee4b69 -0564aa25224fcde6f7ce48804b026826 -0567e4e481b9fb97339992f8c1ce6e17 -056bdfd7b59da8d1e7298d5a2d7e49e1 -0574ddd3cc1094c06b9fcf696e7ab10d -05766442573c854cc8934b18024483b0 -0578a01be695c3e54d1b72f4ffedad3b -057dd20b5e7f48a86278afcc3bce165a -058594c7218b2148ce45c300fb2204ca -0588c2fa81fd65053c78fb0a93cbd237 -058e3c07cffd4d782bbc343821c97dee -058fb39d7471427200bcdf9315604dc5 -05900cf5b739696451c49483e30b87d3 -0591ff6511faabe6b8772218c6bbccf2 -05922ddc93eddd17d6073fb8b3fd4657 -0592c7f13feb763cce719659bf6a8660 -0592e14d97aca207440298396d591c8a -05964f31946a5df2287e21b1c340025b -059800106bb9158871eb3f28fb25eec4 -059dc8f5fc944dd8817c7248bc348804 -05a218b4ae7618224e393ed460e2bd38 -05b43ded340b78e681499dac34454a20 -05bcda41d9dff9622c905250f685fabe -05bf5f1e721b6f9c39ab1e260e246df3 -05c1dc764dbee46dd9e6c779c9c6689a -05c30f415bb3d75776ad9c0294f0dc20 -05c34bddb9bf2150ef8b9da418153f20 -05ced91e5f7f7eb96b8192e4688b5e08 -05d8799c8f7d612b5bab1a61aa061d34 -05d92e0762a5d11e946efbda219a65d6 -05db3fa4660736acaa37c4cbc4c40e70 -05de3191fa1a7976bc8f6ee260f97bb4 -05e1f2e770bb212b053224eb8be0fd67 -05e3d539f40a4f234186f5199962e4b2 -05e4687d127af6ecd1579b124bac4a37 -05e65f8d6e1cbdd4adde86f33f2e23a6 -05e8b64a7ff78eea9c2ea1d4dd054c44 -05ea53d52a18dbe054506fd9378d95a4 -05eee7c4bf20ecbe11a12f0be2ddb460 -05f51c20222ca07b19b2eeaa8e51217e -05f672dfd0b0ca09cddd507321a63b80 -05f718d1056fbfac17fa9420fc2fe15d -05faae36e53ec085dcb4b1a19309c78d -05ff74fa673e18838aecce9e6a7376e3 -05ffd7ced2d0990f371c9112240722d0 -0605d2da74d44dc6288ee8db8d836801 -06068fca0cb5a0e0cc218ee8b95c74fc -0606c9d0cd50732479ae290a86cda6ed -060cc58b114e0912ce4f163b5d9733e1 -061ed1e32bb49a9ae8e6038ec5bd006a -062125aa910bfb32a88dbab8e2b1b9ff -062391f4f45dd37708dbc6060f9b4c5c -06264ab76047e38867f6251f458f9d0d -062954abd1f5dd92dd9000ab4c951b69 -0634712bcc72d2f52c490974c856d7a5 -063d76fb7bda626d54d1f0f1abd63711 -063e97813dcd1f9a258ca4a9a9a2b9db -064168503fbe591937728b0e334cd962 -06467ad3b06a7e8d4445937f3ad92d52 -0647e59ea78c2082ecbffea826581ff6 -064b4623340ab59429f3a208ab5793d5 -064cf6cf81126b018bf0ec14a0828086 -06511790169b5d8d0ba16c402cd9820b -0660a1abf3b97eeda0eb0eb6894d3c6e -06630c28f0526897c0fba5939a8ef2d8 -06654910781cf3212fe231d14cfa2b26 -0665c02f89424a4c495aaedd72341b72 -066695c6b8d7fadb15cbb1b9a345a677 -0669eb8fed45ab36ca9805fcff6d1eb6 -066bb32fc53b81636c16f0efe3ed4b7f -066f9321848d1f4b4972cc7d470ffbb2 -06722200a46fd3bc172e727ca8acc64f -067415e1d91068c399b17667d7f28fc5 -06756dc580fa43422d04283b6a232b68 -06770110943ada17e9143baa7e43133c -0677b5ff5f502de2fa83e5ae077df9a7 -068297fb869ba66fb7297128501bc0ca -0686854e42adadeb2f9f3232408a828c -06894cd5ad4f95db3bdcb3d5239699a6 -068b848d599ad7e26029393324139124 -0691ed2d375ca749d22854b49a430782 -0697e6acfa92c23ae507a26082d89ae1 -0698417a52978698b08c6228d4640f86 -06a1a29886bbae721360aff228150a40 -06a5d88d2e98ac54018615b472cefd70 -06af48fa2d0baec9d268aba5911ec82f -06b1cba78638f1fe60af70c727bafec4 -06b6248da8e3f7555697af8d573d73d6 -06b8477effc8005b84c1a24c4e2d2793 -06b9625190695e893289d07e0cde88ec -06bc0d89f6f2fbce22dd1ef89ca69dfb -06bcd7a02c11fa069278c65c4d4f0727 -06c033c45faed396e5f87d0fca5d507c -06c721e0c2a92f26619b300cea253920 -06c7dba7df769d2b8e8beabfb5e9981c -06c8e9dcb8948c69b9c9107741f4c549 -06cc76c699fd14bce9b8df18b08f5372 -06ce477c1651fd28ab280e36d743590e -06ce57584658f225b52ba4a16c21e730 -06ce812c979494a286b41babfab1563b -06d2b655473bc0faf36360f4e8d129cc -06d78d01381a3efee73bbb4ea40ce6e4 -06d8fc5b98128beccb77ff50b91af202 -06d9d53e2cd4b9364360bdebf199a729 -06db2d33258eaf878215280e5805c0c2 -06db3d2eedf98c1d61fc948cee310131 -06e3c5d87fa27f935b5c981a2f46fa99 -06e7ec96b11c06e353c5b15f4039ce15 -06ed4fc3e34101bd624ab644d702ab3e -06f58000dc7acf5b03c7cf37626d2bb2 -0700210a31892b7d21c91808cc143cd8 -07012a05548d7a36c3735a6b7745d5af -070133c9c1ec9eb97261ec445b304c92 -0701befc6f0a0210ff3ef161338c66c9 -0703b25d809e575b27f0324764799ceb -0706ffd0494fcb7794f5e864e02fcf9a -0707454c84e71cba27196ffebe49e019 -0714e5f1ee093966ad585d6e70bb2189 -0717450f6dfffda33819185809708ccf -07181afb625b07b655612dc97259c0e8 -071e441f2b19555fa57e4071b82ad0fb -0725dab2dc6f5e71aae63e069e0cf0d6 -072ac3fa0b1bc2ac4dbd6617f26a2bf4 -072d539e33e2c215409ea1429f6271ba -072db8b2892ece39463f203fe7a105f1 -072df47b55b4b55e36581df68c85c7db -072e1c774685118318e7bff18f0cb5ac -0739d96da7101e4beda064ac896e0d8d -0739fa4c66341622bedeb92e37a1ef4c -073e40a1f561dcc708ad0ed2ae6a5ee1 -073f379e924652b97a5d6388c0d7522e -0740ef2c1165b73479ac7151eb293911 -07424ccf8c8a24c6cbe752e5a9fc3812 -07424d3e5933262a691315419a28462e -074b47a27b346f1def7308a22c8455a9 -074bbd5f050c4362eff2803c7755e3dc -07569d0e4844aac21737d1e588274242 -075e876da2d6a5ab6f99f4279a0e3bfd -076557056b278657dbf8d9b1566555cb -07669c5a075494cc9f8467037ab4c5ee -0768777d1aea8ae7f8b58f99a634206c -076a87895cffbd1926f463837de01942 -076a9fe26f75500add3a997a11a9fbda -076aee2945c566dd0d1f9e6fb5ee4385 -076be6ca26665ff52a83186c19da4945 -076fc0d4b2d93ea5b8f49d5a4347bc5b -0774ff2f696d3d3807ee8c4c5dc7a18b -07777d711bf73e00b3a22c63a5c1854b -0782016d0c643ead91f958261606479b -078913c35cb77670b1505b6f0cefc504 -0789379206806e82d02562957f21812c -078cf208e66879bc3165cd1a439a09c1 -078d86c7f587f450a77815b3c4438f4a -078f566d77f8b11ef05d0a597bd37f59 -079209ac4790abebde3f8c83da2e84cb -079279290fe7df0154e187a82ea5cdad -0792d25a8c9dfa2e98f82c88eba21d05 -07934ecdade05a9908073624bb600880 -07938905a8c4929bdd02d6388dcffbac -079d604205e4dda5f75f6cd3951ec7fc -079d7d250c9ce7541b7f991fca73a130 -07a226bb4ccd6f418bc5ac3b024326b2 -07a3087ba3b43cbbe6513b50aab72253 -07a35e25e06a99590b6906a869418afc -07a4b829118c173a483775830dd6d457 -07a5e57ac14f963d8f5176b7955245c0 -07aa9387af3cf3c7f0040ff44dd9bf13 -07ab1525ba7acb140a0a148521bd96e2 -07ab344174250779fc068289c982d346 -07ad7d64b4a58ade444d5bf536293110 -07af1b7f9523698984f14d5529127862 -07b38a66ca557f20c846f3cf237dfdb1 -07b4bbdb5687f786dc959017c748371d -07b4de3f9a274cad94ca37494620808d -07b5417584913ffa1d34b70785dcaae2 -07bb0741f3a34b7f13dd7b37f84c8e6b -07d6736cf27e46ab49c5bfc6516e0c9a -07d865388aa721874d2e59155d67da9d -07db784b509078fb0b00c5080afd2b95 -07e2654019bc7930ee7c0fd05678dce5 -07e629fc2615045100772d76afd37f46 -07e6cc4b75eb1109a0dbb9062baf80ba -07e86249a9af74ae581c393ecfab602a -07eea583b776545094d53c0f018a0b19 -07eea89c95f6a83b63311bedbf6446bc -07f2969d8e633eaba7953faf8584f7fc -07f2d206ddba0215a1d862d586058bc9 -07f51798ab3ef2b8533f606b4f1f1b0d -07fcf1348e9e83ffbd2cba4d6f90bda1 -07fdd1ef1800f0235cb4a25021d1465e -07fddff595828007bf34233a92ac13b7 -07ff70a690e4bc62bcec745187a32d4a -0800128d8a224b87ab2c356f8b178473 -0800a352916b426abd8452397c53d637 -0801199a333b7c2fb4250cf907d94388 -0801ce536f078db82b01ca9fe755a37b -0803765eb86b4beace027470f3080c6f -080e852d3663838b1b4328b6b6b6c7ec -0811026670dd95fe36637fe4fd70f591 -081106d528ddbda7a3640f1eeb6f0e31 -0814c937bd7b65eb5ffaffca4a737cb2 -0818bbae37e01c5a5430b5e0ba32a864 -081e75574c5848ee84d3d6eeedf97047 -081ef7c9f54a5bfafa31647d98bb84ce -081f45998e8759e567d06f397aea8347 -081ff06cef942d61e7fe271b99ac8a18 -0826330e093d4a3d0a6731dee95cbb55 -0828793bf18449b2f31c8b3c9caf21cf -08311ac4669d9dab261af739153d8dbc -083187136a9acc810fa38c31e739308c -0832426dbc556aa505f8fcd452b111ee -0839f525be96d19646ddc6ee31bf879a -083da0494ef8bceaaeeab1bc714b86e7 -0842dfed1c74326e727ad28e516436d4 -08437ae79ce1ddd3685e01d2bc17cfa8 -0843868480ea926bf1ba0350f0bf66d7 -08468e827f44bc49741ae3672e7e4d62 -084e3bb4c493bfa5eee2968c00bbaa48 -085025d702a7dc69afa739371f1736d6 -0856eb1b42005f9aaa8d9ed02a4b56f5 -08581977f69f411700dff19c9f5694b2 -085ecd2037d9637e90fed043f98b0a77 -08691060fac3686183386b01064ea056 -0870a2c7afbedc6deacc18e0f082756c -0884a0f375d15fa52b1cff208fe3891a -08868a00c18db8e7dd0391f6b5c82167 -088a8c3eba0e1db3a7d9534fbaf2e7c1 -088fe186746b8e1e11f847998ff169e0 -08912e8d365146f6c6ca19a89de89389 -08967c5c785a757791bb3cec26bcea44 -08977f35b0b4fdb43e8ab7b97c0e7fbb -089ab7fc9a1518bcd064f5676398d808 -089ddb0c4e8ddf3307ebf8382ff6427e -089e4b855c0206e25448d12135dff5a3 -08a0ec8386d809d6e6223a9cde792167 -08a1c98822c0fce33a468c8e6244e72b -08a2bf6db54af53fd03b461ba95d7eed -08a3e379c63dddab3890e765e8585430 -08b4c315947d17490354a74bbc41e904 -08b9e97cce64884cb10ddc967b995f38 -08bc72ff8e9f3476c6f18c73efed3b3d -08c3f2171d0d1802ddd1e38e70b1a182 -08c4448c63ffa80e708a7885b0136cff -08c6cc3b3979744f6bf246f8e7bc166d -08c7b6c3eed9f972c64ab026f74a8fc4 -08ca1183b0544f178fcd40eb902cba2d -08ce6d2ae53e6b62e470eab1006b52a4 -08d0ca5f0a5f64f0edf2dd5904f4dd51 -08d180589c3bdd44c027c6e157a59008 -08d264b2ad0f843ed36260dd293fc10d -08e13de1a9be0bf210e375be72aa8981 -08e3a8a969fbb8d82aded8aaf62bef75 -08e4b375d02a5c2ca19d5044da6a0ec8 -08e914e420e3c8e7b6d3a3ffba5bc6ee -08ed4db28d20590a96acc96ab4fa11b0 -08f0a8c64a6f9212c035e69dd3fd3244 -08fd02e3dd10863359dcc361a3c711fe -08fe4c8d3ae05cffcb731e29ff1c6e1c -0904f2e8a8a469a5c38d690fc1e03de9 -0908b495d39975bf684dadd276e6482d -090b022871ef8b904ec75dc9b111c381 -090ebc39bc4fde78f2338f737dcf792f -09113509e91b7191716c6ab3438149b2 -09227c6d01fb39bb4390e379f600d16a -092ecf19eb8dfdf89fa61c38af501dd1 -093c464b2993a4d26fb7c63832ba8c2f -093cd513443d447a8d7fe533f93cd27c -093da8bdeec034afd1eff74f2645cfcf -0941e1658fff83e62dbf090bcc1ceedb -09441092353cea254fdc0700735dd97f -094ab067563713d837b74629d5025737 -0950989cd5ea851e5149f1e6f14ccba0 -0951de59ae4133af0e2bc20e38c32d99 -095c6651ae352d3a07500a448046b938 -095cdf3a6cc64141bdb8379318ecf620 -095f6e7d1dbf23f1964ca2eb4e427043 -09600218566276d0e4cad808062bc901 -09608b9b2e4a0e6dc36d59114590dec8 -0962ad3aff935223aa4c75b61fa792b0 -0963d0f60ef92704971353bf70080151 -09653f0ef3a5fbfa3b84a5ad6913febd -096f364d89a2330e434246252f8f775d -09711d5cf8273223e1602fd853cb568d -0975443b3eed87e4ee8f0409f5f3df3f -097b47950d953d08d75b4ff7587a661f -097d98e59274afdf7202e04e3f4c90c0 -09877644d4b0ebcc99341cf5cb62e847 -098d8db5a8664154940a3b748fd1adcd -098fc7270dc6e7c07d9dcbbaf33d0b8e -09900de1a1267991ab9a72333e87904a -0991d5dc055f327ddd8ec2a3a1ab6c6a -0995f5691cca5215618eec6573e56075 -0996deb218e9e52dc420dfa1595c1cb3 -0997a8b747350245e978646a292f83ff -099fa8f893d58361766e427d02e058d1 -09a5300714bcee87f827f6d68bb04fb8 -09a698d847a888294ad14810ed09ae8b -09a80ba356c022e5973a31604c2bc093 -09a9c9e3ab00b7ba8a99a6c2ac3d9713 -09abc2ab7df0a42cac48e33a348c46b0 -09ad5062470c699577c936fdad6c9716 -09ad608915e8cfd56a603cd4e230d945 -09b4482b68835cd55269a2335f02449c -09b79aaf00b690556cd774b9ff4e3362 -09b80d7108a15ac8b6021a5cc4a75f15 -09b8f48f95edc48cc7bd9cc4e618ffef -09bbb2af26d1705af39eab119b338582 -09bc6e9b4bb8b14f81a30ebff96cd618 -09c1f458f0edd0b98279f3addb4e0b87 -09c2bd688cee3f7f834742983341de0a -09c3f83f2b913f9bc87ffa2452ae4b62 -09c5ea56e887a4bff31889a7ea18b60b -09c7bf695173a0bc079046ea5c77dac2 -09c8f372965087322fea42c4df91f8d4 -09cbbdb4c3b418a351de794a68568f66 -09d00a1acaa99d30500454d0be51f16e -09d1e520cf3ec17e9d6047d4155cf2af -09d513204a54051998dcbdf612ca7015 -09ddeaa0bc16d528bc8b44a41a20277a -09df5eba98a0d1fe6a79ffacaae9a7a1 -09e07f311951d1dd404107081d02380d -09e0f6353be7273e3aa432bc91005c23 -09e1df4b67a36423a3d2d435fecf0ac2 -09eaefaa9992aa39728ff595b9a9f607 -09eb2931b9573e7b1ea2303a5d09a0f2 -09f3702e9f4954c15477efb6d27cd457 -09fe9fdf9d673ea09ea2533cbadd733b -0a0497c6a3fd4aa18c58c1c7753bdc93 -0a0547c5804955993753bdd7480627e1 -0a06ffa089e56f463e564b90df709090 -0a09421f61b1535aab8cd426f60ee83e -0a0b4781e54b395f0f223ed60b4b9799 -0a0ce4d9291d09e3519f61b2d91d4490 -0a13c7802c0f9f97d101b86264b154f5 -0a18bab873ba9778db124ec52f212cab -0a19917a52402917cabecada7cae83f7 -0a1cf347976b37c7169f2caf49202b96 -0a21d8b4aab7cae46c22024058ff4e48 -0a25bcd7ec874651b629df44483a2965 -0a29d6f414095646d5744e74087dd1cd -0a2d59fadee4289d8f988ac327b90228 -0a334adcb90d3377a3f59798e2ce1f51 -0a35665fb0a5dcb6828060f345ae0d15 -0a392d588a54e1594c03f1889c1cb069 -0a4199d7b5694f36dea4aad2c3f47fed -0a427d8a7be38f17b82abf92692dec80 -0a48f93f935fdf845b5e0dbf5d94ee02 -0a4baafdb90354657e961b62ea3babe7 -0a4f57cbc4df95e6e0ff8fa56b6aa6e4 -0a50eddf543178726358c07c2b034ea2 -0a546106137df9f1fe2beb5dbd7dced7 -0a58bb4e9c869625a53abdb9b4655b17 -0a6322c55eb595b303e437d096c3c5c9 -0a63cfc00cca93410296b022df7a3525 -0a65932359c3aa6bf1ac193f4fad8b71 -0a67459edeba9638ad5a2da13d6da6de -0a6960746b5556b557cf543fa276ba9a -0a6b9ff75963121b22c9b7f42cb1d524 -0a6d53c04d62d42570f460a6f6283240 -0a6e27a691780835cabb089311ec0f25 -0a7806c555a70976ce5d4ac68a5d18ce -0a7bed806fa74c05cd03adddb8b46def -0a7fde9632b84114c2b27b5184d49f9d -0a8131ceceb4e34ed068c8889b9eca5e -0a86d7cee84b1c74c6836b5435d4d184 -0a883872a91e688c07fd631955bbe0bc -0a886e3de3754f516b19b78a828a42f6 -0a8b65b4f31263e9796bdba9bfe60364 -0a8f7095b298fc4a10baecc9d4986def -0a8f9e9a42d50771a6d02f262326e58c -0a92cde439ef66e8967e5e73de9885c5 -0a93f053eba5e34f0118b38f8d2d6ac1 -0a95e3417712d42b2e4a916129587e46 -0a9c84eeaeb07ee2cd59b5952ac61c57 -0aa125fb2d7720d719f866b1502e8ea7 -0aa220c8834b48055307ebeabb4f4fae -0aa35b912a6d4938c2b54bb8e4330296 -0aa688471dc20bd52df518cc9404a1dc -0aa866a384250d8ec81af9a7fd788efb -0aaf69bb8d971f1151349aa7dc069f1f -0ab3804308d9ac41c611c41dc1769c24 -0ab92b332b23b5519260039eb100cb0d -0aba2856bc1ce6226e1c59e86d19335d -0abc7f847192dc406e6b076d3ebe1fe9 -0ac7bfb6d3d3c11cd667655aa5bdcf19 -0ac8020d4b6feafadc1d05ac1c230b18 -0ac8b2956b547d52fe8a6fba0627800a -0ad0287c8e78d10c4e3f3d2c2f7a03a8 -0ad0d8bd137e833c1aca656de8aa11e7 -0ad714a966581e9c4878aa98bb6d69c7 -0ae0e3d48c9f01067762daf31d2e29bf -0ae0ea5d0fe28a33b1b2a04cef3ae6c0 -0aed7decb3a85be9349009fe1855fa16 -0aeefddd8fcb8600cf4909893c4f5718 -0af8a71f88b41109694a611dc30e44ad -0af98cd1b3effd2ecfc3522fb9aedfa4 -0afc5b415809876089482692afeaea94 -0b042781aedebfac15ab459bec9791e5 -0b0a5f99daebb5c4e419df8884602b9c -0b0c01e14f433c6b9ea624c99a9349c3 -0b0d1da1d7d8e1a1e9fc4f4e43831220 -0b0db59aa7441843447435ab7710238e -0b13309d3efb217b346b80a693c02946 -0b19018fc9bad3f67544cdfaacf2e162 -0b198f4715f0fe3d0e26341927a74421 -0b19d18d3e51274e4f6463912ddabef7 -0b223c75e7b95ee3ef890790f7bc7d22 -0b24de38c8ddc8a94901840571bb9225 -0b2a366ac9b6ca1130fe7a0f23853f05 -0b2ab129e154df85e1ef572ae6972d62 -0b2b87b46c03be6873469a6a44e32701 -0b2eba98071939cff957251bf7b97792 -0b30a59f92f36ee78f652bf9e2731d41 -0b35a79443c5d6aff0d1149a865be5a1 -0b398244d4f0f516a1ab64789c5dc69c -0b52d83733c975490471610d585ff239 -0b53bc66e3016620ee4b3af927d44637 -0b55ffedb2eb824fbadb9b7d73cd9373 -0b5a671ea30f49d1f6a02bdca8dd40ef -0b5d56e43681091d75b78b61212e76cd -0b5eeed1214a46c7d43d4b779db66e22 -0b628f79584671a1468b731263bc5758 -0b653d7255312b2cc1e64adb356b41ef -0b666eb89c21ac69b2d933a54946b23e -0b6bd6585c88e5cdbc29b21c9a632d3c -0b6cb041cc315b1eb1e3aacb120ff55e -0b6df6345443a6384beb11f191b42cdd -0b6e8c0734b9920f8ffdd3bef3f5a277 -0b70397c7c436c4914cf45e9bbe3f65c -0b75b8ac78fc955346844ffa451d95f9 -0b7737e09d3adc5b000b5dde43da7841 -0b7c21a239b30e670d6d024c4f29bca2 -0b88cc2b7cdd91a3b4dbdcd44bc3a1e2 -0b8cfd93fe4dd0f643370f6c9caa67dc -0b8e9ac77a674639c8f4593d81cd7c09 -0b8edf9f2e9a4505df68b76f4336e3e4 -0b93995ee5285d94b89d9784e0ca189f -0b96552eefaab9e31da4d067458bed57 -0b96a5290a55d9e13a0902304aa3830a -0b9c7884d88e3fde417c4f7a218ee9e2 -0b9ed031e1200624237d8f16e1e579ca -0ba3c1dd781cf990d754d3d686e07079 -0ba55b3935ba30802f05f0f181649bd6 -0ba6c3a644c0e4b241c7f75b19e5712e -0ba739acd34d11a5d543c2f512257466 -0ba778f3331059274cf92be7132a018c -0ba918b2e4ae5a50f6fe54bb6909683c -0ba9d1affb34139d41a4cb170728d0d9 -0bacf0790665ed412e116cf3a17547d1 -0bb6769a49e22b29331e2e381b66a2a9 -0bc339d803bbee55eca2aeed50bc9aac -0bca44964b9c37ea665bd2826ec47cde -0bcc0cdbf26f8e5a5e2e493df17de568 -0bce5c42a39d2e960e7f9d262db42ef8 -0bcf20f6233c20e877e71e5d3b1519d4 -0bd081f954e2002edc25caa206ab72f1 -0bd3a43392b90f7d41f091db3e5484c8 -0bd5c7e61551848005c3994ca37fe9a2 -0bda4266222fff5a2b85904a3c947383 -0bda81ae1bd5f38a429e862b1ed2b830 -0bdb6b35d0471146383b699f630326dd -0bddff61793eeefd08ce666ef9de6152 -0be23d71115132e7b3f7ca210781a8c3 -0be3b5402135bb0691a051b61964c667 -0be9758097779cd514cbd4def5ab0986 -0beb4a0c76243488bceffb46b43d1c8a -0bed1310b18433bc2c68e4baa575e1cb -0bf2252ca902b61530123db6ce73d46c -0bf9b9f65492707ea1e3636af0894ccc -0bfa51a39c0f135d4a3e1c7e3c5fc06d -0bfc33bd0f8a28812fdefa831228cad4 -0c060c98eeafec2386d9bed805a72f2f -0c07661043022cc8d8cb4936f6ed58b3 -0c0822b25f93dafb162583e5dd2fffeb -0c0be3b19f5ebcc311bc9b06c9609285 -0c0cb0acdef4a63e6b88abfb204b58d5 -0c0dc06b800bb971ae87210568aaf4c0 -0c10b316ba7bf29316e47b169b9ccb14 -0c11b6392e4fb9c2984facdfec2b327a -0c1204006c776b4367fc634175d9d418 -0c164219da269fbcd54c6bd2067ab7a6 -0c188e683bc169cb6a23c09194405929 -0c230abfa1538d28904a7916fbc6ddc3 -0c2544f754e6d37207ddf7eff16464c6 -0c289467fc1bf553caf29b9a5bc720c2 -0c29478aacc1782cb2e0fe315210d17f -0c2b3a02614d1352dd374697d2efdfd4 -0c2e75fc8d15ba9861666c197fd9ff8c -0c3855a9c1b0cfc6fb9bd6edcd1343d9 -0c3953ff0f35418823437d3fb0ae56d8 -0c418ef444d18727313ae75fddb32d78 -0c4ed01c3d66dc8743b9f8b155892c73 -0c5375203369e0bf639809f0d0e82817 -0c569cb69826b55e5db8707fb1cce4c2 -0c5a2059cc116007c86768f7602e851f -0c5af4988f4651aad0c12e7efa40ac41 -0c631a68d067f434646f1b8a3270e43e -0c712101f41262675b63c893a288399c -0c71f4ede4c51545fcb1be85afa88b7d -0c73935bb9860e88f484ae69bee11628 -0c754bf9872b7a0b5f87b7818cbe456a -0c77dc46d2296cfce85a239ae04241c0 -0c809e865a6f66ef2725aa5602e2b4dc -0c86a10c161ced95399538d00f07e485 -0c8ce13c2acce1f4a8beacf6d9e6af0e -0c96a0c1440c18d0a5f07d5268b4b672 -0c99f194044366e5000933867250f5cd -0ca582d5e5c0f650aaba4661589cb17d -0cab060cc4e1092ce6bc626459bf1ca5 -0caef0a4da89e331b5ab70307647390d -0caff2425e3e7703c8a2514ff6ce7b84 -0cb2b1eaf15603d5586313de8a2fc57e -0cc05000008985599340cc87f5d1b5bb -0cc41001512935aec942d1766348446f -0cc87829681460790e2c90d8c2582bba -0ccabb436f87e1cca31553dde65c12e9 -0ccc0625f04f77b5ba39c441ba039f17 -0cced2248764cec99bac10722a7d3502 -0cd103dcbb2a3774d4918b48e06b916b -0cd3e4131f58340fceb58788e6f5f3fe -0cd7b24cd3c2c71f45d7609872086fab -0cd95b0d30237442d598c3f110f6eea1 -0cdbcbf87b33e1d45fee582ea5e22c4b -0ce0818ba457a181b56bd1fde803b029 -0ce0c3fb6bf8999c397800e525fae8d3 -0ce1a75e3a52dc38407c644eb4a008d4 -0ce2e53eb00f3bdc0f5b6cc4568a02a4 -0cef8be696b7f1587ca3b16f1c9900aa -0cf206ac8265fdd07eed1dbea9d0cf51 -0cf296e3c76625cac0b40346b5b77d64 -0cfebd314388f70eb939f03f6a56e5a4 -0cff57e8e85118d5bbd6a5570982775c -0d026654316328c989c5703b96268bbb -0d043c7b19b46f6d8c16177562f2216d -0d0c27351b2c8da3fe3a85f05c18c623 -0d13ec68ae2ef6d5b80bf900e5f5135a -0d18b589fb78a9eea74310bac898222a -0d18d8f4e27bf9cdd3788708dcf5fc8a -0d19745ccd4051ca02b0b5029eacccd8 -0d21ca02239ce0119f1cf3f937ef38c8 -0d2938459f80e9535d1a2ce9770d4515 -0d3682425ad2e8a4acc8af7370f5dc37 -0d37767ce986889d6641fa06293854c2 -0d380e7e0790f512a4066014af8ac82c -0d433178b005d63f5c8a182f559661b7 -0d462f5ca83059c8c0fbfbde4e4c341d -0d491382c717746600d77c5988241b3b -0d52e0409d509ee3b078b720c224b579 -0d57285519452c46dbd447e9b98addc4 -0d5c0704111e0e8a4ffda199c6dbc318 -0d5ea69ea289e169da701ba5039b7e05 -0d6194dda4c13bdd2af3f8af6874a65a -0d637b2e645e630cf9ec356abc012e40 -0d6463cf5dc246e2d978f0df1a4d6398 -0d6483789ea65ab7fa8aa689f2905443 -0d6c8cb94799222cad0b3294c60d6282 -0d6ce06655da03213089e1f0e8790fe4 -0d760e38c1ea31f81ac929939a62c054 -0d77a2d0a4756ea008720f5cb697b836 -0d7b234a93a9bc1cadf118e3bc0eb3b9 -0d7b950cc82f90aacf9e3a01b5ff54d3 -0d7f70f4bfae8ae1f2d74a4b21fd2af7 -0d80f597a9bce794c3c322de3ee090a0 -0d826e8e777cb3174e0885095b79b0f0 -0d8c5675c0c0e4e65f5986e38972d105 -0d8d7862e1c96c343f678722f534ed43 -0d8dd6f1e52d6387690291b67959ab28 -0d8e3888b66e666547d0e47317286953 -0d9616162f3447bc2772e9bef721a84d -0d9cc323adcd7912d1b232cee172f5a3 -0d9d153a19ae89a62edf4a7676d999f1 -0d9f15aed2b995a28428e2d7d3d5c296 -0da69c29a7a4e3ac1d04495b5a6de834 -0da88b948d8e1deb0be142a2d2766f8f -0dadaecd66fcf5c3825ff4b1fa47c65d -0dae9e80c1851f7f0506d2c5a8ed73e7 -0daef648c6f59b0cc6446fa75e1320d2 -0db950f044696feb380809529fe4609b -0dbdf11e96e4227190c2a6e0971954e8 -0dc0549924709113303d05250bc53ca7 -0dc1536691858ef7b4d698e8906e8cd7 -0dcdafab2352b39ab88ffd8128a3134b -0dd1a13a96ac99da74135c30ba94086d -0dd4b47b048ebdf98e9f6daa8966f040 -0dd58e24193d8ea33e68146eb23acbcd -0ddba5dcb8ea8a1b20a27bdf451f4925 -0ddc50e50b86a06dc5b20e639b49412e -0de7484b954b75f1a045165d0c29f66f -0de7ba720cfe4b39d3b439445a2c9df4 -0de7e98b0d1ba576650c1b1f47758f8e -0de9ccf57c538344b8c0c5f9c4e525bc -0df014529780a8e3ef65cdb4e0be8286 -0df84fac86e058bb2ae958028be35618 -0df97919d01bd980c358e7a3c571e3ad -0e00ded4f49f96716694286b3d5e4416 -0e02f4271f5c0789577710ff017be6c7 -0e09fdd63b97f99b59aa26731ed041d8 -0e0d354594fb965cc20e473541b8b59d -0e10b822c3d527d42a04fed12e4072ee -0e125d9ba1e7135a226e523bad5ed59e -0e188f983efdef1ca0af7e0e54446269 -0e1c1a06651d2164e93509aea7639af8 -0e1c308f09373cf7d83e70c7b8f5d81b -0e1e40a16950ebc250d5cf24b1b16a52 -0e2030d0e11bbf966b05897ddee785e8 -0e228dddecf41be741d5910924eec69a -0e23a7fe75b3e43af35a395115103668 -0e28e85962a24d8dcdf8a49767f15235 -0e29caad651d5db15a48805e76f7f6f1 -0e2b009a910411939857c50fd7149be5 -0e2da7eaa888fca0ce22f118de6628ac -0e31ad11b4f016108bb4b4031dc5fa67 -0e46bb9f1ad35e36b1b7837bf1783d95 -0e477890e8b93ceb3b1dd7c36b5c57da -0e4fc91984e6c2312a7aa403399d53f2 -0e5d4b42ed2a4bef818f9efe6398d21b -0e5d6e2bde4aec6a6e4cfbea09c1099b -0e6213558ba07bb9e39106a960ae4fbc -0e669729c272cf6d00351861b5b6ea37 -0e67be5eb963167966dc575a5ada49a8 -0e732e318bd837dc91a60f2a57715f29 -0e736a09e9986ffc6e70b1a1751b4b44 -0e75fe2072d580009f94ec4e53079815 -0e7e537274dd4158f0f1389abc1b8236 -0e814f26e479f00c74e3f25d21549e32 -0e827827cfc9e9e638317fe7b5aaaba8 -0e82c3d2aef14a5c71b0a68b79c3ab7e -0e86e26592010a4963c3bd4ce7b5765b -0e86fc1e36c1e3ca37d756d503723f01 -0e8f36a9ef75bbcf52ec481c7197aaff -0e8fb81dda7816cd550757ac6030791a -0e90bf9465ce433e985b730bec9c97b5 -0e978264cb4dddfb5ef97799c7d88794 -0e9890514ea4240e9a31c1f06a49a1ae -0e9f2d3bef56a7e97652f38f88590434 -0ea3c95d217f5fe59b2e6d35050fc8dd -0ea5496ab25914658456566eb7bf0a8a -0ea55695fbbb4646087f89d21db8cb2c -0ea7e347896552b78677994e87a07472 -0ea8a38a926d56ab3aa669a5298bda4b -0eab735823000c4d2398a098e5e0ee90 -0eabcae0b65161a8859d188d3df169c9 -0eb24e59eb5b9a513739f363d6b315e4 -0eb6a5f3b9529ca81c9dcca81c5cec66 -0ec48493b211080c8c8bcb4f3d381cd3 -0ecb041416c3159fb27ff3cf7871dc3f -0ed5edac05f7cf40fc7ebb71d8238eb9 -0ed84c68e73e52ed46d4a9b4628d3b54 -0edbbee4e101c0244f0244c235f8cb42 -0edce3e128e922faf43479a438f4c4be -0eeb3af04852f25165d5a66303e611e1 -0eef3663b2177162ef2a24da7a0b781c -0ef32cdcc2a9bb9cfb1c8f645f3e6abd -0ef4e6740b094d8fa2284d960bf09e03 -0ef798185ca1e784b1ef13ce3240531a -0efe9f0c4b5326699e1ba0eeafd82a2b -0effe69bdc61c3352c76643f4a2e6be9 -0f07edbc8001026d4418485cf7d30e0c -0f0a1925d6ddc2a70ad46b8468c3a141 -0f0eda8fbb72a5e561633cb7e6946475 -0f12a637f3050a3a29b9ccae66656fb8 -0f13bd262e7e30828766d7b35fa17f1a -0f17a4d379d0581352759f09e7d34e1e -0f1bc9b3c7c58b52553eb8955d2a0f44 -0f1dddcae4a97d15da0a02eef4b6e8fe -0f233507357d545890de3692eb102165 -0f252a96d0f7177e443d33efdb5e7087 -0f26277935ad7cc3d6042d98ef0eb44a -0f2f1246781ca625a3bf7b9dda7d1d26 -0f2fcc14d0ad6124fd975f62326334af -0f3067572f21f76a043e7b42e290c4ea -0f361974ab831b65df64cae2ce3f821f -0f3779f2856c445073dd69f6545b2c84 -0f37bd57cff6c5e47e60ff396f1df23f -0f39f0155f32c6b709c183e8e1819b12 -0f3a9bc84bb4313422c7af615ff74172 -0f3ade39d806872fae1b3365b7e1f8a7 -0f41742d11a9f0aa8bac715e305bdbd5 -0f480eda91f4f6e357e3f6d15148c913 -0f481fc9433874ead0a8f2cdf8e6e5d5 -0f4b710001cd502f52d27c524be8c893 -0f5408dab43ef6f1a65be96d7ddf1bf8 -0f56846ad3af9de20e09f7974aaba7e8 -0f5c0d76db59cf0a4cf9a9993035adfa -0f5cc9b0af3bcf3ab24ddf2ddbcf7848 -0f5d576b21631a5d9919064b76618d16 -0f5f914a4858c4d18d32b472d5ed7eeb -0f6a1f97874d7b6714264bfe9a51bd48 -0f7248e691f8401eec164e36f50f5837 -0f7290ab380f0913c1888b2501444ce2 -0f7747bf1619b13b1a3c94e8227d69c5 -0f78557fc4299c2d43a97f8471045297 -0f78e33fd3a5ec0961e241f99b251ade -0f7ccc8ec1b11ef3d1f3530688a42fe7 -0f7d3ba8f8c191707f88b1fc3e20b56c -0f7ed6fe0099ff4cff6f61d812738bb7 -0f7ffe43653f89fd68a9ec7de71e4eb3 -0f83e041134efc71987cb40ddaf0fc1a -0f843476ea15266b09a0238bc68b9049 -0f880699c627024a53c3a2d56c75103e -0f88c6a569ca9b2fcd374a30949dbe42 -0f89760e09f8ed98139daccd9b293daa -0f918869a491e81e5dc4c1d4c460eabe -0f923419ac70b1764fc5d4e0da7af20a -0f98f81b7de8b4f6f62bba5977dc7598 -0f99db2b7a5695cda1cdf86583a8b01f -0f9d6611d7f7a4a7a277c42082e87d4b -0fa1bc1c351de60954d17decac3345aa -0faccfc399bb3a63b9c1ebbf942e54f4 -0fb9977a3365f8d30eb716a9cb35f598 -0fc1b46e71d75f39ce35958050230fa6 -0fc2ce4e86a1c636980f874fecc00938 -0fc3d7053944ed12291a10deaae0eda4 -0fca7d178cfbd75a1936c47b83bc30b9 -0fcc66697dfe2e8050b0a934c1141092 -0fcc8069c0e8d9cc8f3a45cd3cc1c226 -0fcda1b2506043a5d951dacd64b9f45d -0fce418c799457d56321cc2beb7a8a99 -0fcfce2f4323f70877fb289c263226e3 -0fd42ea0b57287a4c6901c0a30a67646 -0fd78679937e17bc38fd166795ba483e -0fda526bee0d1ad217d53fba68a0adc0 -0fda627d40584896a1199a1d9b110947 -0fe09e0c2bf4e226aeb64ba273a8cdcd -0fe0a44d748de5df478988510b512aa6 -0fe4d0bdaf32af6813a356e7875d4d66 -0fea275788913661a1e0dcea7da1db31 -0fec9e6570ac779d7c8b8d0e0122d271 -0fed82f6f74bdf8384493db0c7671156 -0ff2c9c047011f191d5804f686331310 -0ff39cfc2db72a61d688bfa572a20367 -0ffb26d29a23cb71cf0ed64cb53698d4 -0ffba00099cda36d0a285254bb776f9d -0ffbed1cdda7c40e39acf2fa5fc68c3b -1001334b9e2eb355b7387fcf88d1f2ca -10078dbc57f60d59072eb36fd420ced0 -1007e372ddf407d34dcf297ea4c7368e -1009a0bb45d9959a0df5bcbbe99d21e0 -1009a7cd5e03024ad2921603d3233f86 -100a826c6ffc8644d03f279b1cda3bf6 -100be512e608ebb8a96861d003fd12d9 -100ca3579fe90422d14ba15f108d1a60 -1016cd94bde0643533c4013e7e2a675d -101b75e42223966aedbd8ee66cdae0c7 -101c04899b115b8ab2742705288288f1 -101f2b9cdf0f7c3ee1be2b8e6648e213 -10212d06b7c2c6011624bfbf68098ebc -1024353e8336c577621f9cb6b6ebf784 -1029abfdbf7baaf62b739377168507a6 -102e843e300a601258c16dde33e88fee -1032aba198dd5b86fc6aeb6a0c943fbb -1032b852300df9d58f0668f354dfca7c -10399a21ad01bcb6df26c4108839990f -103ea9048c56a5d0bf54965f6f29e20d -1055902638718674ba9d9e2b4b19e9e1 -105b6b4c4e7a2adf5e5692d7b507ae2c -105b9eae1f2cb059619190ecfa317a79 -105f49e991ce8ae8f2e8b8a6079c687b -106a2f7839c8bb01360fa078e5de1d2d -106b378fff1a4a9514e1e47be5d03eca -106f388acba3d1e22b743e261ef7012f -106f3a2d166f98b4027bdfc6b84b39e1 -107090efc23ea1a001ab7b011f3d1ba8 -107430dfd1879559175c85d102308c96 -107e824cdb7aecca3334aa8d0f37be3b -1083ae8361c36e482ac2972e91e94295 -108469397de416e5dd83d39c4b23b5dc -108696ddaddd82f47000a27306efd00f -1088550a31645ca76b6fc00e4a3db18a -108a6006f113f0ea3147ef5a51c77030 -108b9f76aec3820684b68fb0011b0226 -1092448650d608ff173afc701d482c31 -1092b158485fca75f40b4f6a14142c1c -10953298b4c50836fc6044d036c1bfa1 -1095854de6bbc5460773c114ecbb4344 -1096f4480b05634699c1b8ead3505bb6 -10a26c8c6efcdb0356d7b07d25852e71 -10a283992becd1b0f2d18bbc9862f664 -10a937905374edf836d159c79f3a8a06 -10a93be5e8225b84a67a0f92f5c6fb6f -10b1ecf37a5066c1ef27159fcad9f875 -10b4a01c45c44e148a8c03d7cf03f456 -10ba518561fa25ba99023681bf6853e6 -10bad937f7c4a608823fb4b02763c647 -10bb56bf88d031b2f38ec0bef5ef0298 -10cd1502c2de18c288048fb46d36f8a8 -10e09b01c615748b7a696dce363119cb -10e3a9c5495d60d4b32378bf38d087e5 -10e5aecaa113e019450876b6aa37ba56 -10e6541e72f84aaa3458e5b1f4c15814 -10e91ab3787ab489e3a2d4d9642a53bd -10f94cd5c8a9f942173b3e8091ef0410 -10fc5488af8bfbd440f04af11f1bccca -10fce104ebacb8aabbb9b18925899033 -10fd1043393f347d937844e4f7e0b296 -10fded255f199f1a3b9dc860d6ed88dd -11030ef394f437d052bc6b4c153f7565 -11057a4ab71cd7caaed54383f9866e06 -1109a6e6b79d2a6d40f926a29ec0bc48 -110d6867f3f9e443b2bc391836196266 -110ea506c6dc1ab27b3c1cd9081f2ae5 -111bcb1f9843aa7b90051c9cc418b12d -111f1aa2235cdac22b83fef964a82a3d -1121ba5d884fdfb8d2b49f06ee9faac6 -1122b31cbc135f2bf7b61146b5cb0e83 -1124043baa1c4cef2046522753c0bf6c -1124c4345681d53b3cc51bd9dea25a48 -112601f91d85a7479e67c042281dca2b -112e88083a10cb8fa89d714d57c736c1 -112f95975f05e195ee79a29b3244ce95 -1134406f36ec7a7b08b2fe8bf9398cc9 -1134a242aa26179605eecd38b32feed9 -11383a4f6b07012c43d81df60fe31cff -113b5c04afb30e6079985e0189a100fb -113b8b6e261f8d3a6569b0cb3645bd57 -114395d2576aa3cd1714e3ea168a27bb -1143cc566294ae910d1c4c9e7e7fc5c6 -1145886091b199a2837bbb67cb3c9225 -1148fab573ff764eca7971a0516474c7 -1149ee21885bfcb913177637c23fbdb4 -114b3af0528fa2d9798063db99c02b4a -114b5390a2b31a5a486ea4883f6172f8 -11511355e57e98b25f65a96c2f837553 -11517d554441e7e5281e55602406bcdd -115d3bcbab3ad1c10b4e0695b85d3ba7 -115d89c1d28e04ee5e8ce599c6c8a52f -115dbb233b7af4f1ed44d72b3fa72468 -116277ae4017505ba017ee9e38a48e83 -116474c35b53b843c971dc89d4fdabcb -1166dbbadfe2bc6c0ca60028b4ce5d5c -1166f356caf638c8f2dbb3ba21300028 -116eb78aba611532e5c824d89dcbf5f9 -11728d48183e7127799336b4d08dc82e -11770499b439f599a042ac5289057fff -1177ee8d3cf58151f26855decb87448a -117c7121c9d179c81727835daf0469da -11805af40db11d4d42756fa8fceb0f34 -11812a7624dfb83f7d6f8e58b949d12e -11825f0c778767c4edac04da84a55045 -1183d806b73ab05d71bf0f1e36d61b57 -11842f07fc47bfff57cddb43cfe64335 -1188da3f7ffc1a152853a55453a37762 -118ff77f8042b21024c88bac8b9f0890 -119308ec8c7b731f8746d1790a05212a -119617e80751cd2917a931e71ad96421 -1197e4d7a711f01e55df77dba9c36099 -119a006777e3c8c423a5d8a67f24ccf1 -11a443775a46281bb89b59d5b0fa77b3 -11a528946249869507cfcc3f5db67b14 -11a689275828d6bba1a0a8579959be5f -11a68d34772e3bed0aa3026ed5fa84ec -11acffd459726f72aa9c061af7adcd85 -11b1fa687db65526bfbd1648bd36abe1 -11b2cd116187674d06a4af2a2dd3f3ab -11b4f0e06ad027fe519be0a66e8e2f1c -11b571cc9b10ed332ce8a38b90336205 -11b5f1c0663fa6b9df6e4520110b6356 -11b76eae548ed79cede3592c6bd50c30 -11bfaa40f390a20c5b1d0b2a08a95726 -11c00d5d71bc4b6512d487281059e5b0 -11c258da2996684bb06c6d79877a8550 -11c479ecb5642ac01ce3eef75916adf7 -11c489bc06dffc7e526233c0f7b5e867 -11c72cc08f344d75d7a8cb3893e92dfb -11cacead1bdda08b07b63155f67398c5 -11cb7dff00933769566f8a6767888341 -11cf970fd27bdf42cfe379fe06bd55d6 -11cfe51ecdd9f1be9ecaeef6a39d4c84 -11d2012c1028a12246946893cf808587 -11d47070343043e1abf20a8fa2c73b30 -11d7ab551796a9923c2fae5199584b9e -11d9ed1d87bb21957e841bbcb0accc52 -11db55c2f325813feea16af3e6a433ea -11db6ae6137ed18f695cd6a9a333b2b3 -11dc9f9743bfb9eae07f69b953b26426 -11deac2627b0bf1e7c81c4f026464dea -11df5de877a48379b0f11611dc571e42 -11f21251e5fd75ef792f1e25cebe326a -11f41d781c031cfa9d8728f1b93e037e -11f7bcb4f885dbee02e53d17924de9dd -11f80bb140dbf38b6dcf63574aa0eda6 -11f8bc85e09c1bd728dc865287a6da95 -12079d5f22e00c162bd2d93ed2d15e1e -120aeefa6239fcaee9dad5426b8a8a5f -120bdb07b34c6597742c090cabe63d8f -120d703f59bf77e5d5c35dfc0056e9fd -120f301d851fb26862a35cf3f8576e31 -120f7c5cd75d7e016f18efa7f3d86b38 -1213c1e4e9df3ee5d13ca7eeac7eb5fe -12150c1eaf6e3515f6e687c8ec87722a -121bfd89b05e2666056d1f165ad746be -121dca1c9492cd6bdce6ccc584926f71 -1225fa3886f0e898805286d4b89f8a87 -122933268ca8586e8ba98a20785c611e -122b0145fb285bbd504d84caaca94733 -1235df8cc25dffb92a9dbfb8c90ee4bd -1236ad99cb04273933925ae67abd9186 -12396158edd29d2337bea0392c44c3b5 -123a21f254a8908de84adf24705dbe50 -123d30eac08be2a95710fc7768369b98 -124182d18aebb363e1d164b27e831a76 -12426cc3651847f26fd66e5b98cfd42a -1247402305775be71cd7e2fba51eb65b -1248e9750b8bf2602e1681673ebe1ba6 -124ba142f0d94f8281e865a09e35582b -124c022d0e44357850451d079749f347 -124c7e585d6330027db1be6ea9785c61 -124ca6382971ad4ef158476254ea533d -124ee565cacc6072aa39e4623d6f9964 -12533b0306e98a56fe27d419cbedb981 -1255d8caeb036a05682afc4129591b15 -125f9ee0547f854764f2351664b07638 -12670c8d7b1608f535779a0410b6f135 -12670d69c78ff47edebd42edbfd7eb76 -126c002383661f51ffca99fd3740d25c -126cb41e3cae5b0bb0b149459ecb54aa -127036e6e6e14221eb7ab7f10381d3f1 -127474dca128768f867589b714cf387c -127707e65caa351159a4e22cea3726fd -1279b352af63873bdd989b707fd18dee -1279da5bc23bb63e4b4206f64279df75 -1281f131fb36462564d49b92e36ed593 -12897b6a16ca2f9fa8374da6ddf08b1b -128b9b562ee2883ba9bba2de9f427a6d -128c80ca33d86e8a3e1b58a432770190 -129126b86430db8e0a39f853b0cce7d1 -12912bf30c7ed273f553ff3b01495b57 -12970c454b98ce8495e23cc8265e40f8 -1297c88edd5a7496e750ea1db855e519 -129864aa15d10feebb69a4aa4ef9d917 -129a5cddb99673767fad864235ad2695 -12a5c7cd12ed2529e5314f56f527d5bd -12a77b697957ea2c133a31ce19dcb63b -12a845487cd2d20ce3b95a5c8e6070b3 -12a849ad5efd65d0e5643fd59fb79d2e -12ab366a7db18fc00b7a2bf9e3686b69 -12acf2248e52f75a5f3ff1460af2b1be -12ad0637c4f462b13cd628562c569538 -12b0f4c78d910b6ad53e290feff3d2b7 -12b17a534fd5b337c26573901068b39c -12b43332a88bab31139e6705b242cb01 -12ba035390e11882b70764044a2da62d -12c565140bd76403be226799a236d9a0 -12ca321f75a78cd6653318e619dad7e5 -12ca54a1f491428df7a96adc453128db -12ccfc715998cddc886208e872378ec8 -12d1d3fe6c5e6ff999140432f0c4f02c -12d3009a122933e803b202295a141538 -12d5ffbdcfc69f7764a16d6440470305 -12d7771f83089bbd393fcdc132930b9c -12dad958745f644afd92ad8b74583f65 -12dde9d976637b4c76c95d27d375bd79 -12dec83881b62167b889961af549b97d -12e01fee72de518f1c153709035f276d -12e14838734a6138fad1f1b41dedc7ac -12e2a374c368ce27e9dc81995f02d511 -12ea468d0291ab4835a063eb29c77615 -12eed2d2bcdb166adecffde8726231b8 -12ef1bed8e44d1383884cebc5f7a31f6 -12f3033d00cad371551a0bffd9bf7c8d -12f8f084b3be4ef72978c51d4efecbb1 -130001313ced605c946ae0e14a33e3fa -13015b3824c4e25d861b9d8051da695b -130844edec8e02b593a8bb0b5689a251 -130bdabb875443ffe9aaeb37db150313 -130de975ad0610143c9d1bc906127a03 -130deb29cfaa3c15866421f464ee119e -13117c9af3c45e2b97174ba6b5e8f558 -1316f269f6a0e885eece92c8df9453a1 -1317a6e3f2942772cc82f9cfc9ba7432 -131881688c24aeb84662f1bf4ffa6f34 -131a297d064bde219efaa2690c8ae360 -131d2d5e04a4dafa5f032ac46b8260b0 -13201c16878e3ef9a97eea2e859e05f1 -1322c8e97f4a68d957c3513d5d57769e -1323ada56bb235fdb3043c8bebcc4d9a -132582e45cf266570aacf9311900a13c -1326d9fe4d417028cf8a6524ec73698c -132c568362db2f362e2f2b86b5e89de6 -132dd5db5a9e3cc182cafcfd50cd4c61 -13302ab045e1caead15bf7b07ad74c89 -1333b1aca22be3e0c03a6d25326a69c4 -133cbfd181f450dadaca2b31666bf58d -13403f4b12366b0d5b74a2b046dc279f -1342bdd0541e6e2d41aea75df0e6222f -13440b79a087752161169627168b0cfd -1345fa17f0165025979df64e2c6ee07a -134eafee6b6cb36be6fb856c34e2393b -134f971d504b1fd1cdca10c1f2f8423a -13512f76be8c46b6343ba6601be0eb40 -13522e7866747b5c8ce9ac7b3c3aa99d -1355227cd12fe6aef505f9fb5a03f8af -135573b557221ecdf1a9d893ff4ad83a -1355cf7ca59ef43cd1e90495b99c8368 -135ae5d4d6b3b2a34f86478862a6878b -135c054662589af6e3ff0eab237987de -135c92ae0a7933eb24f685d4f4ffe6d2 -136416f89dc644c844558dda59162007 -136508e272d0826799191dadda8bea61 -136625f7aa70993a5056eb54a2a4e942 -1368b418d08d979fd0ad4bf82ffbe2ff -13725042c309c9d7a8a9bf138399d66e -1372d10a53d0dd1f60ee2adf020f337a -13733a954b5ea528e59f973b9099f44b -137a3ecf7c08944dc0aefed82ae5a2ad -13833267b90d16a7b73cfb69a6f9e25f -1386812ff11cd93a789643b7f5cac231 -1389ac1cc5537693689c1168d771b917 -138a802f4751610beea1d0b3229e5588 -138aacccebd1c79425f7d682597add80 -138b6564e499ca19dde5d7545033b2b4 -138b803ce1ebe0d658924024369d65de -138e1c0cc75055c63157875359398d67 -13964b51aaf069441273c116b7eadbd1 -1396e431e20880410b389c5ab127840d -1399c930687a8335b2885f0f558a9719 -139a1e2049108ab19e192ac74a240fb5 -139b47e93f03e749e10a20586b77838c -139b8eeb57d114d4354c4355b4915479 -13a1cd670d87311c4f471954781074b5 -13b530aa7222ed177cf134b5f7d4d8fd -13b73144d75641b54fed7a8d1b668a1c -13b835f43e880515fe4d00d82ec4d879 -13b906fc74c9b65e1ddc92dc8cd4745b -13c308a0c10631a72dea575208930781 -13c6dcc3911fd9e80b78cc118ad6a855 -13ca63f638ffbeda82970d4c2895fc70 -13cc6e999717e8c0e5fc8def220bec54 -13d26abbcd4c895bf2f7b4a2e4be4389 -13d7626ce7ff32837fdc423f7b6b90c6 -13d89593a361ecbb484b2b8ad2cf9912 -13dabd35186377055b95743db2495a31 -13e2e475f3e49efe6a6b88e927fe3428 -13e344650d5cfb4ab99448a215427e95 -13e966d32d34630fd997294846626345 -13f26e38b8d28e7208294ddb0b76eb1c -13f5921de3c9709de899f2b7226094fd -13faaa1e38fa3db99812e4a8f2c01afb -13fad78df24e2a5709adde62e403e01d -13fc0e6c8f5a25bbc13e328dd891dd9a -1401e6efcb10da2271e94212f81719f7 -140265066c1cb7a2408b0251c1292ef3 -140369d27e96feff02891f6abe9522ee -14049e0a00db7e18cf5d7d5d44442ce6 -14051312ab4f8d09996149d3b3269f28 -14109687a006f0ebaf143d451d5cfd91 -1411017bd6e69eba5f4b44c7d705a1ef -1412a50b30c93d7d4a9bb01d2fb4d4ad -1413a48c20e9973d75ed28e20d4f5d01 -14150e931084b23207ee45a7995a0aae -14174efc8542445566692e3cdecd144c -14190622eb28c4e0481ebb8b4ab3750a -1419c14bd28bdc9066150811791db025 -141a56d68009da892599b3ba73baa816 -141f9d78c9003576ccf090c3ff761a22 -14206f54883a13c34e5b9ce4b7a54713 -14207bacaad2b9bf60df9116b1ec2ba7 -1426511b083e72177477f0fd6fcfb99c -14274b465dc0c8e25e4eb4005679b59d -142996789aba2bcd603a3a67f16b9ba7 -143592cb82c7e8aa8a485bb9e45daf8b -1437d7f6d43002bf9a563e48a2b028ec -14392b19c5782e164922b22bca8808a4 -14395dd8cc6a4fedc90c448fcec6055d -143adf4bc02ddb5b2b61b7d9d2564479 -143c8b50a7fba0927f72a0e4986b6dc7 -143e26ff9c03595f991e1feeb56048a7 -14421442d970bc8e8358bb20b614017d -1443c4ce7292bba9367d19de4fdd929d -14467ba6dfd0953ea3ec446774115177 -144697347d9759fbc7acd9b19f3d6543 -144c9d148333bfa751279d3834828496 -144cca949a0e0b1e58877a53cdf8ac1f -144da64e86acc69372021c8575560bca -144f9eca5598e6393999d827ba074ec1 -1455a351ba9405fe99814a0bc38358b2 -145c2c96cb11b838fedbb7dc66d0dcbd -1462a5ba78af4f89da2d49b56b6a083d -146adba5da0d56ef0ed259b84cf3a2c1 -146b45212f4aff1755933ff730812f90 -146fc901d045eeab3a08b79ac646ed65 -1474c7a1db0c97f70581ae4123421c2c -147655d048a289c52998562d223de492 -1477c29b26d2ed381687c9fed9f98d28 -147855050d46e97321015942fddb61f9 -147c1018686542faee057649a462d6f2 -147c9d7a91b0258a01258488e1862d33 -147f437dded2dbc2dc458cfa5e17b21c -147ffe6a6749cfb559edbb17a4c2ffae -148093f9b92e7e8cd560dbc0f10165ab -1481c196c9bb2243f158298fc38a8e3e -14826e1b8488906c054548b5f180eefd -14838e15c6709927853da3d178bf59e4 -1484778577d8cb615fc837cf1907ccb5 -1489a125597040774edf209a82405a75 -148b810ff6dda1d59375c3996ab13a8b -148fe26dda41d088a90fe27d1c98cdf3 -1490ef903406dd9701d9b6a5d8024158 -1492053a57056db6f8f9a6ad25db7b05 -1492e8a200b22a6bb78411f6e537b69b -1493a9f1fa10f7547c4b9ebc1d3aad18 -149ca0fcb08a0dae0b2c292a30252952 -149f71c4aae331cf892da478debf26f5 -14a64cb438e64f7d03d384a70d398e38 -14a80a0eb327049a5a7036d28e8ac553 -14a87dfe76db97843adbdb0aec7486ab -14a8c9fa5d1ffaaeb32201982081854c -14a8ead15bf9cd19b208caf56e858b09 -14ab8da5578f3fac2a59cdddec90c4d1 -14adbce250383c02af7340566843439e -14affbf151c62afc246af74cc0f8375d -14b44fca2a57d193d21315d39f537970 -14b53e202d452936540e488280aa4b2c -14b8ef1285611e75ac0595dafd927c29 -14ba207910b2f309f318a54f7f41a9f8 -14baced4c2cc51a5ab4012e4df3814fa -14bf497e34226bfec7a9b54d4961c877 -14c380a2086e1da170811f1dd1d1e25c -14c452c01132a1478f602361a3f977fb -14c8788a59accfc2f4f766c3bc51e1d2 -14cae6dbbd22d3e399b2266d098401cb -14ce831cf88186044ea57618c830d0a1 -14d1a61a34e965973ef2c4c840dc9ac3 -14d5192291b5f2dad8cf5f9a9061f369 -14da0bcc720e18333647503872a68a5c -14f8b6ba8f5e01b7e86114cd1e7b3cee -14fed61d88715649b0c20b250384191d -150568d2186fb1d161c2fa2be9a7c95e -15075f13a7f9f9392101e556df43028f -15085cfc265776cb48b0e0e00fb644c7 -15087594c3b0e52c8d54f5304cc7ec3f -150b67245312274c887e1dc80f634121 -15126b7c1b952a1179cbac0b010da86f -151658e2f0a7f12129ac313bbc664b75 -151810620f57e96fd73b48c529a3b6b1 -151e2bc47656f3593f32864fb2b367c4 -1520b243771693574535def2cb4438d4 -15253653cfe5d656ec44cd41525c5c09 -15274f717521947a43482f703cfa661a -1531809569a06e06bbcea67a491e936a -153185b470ccf434780f90d6dfd60811 -15339e4028ac0d116c2c29af8987717c -1537e4ad6d713f2d9d8ab58a2d5f47f3 -1537ff6410a9df80c6c0faf1ecb3df76 -15383c2cf2fad56c3f4365761c92e9de -153cff860211b3e48c595fc1ef3cf78d -1541b37529db87ae97ae35d6f3230d51 -1543b3efb4c711a8dae734331ab34c9b -154646b5205652caf07633e2c433684f -15479146997bd55a2329d9bd510d1769 -1547ee6924920ae7dc03573d95c84a63 -154aa7b39beca044db4643d55913f1d3 -1550f4f78825b8bdb13e995cb993f069 -15522aa0101956fd105be1c5a3dc8a19 -15543cc1de2b7aab9203bf3d7a98869f -1555170e7aedaff773f665f13f3b533a -1557728891d1a53238fcecbc63b1f18b -1559d88782abcb0d4785d0fab00a5dc8 -1560b3940ccff4d7ae0559e22e8d2200 -156370c58c2d8bce4f3f9046001f3442 -156457e770c85542cdaefd61733999ca -156685d08c9e52d18574da5e2e4e75c9 -156da521cc8d497709dc332a3bce058e -15718994e64dffe7918968bd31e41c90 -1571d27251ff76e8753d6edae860923c -1572b34c6d902fdf50aceeb444c104ed -15771e5d104294424d7def0206c4a076 -157e1a5e77058749a0bdbddb7e3e30ce -157e9d771ce15ca22d89e704a7c5a198 -157f7dee58295642e4bac3f91784d41b -1586ef2d9ce8a60c1239e8267dd4792a -15888fbf65a9f1b116ffe2ad88951a2c -158aeb242136ece5e0870b45c49c7510 -1596cf0f7c7db667cd240e03f3a4263b -159f45a5bc0d401d55c7b00977edf1f9 -15a4a4a59916d0661722278ef64f9f39 -15a8bae01319ac1a4ea7bf89ac892bea -15a8d74ce500df5615740d2a3e6365cc -15aee3dabd3ca1e03c8d7f7687eb4e53 -15b918f278e44fb089c6eb443f9214d4 -15bded93b7d481c8529009e62f43a3ef -15bfe948e6f6d2458b372510fd3adadb -15c18eb03fc9a648fd9762dffba372e5 -15c4a16e48fdf0aaf6c9a2bc5c84ea8f -15c9a3737668b270fe74dfca822d10f4 -15ce2158c0dbe7ba8dec3f51c535d4a0 -15d3cdf1c738824eb056d817ee43b5da -15d438fa351dd07309b8e8a6a9efcbd3 -15d56e13ef3c975e3b0e80859490d761 -15eb32ab38693571438d0b3388e8c0af -15eb731fedc0462c6ef3d705099afd2f -15f3ff26f9bc8e910959adf9c06741c9 -15f71724344cea1d1bb9a64130508ad3 -15fd6bdfb9abe078ef1838fef53c8056 -15ff1106c712f9a2213bbfe273f18f8c -15ffb2ab3af03e027dcb98f42e93471a -1604abd91db4e383bd2a5b0ce3ca55d4 -160547f3a18cb7cc6f2c0fba19dfb892 -1606ad98436932aed495246b65829aa8 -16073617d1099f5ebc28584a2cbcdfe1 -160efdc4011e235b7240fe4a7405a9b0 -1610a90ad75f9364e26ff203167d1a49 -16173f15f06e07ca3756aa418215004b -161b8ba4b43c23af6a4c616dc441806e -161d059363ad39a2e6b65bee08b35aa0 -161da74169b57166a7201a491e341de4 -16241a27450910caff53eb9201b253be -1626d84a2e833f3ce89078219a8350b6 -162e333bf9bc0a7be18fa3a1bdae4a79 -162efaedfbeb5eed177beeee401b0f96 -16346e70163a293a2ab03f4f9a6981fd -1637bc504dc5d9b78990069f07403f72 -1638dcad3d17e8e5fd39fd7f14a8c2ce -163c5e48acc01167233fdc11e88f24fd -163d5b27932a3a71e85d1d5fb5b4cc96 -163e98594065855616387d40d5f57328 -164402dddd32b886e4dc167c0d73a379 -16488988593d30a9b7ed454d913521e9 -164b90dc96bfa01e3e62c05ecc957896 -164d19eef54fc4ebe43c13dcef481eb9 -1652309be7e2a093125b0858551ae7e4 -1657595806a3080e6610ec81a4e26aa0 -166013f3c36500891ea8a5790d54f70a -1663d3b8080be99a6c7b6370499c42ec -1665e21017e03832a2d54c1c6dc3e7b3 -166869190e5e71cdbbf44de442a5b7ca -166b9fb4135668f87b88e7a628d72afd -16796bbfecaa7ecabddac7dfc4ca571a -167b0ba18e9e4b6315b61a45a90aaa40 -1680cc81cd05398808f935d4fa92a769 -168405070e66394fabf683df83b5142d -16855196834b319e65632cdaf51b2514 -1685d2779595a653e201689e4e275289 -1686ad1195caa4eb1c9de4a5f15393d9 -168854535092a71089bf6e6b756aef80 -168b87963c4cfea3366ccf2f1c29d916 -168de987686731aa5e286c195773d997 -16926ae2808b7641d15bea6dcbe4e511 -1694903a3f4bddb271b32f939c7397ec -1694e0dce621f88a1015428d4b2c149d -1696ddd4b7a116f411ae6ea8164a4fe1 -169865876f5b2c051756ffec35ae3f34 -169cef7379e4f0b3ff56455b4e1ebd3f -169ddee39ae227051c28ebdefdd64ae2 -16a21566b7500403cba299c5bc1777a0 -16a257cae989eb5ca11b381bb3457bad -16a9e250bd21588716e040b2bea9a0b8 -16ac29a06634529cf837fe35cea6a2c9 -16ad0bbee41a266472301e9c24a159ca -16ad709f8ee21887d561d8f28771d7a9 -16b411b6ac66e08fab2e802133ae5b62 -16b4f648fbb5a77de1e656a274a0f5c5 -16b9c3086c338f08bad4d6d02eb98376 -16ba117d6e0ca109e47994522eb3d950 -16ba73e2438afaa1126c4674722adf6e -16bc3ad7a3a9907a224d155b8c974035 -16bc877874ed8caf02f7dd406692bc46 -16bd1986e5d3be72916faaf1af577934 -16be21e2705b79fa85c87bdc0927e81b -16c51e5074d2fe489be90920ee8fefb0 -16cce6b5eaa101e6c8dfe46ee2366a57 -16cf18cfc4100368395763141c332493 -16d098f6cadd7771099e5da5eaf623a8 -16de208fd4017270da4d8bfac06d4ec9 -16e49c6dc0d4f40bd462ca8d1f9b3e00 -16ec3bc5bb030defdc3cfe85fbb1277d -16f1dda6837fc0057318d2a171a6da56 -16fdb8e82fa2777b4fcd52ad037fd17e -1703d79fcf1e16958d69f92b4e9e0fa1 -1711b09e93342e87c41d02e557a5b428 -17128ed2035a5c2e5b543b8ec2bfc277 -17131a6929fe2541760f5f5e7d69e876 -1714898bf5ac014f058f086f84c50c5e -1719dbde647e658d4f7ea3b2f35fa41d -171e6d53ea4a0803117698fec539c5a7 -1720713886ff4ba7fa04c1a97def968a -172450b658ebf2778849f70a42994298 -17253b2435d80067c22aef817347b69a -1725650f77a713f860766ba22c15d916 -17286a6c99a22c184e10194d283d47e0 -172ac5bb08d800bc5a8644fa1324f900 -172bb2f2bf3766809f3d5e89d7ef73ae -172e88e363438471be93b2bf996272c6 -172ee161b2d2fdd2f8a55ad960e573d7 -173969db55601854c9a01d48087c8dd4 -1742156f90b313f703947f1564b4b200 -17421db1da34bb7af83d712c1cce34c5 -1742f826ae6ae0350548e84a8fa9ce91 -174724c1ee5887034883dd810a9c8bc0 -174971b5571b6b2571a3d7345f2fb942 -174acbea51252f15dec15d424ca83ff3 -175b421ff245894f2ff54cacd138d706 -175f4aecda54352e06cac75602e06a7f -17615f40afd0291bd471fd7f066519fb -1762f6dfb5a659145c65238406d5cdbc -176ee18435d331fe97557083f9cce8c2 -1770da6bd55772a21bd505bcf454d4df -1777bdf38316f23368152c6e3f57f4c5 -177c24702979be311fd74c1e2b373c18 -177dcf5a1c8a5c36e762609cbe8142c9 -177f24f33529cca0708befea74693dc9 -17803f1148ea883641b9c4e96f4cfcae -178076f0cd2668c1a19e460fd1bb2453 -178465e6e5c84972fa7133cd08f45d42 -1787ee1fb4afd597dcfcce3d549bde31 -178aaa66599d744f416099a5dff36bb8 -178c4a76eb34640b1cc53c9d3eb5fc44 -178e28e5d80ade2ffc49afd48c4600f4 -17926b65c00045b63bf2a8dcdb9593f9 -1794e553abc8ff2149cf662322039ddc -179e091ca936927772463eb22bc8df8b -17a0c3eb7f76567fa69c2b1a093a597a -17a1245c0efbc2567e8c108180658000 -17a63ce5addd37f85c9a40dc4ccdfabf -17a8d978474fda69b1e4ea99029cefbc -17ac9c171d92848138b92eab39721394 -17af9e343407957bf76797cd00bc1699 -17b01e3f8e23a7e3814152489a87c3cc -17b2d4e7e932c544bcbe80980550954c -17b5e28019a71c44ecd70c5be29503d4 -17b6aab771131cb7e07164b5453e83cd -17b85ede3124dccea9fa36e476d18c07 -17bca57d97dc94098bffeacd26ffb80d -17d318b080d599032f715ff9b4fb091f -17d7a26bdbc61ab493da49ed00c472b0 -17dc26c198850ec28c6aaa5d11dd4f95 -17e3a2221ae7c18331b8ebf5b9f94979 -17efdb11ab0d4dd6886d660fd9c37d43 -1800747e3c226f99e6fe836f8b879fcf -18020922fd166174dac23b3e2db45b9d -1803288c0ca7c15c046cf6e4dfd34ef1 -1804af9ef5724726509c35733afe00f2 -1805599f3644e85eb61f5088cb5bde64 -180a376e49c3cea3c610f2585c6369af -180a95ef7f049511f3051fb7d72c8c0e -180dcfda05a3982f933d7094e5726e6f -18106a7102d0891150702c7dff9c5431 -18128017b2ddf61f47bc959c9e508269 -1819764739508b13143f145caec68b54 -181a1d279bd5b6a967f855c1c23b1aac -181a7d7ed8b782bf4215feacf382656c -181d72902b0583970801f58c0b48ef0a -181ec495bc6757feb53d42ad0a4996e7 -1823896127491d5329dc5cba7f7748cd -182428c36f3a3d3a7d45b2f6a5cc831f -182943810271a8b31bc054e81842a958 -182bb69e4002aa8137c66e0a826e0345 -182c1a1ee7d51988209fd100ea4e6c31 -182dc5602b73334ba14c5531fd3fef17 -18312801be5f072f1229abec0aa6c3f7 -18358fdb5ac600b621c407eba43fbb7b -183b584c4366fbae04e264227db8d57e -184bfdd3aa4119a2016693d6e2049827 -184e540f8c37c40e92706168f4b72b5a -185354d0bba5787ed4261b7e1530d254 -18536a5ce7522bbed131daf75e16896f -18581917b462074d206633aa714b4c9d -185a343ae6b1f0003af09dee200cb70a -185ebc9f05dc1e452349634ce67bbf0a -185f96bc26dd88494593800856f946fe -186092b63126e09ba178fa04cb9adfb5 -1860f005abe3fe47af96ee961221baf5 -186928c45b95b1c7269ecfa7121e9f61 -1869de645f1255561a6752ef05bf0d86 -186d0979c5213ebe9d19fcf539959db9 -186ef2a0e1f1eda4d75c733d3e274539 -1870cdf6aaafc7a63b5a672fb78124f5 -1877417a3f887d1df90854c7d81a8100 -187a15a1e1786e07b1923354eb0ba960 -187c9b0cdf2c6759b913903186767607 -18816d625e5ca8913ec24bcb2928f983 -18848c147e8fe69fe90b0b087235f8c3 -188c59a02e4e8ca7408594fecccfd10d -1890ca9024ecf1e921e6fc37a41ea2f2 -18940b4431c066231884eadfc7c7060a -1896c58883bea94fd477654286c1150c -1897586300d7aa4fb06850e982e96bce -189834b3a461cf73c36c88da18cb4225 -189abb518f993774be46bbf26dc1f61e -189eea0e4cabb8d97eac2dbea44147ae -18a31b08ccc214e0476f2833a7e529cd -18a4bb64a36a5e82c5ed9521a40fbe95 -18a7544ba1d1a93ba065fd14d13b7728 -18ab15a9d35ae0dce67d2acc90ce298f -18afd2cc721bbe772c84b2650cbf9400 -18b7497ff39a431199845234b77b6413 -18bece8ac6fd2786e2835589bdaa10f4 -18c01979395fd21aaa1afd30b1fecaf6 -18c0cc78c51c63b2c74241c584d19aad -18c15b88016c85c8dc7802985a9ec5f3 -18c4f3b8ba7c6a0f2b7fe4a3f25da00f -18c5413cb8158c421e6029c0f7f79111 -18cb8cbd24b6f13cdc235b29aad97921 -18cbd58832f45edd02aeb8927ab3a842 -18ce1eb58f8c3c8c1082f8bbb5a27f87 -18d2e7fbc8a5f6cf08f8d45a47cc1574 -18d369c302548fa21e9ae37700a9c88a -18da3dcfaa7db1074a36859346069f2b -18e2a0cf77667d81beb0b1e002f36255 -18e3b6aa69888beb44c18aad1623a431 -18e6e01ab534218902d91940ed943cae -18e9f101289de43de9068bc89e758686 -18ec76e2e4678f6e10acb8d51d72b0cc -18ecdedf836c0d37f33c169915c1384f -18f2da1f5ca2e02e73913c6a8c384607 -18f9781ea2eb4b4f1055123caa4d62f5 -18fd98ebc18735020bd79f8efc38fc2b -19017e667bddf9d2f2091dc0afd29d90 -1902b2464d9b891d6768073f9d9d834a -190360c42290149ba02180faf16a375f -190438e79f64c4dd643d48dc0400225c -19089039f06140c106b099e80294f132 -190dfa9089d275ab70017f487945340e -19116ba3ee05134cf582fa7bf33541a5 -1912d9392f3bbe63a771a8f4c31c6896 -191876a58129c9483e17519d19c3d758 -191d5b4806849276a244124279dd157f -192c99e05318b118af317d6d1253aeef -192ccd2bf255fdbc832fc964ca0c396e -193dc416c4e5b5fa6a8116ed7c86f681 -194272625a93c44d07899561222e41ad -194b51a7c2149b96ad30444e1bfcbaca -194bff2696b1e487ded2fbf192f47dc8 -194cf236c5fa6c6d71346ba98ef2b797 -195364193a58733875928c6bf1994e8a -1954aae4382191b5783956f7cd4cda71 -195955905f131ee05720993b10f494f0 -195ff3a9f80f344cb50eee0fbb32924a -1961596797a7bf8a06ffc88875d3adee -196bc249e0d94be2029e2ffd4cfecbfd -196e078018412bed69b9233ca6cb0db0 -19730832bc7647f9e96cf1df46fae717 -1974494ba4e1c76ca572743a61c84a82 -1975bf225fc2a2b435ebec26347f37a0 -19772a3101a1a5bd19d0d1ae4856cedc -19789b0dff21bbc57dd84c948d45bc2a -197a850b9a1237e27432a9312809f0fc -1980abe8e56e6e65de4dd894b720f9a7 -19845cab3fc6f8f2d7db6cbc7c443de9 -1988a7b0a25e2475468a5059788b3282 -19902069923ef3e93b5ad54535ecbef4 -199228d6924d7cb42dbdc0d4c6acd8a2 -19936431642e42e2fcf2b0115415af4c -1996981aa266e4d6fbd312ac0708141c -199766bab40af9d57c470cf093b3aa0c -1998846cc14a849f802ec3183093ca76 -199a65e022dcfe3a3cadc35553eda8bb -199bfc97e3d6b1f2dbf5e18f94b06945 -199cb92d0a1fe07fe7df61f68c2f578d -19a0c21daa8f2a26a2cd3bd3e1bc2b84 -19a377539be0e8b60fb5791be5985121 -19a5790851ffad796cbdb8199fc519f6 -19aa3ecc2c1aa7201e22a5b2efb7dd4c -19acbad2bd9efddfa50c96cc9fc6a1ac -19acc4e18058f122ec9b7633986a0237 -19ad958f665495f2850e2c99fa3e870d -19ae9c86cdc9bb8430cd98b0fc84b862 -19af08b414b7225bf5784ff3477bfa67 -19b21f463760dba5a136b0a77af3854a -19b51c66e1e85deb496c734ec253671e -19b5b23eb63ce42f0ef0be18e54f08a5 -19ba5bc118a0293ec3b3293c7c5b1614 -19bb48ead70293f636e3cbc733cfff36 -19bb7c8748b4c21e13d5c6c7e98ba2e3 -19c1207538456454633c4c909befe3c8 -19c4be8777128cbc6aa3bcaad2fe2cc1 -19c5423f4c97ed28e2336fbc90d426ed -19c5a36397a7876c3fc289293cd63aaf -19c5b0ff31d7713b55c7ecc39411acd3 -19d9ba29ab67d5bae320ba050a79f91c -19e2bebe5e05d67c34fab2f752f94229 -19e64d245dc96f25b303ebac3ad023af -19e84240c720bce43bf237d16309a76f -19eb0c94900cc4cb6c63dccbee085955 -19ebf036721421c9a70822880555136f -19ed64a5796c54afb062e4cc7d423257 -19f14acfd6d870395238b2a326347171 -19f3c7f25f0f36f54b7cd2868cd420e1 -19f6102477fc6004da7865dea8234a79 -19fac42a1160ca4875a65834aa011a73 -19fcb848f7f3d01f823e6411f3a1c4c8 -19fd0080028defcc4b46ef788ccfde92 -19fd7efaf11e8703b6cf436d7b250469 -19fe8db85e32328c58cedb30c07cc9ee -1a0254aeea56ef866d3b93eac02c3360 -1a044a9f10165a4ab603e6d37475f736 -1a09a00d125a0100e8d7a7ab490417a8 -1a0c0c367e4460c92fe1313c535d3f2e -1a0f75092f4a1abd59067bc2cfc38156 -1a13154b243fb5a905ec19220824f27c -1a13d05607dbe47a0b743c69cca03c70 -1a1599cf935b1e8fee3faea9bbc61bad -1a1778c0f5e59262825fb3617a93a674 -1a1bea0bfb0ebd7205e4c9fbb2cd0890 -1a1ea60abca15d6cf161416bf7f96156 -1a297719a4942421323766c9dfb75e33 -1a297f2fa67c45d4401545471e094993 -1a2cf37cabb44379dccb3f84a4adf420 -1a396679c328731354e417809359f2ec -1a3a93dd9edf2f6c365951c76c8e4145 -1a3d0531643117163f88cc6b54bf53ad -1a40756fdc2db70639cb022804924ee9 -1a47ab0ac3256b384127af5d0908c34c -1a4a5014a504576e92854ea5c2b85d29 -1a5e134b2176584cc633ca7e3aa30d71 -1a5ea3c9b56368e5b22906569e050b1f -1a5f3f298cc32b343b38d73ae9a4b4f8 -1a66f40ee78518a09ad5d604cf02f142 -1a6ab54b89d906815701f175fb89c010 -1a6c04adba6f524daae4b8137b178dbd -1a6fa34ae2caa439db47aa2d5b90425f -1a70dcbd97fba17fffb42a3b213d2125 -1a71e80eca75511850d7e2c592c0548f -1a769236364c7e8c95a351d41f035977 -1a76cb0c61522ab412f073428ca9a8f4 -1a7b799085e4cbcdb4fa854b86dc45fc -1a7ce9a33f1bac4ffc564cd8fe8242a0 -1a7fb060f907fbef4f7b533d51be0528 -1a8356399356c12f4acf334fab63940a -1a87652b2f171bd714050b78090f9848 -1a888535b4f795ca586458dc02b73ca8 -1a8f1fa08357c68ee198749b92b6cf97 -1a94fd5a9b28742b25373dedb9bcb4a3 -1a95429edefbf7281402a0ada795746e -1a9b42c0cee190160c739943591f9bdb -1a9de67ae1b021261a4a38e230a80a41 -1a9e824eb603b6f951c2c0b104a07149 -1aa033a9cd258b166ff38abbf3ae54dc -1aa2a072538585d18281dd8abc99fe75 -1ab069898a2937047d73490f99df05bf -1ab3f008f059bb49c876ec1e3d3170a6 -1ab59403628e422131eefc856b022e55 -1ab639dca03c7c4c87c8e10c9af59ed9 -1ab678df4ad44bde50f0b0d8f5308c28 -1ab7996d9a7d1066dff8cff5b7460481 -1abe8e44a85e21820c82c9809811f6c6 -1ac71ef9aaab8df4cc3c9d7af0955c28 -1ac7d388c0360162b37d0b3459912ddd -1ac7eb9d3b6f6f00f14afb83636c1dc5 -1ac92eec816e47d71593cada5d499b88 -1ac9452cd4a9c7f861edf63c7862f416 -1ac9e98414a6316802f41991bb4dd92a -1acaf1b0a5ab2ead73f1763e822834cc -1accf87c2605c915579c98ff7042dc11 -1ad140e75fc6222ac6f15ffd2f35f10a -1ad1a77c060560bde64c5bf0843c6559 -1ad2bfc1873dbd2e1f08cf392f70aea4 -1ad342b64aed9975aacf1d049868a363 -1ad48594361aa150481b5d05d9a64ffb -1ad7b78fe59a95e7c37f10783ba9cf91 -1adba28da2f899494aa0da09cfb69197 -1adfda5ca096dbad40fa9bdd70b78d57 -1ae074fff7107c76a6a6da7a4b5f28db -1ae14baf93730ad9a3b17810e4a4f57e -1ae22dfddff25f404fa51bd876e69c4d -1ae4fd14d6c7783fd3399a8eb96b4a5b -1ae8f0e00bf46a419ae0787aff0597e6 -1ae91064c5c9feb1c60959215f718fe5 -1aece368e684a29f960be6eed0d12498 -1af1a7d4a8f4a38eb911054da9f7a5c4 -1af2e9e9b32d871f56cf5600896a51d3 -1afb497ddb661e4df1530fed59eb04a6 -1b09cfd763d86d9cb1ab4b139a10e2bc -1b0fd04acde07874ef708acef5dab48e -1b13936f76437dc9dcc0f4aa0b635ef9 -1b148187e48b6f0ffc2904bbd9077a42 -1b1d58b496655ef8629ceda0f0216c57 -1b1e9b0ca6d500290684ef428c7b6f7d -1b1e9ddfeea8d5568c286fbfd6c508f2 -1b204bf3f15338447ee4bd6bbafcf6a9 -1b259ce4aa73f1355e5bcb59bb725d0c -1b283340ae51e0355717ab0ba757cc05 -1b2c987f2d479c1ed2a6c8127bc31fe5 -1b30d86924d267c98490944d853efabd -1b3136218d9e2149c98fa525a15cf905 -1b33793abca22da965835fc6dd1d5c26 -1b385097ba5788f9e8c4587aebac41b2 -1b3cacdc72cfb7d138775b4a4570ed75 -1b3ef39821ecaf051e342dd03c912cb1 -1b46b439e42b350335494156001622ab -1b4a52bcba6b7ca867bfca2671f03d94 -1b4e0994453d6fda08259120405f2001 -1b4ea85f1906f670528b48105db97c80 -1b4fd7148d75a31bb0339f44059a49e7 -1b5ded786d7b0b098b455e11b48aa9a3 -1b618e3dfcae083ab34abfc3e1b45dab -1b63a5c54462f0f388b3fa7f8d68adfd -1b690ffe6531701026ea9fa9f4b37ec1 -1b6b88e9bf6f70d42755aceb0815165f -1b72507a3f6489454d0c52ce5646b2e7 -1b72aa67725d36e8575d9f82c3227b38 -1b80d9407d3aa2454ba5e9e187f1ffab -1b8774fae352166bd2765c62f34a075f -1b88b41602236b6f974e1eba0e81f0c6 -1b8c70346132d9192f2f0481c6b4072d -1b8d430875a6a44c5011f87981ec835b -1b8ff395adf57d784c884bdfe4489150 -1b919afeb0c276d77929d6fc786b3b1e -1b91f3b301f5d899bf400830e38ffce0 -1b9688a9eca2f3ee4f93dc62de5e1421 -1b9f8c3c9e06834885a1510790bc1653 -1ba1c66a3f531ef8c3662ebe84e38ce2 -1ba58465ed848c249668bd113139ae1f -1ba6080d382278aa1aa58d282fcc1cd7 -1ba8a7ab2f7880d8fa58d0713ae0d114 -1ba9e0a36721acff763726547d379894 -1baae12a117a5dfedf40990d32d6d63f -1bae7027eef30291a99486be148999e1 -1baf3d722a6c7bae89dc451862e60095 -1bb3747f571b3a1333838f9a2346c054 -1bbe2715bbf9bc2c3682e6cc2b8b24de -1bbe38cac49b67f64035d98ad0451eda -1bbfa2e118096dc92cf2fd5c50d385f6 -1bc152b63df7db6220f4555d5e3c51c1 -1bc153e3dfaae89b9435fbdef84e4ea9 -1bc2de3e1c5db99546ad364247915581 -1bc53eebe47666218db66a17876a60d9 -1bc61c0a6d1c49721d52a461ecc5ac5c -1bc6d9134ece43b0c97116a1a55b6456 -1bc72125feb6c441a6d395623cf56288 -1bcf7b42722cd07a8b395eb9009b166a -1bd8ce03e5581d7a8ef7f18cba0e3de4 -1bd95d8d69a9100b567070e64cc5e8f2 -1bdbc6d43098f58b03a075eca06acd6d -1bde2a672af7cb1f63f0db89d5c489d9 -1be1da98bec475d20cba8a869724dbab -1be224ce01786481b8e0ebe3a4d946ff -1be2e4f870bc304f682b5fafb966c669 -1be3f8fa534948e1ebab7960bf17ec15 -1be731d4380cf6feb771256752e210f0 -1be757c5ed9a88cad4fde0c84fc43f96 -1be915fa30cd69c5a82100cdbe03ab8d -1bf725e66e16541ae0554c00748e267f -1bfabe5af513677e0ca3276227d33d2b -1bfde0f2f2f4beca74c92a5f383fa987 -1bff523507a91da1f736ecd1375ace47 -1c055c5c2d102c4f6d5903d503edd5e8 -1c056ddecf128240376d17e61d9e07be -1c1033880c9b88bd900af3376ae789f6 -1c106da38660b150c6b3566be0ec1d6c -1c1684bb2f563e35ffc0956c38fae5db -1c21bda092b313f1a828a3e065827c5c -1c2875e9e1c0b1d544fc4453c6cfb688 -1c2da2ade9dd899e1903dc5bf30df5e0 -1c36597b5ffc8800e8b2ecdf891e788d -1c37c2212d44fd6079810f5fa50b4903 -1c3883af60b38794c53cb7eaff11d4c1 -1c398b221f95964e38853677b94f9632 -1c3eddf025bfbc5ce3bdb37cc9df247f -1c4519d93bc4570ca857d7c4155f94f9 -1c497d8285caf445c52794b6398aaf6d -1c4b5ebb597863e2170d27edb8e6c447 -1c4d7a2b63494397f3d9ed5dbe1038f8 -1c4f0e5a9cff311e41af26dac6490be0 -1c516d0ff1dbf512a0768dc247abd6f4 -1c551b3670c8e72e28751a67de1bcd13 -1c5729c939d2063b05d9a72a1b27e201 -1c5cb236c87a216f9c655eafcf7e2a1c -1c5cc84ecc0e0918a07d63f8a6b6901b -1c5daf8bcf9d8ad507264597c766831a -1c5fac493f96a637d4b0c9feeefea6e8 -1c6413b734ac7d14cb2addbe77feb632 -1c68bfda06ba4b45ce566486a3c29ce1 -1c70b2f4a393f5e86041637b0c31ec6d -1c715da6de84525422b3096c170dee26 -1c83c1a428247063e01ac03aeb22c091 -1c8830dbc66e67e1c1f9e9b951915210 -1c8be8051e09362084e034bd8258038f -1c8cf4d4d88d53bf15e99a9da76a57fb -1c8d25785d3007f90b358915aa4d1385 -1c8e80c171806ec04769cff8b653c48e -1c8eea5d94b931560e06a9a55fb77c91 -1c8fbbe22c8752befeceb140a81103cb -1c90b202827b0d76a7de09ac4f00198d -1c9105247c94d44c450a587ae06e6b37 -1c919e5a1e92b3c1d60a9642893e197a -1c92e4d014906eb71988dec66a41a3ed -1c95433068f16677ee11bb629d6a9a99 -1c960239783e4d3b64fec91d68d0badd -1c99f398e83d82bdeac75122e3be14f5 -1c9ac3437e7663be7ed6b43dd01f9495 -1c9d298057de0677e4f6d7f3db3aa91a -1c9e78ccd0aa52bc57d0957da3f9a236 -1ca40d41f385d8fbdf0733523d5fb34e -1ca4f0e7494a7beb445cd6dfe4f3c461 -1ca74e43dc2e092c0826b31621e36c44 -1ca9c427590bb10dc904f4ed435446d1 -1caa3ae9b7168878503750ee10a20751 -1caabb91aca7fde2d2de6693b111a168 -1cb1eb1827f5ed15651da7ee49d0a43f -1cb249dc7d64a73ec89028c8cc87dfc5 -1cb2605f2eaa29fe585e301148c8f3cf -1cbb3cfd12e92a59a97302365a9e61c6 -1cbd10d74af38249f3de290787a89c4e -1cc61a9cbdad1b3c29c8d3d08913e47b -1cc82340d9f296b33e8d367de663ab7d -1cca1fd853689c7826d13076e11e4431 -1ccb62c495f377772133c0c9674141f4 -1cd9c5f46036f6565b7af571be14767a -1cdab586b439c424b5ac1e8645c17cab -1cdc8aa61c730aec3cf03955ca00bc9f -1cde52aed850784ffbdd1f8bdd74d6bd -1ce0495e034c795ce76a0fbe2fd236e0 -1ce9471ffd1d5ca0d64e2ace51bb898b -1ceca815b574be347e4a41d91f9e7563 -1cf0c4bdbbc73ccf628ad2cbb548111d -1cf3a97b0cefd7cc2126e7f58d3c1f70 -1cff30f1c5f57461e3617edee3ecf199 -1d03362dee7f9c248d13a60c238d9be2 -1d0366639ca3ccabe464562c7fda499d -1d05f4f8bb029ddf06fd789fa10a2820 -1d093a549c4cffa9b472eb63fcf54acd -1d0cf553998c359bf882a2751358ff05 -1d0d8669d5d670b4c16c426480cdd344 -1d15dc7f35d3e44a01685a123be846ee -1d1e5b5369c5734f2ffd7f971b4812fe -1d251fd31f0ced1e680e97084329d84d -1d25762d461e3432f5f5e781615aab16 -1d2736ecf50d21debf1a2fe3f11c75f9 -1d2b64367fc03f3647c7aba242e5a4da -1d2c7d438cc938ca3d6c9ab3db455869 -1d2e04455a846d5b5f34eb31035f518e -1d2e923d5aec3f551f1af6687d91bd06 -1d30c247169680a2fc5f7820fff267de -1d3b414d010dc9978e7df7eaa83679c0 -1d3b6e555acf6adfe9cb5c7390df5926 -1d3e18d89b0e3617b20e0060c7a1fa0d -1d3ee6aaeb36b1b6973bb6d074d3209e -1d42e861a607f14727b5af1aeeea9b71 -1d47a4794fcd384564c377615eda39a2 -1d49727300e7f19e60121378a351a87a -1d52eb21d3e76ffa5802f2bbf6a3dea9 -1d5862ffd07e6cf0e358ab04fb6d1784 -1d589f220ddc461a41559562853f59aa -1d5a6f8c98e54b657cc89c2c344bb03d -1d5a9b416c399df751119ebfe0686b9a -1d5f6cd3e55187eb6b27c5759556caae -1d63c867c7d43c341e6c78d7841dcbc2 -1d64433723d1be38c672659fb40d7eca -1d67faf81e82e8b73ff431536e43a761 -1d6d5a847d22d0b3aab6ccb440b8bd0e -1d6eb04b210ff467ab3c6758d63a0047 -1d7184ab8fa4a330f79a0f254010d49f -1d75c3e5c64d36238067934a6b5bd8be -1d7f1e620e19cec68af06a85f46f9de6 -1d8e8854d2e87238703ce83f6f7f605e -1d92ab481017e25061c6f8190b1ac6b5 -1d93724eb1e515074b1651114d9245d8 -1d94c0b0f1d5243915a3265d4337b29a -1d9724b750b0fa2c2a34f6786f07b639 -1d980f1cbfc30b9eea016167dced928e -1d998d315d622aeaf10e54d3585fd681 -1d9c43b62fd15c4f4b0430498564f8d0 -1d9fba70a9025c6df0fbcf9385168e74 -1da0ff3e8fbee38693012dd6c906e947 -1da201cfaa837d004c8cca53752b76d7 -1da3d71c665b0aadacf8dadae4d4b0dc -1da617efaa96724f260aa84794256adf -1db139f3fccae540868554390ca39e28 -1db1ae0f24d3ad63a5ad781b35ebee75 -1db46495be34d969dbbc64cee7acd1aa -1db912bc2322243cbef3eeabd1f854d8 -1dbd9204b3dbe80fb19a28db76bc317e -1dc99153261feaf63cbf5dc9f782ce86 -1dd24ba91686e38ebaf24820e2cc732e -1dd6dbf0f3e77a1b5bead414cf1fd533 -1dd70d8cf4f829bf9eab4b941b03917d -1dd724add6282109fe6c7650595a7a73 -1dde2e53c7e9c40881b7025121b7a4eb -1ddfb48683dc4cdb94dd34ef0df45b2f -1de02a33044b5f25c03533a5b8b5fca2 -1de33607694a3b9be33343ff34f6b291 -1de362cd4f99288848567602d594cf8f -1de7e5d935426fe821f311d88e8e0058 -1deb828b6d7444db723573661a02f0f7 -1decb7ceba97140a58bac61a2cb27738 -1def12276fe95a74b8345b116a3e71b2 -1defc991dfd4c163e8add52ed6eb2367 -1df269120c7a5cd845673260c80e2ab8 -1df7c7ff22544e1dac957ce8779753f8 -1df806f65b7b185f9bd0d34c693a25b5 -1dfed5bfd1cc3b5ae4ecb4b6c267755c -1e0297bee028ac32910301155e420786 -1e02e34377e35bd651adbdd9ce15a659 -1e060b692bfe9be39eb21e8fd16482f8 -1e0a5a5dbb2041e52ea407ba4f533dc7 -1e0e549ae02a14d32052a57075b72b59 -1e0f2f7336dc624159da092932ebc167 -1e0f80e16ae145434f8c411a8e2025f4 -1e1328cc61b477c6c7c0ad130f1c561e -1e14bb61524e306e8e4d95ac6f804141 -1e15ba30356820a7aa4d9946d71f068d -1e171aa4624e3a80d6b1cf5721bd0310 -1e21d46852ff85c1c99badbf74e937a1 -1e221c940a6d74399cbb1cbae183bc80 -1e253e5d324cfaf466fc59d8851beef4 -1e2783eeb056a222c69f7dc185144027 -1e2a5dd5dd581d7f697d049aa6cfffe4 -1e2c2c3ad306b8f5f1541fc8390f10f6 -1e2d473d061b25cbacadc8e81b2a737d -1e32f65128cdf8e90381d61d4b625614 -1e3479ca9d00cd19f6100ccf80904bd4 -1e3742b2b5b20008e07594c897b991b0 -1e3f07e2a69769822afd77b8515f13d3 -1e41a9c821208f4af7a957e3812ad77e -1e43313fa63d297fd45f96477a83354f -1e4ac082845408c34dcfda95d2c3853a -1e4c3b9aed6f93702643a6fd87cd2867 -1e5d8f5fdcac6846df850d182034044d -1e5dce42fa3abc61202ca16bd76e9617 -1e5edff4fbf372ba4f1ffc64f44f840b -1e615abc2f430daadd779f9afdec44e8 -1e65a734541d60526150154ffda32171 -1e670055b25b7f61fe3f15491165836b -1e69b4f489ac5300123ef3667fca01fd -1e6bb4e54b5c498d7023788392e71f25 -1e6c3354019e24f637a559ff88b42441 -1e6d9ca2170432cb1be1ae70c656440d -1e6eaaa5ff3c86fe6af62693a6d68fe8 -1e7114a14275a88ec288dae33b2a7f8b -1e74393679b582b79faaaaabcea46b51 -1e7b229623af66dab3543e37427ff9c3 -1e8220f21254edc8e3fc1591c069456f -1e88c4d045999929dace53ce902a063f -1e8a59e227290ec869e4b039bcfa7554 -1e9ad85ff554cc626e469f94efd8c0db -1ea13a3a3f9dd5c3f6840a5fa552753a -1ea16a31e720d66a4409f4d7f8343655 -1ea302c5830f0db4db410609913a2e7c -1ea450aadd58dbe73a15463b533171ba -1ea4c69fe4572133e7e1e438d8a29c56 -1ea4df8dfaebbbfb48087d0516b132af -1ea682506f577e3b1c0dcd67243b13f1 -1ea8bd89f2c3bf3c77f4f264f5059f12 -1eaba0cb52279906f3c130ecee14a086 -1eb2160221cd2c9bb9785f8f0820b5b6 -1eb3d5a8a8abaa64e025d164f5aa944d -1eb5735e68b5a5d0be1876a336904235 -1eb7af774d4ce0724c4c52433b02f358 -1eb889173c16d49dee2bffea9cec65fa -1ec1cad7655382f00ab63551892a36c5 -1ec26312bc51638d85d7a4acf18b6704 -1ec2cc2dbc77269e3ce151c3517f8a43 -1ec642f8fbb3456c881930c8275bffc7 -1ec7e3447c2779aeab6fd9d4ff37b1d9 -1eca916925feb9824df8ad1a44dc88af -1ecd01f763f5b00d23308d24369896ed -1ecf976041ca155272ab6ae013dfc8ea -1ecf9984278d18480eee16165a7d000c -1ed7d04497aa7dee308afad340cd490e -1ed8225193b382030853e6e9c376cdfb -1ed8817d5a9c63e14e3b6205a0cc8bbe -1ee0396eab263ffef8890caed4dfbf73 -1ee226479d8e600cd32246f8ef35b53b -1ee2485abb3aed5035cf02f87678725f -1ee50286387f81a0edb45a071809b6d2 -1ee5f37a5ae752d40f06b57c89b2decf -1eefa30a405be0d9a62d0dad0ef5723b -1ef1a84f486dd0825bb3daf6cdfbc28e -1ef23cd90c7c02d7fca0a65572cd52ee -1ef4720961f34fda1d31602797bf6d32 -1ef779ed746d0a55ffab5882d8586d68 -1ef93bc7156f3fdb2144179e8edd3110 -1efc62c577518ac4ebab0b04d3617f5a -1eff1a13b0b03b30a7193bad98ec22a7 -1f0087f007c3e7890c545efe6d8f0b02 -1f03f58d9c5fb2b2bd8aa7967687df26 -1f0ba1fafb208768053223aced4b45e4 -1f0d66b723edc83d56ebf38444c7c8e6 -1f1100bf4e86aa6af9dca73aaa190813 -1f160194fab2a1c32d025cdd751fea50 -1f190c7faf3962f1f33f6cea47f6ad0c -1f1d15890a5645b58dd16c7a60bdb1e8 -1f244e776d66b0c7e5099843bdf4f419 -1f2549010a58f91c27142abc0990e4c7 -1f2687961b6741058162e52f4a954402 -1f2b87fc650ff9f6c8498231e59c34a7 -1f2b8ff89f1fa26227726b7d69d0adff -1f2eadec0b7a343e0d0226e30135b4e7 -1f3027fcfc5bfec16c2634d31fbf2711 -1f3a2b11291a4c47678b4b59ad951c29 -1f3eca29b4d1f4e9d8ffa838c7e22a44 -1f40bc7eeb38233be81f9ac2245ebaa5 -1f410225c202c1d3562f7e602a81615d -1f43542521dbb4aa17b7c026867f5bb6 -1f43a543b36eea7593ab5949c94e6b85 -1f4607ecfa8af6e93f86a2619ba0836f -1f46fbbce9badfbea14adb6bec970fdf -1f4bfdc8bde14e52358265b78c565de9 -1f4dea72fddf6c9b2b54129ae4abc37a -1f500adfd6fefb72863290ac89b76492 -1f51e18cd6402138cc6482f53a4e09ff -1f526027ae0bc56a05d775d00ad31aca -1f53cd4a9882d09d7166287fcef76a60 -1f551acdbdf3d0e63182ab35ab2061c5 -1f5cebbcb3842e618f74c5170a002e06 -1f5f8a866bf173f8fd0f8da0dfc8aa0c -1f605f16aec8d0fa6e2bbc6fb480cc8f -1f61cf632a076ecf0d9dff5fb8b86434 -1f627025040b65fc663602cd2164ea24 -1f637206c6e9fa14759fd616458db31f -1f63b3d3a035fce7dcd90d800a589b33 -1f653e87ef27690ee6860680bfffe413 -1f6e99b3e05a25685eb3c782252b4166 -1f6ebcda640825f9b7c13fe00a99c47c -1f749488401eef06ee18270d2a9e0406 -1f755e31398834f3e16461fad28da05b -1f7a29d3360ed668783815f8933e8767 -1f8cf64d9e7bf652ca0385b2783ebd2a -1f8dfbbe9a0b35d840b64ca0eacb523c -1f8e9bda4bef19b88183880e01ed216e -1f93f079ba0c6e2c27f9d4cd6e484059 -1f9787a30dfbff8dd79243076ce83920 -1fa1a959ed32118bb46b295cfb9bb90f -1fa353b33d1295bf35ce85d3b4f3b7b1 -1fa5cb418058c0d585f3f20a0981756c -1faee61d946b8eee8df9496a1a4d84b3 -1fb551ab1ccea36eab643176b69ea606 -1fb7238403e1fe0ef5799ec4a3a70c6d -1fbe3bd6ebe509280e8038319de6e2e8 -1fbea2b833320d83c6dcb3846a4cbfe2 -1fc4fb26f96dcee4c6ef5e2217bc8b0e -1fc56d40897af19058724fbc04b6a1b4 -1fc636ccbf7a8371cd2951150b8942b8 -1fc888f07db1f2dec62d51a6d2f8d59e -1fc9dd836297f81c95b956305fc13799 -1fcf9f7ebc0bc0081d54875439dfdec9 -1fd0dc463a6a66ee1061b0cc71300175 -1fd415f5ae960d4e9510adcfed929278 -1fd7bb7305292bfb8353984ab8d3878c -1fd82d9a668d2ea9653705409814b4e0 -1fe21ccd74e6a0438954d315c3361987 -1fe24480b788af42cb93dd86cd31718d -1fe3040a878d88cebfba57361fb873c8 -1fe65f4d6573e6c88114fc41b2b25568 -1fe71dd6e0a2fab1eeb6cea1977a268e -1fec57355d8769ab9daa555b797d1178 -1fee62b9a5de5b338546bba878a11de4 -1ff183725fbd56e3e3415a790b6626b2 -1ff290d5cab9a22396748a6ddfa31768 -1ff8ca028cdc4879d108f217bb7246c9 -20006027dc6c8e874a6e3fce657d33b4 -2000cac5beeb011000593f38d5a58d84 -200ee121e1a27983b87dd5db4d2876c4 -20119de668caf13b4e0c1abb9a434c63 -2013309de354a5889b77bcaa82d5f72d -2013ffc0383bbb71c3caff9975934979 -2014f5b437d0f8c8fb53d39b504d2244 -20189ee29f02bf6b281771df2109d07c -201a5402ca55c14d02bfe1cf3aefe535 -201bdda7cad302de8f4ba35d33b740ce -201e8ce91cadac3cfc11c556770cc992 -202ae6f0e145e8a9323db327579477ba -202bf0791ecbd1f881cea7afa2398fb1 -202bfef6e601913de679a21048a6de91 -202c14124dcee02f37f7b91e095c7c30 -202c7622a8a969f15d4876bc195b88ae -2032917cfefd559a475674a2e0c15cb6 -20334f6268f738e6f580c1aeae390756 -2038239340f5e02b7979e318a88f0427 -20392ef9b7ac54af49f27b23b44da158 -203ed29e08ddd103afb6c807f412cc53 -204cf58d7534d47b943bac5420707e89 -20571260ad418c945c53805b24f37520 -2060ef5ddde5ccb2085cad29910c918f -2071e60366b6bda848ae10a9f9dbab76 -2077c28d374674994c0cbc7c8743e012 -20788e337b4c2079c5b5242d145d407a -2079f83d7b23dacebca26ab3848d22bc -208117fc123566fad78975d6f3415157 -2087861fdbc74a62ccde714ef4b46e4f -208834852f0ce19041587a3c76dfcb0a -208dad50e08591c182bf4449ad24469a -2091975f600da36cd57572961dfdba15 -20929e5ba39b5addbd75f860117c08ca -2094a9980848237a309a09ed4a6325ee -209664647ce54c6792d499f591fe3458 -20986af9cd3db2ffad6360fe307628f0 -2098a79019f7a7d232169f542c66f212 -209f00a4ef5ef0b9b643e38ca95cc8c7 -20a0846e3ac3ac33b100db908ab4a1f9 -20a2159e2ca038a849c724c24f82fe86 -20a5034bd4ea1eef6295fbdc4b522bd8 -20b1ca27e7fcce228155e2568b1e68df -20bcb5fc662f506641d99d185110c334 -20c13c0b435bf9a7ae86f07adc73ed4b -20c27ade1612e6044b4152a14711a5b5 -20c316d0bf8650b38dc3e5c1debc24a2 -20cbfe99d235ed8aaa3aa5d5b6653a1c -20d6499e3a70fe3989cef7a4ff625ea3 -20e4b0c0579c76c8df84d5f26b18e950 -20e8bfd020534a60e9a7b8a62798bf11 -20ee6562e0e99e5fcb2773a685b4cf11 -20f044289d25841df804ffae7ec190ea -20f3f2a74e1c14495535784ae823ce70 -20f6071143b69164a6b12677afae0e0d -20fa933372b4d7353f102e716906c1cc -20fc88dee0139afdabf910be234cd9b3 -20fd5e32bc2c8022d34200ba63f0a12e -210610dc7248a1d8b3a0072af1645ac6 -2108e841862596ed50f7b6e2233fd318 -210b2b57300d6e8e729c06bb469cb6d5 -210c6d881fef197307e39458ac5b4208 -21109f09fdf6aeed07947da26641a262 -211506fbdf67f649425bfa0569a8431f -21161f757f484a3373a8427fb6f88ffd -211b9e4f47535e543814e2e5eba60553 -21227b662da65688bc3c15c7e94cf00b -2125d4b48f02a9984d36b6ab17e2fae9 -21357e131db974b68ed284f1b4dc0636 -2139c380d775578fb2315f9248e5416a -2144f1ec97add9b30b9ecd0465fb98d9 -214610ce7aa43abd16fd2b3500bac330 -214a9f7a71e5deb2b0610861a0d0a24e -214b5f5cc8fdee8f06d1b26159c05cdc -214dee30e7f6cc4b78a40dc82759686d -21543eae425f436393e17d70dd1abe7b -215623634aa18fbe210143d40f46d7e5 -215af168c23064c34e1cc617313681ba -215c5190b61dcc24ae4295efff1fd350 -215cd1fda65cce95751ded9c8e3df23e -21670778c15c56c57d9d2630ec9ed79b -216cd5d90e571c2d80c18edc6a20430c -216e509baa68b228b4c1a08f59aa6b37 -2172413827664c68661510ad6fcf748c -217630ce668d5317dbc7a8248337a521 -217722e245d3502b156db853c73b7b17 -2179e64ed18109a91bb3349c5e015880 -217ada5f778f2bbf79f5c435c6e64336 -217cdd275435adfa7d5a311e8d2b9c93 -217dd0132d1fc622f462ca2476ae4f8e -217f7a17468f15d2bc743a3efe66c246 -217f98b67574437eed6cffc495f9cb99 -217fe02b0c4850954337fa792fcf4b26 -21888c33351e700c47971aee32f6fd0d -2189d511732a866643a2d6ebabc1d5bc -218cc9b950c0ca235ed2693dded1d605 -218d6494fa219fdd72b4d562bce2e29c -218de96f028a4d36e912b8bddadb3ebb -21958742cd2eb467cf2f8147119426cf -2198438db54488af0f8d56480d11859e -219a6f8f5b39ae260782084d5469067f -219b8277e8edbf8760bdb395323cc23d -21a122d35e941d21e3f157a90f19a648 -21a24667db6483b7f39c133250eed55f -21a3760684d10a38b6ca18ec7ed1d68c -21a49dbd01826abf1c14a25c2d452922 -21a6f227d005e149b9fb63bc4e373311 -21a71c5116cfc9e9a7eebd2339f008fb -21ac935c1e90efe82e29d4713f4258db -21b2f3c098346c497e57f631b3e2a107 -21b4c2fe3abda803ba7e938e3251542f -21b9175529047f2b6fafef46ec00dc88 -21bc8dc0685268e1124924d95e5466fa -21c085993782c27f9ca675209e409391 -21c2a00b4cd3d37b7fe90b0773c29955 -21cf73db5aa9566c3e84bb8321540e95 -21d8c7f9a5a9e9b9276f65537e174b45 -21df35d5337b131aadb79263a5f06335 -21e299b6c47965f6de84faafab832a87 -21e4007594d1ab7a4e58aa3e25d2f2b4 -21e580b2ba991b7888d165f278c3087c -21e6f9149b06ee1b5185156380169109 -21e80a2fdaa30a135fcb92806d6e1c04 -21ee76d14ffe533f6d094aeacec69a76 -21eec9a7ef37089db1475dbc7b22c34c -21f0571cd3c5a3b799bb8b79a5459658 -21f2fb1f4a7c3b61e6dc8a8263d8bb1b -21f755a818fe4a52e3e34af7cd86498b -21fe68b0bdf74908309d3048a86a2b4e -21ff509300840e17a17e6895e83f27b4 -220423529337f69f6831cefeab02350a -22052ff6682868fb0fba1b97e05588e8 -220aae67e307f834c3231885f09b874d -22147c208d62697fae4e4c351bb80bf1 -2214e0beafd685ffd286f79685f0f94c -2219cdce6baade40e8ee43123a6131ae -221c15b7aec6348c1417adccd3369e63 -221cb33d55aa7d52f07384f7836ff7bc -221d8ca56ac8e54f9d75c87fde6deb8e -2225198a13b239fbb012bd89da7cc400 -22295598043f0271c6d9ea7c345c27e7 -222e9a7fb5071f2ad6cfc7c76de459e5 -222f8b97cf325940c705412675a9a8f5 -2234a5bc177124f648cfb17f85f27520 -2236551f6b7c370a5b14f30cc318df4d -223ace8ae1a7a1c008ab10138f5dc3f5 -223af6c5fd6667e0abc8c2f05cf98302 -223bd894f1dbf1bac363ccdd37de9b0e -223f0e442f50a4d7204b13199549159b -22453ea0314efe9f84de20d6f46989d7 -2246730bfaec0d3025a47c497fdd4c76 -224764e2268b83d85f84be251e35221c -224ef4476dab2bf8c623c76734fd5e11 -225115114d32de06ee23bb84483cc2e0 -22550557f6d912a1dc24b76171a3c77a -2263504422424e691b628f5858bc3b2b -22647dbc6561bf7c15f1db0ad225cfa5 -2268e395bef9d1170245f4f33a026e24 -2269b4aaf53f8d8d2110ca6eff1412f5 -226fe6836b95ffc99711dc81552fd8a9 -226ffe618db53256a7b8c0fc34f8a05c -22740457727943a12c7ef53001ae6da4 -227f818ca054d208b9d70807c65f015f -228704407254cd69174f019f659ce183 -2287d2fc2519159e39e9715b17d4d63f -228ed3e3956c9a49167374d41f0bd155 -228fe1e9d8adfb2393711c22748ba48a -2290d64f65bdc47a0f617acc3aa33ade -2291f5e5d05d6e0ff78bde9981917918 -22930d121c9f5bfe87404ef8076eb1c9 -22955c3632c08aafe13e025aa9632b34 -2296da092377ef367555af29d1622121 -2299460ec06311f06df865598128cd19 -229b265edc8358a792c842edcaef61f3 -229bc0f87595f1ab08b093a02d4de6b5 -229f426943ed9bd597a61d80821f51f9 -229f546ccec9c50ceee168388023d923 -22a118cb8db84918c033453cfcfefecb -22a709d998b5e0e17fb942220227b724 -22b3ee236c7e1cfdbb3af79c79164e98 -22b5e7420da2260abbda0a5bd34ccf4b -22b796888ca66a235782c3e50ef3f2ea -22ba7c6832dc0b6321d6cd51fcd75617 -22baa8398201f13e019f1853ed79844a -22bbe073805269a0a0716ba2c1bd1522 -22bd7b1aaeb311f2966d1c8d03fd3407 -22bec97dc2c9a956320fe329d029ed2c -22c527aa1ceacb7960e63e492d0e6dd7 -22c7021bab8e551f89455c57b49915b4 -22c849455dc39bf6fedfb81e6b487033 -22c965186e9e2edc5636cadc7ca9271c -22ccf212f9ffc27dcfed898ba7f83a6c -22d018577687fc844448a5e9f65dbb88 -22d8140776a0b95c8644d28f8020759a -22d81c5bc4012d4b59a7c62d005f1890 -22d8995c31055a1409fd937f92014177 -22dcd9935103b15a641cb763a31be58e -22e085f0edc12ffc34a7eec54916a59b -22e3cefc994d6054b9f102876a5a0453 -22e76b335f3039b491adb374962eabb1 -22e9b04e730e5fc914e0958f3552687f -22e9c4e96953d79bec594dba63c1589b -22eaf55c1bd88c1a4b4c676f1b50bf65 -22efb91306d26c87f2e1d17f8d9d1253 -22f65cc353b20c4d457185f144728b57 -22fe5a4eda2412c42751cd5f8dc80957 -2309c344bd5c47ed270417a2c0266fa7 -2309ecf0c318c55ef73e7346f042f442 -230a98d4b0aaa71ae7e85229d185c067 -230aca79247840cf72b70d92f82f2ad2 -230d98dd558ba1f2a193801b17a9129b -231277ff5bdab895bf0934dadf1030f2 -231d06c898b565e6d8854c8c9fe8027b -2321f4b46610c622e2f496f0ad8fa11f -2324de7ece513677ef8769e422df313e -2325cc2f6550bf5ac897d079c9dfb3ac -232bc0fa11b44c18555a0fb9757eb50e -232c67121a2b1c7044e331209b39ca7c -232e27a74986d1a245bf908419607ee8 -2330a838ad55f65de8ba7f2b7bc6489e -2332122208b7f8566813837e09e4bc28 -2336eabe3868a237398eb22c546640b8 -233719391657d784007800775b692ea1 -2337f78ba04bfbba7255d4e366eecdfc -2339da09aef258968e56254ad65f79cb -233b86753b509906f1bc9b1faaff00f0 -233c26da9b8aaa4c91058738a97659ba -233d1c6e6202ed50456233c39c2ec82a -2340c7ae12c6d23f5e84f65870b966f5 -2340d34efca2d569665032ee663cb7a7 -234141c8901a4f9facc2836fdd1455a5 -234408988317a9d55bbe49e24e5cd4b8 -2344b1599a04b45d20b8600b1b5305a3 -234773cf5087d444ad1b09fec68345ce -2348c9e38775cdd42dcf51b8d7fec516 -234b4c887b59d3e42e5bf77b310edecb -234bc66597244e470c44348d97cfb914 -234e09fffd188d48f9a013e0a6303946 -234eb78491c23bdc64bb3133a7a243aa -234f08969319176deefde79b2d7960b9 -23525cf18695310b78fd0321f2d921d9 -2356d6c05dcdce0c76039d2bdc7024d3 -2356e0d0ac855d1365b8f7fe175412dd -235871d4919be9469e57a48271e4bda5 -2359fda8884a019cfb68e5289f091b56 -235e0f64ea33828dfec1990c97f79036 -236154764d55b913bcbf98c48c56a9dc -23629fa24f9e127ccf5c674c20f28167 -2364e8462945adde9b041e506f24acbd -23705cb8c890dd647f958df0076064b8 -2370a4790f8a9fdb48983df5fc2186b2 -2372c8fe17572313daacd18947ec4892 -23769e3bb710fe8c9e16b22701238b7c -237823db4049ea5a3fbeb1a119239833 -237d93f523e67aa31a494fade3f728ef -237ed7529cb7692d070bcf6fcc2e4aa8 -237f789a913e92769dc728fbd9897364 -237f93eb24ecc133ad949b1981519952 -23819d6717df5851f29a9d4eba9553e3 -23849de25e9c080f4b7e047faf7540ac -2388b7b99fee2a5976866455129fb345 -2389174812ae3e7211aaa63642db656c -238da06e9e1879f89c1b06f8c61c52e2 -23919b4a7638dce6537df1f214b4bc00 -2398bc98af0302115dd562bf67a24633 -23991d6683a32729627912ac6dab3a32 -239af04a3def39f2f9c1e790beb728af -239d2ca030689344e5c5ab508ef98968 -23a310ba21e1fbda110791d06b8e14af -23a4d0b946ed3948e44c25e9fd907074 -23a9870df3c7f5b0ba64da7803c61cd8 -23ad5abc984ed10a45a15f7f842dfc55 -23aeae1c339f946608b1d9923a649e0f -23b0cb0d8e72c682be8ba8a189b710a5 -23c574aa56e1c273febfc9f31e06ccd3 -23c940a02ba4fcaee2cbbe49208cffc8 -23d07e7a3549e436cff851fb407a5509 -23d1f4fe676a67b0e184d7653ba2dcc2 -23d78de66a3c576fe6f00e93c0505e5e -23da7c85dc5a02ae1b0f961d76fa9ce2 -23e60ddc3be83b07fcdf6ee97a10549d -23e739991c702cdd38c3146b6c4bd47a -23e7a20d056f792c3749721cfd551bc0 -23e893419f9ca204613d2d5894b5af66 -23e94cecd2cff4e82bfb36831bcdee08 -23ea42669ba1e40e96285b41c33f53be -23eb4bf051d35d3bd5c94feb0af40512 -23eea01a8c1e678069947c8acd8cf2c1 -23ef80dcac18eceaaa64e2c937af82f2 -23fc6603d9492aa62d4f21e917f11289 -23fd8b158ad0ab97a69d72a2a544a227 -23feed4e9934f00d397ab9ddc7ed60f2 -23ffd9a6683edd6e2c34153878587811 -2400080184703f7a90f30cd0cf0ad4c6 -2400692a685f889a212e898498481e14 -240a7c656dd014400d0313f64f9bf363 -240a7cfc0de4bee6b78b2164ecc8d876 -240b1c2f4e2aa61650f3be77a91c6979 -240c7e24c2c855a32952c18b1b086f7d -24101fbe26bac123f67b8180a3d268c2 -241499d31420c56d57a643ee290a1841 -24167fe798a2b4d48ee104a255858703 -241815e01081f65680a06a4164d6784f -24232a430a5cbbb3481a96ab7e0559b6 -24282147d4b97323dc28458e18df2d59 -2433fb0553e870759061fb786bf2a539 -243b55026041008fc711d7a85d682005 -243cb40a0739bbc384d863a7e8dbf31f -2442c062162fe5e2d179bcaae129a027 -2443a8ef0fcd6dec967136f63761ee8a -2446bddad80663a13682dff5051a758e -24470fa48b95b75e5c65e28474f4073f -24481cc326c6769d78212e93be4f91ab -24499e15186e6cbbcc79384d50048b0e -244babfbce81aebf2dad6785ea443bdf -244c6be6f3b24282f91b004a94601e7b -244d7920546453eb317d06954ee03524 -244dc7bdc1e042e14a9b68fc33bc33e4 -244eba5ea588b5119cc7617000537d3e -24528909396db5e8d6a287a5f32d1994 -245bdc8f03002ce59dd6a6dd9718bda1 -245c14590460fd9c87bb2bb79e57e3cb -24634b6e8a6daf7ce4a9f04991c0adfa -2466d807b163b60d902e58ba45ded1d1 -2467d3d9c722b85de8b8b855d1c9101a -246b74dc0da6411274b8c067ff4bf16e -246bd6d1e23a7ebd2a9dafc3585b2d04 -246db4345a083bad48b5a3ff4ea22add -246dbedfb46bc93753fe072eec38daa4 -24752f39435cd3bc4ca81ca6f880a5a8 -24769b7789cfeb91cbd62fbf75be18a8 -24789e342318b0718d478de7acad17bc -24791934a1123d019e0568e07806e4f2 -247e9a62a1740a9a9a679a1bc4d56c6b -24851fc591526ab4d7e80e5b50e64efd -248a75f425c62d826a8118a459cbc72d -24933a474dd006691fc26cb331a78317 -249611542af9cc822f4123467e75aa92 -2497c18164dfc8e66277d94d16480a68 -24a1d1ebdf4b8c321b8aab77a503d4e5 -24ac2a2a4e76423706e71f7b2acf2274 -24ad66e7db37fa5bc0ef3ff7b526848e -24ae0e243269dcab8a2609eb5513630a -24b655a63e44e12d651f2e2052ccf3ec -24cd8e084c1e718c158ccaffbfa5d42a -24ce3a4a3f695b096ae9c6d443737b7f -24dc58bcca3ab882cdc7507d9a32fe5e -24dcfc8579edbfad2769bca53cbb09b7 -24dd09b7fad3d6fda2a9d959ff7694ab -24dd9fff52647a767660da78a9357f84 -24de69b459a9188ecb2ea3b0259385c0 -24e24f8bf4ae7546f5769bd5d77e00a0 -24e2719b7df9f01451bd08a2a6a40405 -24e381b1d6162ebfc5fac1538f408bd7 -24e746efa3c44bd6fabb31bd85070975 -24ee401465f1fff816ab884bf9a672a5 -24ee4add0962e3022d8148b7a2c80a92 -24f03b769d1e7faff1affd4c113f9407 -24f0922f413eefabd68dd4fcdb3d80f9 -24f916e65f03be6d23d9e0a78bc657aa -24fcff1141974dc69cb8b86b7fca9194 -24fe79cae8c31cf576c3c551fbd2a73a -250009590f4b6b66e308aec859e50e04 -25032fefc3ce694c6af6dfe1bc08186b -2509f9d332f8524d051f34bede285d39 -25109ca035692e86f8806352701edd3a -25122c0c6444bc6a06a9e49a7a2a912d -25198065c654d10526f2d8fa4416bc8d -251a873981de9f79bcd13151ca26a454 -251e78d8e3d21830f4694fd430d737c2 -252d6a343749a0a32c92fee7c4e6351a -252f2dffe15baf39621a87321a068069 -2530507e587cea9af52bb1556ee72e3e -2535e521e6260dcc0f080a01e82bce9d -253a1d66ad90844143dd5e0fb9c26bce -253a525a91ccf1585d4e5c63e7e74a7a -2542ecb61d373a16ce19afb9bf1cae85 -25434b0ecbae400f08d1f1ce0a975a5a -254558e7172b54103ba7762edced490f -254ac098e9bfb9e135684c369433c53d -254c4a0247f03368861973055de0d970 -2554b61053a3bc687703313cd7cebd6a -255552617fea2189b9d8cf554931a35a -255557afb1c78300fd59c743a70e00f8 -25555ed899b93275d70bbeedba521c17 -255b7415738d9f0f6da59174155b567b -255b8e7c14594478abb20423689cfe23 -256322ea73267db8a3b787776f4d1ef3 -256379d3c3a5ef2d0d675a82950d022e -2571ca8aa13537d69f46b629595ea229 -2572757e1ed3010b8df8cac5cf25dfc9 -2576d0a2e4dd55bac8475af9c25df988 -257c3007e4e5c788b508319e7858e4d2 -257e86ae5c40b03f2b22f1fa19ee75a9 -257ea4978cf223f28ae729adbb34f593 -258559d1a39f7cf3507b6fc9475496fa -258639812f8cd09ced7091c296c949e3 -258c185e313f845438edfbed149f20c6 -258d492746f7f699b7fcfc98443dc36f -258dcfde5fcb7e0384bf20a472e08f49 -25905d1f9318495320dfbc30f843317d -2598f8824fb7b655fb2f393f4967bbf5 -25aaaff5641ecdd6c34771bcc4b06a7f -25ad65e1cde09c9d9e4d2375a0f1b6cb -25aeb75a3738379d804e3d9781ab4912 -25b18351b6d22509e34ead351f30eaac -25b66d57fb8b1ee24fe02a119ef632f4 -25b80edce47e7339b59b44b50ec3e950 -25be92f1f3c6192f7ceba7ed8bc0b551 -25c8ab525979112e3adfe727bf7c28b1 -25ca459ca305e48ce063ff543a3b6752 -25cf815435f59ac3855420a9ee48a570 -25d40b80e855c7f3cf05fdad772535de -25d5ca0e3202c2203b3369121c92280d -25da801e322704450461c999bdcd707a -25db28637a0da4d2d6c178e32554d1ba -25ddba81ccf287c6fa1ba586575afb8a -25e1a794b835977e3e49a85a61d86360 -25e30808055bd3f1a3a56d306aad4b19 -25e513c65c2b61db6221b076afeaa523 -25e67d139b32bf5e219cddc63d25401b -25e8e8a5a06ac2fa4a2ed2baa73f69fc -25eaa9f73307d470210b79bcbe55adec -25f052d952f70c50e2de114f93095e99 -25f896e073fcfeafb57894fcba9c3aa5 -25f9217cc916e3b885967daee31b8ca7 -25fd6d2aa38e1f9ac959e318d6336d06 -2600d96295f18b2b43dc9dfccf13c449 -2601247a45aabaa53b2d08e997bbe780 -260b137532694cd8a9a87074ddf31ca5 -260d4da49476b8edf04d8793f05febd6 -2615f035989060746adde494dea956b2 -26169ffba3b71a4c39caee0e4eeb84b4 -261852fd1f5dc8de94cdc4932323d3c4 -2619aac05a14f7c3a385a45676438ecd -261b20a3cb83d2482e34da13f859d4ce -261b34507bfd5938a6c7ced1252ca6e6 -2621da5bca27b378544dda7bcaf424ec -2622a79ae380e8df842d3ebe96b6117c -262b14ae12214bc4ff5f7794c1a806c6 -262b6a5b98680b2f1fcdf47e184e5b53 -262cae3fd2845956882a0d815d73bd70 -262dd50d0752f1232e50dfca6da0a949 -2631175a7b045a37f47968c1468a11e1 -263220f7267a6273d33ae77ef65ee82c -2633ce3c56d4a0e3e965745f226402c9 -263ec16e6c7e3bdb29a5dd2c2d0a89b3 -264001400ec2643cd03cbf138444da04 -264a241caf5c2b6bac33c9215525eeb9 -264a7b40e7c469afbedbd662d4c502cc -2659431f9edcc9eef4e91f87e050b382 -265ee3126e7ed3ad7416d8fae7b09a12 -2663f5e85883563c74c51c4b7bda7ddf -2665bfef3edab07e30904e6525afd278 -266766988f683e107fc45344d94fdde6 -26691294c9672056234895cb29fb7b88 -26692bea5ade0d84570e1838ae993dfa -26732d7f97e2bdb2ea5d2e6eb779fbbb -2673cbca9a18b23b9ae79c6ae53e900f -2679b0c03597ac280fcc788161166d9e -267e2a6f9ae0dc1f962e875cfbe66967 -267f67ed5090d67448aed69cf86a3122 -2681147467b16a0f9a3bbf7bd614f7f5 -2682dda97ab9399532881925b2767230 -2682f0738a2a391b09646d9b6408dffa -2685a3b7761497dfdc4337925ad34a7f -26877848be535edfe4e57fad2ccaf961 -268a7bdeafdde9ca01ace01356305269 -268c3eeec2d6f8ac045ec48fb7ea3b7b -268e38d79946aac71f27d5d409d632e8 -268f2115ceff98d93bf446295b8e552f -268fce392976505b67f65cb72ae77cac -2691a69ec8c6e7d78805e962c05400d0 -26985bc2b966a67428de8d975e32b1c0 -269b06771e7438d1c758dbb1e273301d -26a271fd0150db3cce8113f160a8eba0 -26ac25211251e85b45b5f30ae9d297f9 -26b44d8be07fecd13165efca1b8c8ec5 -26bc12125bf72bc10e52dd36da86a691 -26beab9978a40a32e265ff8cb9593d8c -26bfc6416e8596bdf502056cfe842c2f -26c9776e2ddb02f1897b9e8c9791ddfd -26ca3450433f7a765a90c7528e3b9533 -26cd01bd4b5dcc5e086ce9f54dd6fa14 -26cec2a4bd1af9a41705d7d5e43ca170 -26d355db0d8ac62aef7d315fda622de6 -26dc6c0ab36f8ee64b1f4b2adccbd1d9 -26dd7dc1fe14cfc29ea1b29534206690 -26e1649cc1c607166b1f96812dabf7d2 -26e2f3b3894c24d7355843de06f3e741 -26e33b964900f3450585de422539ae70 -26e98276419ba68c74f1a36ae7b45553 -26ec10a7d6320ebda3b06aef1599a6eb -26f4d702bdf83468e6c599676863312b -26f5ddb872bccaba98d14563dffecb99 -26f82bb1c9a0b6d88c30f7d8bf746900 -26fa5c1ced92b1ebba2a3f5c9b7970d7 -27005870d16cb3c7c863423170a0dd81 -2702e446f2002e818ecdfc7b6aaf21f8 -270500792a5ec4bb5a8a1bae61302b9b -2705744d12738fe0aebe9895a6c3379f -2706b7693d728e893cd742e6c5455eec -271254aca475e545a16a9e63dbd25983 -2712657c73761f47bbf8f02a18a43b38 -2713b83565f5770302c756db81daeb7a -2715b7ca7352ce1b3af0b0a5b72d0de1 -2716d3c31cd5c1d57270cef26b688fb9 -271b81ddd186be40072cd540fc14d9bd -271e7d7a1087dcfdbd728b5c2c3828ca -271ed73c93c60c29f3604574fbe4e39c -271f7da74838dfac3ad02d3d862691b7 -2720acd23bb67537dde491280ccfdd8d -2721aa932a92c7d360e24f8742e0ff42 -2727f1ca3a617794aae4a969d4605357 -27283b3d3b57b0c16af83c4a357e3e9e -272bf9fb980fb3046328e70b51f8fe69 -272dc417b62949e400242eb93ca18f23 -2738041d5c3b464ba182d75a2d2030bb -273b2a858151b4a9c238ab092e2562ac -273bc07a65dcd3a2d0576670513371e6 -273d1084bf3b8a364eb533369bfe726e -2745c07f94a4ef64097211626710e49d -2746f2e565e5de8f06272a4b8194a818 -274861f24d92ee6ad67918b337b6a302 -274b3fdc964872a38aab0b9c7cb79481 -274d7ec4d7a320bc3ab7ff1882bec2a7 -2752400b04da0f06c02286f3fc8da7ef -27572e3b6064c485ba486d2987fe721a -275bac599e3cf6d6307d794b5659c381 -275bf842a584120132495a0f490f45ad -275d129c58644722c031e3bdfe4a2ad5 -275ea105519ebf9247e93d42b54a5ddc -27666625a7e2fe30819ce86345472c16 -2768a5e988ee474d1922a338d14af307 -2774a4ced605f545291c876008dc33ec -277508494b0704505dfe1f6556f326ff -2780a62679626910b26f732f8ac69f01 -278391d2b52ca4d4372b3f5cfc559c78 -2790c3bbb5d4a35df9557fa1c31f204c -279f53f4fdeeed5ba9a8c25fb6db8338 -27a247599ab82acadd1427bd3484bdf8 -27a46dc5bc010700685147a5ecc313e6 -27a5b97a28fb09fad98ad0a6539379e6 -27ac0e4198f057030e712ec12a8ea9f2 -27af51f4a0bae15ebc3bb48d21a42041 -27afcd729cba94d815e2396434c13bb3 -27c3cdeced267df8f71071a884ef86fc -27c57c453d88cf3e9b82e9078e2f9227 -27c624352b65780d0825016292d2ea4f -27cc801cc2c11422192a0fbf81aecfb1 -27ccd61ae219684f2d82cd6ee659c215 -27cd47c199eb902cc9b858459132c9c2 -27ddff57e7d7120d30ef2c070185d1b4 -27e004f93e1123d6b565f9f68dd49260 -27e35e26a10846923ba50389feb6d52f -27e459c7966b24e5d764464b0537cf62 -27e8b8a25c7778169b98395456f0b6b8 -27ef6a97d758d7cd191183a68291bc24 -27f340d1d1892daf716df0f69ba4f83f -27fd0e9a5b396202d62a07b56604eaec -28046e2c0aaafac3625ee6165a2046ed -2806edad909af910cde3ba7f65d3a36d -280dc53f93536e5d40cd916f732c4e50 -28112ae8e36843b3e15a703608ccc519 -2811c25772a80af5dd856ef20a65f673 -2813474b9ea7adc5605320c667bf4ae9 -2815b9305245194a4ef04479ad84904d -28185ad43c5e4bdfc69b569a3de56033 -281890efc9f8e3ef0036cba0b7f1e6bd -281b15510b4d489014bac2f9f02f5f5d -2828b235d0dc50130ad4c3c04a12c14e -282979f66fbf53996ad511881a1b60cb -2829abaf662901591b43f99ee4f51b38 -282b26f19bb0e6ddf7473ee4d67279ea -282bcb30c49568ac907324ca751a4d06 -282f1130817e182ed7f34ddc365f06e9 -28323673060c7d786d8213f80f9bc8b9 -2833bde063f81e1651d066d2eaa751aa -28393b1acbb84ed19ab965341daa5729 -283ded9349b57de1cb44d9350af8bfde -28403b063c3c1353b86625dbe4389bcc -284086bfdcf781d0a464e2ea7decb395 -2844e31409c734fb83d502723cad6d43 -284cec5d062969fa4914e18d52f32522 -284d774e619c125a14177e42e81e4fe2 -2855d36054f137c8a573aca416ad4152 -285c16ccdb48dcf9aae9f766a8434610 -285e03b0f5ea523912118b1e70bb6913 -285e417317dddece917b2a3690c86d8c -286091ed30da0c7b77c9d2732c0db5d1 -28642291fedf80e854801f3328ff72e1 -286771e88711e66eb4f801c50f3d85f2 -286a57cebf40f39f75ba950bcd2ec2b7 -286f60a788a6c8b4b632b703c1645217 -28716bd82dca139ebc17ee388f029106 -2871d8b61347dc292abbd77feeba4315 -28749a42163d3edee68ae55c7e61bd41 -2874a90f38244928dda6012361c65659 -287f5940146f369bcfb149c266233f4b -28820a49d6f6535bca25f260eb4f8df1 -288d8400d5f457124d980373ffb533f7 -288daf9a6bc30ebfb55de1de07575cdd -2893e82e384d24c4b8246651891c33ce -28944ce2047e683d4d7a2d6fc0af0244 -2897f6a64d1213373105272033ddb983 -289b591ccdb085a5953285590cd31dcb -289f31bce73285875ca78bf48cdc4e4e -28a0378be24361841ee30edcd46ea5f8 -28a342bf855143e39273dde35c50bd50 -28a435f4ff82064b09ef489958060ab5 -28a4e294edaa4a6a3e2536b020675898 -28a80679b4a0a408c241ffb002df9d8f -28ac2e17a3a7521eea929e5de9cd9343 -28b0300daa3f36aaba68f56f8ecd94a7 -28b2f78e975aaff9228f7baa33959397 -28b7314e966befb05355023e12d6462c -28b7736f0d226cc40aa3dca2d1b10cbd -28c1fcd69bf3bd89a85ddf54ea99eb80 -28d083f9effa756f26901edae3ab34c2 -28d25a82c04c5fcc231e980e4f1b8bcb -28d610caef84bec33a19c864b4b14bf9 -28d79b60fb216c681e608d7a2966dba7 -28dd38291782f23f5841ea2292004132 -28e00ce83164bfb8c6044d3d1a89524d -28e1d834e441875ef520e1ff147a7b24 -28e210ae4101e6dd931a8d7909ced98f -28e2f81c81908c2fecf7d85a6b7ffd3e -28e7f4e342e2ca958cec37ca973b9718 -28ebf5cac545d356e3fd3344387935b1 -28f02eb7926ddd24fbacdcc1e6f8ed3f -28f0506cd249b0fabc6701419d1a7f66 -28f3d12853f3a11b5308b513c31048ff -28f59569916c19d7b164ba518e8b3a15 -28f74313f443a400308d463ef55fc7b1 -28fa9652a7e4e44313291b547baae726 -28fb9f4ea11bcfcd9cb70db006ec4dd7 -28fcba8352ddbe081f9ce5b50a9bf62f -2905b004864d92207399605aae2ede90 -290e0bcae7f26505820e5486e49aec8b -290eea53a38d0966582663f12c491395 -29114c861e2c6c1cb3690527f540da53 -291280e9f2589499741d83c7d26da79d -2928dfcda373fd32875740f2f8b0386c -292c873419648853276bb1d6470fb3ba -2932dea4fc0afb6389fdc295e1ae6573 -2934aff5a9b621985b5f5d1322c60227 -29360fa82bef4d6533989c7ba6fd533e -29374d80c373f8f84dac77487a4ac71c -29398da6877ba75b1b2bba26f6572a97 -293ae1845b27a38a63fded8e586ae631 -293b088645a7434f2d8c3b9fc3c55f02 -293c413d6524538306c8607398a173fb -2944c8423c63f57a5733862cd312512a -29468277b20b304aa17563869fad3b15 -29480b3563bf77652a92fc28c0f552be -294b584df76ef38d63da26c1f530362f -294dc12df0340b526b4cc62414d3252b -294e70b1e3daa2ee44a9edab5f6b418d -2950f89069ffd8d0531bca45ba4c5c91 -29516e0f135894a8257b75dd2c454316 -2951c594736dcda34399fc0249822bfa -295427900bd77fa811e86b37bc8bda43 -295761e29a79bc18b89bc36d7e8f9987 -295c9b2871a2503a51d26bb95ba7940b -296211217f07bc778390b76e24b0de50 -2966ac1205dbed991ee29c74bb7ff804 -2966c0f7e3acd67849da85779d1736ea -2969c9e79c3c1e46ef5ea25bd387735c -29720832ba0d2a099f762803bd87e21e -29730a44d263cd9bce94ff41aeea691e -2974b07267c173f152a69248939509f4 -29766efc5a9d8bd7582b88529aa687d1 -297a5cd892836e02e02e75973e63ba0b -2981b24a8ed5ccad8e5b77aba148a65f -29826a980808e2a6ac992f6e3ed8a0ce -2984d2d255a5e3a23ebe3755f77b7427 -298ea4504b783283b8e3e53c50b6e7fc -2990a982f0cf642fefa482c42ef27e95 -2991949b2a31c16b203a167be1c860fe -2993ee29e7594a37201a56c234f966ff -299a907161079107fce333ffc7111612 -29a21208af6c873e55449c1e4b529b3a -29abcf4037998d0fccd4f31e7e260afa -29ae3e8447f5b050b2be530db71609c0 -29b17e7519c831f893141f9542c833dd -29b2ae7b5d886e1fc0ead35e4e961e76 -29b5e4d26afb7828402a7f01f691f512 -29b85804a22994e70af6ba168f6bebd3 -29b891d90b9f3159449241c798b3d802 -29bb2d69d6619001f794f23dbbe4b4d3 -29bf5a8881e10e4432d7fa79a4e11ab7 -29c14698398d9b4c9b762b45d75457d8 -29c180f6134f915643462ab5b3ed709d -29c24ce3e33e564d73dc1d0b8357edd0 -29c29a98d7a8d4e58184277ba555b5fa -29c4b1041f63953f7e3fbc1dcd22fb8e -29c76624bc7c285acbfb69431c6d39f1 -29cf6c9fbe1dc84756bc1e156a3991c5 -29cf87a883a757be07aa893bd0dd678c -29d4edb5e7b4f66e34a077142be4de65 -29de000170d2b1775c8898ff9aa708d8 -29e8abbbc20f45e4a782840d4406b86c -29eb0f4c21ff03b42db2fce8dc9317b2 -29eb23f8f6d1db96342aa53f60912132 -29eb984d80340769870ff6deea286f8c -29ed472a9736824c7d6040bb5043cb78 -29ef7e3e4592692fee84235712a603b1 -29fa664ccb2309dacf461e94f63bafe5 -29fd6639ca9813cd680da5b6a9ed009f -29fea0396096069a878fcab69b5005f4 -2a023056e0890f785930bb1de6e775b4 -2a040ac5560ddd7c5cf440287b453bc6 -2a08857163c8b75dd22fc8799f83b6d7 -2a09038299e7a378f9535bb8d4215d98 -2a0b5d897af8e37fbbf4ad3acacdc40e -2a0d34e7c7aa83f6d4bd568784470147 -2a0e92bcc3f07cd1f68031fe8b21c4e1 -2a11062da3ced2c0e4d9501510a7e343 -2a18647f685bdad622f27b388b86d0e9 -2a2067d1ef5551b21f45d5d5865b5e32 -2a276f80e26235f32adb1eb6fb9030e5 -2a27e0715aec756b6683e76da60ecad5 -2a2a1300871101fb39c48d0f572f0d52 -2a2b003cad45cf417741ba65271879e9 -2a32473b2cc50c371c23bbef61c6bb64 -2a3305649d8290803545bc61f4aadade -2a3422316d930af63f6dce35c0612cc7 -2a3aaff72d4e4913aedb16f5ce5995a6 -2a3ab9a00fdd851278efa64d4df3e6c5 -2a471f5f1bd18e097ad7f785fa7368f4 -2a495f1503c76b8eb55717547ff373ed -2a4a63c56011d5414d177015907702a7 -2a577b62dbe372ef183f0cd284a9ca44 -2a5afd503775cb874a31dc0c26450ee8 -2a5b79eaa377ab232d98a07399d16109 -2a5dcc3edf2c89910ec07be21e8527f1 -2a6000e0611807322680e97b65d56685 -2a71bdf4f62f0ea79c7db8337b187562 -2a8c5bf87996ddcf9f5487978efea94e -2a935ea55c7eb4a3262fe7ef05df2300 -2a96ce99e35d367489cd25fdbed3daf6 -2a9b452c01281ba8a5026612fc14ad37 -2a9d2afc45d6673d9fa89591d7ae3d75 -2a9ecac5ed7a516924c7ae58a2ee7977 -2aa2cca4b4f30e9ee26a0a70d48817fc -2aaa96c343f13879e67528c6af5fe772 -2aaccaab6b6c5d6108672e55377b898e -2ab0a36c5937cf9db080365640ab7a17 -2ab256e0469f1010dffff10723a12905 -2aba00234f64c02f2be8ac4d4215e623 -2abc8809783131f9c6b8d9268a55267f -2abe82bbd8d32619ec0ad3fb0161e630 -2ac0654fe70b78bf94a567c8e280b927 -2ac0fe15a2972012a3d3f6f0270b48eb -2ac4cadebfe58294dea27c8209764411 -2ac8a19ec844bbb7f123598ae348e30e -2ad09e0f68147629a1b31ad63c59d91e -2ad1d36e6f83e601513c476c5023e6c4 -2ad573a6e4d9387c83b20ee78278e929 -2ad64a84aaa52cfda49a406f42b6eb23 -2ad66171d913a813a92f7bad05768ae9 -2ad936f9ae8bdb63bc2fa78b7516e6dd -2ad9a80098f88f1a96b0678cf2490020 -2adb6370d8f5a5fea229a36194a89803 -2adca13c297a086a2bef248e50b34995 -2ae23f1bab3c4a2d93f6f5fe53b5f3bf -2ae3cd72ec01bd301a04d9c6129a26d3 -2ae3ecb46b2529ed43313faf996c3478 -2ae9b15fc0ecada94d7cafd461a0e1b2 -2aee2a8a83df2c8af20ebaf3b3042a15 -2af0d89294ffbb7d21162ab99ce17886 -2af736a90187134b053a137b163df845 -2afd4f05f398a73176af13e21b386d61 -2afea65f6046085b40e2b7c3101bb21a -2b0239f5ef9afee27dc7f8c63cf559c1 -2b04d6092cd24d431b24c6180dc8052d -2b147f7146fb269465c25790dc3b2ee6 -2b151d1062220fd48b7ed07296746179 -2b20142d18dd174b48486565f93188f2 -2b27a76f0f35a5674a6a921a26c071da -2b2b01d3c3c019db23d82fbc65cc9fe9 -2b32aaa63db826f61de0058c900b57fa -2b414e626d3369a3cbc09db841e4ad75 -2b4705432991e4569c37330467f1bf9d -2b482a9c2f7962f553c556b3be9b7059 -2b51d23ef1a88398bc4623495fa19fc9 -2b52b7d6840b4fc800bdfdca03780d8e -2b5346a83a3d09c4dcf78dae3983784d -2b57db5b5d39ecc648fef97ecb3a8b2e -2b5aebf5c14c92992b833c87aa71b066 -2b5ba6024f3cb6cf1e27685794e191de -2b5d0e48e12bd2f44179966d58b02a7a -2b5e4657c8cf3ee594cc20695fecbd31 -2b5f0dd535a2eed63f5980866300b746 -2b602ea30d165c9b4c1caf10037a31a0 -2b62270f7734fff4e7c678628415e50b -2b7c2a800434c285fe08f1c525c12881 -2b7c6783f7f79a7045b2deb5c46d9743 -2b8675c2e525423eb858f0f437d53cf1 -2b8750099dd03aca6bae07545a5e9152 -2b88ac7996befebabeafe55af1b21516 -2b8eeb41c39213c12f9247f21ca078f1 -2b936c06e1ea5bf07f6901e42414cd44 -2b989b1306e18793015972134df6ab32 -2b9b1e8d8137b2ef9230f248a0ee46ec -2ba0174f07c1e38eee5c0c0bc44e9cf2 -2ba3f29944125f5d970201547722ae58 -2ba6b432d703f60d1912836348895c66 -2ba932b55a02e6fb5250e4df8bee0795 -2babe0d112a662c3db7951a2133e2966 -2bafbba911db6cb8d7bb46e133eba619 -2bb2c218eadea506dcfb65a396e47a9b -2bb8685dddea1982e17f7bea7b9d6def -2bb9c0aa9859b984d3fcb36b1bc5edaf -2bbff074614338515c1dfd7764cc0314 -2bc104cdb97c8aae6392fff4602afa45 -2bc1590a73424f652ab07c8f1f24c78c -2bcc1193731a638e5d82885bc8d311e2 -2bd09f8023736fe21eeaee1286fa36df -2bd4b7ad70c35bc8d7f872d4adc0abbf -2bd4b7f8a68e5f830eb86e7f01d679e3 -2bd5c83d815f543e24e5041c02ae0799 -2bdcb7cab60f6fd9bbda4aa850cf5827 -2bdf3d0849d2d3fd0f4b2523859d294d -2be09c2e61b63aba07b5bea92c190d14 -2be8340909b6350059239ec4ce8307d7 -2bebdf765a89732ed6047db1c65fe594 -2bf54fda87808eb490b0bb642664fb46 -2bf5bc6ffe94ca002b71e7fbaf31e662 -2bf7069e0a401d0b3893af97f681968d -2bf91ec9421a077577a796de32b424a6 -2bf99c263052d69c7d7473e088780aa6 -2c0335d219bdc9bccd89e17ca3670f4d -2c093f7b5e25b0503161df9599d7c059 -2c0d6effccd658e127a73fe1f3f87bd1 -2c0dd7baa29b3c8d4a38e8fcdac1cfef -2c108205dd7d80cb4350f4fc37b86168 -2c108b66e4e340692b6f75283a2518d4 -2c1b1e6eb30950cf8171e36101da9d8a -2c1b565043ba98542847fb051da3fe92 -2c1beb65b541a94fd5d5981bdade52d7 -2c1c9fd7e45e04aab69409c1ef9a8e30 -2c2020ed277bc7f4b217b4fc16baa92c -2c20638481315429ab4aafa30b7dbaaa -2c2085c53c2409c5dd06b7224ce4c2ff -2c317cbd838f6b6477b8412eb0e286b7 -2c35ab8eeb437b44e5d07e5d31052feb -2c3753c8b6731cacc7bda77a5de26220 -2c378789cd6bd90d65f83bed7ac561f2 -2c3797b7f89e0e8d7f5ab196f3772fb7 -2c37d3f274eff95439fe6f35afed2d35 -2c44b13699c5f7a6c1baffec60ecbefd -2c480f64a0eeaa2bccb48ec7e153cb4b -2c4f49a5925d334cb69d5f0a926efcf4 -2c567338243c0317c23162758da032bf -2c5f211958028311b7b35139bbbf6f88 -2c6482faebc836ea6376b6424f27b24f -2c67d429e3d6384c163147b4754ef671 -2c67d86204bbcd94d8cc20d852663ec4 -2c6b9ccce0b5ee8c8c3823e3e86995a3 -2c6bc7298117185bc917c2b0ed7a78dd -2c762d2bf537a7b7c5afd5ef84c9a765 -2c766d4727e60491a95cafb6b3c13f69 -2c777f1e1fe2131aad12e7d0f1819d9f -2c77caf738a951f166da3e3d8d0b88bb -2c7fb74cb998b1026c96219bacc5947a -2c86880e44117c4bf68e20e95036ef1f -2c87d7e743e05428e0ad138b28e883e1 -2c88b9be2f85cf2e3e060954ff819ae7 -2c8df90ac2248ba8396dab6fea7a82d7 -2c94c84b6c3b34672a9136f945e40aec -2c9d054317fdb277c7b1bcba6a73cb75 -2c9d86ead9c6c144db0c548833851113 -2c9f95db3c7ba3c4e226ea84a8859cb8 -2c9fea923dfbb4e98abbd242f8500c83 -2ca3d184874cf5e4e18df304cc1f2ad3 -2ca6d897d7dc40bd419787b52652b3a7 -2ca78ef787f3b6b356fb9f672220fcbc -2ca86a2ce837cb49acd81facd8669159 -2cae0df600e3fd618ed2a51c3b1e99ab -2cae3d818cf5d86d9487191f6bf4d7b1 -2cb203b4c5bcb917449cb90e8b05083a -2cb2da3f2c413ce2d265e06c0b47bac9 -2cb6037bdf9fea49285c7622504c1a11 -2cb75e0f9b5eacef2859838e8e4d5a4a -2cc09bb4ef5fc8e1eb7019ff18d03467 -2cc16281a0dd0be8834d08b7800413fe -2cc19a6366c2fe7ec62c2474f39b0b30 -2cc385818ff2b882209763783a112af4 -2cc94deb119716c54587e4f5a4247d41 -2ccc625da3e05524d8ac0cd049b8e3f9 -2ccdcdb65f4802127012b617ded4fd62 -2ccf4dcc2326ba9b6cef96ede8f19ac4 -2cd0e79adc03b37582fb4ca1e29ee0c1 -2cd3487e80f8f54abb96a51be0332809 -2cd44e9130f3bd689c05fbaeda5f50b5 -2cdb89c9a6a1bb55a08f32bdf102dd71 -2ce0c0e8d4343b728f0139c667274f37 -2ce97725436aef537efd7590094db0a3 -2ce99e4573b47b8101832a6b87924680 -2cf17eba57606a8fc943795adbf80e8b -2cf74703c0f4e5e88fa9e3ac0e3d7118 -2cf9ddb72393b236d64863c080db5220 -2cfcbb282bc039defe22524e75f00c80 -2d038f58de83385739846d037531f12c -2d05179316185319a254ae07fcb4c3ca -2d087616106ccc3147cd472ba627ed23 -2d0c5b39c60c8445fe858965aa5270a2 -2d0da2c89c779c5d3cb8200fa220c28b -2d0dc2b22c154d87b66b10c7e03fae06 -2d1040da307365fc69acdf53f1f4d413 -2d137c5640be3579525ca1da7d6f182f -2d23bb220bce28c5eef7f9a5e4d83989 -2d24ec1d204ed02a25d2aefd6b9e1777 -2d2631e17aa89e444e28b5f7b8fd9584 -2d28b29b5c3ea171d5d7d2706f49151b -2d39a7e23cc1e979aaebfe2f4af077cf -2d3b5c46d18dc18b5d2bd1ce80e75a7a -2d3f173418c36b889b231c5e718c1b64 -2d416779226b7f1a5c986f4d5d36b104 -2d41e0df8889288cf79dba3477502e0a -2d46ac73fe4b37fbe7e1d2dba7118152 -2d489006d499b10b94b6f2dacdb664d1 -2d4c8b352910b5fa532b083e40f5b56a -2d5508ad54959b041d8df6094833e973 -2d5562fadc0df660029e9171ee550e17 -2d57c414517fbaeec6f60883fee5f21f -2d57c7fc1219eeaf8d3731cffd4c22fb -2d591b8a0e51d577690d5e28e4aaaaa0 -2d5a4ae4fb0bcd6803918d5f6b3cb8c8 -2d5e135529545decc9deaf2e70ce54e5 -2d60e746bb32e362cf1733d8ba5d8d3b -2d6655fe9d18cc9389192b4dcf507ca8 -2d6921408d0d131c124125de5b188a89 -2d6b82ff18ed6f3c0246d15dd0fa4655 -2d6c016481a9e5a2e42762c5947e428b -2d6d5850fec17c7eaa68591fd9b9e348 -2d73ae474b8bbd4bf178e9f652cf7ddc -2d79a8f96863371c063f6087ed0d2502 -2d7cfd76b0d0cc2812808801e53a0fcd -2d7fee6406d08c47f0b3dedc7c81505c -2d808561c772b205b05ed0b63f4f859c -2d875fb62c8a63ce702e95c9a1a57800 -2d8c6a159de3376f9938aa5ee01528a7 -2d9176b2491938dc518270966ccedc7e -2d919d54b8a5e098e2f85abbbd96b002 -2d94de6ed53bfb807e70c2f4506bec4f -2d99c870b4d2b5dcbf54f3e70931af68 -2d9aa50069b483848fe0d5aa71083817 -2d9ddf60ac7abf311b072262ccc56132 -2da5cb0eff92d2bd17583246af03041c -2dad28290012bc6c23dd9f207792eba9 -2db327ca2e16c832b31979a3b22e0b36 -2db8644449cb18a03a1d966cf52f9a95 -2dbd05f29c1938588c9998d194d604fe -2dbe12a82542a2af060dc3517e5bc538 -2dc4af79674a3e1ada7f991f9f0789bb -2dc6c3d0783e8793e180c44261399964 -2dd2e8f6d97b9c290868c5b0c333bab6 -2dd31b2005ead36dde14cf6c70b271fe -2dd3d63327fff6ba5d9623b9d89c6d11 -2dd70be960480bff4510ddf9e59e23b5 -2dd811df9c6874ddee85cb6a6175f713 -2dd847d7151fa73a39414f47f19ae3a6 -2dda9c87c4ba7cdaf1b12dce5f0ec4e6 -2ddf314560e532f6f1bf985b1dd274f1 -2de095e40085fc52e99b9a414cebbc1b -2de723630f060901e7b58f0c191f2bec -2de85e67bdc5c5483096b5c91c362f27 -2de97d8a4f5facf55a7ee6d5bce75540 -2dea65a10b41f163a63b288b70d6e17f -2deae27c04566155ac943ba8c0d5cd5a -2defe04565d1d57ee3ba34f1146454fd -2df05bedbc557c782d3bfdae6c7ef02f -2df119899886870c0ad65898bcf47d4c -2df1e36bb9029d65c5d3771639246ea1 -2df3428f994212305cda8c223d583dc9 -2df86fac264f39b32f39b2fb3084e06e -2dfa40f48e03f87c0cf7cde98f9d08dc -2dfdec5326523d6c6629d3ce34a8f984 -2e029a44293f0401a61b0adb5c47fb1b -2e08183950031106b16129fab07bc161 -2e0a2ec7c805db7af8874f96011fca5e -2e0ca34e282836261150c172760f0ca3 -2e0f9d3bdc2d6b43a66bcd65bc4d880d -2e114aed45e6462bf56789a792426c22 -2e1224bfae8d9ac959bfc4ff3c4f84dd -2e1646fba2336d1573d070263f6e3cf9 -2e17ad6372c31a697e047464b315b0b6 -2e1b6b8a7b4f42420ef24de9913bbc7f -2e274f859109c672b8981d5cc87f6175 -2e27ab13841b7a945cbe7cf11e66af6c -2e315e169e3b609033c6d6e71c8621f0 -2e3527733a74071bcfe3a789f2842285 -2e3806bed176fc56ee595ebb0c94a4dd -2e3887849f159253d1e89d66667f9532 -2e38f2c2ec05d263046707db24279353 -2e3a1c3b455a0cd9c784680206781a0e -2e3bf670aeed38a95af96ca49d49a552 -2e4ba54bc4ffc889824b0464aa0817df -2e51b17501739435c4dfe05451d747e5 -2e548db7290538d10a02b688232c3288 -2e57ef4d969ef87d4bd3f2724c9e1950 -2e59476d633032320b310e42e12c5844 -2e5bc8506ada5f85dc95d22018625773 -2e5be2d35b4193d37c529ac2efd80d7f -2e5c027e431caf0c579b84b329c06e85 -2e5cd6db49836278b7f7987757e4a2b3 -2e6153730b722aa1441bf8de2e2225d7 -2e616775d28dec3a34dc94265ccc9308 -2e616b83fc4cebc75566c2eaaa857103 -2e63564966aceba0f2e2555250153593 -2e6b00f0152f28af4b86eed0cea8895b -2e6b6984d45cad21c38fb47561110224 -2e6f734343629ed6a1513df77506439b -2e766332ddbeeb078e3aa5814adc7a8b -2e785a113ac3fd5f54030870a12c00d3 -2e850c5bab1f3fa4007c35375a37cb7e -2e89ed03fc4b1854cddf83d9a858fcb0 -2e8faff11ebf0731bf5ca871daf06b9d -2e92fc4ef7d5f2d453f1f6a2334d7fa0 -2e94ef3a88a064bc216efd0cc0c8d3a4 -2e967dc3a29057d5639fcd7f83e74be6 -2e97547500f35f3d7f56b9fc490fe6ca -2e9cc4a352ee4294736d18e131057f20 -2ea6f0836d143772771baf0a031ff74f -2ea96bfe9650a46866a48dd7c09a534e -2eb3f9f115e8c157ce375be88dbff859 -2eb44046da4d82bafe9839b8b10dd2bd -2eb6de024c6023e7b5e968a47fce1f76 -2ebb57ae3ebcbdf46afaf1e515326df2 -2ebb7113401900efd89d27b4b4fc1a55 -2ec4fe493e8302cf4d825df4f7ddc56b -2ec77bed5b3e3819bf4b20602c01b480 -2ec8bbe9dece3ea342fe6fb61da22ee3 -2ecc3c58524cb7ee88724febbd03e3a5 -2ed0c3ef9f37073f5030ce73cc88fa36 -2ed326f26aac3f9c5f9550f1322e20ed -2ed9378a8dd929ce56b220226d18757b -2eda81246d7916e5f54e5fa3789eb1e8 -2edba639e025ea903b4760b6331317e9 -2ee1e6b8752e47131681e4e658f02922 -2ee217435e1838cb62241f8a324cdc5e -2ee25c778e9e74a954b9f6977da9830c -2ee3caf145b9120bc05c1b424cf3ebf1 -2ee8f01817f248e9bfbb55d0b9a2a8ad -2ee9de63e39d8744240b6b103e27296e -2eefff6c58ae677411262cb79b2d7978 -2ef2aa50132eedead31474ac73f6eb08 -2ef6e24f760c9fd4005bf21249e1138c -2ef8eb69fde2f1f3e396482f0a6f3db3 -2efe8f87acf78ea4655337bd5348efd3 -2efefc24fb62f2284f320f41facf041e -2f040bbd74882657290053117f8e47be -2f055a9e6c51892d2b29ff53528a1bb2 -2f0b94eefbc4e4713f2d4548d631cc28 -2f1397a8a66e2efc790776703dc0c722 -2f162fd2d00a2cb3959b37cd732a4adc -2f1adf43343b22357f4afb2c8861e88b -2f1b6a17e0b24bfda250755fe7dbd136 -2f2685a732bdd6d246bd8829fbd01cda -2f2744cd8d032de2f73b7b55447636c7 -2f27f2f290ecb0f818236443e0d7662a -2f2a3e9b589ddae5914b37551b23f630 -2f2ac717b9e92edb70b6fdd882654969 -2f2d38ef28f69c02c6d51907a28a2ffa -2f2fdf1c56c05d36589ab2bd0983f0d3 -2f388e4f3aab75abfd9a89607caac5e0 -2f3d3d1e096ee47bdd2fac9bdcfa4d18 -2f42b71a001b93924bb885cf29e055b3 -2f4e5ca01d04a50c91acc22732235cb7 -2f4e7a1d991d884113efe43eab9c27bc -2f50013b8bdf330f1bf02b22a6116419 -2f53e42d8eabf10ddc98a6529a8a61e3 -2f5f13cfa9ac497672dc34cd5c86e5b3 -2f5fc059acfa45204510f9b7d85263a2 -2f6556e320cb07b9759df7b3a31a3c31 -2f688db067b92a5f32742aa57af26e66 -2f6b553db7db5b7c79563ed626f24ecb -2f6b94952c769198ca6540b9a9269d96 -2f6cc54284063847903a0b5a4bfa231f -2f6cd60bf5a4a068e5ab39b4003e518b -2f6e8bcf9dce75e9f23831e759a08cdb -2f71f2706524be1bd387bb7d0b6eae86 -2f753ede59bb097edfde6f23e69bc373 -2f779e9b9296ae45ab904b24ea8a21df -2f7b0fc80de1b3cd151d6c858003f720 -2f7df3bdaf3e938127854034527e3931 -2f80afb8d73a7159b83480ac922c09c0 -2f943e8900b7f867e60b275ea1b6b855 -2f9556e2dc460cfbafd2961b3c2a104b -2f98afb5a7b7c7af013b1ae50239c0e0 -2f9f36e3e9c34041d25fe7b12a19c0ad -2fa5f0c940093d3b9677f160a2bd925d -2fa7c3c137b9ae0229a64fa3ec0b89c0 -2faa7393187509976167b601abf59986 -2fac5bad535410943b367dc515bc8dab -2faddb1bbfecefba6f0262bce5043e07 -2fb0137e0e4292b071b680df14ba2f41 -2fb1396f807dccfc1a956086a493c69a -2fb64d661c0466290843f07b89f294e9 -2fc3307a828e885b3673e46626f0d806 -2fc49bd2e58de22f783b1945a0c43479 -2fd235eeb33435cb8de4fb57a607c1f5 -2fd4a4fa2cb67f29871a154476027614 -2fd7cfede746857c9ae82850daa770d7 -2fd8ee12541fdb6c2148af4ae2782441 -2fd927da3ef7e7fa2916ba807d590f43 -2fda08360535da2cfc3ff8f74da946f8 -2fdb11f23c58f769b08ec103e8567469 -2fdd079314a5087e5a6c7b423c8e2e09 -2fdee1d0c42d73838a147ac5f68e2581 -2fe095aa47a21a3f0075b1d4d0392898 -2feae3488dd9062950dc4a81ba986bc7 -2fecc5879712c51e58ea63d9a032cf04 -2ff1d0043715903d5bf500a346580f96 -2ff1e62a192ff56015af810b29064a07 -2ff77653324cd001b57f7d3bc98e2b0c -2ff944dbf6d4176ae19c5333d25981ff -2ffbf863c35ce438bf24017772817a50 -2fff28091befa4bd799c19adb68a88e6 -30017ba1f6bd892590eaa7b7e7c23ef1 -300be4046f1f16cef6e713a4bf61d0fe -300e62c6504eecd256994c56c5674da2 -3014705b256de967a69bedfa5487cae7 -3016f79a486025408b1fcf379ad58880 -3018d1bac8748b68340051771737bff7 -302b6fa6fa81883c462aa3b8e4ae3a54 -302bac34c9854bbad454adc145a87fc0 -302cb8dced187ee9b257778c8d642aec -303122b30d511b6146151f9ce8dd1f09 -30320b21e2dcfa187e0ac25d40f1fbba -3036808661f4fb5f7053a0dd83c6b100 -303b2ddb60e93496f92de0e554ff7078 -303c0808ccf98d0e26503ee49182c40d -303f548a4b23c73a8cd023065b521f5d -304503011a6cb1248b410f3cca966126 -30451fae74165af2035080ab28102453 -3046b084630016263dfd40a2277fd9b4 -304dbde172afed8e11cc29d5e72cf891 -30543459d79b00cda4a67539a89f013b -3057772225a858f1c15e13a286c53c9a -305c66adcc77033546ee708587395317 -305fc523e90ab538543a2267bc189e2e -306049f5ea1d6d4311b4a7fdc5fc7cd4 -3060e28878e0e68ee576b229573717eb -3067501e940120339aa799dd3e6ad285 -30730117496ffd12e1f3d7c3cf6630df -3073c6c43aadbcc6b9ae7b43694e25ff -30799df3dbbd9c6966498459936415d4 -307a6174e019682e75fc367c64dea0a9 -307e529effa4d4b73014a9343e4a196a -3083073deb2a4a1859c43e3ca13df5f9 -30844cdac9103cf583ea0aa40904302c -3084a2fa3e824f74d6a6a2ba28c18f36 -3086ab03babf17d0c61dc50c0b5d78b5 -3086d43e355a0fdd3d86640960e72064 -308770d1e98e355d9df45583b2748b5c -308887bf914829182dffc9bb5f62c1d8 -3089e44c22d1751cff5a646021c2ecd8 -30914fbdec554411b0bffd360011c17c -3092fb40cb4544973187f350dd610383 -3096d27f75195970eab5551be673eadb -309c8436e5cdbc48b66f95a899cead83 -309e6827f7e2f1aa577dff4480a5e74a -30a16a448d7e1ece7286b97da6cec966 -30a6f2aa1db9ada611063041dc5d1bc3 -30aab146ce00a97bcf54103b8a79d354 -30abf3f3a1b4901ec3b96cac397f6610 -30af6ec768c24824a5a129272fe5a15c -30b82f0e1ce0f4a11c66991ff927addf -30bb43932a47a9b06510401fb58591bb -30bf7cc634433e64f0229d6560fb75e0 -30c1c91f8e080d4a90e01294fcac0fb8 -30c2e85b811f8aaddee860ba31974b88 -30c4096aa57641c709ec9966c2f8544d -30c529a35ca8212ccd2018c5a4db10ae -30ca24a1ef30c90fa9b14112f36130a6 -30ca27f47f4b66895dc0b5d65faea20f -30cd3a88a4cf921f52382336d9de8eef -30d5172abfa33c439035ee0f297f413b -30d7b59fdfbc71fadb55839455fb28f6 -30d7ca5a73c6cc495294c4a1d0573038 -30d8f80c0dbc968f1ad63ec71605aa58 -30d97dede76849a5fdfa858e977be6e0 -30ddfd68572a3589245f79618f3197a0 -30e5e74972d6402ceecc043f653a6073 -30e84088a717674635ad3b054066efe8 -30e8c80f99bd509ff8d409733a1fa9e8 -30ee278f655b0ba634698d94ee0ce099 -30ee85640447b5816b5dff5df40d7fab -30f60598c1d74cf66a3f8dfc7559ea07 -3100b8257162244abb54229c31a0d286 -31012dedb15099d66316b7f9d5244270 -3102ee4948b07ebea379accf358f4523 -3103884b11c754dd558d3cd5993070e2 -310ca4cb621a0f5ab612b5468e25a62e -3113be3ff5e68e3d894e5c17ec23d01f -311d0ba7baf4ee3ebccaf347c25f5d7c -311ff64b872c2ecc7eea5c51fd3b0e06 -3120a25c3110142eb56c5a8a47ebb5b9 -31229a551a2e1d7682228f074ae262f8 -31275be75440103b46d78aa3e39b3dc7 -312c083bde5928b960421c090ccf0116 -313118aa5280818f12889e9a50cb5544 -313430a746edf0f57e43f72e722267d9 -313a35614c525d18e3fa17ef69cf50a2 -313a9b779c136b371259043cc755fcff -31408d311df8fea0cb6843cae64bdc54 -31438f3b05d9361afcd966de56bbb48a -31449f3a1f5a7fe8792379365c99a9e8 -31454b5c0d93b859a5ce99e545af8841 -3147b51a711da136e195d4e9f59684af -314a039b5dd47fd2fd71c955e8118155 -314ee01d4c149eca8f8efe68d4afa6d9 -314f59cc685c36d7869d6ed2ac8f9650 -3157b33f5f72f8380afe8833f0c63b5c -3157b68fd0e9a50481a9ef1451a86526 -3157dc736dfc5361029f67b6c144e30b -315b26d79673d11760d42934198a6471 -315e65cc1f34c1811a37f332e87afe00 -316019a760a7e6d275a10e07af16a9e9 -3160cd7c0a67d6d8f424e81c375fac48 -31625ec9963c9f959ddd11f847ac911b -31657ac7f759c0c97a1e6637e187d029 -317339ae51c4eb8dff6c0124a4d33fb6 -317f125d0ffe193a666508f0177bd461 -317f6e1f5f96bd23fe73caf058223f76 -318a486c5b6e86615b60601ddd2c2310 -318b94d32aabdec9a8531347f58c8f27 -318cbec3953192ab9ee892a35c42d5d9 -319094cdd5a69a7be601ac706f01405f -3191fa7e3b4fe580e2513b57f88760f3 -31992b85fbc12fe25b5bda68c7b88d20 -319f044d8e58d981db044e106053900d -319f1345e14e1e348d4929aa1e8ebbcd -31a10914c78bb0e99cb059392e6d58d2 -31a83a5544b19e19df8a2293d509f4b7 -31b05c1a598a97b4bcd62b535741ba6e -31b5ae3dee7e807212ac16d648f16e94 -31b617b6ef67eabe69fcab6cf3b73973 -31b74033d29e2a6fb1f7e9581c60bc6c -31b87728770edf893722d48ae2058089 -31be90e344ac398ec3e0f921256735d7 -31bf809af154c6522443bd92164cabb6 -31c0aa0ae4f9cdfa501920a64455babc -31cfe32afac7c4cb57a2826dd7798bce -31d2a5d4299fe6ca862155ead1cf67b6 -31d51ba660e9336ebad0f157845d9e97 -31d9d798f4348bf5b9ecf8af3a3b69e0 -31da3d7304e52e33aeecd79e156c1c24 -31da9385d6787ac12ba3257fbd7da273 -31daf39d2abef27ac0bbc47524fe010d -31de02e80018b719d02888460b83ec9b -31de914a66869a04ed186a78b3dce1ab -31e2d3bc32cd48e8f09c622974836abf -31e3fff180c6c4f05614617a21097bd7 -31e578bb3c08c6a0c616040e62d01096 -31e9ba55f561c35b9cf78a7c1125fcda -31ea900c30880958469adf1e60ac717a -31eaf85ccf9059fc76a562d9dec806da -31eb56eb6d7abf193e3ca9ac276573fd -31f67cc857597afb9e18a92f0e0af670 -31f9b113f40a43af8152e7f1c24ab614 -320037b161ec4529a0a1ba12555d6f63 -32043eef04354aa76b34991fff1c153f -320450e5684e9a6032e01fd0f0080a4a -320e8d414c479681d22dde47a1636a0f -320f37ee55d76509053e2777b46c2184 -3211a705485e6b1d086b0f7f5eb14527 -32127da99983a2c440646b24595ebaaf -32134e82fb2039a03f60fa565f16b294 -32151e7ddc96b7e389edf6a4e0568f33 -32175dda8d28e3e0654bb75b77390b8a -3219032d0b663ca4ce97a3f39f7aaa01 -3220eef15cba1c03ce2d87040dd1d13f -32250931951347220788f766958601a4 -3228d25b012417698fd4aba39dd6a6ad -3229b8e20bff144966689f65dedb6f09 -322ccd7434d8b90a79fb90d1746d9bef -32318635cb09dd19bc130d888830efb2 -32336c8b864a6c7efce9c554bbb57a48 -3236c48210ffbc9fc91a2840b2384973 -323bffd361074397a9070f71a48b8d94 -323cc7e8c9353b98ea6e337da17c7be5 -323cc9fd8b82402f1588f7d020f8d12b -323f11cd490a78906556655247811255 -32436cf47e61c43f3f248db4f40b41e0 -3245d041dc7a261ba5c6b8e6ee9109cc -3246183d999a21a0ea6af5ef3ed465ec -3249f5fd0cf1040ce2ab929576cbd22d -324c9c408e9617863efa5aff510c6177 -32510b9ee48ec78726dc0535dbfa956a -32519e5b810a99c0b6c7d7b59a4b85db -3252fc002e3269b594a70e03a886af89 -32563766ed07f305221ff3e59dc23cb0 -3256bfc839f1964541fc4efdaa5bd3ad -325745d5f00e47eedc96dd6bdfda22f5 -3258b3a03136974c68261caa407bb2f8 -325e03478bde90548687155468e45869 -325fe6d6f9796776e40e7880ffe3ed19 -326d0de4f7d63b27325f6f72fa076d52 -326f35d07ac1ab5353c5fb77fe6cb690 -32709c582d95a03d55ba6ea405c38fd8 -327103dbf26c03edfde04dce5b07668a -327355afb50e011aae4206e341e22ae4 -327441d8cdb7fb1c93ffe918c0ef9be5 -3275547c7edd2729e40f8d7b1a6a00aa -327a4a9285a2bd602cb7934be5fba00a -327bcdab1f5defcbfa13890c8e4f0f40 -327bf349e3f32cd017b4fdd26d8989f8 -328932f1a97281159238cb9d5a33c5d0 -3289696f2629286538a831eec3b4b802 -328d63970376adc4f079b09e489ee9db -328f43e51d137d481a13723b9d9a52c2 -3299b8cb2ea307063a063cd75d833a3c -329f4735b43dcdba001cd882629e5c02 -32a12061558cc94242c3edfaaa283966 -32a267d1c8a5c65008c01b30bad3d9c0 -32a3a7a92bba6e016836210609e7471c -32a90f782bd48fba8120e554ab9e1597 -32ab242e8771e5c19dea1c61db24ce8f -32ab93995dd8a3b2ffae59ce417ffcf3 -32ad8968696dfa749d42c39f4c3e3a98 -32ae9157e54bd23d9db11006acd21b93 -32b51a88c730352458ba593d51426591 -32bb321ac046e027125f8d514172b494 -32bc2051a57c264decc4f803720bd266 -32bdff6427d67633f8cf9c23e1495c40 -32c21fc6f95fcde67cd5761f70951c32 -32c8cbdec601dd4e238d969d12b6d31e -32ca4c74bc4cf19f1bc50793f1f914af -32cc3e35b7a96404d6fd86f978f51369 -32ccf893711ca4a7422be658e39fa59b -32cf29f013b2c48cb9a8faf887eef6bd -32cfca4d3466c474331b2cc084f89531 -32d410badc1e91486f44abc084348884 -32d7761d8195592e83ff7ab6c3903fc5 -32d84cc73cd6e7886e20dece54f0e485 -32debc94c7a886e479bc410b977c7602 -32def6bc919c4291e9130dc1a1c2dcd4 -32e63ce5773862d2805ff14fea1dabf7 -32e8b89daabe6f6c6cd12a310e479134 -32f513f23650c2abc3e4f421c1d92ec8 -32f8f9b79832f90bdf4433fc6be69587 -32f9145ffd182aaf960d6e140bc94923 -32f9fe4e24d22457f4abc62da490f427 -32fb93b89ef17b200542cf670b6f5a41 -32ff44a1b441f816f0b4513657d0b280 -3303be51fb901cb081afa70dbd4c0ca8 -330a79f103675ac3148228f1408b4f67 -330b984d7cb8c92fa32ead2a37a528c4 -331125371c19cb80313529791ab2901a -33146e74e7869e9b060e295ad7895523 -3318c7d48585d50352486d43a7f46bfa -33236ae69414ccf9e0be82148389a675 -3324cd078fe1767e2bb25fcf610545e7 -332a8ecdb3bcb4bfd099a7fe35118d79 -333170f29dfe2e32bd98c3a49dced2b6 -3335a4a7f27946adbd96bb9fc6a6ca02 -33375328362e58383748fa2514bfdbaf -333c526db0b6a5912c81dbee238501b9 -333da009ec5a113fc8f8d01576c3f222 -333dbad058641402833ce088190c8ab6 -333f2bedaa8d3096d58ccfdec6ffe670 -334000a4cfcd4595cde1ac01a12b4ffb -3341e040596ee625e39b3d01a28aa136 -33440d882fcdb92b1ed0ee96899f13d7 -3349480294b2644e0e54f099b1c55a61 -334c12b3cacae212297d4079f7c3977d -334e99958b55ce7b931230601574253e -3350176634afd886beaa381abf28df3a -33514d4c4f3d3b73bdc152115f0d1b3a -33556e941af79d0a2f5383649bedaded -3358cbfd250319d409abaf77ba10a529 -335962b2b91ab7cd8d994e1364794b50 -335b8659bf176a315d94d7ec4ed0cf04 -335e031b1195d45eafdeae8f341633ed -33642e2700aeb79cce8cdd97da742ead -336a84b5038bcaf0c4cfe5cca877c23d -336b349b0ddeca4784337d7d06747c3b -336e40a4cd823cf6a9a55d7af7590175 -3372140a235444b9bce067bc1df63d86 -337a130b4c877e9781491b989f376630 -337f1b169e71a647d18f7203543610e0 -337f6c37f179ddd735b6fe168ede284d -3389e9e22cd6c4ac444e1abc0c922ee6 -338efef27140ed20adb3ff48fa1cc65e -338f8d6a9b598df45f36f252f55726f0 -33902c05c2ba9c059f6f6edc11c88576 -33922f83538c0b43cdc9567e47951b29 -339b9d8a59b17ed961a613c2a53d80a8 -339e8a193122be0e3cdd56202baca40b -339ea06267ea9dedb3541fb8f846368b -33a173fff7f79592d75500b55faf0f41 -33aa4fa4ade505917418342bf1ac449a -33ab0c9986c4360792c8d22592b42b66 -33ac8bc0767276328bd0741ab7107a00 -33ad3523d90a1e28e5e402b9ecc3a292 -33b57af89dcc46c0c770a852c170399b -33ba312306f0e2f7440857459a7fba44 -33bb3dd7bd3072e855f3a53b351b7203 -33c4453fdb220e70eebfc0522e825ded -33c8ee82a06de02be208af2591608394 -33ca8ea189eb2933fcaec25521f9099e -33d30382ab9e0e2166549b25bf97f31b -33d44675ab979a4d431c0b708449cee8 -33d4701ab79f8df24ba2ab0c1d8d149f -33db469e01631389d3e6eaacc5d08454 -33def4f7ce935e547e629827fd006d75 -33e16cfd14cff71806ad8b9f19f4a2a1 -33e8fa350fd880203c6602c9ca40f75d -33edb5b459fea76be5e23bdd31e75f6b -33eeae3565153e47c36f9b6522444039 -33f0665e59b906b10fe4841399589973 -34066f79958813119ef42c84c89cb1e9 -34075a601dfa7d3b0bfd19f75b9452fd -340c685fb559447f204f82be61c5889f -340ddfed4adfaebde97dd533c0b248fe -3410a6d7e04e34638f9c6c248630767e -3411409b0925ef8278d31f45ffafb52e -341469ecd2716d4ce77c18287b30d230 -34155430eaea9f22da11383906ff35e1 -341bf8e089f6b2c43767a32f3ab25aef -3422b68b32b62ec89928c9b6a2896d12 -34297f5dcb42ede8df68716fdaf8280b -342a9788a031bf91d856e2fc19c08686 -342f690ac4293c6b3c56500086925094 -3434d73dc3317980a1a1f6936e0f523c -343665ed975ded422ad3acf58f62561b -343c520361903f4ba4b29fd0339769bd -343cf6d64d66efcb58e8b8d13efde47a -343df1de866e832a86ff3de65f8b4b06 -343e6cbb97b449bd60f42257d1261e1a -34401354d04ea4eec5ecdc61144678bd -344132abc716ccb3ad96b1a8f9a49078 -3442f8577f4e65a15d3ef32192620ed8 -34448de57d984f1c6795241089c503dc -3448acb3d2b9f115cf3b9609f8413e69 -34496a9b1455e370827260a372d5b7db -345221abfa7f6e3a1ac605d87b3c112d -345bb776cac061bd8019104b34d66950 -345c4dd5afaa57db809710e08e3ed9b9 -346070fa5f83bedd125b9435be2a84d3 -3463ec1f7ae10279c58ae11da2c27946 -34665e5094cc5748d0e6452c4ee9c161 -346b8b348c6e8878ea8aaba58cbecc97 -346f1e9db30918b2d1b8161cf9255502 -3474b74c329bee36042842c1f592cf8a -34758917886dbc21cd7fe121f3fb04e3 -3476e613ccca21690f66a17cfdc098f3 -347fc7185089a1ef7c88afcbcf2a6b19 -348046578c5ea1ccf774fd2a83e64cee -348152de59d1cc3b76e9955fbdd5551f -34828006616d8662f52dfd80705b6ba9 -348324bc782aaaeeb8691cffc73f252e -348a06ddfc64a7c81d1013ccb21bb8d1 -3492c8a6ea8e98a5e43cac8fb9a52d13 -3496d6184e5ff2ac0402bf09a6fdcc94 -349ae66e9eb6320d358f87f948ea9c51 -34a59e66de747a74f5923c1a9a132c27 -34c2af1244f7ba549f6ad52ab15fbfe7 -34c4197fedbc180333c613bc74e60e64 -34c6abb07662d2162a553ea33a5d437e -34c93223955efc31c18edbf9616d9171 -34cc8b84a72ecd90c8967231b26a71a2 -34cd54ed6788c94d0ee11dfba9bde4a1 -34ce66321202e0b7754d1e6fa6b945f8 -34d42ece079714faee7684e8486c4a09 -34d5a5f22e220a1d193139883ecb17cf -34db46bd4f8be9c0a8a940e705c57923 -34e05418b0d52e86249ab421f7c63699 -34e063f33e5ac96462ef244650f275b2 -34e1bab7711b1fa5a14cac97bd551c9c -34e6d9febc380a19281ae663b6cb43f7 -34e7e4fdfe8043e3f7682f0d5f5ce3db -34e947885c5f44c1daa21255c4fb827c -34eb0da7234fce20f108f9ce3712775b -34ecf85fe2c0f99b5d221b25b41d8292 -34f573363a5a1f945fd21e3b4ceab061 -34f9172b3eb5aa03545df510efb8bac4 -34fa46e224863c88918cab796b107322 -34fe1683d8bc6be261ccbf05507c94be -35001a592fb536a51d805bfc486054d1 -3506d92035030627dc893297f98496e1 -35077cbe2563a04864ec6f73be2f923c -3507fafb4336bd5a17b0b7a886157dd6 -35088e3a64feb9fc8d13d789c20c7b5d -3509aebd1f8788a01085b37fe77c2d66 -350a24438b70d9b36ec3793c4326e112 -350c398bfd3b267468dd60ca564491ce -350d02ba2655e8a273d290c81f58a2e5 -35128f4d255694e11a3b6e850dfc150b -351da229e46656801ade3868ab68033e -351f6d05b1c0de59743600a10523e627 -35262d96680866967722a810dff20941 -3531e183e4f880842762edcc2b649f59 -35332e0307dad58bad0650270f458671 -353420c46978cf6f1fa2783dbfe5707f -353754b10d239f0110682a58ff2a600f -3544adbb75c7bcf5ad48e73a1e2b9f8c -3547a296f60b101fa83d70bbd5af7357 -3549228d2e385efa13bfb7bb4e9e6735 -354a3360f8d251c1325e0c07da19acc9 -354e1a70ea955ccbc6e79615c60c2504 -355027de4a1f55e31494e13f74e0fc3c -35591414ad77cce9a68f44f79cf58d1f -3559b54d3d55192e8ef41d33dd7b15e8 -355becc4d8481fd9a4b49dc8ea4fe108 -3565e14e1b295e6720683de39b1a4b06 -35675a14b149ab954680e6ad51ae4b29 -356b1463c3629377fd436d73e9f7f9ad -356fb4ffc25aefb229b02c560912a14c -35738c8af1abe64d8b2d3454d9337071 -357bbfae7e9325afcd161212ac9dce2e -357bd97b95d0c79b1676bf000d678341 -357d53e2d6365c397659e776d065342b -358031d591e03192f94c2998abbc63fa -35806c690e65e2818d2309f26b76310a -35818817d19c5c4f3a3ea8a93d6190d7 -3581d499cbcf8f4d4fc6d6684084acae -3583e55dbecd0c43bf46ae82c6ee8a58 -358580a3220a1fe1ae769d5a0b4e4f3e -358bdf9e4f7eb37dd495a013d93a313d -3596d8cbb6383688d394e225f01db680 -359b76c2b9774f59a828cfa0d6ec9531 -359eefd820b5b8986828be78eb1a0d20 -35a1b3545b3f19020672755aba88aafa -35a3194e6d2bc3b28a013fe939ce425a -35a50e7b3c35ceeaa432394862dbffa5 -35a6db5f924f9578edb20721729c88da -35a976f576411570e4bfd9d059ec2ce3 -35ae28283b672d36e452089a15521752 -35bdca0cbc77d72935809a14fa67b823 -35bf2349ff6f24a34afa59c5567c36bc -35c0acf2655337c5f2a56947a7426ef7 -35c185208820e9a115ff52033aacfdcd -35c233e0e7849115d31b9743339dbd8a -35c502b1f6634e54fb51650d2ec6b3af -35c9c2337ba512864e3e22a6d7a034ef -35cab67c3ae88e775e2f92e599ea9bf6 -35cc023a1ecc7303427972efe186bab5 -35cc72611b70bda3777399a5f1f5b21e -35d4340555c8792c541113fb626c7d83 -35dcd2f62a4359c2963823e3333aacda -35df924e122b9eafdaf36934407debc0 -35e485ba0afde8ef45d180aec5988109 -35e86cd1df2aae86f6a6a6b2b262226d -35ee7e2b300e6f0c769d1b89910b06b2 -35f0e53bb283be5158bb00fed20d5fd2 -35f23d42b92643e36780796143e25f07 -35f248c1518410144baa08924adc273c -35f9c986a62b5bd6590c2cbc1e33c697 -35fd0823ea99513ce5f5249470ebc634 -360334d7161e40c632f1137a7c4719fb -3603b3c68d790c59870fcf210fc11f9d -3603d243177dee839081ec395b97b933 -36052efbca38540b7497242717fc2186 -3605da9bb07dafebdf800c5ffccdb22c -3613b345e935a156be45bfbda6a8aefe -3615a60fb3d00dbab340d082d4a3ad86 -3627d1ed032be43f47c782d80c961d60 -363ac4e99e74c4cf27e739fce9cb972e -363b4ea76953b5941525546fcfcc66eb -363e4addc5d66d92de33448a45c4eb3f -3641b94a2ab4ceb5b525c448b7333a5a -36443f5b40be48a83a015eaabf46897c -3644647c5bc413d130e1d1cc36c7e197 -3649370f7de3378d78e8f41b38e06bc4 -36499126b6f51645739e3ed2b97d6e45 -364ab5e79b700044353262af175cf183 -364abccd40479337d04cd97d6c9bda6f -364b1abf0abca92176a3413369409985 -364c8e6355e576628c389b549e556a52 -364dbc58dd13a9d54b77a7948e0cb34c -365b61584d9d77dcbf95d2b4b41db6f1 -365ec27fe7c73d7883d305991513ebef -36667c3bfa67c037166a5d4d2defc803 -3674c7ef5d6244b6641eaa0ff184cc6c -367d0689680a44ee6a1a9ea173e8a0e6 -367e4f8d4fee514146658af70c28d5a6 -368274af83f344e74ec9212c659c409c -36864a972ed3f19794e76d3679a83107 -368ae85875bc8876d76be0e699d45e8f -368b9e89160b08fde99a90ba417f2164 -3694f49a34e0192737e2dbab64ac858a -369521f3d87bf056017f1f00d7dfed3e -36974c7eed44e9372fecafb58f0533a1 -369b047950be3f3e0769423a872bb45f -369c98b34082d5923a9e38d65c26a472 -369e95cc8a2fe5d4cf9cafb60bdc7dcd -36a1a60bdfcc0ffb902705a90a1de6b3 -36b07189dca1530f15a804d7374cf8cf -36b19e7b825a7ba381e72b62d8dd263c -36b1e0d1aadeeadbb9d3cda1da02b48c -36b3c343cc563d8a599f0b58bd195dfd -36b51a7122dbc62abe0c58231958e9a6 -36cf14d72da46d182ceb165d1fa8a282 -36d49edfc125e70ab4e3ce2cd208c176 -36d54d626bdfb1195171828fd011aec6 -36d9e7f43393b9f9d3e7d918d1f0cef1 -36ded04f4360682ff8ea02c801b5228a -36e31aaec16c5a4413c2f942efc06a5d -36e73eef07ee5a74435ef77671aa03d1 -36ed8fd255c502ce82887c73df360203 -36ee0e77bacaeac80a63dd1ab8905301 -36ee48dbdb00e6eb1582e6597c802d1b -36f0f09c84bd785dae5388fc5f36afd6 -36f0f2447628e94a852d5966a907c4f1 -36f634b240d904281999663f6e72717e -36fd38684bf27d8ee3f626a02d4eba6f -36ff69d050b8b11034ee1b54135ad25f -370bca6ad73f42aec0b062bb87ec7d13 -371724a8654c91088a6b2c65351ce440 -371810c25e8147f5998f329bec527e32 -372223fb4374a279f85d63d888773a3c -37268a02cbd52a7484552cf2646cc1ac -37335947af8575c020a876f2a722a303 -3736f014aef71b1c81a50bb0f52673b9 -373972872e15adccd779ccba7bf03211 -373f6cccd02da7ec62fadef4cf8338f9 -3741a1281514ead52617ac1c2c84355a -3749e35a741222cefc2c0969b0925e50 -374df6b225de599e57fd764601e2e8f8 -3752ae38be731a4ae1f4d3aae7f7ce54 -3754fc9284f1f04e218d1709ce379ac6 -375c92acd79d52c574d0c2ad96d2b02a -3760157d02865e8dc852ad2c16c4dd4a -3760fef726c326cce48bac97d35aee8a -3763392e529da1680b9f85d6198a583d -376cf9759983fcce7651384a807fbc27 -376f87522455ad5efec17f5c9357c40c -3773ccea39f2d3381becee08b89e530f -3775f2eaca2f0ded7d9f779a42967d7b -37789b44c7dc5153d3b8f42606a66e9c -377af71243d44c37ab3d8ab932ff948a -377bfce0c02e1aafd4dbad64d001297f -3780f8c8785012f08ba28a7ea3d5afff -3784268c41b6fd24f0a898ad7d843694 -3784edf1ca33070e5cf774c65ad21f9b -37864a8687a5f167922bf0d86ea8caab -3788328794c563f6a6d579b4c081cf0c -378cdf2c17154d9f306bf45618423db8 -378e6df2d3aac77b5d2dfa2165b74e44 -378fac22e64cc6237cd9d8dbfedd993c -378fc0f343214cf1c4ac1ee1d15bf59f -3791651de95a29ea9c1c2cf46b391da9 -3793429fbedffa2872418422d974f150 -37990218c5cbf233d6cfc80ce189224e -3799f8d6189660caec8b66b880dc6b90 -379a722357280d2eab92d3bf272427ab -37a539a79e22db8a7cc82b7e8c686baf -37ab65da231844186767c43803b0cc10 -37b5988949acb06551081678bdc85ac0 -37b69abae8b5f216eeb9406911a8c93f -37b7100b998971472aaa7e728bb01f35 -37b94762a439fdf1f640cb056aa007e3 -37bbc06467e4157a48100a463bb9179b -37beb6aeba28a6eff94835140a146bb1 -37c0800df62cd02e2f5377219c7b63bd -37c424fbec570bcfce9d84e43da5f6c7 -37c72afd95b38bc3a8fea11efa296374 -37ce9de96e85700e3a2ef9048b19fa1a -37ced5ae39492dc5b6ab467e6498055f -37d29d64da02cd3a68ba1db46eba0a0b -37d6cbb3d973d3501439461eb09e5bad -37deeee2c7019892b21b92fd8ec33775 -37df76f4ac6d83800e9932efaba690a0 -37e6c80611154d1374975a00288a6c9e -37e8a545843f6f122440633939ba588f -37eae5f8d9ab516ab9e9e1ab85b86053 -37edfa54e732182ad321dafe3ca41334 -37f233ac5ce8d1e67a47057e78d9df9b -37f4e7a951514ed604db8be5740dd097 -37fa13987c274e6eddabe0b5d094dec3 -37fa6c3ad2faa91b15a3c5d887340641 -37fd03436b02be9c82251d8b727b6da6 -38049524ebaa387076d69d958a3ed7a6 -3807251903f23cb603ece0d442bfd41d -380c5e79d89b743c1ad09657d903b4b3 -38168f3436ba6750830bffbce8577217 -3816c6be52cdef6758fce0c5356f1159 -38197e3327b069282fbdd2ee55cf1850 -3823ce333c2b7cdddfe5f9d677f26555 -3827a69a77d517f3c56220917425a3a6 -382854aa49127e8c5a40e6c1b89bb78d -3828d02a8cd30483a8a9a1cd7969e1c5 -382acf3fdd90c26abb46e4b13da713ef -382ec14115d41d44e82dba8cc058c88e -38311e31ecc76b3728ccd7b3dd8470ed -383400e4f6d738ef993cc40b90e2950b -383e73a0aecee5a06e4215c56d972a82 -3845b7dc41356cc6c919d4441795dd17 -384a4eb0276214a6e24c2a7691064876 -384f5ac890fe9edabfe4f3003fc44c30 -385241904542b3cad90d7e70a56a4781 -3852c6e672d1a2bd8f396a3590a89aa8 -38534288c49ccec0de9f89f8b9ca48c8 -385c9437b8064cd8bec8970505287014 -385d94be906ba9d6fdff06b5c0b00d61 -385ea541c490060ec675bd00b11b5a59 -386087bd84c21b3eeaf1d00ba186bad8 -38641bbe6aa7167add462a4e7c6fb1df -3864530cff742baa812897fd8a848028 -386a172eaf7d3fc1174cf2fd16f8485d -386feac07b8eb49f6fefa8e472377a90 -3873e85963c3259bd3b84598d4f05794 -387637d7f398c0343cf2bdffd78fbdd2 -387c868995c8a3b52b07e65209303b78 -387f7889a14750f96f60415eb7fd8c74 -3885d6825c8c388bb6c617d1fbd27e77 -38894867329c7c7a3c52162bf9177d6c -388a5a934bfc388c92f9008cee2cd74a -388a6932bfbecb0fc10ffa55d4b0e1c2 -389451caad42f428fd33f4c868998f6d -389609b96094c3fbea63ceed6f736d7a -38a09d6ccc58e0683ceb75fed652b7ac -38a0e9bf2fd5183e2101590d52d70109 -38a2d86626977e611511705ca967ee0b -38a3770500bb58b090c59603a27d3458 -38a428ec47c89636cded57deaba497b8 -38a9295b1004573ce0fa9c8245791b56 -38ad99be123c02d3b8742c9a1fa5f6c2 -38adeba05c1d947b0b1ddf67566630dd -38ae4a930f1f1ac73d4207d9de1097f2 -38b1489bd845b6666cb18afeb5b3bcac -38b50ddb06b770b568d29d37b554e798 -38b9005a721bcc3816954f506b1ba273 -38bdb0fc056ffe3a27650c4b2893acd8 -38c7e359c5495d5964b0c06e59cfa94c -38cc528fd90a474c59627ff7e64ea08b -38cf4edb1b7e3f90d208b32dc3293b85 -38d0f673ce19531e4d16619afe3b8a3f -38d127c4fe00088989e39e779f7476f3 -38d689913adb090a400924bb415b460d -38d8b0b84fafe6762d7e91b796a56f4e -38dc848dc1d81fa39e73a9be9f97f1d3 -38e1de88ad8f9440ff885733f9667030 -38e23d19b41992d2f8c6075970d1a617 -38e6457c6f397b3fe0b78e3af1ed9fc0 -38e64f17ec4f741e62a27030f42c0432 -38e6a28485336794c806df4f592f4cfc -38ec53a103e611876814c15ac2bb1306 -38eee6eb942b7f052ebc795816801b80 -38f1899f8a8acddaa704220cf63aa32e -38f50d4824385cd373926ef19f81d02e -38f6d2a831380b578232f9d214295ce9 -39002a69a2f63706b5d579d8f564db8f -3903a24714365f12dd9d9cc4c80e475c -39047b72ea9f2a256d6fa4edd04b7d36 -3904c189b0a64f80797627e3399b5911 -390792baf48c261728408df31f0244b2 -390aa0aabfa8804de6d3ee375df4f809 -390e41b4170ff3fabc9abd1e2ebdd410 -390f3ed615e0240d154dbd4a05e1deea -390fd9c3bb478dfda6535cbec34901c8 -3911288eb8a975bd292555793f569812 -3913217f36c53e992cf01b97663bf247 -39282514ec5ed438e07f54b6088f4e88 -3929ec0ba70f9e317cd994708f05b7e7 -392cb94fe709675930abc29dc23d5185 -39316b98ab699b1a416845c2670b5703 -3936b7b3a5a824d194686f886025026b -39388b572d0e31cf1f7579fd48fd366c -393f35196c96fd32feb01df0deaec14f -39407f705a6902ec237fbb8cbff49d1e -39422d454984ec0c166b6651ee81b62c -39495df25e58468098f41ffe2d39265a -3954fd5651f2ccc2aefeb6c7e07d21cb -39564351f1f1c406dbca8111bec945e7 -395864ae59dfebc14dd1695742ad4b1a -395f84c655f8c74f29a1b923507a85b9 -396663861d30eee7b9e61f27e2560647 -396ae097f8ecd277c008c789a46b83f7 -396ebfe1ae0daae18cdc1b05576236c1 -3975197a696ecf1995462811c0881594 -39770e8c679763f4607c6b206b8a3150 -3977ac20e8e7d188da60bae181e2c986 -3981479dbefbed4fa4aa5f2b4d54edc2 -39859a4ce83c7f0639c8da3b39a5f099 -3986f1040d1ac5be99a0837bee2c6ff5 -3993389bddca10ad1e59669fc0990aa7 -3995484da1f00d031aef6ca4408a22e9 -39986f49e8b14a589f9e6210a752d843 -399b31552f81eba91c77e43ef329e51d -399f3a857a8565b66773026614923819 -399fb160d5286fc2b69806eae1e59bae -39a00217fea3207cd155c5174a44963b -39a2882a0c4ed5e0fa11347bf2f0dba5 -39ac4187ff50379b4a5ca9558f8d0231 -39ac6e9d65ba069fee21b4604193657e -39b022445fab87c2d8e00e4e1c79ed1a -39b2897f34e8e2bd1e2a24f4794a148e -39b7dfd4dab614763837b4ea7b1ff475 -39bf94acffbf40e1700a3d99ff1c0f94 -39c7d06a37aff7c848ba601dbb254475 -39c7f46d23e9aab70ca7ce612c855273 -39ccb06e496a4fac62fa124f83315e77 -39db2ca93e42a9d7321b316ba495f73e -39dd251030cf09efb06833376542254f -39df40340313fe73730a58b32a8893cc -39e33443f7cd308d81fc77c6e11b1bb2 -39e64108f1680360df8374b86725aedf -39eccf603bf065ab1ed152455006fd9e -39f063decec0186efc32bd4634c0aac5 -39f7024a15c13be5e8d88cb756b788d1 -39f82a50c59cfa338ec6b38f313e7868 -39faff7a8d423b61086c455278343e52 -39fb96485fc566a6f5c3ec7173e9e064 -39fbaf33adec46d31db28c38832bf0be -39ff6881656172f2227e149420338224 -3a0271aa440de6bfe7bb1e290445091a -3a09a0d6353bd6f1a0da46ba11deeec8 -3a0a47114fc234b7f1e0835230b4905f -3a0b0d11586ac4bd85b2a5d5076f0640 -3a0bbd5a44952b53daeaef51c6571832 -3a15f71b9b73f23a92773d24319f54a4 -3a173a67ec6c77d2efb2bad964b6a2ff -3a1b30a05111ca1022df806176d04a3a -3a215adad6ff12aaf8ec9f7f27c4adae -3a2475c0ea03ebef845b4fa8fedbba15 -3a24c6ce19c77d1619e5a6b053457d98 -3a2743147b4372ebb65700a1be5209ad -3a2daa030d63d19446adfae0257e733e -3a305ff92d7ced8c8c1b5b8b7934146a -3a31425c4afbc90ea28f9fe971b84ecb -3a395e45f946d18395512466a15d491a -3a3ad495ca040056e0fa2d8ab23f2da0 -3a3c4c1deadbdbbf26f602b0ead446d9 -3a3ca7f31593d8f6b79fd9b716027768 -3a3cf567379cf487bb16737b48c49055 -3a3f7d00d7499e72ad6414db6a2455fc -3a458d17638f04d594420e22b69dd029 -3a495bed2fb1e18ec391808c0fe4bab1 -3a4edcc8444f2b7375562b5d4ae0cf2d -3a4ef57de5fe19d6e7b3199038fe3167 -3a5432abd72535dfc1bb1d60871f73c4 -3a5b072d08e3ca77a44e7e2828571634 -3a5f418b41b15a3ffe6cf1eeb93cc00b -3a5f7cc58905a9d8d7d2448ca354b788 -3a5fe76ddf59d0ac8b1549fabbe8caaa -3a60725ae776e3d7017469566650ef8e -3a6afc21828452d53e2ac1aec5a452c8 -3a6b3a686025cfcb02afb86a04dfc388 -3a6f925489d4dbb7a063af9d99400d68 -3a78a5125cee5cba31500ae5ac3566e8 -3a8354ae818946d638b35898b796a823 -3a8964bf78298f8ba226532e23f5b255 -3a89e8576769f8a4a740dc1dc8338f0a -3a8e23e2e0daa10ee1332ce1acb03fdf -3a92126980735afe310510c7723c897f -3a94acfc8afb5d2633cf031563a626b1 -3a9e88c9be7cd74556868c0a82c81d47 -3aa6669452dbd6184cabeb67da46aeb6 -3aa6e047b6a695d6548e1ace434ec5ad -3aa6f09a58afffe81f1c6fd391b6e7ca -3aaa6e22a47b429eae81f57e1a8d52c2 -3aacf9805a0ce2f803fdf48f48be5591 -3abc15d23a1795d2fbe9b7dcf310c0d7 -3ac4e8646ef0385d31dacef549c54050 -3ac667af4b31c6580f390d02404d5e57 -3ac91a8cfaa9047d04845b167c87b04b -3acb4b0475c89ba5c73e8b99a8cee9d3 -3acc5f464286d8ebbb1c66b59e975365 -3acebc8ac46a6846faba3d2602256699 -3ada0216319796f276ec2908b79ec2f6 -3ada99ac62d5c712da4d09031a37e9fd -3ae403c69edc4d50abba199e93b39f87 -3ae790eb4ed906595a4e989d0dcc2830 -3ae9ffbbb07ad72be686625dbf00bf7f -3aeae04d27a5516c977db77e6f53aa8b -3aec644d4a5b8342c4f3172aa582d912 -3af14b98295d0ca1f39c67b89ea2c1f3 -3af7289bca97fa75ea0b82c97aa73a5d -3af8e8af7d71f5d39ffe6b047461ec04 -3b01083b32d1c9c4310c9e79b1ebeea1 -3b020c3907351b55b0ba558dc099849c -3b02403b4cbae806f1c9d18fa9a4400d -3b05c7d9dccc31342d888de0d7ff4d9e -3b0674a7d7a4be60b84d289af9e531ca -3b0689437757c1b265ac8caf2be06c72 -3b10a7a2f71b41bc673ba9c7555ba615 -3b14ed56a08209bd12b90c252f41e0ef -3b16e94c7de826bdc72b0bea8d678fdb -3b1816825a94b8f6fb35dee3ddaae5cf -3b1dd23289ce9a672de7b295ccffadc3 -3b232a0288353f9118c1840ab82bb85e -3b23a79e7c835019c85b71e71e00f466 -3b2aa2dbc823e054050b02342869bd3c -3b2aa9223143a752c3b20fac21a5f250 -3b2ab7007469c8fdaa05326629c66822 -3b2daa82154dded54cfb2d238d74d3ea -3b334f7e730f7d835b0d59bdc862e627 -3b33823c69a3266982927254f7bff94f -3b358900d7e5e2130918b2803d61bb20 -3b3f584448ed8c5eb5dc2f8100b8d5f4 -3b402eb59e605a7d47b2f2cb81ff236e -3b43c8f4c97188bcdebdc7953c021e0e -3b43f039c38e3292731e326a3d79f93e -3b4402b2ccd7d84ccfbeed482396f299 -3b441ca3b3e3749cecc8ef201f739390 -3b502ea458541813b4d40b84ed58e1a0 -3b50d70fec55a672ec7aff88d278d2db -3b583e437ba3c39d2118968fac41b353 -3b69064a7a2c678bf6861e985b2c7aa8 -3b6e02089e130dec1acb83bba46a5eb3 -3b6e04ac94fd70b1aa068829ee0fd7ee -3b7631dfe2b8da532a4ee836f11d7872 -3b7952a65f91c133b66cdc0d15bac0cc -3b79c08a1f5d1c836fa0afb1c70a16d6 -3b7ccf5cee33a00c51403085b66bb978 -3b84f182f2d812a527f5be84125e1195 -3b860c46039d40888ad3d84e4d366a62 -3b8dba4b8bd0cc6a155187959b9f9917 -3b8f08c62fbadc3df3e64ed1c2eb0b8c -3b981c901e89d141283cbedfa5133136 -3ba198515bcdcd00d6eeaf152cae0c77 -3ba1b67db727736b3f29592302cf9014 -3ba29da298559fd022f3c4aa2c1015b4 -3bb3475e0f17051240b50dd3aa1dd277 -3bb37e98232a80c682170795f2085a0a -3bb3c85b2906531c261a20be2a2dc3e6 -3bb540bc22567f94ab2bd27f78a02d07 -3bb665ed6bc7137f6eb9ce3de733d788 -3bb785035c254f6a07d55f7f8b26b575 -3bb7ef95925d41876cb215c255f35036 -3bb90fbb432a7c9351b5c10ef0d56804 -3bc1aa4203f9d63726a752406f2313cf -3bc3187c3f76fbe15ef53264b999676f -3bc32bfdf1fc69a24f1ec8137d518e01 -3bc37415c58707da8856f69281c0c5e9 -3bc457bd1af56e5cd08737b5b5b77dc6 -3bc73dae5adb310087470d3bb8f4653c -3bc748b031685d6a8055a76a39f276e5 -3bc77b482b24186b82b551fabe9116a8 -3bccf8638e604d7b97851f18fdb47f1d -3bcda9752cf77c2341105215eee48d4f -3bcf528dc7fa3cdbe3dd32a22fa431bb -3bd4fb3afa03383df338a1d7796a7ae5 -3bdb4d287e70ea10edf42b27ba2b9372 -3bde9eb153f2130858c411a1c8c2c0b4 -3befd41df2c9dc22564f111c622e6abe -3bf8bc79b7274a32e7f64e27ff8d3e49 -3bf8d571b177e9d82b64f77c4d7cc3bc -3bfe6bbac65c126b5f05c7b83ce39ccb -3c00b3a4fe78116082d46c2dd22c2c22 -3c03e6e2e2a27e6405d0e45c935c9c1f -3c0406b82a4fb9026edad3707090fe6e -3c05ee6693eda22509df2917d1fc5d61 -3c07d6eaa59bca6377b38e90b7fabe3e -3c0814f5a511e6ee54f97ce313a703ca -3c0d45d1f9edff689b0e7859d368af7d -3c0d7a5f141a3b7bb8ba8a92adfd5e0e -3c168f0739056be2119650fec2e1b3db -3c1ae4b439a72f0325befbff2869d9cd -3c1e4e03db5149a75b2ec6f79329f5ab -3c21a7b882fd269c14a0aef55db11e7d -3c2493c304095b39e2b25faafff56e0c -3c26a85f432a7069c4590d6d9e88eb44 -3c27522c464ba187ef8ab84869bb171a -3c2aabf1c67cd8cc3114f507331c0d93 -3c2d8caacf327bc6c1b769e62f2f2b79 -3c38414ddeba374fb47112da2224750a -3c3ce48b62a0a560d37bee346fc758d7 -3c3ec6e3424574afb2d9cfd3c863e070 -3c43265d5f72c40a5799d81d1d5eb1c3 -3c44a80e992c79802741a886a9d34d07 -3c4cac44ee0e5e8f9d36dc657fa59eff -3c4de3178831c953408a4f61f3a94654 -3c588d2668c521d3427cf343514f498e -3c5b8f1ee98c3126fa8cb66f9f957d05 -3c5bd5909f2ed11296bebf29614a44d9 -3c5c2a8f06b2c0b6eed6ec8146b5bdb9 -3c5c6156c4b343d4c75fbbdd549c3386 -3c5c9f87f8859cfaacaa8f3f16da4c9d -3c65032b0b2d3afcbb3672d3360f316c -3c691dc8cc0a2a90cc6b6f40a21493f6 -3c73ac1a7a07d3869624bde75ce1610d -3c7ceee8abed9eb7bdbf32c11dc26f4b -3c856288a877721b34e68b0c12c8fc69 -3c884677aa9835e40a8458d3d87707eb -3c8f0ab6ae19460bae98ad0b4258965c -3c94039ccab68c13233e615a0c0501b4 -3c9672f0b5dfa3edccd02e9a0e9a4a67 -3c9752d02033db84d8a87de070e95b50 -3c978a1129bd73f46a13c404e4109923 -3c996a0c1a72893f6429aaf1356af42b -3c9ce4a5043276b21632da6308f4ed4c -3ca0005f8bb40b83b9e39efff6a60b34 -3ca45aa948043b665bcb061cc664230d -3cb73463f9f268a7107238a88e745178 -3cbf4b7e9864c9c71027e710a94f7ed9 -3cc00a1d8d5e64623c6317fb7f04e76b -3cc08160f2aad5b18a20f21cadd0e293 -3cc8f9cf684ae22df0647d8e9a60e200 -3cc92fd751e64a6c5cdc90932cebbb2f -3cca6c4a1435fc95f083895fd04bd320 -3ccbdb16a577fa870047883417490568 -3cce56477d78a9e1de0b8ad64fb67107 -3ccee9eeb11b7e5a1bf8ec31322bc91a -3ccf09039570da8669a63fbcb1e2e81b -3cd10dfde4b67c627b1af94b92ba6cf1 -3cd376cff7c524c5ed20c8625b42221d -3cd8fa6321d0df5960d8b2005afb9bc5 -3cdbee13f550873cb8cc8066d5fc46fa -3cdef80da45da7534b7980e13b6a5653 -3ce4f0dab2a9d6b4c266e61389e1c5e3 -3ce4f9832617c71b39d7164ac517f7df -3ce7ff071e0df17efa0e5d17966956cc -3ce8ec1b963585ab6dbe781aa976da36 -3ce91b20040b221f9d55d51817d3955b -3cea5406163b5f2e2a56d64b106ee482 -3cf4a6c9027cd027d6f05675235c9864 -3cf7f85fc7932876af46649d02e6041b -3cfe0572e65ad54e2dddc37b2c28826c -3d00e670d35898f37365a5d7d0a8f3e0 -3d015f1010fc9e4f868957ca763bc09b -3d022d6e06ff2da2106334aae9cbd56d -3d04eae10e1c0ad86000f1e7824e10c1 -3d05a89e78a7c3a64bd27837e04b7245 -3d0642de28df143a2531af20566e7b55 -3d08b6c3e3097a59f45d83a7f1890803 -3d0bfd35d6fbcbb1d52b2fed1569fece -3d0df6f16ac447a782a5ab55808412d5 -3d12e6c767557219240613cd205ce470 -3d1952122716fcc229e9551f6e69f8d4 -3d1ce390a81e034a6bcf31be98a79e5e -3d21c43f26038d7acaab2e0c56ab0861 -3d233354d5446e6e7a87a08212104836 -3d343ed67ad18985dd9cfdc6bf683e45 -3d364044aaeca24494ad52a415d152f7 -3d3782074dd04f55c3dd47ea728b9cb0 -3d3e7e1e58df0ceb969762abd09fb3e7 -3d42d0f4224340c239d8b630496a1ccd -3d473c7968d4685c9d046eb9ffb82557 -3d53abf677190ae71c595be4e56bed8e -3d5876fbd4f11cea6de2828f5ebec257 -3d63f65b8a6818fc308d96752226cc2e -3d6a0685eeffe1de2b66c7657bbfb0df -3d6d78f1d08f8df8ede3f854f9812194 -3d71a80ac34dd222b9da883b75601050 -3d778d75ee4da848ca481ea9d27e7524 -3d77a820d1a5faf3705c17ab7b81ae67 -3d7e47875e27f2b0e8419b4880b89875 -3d7ed579aef715bb1bf95ad3de8da089 -3d846835e9e2fad0066158465f402c06 -3d861893c0d2d757c8b0792cd8b1486c -3d8f499cb34c90240bd2cc00d58f055c -3d942a5163846bcd223535172c9c1854 -3d9dae3e25aa1019496f004cf1c5aad3 -3da1249aa78408451ae464b6d451bc27 -3da3bfbc73c859eb79cd704154f923ef -3da72ff2db7c812b9ff56adc7489b33a -3dadf9a64746f368c0c2d6f9d6b9428e -3db56d60de988594d4ab03044e0022ed -3db69850d2f11f4c3e8e06780d569ead -3db6d01d0f3c363b28e2341a58f1702e -3db7ad4a943c24a95f7baec8a53a65c1 -3db974a95857578ea572edd16eec84ae -3dbb52f8b3e2e5cad3e38c8e33405200 -3dbc9150c5cbe5ec7bdca628cbd18c46 -3dbf3d7f80061a1ef2fac86370ab0fef -3dc1a985d2f70f9b408431702a08970e -3dca5f09c1d825773a553149a934f71c -3dcfb3f1b02bf3cf2f471cc2a70c1560 -3dd2424a2e5976102f5b24e5fe6af688 -3dd29b520b16cd06596cc74b0ef3c0cf -3dd2f468eddd69ef0eb92f44d2258823 -3dd63e2a78e6b545655c3540dbca3d13 -3dd6f4f7c6c93648a44c6ac1812a9825 -3dd7764caa5e715e107eaabddd8a62e0 -3ddae4c3c89fdd11fbafe870141eafdb -3ddfd5e29648883d0720724fde8b0d16 -3ddfe9d2b13df4a4804b5a3403ecc8d5 -3de4b8eef3cbd4b3236cf69bdb44c111 -3de7ff270692db1fce32d1e397d606ae -3de8b31525449071be8655cadc6125d4 -3dedecd2b8921312fe5be498ff0be576 -3defd5d062422531fe2cdd5311216d06 -3df035789ee243ff3a5822c7c58d2b9c -3df6fca1bfa4ce7c5b7975c96852bf9d -3dfbf8f4034bca36a9ab927eba5bc427 -3dffcdc0797113a59427397a0c475920 -3e018700293ea123b1496a9a3c1147d7 -3e02b99e7f6a9f3be7e210167b2ac1b9 -3e08b0ba8ddd6ea60b22fbd487966285 -3e0b71550796412677bfdb5333dd0f81 -3e13b7e5515e5b7dac5a637a44e5f0f1 -3e20bd3d7b7912e232743cef08de4db9 -3e27e355d351ec66118919d99eb1a53a -3e2f456317d4631b1c1e21a9bb23cf7d -3e2f4cb3d9fbff406ce1d6ce1bfb17c0 -3e351f9301cd03f9342b1d5da0ec6602 -3e379abf2fce66fe66197bd3de7d77e2 -3e385bb38db48ce205589e04b21c429a -3e42e675f00e628b165c7b8c1de6cba4 -3e42f60b8ce5636463df37b640477fd6 -3e4d3f30d3a6f29f250f6037bc70632f -3e54f394517c1ff2de55b3f30ee867af -3e5da448b45fc34dc8aa0e83bfb5a208 -3e64dbe157108ced1bda1319b5a315f6 -3e655a6d9b700633807519e6ecd6cb8f -3e684cabede2737007c155d766e22bf4 -3e69469ae7f39227ac4438074cb8a754 -3e6aee6859a250d4705547c321c80866 -3e6d73dadaa79935ba789ccc000f94e9 -3e77ee2ce16d8bcb444cb8df3ca93151 -3e799ab7a7ca8b8ca14fe437855cf51d -3e853f58951ac5553e91ab9ea24a6de8 -3e9028911c38eadd97858f5057b16047 -3e908a8624287678dd8951aa0d25d724 -3e96040f0d829eb008e5ed52c3eee7d0 -3e96bcbd502e6feb33b5d0f779a11971 -3e9871fbee9421ccf32e0c3a029d396a -3e9bc4a8bcd0752a3e3fc72bbe677729 -3e9c5806aeb62909f8070e9b278bb1e9 -3e9d9eaad98cfb19e5d95dbf660fc441 -3ea1f4a4e3ce53f7a911ebd72cf23b13 -3ea2f1fde88158e2f4b18163531c08f3 -3ea54e3198b4509396ce594940685ff3 -3ea6416134718040d4d3b8ee1f66d0a9 -3eaa3645b6e85aa0385afc516afc0987 -3eabbff96f962ebe883547aab1be0327 -3eb7cf74f371b87a5ba5f019c89e71ca -3eb996c364e2f02fc3b02acccaf48654 -3eba522599c6bbae50bdeec3b79a362b -3ebf56317d84c038066f09677a458452 -3ec287070d73ca05fe8ce7d7fa0d1fc3 -3ec37ea349d5ab8a5e07b5006e38ae63 -3ecd011519cd3c4bcb3282d1d4368ff0 -3eceb053ac65aa92dbe68c13411bcc22 -3ecff19c28555d90f6da78f0848471c7 -3ed7750c0aa70cb781b1e47f836e53f8 -3ed87da6d667aba306945c59e8b36279 -3edc49749a31c0785eb1b7bcb53f50b6 -3edcfdb87b120e132cfe4e59a35e9419 -3ee77f512e60ec80e62bc8c341e19a56 -3ee8fb36673431ffec1430626d617154 -3ee97772c9a900f5633774f056d4364c -3eeb961240056b10d2612ec0cbee22d8 -3eef89e6eaab6d3377f15818991dae4b -3ef0805ed8036ec769f120986495bd7e -3ef3e87585ca6b637d0c267bdb8c2d69 -3ef545f0b0acd9af9f145deba954913d -3efa421c937f5739322cb19edb0fda73 -3efe51b603500f536a85ad5a0a4d1951 -3f057c09941b292478686da07d569311 -3f07bb2cbd2ac1978eface84584a9b08 -3f09958d77a71704b97936705f02e757 -3f09acf4569cd3696596894d58575836 -3f0e5bcd0c79102b3666ffe078adf354 -3f122c529b8ee6eb9a7e409355ef1328 -3f149f4ebd3e4ce4a369c717249d6458 -3f18e7f3527f455bab21626165f69fd3 -3f1bc4775689edbeaab59502fc370f70 -3f2232694e4610ca0a8b3db345e4cbaf -3f248268280cc44586b5efbfedd27faf -3f25a428bbbd498dba7bca5a416b07f1 -3f2d26dcd741945bbc008815220dfe68 -3f2eba401463f27fcb48b42d645f23f9 -3f3418d5d28d34c069b55b5107598d72 -3f358eaafee56b8489e38437e6bb9e16 -3f37930433ad28e06ef247dc3219f30b -3f3d2474d3ff90d905e733e45fb76a75 -3f3df0256c3777b5326de9f26624e06c -3f3df0b3cb9696346a7efb1aeb0c2144 -3f41fcca900a60a1444346350e9cdfc2 -3f48443a5643ba36048d2cf251b5d1b6 -3f4d019d9b5336585ce811e6ee1add12 -3f519a517d4dd41404984aede1530b29 -3f652abe93ac9d0c39c917a7e695f3d2 -3f68e02435c98122b7dad0533203e39f -3f6ab011d1c8fffacbdbf8d9fe960dc7 -3f6e961444df055ca0e12a9a76144422 -3f709488ced9f5cb8d8765018e16bc0d -3f71ff3cbdbdd981f1441981563844a9 -3f74d6e2272766d4dbb788ab8a0fc60b -3f77dc4382449287dede4b5c31d8661f -3f807d59c1e6c047b90e0c7e44386419 -3f8ddbac8ae9bcc9e4a706d59f3e0202 -3fa4f2c1bbdeb8d14151ba5d26a072a7 -3fa58d5df808e8b7cf1990363e266eb4 -3fa67ea4fbc892211b440fb18d0afdf7 -3fad23a019f6ef265ee947ec49c9afa3 -3fb1a02da2744ec98d7c7af34c84976c -3fb22b6a35834b869b5277cea12ddf24 -3fc14b9b9254a3b7b938e29424d655d6 -3fc19e8fbfb1666b3675638df22898a2 -3fc3f3dde85ab7762d0966391d4fb541 -3fc416146e9d72dcfce1606e577e82f5 -3fc48a97bef0410033382aad9ae852d9 -3fc5ba02b7422525e1b2f774fbb4bd61 -3fc638490585c4d504ae0489f3c83614 -3fc8ddd1e8aebba133347ca4a5a06638 -3fcd0fbcef3d823050c123d0922998f2 -3fd1f53f6aee7de8f2200aa4f678ca3b -3fd89729d354b120a985f5cfb811a2f1 -3fdf9e34514e3b06c376ffc42e538b07 -3fe394e541a5be321b35e58e2e51bf6b -3fe9987a2fa1263bc1b0b05c90fb9fca -3ffa730af5596591f37832ce34026dda -400259f18b4cf66c7532f200bacbea03 -4002e5902f3813eb213bc9492fad451b -400ef8727a0fd5ffb7760c37526f7b05 -401203cbcfa83f02bed0db8cea0e6af4 -40125491a9f5ec92cfc24454350fb018 -4012fae19aa65240d760785274369715 -4016c7d63f07b628bfab6fcbf2c9d62d -40185052a66a66597887c6177c20cceb -401bdc6dd2f9b257539aace3e54d00d9 -401c834177a2b90b2163d23d9f31115a -401f94031df6316f823600d1c36f215f -4023222355cb776c9e97bbd39ffd856a -402666c16a295046e9ccea00e1041503 -4027443cd01663185cf519fd12cae91c -40285730c7439170a062f4d211478f27 -402b61835ba8ab20423e00d454cceee5 -402f5ebbfbf10caebb07b86baf175a03 -40300bdda75103a7053c3cad84d0d094 -403459402a1d190b58cac86e5e8d7c1a -4039bc397d669c4f9ac60789b510dc80 -403a8388cde8f500ed1675db384a1df0 -403cd689d2dd49ced15dc3dd39836af7 -403d2b88c1b56474a428515160cc14b5 -403ea2737ce9e2604c665ca790d0aef9 -4040450aabe7f560d6c073c53a1e3f27 -4041f435e23c509b14a620e7a0eb19c3 -404262222de184d1732d10095b8d378d -4044c1ea878d12f3d7fa41120b0143e1 -40471c80c974943d5bb721b07268c853 -40495121e64a8634956638618a939c81 -404b9bba1856555e901cd7efbe0c9522 -404d7cf77828e7b9df64e96be8593bee -40521e8ff349ab9a1c3ad0038576af0a -4053c130330a31a0197c1936670eb3b2 -4057d54f8a9562edabdbfa57e5ad1969 -40587ed4c514fac52a669f1c5bda6893 -4059dcf4f49fb259ab794b0b8b235573 -4061310a813d83d8f7d5ee6943ddfeed -4065ebe37de522c16d9750f9a1342b7d -40689df8257b52d5a9e4039a41f15705 -4068e3a07d2f3b5741ca3f2cb9ec1915 -406c733e6c9403b5e7965a39324d5558 -406f4f576de2537c173a4b07aed078d4 -407a5e580a5270b3f8b29666491d1b08 -407b8a70b86515e0370dd31766f0f0bf -4084bd5d5a5460954b8be59dff9a5d62 -4085e1b3e76ce3a4157f32ef256167e3 -4088edc46187219368a685c6e3cd3103 -408a376a00135bc714032ccb9506dc2e -4099a29367a6ed598ebc9ff549c99747 -40a1062ae8723b9212095881b9abc378 -40afdbc2650c0bdcf9955294fab4a89a -40b0cad4ed3bab8d9a2175284c3d6208 -40b3713157a5325fcfa4ccad92a59d4c -40b53df1bcd59c0c4247c7381c4b2f91 -40b60938c2cfd86c8d5dad302b4efa67 -40b7fc0be39731b0afca9e012e42bf06 -40b9231ca23a9f5851eb61e87fec6aa7 -40bdf5fa9ffcd9e42bd52bc36834c277 -40c3a4d1ae728c127bfcb76e5d235ca9 -40c668c81ce79695f241bf557b06912f -40ce9c9d7bdf182430aea2eae3e53b7e -40d17f723372a84035ba7228ff601de0 -40d3fa3c4670b22e8bd4d98f8b2f9974 -40dca88b857d3ea97db0d8357d96bdae -40e5f45f7edb5581771005483ac467e5 -40e66bb3e127718c7d51ae6d5ca9f5bd -40e701311855a783211afdc43cf00434 -40e8c7ca865da3b2e36d16f458428188 -40f06400f1c9e28f1660b964ac61f2f1 -40f2aa33d95c1a6dcd0a662fd4d2fbc4 -40f74bdc8e06030196428582d7fbc778 -40fb71d7eb9b5b251b53b356eacc26e1 -40ff037779278496af784fa52307e412 -4102584b0377ce07d04b27c0203ea45d -41064f90416c4896489d911f3222f73f -4108dda267c497d29de2f3a46c266e82 -410a51df65d48f2329322da2e215e1fe -410a5d41a56c432f3f37e067458de914 -410cc18ad9bb451228dba1bad7d60704 -411422c490eaccaca77f31e077b2e03d -41153e362071df7a1dedeaf5f6c1751d -4116a26d7d4acfeb779abc9dc8c43fed -411ac6a706fd5b3758aee8ffdc8a610c -411c616273d37db49dd10eb5aa360a70 -411ca12946c2e01ce7fec19f5599fcc5 -411dc1a2e471f9683f1d706b733014ef -4120e490552861203372a23c58c867c1 -4121adf98a43d85c1ebcb34b1ab1d4b0 -4121df666bc00b2b3128b48d2841fcf2 -412359ceef9c957db5dd61edd68a20fd -4129f433313ad947ee61fc3363fb9b9c -412bc7aa78f2e9fa5069a403001113cf -412d1843edcc217b11612136a49595a8 -412d1b1ccfde728df91ba1609de2225d -412ddb95abd6de2c999edee2ea3c62e6 -41313a545c313c8aae5b6e5da6981421 -413520e2ff65dd897175a84e8cfd967b -4136f1ee7baadeca682db3981d1e529f -4138ee5001321dd812f5dd43a6d48217 -413fbd39d55dcabe40edb99f19feba41 -41410d292de98ba5c9157c4d6a7ee42d -414546e0cbfb5880c0ce9526d6a62e2d -41479e2f7e6d2d6c69ee26fee0c23a43 -41499bdcfe8ee010fffb34ef4942a47d -4149f8c9242196ec4a8d5d58af81d27d -414a7836435d3bf8918d5a129ea67f71 -414aa1d8a65e1d12abee64c87b970cb8 -4156d09deef99fa0ed5fabc9cd068461 -415a61d5995551ad063e08576b334556 -415abc09d3752cb3a0b16ec54057b45e -415b91350bd0c33a41b6b85085fdf610 -415db6395ffce7cf090da088d12ebba5 -415dd58d63055a6a1560c2658ee7e5d4 -4160d35bd8546c8d02406cf6ee868494 -4160d3f3c315293195f70b6267b296aa -41610f4f4771abd13e46bd320fe0f105 -41619fc927ff28676cd0cdfe55764d71 -416e0292bbbc90c700a17565ea8b9ec1 -416f79be45b6a9a9c2aa8e01bb90d6b4 -41752fcd2505495a50c7777fbb17b61e -4177d4d1d5f676a9c389dddd97747b07 -417f397943dc5e83789d43cc2b262f54 -4181f088b796f0cc540449a1bfe059df -41822ae02ac1abf56ee4101d2aa0e681 -4183a98f53cf53cc351c6fba7e081a19 -4185c77e6802801480e104e55106bdf7 -41869dcc928948856858bbd58ea6eae9 -418c95bcea48ff2a79e25774df21cbed -4190bbcd76cf8dd7a95d861ef07ae75b -4191ae235c6c533ade350727cb9f993a -4191b673fcd209fbf278e1260f6b5931 -4194450d53ffbf410d8072a3392f37d9 -419934bb4e79f9b99849ab01e7f5aae0 -419e340841220de6c315ba9eaa8a6c42 -41a0f63fd4b8a2745106389a29814c07 -41a3214001b39a1bdc7d462d83f6058d -41a7125aed71705e1cbac88494345f40 -41abec7e3166688c2e83232e8df9d715 -41ad516aa21a389bff22625c56bd96af -41ae8ba02e2200a3552e2efd0d73a3af -41b05bede067e4d5a7e6168a08c22455 -41b32295baf7cedf392ec149774093c9 -41b9e22b4d6df1776058f22268f63303 -41c12a4f2f16e77c6efb81d24ae75ff1 -41ca92a43e57cbeb7fb66a3dd09430f1 -41d1548f7d83875378f29e594d2c9dae -41d3a96d629de25911c8a91bffa84c11 -41dda32062ec952d1cb289dca0a8bb79 -41e72692c542c25526dbaad4d412e031 -41e88a1e59acaf4b04c7cbd15b24a7e2 -41ed789cba502a391d86eb05c28e4dcb -41f4a7fd341656fb670ff84822093262 -41f77b6c44e30897c9c169d97b659018 -41fa09550baa6720b89ad14a373171d4 -41fa72e1dd47cdbcec0415f48fe5154b -41faad9d1c8d3ecb77e1240d0ec17950 -420354c617ba6a59fc64c0b340bf337c -420ac230b24619e28be862a4d2ccb1b4 -420b27dfe8c3f5d345b45be0685f4559 -420eedc9b7da410f66948e7c8bfaad6c -4210caa5b5afe2783afce20300e546f6 -421250a14b1c77f411973dec5258baeb -4213c392331495b0a6b65599f7897b9e -42173bafa1c1377bf7dafe5c902c37eb -4217c9fff4274bb014e950645018897b -421b009d783e13ae7fe0ca87ef68479a -421db0aa5e1ed771cea8ea66101aa6b3 -4223691d860b3cd478e86bdd8e679012 -4224e1f7cdede3b4d0cc83cc63da4c3b -422925f123f8b4d9a0e5cdf6f397e49d -422a2d2be218fc7d709d7269a2f52183 -4230526e7a2d70a2c7b71a368e26ca44 -423357cb5ac46ef48ad40acb58054b88 -42343166d37606ba4c8eb661d956f666 -423550055157fe0e0670f571aba8a58b -4235c6a979393790d60c7f59560f7404 -4235f476f12e3d354fcbaf9d22f464fa -4236c35da878121491581a6ebbef9c55 -423cdcc592368961daf7681c0c332562 -423d9810530eec87e7cec660bfd8bc3b -423da390ad266ad46df263b89c16ade8 -424491c0de9f5238ee82ea0eb4dec3a9 -424a1f26ac3d67dbdc1a8932f548cd1f -424bc0240598f8f347d103d9cc7c1e2c -424ebc6d41f2fdc2bfea8a37eb3746f2 -424f7d9588065a8a1babedc2efb5cf92 -42533001ab010066857a523056e0d415 -42563c077fb9d138aa3f47b01cf0a2af -425e6278f50016e4d793971aec1f8888 -42632201a82e54ff11ca39a76c38c12f -42661651032c79c5de0ed000804afc05 -42669b2312606c5c76849bcceff308ba -426c719d514a376cf0377f7b61eb416c -427182ea44f9cb3cdd150547fe1854bb -42744f233da2e79f70f66abde1d75ddb -4275ee58189e3949cf918c623030fd61 -427f9edaba4e205f339d40e07d9a79b9 -4282d956aaadce6fbd198572dd224d04 -4287946be484866c95a04a4a9aa5fbdb -428c7c8c967e86ae149a9251b751af25 -429919e08486340ad479589ff3809ba0 -42a49e8c1aa4e29f656f975a64e18bbe -42a6f7e4a402d5fd7740698562772722 -42aa452995f35492dbfdebbff92ce399 -42ad2a1a267e035918af42b8297c404d -42aece39ca522866d4a81679beb5cdaa -42b214f4618fae53e60d1685e0d61851 -42b895f338c9b23581ea66df8a38ff51 -42ba7292964e7e9684d329a8f3e18725 -42bc0771f4fab7ff03b05c1a9e1482ef -42bdbc6ee38e3be5facae51222ce9b3e -42bf4b594505dd865b8315ac686e3f4d -42c034a5032c8eb74c9c00705ade3082 -42c3884440d001e8cdf35c726ab8e274 -42c3ee70d7bb379b4f7112642316150d -42c913157a0a820d7cb43b6b51c017a1 -42c9ad19b48d1b32266524c16221b3ad -42cdf4919c8520189572a1f2939b890f -42d15ac774ae01f4e69ea1c8f26d0133 -42d1ba6ef8a48029cebb5f4c0c396b64 -42d771ea732f278b0544ea2447d8e1a1 -42dfd19bd7ccfa1106815f8cd832037c -42e70e85460efb4b486ffd0569f67cbb -42e82acd311397247598e7e6da950be4 -42e9b9485f92fb723d61933e96780e6c -42f353a43086f44f5c82f7d9a9b17873 -430598d4df2e430ef8f2a135359035b0 -430713217a7c78d73f1c6eb89b09f556 -430ec7bd52c54894fa4cd236df95e708 -43131e3f9cd25cde859adfd48da33bf8 -43175f3fc31e544a55e77271c9ecf6a9 -431b3455620f6c2998301ded60676b2e -431d16d731a60ed44ec100befd5704c3 -431e1c3c6a6fa7668db0dabeb52f567b -4320ddf2c0b21dca6f398908172e3916 -432469a4bdd725527ac11acd6e7155bb -4324cf094c8ff59203a11454d749a2c0 -43260bdfc2aec27c4fe0e73f32cdc2f4 -4327d2aa2fa14057c15ef789375edba2 -432cdd3f2fad54675d12a1718d748583 -4337a84a2895f550ed573fe4a06c591c -43380dddbf6e55e060d6783922fe56f8 -4338a89e93ef618fb9c11316a9681a6c -4339f7945f2adb101c5dc187794ee9fc -43408d68aa75b39dbc5ba14b8b65ca85 -4347159e5c853b1b4f8eadd93a816c98 -434c84cb70f856023ac7fbcb248c481c -434eb01a9082377cad137731c099d176 -434f70472646c4eac1fd1a01c593e30d -435a7acb87d07221db87bf477e8a4103 -435be354e52bf3e1eafc336f8188ad1c -4365e59a9cd438f32466489063ab2cc9 -437295b965d9bd2e5b4a821275cf5925 -43837c5f80a1f9056edf8b89e83f08fb -4390b82422c7df4351b850b6662d05c5 -4391806ca647f912b0f981d18cc07a01 -4393429b94c68f3ce7127c909573ba63 -4393608ee40c8b7f5fd5b44a06c1f32c -4394e2c9bb6e195980dd173762d10f23 -4397c71ce2b06a0aaf1c7f2cfa36755d -439fef7ee5267773fb4a4a2c264e8c08 -43a3120a0f0003874c015e1c88c1d819 -43a5ff2c6f182fbda98adb87d079ad8d -43a70ad9194fc0425529e5abe9845e9c -43a715b755029901ab99639f1b7e7107 -43b6c80c688abc615d091b03223517b6 -43b891c9854d1a09435dd49172497073 -43bb7f2d7d80f7d0a7c69d642805c143 -43bbb50f3a3704870c05f608945fa4ea -43bcd47204c77586a115001dd7e7c234 -43bf93c2840f533caee83b07babde793 -43c3ca858f9f35ea701c88ab1e03998b -43c84636144af3849713105a0566f34c -43c8642468fa77f61233eebc4975086f -43cd401442da64ab6ddb4f9def6e93de -43d3ab45c52861f4165ba48fc58be060 -43d3dfe688085fe054dbc128d83d378c -43d9afcbaa31c297b7c5fb679ee1dfdc -43dac02bcc00fe8ab16d8e1b5a8f846c -43de0c798c9f468cbf80c16b2f88f04d -43e52d29365cf850204e5db71a19321d -43e61f7f7f9233561b78cf1f4e421cd8 -43e7361b61c2174d0365c5c544c1f78a -43ecb168d20ded1062257f6c4022b3e5 -43f18d061a871ed820c7e6aa0b122f4a -43f26f2f2525c241cf3ab6c88c335919 -43f500f3ee6b712929b212fb86d8ec65 -43f5d1d3068d8215b150e7933daf018e -43fb628fff034e92aad9456ec92c8246 -43fd0a79b3b83131c29cb3a9d6df3f9c -4400c730a0a1007dc0781d96e98ddcea -440124d8176b7a7a88689f4b73b03ebf -44044a69c1b3f9e5da06c5b3938ec228 -44069fdfe49503e4f8a1959b1e27899b -441204002d5b67030ab89cbdb2fbb898 -44135a0ee35d6bc613e4f5b293aa9ede -44146b9622cf0e822432d8e9bddd35e7 -441eacbd7cd84950289afc9eb2eb6609 -441f51e58f371c1bc456615bb96672ce -4420cc90691128a89414c8182fc7e049 -4420d501d0bd1c0bf0056cb2e8803c62 -44233df6620ecdbd414b99b05e03e3e1 -4426d3f7143afcf41e15a7e1f2c69dff -4428e36d05eee60c8c3e2f934b475544 -442984e1580ac87b88d3330b48e29974 -4432931465013262ce4b85e918d8197f -4432baaaf21cab35f667862d57cc1f72 -4434205dca9ba653b406f3583aa121d9 -4437701d51f5a78118d4c64fb07b3f81 -443946ea99ca12def045d4a5887340f6 -443a6b1e66608e76ee4fe65d4c260704 -4444ca4dbbd81749654291ec76bd5e13 -444838bd94e0c6fd37d6820b99db5d39 -444a0106694c96892e12996a4588f51b -444fe0202e5698467228fe332e11aed2 -4450e51a64adb6b6b20562744874a370 -4451be500c775c61718488f3adf3e022 -44527bcb5f3dbc1d14ce0c28a2b9329c -4459a2070d6980791debd3d79e5d9d54 -445d07ae80ebd3577262ca0135ef8dfe -44707ecf8747217619c3eeab4efe1335 -44785d6b2af9754dc824f20425a2cf59 -447b13b18467cfb4e819c561680614b2 -447f201777633c381350dd0068ff5f75 -44826b2a1f175b99ce8cfebd54f0ca99 -44843f07e2abc553436f0a36b19f74a8 -448d99687baf4baa9c2830fec339c55b -44979f022b68992384387962fe687781 -449a50cb81f60ca19cd37a3cf6f40bb3 -449caffcf0331486c8df5d491593e0e8 -449fbfa0fc9831ce99b2b4e4a72a77fe -44a17c9ab9116efcff4d280bb803c78f -44a533e90428d80eeb5e7b84bae5ed28 -44a631324ff402ecd1e597b6e92e614c -44ab6922c7f448d3288286fee21cc272 -44acdf11d5b4a2f09bf24f88d7bd888e -44ae0f8868a16f612718f18ac36ec2fd -44aea46d57e6bfcc4a05ef32b8926564 -44af7f51fddfc54b92242c3ce0bfc3f8 -44b352afdfea467841a0c6dc22072d27 -44b7a53ff264a6452af3ef5330323b23 -44b9d2441fa922ad4cbe06ee12f53ccf -44bf83dbb839468a9e60655b2f6ee649 -44c1fae884b4290cea0fba961f8f4baf -44c496474333968989d2404add15ba8f -44cb64caa7d9f876a7d1ca4a699d3a24 -44cc802883aba37cc8aeda2d01c7f795 -44d0cd9ce7413eb3a1472e94014cbd82 -44d177514560dcf6ed37c67db9d85cad -44d25c626e92c0ce998c134d30367ca9 -44d2a32e1c88985b52576e12664295e5 -44d4232b99207587ecb426993407ed1f -44db457435cd0c8a95ec022bed430d0a -44e044a5820c3d29ab5be5c13ecfe943 -44e5bf503c43d1c1b2c0f849e62ca521 -44e9a43565593e4e73869a5d43f9c606 -44e9f3ea54e571a4d5c476b1eb83819b -44ea41b232cde15d07feedce7246329e -44ea925e2eb3470ef900bf9160ea1344 -44eb5476928c0aa716b0727375e98086 -44ec00115933efd9c66b18b57e486262 -44edf14de317d4b119492348b32aca9e -44eec755ab157adbf5d8f2cd00091274 -44f8617073f5a0bb44dade9677eae4dc -44f9602c0b8986baa87ac28e65d007a9 -44fbb4c014ec70a3f3f1b6fc03d10e22 -45024b3e3f21bd4d9a63e685e7909a75 -4504033d4292fdb45a6f92daa9551276 -4504999d921c9308e1b7b3acc596acf0 -45075980846e9625c9d5344795ba7a89 -4508cf4c0f279ae8dc9e20eee6d171d9 -450de3357ca2c2db4c462a6633bd5b69 -4510601d673ff508535219115c57e071 -451071b74a4fa3de6a74514923214d50 -45179d9f9d2568d614aa317459db6dee -4522a2b70cd4a97474dbba2657f41bc5 -45256f44d10bcc9e7e9b2a695b9afaa7 -4536a73c2b63e5cecb0f30b350ab3b10 -453b4600c4ece261e0ef33ddadad8de0 -453d23a00bae92ff0e4e63f7993b9997 -453ee68241357ecb070b5e57695a8e95 -453f6fa7ef70537d6ca9dfda03d1c99d -454a78dc78b61e35b6c47ae4d2f968b4 -454c5a5933fce7d77f3e66c573c6b600 -454cc3fff91a2b72e1ac4cbb25da0d33 -454e74777761111b10d605bf77d91d4c -454fbf5d45bc5d1211a74eec7590f719 -4554e1cbe64a7d4136e1d03946707e5c -4556a3932fb6192bf19c32ab41ec2794 -455ad0437d54620c0837e51876d6dcf5 -455b908cf7b5ae0b7350fe598293b8c1 -45611947c5b1105689a18dba956d8227 -4569209cbd61b54d4e50e5089c2ccbc2 -4569db9619abc4c3815f6c4c2702db1b -45713d40feebf7e487c5007ce529f156 -4573df15288edb672718def171183126 -457620d076b42074a24d78663b772550 -4578e9d464bb81722cb260e60dbf135d -4579f2c8800f1c6104a252f25af066fa -457b2ddb8c30710c88c477ff08048bae -457b84157c97fc0ed12ab5c849c3f4ff -45819da1132cbb3e3bc756887b57c4dc -458611c33ec3b27210d8c844808aebf5 -4588f18f3db0ad8cc768bd2264845629 -458e759663382ec23676c5be0c39d1f6 -458f6eff185be23d61e45f0918823e90 -4594f29588689ed2a192adeed7eaf437 -45963e5cc0e3aa7955cd2956226be639 -45969b43dcbbdb0091b176ef28b13019 -459a577a90c09131ad3832bfca60dc1a -45a3319fedf9b98fa06c27d83bbcd6af -45a4baddf68f9676e415cf27f1271f68 -45a5100866171463e5428671178b6c65 -45a820cba54f5799902b025d69f1a04f -45a969aba8d88304649acb52c61a94ab -45ade035bad3c4030864fcd0b62a9302 -45b0af51f96a669d66d5706fe30836d0 -45b0f8119d312778ccfa889718ed4fca -45b3ab06f316a83877c2707a4679f4b1 -45b4698df2c4f2e8689d15c76b880440 -45b4cb1242033e8d81373453f29f4d4f -45ba79bd4c1de178f947f166152a7b1f -45c33bbeae7a685c908b6a6ff165a35a -45c42d8a26cb32d1da9c82e0c9d936f9 -45c4a196e1e76d140fc61b8d1ffd5686 -45c811c490d6f0e377246184a518169a -45d2f520bb848b09f1d202dc83734b2d -45d755fda8c53ca2a3f5f145ba1d9d44 -45db2579c0495ef7b88862ba3e0ac03f -45e0030b9949a556369a52d150d26f54 -45e0c5d3916ed493f7cc425acc005905 -45e4964314023a921c719115abc25070 -45e7adc888b33cb12eca02322b5b67dd -45e9ff8241cfcb49f1bf368e7a76a28d -45ec0d06cabb5a7eb61a0fd853e612b0 -45efbe27f7faeb6db67dadf1fdc69f55 -46006c6ad68aa4e224114a8cce638d88 -4608b9c801f0654a73b849e34f5258a9 -460b23c558bd5de51a662bed74e06c2b -460e30c09f06da9d32a2f7db487fe560 -461f6d54c01f85ed48f8a6a3e366d159 -462094a0ffc3e678e4c63f844318cee0 -4620f45fbca0516bbe6db87917252547 -46215192c9958fcb2f6062b31e4cf3f2 -46277dbd8beba3289a45fffcffecb810 -4628267295250d699d958b2fb2979a20 -46292d2aff3f87467de083ac44cc4d6e -462c642ccd7e9022a8d75b6fa91b3383 -4635147bcc5ab5528cb00991681edff9 -4635fb65617564312a317aaabda4b1c7 -46391a017471ffe034428862097fde6d -463f71eb3bede78d33df229823a570a6 -4642247029e2c840bf7bd025f49cd02c -4643e6b5b4259b2138625217fba1559e -464948eff059a094c27cf540e6afe526 -464bb77f33ff7e1a38e7ee1f0a8269c9 -465637dfaab56b8c9c1028923b081f8e -4658df8100fc54d1a1fd8001c392fbfc -465d692274c2d0b908fcd64825d6b4d5 -465e01fcbbfbd612379e8d762768e8a4 -465e9119778e651b72aba5eb7683e5fc -46603b616023927755d7428299fc0127 -4665ebf0d93852120766d57250fc032f -4666ca5efa20253a1e64015c5db3274c -466e26e2b6f4361cfbeb920dbf44b7c3 -467c09efaa7e0c09f5888a4f944815cb -467e284a00c60953e482908d3054af9b -467fb49413b6af1b64c0ff26d99bd981 -46863a693620fc8f4f414257fffd5204 -468c6b41d5706d0934bb4af48225890d -468dcd1ebe4e82b2b9d451fec5824e09 -468e729086d947d3c81647c064720a09 -468f62df06db6d227a7928994a752444 -4690609a0c86d83ed90063b2cd387df5 -4691c8c972874acdf9c0128544180c18 -4692eac475e44de63727430b6cdb37aa -469a84f9f660f751a42ef2384437b346 -46aa60e1f20ab54042a7c634153dda39 -46ab08a0c95da92f6af872ef46ca8fad -46af1751d1172d31ab88e50f9657438b -46aff4d6cde93ca200ea6f0bc694bfd1 -46b53e642241b29ac1bd951b7519bc5f -46bc59720fb5bb6a03687a56ad924424 -46bd4b2de72f6c396e914b56f81094a5 -46bec85a900423ab4bc30109cb9ae494 -46c0211c372e1a1bd192ca9d3a33fdbb -46c070f3c65f16daf74d91f481c1d1b1 -46c0d75cf018e05f90ddc3b7cf554d2a -46c3d5db7c22343bd1aa06a40431f455 -46c40482b6abff160bb53286dd06dd7f -46c73b396a60f86bb7b8dd49c7942ed2 -46ccf323a1914df94d5453d3222a305f -46cddc64fdfdb640497d43669b588422 -46d0e7d1fb620ff3c02a04378b15e5a7 -46d0fea1245844dfdba9b0623f40cbda -46d585087317dc04ca312c35904816ff -46e27bda1271ff42de833a7fca9c7dd9 -46ef5559ae123a43b8d4048ada6f1d01 -46f12a6b14e66de7a35104629ed49b67 -46f1aa877b0f11e8c389b752c40a3d65 -46f25128a4f7a4f2f7ab7a9221fd260b -46fac0544e9d515098fa7285c74cfc9f -46fc8c4a99598646221c9614b5add5c4 -46fce2081322010b5a284b2b6b243ff3 -46fd670589284b9f55d899e18b8c8d23 -4704325bae6f7b896ceba4a8e9cdca5f -4709b692be7d21ffad9b77272b6622e5 -470be468cc76d39481ae8724079de53d -470c6e1cc5737b60b0b62c3d7d181b93 -471168bd252bc356c305cdb5f8d12c04 -471a0562ae4fda1174921273aec5fcf3 -4727abb97eb864c2e7891832461c328f -472cf2000130f8a77e3b4de2265facdc -472ea38a6ea8b937b2b957356faeb06f -4736227d82b4d8af143495888fe0f944 -473832994bf8b74c172da712a5597a37 -473c57f1cb2f656a414bdd356ef4e5af -473dfe82d654758cfe657d9061bd6343 -47439cadc23822d70905b168db9c39e4 -47478b25e22d9d4fb061989d2ae0bb18 -4748edcdbd9e32aa10302170abd47005 -474a9490af8c31cfb0555e33a8e03fe1 -474c6b76e438e14227be81d7fc68d0be -475153a8e8bdb223f44e9645bc533243 -4754de24180da3a6652260e9df8f8ee0 -4756a0945fe4252fbbf00d9cfac5886c -4759557df390ce832f2824f508de00f3 -475d3606a6ed9a7d8a56551567ab58c8 -475d921ff6eb9d0795a2a87ee06ee720 -475f3e17a11d8ca1b4212802eb665cb7 -475fcd63b1ef20c79b2cd5ded67b37fa -4760e0349237ab1566b2ccaf1cb41cfa -476546fe28f4c1768088e9d1e2ae0686 -4766289f496619f4b0c951936230555c -47667aaf09e68ba594eb674d3e078425 -4766890a6649bf9eb12a68e7737b53bc -4769f7d123c2b64b1253a3dbb8f894e9 -476a3eb77739bde4ee459f94abb764da -4770eea1612bb30564975a9bbf358dee -47778e2338a215d38c70d958b0fa71c2 -47792c7c6f50b92288ebf3677916c9cb -4779dd6d0ca6334fdb095b4667fc3602 -477e3b9d0d44c7b75ef30989322ced3b -478564ed0e760d108096aa8b520518d6 -47867584869ff8b710bd87aaa26b792d -478676863a3d40c3852d45ce1ffef4de -478a666d64da8c5973cb2eb5609807f9 -478c1199bed0cd1850ce66b77ce2190d -478d4ccaa1d29478275582520869c8b9 -47922ab1cfc7c82ac8ee4829b2900f43 -4799b7d59476f9e734165ac75dd3f722 -479f9e2fc9bf6066197568eb55a2ecfa -479fc6c8bf9812d21f82c5a13565d6fd -47a3440afd24e081be3cdab031721602 -47a505ae0d8f28b6174a1bf41064883e -47a5ad728d906a2a667459daf0ca9b17 -47a967942c726fb4ebe906bcb189b4d6 -47ab13fb9b20cfe8f4f538bbb4d97a2e -47ac7a74efeb6d524153043aacf8dec5 -47b0a4d4ec275c4c285dc42a0009b5d8 -47b19c76af314cb7b55c3bf57aa2e53f -47b27d94a7ac92c13140f46cb281788d -47ba4f42e22dc0336165440fb8dedc16 -47bbed66125f7455686793764e865098 -47c7bb3e105415bda8e60b435f9024e0 -47c934501a0decd62ecdf058538e20bb -47cdd5ab1b8d917e0195e35b34a69013 -47d003461bef85719e96d30845629481 -47d0309897bd64e01401f5d5a2b6864e -47d2e9a3e1b8f838dcb4aee6a6c5f626 -47d303740ffa97772fd3dd7488388f03 -47d7086a613f30ba6d5253577f876cad -47d801f503778a586c1d0d7efb875458 -47de2ea6d96a7dae35c8da629d698797 -47e495841162601a1d8cb95277ef6fe9 -47e5890d4c557bcfe6e5523712abe1fd -47e8a3fac046b30da05481070ce28cf4 -47eb7b7c0636e8112f70323b9677779d -47ef215d21d736a6ab437bf705f44fca -47f48ff32b1825dfd60bf920126725bf -47f7d5ce382edcf91ab32d868431cc43 -47f81d80c95d93176494596d4614da40 -47f8902a7567b93debde9e3e7aca3f2c -47fbd36f44afa6f7ea27ee587e21732a -4806439df34c9672a782f28bb57c4f96 -480914a73522cbcfe0f361045508fd99 -480955590593db12435e30ce06f1d1d0 -480d9cfac3a95882ee5c37d83ee6995c -48112d8f97018750ee7690f7284e0942 -4811551a8d54c80895810f64fc64eead -4811d5b51e257ccb20a25d820a3de346 -4814749db2b786c3fc97e4797fea56ed -481556aeb98ac839867df43c1a109337 -4816162e154fe84fbe0c7975d053ce01 -481a7fcb6991089f6583100b25e284a4 -481b60ac03fa57481aaf8c6a38d33b88 -482117560011effbbff09939bcc0d210 -4822dc97af8018a119ec87e9b4b1b43a -48232085fd5a1c55c99255572aeb7cf6 -48236218194a78180c24b6182f445849 -482653d71a12ed8b567f2cc6879f205d -48285e4d086ffcbf1e3794352c9a0d73 -482e30c8e8bbbce5509c2900d8a79aef -4833c88f3ccfd92338c9891093fb9584 -48345ab653f092fef9a64a88ef81d56b -48353f12c8a43e3fcc24dd11a7632a60 -48359c9eb749f43094a2ef57dfc24838 -4838e031ed3ca0c44f88bcf8027dc9e0 -48400d411b0100704a747e2f544c4d8d -4840e2034697e27608737cd457a4d7e8 -4845562e7a500608274345fe2a5077aa -4848ccc6bb90dd81a3dddd37dc59bd63 -4849cc05dcb11e3896e116a3454a732a -484bee590e2071af28f17f31c8892b83 -484cb95c953786c0c8be29d75d4f43fc -4853e0d1666a9f345e68c3fae1c3e6a3 -4859000e26cb4f57b4f192830db2b799 -485a4461ea8387a8b137b8d922e14397 -485fd719beafb5c9d06de31318187794 -485fe4f1a7113b43c199845f30f4a7de -4862d56157929529618b21d4661c397a -48663d642d3c037575a060600cff9fbf -486879f2e69dc0043cfda81c8b2b8732 -486c475cea18ec07536bdd901d95dc77 -486e0a7847ad0a20bcaa9b75f34e9cbf -4870513c7cea90fb2651c2a8438a8949 -4870a70e7522fce22d66d906f2c17c47 -48725dea6d1fb481a2c743be69354d53 -4874538ebab9578794ea401ad7616a4e -4878478b9a9ffc6ca2d20a583aafd850 -487c8cb44f801c091c7863119e49b9ec -48804364bc2a78913446a3aa867986f4 -48869495f60b35bc4a5732eb56c7e9ff -488b079cb62599544cde58c756c385ba -488cd529cf1adaba533a28b67a58073c -488d714c4a1b8ca3936e3f1effcbd8b2 -488f507d8a2cc33e411f39f9821b8441 -488f5a61bb38ce5d09bcf32a9651ea66 -48975e07ad417010ff7eac269f010df7 -4898d5a2cb226176c86bcde91928b489 -489ed7ba8abc41360c652ea7cce4896f -48a14f2b4eaca93355233c58a171651f -48a45dbb1de5cc4231564e249ad3c19d -48a8dca670bf9ffda2dad7abd29ca201 -48a985037b9870335d2e31d1b5649443 -48a9d18c867b0875a2bd4127a36863ba -48aa4471c01eaca67c445f5147aa494d -48ab88e071cdfb91b6bac487a22564e4 -48b299db5a7866ace5f450017fcd8d32 -48b9933597dc8a007c46027b7c998604 -48bc551873f8272167e299041a7b3460 -48c5ba7dcd419bbd383c8731bcada442 -48c7febe223795cdfa51e92ccfe51e8f -48cf0e2fe014059761e74e40f8656427 -48d15621d510a3a3134917602fcc5faa -48d47ffd24e340cae4992a8a69178301 -48d51795e1b4c15c8885d0331abf5574 -48d7e1900d7d9117dec4b53d55d58522 -48dda380bad8d137ad3ed04123ba5264 -48e0a23a0c744b40e81e696a9265f6d5 -48e3c5b42315c6c319a16b1d59da4d7a -48e7657aa76ba5783c2ee3c962af9c5e -48eb8596cd4dc2aa35307f7209f9d2df -48fee9aba233ba72649bc95759307de6 -490540cdb17bd218f1843041937c2f2f -4905ee878e5bbae74d889030b5d5f7f7 -4906b80104e7ebaa3453e69db4f49916 -49099ac26c9d878472bcb57b4a60c4c2 -490c335f44965ec45be206f8b2e314d6 -491232654eedc7b686fc3f345d10f698 -491332618635d725f6e5259875f9c78b -49149ca72946aa4c22a4771e838c0e94 -4919ae4e4bb7e8cb016df12f0fdfa962 -491a9065ed4d9fb611e74ebfa2807add -491d0c8f21895f18f7d48e994d44de36 -491da9bca9a335daa064752efe3b60a8 -491dd335d01d484d6757473382c7d100 -491fc557813e8a24cb47a82c2a46e43a -49218024123c18cfeca6609cd4685447 -4922046e93c0910083c9f003ff5f7699 -4922da9e3aa779da68f9270028c8c0d7 -4923d6659affb6396d2b9d4ac13869a7 -492545f991be1f828d490529ecb6ed29 -4925c4f814f259924a6e2f6ebf4ae0e7 -492d1c6195ab755cef55db721fcc2910 -492d6dd43835913476d7089a8ab79bfe -492d901f6d3878bac8169e1304f29828 -492f0c7e79bc61457ee63a1c6fa5c978 -493a60314909fe1db05ef0ab78a49d99 -493af307e02ef17bb93e11f7afa48b84 -4940cdb0c06d0043b35f7b5bfaf50025 -49418548c4f6bd001775567e47d499a7 -4944c83a2339eba84332388beff1887d -4946b0411d93935e3173708ab3b63f53 -49478dd6000a31abf436fc9baf71a15d -494b14c347d6734163e9eb294de3b8fc -4957e47e824073d06b6b56dc4c35f268 -4958659011158f4d34daac11ac8267a4 -49604d62d0156bb291560423c540b8aa -4965a2feb86ffa7128d82aaf97646597 -496cfdfa37031996f3fd11d36667be32 -496d35700f8063cb56ac4d45325e7e06 -4972f5ca1fb892fa146627b1d5241b40 -4973f139701d079f9da36a21e3c48e75 -497b95732dc479d211d10b453622c6fc -497dbbadf503c2754e3ca8f4ade772db -498bdb63e91e12418ab9135f0ac62c55 -498d363012544b9065486670301a0b00 -49955f39f093eba6ed7cc3e3f03ebef1 -499c539731245c647d2373688413eb15 -499f80023fbb0a18896021eee9cfbbc6 -49a4399c1dadf993d4dddc6139feeb78 -49a541ac92cb5b462e5d4a9c89412908 -49a5878473a8bf1682e93079cec2bfdf -49a61ba3367c62024fbe3f1fb4a3751b -49a6e76fcc1518f293f0c5f4162ca3cf -49aa593e02b5137d2819a3e48d4641f5 -49b4a5faa9c9bb7ce584e7dcd8ac7805 -49b923273f2501874f9be171f068b1cd -49ba0e4983a6cc36cdc06f7f362c3bc3 -49ba50d324201db70064dfd5137f31e0 -49c28fb898f882ceee81c3228fe8a696 -49c582ca5110559d58fda170f6617bfd -49c62139d181205ea9c756007baf070d -49c66331bffea2895a5367e6b0943958 -49c8e270dc8c34a40ca90e3c8baccf65 -49cd71d611b4d53b58561763b37655d6 -49cd9e3606c2b5542e29f90e1ec683d2 -49d6be222bd68c1737d7ecb7fb7d2724 -49d6e260c98a666a8ee0edd91251e833 -49d85e3e4c53cdbd0205bc46cb672067 -49df72e16e261cefe68ba1727abfb4d9 -49e20ea9727297937902791337cd38b3 -49e2d44d96c15212cb133c9347ad58d3 -49e5a26a35e6e95ea307837cdb437ae3 -49eb0fd47a704c986110ccf87627b6cf -49f61a81e61ac77d88bb382551fa0b03 -49f9f09bedc8e8156d724e6226d91a29 -49fc628514f8671d4c27c15824f45c64 -49fc74cc0076f50ff01962494d1aa151 -4a017223ebd66f64c732102ef8f684e9 -4a09b406213a78bea0d12561365fea7f -4a13632bc0a3fe7e31958fb92c7f4a7d -4a13fd8d8d682e93d36daf353b3c7df0 -4a1407eda51001987bdb0de9bac919c5 -4a1a8fd7061e61804fab62152c008403 -4a1c4707c011e0ceb61304bc28a97228 -4a20e1b5ef97052848ee533cabdfa8fb -4a2161cecd38f8691633afb6c1aaec1c -4a22ed784dc8ef45ee0ab5f3342f75f7 -4a27220ff91f482eb411b9edd1b968e2 -4a29b5784bc42ee795103192192b4b34 -4a2c83e33e3a44ebc59e62fbb8e39de6 -4a30c6779106fba8efdccb55e2faa881 -4a387cc18d53950f83f482d3ac16f953 -4a389cba5f86077a73261ad37c2e4829 -4a395a367cd706c50dbe0ce3dd3ea38b -4a3a6f8c7a88293f904398fe170dc4ac -4a3ef8674fbfa68563912c7602ab2051 -4a3f66428e721cecda1a0107582bee8c -4a421c667b2330ab2620c15c67993217 -4a436f8af658e0f9eb0f697dc168e088 -4a44b69de263f6cb771220d6d083c38b -4a4ad7e1b4b7c10bc73f94a3cd55f16c -4a4c3406e50745456f619c16884445ac -4a56a4827af70a04a20b44aa39694413 -4a58bcc937633183364d2c24e94ab44c -4a5aec3904db81195762af51cb911b8e -4a5c4b2b3e0266369cc003d9d084f300 -4a5e6159dc5a47acbc20255d1aae15e2 -4a639665f83fef5432b57d738ab662f6 -4a641e14c6f92ffe0953d6fd14bc5ca6 -4a69b07140ac34a6cbf40cd7991bfac6 -4a6ad4a02ad9f2aed12ecf3a9407b64b -4a7275b92ab787692693325a77aa5522 -4a7650b634908b499cef3ab34cfce316 -4a76b1f356d13380ce0f1a0304c8285c -4a778e162d1c9c7e4841ed6b98b438bb -4a7e941acbb07df3829476fd53ff80af -4a863e490097f31aae317bf47c945051 -4a8686cfb05ff4de473e77dba02b2414 -4a91174f04bd407a69d79995b155e4a7 -4a91eeda9d3798360cee46df6a3902f2 -4a9750aa176a137b792d0fd1b02b7bfc -4a99aa7495b8c641ccc1513404c2819f -4a9abd54e14e3f7598a3ff66a681e06b -4a9d77f1c1227b7d231dd2cf3819ad38 -4a9ebaf200dd40a563b81309304e989f -4aa169aab96778ab2061d4f2b8f04395 -4aa25e517e6089ad16d71ad92397e7f3 -4aa807d19b7f27808133882214e60f1b -4aa97158cfb78fc2284af165183f5419 -4aa98f9aba06f6c7552b81348dca6ea3 -4aa99d32c9d17e9da0a6c0c834738681 -4ab029c9f83553544261ecd5bfe3b4aa -4ab33f4ad33bada8b5b11d7a0307ef91 -4ab405a566a16216f16f8ef9fde1eaab -4ac7df7a7d98713d28f96fd099fca00f -4ac7fd05e733f1d52f02996221618dd9 -4acad7eea8c131d8ad2f131145b0937d -4ad188a64dc2ffb6d8ec8d4daabe27de -4ad32f6ece5afe41ca579e36535363d7 -4ad3fac2e04814eef5bb1087c9e28bc3 -4ad6fe58702277ae24cbf43ced2341f7 -4ad8f41c8001987de29e6c1deff123d0 -4ada6bdd950bf63b4c95603dd795b1a4 -4ae41175fd78d6bdd82ad36411f30e0b -4af04ac1185ada78d862b78570b48ef3 -4af04b5663cad4792b3c024e4e1942d3 -4afa762b2fd0c91e1367590f9f49af85 -4afd54420bc0e052736ddecdc57bd2d5 -4affe98213550e8194e1e477950fa053 -4b014acd2cbf3f95e0fc7a78952716a4 -4b0261b0e24c82ecf7c04ba5cec9106f -4b02ff02759124f6f7af8747ea810a79 -4b03d0572abe6987f2dace67cc614296 -4b0667268e517bd47ca7a8f68f835838 -4b08f32bfc85ec76524a0f5af6fba282 -4b09b1fd22a2c8a9237836b9b53dc080 -4b10582df1d1cd65a49a9753c55756b9 -4b1542804d209e432d3fe9dae7c21518 -4b16eb1e4f3d43db1f83c5cd49887546 -4b1e1ee607b3da4749b93218a4c4763a -4b20b031d4adbb9a9199339013fc5db7 -4b22a1f7c35cb1e295e6f3199c875608 -4b22acadc20da8a37ca49668d161a147 -4b232f0754658556a390e45901c9261b -4b268dc52b28560858d97cd281b0d01b -4b26a650f990483c2ece8bf9df1f311c -4b27529b139ecf4bb7db45c4499cb631 -4b28a8dfa9d96dcab1954732fb8c0221 -4b2f6768236d5ef33d380f1fed3004d0 -4b3071dd07b8cb88487ad6cfe9ea74c3 -4b308fa005b53058c6bff5a03b77afa4 -4b32ef66e53c1759fdc4413b1754bb2d -4b35753f981e74b1cf46b086201674fe -4b3e2437f831765dae329824332c6e28 -4b43e15fa04034188bcd27dbc04f82fd -4b46c6023bf4d9f6df879844ddcaef2f -4b483dc362e1e2fbf0483ff030b8ab1e -4b48f4b7ceb6a7ac6a1ad1a67f3338c0 -4b50f46ea3bf2176e2c3030e3297bdff -4b53ed9095cae3c19a7381ee53ea987b -4b581a0d05465ce655e7de1bda1bed61 -4b60c8fe20acfdade88f2e5d3e83fb22 -4b6381bf65927048a5c2d95d50d5bd29 -4b675472788a9dfd3540a2c6b75cc386 -4b6b48a52135868262e774d1b0353235 -4b6c048a27bff0b610e908b04a14fa9d -4b7752ece14a65b1b5d141a4953a6c4d -4b7e798bc33d719a79b3eef09e12a1c2 -4b8044e4821b8d648fa5848db10e5fce -4b8c0aa2dc4856ca267b5b89fe6ea4e6 -4b8e5b8d53aa3de98245969fd9edd36f -4b905fcdd146c682adda12bffd7513d7 -4b9135586c21a1e84890623afaa15640 -4b9226d6de13fde87a939e732899f80d -4b9b65775e0b8252aef646105ebf4b46 -4b9f05f1cc3fe946e9ee46f3a8f66d17 -4ba909b3b1e8e8cc66b282608abdb7ac -4ba9529a7c642ae07a7d3b00ca284fba -4baae66b5ca488eed09420f8bd16d820 -4bb4a5ee3651f1696199f780f08da015 -4bb640b05bd32055c7a271a73f49e94f -4bb678e18dc42db76c35eb93ec891626 -4bbccc181acad93662a498e822525e2d -4bbce301718baa495d1f5d800ce0ea63 -4bbcf1a510ac3b79daadf1c9b37d212a -4bbd13671934749cd6cfb0337d58a97e -4bc37b0d8eff20a510592f78bea31acf -4bc642bc2a123d8d092162e591bb0469 -4bc947c01caa37502e8591cd79a1a8f4 -4bd6c73fc55f997910ba6ccb602ff6cd -4bdc1d18b6a76d3bf9bdf1fd567dcaac -4bded765bf27a0fcfb2a04ccfeb34ab1 -4be172115bb8de25493eb2e0637d7688 -4be1fa005bff29059408144789ef799b -4bed8c90ebcdf9d5476109c83995ec70 -4bf5f6387e2cc978aee95d0dd73b690e -4bf8fa28e7af0ccb594832fc66b87d69 -4bfca25b324a305d1cd808dc0227f21d -4bfe32633a8139bcd01297aa39c24823 -4c001b0632cbdcdadf6a28407487dc6c -4c0052a021da4f746997ccc383810640 -4c05c2ed401c585928aa3bc342d0dcbe -4c0886e7691557b9795bd3ebc3a9f3ef -4c0bea267034888baf7616ac87f5eb72 -4c0f4953406764981bb7d24091da6bad -4c106a4e2ed6d37112fea67f44d158ca -4c13f35d3fea3388fb730a9f2590cc55 -4c18087648f3d0c8966d0574ad5d155b -4c1a9efdb63ed59cf91f40218ca36f58 -4c1adaf68fd5b88d9260a111cf0f3ca6 -4c1ae55d6a68c612ca54933a6105c904 -4c2074b00df99700627059d1ca169fd1 -4c20e863cd41800b2552e161fc4e6b84 -4c217642f2e3de6a84742593bef883a8 -4c2302853f8db07dd061817c2847a594 -4c23a2ecf8a3d2b96d582158d5b4a8aa -4c29946fb44ae757b1ec84ee95b0a951 -4c29c60a9686df0bb85f210a2f48320d -4c2b5e31bc9e29a453e3cb907270c4df -4c2eef4e27c845b1e5a1b586ef88937f -4c3ac08950a0671934cbebbd8303339b -4c3b056705c7ee565921530e66de7d92 -4c410632c7e920e5e6ad44cce47d9417 -4c44d8580a59820320a2067ba95aef70 -4c48b41124a86da8d97096c5724977c9 -4c498af961a3dcf727653c31e1525b13 -4c49fbd15faa738b18fc479980525c4a -4c4dbaa93437c7806e330412b11fa7e0 -4c5aebb33942297ac2340c5130830825 -4c5cf4e9a05ebca9526ce53c02964f4b -4c6220b72e9d1c5f78ad4365683de657 -4c622a02467cfa09e102e925b627ef9d -4c63336cb578993664f137618ae1952f -4c636a51c7a5822ac7df814b421c8981 -4c70d8f0c7eeadcc91938e7002f4757a -4c7e3dd11be5c87f4440ad13869def81 -4c7f4b4674fb274112b0a963f7307510 -4c8f0e8ebe3f64c2594fb65b3a53897b -4c8fa67085091b33ba9d933fd7250165 -4c94f30ec4fbef1d723d2801ba3ecce4 -4c9774498589382cc9bc06f603cf2642 -4c985350ea546e11a6c88db84a42d9a7 -4c9901b51dae158e4f3a511cd97328c4 -4c9df5f75cdcdae2676d1e7e2e680d5c -4c9f80bcf91ec0588b96a5ee3ee8c910 -4ca45989d601c1c59852b2fb6d574e75 -4ca92f2f7cf3d5d6692b7c83ab8cc299 -4cabe3ab390d593f0265fdb0adf00a99 -4cadb0cffe22a7d95bc62d3031c1b129 -4cb3fe4f7eff4d1712bc89f323b142e5 -4cb68c5c6b391ce55d44cb69a9ab0465 -4cb742897b208093f9c53fef9a21341a -4cb84ff6e627cc660af81c8df97f4667 -4cb9b767bf5891b291df15f4e37d0b7d -4cbaae2b0f58c753618ad42760059764 -4cbe6b078a5ad788d9ac84c51c7102c7 -4cc17f0c154a9c3ba6ef124eebc2c976 -4ccb10a841822eda5141e286335092cb -4ccd64ec88004d2b371f09635ea6ffdb -4cd21d2339901a63baaed7ab16b1715c -4cdf51e4e711681dad9927d424c50fa6 -4ce04ea860942900936d01b74b528381 -4ce0e979c1a7acb8bd65b9e43ae2c166 -4ce0f915f67dfa44cb14fadf037cab16 -4ce4550810d8463498fea74d2ad829b5 -4ce5f56783a1cc09d5a851558ff392fa -4ce869b35cdf0c56883e07c2a36fe376 -4ce95075727479c8b1793dea7039696c -4ceb0fbf94c6dc4058eeff3bbe2267f6 -4cee770b0ca3eb320581f60b2dc1205b -4cfa4d023575d40222e12bbaf3abc112 -4d06a7c9e617cc392966b48f91700d83 -4d11b2943a2577d708f7ee43904c3d1c -4d14020d1f0800e8f7a4e67b75b18ab7 -4d140ea8eab74088b61cf19d0a55be76 -4d1c338fd39c23fe7f4983361e9b47c2 -4d1dee9bf9d8df55bbc2afeb2dc05e4b -4d1f6d73cb5441ee3d44d1c50740dcb4 -4d1fb2f514f2bac7aad362cad207571a -4d21d28e09dcb04a0e7e8d2543530f2a -4d2526c50dfcb2b473cbca8e951d5f09 -4d2b21a765536cb25eb5a6de1d5a8938 -4d2cfb153906912edce336c94425214f -4d2d400914721416c9b447de1b5d0401 -4d311e73bd7a41b8f29998b41bfb108e -4d3d0e3565262dc31af8fb1d38635b5e -4d409071ced49c62edc20c3618806d9c -4d41d83a4a49ad0b203bb528ad1433ce -4d428199c38f8767080cc2d15c225d55 -4d444e028a7e0efd54fcd2b5cc529360 -4d4a17b8824e2790ce08b1fc3650eb3e -4d4d1b7115d9e6629595c45df1df79f1 -4d50214a4ec4961bb27e2dc4921b2f5c -4d577e6f90cdff2a150ac137d7c17d26 -4d5f5934e399d84f6b046fa9041299dc -4d6255bca13e8ea24771a3684e6d74e3 -4d65593c16d62d3136c692c239af298e -4d6aa5ef2a4a28fd99f7e6631a3507a9 -4d6afd145005106df0878adbd2d13b65 -4d70c658418a5c7f96d041499d4ab1c2 -4d70f195aacfe0ab8cd0df7c11ed9b7e -4d72b8dcf98cb15e221142264b80afd1 -4d7383a5d39e94c194f4b897d5d91ce5 -4d7b199468a09b7500cee06565e8c80f -4d85d451d8560b2df535b7371aa1d4a9 -4d861e99cd6cd017c64ba0b3f850ad22 -4d8e13c4edaced86ad508787254f4ec0 -4d8f973b37ce704f9d024d444ac27863 -4d91c72a3698ce680e7eb95070d3cea0 -4d945c6dc9e264ccc2276af24b56006b -4d97992dcf9d59dd9d7ff74c5e208951 -4d984b841f387d95c07ab147640eb9fb -4d98b065f0bfb5159f8a10049f03974f -4d9ba7b15f608b17257fd1f50f7dfe1c -4da74b8a6bbe37583db7dd40b38a5e3c -4daa4901139472dba452d78e508eef49 -4dad054b8e6b68dcb1bc0e207d67f271 -4db353a04507c760474e6f07ab23fce7 -4db5c19e218d5e20c04c76ea80cfd0ac -4db5e0765e649048d773b4898fae8968 -4dbb9828d7c80916d98e97e26794550d -4dbd72570887d4425f610822f18e0a62 -4dbe835f52bfa19fd2645cc230cecdf4 -4dc0445a322a47708b1609c3b24ae421 -4dc099d7fd49ccc6ba633f816fd8c967 -4dc21ca96fdea28e80acf3f2eb434fc0 -4dc2d61cc71e3e10b7a1e176987f8415 -4dc31d98c88aa438dd024d7c42ef05c6 -4dd023c313784e4e66454390f97cbb68 -4dd23e0c16e46a71d004f5e82c4d54c4 -4dd5b9eabac961a5ef057a8d1fa53ef0 -4dd6a220ade0bc8f84f1b85addc6d4cb -4ddcb75f4b9d356a5b95c9805be98ea9 -4dde1ff06212cd2bf65892bca130ff3b -4dde35dfc1873e7de15abe105ef87b27 -4ddf3f3402baad0d5f7b2e18f93b50c0 -4de1dd781a0967e336949206914d670d -4de20ed2e12515ce748c90af65baaf34 -4de32d836c38bb1ee47273c1047a31b9 -4de376a3e134c4f5f9892f249483f3a6 -4de5b934538e37e030fe6b6d911de5c3 -4de76a814a2e22e86aded25e3c8f3e87 -4dea978d5c77e8fbf11691c2f7f68334 -4debedea61f602c94397558440a507f9 -4ded27870ed39c0c414d5b10b08a6253 -4df059df96d054f55d1c2fc544ca8020 -4df356bf5c2fde7060a0696cd658a852 -4df5c15adba7f1854ae00a9dce4b21cc -4df6f9d653efdc105756a1c11caed458 -4dfabcc24e661f3853c30e3048cda410 -4e08c12df4962152457e12596d308229 -4e0ecdbe2600d9deedab998424da4c4b -4e0ff525b71ec0065bc40f96c3eaccea -4e12f6fc4283a8ac2d7cf94995ca5970 -4e144c69ba571920d82b49618e1e6cf9 -4e14f8d498e6637faf99eabadf5dd6d8 -4e1533e6fc7c090f0934f0df2ee3e4ae -4e156ccbbb87d1b3f06eb7cd1007b723 -4e195bc4ae3eee34aafd0dbfb223b4b7 -4e1de1b5713f317ee955f08c60d4830a -4e25127e33820bc620354eddacb23a6f -4e252431d2580af8c9fa544a8dbd62d1 -4e2aed86bd5bae7a1b8eda758d4241b7 -4e2d0f808cbefa3fdf1402e7e3558c77 -4e32a56959ac4c9aadf937b24c9b03d5 -4e353e56fe8c6638c26870656f977ce4 -4e36bcad6a6027f1e94cb5b4039ab42c -4e36ff849630134ad12d848d8dba4a3f -4e3aa28cf1982ad04625629348c1a006 -4e3f8ab7579d35a8631a4e40d199ddbf -4e41f02b3dbcd7cd245475dacb7c83e7 -4e4473dee1f1b4b9bdf5ea55788a7400 -4e47af53938aa96b92ab582e93327470 -4e486eff113a966f7c4151434881a6d1 -4e4a4b96aadf711260ea6d5299d2883b -4e4bd8fa220b49ffdf828c17d5fe4911 -4e532ebcbede333d9593c9e8fb39d533 -4e55bb2587dbb91756a6bdf2b5c3d6cc -4e57bb14257eaf3bf433bbc2f543d43e -4e5a3047be8351c2beac2fb914c831a4 -4e61752e4d56071c31a8612a8c9d0a73 -4e61d9be986084bedcf3b02222b888d2 -4e63a617105b72b89b1724f91cc1c9e0 -4e642e48c76009cc8518d3d2aa804341 -4e64e5bc72980c38fba14192f4a57629 -4e65c054a86cb5aeb169e00133d30815 -4e694cb858a9f6c1103f3a75c540b62e -4e6e7eec273f7f1fcd09c02e9fae17b5 -4e7059eac9ec2326a80e7c269e5cde63 -4e71120b241aa9281ef0043850768505 -4e71b7ce38325275fec06b095f92d28a -4e7bfd919237d4c2036ea520e095deb7 -4e825e8d3a661f11bf358fffdfb245f0 -4e856269daf3a56d0efc0398224365e5 -4e875cac3e3e298c099dd91b2cf7e264 -4e9bde5ec8a199be9ee3b888f45509bf -4e9befc446812a156b2bb29a3fe59386 -4e9f07d46f907aa28e8cf46984f5d6bd -4ea1712ad2122262f93e29d72595816f -4ea4656c51a980a7965b78235e93101e -4ea8595f077974cd2977f6eb28f3a953 -4eab5e77386911559358a84907817dd9 -4eacfb7829f5fc2434a2f7b4f0604c5d -4ead46df9735ffa822571aaf129a3390 -4eae0fcae022618e0b98cb2cb2a38dfe -4eae696a74121da6e08bdb703c608570 -4eb074b98f459ab0f171d42b349896fb -4eb115db5200d6557c457f9fed434013 -4eb4cbd425bf334f3fff86ea7b2ec94e -4ebf4e7f6784762d877d0df9c728c0b4 -4ec2f7bd978b83aa238f0a20fd426fc9 -4ec6f817cccd727bc48cfe902abf77f1 -4ed3b85fe7da1b29909778b08363fb53 -4ed7760b17f6c3cd0fbdc59ebd91a0b4 -4edaeb2e5167c2eb0b871db1ad4077d0 -4ee487a19482d3125c49276f81631582 -4ee747d9eb14cfe8faa5e98f7823e203 -4ef3250947360cb44a7f6ef4450d674b -4ef3a11f4a2e992b3953423455174e18 -4efcfbc5416a38ff1343ea9ba2ffc2b4 -4f01c63f9c70d6f54791d7b3573cccd6 -4f0bc15467ee9517b7274398459c1d45 -4f0f3f6e0c1c1e7d5a0f9d1b2a8244a1 -4f12aa909fc955bd7dbc590592cb7900 -4f16e1a12ce201eb4ce085c7fff3ddbf -4f1e26c772e14820c8cb8373f57093ae -4f248daef86725d420e754ff8f89f362 -4f27445536fedc698bb831ba9be40adc -4f2988d667e946c5addfd09b10f19c56 -4f29aa56383c8c27cd739b95f1f1faef -4f2cd2ac3a7556f0f6fcc47b284df2fb -4f2cd915fbe71ef1962a94cc511efe8e -4f2d35b704ff65c0a536adb33868630c -4f344e3e23a272dadc1d0122c4648f52 -4f38fcf575a92d29e5718308fb7416a4 -4f3aaf0562fcc24063e0d5396892d7e7 -4f3bcc8b7d5f923ced0be5446c43fdb7 -4f3edb86c8542999a695415371904561 -4f44618433c1c129f223717ed379fcd7 -4f48dee1786480e1057de71647dbbde6 -4f48e60858dc789551af56083b5839e3 -4f4ebeeafd5aa5bbe8a3a43227289842 -4f4ec00d6968fa558774b7b92e8b7d8f -4f55a6a69f4fa2f58de643977e532e87 -4f5aece007e1c4719f1a48e9cf26a166 -4f5cafcf7ffb057b9382d4c8dd17d281 -4f5d0978dbaec80477f46405b260150f -4f5e363968115b34928b11867b915288 -4f5eb520687976e4606aec12d2530d05 -4f64d6a670aa60104481b55ee889c58b -4f65cf0586a6e2ebb3f183ed14b68509 -4f66fa624ea823eb116328b6816fd5e0 -4f6a9420037ef6df63dffd444b1da4d0 -4f6e5faf600cbc11c28f7c139d6943a4 -4f7476ec7fc7e81a18be156c556e7058 -4f76c742dfa75e408b8ebfd06da4aff1 -4f869fa2713344611338a84fc6d626b1 -4f8ccbdcd017115e35f28e3bcd776c97 -4f8f1bc2295f0d3339c974bebb403799 -4f9030ce41e05c95a588128d2118fe21 -4f91f47ad4280a66378d0922a7ba30c3 -4f9bf2aba5e6dfba7f9da70a44be9a53 -4f9ccb93ae9e8e68be640c0b94657723 -4fa098e48d8415a952ea73e8bdc06b9b -4fa37c81cac27c9316d94e6206a030d5 -4fa9f3120333ebb5cfca1783851df323 -4fb56a77d49abc28656d6258b4e7536a -4fb8b2b10f69488566659328432b7a80 -4fb905d07f9fd0d16d6ac786bae5e461 -4fbc0b87c47a3a63504195c07f3cf32e -4fbdd3260ebb6ef8f526ba9b1ae617e8 -4fc90eccd2c727021fe26d280e39b1c1 -4fce0dbed230fa3d750e9b3bd4698e74 -4fce5dac2ff06c0125c5080d6f0b7975 -4fd4cb601693ee32a21f7a4ed5b4f4e1 -4fd58aa59ef497460af721698fd4143b -4fd848693eb03608f040120d6592cb0d -4fdcc0c7b0a5d2529b4b0581903adb47 -4fe00689acdc3a03b950737789bf4a28 -4fe947eec101fdefdae4019a0e0da729 -4fe9aad46f5d2e3208e3943bb27f6152 -4feb3b4897df92d2e7ba98fd8c766f86 -4fed079bef01af38fd05c55e76a0984d -4fedcd0d97b7e39eb42f4651e9ee2c43 -4ff05ee430ab1a69ac2797e40d347c6b -4ff3825027ac2d4f971309fb4e3c7c6f -4ff5004d4e8bd04511c21b9df39c4900 -4ff6a4046994a6e48a7ca7114ec7653d -4ff8e05869a10a5be941e36a486ecb07 -4ffaaf8a88427771155f1dd191cfe693 -5001e885b189fb9e28e00df99044819f -50028bc9550b6846beeffd17ebcc3d2a -5002d5c3ea780bdd2f6488182d69c99b -5003cd248c3c6da3b2d84a53b868035b -500720bab658f8a75adfbadbb4ac6f9a -501058a99e45c65779d2d78d1b46563a -501773f27f48caf7c73c4fdd4417c4a0 -501ccdec3131c9f5c6a4fde576571f6d -501d4855e8ad85244c66c090554c3f05 -501edf56c8a17f509d495558e66132d2 -50216ee22ad63f96e5433a1980ed4511 -502197d1e5c06f9413e60aa5022ced36 -50230e5a4ad3c500bade2830d30bd036 -502566308dd75fd8a78a755ebe9fc396 -502f4c4191ecd2682c7e3920ec669651 -5030ff731e085d061692a451cec29941 -5034ccb4c08e19a43f4d617f058eafe0 -503d5a861da60568afd9b9eaabbd1b50 -503f69e62fce3aca7aa4cf287d0a086b -503fcbf1035a6663158d30d1a75457a4 -5045405daebc4003895c31948659ba33 -504688d4d66064754eb7b4957d0db158 -5048c310f0e9c3d4fd79b86bad84bb37 -5048d8f3abd2d984195e86e44b82d6af -504aa04bca7fe1364daab11d7a290b90 -504c955c6fec678e1a173c4dd93cf626 -50510e297659b03bdae6ff558e9c6419 -5058a98a6446693d64158ba82aef377d -5058b7041927a8d1af9eafacb60bcc65 -505b335cf161c2be74d2d9803f3816b2 -506597dc9e330eaf61840e915e446d84 -5067c75fb9ffd5dba353493eea89d0ad -506a0960b6ca3180e41c6a70fe2f74fb -506c82aa8b63d4b7a70c4055cc552270 -506d93d30f6358aee07a415ca6dc0c14 -506fcd465c6586439d5cde65f70af9e5 -507064fd93eafe8d9e38a0bd26c80e16 -5075c31ced93733f46878cf2725bf3cd -507639048dc28673fa58e06e4ae05461 -507e8e0fc909fff511322645c6ceb8c0 -5081222ecd02f76358c0a6b064ecd7ce -50836bb326ada4d2a3b9d8f953a144a7 -5083a6894808501b742f1bef241c18f0 -50873d0c099d6487701f870281baaded -50884648b659e3790a1cca91a56d07b8 -5088cee84155ef6e081aea9cff4cf39c -5088d369235e78f30ceb5a851058789e -508e7016b28eb0032b35c58605ed0334 -50943902f960ae3f1d8f220f692644b0 -50943ec47c3457cf208f4e7973a63387 -50a47222a3f0d1e97d220d04ccef7d72 -50a5781812f9208f3ec6e68f378d0d0c -50adf9c6c100bb602e1fa8cc42c183b4 -50afd89108c8b230b3456fc4342b9115 -50b0d3d792379dfb2c22ebe6cd3ba2ee -50b7d0acb6575322679f80f47a663e07 -50bc4c08c7001f5b3e2062574976fafa -50bd9efaa24805765e902c7e2999b4af -50bf0b01ed8b442091a9e9ded8b99de1 -50bff042f7fffeeb5a236f3d331bac1e -50c49fcd23bac2502bc121ad85bc70a9 -50c5635a5fe322fcc5d9d794863e07f9 -50c571f0c4ad2d739b26095927b7a5a5 -50c8a0bb65623e46ecaa4b2de62bc598 -50c95aed3cc8fcb5c93722c2445c4a4f -50d19944b7294cee6485536d28654697 -50d1b51835d0a87ce1c76504f31f8c2e -50d1de16973f3be118568479ba96b9cf -50de79962ea81e1e9ea9d12a893919e4 -50dee17a77dc4c9d9b6a652d84d4da58 -50df40d222277ccb38d31a6d7f787c8c -50e2e7ba5fe23cfb84152137df500abf -50e7ed89c27732b8f45e462379ed6541 -50f15ea61da0a225661b9d45c063bb60 -50f8fec774c38dd6e77c92cbddc217f7 -50fba0b0b9d7cb1a2e655fa16ce1a78e -5102464e41caf20ef4a41267b4e0564f -51025779cd25b1d5af94ddab19c96570 -5103c86f37301240ee9e2895fe70cd86 -51042e0fb2cc1d12672b2e15064988a7 -51056dac3be674cc6fac108d41a64aad -51074a58ac8a8c084d38e91b84fee1c4 -5108a46234af5dfe0bd85aa7fc623b50 -51094151484506345802a8aee722ea5c -51142f139161c15026799d0df5cc2fca -511c2279758823a9604d0d71e536f4d3 -511c36fb686a9e1b54dc592532bbd339 -511d0324d8c5dd06643d4c54f34a14c8 -511dacc64b45b3c18d6d60326924c7bd -5121c3bdce8c0fe923bb1d61357354e4 -5121fec93edd43c587943aae3d4ae7f2 -5126b518cd85559bc29dae91fe424339 -512811b8d5fc13ae4ac1067136dc58b3 -512a19c3f2cb49bdf11d11193ac64553 -512fb55153cd0647d415e1afe604a0ff -5131df4e327b0a1e3e6f2d76a9a983ed -513a0f26a252667f62e549ac035f5093 -513a36918e6efdcd6ff512cb0072e64d -513eeac44d193906675da8fad76d72d2 -5140209dce04cb73305f08ce4a982b32 -5146959757509c164fb8a464a344491f -5146c455d7eb63ca21c75a130a223aa5 -5146dc26026ef6400d0f06d5bca93222 -5148c0ece381d5633eaef9fc2e36f183 -514a0f3b6a72fcf3d46799c4715e1606 -514fdbecea0f3f40544c0aeac44ce693 -5152327db053043f45e0844e1ed65878 -515f1c8990de2cf952e79bce06ce0343 -516631f2ef2bb8bd50dc3a86db14a198 -516743ccca71e93f76350517615c6066 -5167ab7db68b49ae7204f6761698b38e -51684b7807ff0ab7ee9b1be2c986880e -516ac427994880370839088bfb3d02c4 -516c089665e6f5f5cc2bc99c16089dbf -516f10244bf82ddeaf95ff2e1dd3c0b1 -5175c1977332f8ec57772184834289ca -51768902ac94452774c6d03de394dab2 -5176a34a95d0390021464a74e8c94b2c -51795e003c12aee8b7d69897e0c842e1 -517c2d84efdb86583a810330ddc12297 -517e0f2b2b9af39804d9beac25f7ea4c -517f89d7aef428be8915adb8625c91f7 -5181476986315b78a69542560e66d8b9 -5181fcef563885d8b6b79b1669785503 -518adac86440790e82f945fa55bd6799 -518ce241478130b92658f9f7e046e39f -51912662690fed540cc6b01e5ee022e7 -5198608e8ece1d3581df7da6681fb36e -5198e5b2f5b915f08e9d528c63afa149 -5199b8331b9acc95bb61f2232e981772 -519d27c12e535fc9415d675c1186f2d0 -51a0d14e439eac0ab0762d2c958b2176 -51a1e213a1f488022511ffb053263afa -51a46f9a4caf3e0048c5ea5e29a985d7 -51b2dd5db2b1c57a4292257ee5471658 -51b697f728e54a57ebf4beeb2f7f26f4 -51b7b75731d08a8e8803f5768e7b1d06 -51b96c618fca2bd539fc2e56ac46ea06 -51bb9039ff6dae3c93781cd83bcdce68 -51bd08dfa359dffd2342d347849a8449 -51bd383240fcce841f61c926b89d48ee -51bd9621c74c295e7690474b0a49fced -51be1b0f12175311d22515d02414ce27 -51c5028008307abba6a3c868617328ab -51cb55861f0683b8eccf6df914499b38 -51cc0d582540a823945b921f69668a96 -51ccbcb3e5c673d687f554da306876e3 -51dbbc908cc1a10f42a8d1855bc815a5 -51dea41ec06433ec2a230d3200ae08ca -51df4e6bd6f91748ea2503e433ad7f52 -51e0fdd432828e255b47240529d88dcf -51e15c63c35ae5673d7fbea36ad63382 -51e24381e3d1a9a436cf93dc25335f91 -51e3be019889fb2d8fdd7fd5d69cf43c -51e8b4b921ea22aa1a39f1531b635d84 -51ea80e2310e96729f81979a1104302d -51ec8c9776461a7b508bd6df402103c7 -51f9388c1f661e9fb33cfe5492e99174 -51faca51e5954ca26d39c03c8b77d581 -520171213451e1ebc54e03e077477377 -520278815ed992ab3265c48249df8d5f -52030f2c1c050f59e1520802fbae01f5 -5203d0988bd0529c5f8c7193c8485a82 -5205311009209a44eb4acd179f8c3797 -5208adbf4e3dc2a846a06c408b536afe -520962ba20c0c42c5fda41013418b8c2 -520ec0717c3179dd56a0b686a2112154 -52107aef5ea737e6d59e59c7b9cbf741 -521229d81e0e43febd04c5481f6171ca -521c0914e1249d4692e813c84d51c631 -522246fe378684498e2c124d3e8d2c5a -52239e2d244c5c05dd6255394c0c3294 -52253b4f7559297827e115007615ef02 -52290e575eb8d5ac06298a321bd89545 -5235c6c43617b8853d63b41f2e38d8f5 -523b9e8bb258ff95f305504e48c7e709 -524d9a9fc833ba66e56c0054d4d160d1 -5252d3d6011e093cf009583a07fa20d7 -525580ffc74e679d5a89530f497af735 -525832961068725bc8c3daa4c3775884 -52583beec4461481f7d507b246d290b3 -525ab71d6a104ece838c42be1f7522c1 -526053aba777a1404f0a0f7d183459af -52623b84258d4dd55b9eae1f81c1dc04 -526542b8f5ff7b958c0ba60df91767da -526a4df188a0b75f070fa0f0d310a44c -526c7a69b160b1b0f5591b270d4159a4 -52701a6f802afef1fa8af47e6def8880 -5277e3755fb863d2ec75b96adb7d0c2c -527ab8144dc197e572b53a3598b6e62c -527ba9cbbae5f4bee866ae74b170dc88 -527be2a0cb40691c2b48151b103dda22 -52813ed2bedcd1dce4159c7c3a38b4c4 -528780c6befe777138468f32291bfd95 -5289ffc88ff0442cff2dcfce0532f4ce -528dcc70d5fc6d5476353f36fbd46365 -5292fd83a2357ceb84f7e01e0e0d58e2 -5294e4422b391ff4b9bb39147addfa60 -5296a9d34eb88d8f7c2028033c9763fa -529980ae025ae3c1872a5dd191174817 -529c494d42b7c97415159d09313f1ed6 -529c79325149834aaece1ec426df1845 -529dcee6d2889fa0e578faf96301edd0 -529fddce0401d4505a483b4aebd5c5f1 -52a05ca27bca1bed98efefa0d09e4c29 -52a3d1694d9ef7ad0ad055087c05b9c5 -52b6610bd472bb80920c30667b478f5e -52b9a6eac5c3ac940e3c28b530dd9f50 -52bd596d40c14e531a4393f0c7d3599f -52c2e59c4e0d734f34efcd6da6e1919c -52c79013406d0a93f30c90f6428079f4 -52ca5949c4e0f42364bc22759d1d3136 -52d7f48b80c63212f4c6493922eb32d3 -52dbea58d3d33f8e0523e6b161657961 -52dce9141629b846a65c960c71da4818 -52dd4b957b9aaa620596fdf663dcf207 -52e0802ba76137ca6fd99979df9c0a45 -52e53ab4e55dddbfbf77917738f4250b -52ed12cf809934942959bd2fb4f89db3 -52ed9f33717f5dc78392dee4c7239c3a -52f1e52c8cd9310b50edcd65d6c40ca2 -52f73fe26c0964bb5c7588b0c41d393e -52facc9975c3d6f367d89d9c91ad79f6 -52fce820d29de4875e4b3738d56c2b1c -530081e753caae0086ef39506367e8c4 -53065109cf8e4098cbf9ffa6e0d2d4e1 -530a386faf89b113b9e04a97e1156c5b -531469f71846d228a70aa476f42b5d68 -5315d1d2bab05cf4863000863312a449 -531773a4010d17332a7caf09f591c683 -53191fa60d0407df72cb2c5abfc40045 -531bb4d4df969511530d22776af964a4 -531ddc65722f737dc6e21db4719f601a -5321d2ce12f5cd2c2f2f5a60481e5706 -53223f9302cafffb98caa53765ed456d -5324344b52db44d889582898631fa7f4 -532443fc65bcd1514d382829407086b1 -53264ba24de8e442d9f50c7db61a4332 -532662d31d64110b55c15621931c8453 -5326c29f98cb866578a7cb6e36c8c128 -53272f2b6dc727c3fbcd4938ec9768cf -5329bcc1eeec8aac4badd596e03ccfb3 -532e00c017523a584c7308b178ef7a2b -532fb5ee4f3e93721b10baf3b6ba4207 -5333699c179b825a61d3ffc1c69c5e8f -53396ada794e714b5032c850c9eb6402 -533c0778e7444b201419969a10d55a2e -533da310e5e2ba13c172a84b62769f58 -5341e1f1cb8c1b3f939d1a46ee6e4810 -534217c1c8eb7a23c76b9cfff087a975 -5345d9b7daf3ac5dcb6e93ee104e80c6 -53516d786a766ea11a61bc5fcb44650e -5356f31e19126c7acff403aa85fd3c49 -5358b771d7e52f1bae7884e84f795335 -535db42b77628804619c431f52e44797 -5366f42afc3a5e6cc1dcd853027c6883 -536c777c22771d286ab2e0f3c51046f1 -536c783bc68e32043c4a8a9148ddc055 -53722d1cd19ad042776675e05f70ce88 -5372b204677e590f7aa0a73d4d91944e -5373658480eb3b62b8c24234eca05aa0 -537dcbc98fdd5d4058ee395624de9a29 -538056f10f2ade7d38f70901772ea9fd -5385e26d6587312b05dffc74f4ba5ebb -53888ff8f214ff55b258b2c7e741f5c2 -538de9b76e686a50ec3c597302139fe8 -538f61058110dede2cb3a9ef3803368b -539357ce31041319ef83705444e9670f -539403961b0111c7532f5a169aa1f6c7 -53949175303254e4f6ff3af7d527d580 -5397e49d5e8ec597f90cc9a3e7a64721 -5399ae0da26e5d33b259a9af8ac2a8a7 -539b94014beb121579f09dc027ecfa06 -539d0c4e75d433bec35e86774631b986 -539f0dffedb1783e061afc70f83c332b -53ae21343beb14657400eb23f048355b -53ae223fe919df6639beeb47fc118520 -53ae232ffbcb8a4fa305615cee69d9f6 -53b03c928a44f3ddfaa5ee60cf8bd4d3 -53be2e73951710bc59200fc0bd2b2887 -53bee6f86d72d18959eb6f603a6964b7 -53bf848eb80e550ca85245907373e1f5 -53c142408b6fe4119de414df7c6de792 -53c26115abd47eadaa21bba11cc454ad -53c314fbab503d252e5da3e1f89d07b6 -53c5570aa386394ef34e5a08f0d05c90 -53c667aa6f4ab98054edd68f4d0e1bdb -53c8160f576f30b2bd9ce3f3ef981758 -53c89853a00c8dc0ccd207a601bad050 -53c984e0e5989fe79575cb9c31621b5c -53cce88f1a657d98182c71f316cec5f4 -53d2798824494ab1c454b26dd1b3fcda -53d44e3031d74239d0d72d9da33965f8 -53d75ff4f8ea9d54ea6c483c657b2323 -53dc28a4773f74ba855c865835430aeb -53dce45cd7acaca425a2c45b8a499075 -53de747a1223818fdac428ae5462407f -53df34bdbcad0ea99a5116b70986f70b -53e9608a90becc92bcba836d49e53d84 -53e97e41b7c84f64e47ff91e24242017 -53eeaa0485cfe23d9b7801fe3a1c4cab -53f3c9a80eebfc7d755976228b62cb0f -53f4458fd9c867d5dc457c5804a7d59c -53f87b556046ebc22351544423cf1794 -540443d44d37d91ee8b06818b89b2bfb -5406106762cffc23d730a85af219f7f2 -5409153947d7d1772d06cc5dba8ac460 -540cffe58619a93f753bf65363808109 -540dc007185c66ae3bf2208c834843bb -5410a8fc06eee62d37b79109bb821a14 -541202cecc30135c0ea4c37e15e302e2 -54129ba4a991bab79463c211db2bcdcd -541a57180662e79556d5c7fa4b53aa4f -541ffd6007edee91f305b3b2b8791d4c -5422a54ca63cebfc7f44303f5c1e2038 -5423db2720a2bd287e8da91f22a4bdfc -5426e73f66b0a97cd30f4187c6ae3040 -5429017aebcecd7a14523f4167cc5afb -542abeb2f9f7ad54331babfd4f03f73a -542bcdf6c8644280b19d4fb5121c39d5 -543b73f97cc9a1ba299fae06761fec2d -543bd5f0703bcf29538a0da313647269 -5441ce1bef9399fb06e1af2e6e98c8a4 -544874826a38150b18bf554403a03357 -544b49682cbef132bf0c7368e70290af -544b5e3383aeef3ca37b66eb42feeaea -544cacbdbbfe1a1e30edca78ded63b72 -544dab34a60f5278fda8c81711d9224f -5454d4616b6404c3275aa070e833f006 -54589cb77ae414fc0c85138c89acb2fc -5459a21046acfb11ee7fedcc780dd535 -545a35273134f06cd9b8dab5676053d2 -545c1cc82cd0b3328da8874fbd5ed5eb -5461950392606b482e02f40bd486ede4 -5468c56ea82933d40904ef3f607e6c65 -54778753bfb8c8f43b88e5ff59d6527b -547b59a157771f03dace10e6ea73b81d -5487b777d353a807579099bd8204a747 -548ace16315667caaa8b73495a6aa539 -548cd3fe9714b9ddab7475bdccb0e41c -548dc95f6e01c5df94c3624b11986995 -548dd81a8f65d6688b130a75755df368 -5491f81cfe4f317ad7c0a2745d16f138 -5497b487cf65f6a0fa26606081a61709 -54983de79329d8666abc9f07518e7e18 -54a0a2a0dd49ac6ce4526053addda3a8 -54a6f4b8fbb1b11a388bda7650cdebcb -54aa00ebb630b5084af1bade2129b886 -54ace1ec1ad4f72751859a972d8aac7f -54ad1a4603e8f64cc35b16989622f584 -54b2c22268938d7dfcf18c7b78bd41d1 -54b8b3b60c48f22cdd1ad63e73cb2962 -54b8e2e746e2c929b786995029067175 -54bf301c7115734cfa42bc4a95cdc286 -54c1ea0ae506468148a67d2ee08f54de -54c934ea80d25b199170610fd697dbf4 -54ceba3598abc008ee1c45faf3a36b97 -54d0103c5d6988a609de15ce07dbd235 -54d1411de31bcf1a631c606d19dbe7df -54d46b88bc9d09788f860b5aa84fd4d6 -54e7ca1ea9e7b0abaabe5ae746d8a98d -54e8e98dd98e66d964ac42428c98ed4b -54ea295267ffb15eaa8807b9258c8bf4 -54ea403c70c882d2fe9725e2b12dd22e -54eaafa97f2ab29ecbfe843d63d94624 -54eb74b1107c774eed8d3c8011e418d7 -54ecbb32f20b78e0d78aa0dbf401b0ad -54ef3ef3b3cf31e027e8cc2fbf597391 -54f0ff8e36fa2090bd873885fe877513 -54f728ae8857f175d0a1171e81c2ef30 -54f76c570b84421c277e8ced16936792 -54fc71d6f67a95be39bf65ce7734110e -5500de1b1be9e36958400e1cffeaa7c7 -550545d9662a70e6dfbf3d645c95d8e9 -550afd654b5b5c616fc5c99b48c6270a -550b5975b4f428da52d147b94d44c5ac -550b8762de1025511182444d4f87e300 -550bb34fbf8ea5dfd4ebadf10fc1e666 -550f09f46f3932fc3a5f478200f02b76 -550fd76ed53908f848c4b05d657fa3bf -5522d25714d30cf0a0ea7bfd1b878dbb -5524f40ae7f7d65b087612b9b6ae0085 -552ff9cb9df6386f8ca3be5488555408 -5533562773a81187d18118c00b635d63 -55385bfbfd41d60a9449047b46de8619 -553f23fdcd80ef034e7ff4c2d4c66611 -554b23cd38887b20219405e3e589150b -55517ccfe18e7a229fbc1b7959989d08 -5552d5b1aa1508fa03f8d554f711b7f2 -555711daa1d016979377c2df4ef1abf3 -555a1750c90e691949bc6c16b9c302f5 -555a9c24f3e58deecadd553f67d70a1f -555e4b8acc0a5ff37df8714c409c7480 -555fb32a1654992fada46e1dbc2bf76f -556292d9813fe37ef85617fbf8415844 -55654c4d352a4d222f027fc1b5e5f890 -55679576aba7b1bbc01b199d7ad443ff -556aa2299955ec406478a0813a388e88 -556b41826ff1d56e432c798ec8abd7d4 -5573762077ad9f4e29acad78158f8671 -55738694323e7c3996af9ac33b70ab40 -55794c280d581a45abb33854ec03108e -55818fd2d2a57f1009a145846d614927 -55863b55f25f7264c257eec4975dc944 -558ae579e476de0dc2de7a806d2db4be -558e41e1d103d6edf46176efc62b6ae6 -5592b01631f75138c5f18880493d5334 -55962e1c8432d1fd57baf041a499a011 -5597f0f7c635a735c9d54d53a272ee4e -559bb56c1db9f751b108875486d58487 -559ccb30f0d466b5d731462c73709f99 -559eb0b872d7cc131b7ee1af9f819c71 -559f1f7972151077e70fb6c95d70e909 -55a5ce647ba228ce700bf3ef5907c923 -55a6ea83fda5f8e40e5e325bb51e184d -55a96734f6489b41bd27fec987e01b96 -55a983fd353ca76780236200ec9639a6 -55ab069ddce8ea120edd2d6450b46cfc -55aee5038eaf8b47f29e4dd742b3cc35 -55af3a91152163bd2c574d99a17888e7 -55b2cc76c1e374a2d745795cd7d9c321 -55b53bf6afd2ca1660302916a321b8e4 -55b56c53cef94d700f3a25f98cc45188 -55b69ca2e426fac5ebec7fac289f9536 -55bc46f70cb4aa303c12196b128285a4 -55bd1fcc901a27674a747c26a802e525 -55bee75e16204866f740362c830b1142 -55c10db1f5acf720604da2e75c108232 -55c574551a4770a5f9cffb40b4990a19 -55c7474b7121ff8742d918ae4302fe16 -55c7be0889b68056e11d91cdcf83198e -55cacda2ac4411af56b489f519cf4162 -55cf8fe27a84f8e1ec91804c1af9181f -55d27b05bab7756c24a65f833e450459 -55d6fa5162c51d2884e9fbdfcf367c27 -55d8fb534717d087fdfea0fe4468d586 -55dd33bc7bd3729f22af3fe72ef4074b -55ddca1ff9b5a6c07552c2a2032070a3 -55e9c3ba5578404f43d5030cc3d10601 -55eae4c5721961b83c2279c7aa24f4b7 -55ed517a2b39f80a7b1ab398e1a8537d -55efa97004f99776f51d66fbecd72a2d -55f12d22077e03b5042faa88278eb7a1 -55f29408aa3485c0700f160a9ae01b12 -55f37dfdcd877e683d81c28b6d251f13 -55f4cbf5ea025e7bf158479ef7a1e570 -55f53d5a8e1fb0292911a9ffeb56a02f -55f9565ed0b894023ffd7df5199ba8d4 -55fd4c99b0fa807ef6dedb0a3fd5f8c2 -5606d8dbbbc84a30854f4d97dfac9a8a -560af5f699c0e7cfb71584be77dd8dc2 -560d138f52af046bdaa9d77955dbcfcd -561105ea49446d2d41b430ffd1eee3d2 -56120b114dbb8a52a234e1040b0761eb -56168994f23e6078eb51c6249cf492e1 -561c8001fa3931f6bba135779d06bd35 -562ab80b49f2b179001a3cb6454e8aba -562aee029fa2f61f2414632cc426e136 -56318903977ef8fe79aa0f6fec28abd3 -56363fa5028d0054ade70836673638f7 -5637520a828ded7a3e766481075488e9 -56387576fc46b7ed5be52259328a0100 -563c9c1d4711aeec931e78bebc4f594a -563dbd7a848a333f34d759e65b8a9b6f -563f291007c340c05da8b9c58dc8aa45 -56448db25ac077d75c32908a30edb4db -5646fb25fa4540f2579785856fb0c93f -5648171be681cafa730ea7bf0a518002 -564df56f7b38b93010ac2b3709490724 -5650607c838795bad6575a7d0bd141c6 -5653939fefa7da16a393fba86b5fb673 -5656f713067bd091e28b2f4e0eb12719 -5659e33538795b8c827ebcfbf2407f17 -565a67126581cbc0448b4944af586336 -565b2476d30eb2aaa892d7a2684c0af6 -565c07886ca0e1f2ab19fe69562743eb -565d7515188ae19d70879bfef3dfdb0a -565dfd0ed13388abe93befae65ae5e5e -566ad1bf7aa36cbf7b0aa50e2a28ca4c -566b597124e68a1a9b6ae4ce7f646669 -5678b37c7fdae89c37a664bf46d62c3f -567fa1b91d9edcb8892e8fc3f4d4463d -568375788543615da622637a2a1b1580 -5684f0e541d830b629404c87c5c4db0c -56857669bb0efc0feb878bd66cb77421 -568a002fc6967b4f5f4bda5531d76ed5 -5690be8fb3e96498afa993bdb2900a8d -56926c181985900917e993e63df85f6c -5694e4392809fa818c9005954a8802e7 -56963a217b3c231c024a564095c6c823 -56972ddebeae5e3ca0a724f9ab0430da -569b13fcc7b667468249e3ecd5d49594 -569e280f3a8550196cf8587211fb9b99 -569e66143b6dc847d9dfd1ff80ecadaf -56a101917c9a29eafd044d0ed3ea3927 -56a31f0ed48ae4627a9b9f6a26ed30c1 -56a61afb9855d17985006868df7b37e1 -56b1e66217f5480a74be912ca64a75d9 -56b295e4663b030b99c711283860b649 -56b4b4327aa8f6922a0242dd04f54316 -56b5707145007961e8c9ad8fe4522fbb -56b748997f1cac947430060c19e30a9d -56bca957aa165fb8551d0074ecb2290d -56cb8b2efbbf32cba853821668e0f18c -56cbf072da6e9436470f727dddc9dcb0 -56da0ee80c6c707c2dec86e56688a5c6 -56e48005d6fe7420dbb86d1bbf1f27be -56ea797e442d30d2aba199e7a6c7ec49 -56ee1c1ba186799af88c962deda3af7a -56ef97f21a5be75ca0aba5e2c578988b -56f06800d1b61f8095853234deaec9b1 -56f7103325c186b673c92d5faa3549b1 -56f93a4bbadd417026707ea23d200188 -56f960a4b583df33ca37401c5dd5378a -56fa87d0daa6df7245fbda8d5d52a897 -56fece784d09a1dca5410e01ba18a71e -56ffa3d20aa1abc277f07fed624d2f0b -5705e9d6918b316ea63b0871d1f609cf -570da4aa96052e51c7c30af5161d556f -5713f94dc6201bca0f552bd2c167001b -57180e688bb7f9f118be3a5eaf15170c -571d940c8cc7db26fe833d2d9511eddb -571eda32c9d1fdee1fab4661f5a3e7ba -57206dbd0a909af20e08eec7790b6316 -57207d0e4513d0d17a4a960820579df8 -57212b91118be36ed7a5f0a795a27dd0 -57217e84eaca1e95c5300a1910fdecea -5723c80914e78249255f91d15c6adfa7 -572711af306db395d79de474378944fc -5727b5ebb1ed3e37d77f77093887d43e -572b0fc82743428c496af535244ea7d1 -5732927789a8dba77159395b53144ba1 -5739617102eb1599633078bbd4944bbd -573c34ec113416776676b34958938490 -5742cf7e0599edf7c90acaa7dae547ff -57484ebba85e554a113da89efa3a2ca1 -574c35a2a1a3cb942bb7dacaf9cc389c -574e5e24ad66db60e0841b743bcd67c6 -575055bfa55e36f88c496b47e905034c -575725d6962aeab37067d3dcd2ef6680 -575efbed7c91bf5048ff1e05297a1b8c -576152270007cc45cb8db0d998f8a72e -57638f4094ea077e229116b8d30d7b05 -5764320a12fdcebf5070c858ed822291 -576567127044204335d34838e93ad057 -576a41270071453541a8d60f97580b44 -576b3f266c5eabaa475ce0ff87dc564e -576c0f8f7ab2f4601075fd7b43394ae0 -576f073b0c4e46bb49a0168b29e002a8 -5771be44211ebccdfcfc6f7d475fca43 -577596bbcad2c55618c8288f8b12a5ee -577a40648ecef340878b5b00840de4f7 -577a47ca34f563b87c31c30c9448a957 -577c104a4f2cdb911130c5a1752c5993 -57830961abfa5db6fc5406467f4f3c2d -5786261fc75f6679ae09692aef84e379 -578d7b3c10ff9d3dd9cebb3fde8dd2df -578e15fd6e5f1acbe65f7bd5e367280b -579746f3bc2cc326e3b665eb704eff46 -5799f8d09a4c06240166b386e9d834f2 -57a7a923ab2cd1fada86d9a457b88e26 -57a8c4e564ea9abea20ba83a3f3910d1 -57a968a05d2e4e97dd485700dbbbcc3f -57abd0a7fc79bf6d69dd50c8f492a4c7 -57ae676a19c9598d5e0ebf15fa1d3c63 -57b2ccc581a354cb6f30411f715d55ff -57b2d54eec97e87f120426067cf722c5 -57b928766c3e8e94d42ef9990d41387d -57be11cfaddafc8e250cba4ee4dc6a2b -57c4d44600685acf75e8edd25829aebb -57c5364af6cab68b9106c3e82a73ec85 -57c580cf7ba4c16e5316d46820189679 -57cc8439bec971e72232cd9875b4a74d -57cd97c75cec0393fad5198af4328a74 -57cde13b7f7f2e61c5b8e971dde206a7 -57ce44b434cc220351ab6e7a565a089d -57d108ce1a2a57f8ec9cae69b4c1613b -57dc84a0ae91273a5858373d965034a8 -57dd0296d054fa368c4d9f9e6c0abee9 -57eab63f043c605f72a1bdcf041754fe -57eb7bda8d41ff0e4dd3d5a889e2a8c3 -57ec8afd694b64fe8a2d4025c3e80d72 -57f37a172187fa75a1f227124fbc4c6a -57f7f8bf5b6e316dcef12db0e89a69b4 -5800201b26a014eac7b7d7d3e56170e7 -580ec6d054d939fbff8d51146836a980 -580fd2130ebb189a42422f8986706566 -580ffc58196424c43d5298beb85cb0f4 -5810bf44ad5625eca881fd670bfacd89 -58119531d21cd5aa8a6238c8851219c3 -5814395da4e6846eeb7242e92c81e2da -5815490aa8a9c5229779965037b457d2 -581ccda86a8daa0b9d47d9a7e6f5e47b -581d9eced3e0fd3ae213067a568ded00 -581dae8f64e1b92fdf00c172c5957058 -581e58f8e250946f7ff0078734b217f6 -5825671c70b8f58cd575fdf8ac1873f4 -582a6679c87b34f0698c96454fbc5132 -582ac2d3796356c8bad13fb6763d0d15 -5830760d5d69ba23232ec1f3f83842f9 -5830cdfa1ef57800a0b72a3ffb5befd3 -58357c8c5da853a168c845628b27bb79 -583628e868a6b38988eb68538eeb7c89 -5836b45ec0cf29436c447a5758ee5460 -583a153d4a18bc39639f371ab4b5adef -583a95e38f86acd8d708cfd1bf9d819e -58409833f3e84b482990d6def01bbc6f -58418935eae8c34a00c2474a5a45ccab -5848598861e4ff214cb25b970f839c5e -584872ea05a8450c4935c9fe9f949177 -58560114256f6a705cd5d6eb16e7c9ec -585ba5a27a377fe404306e21460f6ef7 -585c8071bbb44b779904b5e125eac8fd -585f6c8c304f2b330fce4cbcb01ed9b9 -585ffe37cfc32a2b8172f5fee8032c63 -586b8f28b6ad39f8251251372688dd15 -58721fef4781742dfdc9ad7fcaaee522 -58729458318001084ce059280c3bcef3 -5873f9f36dbc6514287a8900999b1560 -58755e06097797b557589e714c0f8b4a -587a4346eb2aeaee018ac0aa90a36c86 -587c81868a4dabddc0c99a616cb68abe -5883ccad6cab2ccdaac00fec275b12e6 -58844acf169cf903507b23d3e7071489 -5885ea13ae760e72c17bd130deac191d -5888c1bf19a1a31ad8a3c9c1aa31fffc -5891f1365c41ddad50fef34c08b8b179 -5893dec7bcd50ea590256cbdb1823079 -5893f9925c79fa288b385529b19869cd -5894f4249ac1f783c23e8126fbd297a2 -58952e27d74572dcdb276c2e0c2c8eb6 -5895d1758bd51f1b08b2ede8a7b83ab8 -58990140537f6647fa694ded29ae721d -589acde08b57ae755a478b2ae69f531e -589d4a52a0de00aa0c0447c3087554b5 -58ab896f37f6a96fbafb9baf42e8714f -58ac457cff0f82b7648691cbde55516b -58adb2144f85d350d37df8297a1f3380 -58af8c02ba6ace200682de8b0e99c329 -58b089f68c3bf60531414387074f5a5e -58b687566b4e1a1a68029a3b90aaf019 -58b700513e1454a9ee475c9b6b284236 -58ba26bfcd34c285d982c9dd34e0bf2a -58c22fa2a9d3912d365bd1f3132e5a1e -58c3296402d551e68c18fb83b3644240 -58c6367fa0fa718e8bcd6b0a782642d3 -58d2eb47eb8c504ae72dd7896892b5a8 -58d351fea425c25f308876099ba1effd -58d666f7a65ac4be7ace7b821db42fea -58d9325f2533974b2f957cb64b049ee7 -58db735337e0db4849d12e3ca7a9ae27 -58ddc69d7b2cd9b683d346b040dd24c4 -58df1d3d5ed229be0825c2f37e452df1 -58df5c51fecacf8bf30a8ebb3566029f -58e7924903db8f33e9c086fd356a50fb -58ec280e1c3127def18a187193dcdaaf -58ece7f05b7931e940d3cf1ab6fedb97 -58edd83dafa489eb0f82e94fe2a2c640 -58f47cf46cca8969561ce56d2846865d -58f5fa68128d565997bfc53ad8e1ad50 -58f71589bfc7fca8cbd1c54f356f2f44 -58fa5527d72fa52ec013d8b2812ee8f0 -58fc37a06de2e1b0bc824577d32cf632 -59006d28f2625c3803b1210befcbe924 -59021d2479732f3fac0d82fd89898b6b -59086aed7b39744348b9bf213e219587 -590af75453e1295a6b2676427d1dd4d5 -590fa5fbf3075d14ce887d06ed81d4d0 -591115aaac1cbd65d948c3da1ac30a4a -59114923497f110e1fcd9924258a784b -59127d61bc4443abd95cdbd93387ac02 -5914bd087b03821be59eb8636176a592 -5915ca2ab2f2261eeab431998f91fa94 -59160e3c5515f1079e6166f12c43b20c -591627dd514ecb17e63270c38b678fed -5916c830f23cecd581ba4d7848f6ec12 -5919a83ab512548be873610a315602cf -591da7e1b1ea8ed90734b022c148ea73 -592a22eca0a9cc480316f400416a95c2 -592a6ab72c1d69df0cbd611394b01474 -592b0ad7aa4e81250e81698370ca273e -592b32df1cebaf19ff39354b3efec6ae -592f5b84311a04a426d065e84b6a0aa1 -59302280671e8af89575b3df20fe3c08 -59328d41e4e8edeefcbf2534e0988ec8 -5934024048d6f1db3c7c65519a35ae15 -593778650c3c289e594afbb4fdf3171f -593c9a5edfc69d953e1bdd1846f10257 -5941ebd7ffea50714ba50d834a6d980a -594814a1fede9fa722dd0674099d3997 -594c0e0027c54d308c8971f02f8d60ec -594d58092ccd5579627365c88091b62f -594d7d9cfe6d835ae3bd0c670474179b -5955476d34fd9fb030e473ac47884545 -5957d5683f8987d0742a42618e2a2c52 -5960ee5211ec4478b20a3fef9e571ec6 -59610c1cdbbea7577e512ada7c16c64d -5963f6cacade1e2192b3f8c0779006c4 -596431a846b9127f689d11910f0b0c51 -5967575f780e281eacc2e91bd1ab9867 -5967a350ff0e51d192e89346dd445c0f -596a244d85b83386a2462fbcc7ede21b -596dd3778f753bb0187b871beb6cecd5 -5973910eef764dd80d57ab4f11f0c838 -5975fee5c7b38c81efb5d7f1facb50c9 -5976dd3ef64d14f21c144ad28ce189d7 -59782cce3f505d86eaa15c38f3809960 -597bec145c3f043444f1814ce238a697 -598122f5c30753872331d0009ec19be3 -5981a34167dc8fda8ed5818c367690b5 -598686d929ed701374073a7413aa3573 -59898ac85410321da74cffe88f37e1fb -599176a0316b8718c785261d1a1c3181 -5991c2977998cf0ea796e48e1bab2928 -5994343d27f5a07575a5e2dd7f4b9343 -599472eb167c0e2940b8b777354e977b -59947ecf9f3214f4c58117d0bd0ba6ab -5999c2c213c6d714d9223fcae8335ba8 -599b76545d5f77f36d377f029b94db2e -599beebc3f518d557d45bd424ceae422 -599e987e12b3935ea9532932bae1fa1e -599ff3d0b99308a8746aeb7e9711440c -59a34de450e4fd6808d6a50eadc9f526 -59a40940d13f68d4334b3bcb12c7fe86 -59a9029323a37b693ab115a4ae43b34e -59a9a67ac7c07f7c9adee2e81a3f85d3 -59b290b97a89ffd7f9762c81e5e45d08 -59b4c035b3c40e08c39f5ddbb2789bfe -59b4c485c584a0b1de0673cce0dc235f -59b6817b5374bc71d557ed9808b68c26 -59c2a5534791865d4820ba165727d666 -59c2f026fe5afe90be436404318ece89 -59c780d49e292efc0bbbe3a7707fb9f6 -59c81aaa939266c819d7209800fb9a9e -59d1ac4682a26e7d6a425ac1f04e142e -59d756af77348be1bb4e4f5573d68cdc -59da134c65330c21fe2af8166e10cff7 -59dca481f815627a9d8cf328aea426e3 -59e18ca4f979c32e5b8ae7e69e63bceb -59e36c0a55c2fab89dbec1f96a4bbe9a -59e5e6aa2bfd7865a49ca63a9356b033 -59e9b7d39828f59a093dbc7efa2c10d9 -59ed26545ddc6d860aa270133f415726 -59ef341b329d95c65abbe7f989e16e45 -59f3c58fed0be9dc40d4bd04f496c13a -59fa6cc6f9da4cf2d590526819bf3272 -59fdf2349a99b3173e3051834efc563f -59fe10023c9b1e463a013458fe6b06bb -5a01ec463bbb002f9a4c6211ed0c532c -5a05d43cba44230f5434e16f306e850b -5a060ca0dd29f238249440018262b251 -5a07dd8d0481e33e5442a3d532a4b759 -5a09ebadfe85b7218371edf3ed654ca9 -5a0a0197a972489d4f78c3b8ddcdb16a -5a0e44cbf83cdd11fc9e99bebd06cb35 -5a0eb624f6a6ffb5d4ac571252a5277d -5a13446555aa1ec79d0c3ae55df809bf -5a1418a1f0d59894fe8ffa29622ef924 -5a18e5413e34fe2d3ce64839069bd124 -5a1c6e65ea51073499f99fae5dac6bc3 -5a20fb3c73b658607ff8a85fa745f7c5 -5a28d3e315b7123348846fcbc731a111 -5a29366a0a53142daf43b51ace1eda47 -5a2e2e581c5e66750eabd5d536797a38 -5a2ef4f0c4e138ab3039429354bd885a -5a31af8d040f4e9b530fa5f77b1ba5ad -5a33085ea69ab6354e75e766c3317683 -5a3545d930d07adf98a6fab64b371193 -5a3c51243391e693176cdfd5f6476e40 -5a4129f5018d7d4e8099d7e57577b04d -5a425b929807387e00f34dbeb0e4ff65 -5a457e7bbb8538c6618958e837ded122 -5a48bc8e49ef8671075ad0dfe944a255 -5a4c72f3bc90d5bf0281601f8f22fab8 -5a4ebb5dd95ec4958d06d0309eb9bba7 -5a4f64708841f97155f7d1d799bd9e5e -5a538fe0b5a3242f3a95b511daed58ac -5a56948963971052be52e08eab162ea2 -5a5727d8be17fd7c820ee29e6adb70f6 -5a5ebc0f5890e7a8b9bbd8e17e90dc14 -5a669ce92d95b27fead0fe13733182ca -5a678e0e9740afe99b4d17c435f2395f -5a6a0aba315ca3c014d066e2e549179a -5a6e2832cf3add44b8ed8f23966087e6 -5a7381d8a81901c7bed9e5428f83f830 -5a77a57f441fe13ad1eefab995a007e2 -5a7811da1b5561b59e40efa805bf99e5 -5a7bd9b4e432fc72a24392c3940dfae2 -5a81b6ef8a91a52fd0f9fc717e87bb7a -5a841949c35a6f134c5d7a53495abc07 -5a8e20c5bc40481b4a3322c07559d0ed -5a92852e261d11caeafbeff9a563c016 -5a98c5b1b5446cfc2d1f94a6b606e382 -5a991376775f605755e8ab6e6f74cbe3 -5aa0d3499b17a8a40075b9b8e0c17724 -5aa4146e07c10b2331314a34e9de21f4 -5aacfc76e53c0c7e753bce2b83f0ce8f -5aae64956a3cd2cbcbfc338c140735b4 -5aaf764c9f31025ed1b9d69d7ce33706 -5ab12db9e525075796e2bafeabad6160 -5ab3403a4928e03bb35bcafd4973fa19 -5ab6a22f02454c5299f202c021a8cc2f -5ab6ae5d4cc60686800d81d9c10218f4 -5ab7e5f3d4f5cb7bb9f11cee62273d6c -5abe6b62722811278763ab520f7dd688 -5ac1d02eafb967a15ecd72ca20a690c7 -5ac4bba37463f79651a376e8696dd361 -5ac51f84df9f3ead73d7264a698f78cd -5ac5296eed32686eb9746171ba187d31 -5ac58e0630205485766dea32239484d6 -5acacab80bb2985cc9a0a75fc53217e8 -5acb87f8bb2bb11778aba0d47e6c2e52 -5ad1b0dabade24c6a5a43d30a5858e1c -5ad73752b6544af3bd0ffa6cb30803c8 -5ad857f6874cea90cc2e562fb01fd9c0 -5adab1ce05350e145619b457a1efe50d -5adf41c9e25fc7edfef0a152f1210b94 -5ae0cecb0d55fb822a2f08878c888099 -5ae2fe51be99ee4b29e702e8c7bdf89d -5ae896524de3dffc76dec23ce6e51f74 -5af135f48232eb30e2d50cce60c56961 -5af1e5bc2091b8d85f9a30285a03ce1a -5af2c1d2e351a0bb7ebd756621316b05 -5b0a660f8aa733cd2e079cf3ec37bb1f -5b0bdb862ff314d67db74207fbbda5f1 -5b0d615f1c251d9de9dd29416ee7eeeb -5b19b83e3e5bdbdf18cd3dc565577c7a -5b1b1ecdfbf590354a66c79d11f5fb81 -5b1cd56f716f264ca3ebca2a5d5baa12 -5b22fffeeb2c1d8505bd904608413ff0 -5b2c5a087a2bccd5dd4d523494cc896d -5b30e0bcbedb454ccb65ce229b3abc24 -5b30e3dc6b28e3869054793d78867a35 -5b3222bd515d34a4b177d69ce4a3d967 -5b3449b95d3f74564097002636524067 -5b35d9114424d9d2ecf76850b3c5c6e7 -5b39c6a4d89c5034f3c25a618eebdbb0 -5b39fdb609218d9e51135bc651fe49e6 -5b3e0fbf39a7cb3575982169c098b52b -5b447401bc40d996eff4a530b520ae4f -5b4fa0594651c48700277c087c7686bb -5b5128d16d942bdd349682ae3bf7f891 -5b51865b217c41b02f7c9dca964a782f -5b56605b02ba975c66f3b1724de7641d -5b608c1b48d833c62049e0ca1a3c872e -5b6449f7a8529096685bbb42e4db1308 -5b69af95c853a4a6081669f4076bb281 -5b708f5f515d09324219a38aeeedc57a -5b736a7e66f433d7406d113fa0ff3fca -5b74f0528eda6c3a09392636f500a9d1 -5b79179d4cabe6f7f26a430f0ce4eb39 -5b7e1ac7494a53c35729afb2e6a4c760 -5b81a31e336ce7e952f7439df9a305e5 -5b89a774c5e70e591cca58c9764ade74 -5b901ec6098798cbae85c4c408df14a7 -5b90e28f1ee74587f1bb6ab0395becd8 -5b9444091a4dc7bd1c94ca593b268893 -5b956080605d9f9120e51408e067d766 -5b985c508f9d48c6cbc2b4108d7c8df1 -5b9b361ed90adee1f9544a10ad3fcca0 -5b9b9ff424c95259ca18a6378432ab41 -5b9c25f07be76b4eefa0030c1c2a49e0 -5b9d72051ecd0084dac2ac9e0629e090 -5b9ed0944bb6f96b3df6a02179ccdc32 -5ba4d7dfa091a88cff1c9bdceb8faeba -5baa411612be294e38df2ae108ecca27 -5bb4c2ebfe0239c6b0dc5ac2222df4ce -5bb5670957b605823aa474707472a4a4 -5bbd8a4927e273f56cf1b5e5e3fc2002 -5bc0b43ac355da1dc7b617f53bd4f2e4 -5bc405ed21c7790115556f05ed9ed6a8 -5bc6a063f106eb3a3b18554ba33da3ed -5bc8001ba1751258ae1ac2ae5e381ff2 -5bcea12cdde944a4ce3623af17eb110e -5bcf5c59fc1218fff63159a80058ebc6 -5bd1f6877a4dfe159be2ec4a59260b58 -5bda55665c4dbbe29effef37c4ce48f4 -5be39f303bcf5b19babd063905cbc612 -5be6159fee60009f51fd38e271ffbee1 -5be782808a884f86563207b3318b34c2 -5be806e563a02ac26712fd4cc71c44e0 -5bea6b437eca6dfce4f92129ce1ce462 -5becb07448e802ffce2f0c8a6408d26a -5bf33bd5e5cc6e701b592eae65b5ce4f -5bf432e5e36e1618a35357b8fd090ce3 -5bf8bb206e641928fe4a9375180e8a6a -5bfab51546cf36df8d35a97a11ef13f1 -5bfb21a1fadc4164e75ba6b55c7c0e6f -5bfc99ff3124c4bec3c55a6d4bc7c8cb -5bfd56910f13cc7961bf77b55018b241 -5bffefa1af06d89b52e6fe127c711600 -5c02e329b26758c011b839494c1abef6 -5c08bd92ebb06ead09f70d9af77be7c9 -5c09133bf45c852a1aacca73b7329d05 -5c09a6f67271275ebe0df6d1962bbead -5c09f1c614b0cf95ac7b3589ae36b137 -5c0acb8a6cd92af6ed5b4d6d6e04f498 -5c0aee944e375b3a0a49008bcb9698c2 -5c11739f5efbd626753c79e2f81e1529 -5c1ed64f5921103b693ada06b88d0016 -5c1f81b333c99f52f8427d081d6b609e -5c204d5ae8c76bfd9427bcafdf25230f -5c20bb6e12bf19b2adfad70a818c3ea4 -5c2660d07dfe4517d400b2fc1e8b26ba -5c2b8ad17799e3f7f2f0a06579ba9341 -5c30f329624efd82949316a56072840b -5c312b17b62304ff75c0807054b0c395 -5c39d98c45a023f288e64aab90f23d00 -5c3ed8b72b3eda7bc6acfb02f3f37902 -5c4554446dc83e51b3d0c04e5774f385 -5c466a55346ed52bc574cfe6745aa824 -5c4bcece70de961bdd5df2353b2ab3ad -5c4c234a35138f857c115da817c2d387 -5c4e21a37569a48d343e7f9363705b74 -5c4e2f0455f2d20334f5fdbd4a0b3305 -5c5048563586a0481f13db26773c04c4 -5c52e895e9a22d6f40c599affb566390 -5c565f253eee8fc7e12c52aadc4b0553 -5c590b7ab225c162eaff9246b20d61cb -5c5e74bbfb0543aa3f6e58a312c4f0fb -5c643470dcf6fb4f3ab46e9fe8ddc65b -5c665ce26c7312ff5e0f36b244bf0b5a -5c698fb72c910996006df40b508e7d29 -5c6b314e5a4a143d0638342c335826c8 -5c6c8ceadb54a28d93236712248ce4c3 -5c73aff4c77525aa3f1d0bb5f980a8b4 -5c754fd852b0e6eca46663967dcadaaf -5c7c10d0ce7fb6eaeea8e12f713fcc9b -5c8135aaeeaf406874e4cc6c5932cffc -5c8484b38eff865ab58ae8517f07098a -5c85688e2e00aeb70038f24a3f142f61 -5c85d1b4d869a923a36deae91626580a -5c8c6f0420a4d325014960eb5eaf8c64 -5c8d83ffa50c5b31dea96b7f96f70162 -5c8d8c18ec8e1ee1c47a8aef673be05e -5c8fba51a90921dd44bea21834d34775 -5c922b29aac89168838d740d1fa30fcd -5c964ab3727365e1a1803023753a4a75 -5c99402c57a1cd11e19cce64dc8d4951 -5c9bc1a411ddcd3e19564a6535adb948 -5c9e314a5c8f2c49af252827f15c6187 -5ca03248c8cac7b08f5fecccd5bd1aea -5ca2892ea4ae82af8600b5b91add9a2c -5ca8fd5124b5c8c3c871e4d68ababd4c -5caa97e2b261f2d8b16ae946d0c0add3 -5cad5666ea96354086eb99c731469e6e -5cc339d86074025bc7c37d6bee669589 -5cc3bf3867aac4b8a105857c941d2d42 -5cc51ff3407569a994b7aa994feabc07 -5ccb2944bc825c0fdc894d2aaf40288d -5ccc097d0130393b183d19b4625184a1 -5ccf12fd7e39214526240a65b3b4aacb -5ccf2b13b9f6f23b7ed41c1ef9762483 -5cd0317cecc259d939ab282e7d8043c7 -5cd2ba155200f3146c14f73f1461e904 -5cd2f9a6e3b4845c9ea315d0b9ac74db -5cd7a35b147b7144fdfcdddea734fe64 -5cd8b19766642dce6480328c0a5e9c11 -5cdc6e9fe69dea5593e805583fe9d905 -5ce5d006651944ce1a70e15375c6e287 -5ceaf7e749787cccb9c58857ce4f9927 -5cf1af512ce8067bdf248dffb0d33048 -5cf2aac5f0403da4b19f5f9be9721a6e -5cf4eb4204106e397ee358e9928d8f08 -5cf5aff3e4f44eeab8008fc1c6fa32ed -5cf5b32f9e11340e26c7a1b09aaad95f -5cfb5642b8b9e455f458dd6676fa2ae5 -5cfd807b2f5f8e45c80869e2ca85374b -5cff2df217a182b1532d5e304a6ba75d -5d00d1faa8ee907bf533b40028910b88 -5d035f978b654688eceedc48d581455a -5d05fd0afbf441418f45a0e168e754a6 -5d0bca512accc48484892b469346f336 -5d0ed9294da1be8be5c92f8f117fcad8 -5d0edafd728467f5da441f865fe031bd -5d115060d03770979312233ffd05ff0a -5d1243dbcf2faeb9b6fc233db697d681 -5d1314cfa63355410c5827083249357b -5d13dc34191e9d465c6818c91c376e13 -5d198aba33be8e6ea04e6b3994b66378 -5d1a0f08983761f046c9cbfdf23ea284 -5d1dad7da70bbb2570869a0a6619d262 -5d2976dc1cc5651d8b20e2e8c766d624 -5d3385811c46b6d6cf9a4ccced1dccb5 -5d35004d6f8a0f48c70ae3999c0f280e -5d37b1950f08c6d2f5c0609a1cdb6a9d -5d39aa75dd8aaea70bb59f7c506e5a53 -5d3e1caeff0e85b88a4bf99b8b75c180 -5d415c585a4ecd0e9a949b807eea4c54 -5d495a76bb15de81695df2e5aa578626 -5d496f15a3888a71a33f0624d3b13501 -5d49d3c31c3ae5d7a447264c0c7700a6 -5d4a3a64b44041994d2f05b6d170a937 -5d4e7fe2d82198354e408704e7533d28 -5d52da859594f095d1a3b7e574d41e55 -5d5a2bb5e53b01c4e4902801adaf61bc -5d5f3bf041e3762802ec3f9679a0da0d -5d635e7bba585a1444f433eb85bfdccc -5d6673e25f6a64ffb8fc114149d6b05e -5d6938e98e583a50a0e17fd384cc8808 -5d6a76cbc1968e24c7ab9074e3cef4d7 -5d6e43655861042d3aa4b3ebf9e8e3fd -5d72bce85b3c1d69201fb61eb48f2d3c -5d771bc95d58f22f2513a096b13820f3 -5d792b761ac2a800ff82bf27d3c7c1ae -5d7d51883011cbfde65292b0730263aa -5d85de63459e40191b0455270915aef4 -5d8a7e3a69681d8c4ade22f284a01032 -5d91c5fb1024d876d4f210f80c0b82b5 -5d9ada88f82a3db2691fcc9b80604925 -5da154cb4e2d1873d24de83ec201993c -5da1ae62173d7f7674cf2e8aca989d46 -5da7df36d30cbc85e84313ea1f1313db -5da9d421c0b5ae5ed35deb3de10ed330 -5dacb5d10bdc71f5d9ee91dd6b328eac -5dae60e9e7188817574d3f8bea9d9daf -5daec945e83f8d8aa62429eb09b7a9d6 -5dbe9a1b20945f69c4809a96d690ef12 -5dbec456fe13d9e7f8fd063aa37cc1b5 -5dc2105207dce30b39f309480f197ab5 -5dc2ef3128ff40583f85cdb4efb6e842 -5dd0cce4820023fe487f4129373f3740 -5dda880e4a8b4f8dee895f4c6e918884 -5ddc5e12a36c325b1465251480b06aef -5de3abb093eaff5e6c807c85bac7d0c6 -5de8efee2d9636bf29aa630dbca9b9a2 -5dea63c5a5e66fb3931d882a8de294ab -5dec909566032f60f82610405e3a7b7d -5dedd18bd868e9f08ff66b382d4d1683 -5df2a7e0e1877f13f22ea2eec880f8ff -5df6329abc6fecd6b44a731e8e084a8c -5df6475cd09335a6a6fd97552b3c2265 -5df7eb6ba26ce9e43ce1203e21b6acd4 -5df8b59a7b2eb6e9f835b6bb454d30ec -5df916bfe751a652b96dc49007e8e92e -5dfd04639bf91236b4528a41ccf06d9b -5dfd7efbdd345098be2571c60ea45166 -5dffe29e384117c689c2b89e62cb4923 -5e04696794cfe56a6fbc3e4e8834715b -5e06db822dbd1dc932627f2e71d10c13 -5e086af6bef5a437cf72ac423a4c457c -5e08cf18c47198aa102d0ab6cf25bf89 -5e0a7bae859838952c1878bb940b5cbf -5e0c79a54cd258e9dde3d5663a3b0351 -5e0d70ebce5eacd2d19c75f428aa037e -5e0d82135d89d5216e7bd13ebc763902 -5e11cb88810a2a595fb199fe51f99375 -5e16500318da3f1af14b747783ba801f -5e184bf3a25e86e80d7f45b5e38f7aa5 -5e1a083b0db1d9fe0647aed0e7c85d42 -5e1ebd340c9698efcc8e5e0467a236d7 -5e2394daefca7dbf2971167f9cf7f97f -5e252b1206716ea0fa0eca40da6fe507 -5e285f9bb7283093d1cb15e1c0267875 -5e29c20bb0e04238d057f6609922a3f9 -5e29c7f6e408858d46c9c01c8ea45e44 -5e29cb6f483261bbd646856508eaca99 -5e2a3c9fd3cdef2a56f8a1075b4775ff -5e31890538739c271497599088f38b9e -5e31ab98969a09f5cf838b1c5553b2ba -5e334cfc14800cbe82717cafb66c3227 -5e378551cb037ba53b6db6cc8925e8ce -5e3a9a74ebf164d30cb93d6d6a2b2432 -5e3dab11afbb1d581f09bb1edf8217ac -5e408dfd3de7fcc018b987ae71a2e0de -5e416597c765423d3ee17b5f19ce09e3 -5e4255b1772e805b075e6e2da300684f -5e431674043943bc2dc5c91485864790 -5e43619778bd24bf9af4f5c797b01b53 -5e4398445684ed9c83e45d7b9b0f6621 -5e482b842adbd7ae49b1e004dc1baabf -5e4df52456fe9582e05f15cf52af0147 -5e4f27047d2484fda99b0a9b24f95a79 -5e55aeaa2ac7ce93af446a16594aab43 -5e5cf0c161b88f0ca0a716d2d831b244 -5e74b92d4f91e9ed1b3fee592cb22635 -5e788d238adf27394b5adc08000e050c -5e79a7eab3b2c2c654b0e420d1348991 -5e7a38c5e18839be2331d11c66b6a542 -5e7ea177fcfbbfc4d4647f2ec854a4b2 -5e816789e6db69adab4e516321a718ed -5e8353e468b45cf08971060d9660b373 -5e86070a356d2ed4a036a28bdca8e059 -5e86b84765be8eba76e7620b1e40e931 -5e8d7345618f025a78644962b0ec28bd -5e92eba8ea9ac01a6aaa166b51d66404 -5e945f28c037d057178e3c40b0b08fcd -5e94b2d405497f422b7aef152e0d31ec -5e9802ea9279546786f2796574e1285b -5e9872159973f42c3c6ca127f910483e -5e9a5756b67c859817c7b553b5bb732a -5e9eda907377c7bbbc4ddf252530a8a9 -5ea3b922a92cfc5a3083387766f1d015 -5ea4aab0882ee4864ec36eb4e07f2606 -5ea53e34eb494c2fc9cebf3c73b2ee7b -5ea69bedb835fdabc387e7dc2a7839c8 -5ead7b232f74da6a12fd686a6c0c807a -5eae55a6b6dd5d7dcbf265103f00b883 -5eb2ff20daba1d57135c87f6afe7763c -5eb376791d9e7f9f06dfd9a3bb19812a -5eb7c9bfc9427471c6a0db2201351673 -5eb873e4994dfd64f9b83abd363f3ee8 -5eb8ed5309587880d4f8d93b5ca6fe4a -5ec0bcdacd14f99aec02ea2c315b9056 -5ec359de5bc102281ed54736f9c8a58e -5ec53a4d4f6e56d3ebbcf95a42ac04d9 -5ec5677eb4c720ec08173fcdc53bfcfc -5ec7c824c308c6f441fee201d54d95a8 -5ec843d67ba52f02d22281c4b7d7d311 -5ecf308103e6e6526e599d3d1afad773 -5ed03a5c35868ec35ef79c908b731f25 -5ed642d47de7ca0952b5932ff638d385 -5ed8b85057924bd2a6385e3ceb8d37b8 -5ed8defa1f290b44b182109945d334bb -5edd2fefde21a3164f1853e7020284e4 -5ee8fee9ecd07b3dc5de009b366bbdae -5efb1e516bbfdb665868fc53a3af0de7 -5efc19eee8e088301efadac44b1c32d9 -5efed65a95588a524432f4e80f57ac09 -5eff5f75ba4bda60838d557516b99a12 -5f0ca1dddcaad709e845cef806801504 -5f0d896da4e13bdf192bd237b7c9524f -5f109d7f4a883f0b7a69486860f394a5 -5f1373112d58f73cf8b115873a056f2f -5f140a216136ce86e7a559515be7c08d -5f1cf1475f2286b8168be06f748ce074 -5f20643ebfe112708aaee28f39a28473 -5f2595c981efcd858e07cdd02f2f985b -5f2684044900c9ce7f435b959b975612 -5f26e31b7a76c2f4611138e95fa59a59 -5f289c1a7cea8c59de614b089f778f8f -5f2b6110db206466481b700c0038aacb -5f2e29815ff49057bbc0d4bb392efae3 -5f2f32597a9c8e41b8aa8f0b40d76ca6 -5f35a63c8f18d5f5b1061bbbef18485e -5f37a3adffe64af16c16c2ae889a2dbb -5f3a9be5227fa3185c99de65d7422e77 -5f3e12db7ba8654b840c8ec0295fece9 -5f3f0835e92f75bcd53218007f6c0db3 -5f50376c388ef3c758cfc62f8ef6501e -5f5e0145bfa33246223a9f4ae0f05ee4 -5f67f71a96fd2ef5d80662352972355d -5f6feea7f4e1f912482dae7d0253d55d -5f70c26d04b1e8b596559e757a1dbec9 -5f737ebc74fa734d47f9e35ca6e5fc91 -5f737f8dad0e87cd6cb449ce8ce4c885 -5f74b90d609bd056a96d63930e49e97a -5f7769f7e9ea853ed9f3b5dd4e174435 -5f79e08ee586574fd425cb9678c751f9 -5f7a2438c9467597971f9086e8cabc25 -5f85dba7f912c4aeecd6bcf28e6771fb -5f86313b2e10abc3980545b82c68bff8 -5f900090c95eba86bcb7a42b1116155c -5f9577b1bd42108ea5bf03d0ab8d2457 -5f96c751eb0c2cbbc14dc879a5ebe620 -5f973891b458c733238ae45f6396ff30 -5f9dda6ffa1bf27b71170a5be9f07615 -5f9e2b1870dc9d0704573955ccc740f8 -5f9e3dd8b5cc986923cb76506bd55763 -5f9f2b433f0f33d86b235b153dc51c95 -5fa064cddb4a6d8de8d235b0688b3875 -5fa0ab184558b0c6b7b700bc0bc012f0 -5fa1b93ebad2016c0fba13c104a41b09 -5fa35219c40fa4b9577b5624d02782e3 -5fa8e41a64c6c964017557bcb3debb39 -5fae7297e45910b094e12f19bda4ed9b -5fafd3381f3642a4fd4d49b8803ae996 -5fb0f86bb2f849f2110428ef50e47c34 -5fb9a6bfc156bb4877990af0d18db54c -5fc1ce9d18dbc885a78674ee32024ba2 -5fc79da802fbe1557d6a1da364baea80 -5fcce5c19d2e8d1ec5796a8a77f4e431 -5fd280e5001e721864c0f567c6be6e78 -5fd7a10d8b3ad7b7be2122302e738aff -5fdc7c103fccc4d3266ecfcbc5d774ba -5fe3c6cbad4957dadf33a65a77d013e0 -5fe4619b1594aa5156ced5ee65229a16 -5fea1a958fc0400dc7d4b297b345d93d -5ff21c36a612a3f82c52d0c118ea63dd -5ff31072b83e8eea6ffa8b5184583b92 -5ff94fb90ade2960aa8c30a9ff3ccccf -60001b1061e883c274f67980fb8a200f -600aa8fb5001343386e6f6e4aaca26b6 -6017f623128671b434bfa2c84b37dce9 -6019a5a64c6f6c10d490a921654f1a87 -601ab5963c3b46e31749ac2f936562c4 -601e4122639262902167a4c1580d5ee7 -6021a646b0a8e85eafbba2592f3e5e23 -6025b2bd31cd87121bce5030c882eb13 -60267068cc4faa99c6c2b6c5e40e317d -6027645a95c8b682800ed55f72065985 -603013fd36ce956035126258572045c5 -60354c6cca5927265d3ee190b929da77 -603e4c40af54b1173493a8412a6c14b0 -604158a692d4965e9453780b92dc79ab -6045cb0b8c33aa988479fd48d3e09bda -604670629b9511e51e799f9063c96456 -604a914ad26cd42f77b6cb50578bf99c -605662eb84655b0201789925528ad8b3 -605ef6104123e237efe68c9ceb783499 -60628d0c7a35e4a3f205c5eaa3dee6b4 -6065ef88a6254c5ab0a8bcc161457ffa -606e49a610436fff15e413fcd7a373b9 -606e64c94beea34f5acbc3a831282f8f -606f599274748a7769d4fa10ad4b364f -60778a63a17fb5285a435073e8df40d7 -607ceb6aad939b954c0390168dc58f6b -6081bf5a7c2f3395ff20af01fe9cfb99 -60832b9cf45b9f60e543feaa0ee663e3 -6084e18c80252cc6ae4cc2ac07a86a3f -608c432ed375334b10fe616e2f80647a -60914559e9194de35a258209d4ed0f56 -6094bcaec290653a83a4d70befa28304 -609d9bf9d3b8431b12e8d1b165c0b300 -609f2f18e81807e1f02289cda81a2865 -60a00838c1e28fb726c14c593314814a -60a329b9eed91a5b8ac14d03c73ba674 -60a4241b21154102691106a4dc6de994 -60a4f7c0f0722bfa959083b8ea35448e -60a9b787fb248ba1d0f3dcb573eec325 -60aa1a11cee4288f071092c43c8068a9 -60ad65fb23254adb2f7404d1f956b7bd -60af626e389aa3fa7a2aad20ccfa918d -60b9456a816b23606f4f6ca161ad7997 -60bb8691c19ce98401997c0f8c55ca37 -60bfdcb0e1e33b4f77ca5d6217068f55 -60cd01d839f76493fe805cbd08fa8699 -60cd1a58db261d5747871a2401f47999 -60ce2a8dad2c0cb0a20b227725a2de9d -60d0e93a1577100b4d18882fa296bcf0 -60d37aadca821331d76c7b5c2682b3c1 -60d504b3614c1805b0c301342378af82 -60d60cbe705db060c63e344a63d65413 -60d7dc04e388091aedb9aac78a5d1ed5 -60d9012f8c219237973102647d1b59ad -60de2bf77d24d11468163772305339cb -60e4a0d743a735d56299de24cf0fd55b -60ef3180b60f8f975807b506a061c6b9 -60f1019dba8940a284749845a10940c9 -60f280b381e3205fc602a813fa829d23 -60f401e4af7a8f12a9ee8cb74fa8c142 -60f657a4feec53e1d1337fccfc098b4e -60f953c8e503390fba20ca483bddedb4 -60fcd934af87c26ead2f491a7a7dff4c -60fd8ba3607117647d84be16b311feb3 -61005ed52c5a96d33a50216dc0626ecf -6101ea5bcf8375d74112d34c21d3304a -61087474c5bf1a7262c8e2ec0b6c83d2 -610e0cf098d04b52220d3da3a17b0ed9 -610eb86c6194e0ac01c085e7091108e9 -610fd372d8e6874ffb2d6b668f01d4cd -6111750934a5d3b73ca11756dda6bf0c -61151eda6db42df1a132ca5a2f4b1170 -611ed843d6ebaebb368306efbb19648e -6126db0a3d41685083266d8b69b27abd -612e5a80989dc7560bd5faf9b2f4bfbd -613c3de2dd80312fded01b239782ed7d -613c95ebdfd4ebf808ebee46ff7bc76a -613e98b173c5de9441c55cad73ff7ce6 -613ed7482bef1d058764cdfa73db4de1 -613f8c7caaa6c2e1834add719e00783e -614080ab057abd93c9b6a27f5de47fa5 -61456bafe129d78150cdc6db87427dec -61458a00027930173690bd831144a152 -6146252421daafca12ba5025ed634064 -6148140545fc277a58b2279be83372e7 -6152d2443ab4e00b716345dbcbceaf84 -615460c923e0fea86cc47d3ddd63c373 -6163c1abbb26896255286b3d5c5d67c5 -6165b5e1edd56021aa8628aec9b58eb3 -616ad9a184650adc4b7fde4937f11ef7 -616c5bcd7daa48f5ab3df6f4b2017416 -617141e7fdaada544eb84c7c8bd5047c -61735550991373f20a9f6b431deb3437 -61736c9445d6b01f11ec3f84dfae96b0 -6173e377e3822a2c8ca6b3ced195f69d -6177156a20647ac7a07116a0ad3989a3 -617d610a3b923dab9c34c114af627941 -61853e0dea1db36b3306960e86d1bb63 -618a932b2c0baa9e9f4b3cab76dd26ee -618ff6e760b78ba6fa09f80a911daa09 -6193bbbc14a6d5a4a87c606394548f3d -6194cd95e62f1c4407e51c2c7ad1250e -6195299d433d2d7b7e4526b2684f4253 -6199cb47863860a7cbcd8e87abe84870 -6199d5f062545eb44ab81b0c07dc0e48 -619c7c8142d0ef76837e3eca3d391557 -619c8b1269238d3ab814b4111276e463 -619f4eeb8a24a10cb4976f8d97590d19 -61a029155f116d41433497a71d309147 -61a09cc1250865998dada9a596dc114e -61a406ee4b79b035ed3edeed7f533a07 -61a6437b2aadcc5256bdbad9626b9f1c -61aa7aa7c17afc262d6088400ed3a3ed -61acb9bab5991a2656310bdd772adb2b -61aead9e5d20a9d431a47df92da08194 -61b0ece0382569b4b1197e7f8b7a3a1c -61b1e42b56c80bad553a416cee1152ef -61b2c923cffc4248b747c0da6feeb432 -61bc6b0ffd70577c89f13611aeb2dab5 -61bcf810cf16047cddcf952295404539 -61be8a5a02582aa1df311bf2c18adcd0 -61c060a7b435f5b313b0bf151bf83fb4 -61c0aeb0fb0a89dc651a29c5ef3a36cb -61c0d43723f3e60afa67ac1402dd2fa5 -61cbf006ec5baa41eaf7a9e57e0065ea -61cbfc7714d2d2ee10638fa423bc6888 -61ced7a8164ea9cf16ff2b54deef3621 -61d2b7cbcd9b69a462c4352439adf03e -61d2eb311736481473c88621c58f0d11 -61d843e673ea5fc5c8e1878abf6e7d06 -61dc95c6833d4a86e0e6236c1434a460 -61e040b58c6fc170c8479116923bce1d -61e3db050b4e752a204cdd55e43f091f -61e46e354c69aa2a318f523a391f1194 -61e53134b982c19f4758f4ea4a25d47d -61ed3c07ce1dc11404b7ba241fe6f30a -61ed52ab44a3d0e91a63ee387d321dc7 -61ed912dc6c1847cab90b0dcb20c3227 -61f21e72bf4d150c87bcf42db99185b6 -61f4681707f33c7c73c85a9e0fa9becf -62060287a7772a6bc319fbb9169ec9b7 -6210c681468317d3d1fcddd098a0d812 -621573c70d3079410949a5397293bf25 -621b0c1f51609311c92c9c6ecef53f4a -621c68defbce5848f2169e4a4ef8220b -621cd7041fa5a2eb476f60509c65ee36 -622ff1d78b93bef482622eaed87e08eb -6230f1eaf664545480b0983372e283dd -62312e4e7442e4f488595f718d231553 -623861ae305fdc845871c931f03d4ae6 -623c833bf6d9ae68b81628bc7374834d -623d01bef940c26288761e3ba255fc70 -62411fa0d1dd0b9f1bc8997ab9e1cabd -624365af6f40e646762e81d1c6dddee1 -624483c3b39a66fe023c7d60993f7b00 -624d657aeee9474abe010245d332591a -6254136e1b1b4649794fdfc0d3932c68 -6256691603bea509a6274dd99f521197 -625952ea728507743aa33b27e5b2ea69 -6259ace8f7abd9c96d5db78115e603c4 -625e2f820e367f84fe22d7f8e1a96482 -62603d007266bba33a533c5c496d1091 -6266b390f9fb15383c2301018c1a5366 -62670b21c7c29ec9811f06a6acfbc9fc -62684a4053e9ea1484f3329ea0d1a8a8 -626b2d894d0930e649815820c74f82e9 -626b9b1043d449f2c60fdb6beb05d2ef -626bd4677931b492b7cc7ed698e3eba8 -626c3d600313bbdb4930e9f94da7965b -626cf7a05c102bd0c8f75bd7a6e6778c -62752d08f95a64813d26f798d1697658 -6275ebf92b5504adf679615bda01c506 -627efaa6496e8238e0714b3161d8b5d1 -6280a64c1fab3e69f0fe37a7aeefaa88 -628308e43ca25235cc8cdebd79a4e303 -6291b08b973ec3158c15fdb8bcd47585 -62973b586ab744ab785ab2bee7d97c9a -629954f930e9adff5513d2bc36106461 -629aefbd846e3d660e7185bb96811a01 -629d8c45a19df46617bea7f44eecc141 -62a12484537e8f37005d6eef78122dfc -62a62599da5e06bb4b79f6c6ee7ee66b -62a7c4391e5da8c9589a90c63d439a6b -62a81f5ea56f352248023f24ecd57efd -62ae5276dccf8eb0a1427c1677b03e38 -62aef5f2fa7300fbc9c8fe3b222ad20e -62af4d1c0d0742bf4ad1b4fe864329bd -62b142ac3fda19210fc88d6c48da06ac -62b9b63af083c574d566022687ca1269 -62bc65382a4230a4913825a90081f2bb -62bde25c1c578ee363c8ba5f40961f7d -62be1325fc154d6460c1eca8785b6663 -62c0561aabf989db4df6ed023011f312 -62c107f3d19915a3debfbb1d487ecd36 -62c61e4e61a21b8f6585f9bf641656ca -62c74b97a44b3743b5724ea5c9b1065a -62c76a071775d3cd7957ccf0594c50be -62c8189c8668a8aa9b7147b381646ebb -62cb4d740c76807527f537651e7b3820 -62cd1d2648502831322a572858aeb438 -62d1c7cb4f389993aea74b4f3451fbbc -62d58c1235151c27ea499d9b731fd907 -62d72d971948007df452d0b476d1dc4f -62da13e82cdf7bb10423efd3ae65ea08 -62dc312441bc65dada5f1ba92bb5b33c -62de5e39fa39c2d0c8752210006490ee -62e197a86f8a7819a713537cc06b53ec -62e479c3d9b7cafe8baf81674e2cda8f -62e7e9f53460133a170f3bbba0546ade -62e8c8c4d5a3140c507acb19c5e5fac3 -62ea00dfd94d9c7f33ff7481088befc1 -62f277f8dfe84d29041187edde69aba3 -62f36aea7d4ee8863e0551d2eedd8021 -62f689a29bef6fe8acbf07e163da1535 -62f951a57596153f30b7c1bc48fef73e -62fe8ac2c917b0c78a0ee65235f06c8f -630072d5038b40c9aa87a5218762ab91 -63019f4d2b68ef8a1b23a65a635dc6a7 -63060325143d33d2d019e4491c92a7bb -6308f83cb5204d41980c922f2b2f5469 -630da14030bf0434a480762155380900 -6311e3f10285201f9208c1a5513829fe -631211fce5508f2b2b96431b4248e75d -63125c5e6f6e4d144731ba4bc8fa2ece -631431f10d530d05e7ac400dcfe82ba1 -6317f48f55038bc84f32b0edabd37968 -631b84b88291584ebb7e718dafc5d103 -6322eeddc6aca19abed546ac3d09de52 -63239c013345b6915c5493e0eca08ec0 -6324329c4d8c90f012587d5d74a0025a -632c39c33e551f4d71f696b6739a7bbe -632c3d480855e07615f7ba490a342765 -63300902db402be6a888732c097433b2 -6330a4be2db3e2c61d7f86ae71b6ab71 -6331066d690f0b371248d7cd3e10d40b -6337ee76caea26f655374c1dbd68ccf7 -633a62b9d270ad92f1b2971a7206f2b4 -6341c3b0a9febc53de05e0bb420f62f3 -6342437eb7d26c249fea7122f5b4a76d -634d781ea376ffaf8e520b1994d3dce4 -635190eb76ecb6483cbf7ce2acc1614b -6357523aee3af7bf91b6974a3357bc97 -63582b86812bfdc37385d8ce73de9fe6 -635894b7ee80c2c6bff1b30f8fd4aaf8 -635c6aa48fdb4e88075ad4b1f68ea28d -6367cfa7eacfd7134ec256eb07c23080 -63689c477f25ddda11ab457850c442d0 -636a19d912fa7361c99795baad27348e -636a2b3f4e4486099921f4c5ed174b79 -636c80bed4a106dc80f82457a0cc98fc -636e77f724bb77cb8dd2bbe2e56c44a2 -6370299399d4f3f0e4d591a05db2b4dc -6375b6d0a65f6ae2df972c3903184989 -6375d25cda81268ee43388878efed8ff -63799ba3047ca7c116d2163ab33063f1 -637a41add14d531f1c550f15db3582e8 -637a997966f3884185e309cfdadaa6e3 -637ba65241a705bf8a6cdbbf5c699802 -6385396125319c3a17091be88bdde406 -6389b1397147264a59c35e7d5d8822f9 -638d69b5bc6ee7b15421d1aa92e09894 -638f7381ddfd1280970f094c1aba5d51 -6397d6f3f0a07387459b51a9e03ccc7d -639b4911ce792ea0ab9be6893845b762 -639e43cedb3b4b380df9c9181480e963 -639fff585af16beda029304a85fc0573 -63a7339478f9a70a1e316993f2ad1e05 -63a8610c1e3e636e27ae2ef350d151e2 -63a8ca11d00a667234ab46e9e242b460 -63b6861aa68ced9d20bdba20fd6214b3 -63b68d1ecae2b59462bdbf79af0ecbef -63bbba2a727a9ad8d463a8b8297b943d -63c078235975f90a72f96aaee39b0904 -63c1bba56e657148c36b77255620b4f5 -63c243ca80a9da8e748a0d2ea2c5a78b -63c36b5ec8bea8b20d907ed5c9534aa0 -63c4d323a03bb8da99d0ff4cacda7d4c -63c841a8c500ccaafcb79d4fb8089b3b -63cda874f36c94203033b78f1822f9f6 -63cf84e83bda8bb7fd0d2de95d641131 -63d5188e34cef30ee68389134c57142c -63d642d7199f7f00e8a382c60b80da59 -63d899120e2a885670f7b02e2e7c05bf -63ea0b07d1e18c6436d95a6309070263 -63ebb6407fc787bd711f9ba9e4002328 -63f12be060004ab4b3dfe5374c81d4e4 -63f2ba982d37da49d6e6928abd03b08a -63fbed8f5e8dcb8b4e8c5ec3df67619f -64019675eab90a6658459d6a019d0441 -6402ff587aa58a90fde1d4ae37b112ff -640302787e5f55bf5e00e1a491319a42 -64037ee4b32a99d515afe31b8becc04e -640b9e714377d1c520cfb7c6a647cc6a -640c147ceb298a1529e0293742f250e9 -640c815dfdd5260060f0b523d8776f76 -6410a6c5640559ac95ad09e6d8755289 -641580dd275f84658e326f4edc800e81 -641cd310a89375a489ec2806a7f2759c -641d12d1fc3ec72139e421ea1990980d -642098cc0c5516d8161a0b31f5b8809c -64241e025668118df9e704a5dcb22c78 -6427b754d93204a45dbb95f0f0eea6df -642b300b1aaa5dfdd7772a1cb78ea40f -64302f9f180ab953a8a582d32e42c41e -6438a8741c88b5f8041505723fa67d25 -643a5c8c655c3673527fad338c35a3c5 -643ac78e602c105e4ca453a08f36520b -643e2fe68ca020bc0fb7abe5781ea771 -643ffe77569245654f293fec82577f91 -6446da7e20c8f6f1c828f7c0b0d6813e -644a51d6c8bdee0ebea63e077741e2ac -64519dfac522d08720cfbf666ad89285 -64595feb98c2e435db9c16086346cfee -645e5b11649760de461706d41de72bf6 -646041ef861e4f0a13eede603f1b8777 -6465cea2f5cb794b833f47f48b47670d -646a54e3771759e4dfca94912ab2dec8 -646ae148cab6b7f102e83d0bd8f6c122 -6475fd7b45f59633cda95867157ed9b6 -647d5119a5af51382060a0976fab45ed -64845e0dec8ab59e35fb42999ed7c561 -648b2ee46bb4708285377a9e80542323 -64917da89289b39342a033072cd0a84d -64919a9f509d5aa60328f48e345c4924 -64923be5845e0e6c85ad88342ac0b0a8 -6492d8782ad051303abf9ecf2e843ca5 -64954ab5709e6874b016011fa17c98ea -6495710e496dc63a70f4e08e2ca655cb -6497e1d8ec365846fe4eb8f7e71df28e -649f9623bffa2613ea9aedb5ce48fe30 -64a2087a31b712a293c721261990ce14 -64a506019b537078db5b918f007897e0 -64a9dac7e6e9ec8e8fd13dba2b0b9534 -64aa24359a6df3a85be234baf7ce2ed5 -64ab73ab142233b13e3d5b9c73a80d3a -64adac12deee5e538014a84474ba4d0c -64b02ab41c31c9c06da8049c59b749db -64b6bc39324267518016803e1f1acbcc -64b7247ac0060206bf40ccf1f059d3a6 -64b8a72d0b1e5fe446816b036f3f5d2a -64bfc2420d9eb925a4a6927391717fb9 -64c60e99ad9a082d267b1d08f21eb4f7 -64c8fb83b4e5c61831a9826af56414ad -64c99a95711072ce551b1fa6ee15a998 -64cebfbdbf5a087125492310ce8ad40e -64d3506918f58db727ddea8c095c73cf -64d3c286245d7fc197a1db212b3421fa -64e22655a756835af725ea3f5a032517 -64e5354d2ddfc4479786cfeaf74f43d1 -64e66fadf0d2664b74b0d7e4cfddbe06 -64f0a393a9fac5e63791de4a445c5600 -64f5dc442dcd886a00a91cd464bcd637 -6501163423d12e3f9d5e22840c84d746 -6501ff62498261f65d58891371c600b3 -6502781f3107899bc94d9bee82dc4423 -6508090cb65da9904a526be8095e2cf3 -6515e764955423aa336d1edbd08d2d94 -65171339cd67df9ba4adda44d9ae123f -651a835a7f4485bcd10dfdba2f437f1c -651d0bc173084b33701060b4524e3e9b -651ece6fc6a3f377b222ef1185c249ff -6524d3300e4b4f2939c42c08dd8e96af -65253c78014d4571314c084b18baa2ac -65292764e98e4bef877f85a42c50e0c5 -652dd0b146156258bad5fa1e851e3101 -6533d3f854904bd21619b4c8f45f09d6 -65381acd37fbd31ec7332d91c24b9e62 -6538af985e7b29789a76b974e0b904fc -653b63a00e8032b69756c5068127aa0a -653d821fd7740c67e564bab955be3fbe -653e0d85da3a3ec2153c15e69018c068 -65448a50c4bd088e94e7b5e0b9f3fcd5 -654784806bc822ebf7b5eb176ea9f563 -654a2ac52406b6130d1bf5fb0cc30568 -654abf702e82972ff28d21c261c577be -654b0b110a01cb9dc6dc2f44a38728f4 -654d16f3d11de58142bd8ccde64ead93 -654ed65ff9591461d77347b47efb0496 -655174636296643d5c5aac71de1667e9 -6552620c4a43006d58462ce7ae797534 -655c50ddbf41474ea1d3e3063d1bdf1e -655e4295937c1480e66110f73068e622 -655ff8d30b90a554252dfeabfe20358a -6564ab6f083ed92da62fbab6611b6f02 -65749271465ec3d9187b35c2226c501b -65779bc8a253b01c0924f0640e8417e7 -657842e763bfd6802fce5fc855e93c58 -657a14b7aefb2b5b30f07f70d40afcfc -657b38f223f56232e57d077572162c4d -657c020512a17bd7c66561514cc98923 -65831641173f0b18a97b2cff5077392d -65832128ba4b6e8dd00240fc473c374d -6588e753e11f50abb0d02494d079003c -65897be195eb7fe9d6bf1eb3ede1bd0a -658aab5f4949eb44ac349286008c45d7 -658f980406ec7d24655c2565dcf9b3da -6590c446caad78c319f7860857215f0a -6592fa8dfa78165a855d6ab38432baad -6598c6ea38d69d69b59fb28bdaf56784 -659aa65725a6054644cd1cfe49635d1a -65a27cf32d4d8376066ac2fd30c821be -65a3ea8801e6685c8d83595b5b4abddb -65a63f96a392e262298a58e0bd315263 -65a6497ca1a3af9ec34b41288796b44f -65a78d1161209e83a31633fb25b8bcaa -65ac1aba745857cd13cd851e75d6d832 -65b941efeb15916c6bd4a1c4ed318c5f -65be155febda2f0246bd163d170241a4 -65bef5fef5bd55e211da09b29bd35c91 -65c2301f1d354662f146612a87a0fdd6 -65c2c291b066335cc22b201c92c559c0 -65c5c5904e47ed634e3d5274a97f410a -65cb32d5dcacd10b9ccab96a8cdd4c01 -65cbdad78a0d973bdb8a9c026d974f95 -65d235134d6ab01abc8286b435613b51 -65d3fddc1bfb6fde2df5221e9770723e -65d61f095d9522d154aeb3ee58a5fb0d -65d77eb10a5368e84eb9e300bd0ba843 -65dce4f82f2cf4a245c14bb43b81c766 -65dd4a115c0d149821b7b196e1755467 -65e56391b362fd9914585deed803b029 -65e6fc8f5bd331e1f10b292b29ab2f9c -65ebef899cd8968934e894da6a76e827 -65f5f996cfe9566424204cc13fae1184 -65f86fbae2f16222f682056e94782c96 -65fc2744667ce55e4cd2a598c49f8181 -65fffb5c738f92e6d50502859a412ba8 -6601d5be587a6e28ad17787193467447 -66036941bab0ed8b8d43b145783c75ce -660bf0266b30beef31608aa656f311ce -6615e4048a20987e8351fd9f375eb8ea -6618ab0fc78c493a5161ff17a08f7f67 -661aca233d536ca477f612d6db4fdb1c -661daa090402d07ef0c27ea0aa710b32 -661e656b3a05989d24f514f56e7eb3d4 -6621bde5a4c69f191540f6469a18d5af -6623fd69a4220452cb3ec9a19ec46d7e -66295f145de1fbb9aef51d08d7d807fd -662a46db64e5d41ecf99f3c4062d074c -663612be2b2b7bf83523b7c43083bf92 -663671c775067c07325bb95787241ca1 -663702086387aa0a1854eb5cf8d62099 -6640b02c3d822d01b6f4e4952abe7cb3 -664250d0eba03e4291724c7024fc3974 -66445085bb882049c1c214ed795ea95b -6647f15889ef674bcd8240214f323d6a -6648a9d6f021b71a916d7cfb25885fd0 -664f7faf7f906e2c7d3e189f46780e86 -6651499eb91df180e3f81c193f4f0f72 -66558804cc47b20f5575f3d47b2349f0 -6655dbfad7b6e0b607b1a27cefb72f67 -665fbd74f555f37e93925085470ae997 -66610b3822cd4e1e7d793037fc08f1f7 -666571088f13b3f93635500953fd50f9 -6665ea8acf16cc1f7af1c1be4667625e -666650c70f8025972353ecd8348f0510 -6666ffd1b87fae958897ff6386dc78f1 -6668c187668755db0ef18e0f2f690f12 -666c535b20900a21d119d60c3dedaf72 -666ec1b0208a15116d2e97dc7986b4b8 -666f5ec55f27fcb37a65aeba112147a3 -667142b1005eb904761a9a9f38ead918 -667c2fad5fafd6b869fde57165e8f816 -6680a7593b53deab949fc893b1081242 -66823cdcae40219c88f5a1da74f0fb46 -668e22fe71a5ff8b86acae55f91f9184 -66909cc823fa162ce89f9ba3da69b82a -669718dd6ff35ef0b9b72bb488a6e227 -669719ba5fac42a2c46c1e893efe6451 -6699b48bfdf3d91c50b1e9b643d0cd9f -669baa00d34e9b884515cb588138900b -66a06b9e1417e26c77f3916146f72faf -66a2dc96bb147eb57a8cc5a341dc5920 -66a52dc06e3ca0bc042498ef3fe72403 -66a803a42cb11aeee596c6475373d1af -66a80c6f6117f7636424d09da6a6c0cf -66a910dd8a4a36c4a97e6a0952143098 -66a97fc6ba9fdef1f1f0b24d8bc3f0b9 -66a991b804133ad19582ca9a36ba86ce -66ab9ca37b0221e38233fa0b0983c01b -66b0282b24dc1c1aaf42d06d6014708f -66b726a84de8ea226de6c8efdb52b967 -66b9c0026c80ecc96b1b31cbe52af4bd -66bd56d93072633cd7b68a8a0f765fdd -66c13eb7b7b68b0596ed40e2766bd36c -66c217c4ae6a533c0427b3cd6886a87a -66c7dc675112c0e9cd83dd2b51562c2a -66c7e02eabe081eb4bf81026d18f4767 -66cb9c9b4421ab0e08f352a798e4d2f7 -66d14b55a0f88a312541b78a9ba60d84 -66d4225411ab0f4e325148fabb229bf7 -66d8ed87e387591cbcc571299cd26cce -66dcc9d6e4dba6d94b63a9d3c4c89722 -66e64fca3c833fd875292761071ddb63 -66eb024d3f375111ad1b93a6cbfe70c0 -66ebea9e5f3bb51d005d0d954ef02416 -66ecfd0e211ebac37bb6dc72a3432436 -66f18f0d51eaf545b7d74c7bcec081df -66f38d4f9afcdb6d0040023f10ab6dd7 -66f7f59fbbb600cd0b5e272a73e53317 -66f98d0535d8333746560b3a3fcce87f -6709e9915ef5a3a0a82c1d386fbc3bab -670a4ac28832ccbebb5117bcc881b3a7 -671118714acb4ebf2bfd965c4ea1e593 -67156ede48b663816230257f214e765f -6717437d4ab2293aa17da8e477657e9c -6718ea1dbca12fb7a2cb893597e81610 -671f16232f6fb6b0c0a42cd107babac3 -67206e8721ba079f7b837f3f0c5decc1 -6720bdcb84b71da61e2f5eb94605c15b -6722f4c1dd14f921d3b4a0972fb905bd -67239caad1421bb920a3efa8cc127452 -6729fcaa7eca21499cd139222b604adb -6736a0e0d573b134fef71b0b905f3103 -6736e11218cccfe695052643de9393c2 -673aa975774fc3424e2ab54c5abbbe98 -673ad86455d01e530a4a1b496f7d9bf5 -673cf3371fc84908468d3b81f82b7939 -673d168b1117792c5246ad22ddad4c0a -673e65d6227507d12feb70152a44059c -6741bb1e273fcec12e68f885e27e06ce -6745eeb71a3f6fe8b6e72f609373b085 -674ebbce748857abbf63ac872dfdd7e9 -674fab4a97ba9378bbf8cfa0bccdd671 -675242d6afce9b05aef088ad7223e01e -6753222290891910d418786d4b16c5c8 -67535b9207e1c7766b433ed1f5d6cf91 -675b651eec66f13b07233fcaa7791cc8 -67622d98662b8d345f7ca28692347eb0 -676295c7a01aba2471b24367a090d2bc -6763befde2da8f68490395bb6dbdeff2 -6766e7fa68bf27e8a9c81fc97572d1e9 -6769f7415d5c4e48ac985ffc84c004a1 -6770ee75a86fc2c79ebb17e50a5bfba7 -6771e1c655aa99d75c15858594be40dd -677244d28d12ddcc249d2b3c793f1f7d -677280b10b38dcee7ab14422893e3bfb -677685c0eb658fdb48074b4e89bfad71 -6777d90ec99189d73be8b817a3ca7803 -677862527de3ee3a29cb3894534dacc8 -6778b4d61bf63cb9bddba2e7befa2313 -67819aff0b70eb5261f7219953554fd5 -6783d144ee2053dcd6c01060ed842dd6 -678af935ddf00828b27b4e4ff8d037d4 -678c243c7cee4fc5bf2d6713c9c22c7c -679ddd9773b6898910a444189eaf10f6 -67a4c834e4e95e0cea47ea22fec05411 -67a4ca56fba357552b1a6b9313962f60 -67aa8f64a10886823bd43aca7f7a7226 -67abd1ea9889e6682c8a9c988d98668f -67b110dd57c236633108cfd6aa7a3719 -67b23e4164b79e09a0e2c447d388a93d -67b5e28f9412a56ab54b1fff5ccb1152 -67b6d609cf430439c0cc6729e5e92c0d -67ba0224a5de764356bcedbeb87d7fe6 -67bab17e574e41d28d1d6067c62d1433 -67c061d3c354c25bb8a70231f69a759d -67c1948d16477990be951efb035fda10 -67c2e465d367b55038a0189ff4fdbd32 -67c39f2512b99f3970723f182b4830e8 -67c7425a75a5b1b5cdbf0fd6ff549ece -67c75023a5a77931e77acae9cfdf6ba3 -67c786185959712a849ebd142835e552 -67ced3a23e5d29840b9ab2b8619eb28e -67cf8c10276033a74409efb370f7f2cf -67d12342898acef37ba4cd93b0cdb916 -67d590d347f630439b4cc8b237ebc01d -67d895a500060664081e9215a2f8974d -67d9bf5d08a63cd9dcae3d9506edc046 -67e53e28d32b59db4e65841a6c1c8b5e -67e66fcbf61eb3ec99855f10b8257d1a -67e6827f3118a91181fefd3cf93b4124 -67e78af6d77df71324c23a91ff8b8d63 -67e8b02c4f04716798b723737d962b01 -67ea774d57334f822f3c760e0ecfba20 -67ee87c26964cec2a40a536aff7d68df -67f58d0742dd49ef40308a25f9e15ce2 -67f6087cff96a87878539b9ec59fd6b3 -67fe5c504cad7431145ab3f1785e5c17 -67ffe88dee6f72d6b63c9c6ecc574664 -6809f588665cc14e9549d422388c03cd -680a41ade0eb07fd3167ec8851529b6e -680d15d51e6bd11657e631ddd2c2b8b8 -680e6003d92fa1e3a7705b952fb13ee5 -6810b017723c44ca785458cadcc7b1fd -68115de82d1d22e679eb0f8da2a49dc8 -6811e14f1eabe5dbfe4e3f1389ff6cd0 -681470a5fd6072b2a727bd2bb63e11dd -6815850f90d972d2f8c4fbb5aab0462a -681954c88b7cb251c0211411dbca2433 -68201bb64c9254bb4d314ce00265ddb3 -68221fda70d6b7aabbf7daa57bffad88 -6822aac5584c5b5d08f049c78ba48984 -6825fd67beba95fb0135e0dbda446db7 -682cc9943564daaa499721eba56fb927 -682d4d7136f8696bad9b4e6373485113 -682e2a3b6285d5d0b0d9da0a5bc7e6c0 -682ff443e500c2911ff6dfb23f09c80c -68304d6d538534b19fe12c4d3797f16a -6830eb4f0c6c62a6b49541fab61b5186 -683760aa6da31fce27d08932ea495065 -683a518a4def91abc9c851e14595717b -683c24b13d409c97d720770dc6804c0f -68438b7f59992eee673dd69028f1947a -6843c06de6a30d9aba466e911015f431 -68465db51faa6a5ba825a9e4374ea592 -6848c38185ebe64d3a3aa9cd8460954d -6848dda211cc2b74507d53b00d785a54 -684bb5f2b1151287cc0eb50909036878 -685165a18f4a3bfd410df733958b5353 -68550206633b243596c5b268f26ede54 -6859dfb5fb3e8cd2041d45057cb5be3e -6869484fb2cd002e734d6274a125e584 -686a2bd968179d80f23a801317351bd4 -686f23f3d65ff35f1565e5b48328d08f -686f75d936616eaad69b51912b8df11a -6871e01df041d90482badba866d80719 -687318df41118869610915998f406b53 -68732620cd99e9c676fb61b2831c0714 -68761299808927dc864fb143786699ac -68770b08c9414d128806d389a602504d -68783372178122525fdac400dd34d9d0 -687d3ee55fffb00fab1a838907e43f96 -687e724fa5bf2b175f949d08f019dd08 -68834b650ed063051340cb4c27caccd4 -688ab0d391a92dea10b000416519d113 -68951c9b67598a73d694b8e3bd326c42 -6897816192adb30bdede2c30e6bcb91a -689b76c60cc482bb32705052d8038450 -689bc78b007bba49117b0272af5cf56f -68a61f933d3b816d7dea51f42d126fd5 -68aa3b198c01f5d786a1bb735d03a30a -68aa98ce0c62fc64b347d9458c01371c -68aeced531a9cadb91ac7eeeef23986a -68b22316826ca89c491226555e48940d -68b268fecf172bd3ebf20b7d711ad139 -68b4f424458017275c588fb3e108f5b6 -68b5525eecebdf1fdae0d1960ab18bfd -68b8fb238e9f1649e96992ec8259ddca -68c0445e38b9628ed04118a9f3e21303 -68c25b18f2265aed47907bb91654cc12 -68c487dfd58bfbe4f380fc124bc45260 -68cb009d7d72b1f65838f6c251523cc2 -68cba8759e21db92facbfdc870e1fa42 -68cbc90e63c397e6b44588a7838bfab0 -68cf397ea27e9d377813dc3bff529107 -68d21d2c697a3cbde81a5df26dbbd90d -68d3bf12946cb08fd334c0312032f1ea -68d4a43b42787e523578c1ebd79cf216 -68d4ac182666ba14318bfdfdf552ff1d -68d4c9c5066af6c484caba5a3ae1b3f5 -68d60ad7ec6faa9cb314653408e5346c -68d930294b08178f3d143fc17ff11394 -68de9d62b3e9453d90cce77e6983aa13 -68defe203dafd0f67f5187a21e2233c5 -68df25a5c43783f49dc9172cde84aeb7 -68e06202550d454c18dde396fdb94a1d -68e422410b0244a73a5b4213a6929594 -68e821a1d9b13885581ef9c2aefb7925 -68ee9359339c7bc8a311c77124799edc -68ef4ab61969af3a6e16f9a20a42f7cc -68f09ef8bdc6d52316be27dd82a56f18 -68f17cc3682a2b804b024f3a23f33ff8 -68f18048e36de5c80e333d5db9d27fe8 -68f3b2a2d4bfa2eb156784fc5eeb1b55 -68f4d94a832bab4a2472a839526c69f4 -68fe427ea829f62f5a358cd92488daa5 -68fe4d1106e5d5d6a3ba33caad44f9ad -6904b4d84dd1ddc289f1a60a07aba1d3 -690d7c3d12c53e2d56fe7efb583587a9 -690f8ec01bfb7c8af689aa887378155e -69147ee89844d876da980b9f7f081817 -691d8c40327ea18870a853a27173367a -69232eb2bcfd4ebd9cb7b99f9ff7495c -692ac69cad3fddaa91b20730dd055c1f -692fd0a3f6fc296218f7f57a94e62858 -6931cb0e9cc8b4bae90d47d12f2e4de4 -693321b9fb93f54655427dfdc0aa2190 -693a739d09aa7e9984e3ad496e3780ac -693c480175a4e48d51c023e8bda7d33e -69458825f29aee866830880bf2e4a271 -694804aabd543d3314cf070480b352d8 -6948c7aecf5dc72cc9831672caafb6b5 -695056b81b578931910021c9c5955059 -6951805bd57588459905ced7e95dd08f -6953e3f8290fc9d2d1c1cd69a7c1e8a2 -695b1cbc0895a1f4925aa0798c44e470 -695f28f14ffb4948b98ada53a9bfacf2 -6960215222fe0e84a1f6a8415de1d68d -6969562956168f6055b2b02cd1a1275a -6969bd68ec2874563fe47a8681fbffd6 -696c1a59db8138a585ac243730dbd6ee -696fa2e1dbd1dc374d05dc303b3752fc -69725e935a3e7c9ab3370862b33f6730 -697285f312b25d17f05ad8d30ea8f0bc -69766959fafb8982d39b13c86700db49 -6976f631b00976ce49d0909d6a749639 -697bed2530426b13e85a123c6e12aea5 -697f097cf674811634fc4bb6c8457041 -698010a64d2b2661c0219701fe1ce0ef -6980d12b76651a883941226db8b3ac83 -69835e6efea0cf7d9d0ada001be65a84 -69873fdd95f4a1b8ae2685ad6a29a452 -698a24d85e8c5f5e9333bc66733a354d -698ac6dc688f69b35d86d2c39cb49cd5 -698c34821fbc49c9a76733b31303bba1 -698da1897085d2f736dc4a8f5d6f0f91 -698f16e760d8f3b52d63039feb83ea2b -6993e328808ecf97a504eb9d436fd995 -6996e55b3fceaabd0671659e9c794aca -6998d3abc93e1afdb7f6fab252f78a7f -69a128fc71256fc48f9168d9fe221b32 -69a31f15e372c96302042aa676411649 -69a6c422cdaf3bde60b11fc815152476 -69a9eaa07f8d51dbf27ffa1541d11756 -69ad881ae5a00554b64fddb084263f2c -69b0452c395d47615225978a4d070cbf -69b58bf0432f30bd75ef39a0dab6e42d -69bd3e0d4d5eeb7da26b99b75543302f -69c2f754a5547e87338af0d6f5a60eb8 -69c51bc01f8c7f00a5e25fe8fbc3de9c -69c661d6bd5525ac12aa24c14e9fa4c9 -69c6cbb1a695eb6edb825297253823f2 -69d04b33baaa2aee2ca0c8d04c254e8c -69d06c604319a2687048ba28a2b0d278 -69d5c2cac30640b348df5907f9457227 -69d5cfddb5d3f746b8c31b4cee024782 -69dbb71e389eedaa22f5f61ee92fc5dc -69e2cddb31ff1567af37f35bd9779ec1 -69e466522b8022c39d674ce578f9cd87 -69e5e61f392b138b8a60a0e01ff1111f -69e8e1f1d3b3e862c6a86ba757d3f026 -69e95d6d4f14b098368ea7f635010783 -69ef00b86fbe75d41df9d666a4a5e93b -69f2887259b0b055f5daf2cb0d899594 -69f3bbd108a8494de97da0fdbded06cf -69f3c7eb415e82bf4679270d8c46ee6d -69f613dc54f072ca5e96ed8555c3d74e -69f890b78152f7d7862e1fa08ef7874b -69fbe8dc05378835e36e6da3e40ebef4 -69fdd5c56f8b49bc6398023b27e0bdbe -6a004bf7221ec4dcb00f2d07ed0696a1 -6a04d87b39715692c731c07f68161180 -6a069562e8c4f6f8d9b643be5621af3c -6a074175da995c6e418dd036510d4b1f -6a09daef3823f84e8d4a8c0702cbc469 -6a0a69cf21b1d715f759925d3e4acf5d -6a1048434bcb623f8ccbe04cb8c5a611 -6a12506adecae05df750e5f4bef6c19d -6a1790ab564da1787f4b06ac36e3401d -6a18db7b2da82347258b2417f9efe910 -6a18fd85036520ee2f231134c257a99c -6a1a8b9259c510a24d18db91782c3c98 -6a1ad3b97e47312103b1ce20f5faa81e -6a1cb3cb13544b41cb5d1a0def3ff0ed -6a2355bc89927b7c1886dfd52c4035bb -6a28482a2110fb969a037a145f9addd2 -6a2ad0e28f9267bdd988a28a50d2af99 -6a2ce2a6b507054ea368049c48172d33 -6a37fe30a076ad5a51294649fa244e56 -6a3b46777a1a769a2c279f4ddb62f4a1 -6a3c5a60e510272e29d5b94cb4f35f8a -6a3f4625ffaa402ad49578644e8bfd34 -6a467733a42b1450c78946d1acfea374 -6a502f4bd0b1149181bd964aebc2e59a -6a53bcb2b6079abb1b8412e195bc05a6 -6a561ac2ad921e2ece5a23fc9c397a73 -6a5700d2ff0556ea908e60e44ea3c4a6 -6a599cc758b1ce2d3364eb08f5179d18 -6a5a584543538e106cc8a3bcc3e15c90 -6a5e0ab1eef1d623a15b0b235175d0a2 -6a616e4fbc57b64d8538611a0bf0a423 -6a648be3375ba4c7911eb8762e50d35a -6a670c9ed095706958eba3a2f43291ce -6a6a5f90d954ebc84ab1d4adddceaca3 -6a71918f3a5fd75f7fc8a82deb9a15c7 -6a729754ca39ad13d024a74151a36c21 -6a772e3376c4fad7280a1e0b2b7768e5 -6a77a50d802d229c1dced1918f4821c2 -6a7c627c9eae25af1f2f8dd16252f5bb -6a82b0f9d8946439439ef4518c3c229d -6a84d55a489e873dd35ee9bda4173d08 -6a900a3976aefd251b2bcdee3d93dbfa -6a90ded7921c104860eb8fba95b62b20 -6a9185b9e61fcee664fd58ed10fb7596 -6a96f2c2c1b4e3122d66523af44e924a -6a99638a4c7393f37002260fe3b7e81a -6a9e86b37e57229afd3fd1fa6cc6e681 -6aa1d7988ed1133c8a41369ceb1d9a22 -6aa3036e0f0a2b3e59d40fdf3050e44b -6aa9506b49d02823f402f1e9e9a7fda7 -6aa9769702e45a40e203f155abf0c665 -6aaa03b03d99227ac43f3bc9a2df472f -6aabd57b48f9def28cc68f6e5a8dad5e -6aac5287414fb5dcae7bb641ce209812 -6aad0e657be73eac2405c79541b4ae14 -6ab3f0c6f0f9464061b9bab55efa325b -6ab585343b116a6513debe6ffb8f8853 -6abafa62342a1d85176710adf2ebf776 -6abdd771dc0ddeabe3fb1d604e2ef24b -6abe2a657c2043da4bcd4582268bb08f -6abeff2678ee6a4b6dc71b191f8a48d9 -6abf1592618ee73bd78b34a3c29e1832 -6ac65e67a4bdf97482827cd01182edce -6ac6b3b1ff2728d5333d00efc9870bbc -6acbd0d5e3c9a399edce1c382fc9e329 -6ad7dcbcca1e5a9b5ac4476edcdc359b -6adba31e89d528f8714dc9b054d45506 -6adc0f24d020c5307fee7e0d2fb93954 -6adc92fe0da30d1b5db7982e16f1aca9 -6adce9d34cfa710bfc9d36f02f652e24 -6ae0324065a04537fa8bebd61425941d -6ae0c7a85c648b90dc2eec269818d6fa -6ae525df67765596679b3c04f294d797 -6ae7c6675fd15d925e6f3dde967397f5 -6ae8990a3783dd6e91007cb5ed232858 -6ae92f58541067a276380c23c76eb466 -6aecdf3f8b468f195592e07cef30631e -6aee76eb52ee8786cde84b8d718d72a7 -6af006119a36aca9eeaf04abeec9ee7b -6af1647de593bc3d5e44ca4cea95f25f -6af406f684ff90ac88f7197960db5680 -6af5b105930dd8e238da8ace6690f077 -6af7facf91d029ab0a07408e420e142c -6af8586727426aaa8f58bde386155dc1 -6afc43d9d66297ec105832c111b892b4 -6afd42f882afe877715e33d50a1ef5df -6afecd5b1ef583a376c9cdcf421bb5cb -6aff5d17c71c958fa5047799faca018d -6affb83f35ddaa11e5edd561f028602b -6b02c9c4ecbdf3d3c8752fa690854b3b -6b02feef4c83945a1d7f3d5f37d091ac -6b038439ca169313085bb4d0aec781f9 -6b078b6b4be88988a09335709ddbf61e -6b07cbe43a20624c331804413fd1ca80 -6b1039545de8b792f8de3dc7a98126dd -6b11d32a17f31219a7eb73bbd4abf6bd -6b14315add69df67574a85e12400de74 -6b1587ea065b5e7505214e830e3a00c9 -6b1620b3990203d01aecf82dcbf7024a -6b18a2881d187fa58c1fb920f6480d5d -6b1ef46756ae635d09f4cd81fcb713bb -6b2842e1b33250b65bfa28b7974539ba -6b2bfe71ff803e815d5081f18310c14d -6b2ed598dbaba0ebab411a8232fd3bdf -6b33588375d2ec88864a33b48508c16e -6b33c0e24734a25227cd37521be4e9b2 -6b3d7fc4d8031ae5f53cb2109e8eedfb -6b406dbcbc7fb6e924aef08ec7a22b16 -6b4650d2d1f361c3f76afa8c178c7b68 -6b504a20cdee291bf8a6c151ad6574cc -6b5551a66a6e0383d6d97b76ce41b541 -6b565bcd388ed4a2708093b8e2c549c3 -6b566fbdd43e02e337afe7f9baf3a909 -6b5bb84b9060c966ec7fdf05c1a0bd95 -6b5e4e71a262b32ff1f51a5f625c730d -6b65422611ad9dbdcb9a861ca218c101 -6b6bdf866f03d3579cd0eb4832d38eb8 -6b6e1e3848ccc3e4d30fb0d8c6050e89 -6b6fb7f48e5f013af9fb1869b3f117b5 -6b710cf511ff60f25b73dcd712560a42 -6b71e6b484d68aae4fe9b594744070eb -6b7529f3e45d6658f57e3dba80e9f621 -6b76e2d755806dd1e02d0410835c6584 -6b7f0dedb7c66a6382dc0b6f659e2d45 -6b8282c882119736c0e5bc3068c5107d -6b83aa0cd4b31f90dd35bf34480d86bd -6b8862ab0c3ee2656bf9a7a5cf22ea26 -6b88e542f3c1766a949ddee931d27b98 -6b8b716ee2c6b67d1fbdf8a4e94e30ec -6b8d84441411270998276c8387b12a11 -6b8f0fe402c4999cf22daf7979bdfecf -6b9111b9f49826fbd0873edaf96bca5e -6b96b6107bae6a0d85b0831267e6d1c9 -6b9c3b0b55f757cdf3a70d35892b7794 -6ba0d1cc2cf80a431ceb624f15b02ae5 -6ba5c657530a89d4730975ebfdf7f210 -6bab3b3458f8f4b8b722e8ff99c58dcf -6bacafb91aaf70308040d26c551db87d -6bb9a51ff259c19e7d22aac1bf3972d5 -6bbae088fd0bb8857da7c463e73b096c -6bc35be55c002579b3ad84887ae643b3 -6bc39c69b59a715fbff2bcf232de12a5 -6bc72ab7986b472bf24ddac073d65307 -6bc82ca9d18bba20361ddafd76c81de4 -6bc8fd58be131bd5c864ec9db93515ad -6bc9206f1876db2d3f9afb5f850b3448 -6bca33c68fa6d0c63e66d15601fc9391 -6bcc546507c3dcf0e5c4df35a667a2ff -6bcc9b2c3d4d41230e6457f170e02e37 -6bcf46e01dfad879ceabeffddd6e130d -6bd82b4ebbc5ff9367177d38b9d81972 -6bded9e0a8a10bb4d9adcd3156e7de78 -6be04bbb4a2d74af862ce3388acfe46a -6be2663a0ab51cfcdfb79998b43de3e8 -6bf348fe9ae9dea0ba33447b5db6bf77 -6bf9e713fb27e24dbe124e0d8503458b -6bfc027794c9f72f417e10e4713a5aa3 -6c02e097e43014743c7c061ca8eff66f -6c0707915f7720465e8a9185fe467335 -6c0bf18262dcce03019dbb45a83ccc28 -6c1142b431d305efcc6ea8da1308d164 -6c130ba270cb3d4c182f2986b9cf3ab1 -6c1cd99ddb4b01a7c08077f9d5280af4 -6c1e0a5c6969c08abb78d4d078ad445c -6c21315518ddebdc8ef63982d9a769e0 -6c247ea7a91efe16861b2a1453e8c4f4 -6c2711d05f4b20a5039e1609a97632f1 -6c2ca7eec1e8ff465658007941dc7934 -6c2f19d0cf81ef6f3be35242c22d4150 -6c30b7fb38d14c60d9e8daac0c1a634e -6c329cd42cbaf846302d357f7e9ee3a6 -6c3a130ca757a7cdfa5651e1727aa32a -6c3bbc425ed964d050ba119b9d7ad610 -6c3d65f9d67e75d85678b254dd6d0853 -6c46faaf620e1e5d283a6a24fa60b57e -6c49aba440459296c193ef729a9fa1a0 -6c4be83b584f9a6f03f6e6d25b1b0e84 -6c50d5933cfb83cf35bcabc95e705b59 -6c562d0dc6d4248bfc846f87bd091431 -6c57e383e232f4a1f1719ece7f6529f8 -6c5a8a47b8b2e8e73958c2b4c08315d3 -6c5b354dc3c389ac586de8fcb94a2392 -6c5d520c8a77f4c3fcb72910970c811b -6c5f4ba07661a76247caeddc15d8ca0a -6c6cc96da6c0882a6b2655c7bd9aaddf -6c6f099031c6ed57f059ed23dd4cb374 -6c74635e39e85c31d020a8ff2c501321 -6c798b97cc65e1dcd0f6c1c66ab2d268 -6c7b17954c905905c6d0affbd67d816e -6c802883140ba8fad2bf94699fd0eae2 -6c88a8fc3d4ef620d1075eabcfea627f -6c8a39db20326ae605184fbc43ac97a5 -6c8cab826b218e1ce10f1a3f3e01370e -6c8d911320c9408f50af8d2018215f07 -6c8ded9771bedab36912de8c16854e7a -6c8e6585d9f6a2c807ff6a3c49f72a3f -6c8f752ac32515b8975b15c00e68b6ce -6c8f9243275f49d3fc5ed1d2634f1b7d -6c90c0d7e790ad8d75de8ecb904fa09a -6c90f5356d108b2473dbfb00c97379fa -6c92ac41290c3cc6e1b481e31c44bf22 -6c950422996089a409bbcefc5634c48b -6c969135dfca60c32463d25bb13f76af -6c9946aa3f2b24650f11dd3f82892f4e -6c9e4e04c844505f9e5820833f4f4e24 -6ca00fd41ad9615351a47b9161a19dbe -6ca0b75b7049bd1e9e559d2cf120cc4a -6ca93f483bf4315df9018ec3c32de5ff -6cac4eb8f7869475eeaa8dfefea77ed7 -6cb534d3bfb30b818e4d3de49f7ab6a0 -6cb597f9ca168c1f5e4291b5b01410a4 -6cc05ffc2b875424cda9ee3c48b83d71 -6cc4dc4233ff9305a95d50666084873e -6cc83694280591837e342ebf5bf45377 -6cca0e25fa74c97a6c3bddc4a1d25b8c -6ccb1365ee650c737216db55bc392ff3 -6ccc8278dbdb9452430ffd780766d206 -6cdd89b1c944245d773ac91b91699068 -6cde49ab3d7fba7526b9c00c3bb172de -6cdff323e2d351d3eb23cedfc1974131 -6ce3a854de9f0f68b6397f8b280bd9cf -6ce6aab593e2b0b7b8cc24f0eed75b1b -6ceebe59a20dd9b7e1d8ddb8daee24b8 -6cf009ff2791cdbc76832a5d242c7389 -6cf1466a001312c24cb8bbf72bdeb9fe -6cf3c9bd117037c34e689e89f1ff05de -6cfb60055ed3ae20fec755ab240e156d -6d007b528ad4cf5d22c9b8abd17f88b3 -6d152f9185aaa7267188145d02ea46d9 -6d167077ea49de07212e30651b6ea3d6 -6d168fe0b4b172203271b3e2cb82ea6c -6d193203f7089b8d411fb3043cb3f412 -6d1b66ce9b5d96d8489e37aae418b14a -6d1bd4ef7293d195ec61735acb2e1df3 -6d1c8c7df4e04ee1f5726775b81bd34d -6d1ca0113b55286ae606110d4f7cf185 -6d1dbb6712d7ef76a659d56d43d3711f -6d1e016f565af8f69bb8a09bd563d84e -6d22d052e545afa8b6aac07d626ea4f8 -6d2a9f073bd6bfa927885ee80466be80 -6d2d6f4309c21b5a5ca1be8971b0ba98 -6d2e403c78034ba6444718626b063ed0 -6d307b61c62020dd5a9f57679fa074f8 -6d315b858c9b1b383103d18e656f4775 -6d35814974dbd37c8ac2df2079d34fec -6d3643890eb6dc57883d777397423fb9 -6d368a4e7bb6a96fa1704be2f0f7e74d -6d3eb1d55fa3def926c79afc34e221e7 -6d3f9369dbcbbe6f833f09ec9df95831 -6d3fcba3bbfc06bb0caca79bdcd63c73 -6d430ad7452df6936f673b8114c177ec -6d434f160bd06a5adff0fb974bb91534 -6d440cf78846bbbd678f8654f383b137 -6d47bd32e6c42a59de10f887f4e154d7 -6d4fb46c50d81d28fe6ad005d3ed7af9 -6d5848e2ded712b097fecce3c66fb6c4 -6d590662963c421bd4d9dbc068c69e36 -6d5909c9f69f0fa88d619c5de182d879 -6d592f7f9ee35d056fb89399f605e380 -6d5a5ff71ce32deda32ae17d704923a0 -6d5e78acc718252d273e4c5b717bde82 -6d600fed0e5780a86828a569a395c5f0 -6d612f119504b16d83896a1911b5a538 -6d661a4cee4ff82a6cf95606b74288c8 -6d67879f36542b9928c70827761a9284 -6d6ab4cdd7e2858320840cd3234fbe43 -6d6b4099c9de2a4e02cad5d4fd2c795f -6d738938b3d69bb46af66d6971072004 -6d76550a7906bd33dc792bfdfad95d0a -6d767c03520ff13b11b5d18eef837bd0 -6d885a37c66a40487c1d0d9163a54e27 -6d8b1cf6206710541fe1b3bdeb5724e7 -6d92d48f4c3a62dfdf3b7f770d08da0a -6d93c745a45ef2d05a8dadfa6b0d0a61 -6d955034e0a39e50e549b1ed16f87152 -6d977162409b60814c07f59a78eab717 -6d9b9757acf5393b5d71eeb216b18f2c -6d9f1cc7c9822f773eb6968346bcb24c -6d9f89fe5f5e264e8806acade521645f -6d9fc3110c2cd8066b9dbbe5f867db68 -6d9fe655dcaef67d8c9e69b71b351c33 -6da2c728b45c2e8650f8754cdc3499ab -6da8e3b8f74cb4180fb87811f8903c86 -6da8e5b20841fa99968e217142c546e2 -6dac14668981f86ba45097b6fff07f3c -6dad596f31931958ebabd21e4f221332 -6daddbabb49772432c908cbc897f1078 -6db34839b877f069eea2b2010793d9fc -6dbda9432f7504b50fb2088ee034d968 -6dc1809170449a46c3016b8cee2beebe -6dc2d4a67c36a652c4d46f07be964aca -6dc37f14b78fcd2a0c6a51797482317f -6dc468b01d9151b4914037e5b2a4ef77 -6dc70e0b7a629636bdb288332ef62117 -6dcb042af1f3becafaae52f4c7eab416 -6dcc7c538b4f6bed902082e02f83d282 -6dcf2f384f0167bd509f81b0aab15915 -6dcff581d897f573f66ef72a25d80efc -6dd48cee40389af2315552f771c49ac6 -6dd5152951eacad6f4c704df8cf3efb8 -6dd70436550e94e9c287c42f87e34507 -6ddcfacc651045e99cc0f274fc679037 -6dddd7221d781f752cc696168bcacac4 -6dde6109edb758e38b94fd87e786dd5e -6deb5c904df3c8182c801a8b43470eb9 -6df1b29a4b86a83d665c157559ba9a39 -6df6ab5d1082483040cad79cbce540d1 -6df6ddd6b94af17fbce0d13407bde08f -6e06004f4964c65f4c74fad8beed6089 -6e104964226b337f12c137717e02a5e3 -6e112018c1d629b8b29ba40bbbbc12f1 -6e152a80dba19ab8e8eac0ffcd422054 -6e15ddaa0764200dc5a609fe115c5c2e -6e188b06f5dea26cefb8b3536bd70541 -6e1935be1a50248a64d285bc7f7b96f5 -6e1d1732a53d08176c872b323eba380f -6e1f015edd49e4d7b17515a7486f78c8 -6e1fc31b8c1d428da3fdea1ecaa81134 -6e2dfefcadf5183f280107ee3e180651 -6e2e3c5b826ec01fb05153aa18f5b97c -6e33d1e552350acf7eb551a75735d9df -6e365c759885c695b76f7bbd82cd566b -6e3b826641d16549056267586e95657f -6e3b8f73145e6a36a50f28addbf5cd41 -6e43a0f950cf67d1f17b339cd13234e1 -6e444d73ec1489bf3fac4a0d9fb41680 -6e45014d7ac243c1bb57886fef40a2de -6e4d71ad86721921608215f77741bcbe -6e4d89f7d6722d86cee6dc625b2d583a -6e54cf7b22f7f730caadf8a53a236db1 -6e5bbd88c608789b7802dbd3073ef03e -6e5eb13d4564bf66e3325356f307e7de -6e634138dec899ffe6229e2afa7f0fdb -6e643c9dcdca2cf14a7b222858fd27d5 -6e65f4022c5cee3d5e420348979e77f7 -6e67538f4108989e0f53b6b08371a40e -6e67b4fce9d834ed7a23401990413c18 -6e69f97a1a4127232fc4c9fde20eb0ee -6e6aa60e8912ec05d69013e9ee4f4ea5 -6e6dab4ee222474ce9620ac8ec1fb6d1 -6e6e60018417ff14809bf5a6a78a50fa -6e718019da7848b230037256cdb22bd4 -6e73a963a7e609fe0fde50aac48687ce -6e7473ddff2b36ad443557a68a30a20f -6e749a4466dbe912ec56b4b854fb553e -6e75b52b74a192f7a188d6bf07e882f9 -6e7802e78f7863938f69e0b693c588c4 -6e7e573c74884bd5550e1bde013a1d25 -6e7f3a53ab722699f7c7d39ccae8bb5a -6e8a32664f3e7ca4b5b852f61dbb75de -6e8e290c2b39b1b38cf0f185c6b42e84 -6e90e334d900d53f29fef6b92bcb259a -6e93968a0965a30ec02ba4a5a62d92be -6e95bf88d3c8172a73848047ae0cde77 -6e9732e9271ee71985b285186cccb580 -6e9add5c20e92429f89c9b57e42d166b -6e9cd155067e53932a2bfe86ab035baa -6ea151f9a8df0d85be5cd7bfe4e25c06 -6ea2906fb18c3535e4b77b486027e857 -6ea389636c611f76804f5afb19b214ae -6ea440957a656b9fc55a5aff56cd990c -6ea8438a823fde80de9373315ca22162 -6eac28b31d4789cb73daf2674b3c1227 -6eadc408501bdad7808fdde730871736 -6eaee8eee3bebe13c1688be8a00028ca -6eb052fa33808fe9b749590e8738bfcb -6eb2e7d676fa1126bd6604d2981289ba -6eb45226caf1b5a299f02afbe069e5a6 -6eb545bee01e2f04a40aa9b1287e30ab -6eb9c194b30456abfe25390a5b890c05 -6ebf7cdf54839242d71a0b84488f89a4 -6ec074343bb7983ad01d38c4eee734da -6ec64892e2fcbfd00c8298a5b14d285f -6eca5e0140b3585fffeebffc5b4d65b7 -6eccdf6669a156f63cafeba6a4038c38 -6ed743bb8135e90cc3b7157a4bdb17f8 -6ed96d4bf928fad2b6811ad330879d2a -6edac8bea4689142c93541469bdd6c38 -6edb2c310e7f6d6bf6b6f57e77b9ad9f -6edd1430019f7d759ceb72db9720368a -6ee13e3769cce68f742772612c11736d -6ee75b548682b182bbc2ab228b1c014c -6eec03906aae0ae3ea0b05a981255ee0 -6eedf6293039c8ae5b99f8b439ec5505 -6eef7eea5fda71323bf52c4412cd9057 -6ef3bde666d6be0be7638ebb7cbff32b -6ef4f6c00588421adcc1cc19c729cda0 -6ef6a28d8fc26286fe378aaf6e0cd73d -6f0072eda8804f26f4fe1a9f62b2c709 -6f065f30eb83550bf82220159df49182 -6f06ef9b48be8f296ece2c52f888db7a -6f071efe4f46a82c2906ce072c353b44 -6f092c305b789be568f99247ce7f3abb -6f0d224f35446e3ff34d8cf5045a9ac0 -6f0f6d2cf70b877c22496e40c28c64b4 -6f19d4fe0671c9aa0defacd9b6a20714 -6f19f11b3c726be22378861a97c648f4 -6f1cf1e6f4ea2509392e34cc1c0e1b91 -6f1fab48c3d6031aab5f6cdda5eec765 -6f2084c29cf1f9cc9d66fb406a0869ff -6f21c085649b355098e2991b77dc67e4 -6f2d4d29a280357eb38cfc913649416f -6f34411da54573a33f6797f38dec381c -6f34734994b2695389e3bbb13fb3de9b -6f4397ac333f113c6dd89b45f20f3054 -6f44397602357803081113dc23e2aa9f -6f4651b15377f0ee5fef353294885192 -6f49f00e4765ace0348d3140252a81df -6f4a879187fe9b776f360f3c4b9be632 -6f4c1ed5a0b60455b2167a49e4758c5b -6f4cb867fd2cc360cb99952d4fb9ae62 -6f4f8a58a7463ba1d60c88603d41d1dc -6f5ab6b24f202365f9c5e1abe67c4376 -6f603b51e015a20bf00a1e1f08d2bae3 -6f63211e3a26b73d2359d27f46ff58ca -6f659c7fcb862e7444d6136c23e07e07 -6f6cb491bccc7343dc60ff8513669d31 -6f6f959b1896d8c3b7f137621f02219b -6f704d46ac03be3258508f1c58fbabad -6f711c292c1e90440fbfe8c0b8695b80 -6f81d178c3a2d2f87c3fb422927eaae3 -6f842c1c2ef7ceed2e6e16153953668f -6f870212a109d84d3f147ede87d605c8 -6f8cce7239362d713fdf8dd058a712cb -6f8d2eafce61d71b48b3c089ff427f68 -6f95d9df9017b59386b5414e6e1335bb -6f966f906e8a6468e3b92ecd9293899c -6f9ca348533c0d41018464bd931012e2 -6f9dcbcbf17073b32ae49b72be6d17c1 -6fa088b9a43c3dc6a92f2d9420804fa9 -6fa675016aa3307e888eca5198f09a62 -6fa8ba9c0ff1d474bf71ef56431c775a -6fac69fc85008f3827f8b5cb2d1e4993 -6fac773ce4b888e86fc52652d9b561c7 -6fb04b5897fcc55f41a406f72d347af0 -6fb22a4c0a694c56453796cdfb1ddaf6 -6fb4c17a8aa687b22518fac921d4739a -6fb5389416cd4f45e2c921ae0c6e6495 -6fbe9d36867afb00edeab07b57f441e1 -6fc1f86d5182f2c023bf0cdec103e88f -6fc59556711d44501a82d4b14a07a863 -6fc68aebfaec81c5ccc397ee3cc9d745 -6fc80f4eef6574e0234dabf6e24a3df8 -6fc89438adce73675dfdfcd0d2b36e31 -6fc92a6bea027576445ef81938e8dec4 -6fca9889cf95770b83c7d5303d885781 -6fd0bd65726a4ce6eddbb6bcd6ee72e9 -6fd4ad771e21c2edf8a35e2459f51eb3 -6fd7d8664e4fc90bb8b1017291f63b85 -6fd9a3cdc4255aa6bb21143a15f4e08e -6fdb74b4c058c2e22c1ed00f4bc63719 -6fdbb5fb7b879b5ec803e45e521b0ab5 -6fe47fbc4119fd551fe482d02b1a0b21 -6fe75713549bf6823a8d53951fa84d8a -6fec2c0169c404aaee94efe33bbe709a -6ff7b465caa82f256292e260b2b5950e -6ffa4bc9e779feed145f71b857e647b4 -6ffb5f518d6c26cb6e43e5339cf197be -6ffbcbac22dc30d05e201c681fb206a8 -6ffd1e42a717b9691826d012d0677703 -6fff70d00ded4353883a3ac908ccf1f8 -700104cd34cac9ff93aed895691fe2d9 -700230e08cd0d54563c828e1125ebd32 -700665dd775157ae4b50c5a2eb379fc2 -7009853e9447c54c81b2b3b4061b2761 -701b474ef1dfc6e5b60fd416f19a1b42 -701d4ceebc77dd9dcf9bcfeaa8c3d9aa -701de78cb4abff6a1dd69157864a22da -701ef72e0160ca9a4efe923447e5c69a -701f839dc8d4eab864eb100feadce350 -7022b244e23a993d8725ea778a0498c4 -702673d1b2ce8127f371247280d4a899 -702884f588846cea9e4e44f350ead097 -7031b15143f93d0f82e83b20ae0b8d70 -7033899b62be00587c5032aba905f1f5 -703651288f4f1d754ecb20eca876f61f -703bd048e5b6d984edb8e25c1faffcc1 -703d92b7508e3bc61b58bfffdb226a89 -703dee7855fd99d4bbf48c928b0e0ed7 -703f8537c963cbe635b06cc9902c8e1d -704b5110042440d0ccc872d46d051c2f -705190bb8e769e7f453693f37696a9b9 -70587401136900e2f792481e211531d7 -705941aec673e91431d272f6608a84e4 -705e2d589355f3913101469e9408eb65 -706432f2554823bbe079e9564d5d215a -706c597ee2103585d6326b79fbc4d3bc -706e7706297136f3a2ce7e59da46f12e -7076ee89ba91b4b6ad08e301bc429c94 -70783d44ba7f85c37a0aa6c3f720dccb -707a107311012ad210f099515a24dbc3 -707c86bf03a5f916c2fe9f0effd658f5 -707d4a2cda3ad1f1f2427dde457644a7 -708751036798191c77ad9513700ff0ab -708d97e840f30190e2aed2c3ebd2cfdc -709500aab3bbdbd52f30937b43a5fe8f -7097a09f4522d1776c8197306e0b80bf -7099a174f4724670025ea3337a3e2b16 -709f858d31eec937b32eea775e60071c -709fba765d524b7335f085fc92156cdd -70a4333014bc14e74ca36830e4d2d765 -70a65f091aad0edce23f887a0dd377a8 -70a7f7b426729da0d06a7ed1a85d53a3 -70acb7f045cb0e67265e14ce399e4bb4 -70aec7a562a53a34bbef385e331577c7 -70af9d0a4e8f9afdc4e85f561cb2fb8b -70b0f8a5bea59ceefda2acc077b171d1 -70b3c3d69433a9c3a2aa8d2b7f1701dc -70b581ad089fdb8611b221bce136c7d1 -70b6ec7c726c17c15f83c4869befecbb -70b965b9e0cebf519e3c1b665543860d -70c77f897378a1c0d6dca67cadcb6b45 -70c89d91442438c59ef3823abe329147 -70cd29515981fe937289f7efd2b4a172 -70cda0ec549992322848971095f99a52 -70cdfdce881159f4bc101602fde9b547 -70e7de2331a28b10f294a60caa4c3448 -70e9f7964791be94566a9c3873140909 -70f288725dcd0520642bd2786b821068 -70f4b425c06ef63619bbd28b9f489145 -70fada3eb4a9ce17e4e16fe77cbea696 -70fb5bd77b55f223cd4ae7ac95b06b44 -7105cda114f00ca57742b006c28ed2c0 -71067f9b27c084fe0514fec1c56ec6e7 -71091a4bfe23b654e868c140eabcfd9a -710e978aace971454f39649e36b87f41 -7112adb8e2c6e470e54fe0bb1ff0e3cc -711ba8136fd9cd7d2e1c47d49475db49 -7120742d01f8273a3f49b70eec381e40 -7122650f9ccfa421004957c955c85285 -71253352244cd5442ec9bb74bddfca24 -712abc505a8acb4ebdb021f1e8b11ca7 -712f8bb544fd6478a6d2b8bbefad14c2 -712ffbd0b525b28755a5521a2fa7700d -7133fb60d4ea3f71cc9a9e13caf4bccb -71363cf501a89713297f1197f02a5a06 -713e4e57241efd1110268c0ab28885a2 -71425886d5fe44e61c7a3a078b796bab -7142aca64b0b9b4b10e4984738b2e033 -714896c3fd4610aa99f49d8909fa7dcb -7148a70524509dd2c3798ea06cb410f7 -714d6024e70f1d214baae779aa713681 -7151aa2035d8dffe075f41f144d0db00 -71523636678cf31483cdc6e96752bb5c -7153f43765e34a9d960766e6b7561908 -715587fcae15680b2eb08efd46efb6ed -7156ac186b05092d307ab1b30d0aa793 -71587fb4377b11fae5bf26043b65c178 -715c29bb042236779c4157f639238ad1 -715f0b0c40b783538e9dc79ff8062cff -7163263a4029716802c92db73e0c818a -716a8d2addac40455e1fee9110a15a36 -716ff5d0608d5e6f65a72f26515c18d7 -71757e38cc60efb13e48c1a9d4262dab -7177325a8f63b23e86b2f0226f3eb8ab -7179179034cfd1988e314d5a18e45b8e -7180f4e01b06297b2d7b75e1dcb4f6d8 -7182265c0a9e6d9ab1faa503c572f1dc -7184d341238a4d8f7d1e1668dc955beb -7184e2697d179adc102de4937bc21924 -7193b4c990cd0a595faec7180a77d49f -71967258f7a7ee27a2a91ef64866978c -719ada081ac1ff534728bbb5a8e78667 -719cc121301654fff82d807a6eb1f36a -719d4ddd91774551d4041d0a348b9551 -719df82bbaa486042444c3da55215c56 -71a559e5656a0a164e589956859376d9 -71aaf3d79f18467200768b036a5d6bb5 -71acde194713e2f8c2ed46c562caa21a -71ade3c1ea4a0604ef336e1180e83f72 -71bbcc4abcc6ae1d93a7a833bebc471c -71bc276b23f64d7407287e2a1f0f03ba -71bcb243af76f7410bc462b143ac80ad -71bda6f0b03a9e6d62909f1d035b13f1 -71be9d2a33d40cc5169d54842ef73d83 -71c31dc0510712d724ac329468808a34 -71d3c503bea1c983fd385e0f66288632 -71d4b403336be34c06a7dcbf0ad4c580 -71d692b27988e669966252f523319d1d -71da4a574aafaf02857da1a2b810b90b -71de8e555110e0587f17c9c719844537 -71e436fe5bfe338b68bc3ad35107d73f -71e5636bd122d8835258e7c0857deab1 -71e9810c8b14412404958ed5babbaf8d -71e9ba7cbeadf07bf553dc70c04a8a51 -71eaf7b59573f58461b0b6ccf66d4fc9 -71f04b9a9e5e11e84be9de1ec12a7a3d -71f08e2f92fd2817c7e73b255a5d8b32 -71f37d66cbb17372adedfb172ff8f7da -71f3c4a12f79031427072f607227b857 -71f4978cc2e697678c4d8465b65842e7 -71f7b2185478ee2e56c4717621ff8a0f -71fcd2da747752a10d0c0d6cd6cdbf37 -71fdab28bbaa97d38271099788bd68e7 -71ffd564f8381eed9eaee201e4585696 -72095f03d092efd945940c45f53b8fb5 -720a47281c1bf4c490ff1f1ff0cf75a8 -720bcd05d6528836d40940740add618b -720c0139e74dc2de830a2dc0535adfd5 -720dcc004955987cb5dbbd5808cba94b -720e0d545038ea2829901b4d44505b74 -72104996d8dd2d6b16cce92d9c4ee965 -7212e73103863a50cfe0c55ef09903d5 -7217fcfe34465d593e5223bd8d0be100 -721c3d75bc6e7eda26203d8698a5e6ed -721cd49d150b2510cdfa896b870bb39b -721f7f57c3ba681df8b9bbf92a77e4e9 -72238ccd26fa8c3e8673f87ed9a52527 -7224d22edb48239b13f299c63c9b3a0c -7227a4594193950ccc644bdbb9daf78c -7234e0826737360e571b032dbcfdee30 -7239711f21552939dd347b361579fd5a -7239dd2d8ffb75bcf4c89dfd2e18dfde -723fdbe07081e9f27207108622c7906a -7247d62f558f9ddb3f4dd65849d583d6 -724db74caeb815700356da12b11e2603 -72500ef0b832d582be9bfc030cc4aea8 -7250a2d23324aa79aaf9aa50f5e8b007 -72549e78cc3272047ec138a497f295b5 -72550b8c08f9841c683d50722f7de465 -72595e6d4ac3ff8455c9ed7033d687f6 -725ebb1e0073aacc8351ff8759cce795 -726218e8d813c4e44fcfd1745e53dd48 -726663fe880d0c649db0e57e6142d3c0 -726a6070a9e2de9c127c099b9234ce66 -726abdd30222012111bb9eefd27c516e -726b62e82cb6453e2e92986f3d0ee08f -726d3be11975be12af84e29ee168fc69 -7273b6a93c656916fbf2c81c15316084 -7274facd1e3976972335fa9f00095158 -7278d6db601e47f88336565a31541f3f -727a22289c6c0dbc42947dc8bdae5046 -727e5cfa41ffa1769bad138f1fe13657 -727f960338c66acc79bee16261455829 -72884502e9eff6d152a0788e16682f9e -728e919fcc4928423e254ebb9799f715 -7291db7d186189d1ef6fedd9fdc38d9a -72921d8e21dfb340670ad41a79e10b03 -7296962e5a4c2d6666e5b65cf0e287b5 -7297d02cff8046c86309f1b5ade7281c -7299dfefa310f9534a9f094c082d98d8 -729aeff05953e73a0aa8e55f43b1b714 -729bcbab40c67bf17cf79745e73da0e1 -729ded9ed3138284c76abbb7502bd901 -729f0cf1b2b7a57330993a3b0e6f7d95 -72a4dcf177cdc0a548d04734ae1617fc -72acffff520a019e47f64df0fbb44de5 -72ad9e3d2ba823b53d4d1fd4e2a5a4f0 -72ae5b89e436df42718959f911133d74 -72ba0619f2bc73258b1c2d99423f1630 -72bc732a19dd7a6077b124d88d0e24fa -72c7565d910534bb3357206a9282eefb -72cdab848d1fb830c9bd73d53543b91e -72ce4fba6b61a6c239c0d42385539c33 -72d3a0bb794f9ddd4ad170a9a78fc4f3 -72d731ed6fb3747db31bdf0291ffc307 -72da53d3b46194ccb93cb59f54d2c030 -72dfaa3e65588ec6ac213c27ac0a048b -72e14f9dd3fcaf2f11e00c91e755b55b -72e3f89f735b29a9214d149e2e95a147 -72e5027c97c04838dfd4b590e2ec0eac -72e52b46e69ae613c76492730ce3e383 -72e5360a8ec09995ca3c852e28d20eb6 -72ebf0f6c9b3d20bbac909d6a51e5cca -72ef6d704093efede380298eaf77a4c9 -72f788fbdf0d29a0ae4f55ada4fc03f6 -72f9c78646801d0df4cc6285aa5cbb33 -72fc2ed8d93a4c2c7a4d44a1013bcb42 -72fc9cfd4ad6445aee55c0cbd61380cc -730638e7691bf95638739ff9ba4f0c32 -7306d648e1e614d0e690f6267101b086 -730aeddae87985c3fe4c100d6f9cfa82 -730bd7a8d996e33e6182d4ef655e46f4 -7312950e52097750e7b672af8fb29823 -73166173b2a6eb77597e311e02ff7e2a -731d71656ccc03cf1ec8ecbc5d220c9b -73210cade78bccc828aac8e1a199b424 -7328d9f514f1de1b9aa49c264e207953 -732cce3aa1cde7a210a8db3a35657ed6 -7337358bc749e9af1c2b97bcd36a650c -73382b58a1cef711286464c280c3dd3c -733b387bec27066d35c6a6326b476ae2 -73486f212ceebb3a0fd3efd062ac2488 -734d2047805ffff4d8df2aa2365b61f2 -734dde6fd79bd8a577962e4f620d1e48 -73516ca9aa5c729a0b84c5b1cc096842 -73539c08377068322e1ddb8dcae92f59 -735828a815ada4ed36623e49d9e44275 -7359694fe045d782f5b5a54ad066a92c -735edf9a87c1c16d4ffe820c61886f37 -73603bab56b0188946e193934bc48e3b -736188a49cc96c1967af1598a6c694fa -7361e372ca679264d0d7c637b678f551 -73621e462ddb3deb864a17f8f192185d -736357d66940c2dd302c2ca992787ea1 -73745a54d4a424feb797fab8de627851 -737e663a3fcfd9ba751055e80a3280c8 -7383e0e501b513991ce21d82e37c008c -73850859bfd341e80c5182a26b1ee6be -7386dcfe66f95b17e33e091f8265998d -73873ad14e8366bfc7ff1e313396f85e -738a3a25ae500660150287e929fd71a1 -738b34cfffaaec1fbf09ca82e9f56eb1 -738c5bf18fe78f85bf1ff57d26dcb81d -7392143e9e2269e035fc28d89982cc8f -739472695488ab29d243d15b562610d2 -739712434749a89ccf38f2d4feecfc6d -739a0f912f3db4e7b9cca41a6c5298f5 -739b5a34d5848250c2642fd2a070c817 -739fe886398d3993d9362a07fdaad8f5 -73a72fbdd7b9b8f0d57b4de6d61e71b8 -73c11316cbc71f67980a577b288451ce -73c531113b3ae79a64575a7c46a6aa19 -73c686f8b4f9578fcc2eae89dfa414cc -73c854693644cd41694b5d55f8e5e052 -73c988b9581b6c5fb63926b708d2a293 -73caaaeaaa3635777cecb0484e67475d -73cd3a1131a26315d5185ced1fd1567e -73ceba479823363f7a72635c3af208fb -73d488e4eeaeaeec42ae85ea5149ec4f -73d76b1354a940341aeb0d36bdb107a7 -73d848d7b159fef2d942ea65a281c458 -73daca773cf9296cb48da9056bc096fc -73dd8f76e0fe8196e258fdaf0aa37ab2 -73df0da3461d00492b51687c0d382b8a -73e06d3d4207106c3fc881b1c834122b -73e699eef5feb47eedc89cccfaf123f9 -73e74501142e471610fd11d626945683 -73e8de6af8c58de2499f69d8a52879eb -73ee76325e7e66dbc823d4320684d0e7 -73f58a6462a419671da12dfa325166f0 -73fc418ebac9d06d37998d3ca11bd9ff -73fc523908a5f110b34ca01a29c45cfe -73ffe2144e5025b16ff89f1ac6e3d8fd -74013bf3bd7241b865453c11401186b8 -74025f5321d3f2b8860ada325a2bb6b7 -74047390fa03347b56ec7494f0445356 -74053086568d6ac6de72ca0bc654b034 -740ba4ae0e9cb19f5921be029c7d8d28 -740cda0bb05bd12fa841a6f9b98c1667 -7410734c59b85af83d0261ea6f97d11c -74111e6f648f7730df0da9445d0348fe -7411b8c5c4e77467eca34627196495b4 -7415b71dabd10766174f8848032804fa -74195194c65668c653e8843816caa48c -741e1421ba954713faa545e5fcfec20d -74205614b5645047b0df2d48d3b6e463 -74219b088ec2890a32eefd5175b1ae0a -742b4e6179edab9735f96a7ef3f58358 -7438884927aaf1face75bec79cecc002 -74407fd95cffcd910ab419e46a8cd210 -7441d18f02155dffaf74800141aa42dd -7441fed93afaec98d1a9c494d4904ec6 -74434e11445fed550864b86b1f25dac6 -74460f924a476dc8c371d10b0ef30e89 -7447e2f078c936ff451f1cae6ee4c5d6 -744a927c5f628c3f4bd0e4c8f0a00f1c -744ba0c389c58dc64a3f83ef913b32d4 -74508ee819e92408c97c92a17348a17b -745329558ccab9839b3a126e5303b519 -74565bb3131e9c108aa640eb4c84ce44 -7459e9572301cad87e35ebceea164d46 -745a41123def7ab24a30a4f87a1ab60b -745c51669ae05fa2e285e1f81d992523 -745f73174201a641a74751e119ed6f30 -7462750453934303132cd62ead51865b -7467ada3459d126e92f9e2d57e1075e5 -746f3572965fac5dc67507565a63e1f7 -746f58a34a5c43bb28b5673dbc5f9419 -746f8e48ce8bdba63a196afa4240ef25 -7471bbda83b7a0b53efc392765b19b39 -74782ecbb7dfacc4dd88533a6be54c56 -747b48cef9107e7a341d6d6b72316f1b -74850be58d8daafda6ee8fdf3d864734 -748735160895517fa79a565f4395ff21 -74955183cc05a53ddb0ff84e1b98416e -7496569e48dc3e578c1c9e165d6a129e -749bb3b1088d4f5b40865b3e7e5188a6 -749dbb1437e7e241e070236a12df4ddc -749f53d238991b7aca48ec664cd6f56a -74a205d80449516f33989b924bd080d4 -74a2a464ec4e50c2d24f79ce5486753b -74a2e6c29f5c426b2852bf4f5ab5876c -74a3257bf080920e94614f2bddf6dc9e -74a51e2c08838bf786ff0a4a1b631a5f -74a6149cfe776c091b7e6480f687b550 -74a6653a24167dd870a0a825d66cfab4 -74a884a56e94147fdf80bf0c28171a6c -74abaf9d0e59b9fb478576a5c140df25 -74b1ee20f7a8a5b86a03af43029f1045 -74b82548902d7b2e7d050221066869fd -74ba1a053251c09486f1e39a9ea44259 -74c087ac78640c919782870ae10c4184 -74cf24a925dbacbac5aa02288b90b907 -74cf4db424b1c00017a28ae1cc11ffa8 -74d085fac55dfec3c672e7c75fcdec96 -74d0d58ab7c8bfa4182846bd9431700a -74d1fa0e17c04403e12fabc2cb81a110 -74d6d7ddb327b2a408b81ea439850cf9 -74dc835bd5ab91ad948280e85a4c3a38 -74deede98ca8606028e83a4242074170 -74e118f76612c372d01b6e2c3dcec774 -74ea584903f5face0ed8055f27dbee8b -74ee4ebebb761a2190c8701e9819d84d -74efcb4a0d188cf1d16d9b68d5c4a1d4 -74f18374515f699559876f76aaf0f0d4 -74f243a168cff3c163cbc4dd9ed2d739 -74f70ed34dbd61ff55ea75b6b8b2f219 -74f7f489c15494eddf736e8b360c1d76 -7500a349828fa323e5341dde55f93502 -750188bb2b5acb75aec33dcd44da2e03 -7501f7bee27212c6cdc20eacdae53612 -7509f2219e42b9e0d42621683e09350d -750a70e327e769a9dc31686a9073cb6b -751164187f6f0d850f4e5af4168fdb5d -7514345ff4f7746f7fef1c158c58a888 -7514876a15c4d949de5bb738c0f5bde6 -75151762895f5afbb598f406d5de78ea -751ce5384e4e3b5a76cf398e4d6dc527 -751ebc258931754e3660666ad2fb1011 -751f1dec5d5d1b4dec62c972b9b37960 -751f31d4152c3472d275cc5acaa24bbc -75223b15ec0bbde4410ecad4e756f196 -752364e560021d8166da2a18a532b98d -7525d4deb95ad651fc5231e338ff8a59 -752ec87ab4834fe2d143d254e1a8cbb1 -7530d73a182730e5ab7ea73fccbf9f26 -7531b84d1ad4201c9d7167c6bc2f6944 -75328cd04be0b83f68c1609d134206a8 -75392f32d496cc16903b15950212b912 -7539dd3fd7f256fd9d902fd12d29913c -753a39a805bfd23b0d22a0601f32c7e7 -753d2a29a418ec810d537de01ac0e3e2 -753f823c37947f2a4d04a0b757f67d73 -75427a8de2c3207430ccb38a9aa732a3 -7546baaaf0d203b70022bb2d3a2ecf17 -75495dfe95d1a8b0707ab4bf420e77a9 -755404bef5ae044ffd724b84d6a35ef9 -75552b80ab6ca4b8427270114b721d66 -7557002cff43b7523a66f5f69a0f2927 -755915a7a6af1ea5c60286d4d39b5cb1 -755b9ff3a8b5b791e83541482a825c9c -755c69222245b9b6f158f514a93a34f7 -7560100107cd39300a037634781e6230 -75610fa24304cd15d1f11dfe7d2dc2d3 -756141351c01ca7c52c800073f7c691a -75657eae2727d6cf4dc34497389d74d4 -7569231f554893672392b72b0189e615 -756ad34f64ca92ae1186bc2dd37f1634 -756cd6ff439c490a164db526800cf6ec -75735d793341ee9ac6cb0619f0fd8083 -7574bdca17dc11d00f2f3246d3aa1b8d -757a65d5efaaa42468f02df51fdfc9a6 -757ae7ca6517416abd02b50c0bd12383 -7582020cd38daedb4a92613277427bcf -75862842c95b9f534bb90b45d71ed95a -75965f3c30417806d1def37cfb0cb3f4 -759d84995be28da19874be9662ebb320 -75a47049266ff01a2a79fd4e9ffdf987 -75aac3311bd5fdc8666024407f3403d7 -75b42d7a2e160cb2c92b1054eb8f3986 -75b519fc70615de7a1e3a634af6bd6bb -75b7f9dde35ab9c5328980525e6eb354 -75b9430e87638fe94802cfc968b50278 -75bb54960ba8ad5e6ee95f23e7d3bb9b -75be80714a7defbdda296b6c06e37fc6 -75bec2bfbe507095a4eee1d3092eb20a -75c82f3a9f2c3cda3bb20fc059752d57 -75ca77c3ea1207b79b8d678fc73bb1c7 -75cb7d1b8c9a2742595c4b96edcbbe0d -75cbbfb6081af3dd71b3325fc5d40aef -75cbfa258cafeb7738bd3a5a2e51ff0a -75ce3e7420b0a03838ae58527a92bcfc -75ce461672f7ffc5c366b545712c4eab -75d2de5347813c3229faa49baee5177f -75d7ec5211a938f0a072f6ce0b4684b6 -75d806cc7e21c1147c59211d254368ba -75e150259383e0692f30eb4f306facfd -75e4ebdd392c262f786e465390d8553a -75e8b8b65db55a1bad9c0f6598acd5e3 -75e8e9c96e84b6b5706c0b106f707c0a -75e9f346acfddb030dded13f8052febd -75ea88592f7586bbbc2778164e6c6d98 -75eae2100b15db737369ed4168cecdfd -75ec5bcc7162dcbc9b6f9dc04dbe494a -75ef31d6d1e7e57f05969dd1a5dc07b3 -75f5d8f6e18651a54575d7acc19ba59c -75f6e7e0f401d311e9b21cdd86a1560d -75fa872f3e9531ef2d0b8d765974b89d -75fff04ce1ebeed5d16530e670db268c -7607bc98b05f11ed9d8a7f7b46c828dd -76080fd492ab84d5d1d6ce0ee076411f -76127bbc793ba33321fe5ed0b319b696 -761463c5849217e1f8e726637a7c22a8 -76169d3eb05573dd3cd8498bea6f549d -76198249db02529642f053524b4e6470 -7619d835c00c38d2e7adc0cdd64c2fc3 -761a27089e07282c78943359968eeabe -761fac49aa7858693deeac7b58cb7578 -761fd62fda83a37f5debbe56d6877518 -76252a7f3c118d21d1934f9076681dbb -76290e531f28f9ffd668f27db3187991 -762b055b60a9af079841ea320c28a4b7 -762c800b0beedc00ad25bb08ae2d727d -7634306022d07c06ab4cd0ffed70c511 -76365401ec0a14cfe5d430167e60f793 -763696ee1beaa32cd87d51434cbedb14 -76403d1a0f70294889aa021e57796d6c -76451c5e0156643431767fe64113f16b -764f18fa1c26e6368ccbe276d7040aa3 -764f5901b9db7cdcc7d5932b6d8c25b0 -7659f5dd277732db2226727790c1de92 -765f2d1848f5f9d3c8ed63f4618ca0a6 -76607325dbc512bae1ec9ff6e926b517 -7663838ed1f33994892d4d41079aed2c -76638822d2c4b1d5860e1081467ef8dc -7663b314d42bf94446f2b16be21b9aa6 -76665ad9933d5c24f18ea1785451c02d -7666c7c68e986e2ecaa651b215337530 -7671a3ab2381a854543f8225ecfb3773 -7672e8d96e407cc7064185d7c66fc0a6 -7676944a513dfeed2e6b49dfdd17b87b -767a8c7fae5cd15b20605a3cd0331384 -767c58b67157ee3a0f3e1604353dc5e7 -76806a0a4c81a8ef2cdee6f41856d05f -76815e64e14401342b1e852d09a4cb1b -7681bdef2fb9db4897fc8724b9d98011 -7681dc7b224711b961a5293c3f8fb659 -768328413075628d8b02697e91f2c294 -76843b7789b2699fa62e06d86e345b97 -7685b53ff4cbd20d3933f055c6db2421 -768899e1c070ba8564cc45d595acf897 -768abe1f43fe2c55f67f1142d2e36783 -768dc8863736bb679c9a35700fe3014b -7695790b05e4250102672cf12803c31f -769907303ba1e0fe4c635df229b7268a -769c93fef22d7012bcfe7af18219ccba -769ddb3f8468eb58b51fba48a1361452 -769de489f672e94fd65bf70fdebfa4c7 -769f22724f1b241bec30e6b0ed55baf4 -76a0a218486a26d486aca6e5e450b081 -76a14cc3380a0a7f048b3a244a5537e9 -76a2cf20ae22842cac67c2b84f692380 -76aaea8d7257ee97823d35e0d0ade2d0 -76ad9bef19347cec3ef2dc3e110e5143 -76b0626f431403ca303e93d94e9b49b5 -76b14ee0e0c76d2487b169724f518799 -76b4cf96cf96ede42de839f3791488b2 -76b89820dc7952e7f29e56ac01f48eed -76b9a575bb22e3ec17ba9b7e1bd55f8e -76bad596317167e08fc2e1048dea78f5 -76be668f145191fdfa9e06916a5a1340 -76c0e74218f5c6754441c1cce3e615f8 -76cbdc430a426f803fcdf9551d56c921 -76cdacaae25015bbe5abc9cbd43a088c -76d5c6c531701a13d6b4277c88615993 -76d74d0bf8c68c59fda46c19a53195f2 -76d8dfa48ceef3637cf85192089dfd2b -76dfc4c9d20c0072426f74c3720c9643 -76e2da5790b186836eb26cc8ce76ce44 -76e3bdb1bd438051b5c056b2a37ad0b9 -76e51c441979c9c99fcf7e5fe0e1ad1e -76e6d0079230786b2c82cfdbdb9d5f5d -76e92715bc6377df686d4160cd7e0e45 -76ea3a92e2b6a517dc236eff17a3acf7 -76ee85a4a08602abebeea642b9f8d08f -76efd1fd4965378a43b49c44111d7517 -76f1a068de3cbd433dae7146775b6986 -76f1c5f700dd6f573b5757481381e50f -76f45dd6601a146125b0db0d5497b1cc -76f5a4673b7d0198a5b7964112fb4ad5 -77090bd1f6939aeff93b51f948445d63 -770b7a9e7eb98ae9c543b142cfd8c689 -770f76b682f2e28e36324c643fac7037 -770fe70918365484598c9473159ec936 -7710054c0952c134de1c5cfc466f8040 -7712a75943c6cd478273cba5b1af6c9e -771ef84bcbbefb37d2675e2b2551a827 -7721828fbeb58200a7e78a17ae84a385 -77230595b9d4b322d0c4ad42ada9cbe9 -77242905de27494e6484fd6e2a185a6e -7725b66ecbec3b14a10e084475d64492 -772977d188e0f158d4532028d9d2ec08 -772cc1843ac897dfd5900c4861c13515 -772f34a6c476709667030675dad36612 -772f66885643a7c740fbad203f8472fd -772facc40cec5cac294221142eb0a58b -7733112961d338d3c2b3b34b249b6c54 -77346d7992de3a34ba4f0f6b78bef2e2 -773a4d4fa7f45e84211ee089f04ef4b8 -773c1924ba24ca13864d0387bf4bc81a -773c9f893e584c4233beafd378e39e53 -773f433d7ce0dcde71061392d0f7eac5 -7744eb8220e15e44564e8af2592b457c -774d39c4a72ee97ce95ddf14d2ffacfd -774e9f0f22e9e47072d4f02de2eafc3f -7753fe5b0a70dbd0b36e95e90faebcfe -775841e8fcacbecee5ea87141d64daeb -775a0a414a216d19e4a012f8ec373375 -775dcaadc3fa1c4ae5d5bd9373955b8a -77642c224df5fc38ce02c37af4fe413c -7768a32007279e2387090c589197c0be -7769c7739ecfb255213dcaa3bb84f341 -7770fe7ef3cc7f2661943e1c1bcf30dc -7772104b6a48d0a964eab08c35b1e4a4 -7772c256dbb31f6e8f818dc09bcf1c8b -7772db192e29a0f36e81a7ee1f866fa4 -7777ff7c9ece94b24c685daf078827fb -777a362eea1fdfb519f75526bdf30286 -777cd5abdc2a3b019b3a738008b201f9 -7782e41382ad913d475485f23556b6df -77892af404fef357f6d8878e347d4727 -778a71e473d16775ec4927ce105bd0d7 -7790496093b4930a630013e37c2f803f -7793c6dd52b1cd8a5a6c2caa2bcc242a -7793df234875a1e21bb714f3af77e785 -7796026eb6b1723a5934dacc196c3d08 -779732893f44dccc0b0b690a16b4b89b -779cb8f0ab0c0bfead50768f964726d1 -779fc40403e245bbfcd74acd87188830 -77a575ba2c666c3e3382d701d4a8b033 -77a64962849888d261c5fa0a9836d429 -77a67fa5e7bd04b2ca5abe945b7dae62 -77a9e1612cd750b41fa61757d4d68877 -77ab3909ff000c34841dd3e68506f4d7 -77add3acb7f64c01d708ecc9dc8c982c -77b4141bb2889a7a3950d5dbd344a4cb -77bd0cfa9deecfb90dcbbb3b9b76434a -77c52f354b2202a8f94c5b2a03788801 -77d03d27b69f931b23a49d2f4ac51aec -77d22316bf50a026848dfc7d7d9c9bbb -77d864488d7a67a53dc31bcad4dee0c9 -77dbcfb99636aec99c57d70fee8f05e2 -77dda55b96f8ededd8363bba6dd75378 -77e822b8495472ccc3d78a6aa96db11a -77e9446da16d0c0aadd9f254865c046c -77ec2a2613a13b96aad36469eada6642 -77ecac06725763f86a0cd6cb0a45732f -77eea7fefb7a336a059b74f6848de4b1 -77f29fa42e74b78abffb0585ced007fb -77fee2fd1a000fa4186186bf989e026e -7800ad2d7f8650131f4da8ce00b55d59 -7807e5de395f9262a40d85a284b25759 -7808662175d47e184382a36a20269865 -780d1eb461415bbf30520179f459a2e4 -780e625e9dbdc2dc0cdd92a93670cc67 -78113b832e0b372a15c9cda136011556 -78113f4e4b795c037102f1522249fb9b -7813454108d5aa6af2a0a3683cee9058 -78137ddcac84db12d14a7acbdd0ad3d5 -781404638d20881c3ef229abf5be3b05 -78140d4ca8e381d62aad26ddfb053b4a -78145389e84d57cb543ba6925ed2fe5d -781ad461c81faa2deb8cb45f8ea3c867 -781b0fe1fe8a7825cdfcbe6fb3c6371e -781db07c11c6461fb96e8cf9fdff003f -782ae383ededb9be3da7c5027292f39d -782b8a4c4ccdcd8dde1d1c4fcf0fb201 -782bf247450224831354cf237c56c61e -782f70c80e5f626d8de0dfb412f143a5 -7832af596f83fad1136a93270743f86c -78366cad4903755ddce9548e7243ace6 -7836dccb458eb54550a4d1526a9fd9f5 -783fd5b7f67dd4b7332a06b05896a428 -78417b6b569524bbce94fdfcdd57aaaa -784294e2aa48b75df41908bffc5dfff8 -7847759b14cfc2545e295ad5b4fd248e -7847d20db0bceb94f93f0e87ba96fdc4 -784bfeed8e304866fc2fc880c37b6c2d -784e9bfecb110f4286af23a4ad9ab216 -784ed53fa39f1b8b234fbd5f125af206 -78517d982ee511293bb9e5593f7da641 -7854aff7d68d4a5aac52edbd496cfd8f -7855ababe4ee7a53f8806835236a7b77 -78566f74caad6f98d450b6e7134b9e7a -786160cec04aa80fa94a66133a97c64a -786410752874111937bfc838dc79ce9e -78659d86858c7e53075cdfb3ed406961 -7866670e83fb8dff959db686c1ad127c -786ab8e14f55a058057e39b9aef3c966 -7870b85ce4f5c3028cac7e5aea212e70 -7874c378896ff89ae7508d2b47639e81 -7876f7d4dd09db3b05e67db2acae5201 -7881f34a7f3ec531d7fdb3b998839879 -7884c67ab833bfa586f5a1be415f2d38 -7889b11d99a431bdb7ce64a5571e07dc -788a131a4603338ffd99640c8ed08919 -788fe445dc84f29005b979119e27eae0 -7890fe391aa76434fd6a6c7391c25547 -78938a2f96ad676ae0b8539335e12c7c -789a15f55d5c2b97b1ba91bfd896ec29 -789fce2588a968105e9e7b13b2d8e70e -78a603eb2dd3dd74443b6c3b1bb072f9 -78a6a87c9cbc6860b190e598ab664aef -78aa575cd9fe47a113af8a90d7be7bb9 -78ab42972d6f7d257f439897e578ed24 -78b19fe363fca6bc231193433a12fd87 -78b380a12b780f06e095d530aab9fac9 -78c32e40640983060643cfd91f4c397a -78c7060f45e5832cf505347745e5b10a -78c7c5866e70153cca255926573694c0 -78cd69fcb425bad9c619109b96701f50 -78ce5ad040e06c58cde4de011db7552a -78d71394173aedd8e4eeaca35e9e6a3b -78dd6b5cc16b32382a3a6a2ca0a8accf -78dde448e653e6302809233ec0cb19d6 -78dee1311798c407fe985ca8ad4afe92 -78dfbfced373358f7b4f536a85a13d04 -78e2a6946a6551139a899f159d027d24 -78e30137b2326e5f91150384337ff244 -78e33cea9b0db36c547b222eaf8a3166 -78e537acba0f11fdec830debd60af15c -78eae6dd862bf0ded8533939627d2846 -78f6d313b33098cb63adbffd942c2692 -78f749dbb9635b61d95fd77c654f09e1 -7902738cb2a6f3cb3d2b64307e5b0011 -7906495a15f82da59bfa79e1536e4457 -7908308be97505001c69f5c36dda1592 -790b72790dd5d508a42139b622912edc -790f205af1a17dc5b7cdc3ecb997409e -79100b0cd76ab98535b7fed80637915a -7913cd130e18265104f42fe4d4b9c0ba -791c3f7336370fb275c23c11fac74177 -791e5d1ad53ed4a0e553f9e227af4ac5 -792048a14a704532bca033f1ffd0cbb0 -79228a653e7db9d6e5880cb49774518b -792640c94dc6d8a13b70af1b22a3e88c -7928632cabeba99de781f50ae909e9c8 -7928f8035489a286786827acabb980d6 -792af3274226bf6af644444b0e32e5a5 -792dd46c1bd8242a732466d08d001cf3 -7932881255e53f2d97fadf8a679bc436 -7938db6334ed508b5d1c2ce4e356ce9e -793a336ec08a6fb33e5e6d712cbe967a -793e3eebef674892c21446b86a9a542f -793f8ce4fd2fbbeb14f60f3e27ccb17a -79402cf46662414dc8692b6582333bda -79414a40fdf28450fe63eba10bbea9f7 -7942d3107945a73c384dad5bea211654 -794626e1916ee496a6785c39d4071fcd -794ada5158ac22f55019b991ffaa4386 -794c202c3b281be505998080bc7192ab -79514b72447649610db18e0aaeb53dbe -7963f8b70128fc1d4e12caed03640bd7 -796491e43f8aff2fff0790dce552875b -7972f670ac1f6ee26d313be2db065f0f -797987c43e057f0aa673cff76d3b1d4a -7981087e629805464fc0040cb9a48c60 -79856a34ceec23e8b9de1ddc1ffcbfad -798e5ae737c3e8b7840f5a0775d06277 -799134560e8f36424cd7e806052b8e41 -79933e97a568811149beda08c6992bab -79941d9494aabc0cac79f17c27936fec -7998832a321e24c9be118c333f4113a7 -799b49a3e88e929c227d723bff6f34b1 -799f27b344a4da49a474360085974c33 -79a1be17f5491ea6e95f6a3c16bee3c4 -79a49ffb6a0b36804fc9c4abd66b76fa -79b0a04b81b757a41ae8515e0e39a89b -79b36e4458c293a6bf93e7f6e8c59184 -79bceb123904d4b578b475c3694293f4 -79be487850dd3847acd02b450b2c5fdc -79c656c62c3385e06cd08e8208837da9 -79c754b5526334aaa95ab1d034110eab -79c8815548e52747dc904dd6b7bdb336 -79c9ba5237eec035f48f5a3241bf6aa8 -79cc5850b3f222816c9a760fc7aa7948 -79cfdb9408fea80210183c8d4d97504a -79d3e41597266298071355e8949c46ee -79d5a4fc7abed3fbbd89f316ef4a7029 -79d64eaab1f5ee502b4bb0305100cacc -79df27edc8416cea8329d062cb7be46d -79df41dfcd5464bf21f0adadf059b9a1 -79e9bebfd77ebb821f95cc9d32e77fd4 -79ec002f8b71e3a3d3157aafde4c07bb -79ee162c6849fe512833ae10893aec5f -79f29021a26b1945b054da5fcd6fce94 -79f8a41600be68ffe89fa83b5075e602 -79fbbc22e665960207b2ca0464bdcb2f -79ffad0d06b1044587297400b2d6fbd1 -7a004af390ce64b63708dfa65afe6e20 -7a02fdb9378507296a6698e106d1274c -7a039eba46d05336b1d79c8f145013bb -7a07235e7cff1c4a248209638bff4d82 -7a094a17dc374d06f822e101511af3b1 -7a0a804bc8b86d17576ef5cffc66e1b0 -7a0edaaf0d3a3074e3113632181b5114 -7a17bfda27edd8e02062ef17d85ddbfa -7a1b5d1422f23b733f55bf2ec9f20380 -7a1ce4ea19139a68f6831c9141e2c63d -7a274b1de6376678618d85ac15f33c0a -7a2a702168c7c08ea4319d1631508ba5 -7a2daf3c3413bd1d910e92f5e7b6e651 -7a2e49987bc4eacb879b692f70bbe5d3 -7a2fa297f6f748face2ceac77814c5b0 -7a31ec289b5e6a3e15b7cccbb7d44f2c -7a33dc7bab012c5b51aeab2fddbd7d5a -7a34964d0397ee6bc784a736f1a2c569 -7a358636acb27d54e77d7e2c6176abaf -7a36d81e2c8f7b96de864a8bec1ae8f9 -7a393a97efbd32cb13707a9b32cbcb3d -7a42ef1eb19b571a47dc201ca8519317 -7a434519c78d96a1f82ae6cd1f824b19 -7a45f297a70a14d867c3d9eb310c4b41 -7a48cf7cac8790f6d4866ae9cec8eaa6 -7a517170207cd79277721642da9713b8 -7a562dd0744ec0f5e6dc3e08122806c7 -7a5dfad120e9eb6072f8f1f1fe04f80c -7a5ffdfafc23325153586b30be1238d7 -7a6132f884a1649afe0d9855ce5fb870 -7a61f7246f61f67ed607e9e67d1b6c7a -7a66724fb2ca613c78600f7347c8605d -7a66c91676a8eb8e13a28c4568dcb4fb -7a702c4e220a31e64aa8065bb389723f -7a716dd22dafa16c61a1b5632ac982f2 -7a720f93c16eedfc776315ddf5b825a7 -7a7776ef60b6cf8eafafe0b61e1ee2c3 -7a777856ec85c0a15186c3d31255898e -7a8585ed135f3233e7e59cad6e9f7174 -7a882b4e95e352dca2e595b76bdd2d60 -7a9164a21bba9867f4fec396eaa8f481 -7a9332dce5dffd6309ea9c061ec28cf6 -7a944ee4a0f2261ded7b68cb97059111 -7aa3a70a28d936d666d2eb3cbe2281ab -7aa45d9d7c325b8dc1545762eadc1074 -7aa491075903c739890aa9a3f35b4901 -7aa6a820754ae75a15b6750cd57e778a -7aabad2470955c493f8e23931412ce81 -7aaf11e04738066d17fbc953ee472b84 -7abca3f5e7219532aca6ba989662c01c -7abce6942a690846d153abd9b8679c45 -7abf8f8e6ffbd0dd807b7d97185a2524 -7ac071d80c5d733e5fd02215777ca92b -7ac3e6a92877ad59d5baf53de27a1ace -7ad0d488837f31bd9df4b22d41a1629e -7ad339a8f1d527be4bc8c34ad6e2a389 -7ad48c8ef3953f39a853472f8043f5d5 -7add00236520952f7368d976ebb08473 -7ae36a06049dd5a66d96e41cd71e5b86 -7ae771e1e789cba22a034b16daffa4bc -7ae7cd57564e22b6c6479c3bf564b5ee -7ae8a46c1ae80a7e94030af67706341b -7ae9c1fb7760c61648983389fc2a5389 -7aec11a0ce5c9ad10ef16c92786c32c3 -7aed2b672938c1a4308b235be468da6d -7aeebb22769a63dea80368fb1563c123 -7af3cb643b72f45870ac32a53bd3450f -7af7dcb71f74734be0ea396a2c436000 -7af8e49cba8d2a7ea9fe5160aa9d43cb -7afd50ba03ba3ff3e574554e15f25874 -7b0140b840ba6107bf1ffb314c9eae61 -7b03b578854f6bedf80864c770ae5f06 -7b05f3e6e9785cbe01c653dfb28e21e8 -7b062da8fd54c145d543f36056b0095c -7b07f52bdabda0638cb86530184c1f32 -7b097737166e18fa941adaace7f3d86f -7b0c892896c3f7354788408e8a2a455d -7b0d03a6242fa31a6af47ce5f76362ee -7b125f115cd9033bbf256677634a5c58 -7b14594e92d6f013629df4c096758185 -7b154424762ba40d24eeaffa7cb39f81 -7b16073353dbdcf6c9c368afa26df89b -7b163de3a892186a19f346a203d97569 -7b1ad49d27c68492bd4fb6c46178873e -7b1af317dbcfbd5b9d816982b812f293 -7b225685ee3edf502656f09256a2c6c2 -7b2a71b71cc477358c4cc14a1b073b9e -7b2c349e4f5bb7f5f49d8298e0fde4a1 -7b309fad7ccd301c55f2ef4914d435c4 -7b32679236eaf0febd2001680560c380 -7b32f2d8035c00b6edcced99a87ef1f3 -7b3588f0d983994e25688b44b795bf26 -7b376e4b73ad005bf992821210ef9099 -7b3b672ab3ea1b3e46e23e45e31a9401 -7b429043f2415a0b44731f5641504b4d -7b442b1334b98ea3e5f41168b4ff558c -7b45b0d6b2d377faa7e655bfb2ece735 -7b4bbcfdc3755f28f9229329db17a64d -7b4c032297a2f667458eb1b3be140cc5 -7b51e23bd19e15d7cf0369e332c5779a -7b591562e5643c11fd5aa92b7b2802de -7b63cc9360fd77b94c7e47e7ba1ae88f -7b659477c07ea8b3d50891531cb2e160 -7b6967cfc8216033b768fef9e11dea1c -7b6e2752c5fa7626405ad9123b760791 -7b7595e06263fd7f46c2351c3b9f0dd2 -7b784bbd7df9f42031f2576a0d7c6bdc -7b78dc578a5d348cac131ad88a88cef2 -7b7b90bce583eb5eb18aeb08d80ff7c4 -7b7d6e7858c8cabb93c911a5d5558c31 -7b7ee48ab2fd9f0cd1587386b30fbc2d -7b7f950034c825544a6df2cd3c0f64ff -7b8947446b06facfb6a4c342815edd31 -7b8a920f0fb3536848eb0359f5b7fb05 -7b8c76094226a32f3d8d77bb4c763f96 -7b8d74175d798b077a60e7bffcb88335 -7b93dc69018654419ae0b8f593251ff4 -7b9437693827f8525f86b200c15b7884 -7b96005cbfdd5aebce53bd016d04f563 -7b96b7f1c5649bf66bf90255e5bebbfa -7b97fc8d9b6322fe4b56799113739e92 -7b99b23d805faa9ef0d9fefa6c279ee8 -7b9c965f70072c2e34f4cd10fa8cc870 -7b9ce25e110114626d5719d54b8deef9 -7ba28a6465643b9262e97cbe00a1f1c5 -7ba55fa28b4b8ad8effe6f640b1a5f78 -7ba5b52ef1a4554d4f7b281ccab01cc3 -7ba871d7091d7a7d4afde47fe1cbb3d1 -7baa1392e03609803bbea9e5659d1f16 -7bafd06d0683260752ecdeb94670bcea -7bb291674decacd000625ffcc48cf248 -7bb7a9ab80188fe578b52da652fbc10e -7bb7ed26306844cf7c71faf4b6a08e70 -7bba98445b4cff38363c571d52f1b7d7 -7bbc27e30756e1599cbfddbcc7529e9a -7bc12880e5048de6c5498fb0bb1946ff -7bc42e5ca48131026fb03cc3810a18b9 -7bc4316933330f0864d8591a16b426ab -7bc50f19180ed63af24c5835ef97af01 -7bc74d8c9c00e0d578b991f703b8cc26 -7bc7c3f0203cdaf7c47497e85bdcc712 -7bc829b152278e605ff72fce4b18a517 -7bcf102f9bbc2c58af72e17c1cc6ca45 -7bd10ad41b4cf1d91a60962106b20eb4 -7bd164bef2c79504eac96acc9e79f100 -7bdafb9052367820ba0ee8c1639e5872 -7bdc2d2e5935fc3c90568c47ddfb6824 -7bddacc332dcae08800e935ed93d6ab8 -7be29eb361348f8e9fe2d74ca12b1a87 -7bed540e84c95adda43e0a2a999ef46d -7beda83cd9f60c29309413de97febf2c -7bee3a15eec6e35c4baff618938e69a8 -7bf0151cdd7cab73fa668de92ec9e9c5 -7bfa4fcb9600173768b0558e0fa37825 -7bfe072992413425f3bffe156cf3423e -7c06b15ec83048e9c75959461c70eced -7c10c174d8e5e803bf0d3acc53f04da5 -7c117e7f592496e55accdc82ba5bba4e -7c14761adf0debfee72045a27a766014 -7c14e0cb788b270338323a30b8356299 -7c152523e1bb7fb4784a8cfa750943f0 -7c16975b5d6b28c8a70f8d854cc60eb9 -7c1b3182277453cbee001f1c62e9c475 -7c2004ecac7364540b93297722915718 -7c24a5b6980018539b8769cc1b438637 -7c2c187d5fcb80c6467f8bc453dab631 -7c2c3d69010499ab56b2af4564737440 -7c2ed7dd1602af288bc67ce15cf27687 -7c2f8ed908a6a029dc87030b3fbbf270 -7c2fb12104a46ffcf6ef034bf3a17567 -7c3892e100e9bbde041e9642d433946e -7c4550174044ee51063c779668e4ff7a -7c51f03d368f03528840e3eded391048 -7c52a4006c7de6529ce8b898588be3fc -7c564047bd2be2a3db474137963e1f6f -7c6432951d9287ffaa6cb0be0a896cb7 -7c662c0887ef4a241004c5c5cd5fecaf -7c6855910d0f8e7f702b9ee862ee36a0 -7c69a0aac1e6b3ca1b834aa323221321 -7c6da461ddd27a50abac5a3fa7ce96c3 -7c7b38b7f361ef51683a941e3ac74d2d -7c7c3c60f3c1897bc794b203e6c07935 -7c7d001878667bd79f8f81ff4588db90 -7c7fcef28987003728041a594e1ece1c -7c96c7690a584708786b4cd7b246f2a5 -7c988c91bcc26c5b00eecc8aef20604a -7c99794e6dc7605432ea069258bf0fec -7ca2c00d52d7dc9473d7713047fd4598 -7ca496c4a3bc4f12e5470628cadac3cd -7ca52c312e805ad0d040d6fbb9c6dbf5 -7ca5efc650bbad0b0f0a1cb829a10baa -7ca6b0af93757a202cf7a2d00dc8569f -7ca929c64c3bba0a7e75a019a151056a -7cab085bace31474a39a2050a4e74309 -7cabfe9028a3c22ba123d0e785ee66f9 -7cb032739821c811bf2d022c3b70b4b2 -7cb11dcf8c68d1d4f7a0c270363980a6 -7cb2eec90180c45b6fb351dfbc83647a -7cb50fd5a29bd72888ffa4711bdb5ad8 -7cba4bc14fefcc7ecef1e49cc69d514d -7cc6e45c91c27141c61ce99fb9a78327 -7ccdb37b8605c5003a751dc0b4599b2b -7cd8cbec3f0c9cc65b201f01f0de0116 -7ce011b5f3d631a8852a87a52580aeaf -7ce35ed02846eccce84427996ea78a9d -7ce8dcf826f5226505119a99cbe40616 -7ce8e3aaca7ad81063409a211e3f24a7 -7cea304541f21678df76a9f17cccfc0c -7ceb6e865a71388462d2c3847f611a7e -7cf5011a114cbcf946e4768644b14513 -7cf58eb4b46cfd6ab02aa1af9c62d7ea -7cfa6592a3f68db4b90d37fa34cc80d4 -7cfdb49fe502d0e8fa02530e22add4e7 -7cfeed2cb2775b9bed1a5568eed0b118 -7d000ad44e331a9dadf2a359ad5f90c1 -7d02c477af05f252d667532b40b448ee -7d03828c0d62e45765bb8a31a73f2c24 -7d07253a10b44a2fee8cc60321f1bdb1 -7d0b1693f64e67feb23bb494d36dc91f -7d0c290deeb2a79d77671e44077c2773 -7d0e765b73ebf7f890bc1d9a9e7bf96b -7d0f866069d416aee5cdc8cb948436dc -7d1076a092137583f59cc7c8af528b7c -7d107741f7b851a38c5defea6cdafbb2 -7d1152a18c981e0c3b19032e33d2bcd7 -7d120fea98407d573233ce1a897cf456 -7d135950af81ea547ad46ce8003df38b -7d16c8efeef99a89c22ae5e524e56c14 -7d19552148675211ce53569ad1db97fe -7d1f3dc9df2def5a58dc5a29fbe45a3c -7d2145d8891a8a85ed1caa08df748462 -7d2255bfc276e33bbc4b20b9222f2320 -7d226e0ca164c32f2e8cdd14eee908b6 -7d29482c7ba014c985a70498f1a2b236 -7d38ac588599055780a33fb5d624a864 -7d3bd9c9b1c8193126f447a486a15af0 -7d3e8bf521b9a0fe1276edbfef15929d -7d402e5243515142e42b8031b34de9c5 -7d41525c424e5bb28e6bca320c399243 -7d44ea32c45e94030dfb2cd3dc406d92 -7d45e5c223e76a51194a7d509352764b -7d46a50ed1362f79d5e7ad4014f3fdfa -7d492c1ee6600969ef90d3323897b760 -7d4937b51be4a4412801459175721969 -7d4d462e4c77ebb093492a531be792ea -7d4f9e48630e6370f9c984bc8e1ee055 -7d509f22df2fc9e864de96cd9fbec691 -7d54464f99a3eed899ad3f4dd0fa382c -7d557bc06902849fc7fae579f75d25a0 -7d58fa1363834697f3260d264dce4185 -7d5db05b0eabed27da101e996cce5f1f -7d61f7123910e56777f83a5186cc1153 -7d6669f9d9a859cb2641ff9d44ea3e96 -7d6d9cdd6749134112b785ec1e86279a -7d6f32e195b1015951c57b84733b2230 -7d7338fb01cfe9cc26bc3bde96addca3 -7d76fd8281ccf27b44da699652cb3976 -7d7adaa0c13a9a4a2d6c0ab1b7cd5b02 -7d7edc0f1b208539b5cb49a68c791319 -7d7fcc6eabe064707e193fa0f453b7b6 -7d84a7615e85847c0e313a63800c8944 -7d8516388bbcf6c843e0a9ec7a21a787 -7d85916f1fd6beecc61c1d9d0d6da708 -7d89bb2fe9804433b1a666f3700f5b82 -7d8aa47326c963be8fd592a65e5b26ce -7d8acd079b6578e89e051eafe016f7a8 -7d8b671f459920e4f62e0d64f975770a -7d8caa4bf451ae95a773c24ff2baf4f8 -7d8d1326178c56db49a1062a75dd4d2b -7d90be0f345835fdd3f0908814ae9ddd -7d9448d6b37a5308e41f2f186ebb4d6c -7d9f1d858e07414447b68acb966606ed -7da36ed4ba7a4ee2e100ae91d59aebd1 -7da786c3809c8e8bb93f5eef1ab5e926 -7da7da1b05bf5e9045c62823f764f392 -7db03290611c02b6a29e83fc5c4a5aa2 -7db57c0acda7f2e2f19d9c07f7157c87 -7dbbcc15f376a660513c67211879bfcd -7dbc01a15448ba5ef4a418eb635b5a3f -7dc145f976e6f35d1df1a08243182b51 -7dc1d442105839a87202877702db7bc3 -7dd00f5b0572b7021269e12d9ca6b55a -7dd1bec365e1adeea7ab29cf190f74ee -7dda093f159b5fd6e5901638d0284666 -7ddd00725d2934615a81a0c1db5932f6 -7ddf9c75de11b4758d70e12b2f9bdc1d -7de5d596b690088bd5f3eb7bfb43ccc4 -7de7725ce59a63ffb39e4e0179810a97 -7de7f2d1e482e4c36b984729e87f973b -7dec1ffda07af18c6b9f4f2eb02c8c22 -7dec67cff5b030849ea2944d36913cbe -7dee78437b42c41f0497b0cd34b373c1 -7df64878ff70a2a0f434d2b6c64b3eb1 -7df8445189cb8e6833140cc492154d47 -7df92f6ae4d6e1800afd78df5bf0a8f1 -7dfa960f8035956c911f3d55176223fa -7dfb4e598c9648702924e32daacc58ab -7dfce21465098790210d8eb02328d85b -7e008441969846ad620cfaf872c2fbd8 -7e0c5eee845b76b7f2cde01a564af3f9 -7e0d8c532fe0c5eaf5580dd3335b9697 -7e106308f48f68fd12de61fab2329a0d -7e128ce1c00273e73ba732a6e633ec26 -7e16cfc654decbcae9c3ff5c4cffa554 -7e17d9bb1e6057ee99ebad2938f8b7ed -7e2f456899d4de9dbd074daaa5cd1905 -7e2f69c4ff2235692e6e5fe9cf08dba4 -7e30a4226f50fff94d46493f9badc7a5 -7e3931f469e1f00c95fe6695a68f5e36 -7e4984ba28efe20e81841ac8e8d7e4c8 -7e4c76b54145ca17eec7b345ac072140 -7e5119c004ea79acf99a7bd3fe36ef23 -7e530645c6d5791549ae4a2938bf97ec -7e5344046f19c74b83a63f60e132d745 -7e55bcca01bf50b97eb2c0294b4ff641 -7e57a2c83c76aac808eb9ca926fc9e46 -7e5984f8662299731197dadf924eafab -7e63ba578bad3b6cded92973f95620d4 -7e6957b58e5cbc1c53e823d96c183ed4 -7e6a17005e88e809ee09593170007b48 -7e6b29fb7684214958d389db42bb1ec7 -7e6e5f3435a1faf7aa83b55ea1454ebc -7e72fd328d79c8415ce5c6615aa72dbb -7e74c34e28e020e8f5a12e30512f16b6 -7e8b9b77b0a34437b0606ad0e386ce21 -7e8e68200303eac7dab998dbbdc27a66 -7e8e9260e1645d9f814e4bb8b4faf702 -7e928236febe9f2f8af192c042d941df -7e92f2e356f0152f1d87a569244d2e1a -7e93c13aea40b4a52b1528e0446848d4 -7e961bff64d9577e7f92189f3d586e60 -7e98a1d4d7dc18c49b553afee2e9b8ff -7e98eeb5b6aa3d977ebfde69dd6ac5b5 -7e9dcd2e118a6533690f2c85192c1956 -7ea58e0a8a9ffded9f864a3ad6c46abb -7ea6d3b07acb4c251723bbeb262774d2 -7eafc5e39c67fac372c302667f1b481c -7eb09a4abc4aeb3d5bed3b8e31dfdd95 -7eb15d7382d1a9136999d35fb0821c53 -7eb46cdc187f6a894046bbc7eb316462 -7eb5e426fe2d94410f97176a07952702 -7eb7166e568408f75d4ebd999881ecbb -7ebdaffaead32daac2a1a3fd1ac1f9d5 -7ebf3eebe4601c2af1ea3c7d5256d9e5 -7ec3516f993ac34051e1c2a5e9c09a73 -7ec387661115d4a4410a4adf89d78ffc -7ec9104692b1a6d3ddd2c6ae6a122c1e -7ecc0aa0f5b2980243c96a284abe608d -7eccbc2b5b0692a5ff031a8d9fbda204 -7ecd1364082050289574c325f073a1da -7ecd5068d551eea9a6f18a3f978400f7 -7ecf740ae7e653b368aec4af0ffe6bfe -7ed06acbfd5018d1b53159ac69244b42 -7ed18d80a92c176f6dc987b9816a7176 -7ed60c743a0cb2664a610b344b60031b -7edf53828ab5c09a067a0d2e3b04c350 -7ee69227e0c0a00b613a59a2b28fc6a0 -7eebfdb1699fe28c528b5e2898c5d606 -7ef2eead9669efb6360552398388b4ce -7ef642387f4068dd741deca3237c6571 -7ef6f91fb5e5d264f163bd9daf8abad2 -7ef6fd51e614d912b0d2aa1ca47ee271 -7ef8f59feb42c35fc90a605dafaebc91 -7f09f4e093868971632310b904dce074 -7f0b1e83a2120c19a9a1d7d5c82c0ad3 -7f0f6e0fe03a061eb2cf41abc6f6b810 -7f1414d4369c88ff5fda12fcd1e49407 -7f17a58e73549a55e0e1c40a71d8b937 -7f1e64da46b746ed35afd58eb1a32b54 -7f30d0748669ac4f2519e2c5220f5290 -7f351f31e1d2e197e33da2e6c25ce361 -7f364aa7a3d5b8967b377d4fc6a348c9 -7f36e5d3ac2a40d614752715ed02dc23 -7f372ddff28b7d71200607fa68dfef59 -7f393658816a60f523549585d7652c91 -7f3ceda701c9e669251f2b61d9e1acd2 -7f3e97eb822588347157fff87f00f941 -7f3f00b418a5b934bfc67b185c12c6a4 -7f4075bf17edae852fe2c35d98a2135e -7f48e85c62dc2744c653b56a54f98ec7 -7f4bd6994308225799bc200d3f2baf37 -7f4bd76498bf16b80849760d4076e483 -7f4e8b760e5929cb0d277115160d07c3 -7f52e2680bbaff762b6345ec28b52196 -7f5523ce9fbb0e2ea819bd46d58d6ea5 -7f58855b59ce48464c7ffd1eeebcedca -7f5a034e1cb0ee910f62e7ca0ac153df -7f5d66bd0489f8e696fcfc33bea77c69 -7f5e48107e91613a352f561a0a03849d -7f603f3e9956c9af958874e9d7617bb1 -7f6137f1150cdd2401ecbdda4264b6db -7f6a6bd65c2ebd0eb037bb78bb2b713a -7f76602c63250d2d670db96f35601b27 -7f7ad84aa903b91bbbe7bc70821f9035 -7f7b6bb7cf38344704855f1d71cb751c -7f7be49eaf54c2458f271f605e847661 -7f7d9b400bfd08bac9e55454039394f2 -7f83dd79375b017c760b34362d71e5fd -7f84f74ba24fe7461bc2e1d4fe5d1bd1 -7f8f4abb7e3eb731fe55bb521568485b -7f923f6ff6949fe8f1b909fe62803c49 -7f93942ca8967ce33f89e6270e9d3080 -7f96f0cc7bd6bbcd924398074d81c448 -7f97e5a4d01c68202602a43d27d6d231 -7fa56b1360c989757e62e31bbd04a6f8 -7fa7b570de3aee7b0d906612a5a931b0 -7fa95bb2cb629ec59f3b52f1b8adaffa -7fa9d731110fb509a959ae3fc92e6f12 -7face646dd54b325fac515858c9e3bf7 -7fb414906b6759ca26f82c916f57af51 -7fbc01b989f9b410774c897ea0297366 -7fbcda6087bd27d9f955e413c0d63b55 -7fc260034ff7bddf7f08dc94a8d7f419 -7fc2e7a2ec30d8e58dc8340753a0d8b5 -7fc9396f2d064966dc8f67f141341a6b -7fca16c35c5011400f9de0385eed69da -7fcc9c2e49e4acdd4685696948b51d81 -7fce356d4a46d6fb61c7c55a9a377128 -7fd72ba23910cd9790dbdfd7bf36d862 -7fde123967cf7e708bd2cb2a4e5cbbb7 -7fdf327cf7b9c27d499565a51ccf4c81 -7fe3468481fb452b1ee8c7fe043cefaa -7fe79b7b43ff64c9d68564efe4efc288 -7fec93f76087d8084f0ad7901d775f78 -7fee6f349ed92583f52ec0cd75575e26 -7ffb376290cc2fadad89a98d2cfde256 -7ffd611a62b54fadb3dae952fa81bb59 -7ffe4481a4ad1a27fdd5a8f801d4efe7 -800111be1405e37eadd43a2475d735f2 -800216ccccf02c703ff185cd7f1bc59f -8004205bad15dcd1942fddb34558e6ea -8004cbff78666b12090efda2ea5b05ac -80081e99722f26e6e0e33c04bfc92262 -80095ba0f6a1dd0f4227060965a39153 -80107750e9cfaeadff8092e4841a0ee8 -801081e243f656023a73872193447dce -8013d4e2a616d19fe9d8731f2c986701 -8015f00d13087b42c97d8501c216fbfd -801716a4dea2ed1b10d5877c717fa898 -801887f7c94da94cd497e5504a61c5c9 -801e758608bdc95206156fb1b9f998a6 -801ef5d224ac13b16ac563e266675fab -80219a5e823cf95623e59aeec9adbed1 -80260467f4f593b0d30693d1d8a80fb0 -80262e78750d20341279525ed06741ca -8032b9a131257525bddbc549bdf6d0b4 -80333b2c80529b448347fcf89b961796 -803d5dec8058efd9f0434ba3e2bb3fe6 -803e7ae7c3c1e87701de86745fc18962 -8042bae06ac4264d98a57aa27d15dc43 -80475490c9c065758c9c70109470dfac -8047732762f22e950dd2d2dc4ac94a61 -805423e64eb5ab19cf5c0e98ec162765 -80560da5eb084b79a1a326b46be3013b -8057c6a210db187afd254bbe35879438 -805cd1fa1e874e070bb73e6613e49c79 -8061240db1a4a42ca4334cef3a909dcd -8067da87e7e8bccd6038a23e8a387a93 -80692fdff795df09ff02d78b9ec066a3 -806d0020992edc8a310c7c061dc2d10a -80712ca660047c5b536a40f181c425f2 -807268c6ed79f1c9f9d51b12a4920397 -80776f78fb791c4d23946a2ff446e163 -807c40cf8aff9afe4011f9f7c2fc4335 -807c477fa0f4a350d52d91a90a3764dc -807c92cff297ae3254d38f9de3048393 -807c9b36ea559795914fc229b6f43665 -807cdec4dd3bc9ed334df05d567bb7f3 -807e05b73baf6ad39941342d850c3ec9 -8081c4bc8b5aefb7ac624a814ec1aac5 -8083af61c3c03e4dbc649df83fd2b4b1 -808578b3fa6fab92a3925e150afd06be -8085b9bdb7d66d56fa2861d2ee4bb623 -8089c63a00bff1ae8ce02c57fac074f5 -808b840029cd9c979ad4b22011f48375 -808bbecd06941a8f8ebd5a5b54169a2c -808be26c0a5efb1ad27cfe0eab743981 -808c7854a38e49a78aeefa0205f6a012 -808db3562f194ad32868cd4bd9169510 -808e2ba8dfff961d0c435e36eb2c52c1 -808ee19913c2bf1e481191b8bf10ebe7 -80948f42637c7908564f0a209a5f4a2b -8094ad0e8c08fef1300fa135d7de4242 -80952bfe4b9341f7ea6b543d820cc322 -8099d3c9d5d705325371af5918b53711 -809a3e9dbe3ff394540b6c3b2acfe8da -809b73d7abd03f1d23f9cd129c9b9ecf -809d35d716d4d58a62bdd956892383eb -809dffa3f4cbdc52f37cddb0ce9ac15e -80a8118a1989392238ce9d9558e9eda6 -80abb749f8f84b1cb25be9146a68a1e8 -80b22c8ba3b71ee48a529314987a7071 -80b5164257e7af08cd638d5adbe42d54 -80b53c26e85061c441d8d250093e5c99 -80b86b2438d41327435761a559a979af -80be88445069c1db1091d5be944a6fb0 -80c3d596ff5c17de3ecfc1d61805339b -80c5d6f80eb81faa4eae1934803ddb72 -80c751f7484ae209e9032d404c1b1e68 -80ca083b96b41ed5219e552239be1158 -80ca3694a9cd1260245bbae93d8d22fb -80cace680ae67e51ae08d5002f1102be -80ccfe2da4f779326bb0c44c021d07cc -80cf01eaa832367c26d76a9d5b4f820b -80d35979301e9e3014d57c99796fa481 -80d608327323f2f8852678a5933136e5 -80dcf91f1642116cfb95ba86bd6e2072 -80e071040b122f6a28016ee67bb2f088 -80e4854721329c187d3f8bba02b91310 -80e6375d85c678bbcbae72bf1f2a5a4b -80e6515e8ff466adb395fc5b81e6d668 -80ebeb440addfe5ecfcb69951e577abe -80f09609ed81ef38304e9684808bd92d -80f487368634ca358ae180230e2655b2 -80f5a5df22356d1faca100de372c4638 -80f7db73a2142d3ce3928b0c3efedd6d -80f8c0f70c00570b9412189438dc9a30 -8104ebce1dd6e19a407b9d64cc3355ef -810586e3b0dcf0146c3a86c4f2d859db -81098a95d237de5ecd43b75fd85eef12 -810e45d633f021cff90a0cb58ab2cd1b -811088e1fa246092efbde903f5436bce -8113dc5135e3abc0e9718522b55c9aa8 -8114676130953f8f4d9c9f32a90c2911 -8115157d5770a9c80621206b19fb56c6 -81178c54d93f2e49b29d09434d62553c -8117dd281cf613d3941ef27da5b6cde7 -81194b9993f84368c3da459f33b44b08 -811cdcd31b70c903ce3d2dc19a7d4dd8 -8121e6624490c5d98c33639c7ffa6a5e -8125330d73deb1a51cb820c64f6ee52b -8126a9441eb9289d08b8c4db32facb3e -812a39007380376a4badb7cc8137ebf3 -812ab99dda4b9ea58a13fdffa4a635d0 -812ce540ba9d450f5df65b0ffab0036f -812df0bf21637cc222f1a66498c710aa -812fd5d3e4e0955a560fe2cb88d28824 -8134b06e914354ad8af23a4902a1ebd9 -81364ea67ee13b2eddacf5447a0626c4 -8136d2afee51d6e7dbba6b99e6101db1 -813d30c1454f6794be4b6bafc518bb26 -813d52d31ba09073e5ec18076ca9511f -814082e3494d833081c69529f206b7a3 -814404409d3b6039daaade23c2a2fc9b -814a8120a219ff6729ee4a248a5e195d -814b604dc153bfede548725b246368bd -814f4c5e5d8be73616c76e8361335952 -8150af94315eb0878ce612c329357034 -81537d795580ed118fde604abfbbb276 -8157d36d7f886b97e774e6859cbc849c -8159d54e44ba8888287b35191ab74774 -815da90d1d45dbfde242e857f9335cc7 -815fd0f5890b565f77a435545228011c -8163fbea55d60facdfbb724b520c7d72 -81682968f889c5b61a37061e62d7a394 -81699359642b77e2d30bb5a56118da55 -8169f80244df9e0bdf4affb8976760d1 -816d5242066702d5ade063ff244a994e -816fb2becafe04d8ac97a099c03d4543 -817172823d6138092272ca5f1b12f4a7 -817c6a32a32d44e647182b5e234d9d2e -817fd5bf020baf7a24f2d794b893f1f5 -8180b14e8f3349de73d84369eb4a205b -8187bb23133f9c8916600c65559f1283 -8188ea14a7c2435a4669e7798ea10712 -818d31d133381a2faffae336ff551e6c -818f0d073d87adf2362224676071066a -81902ae22e8ade62b011a493b910719d -8193df93a298556262d45c6b50524ef4 -8196cfe5b0c065b6abc0067ace6187b5 -8197bc93084e778a1933ca6904b252ee -81a05eaea57564d567bbddbc6777e5b4 -81a416cdc8c39d3c201b2d9276976d46 -81a83750c765da4341d071098edd72df -81a92e06941d5d29faf7b5400be04918 -81aaad3f87e659f3f79c7bbc3b578229 -81ac68ef5ad2be5decd56fae69e1d456 -81b0eaeb439539b7ebc0bb21a056035d -81b28dbaf46f619e71d445684ea163d5 -81b58a0d64d1f784936a5ecd41d60f24 -81b9f6c6e19c8909f8cfd88e3e1c255a -81bec247515eb0820569ddda3cb7edd6 -81c26e8fb560ffb12fc50345573a60e3 -81c2f49b06c86530a6de87f6161b7ebf -81c617b9c1906597820122e9356ec825 -81c69bd733ec5ff73ef131a1d3406697 -81c8266ad029d460dedcb2e32fd61028 -81cbe464dca079301f07ceb91f549140 -81cec86c6edaf5993f1823473dd044d5 -81d361151cdde0b871c9e8e6665e85c5 -81d3aedacf97aee71d1b40c0c3a7621b -81d4f9d8076717216bfaeeea3e7fff7d -81d70569ed6b35bf1fcb65e6ba2a7903 -81d816ec0e15fcc0502aacbd16c1da67 -81d8b0702d68a26f29034f56162d2afe -81e8fc97078d940854911f301a46519c -81eb0609b2386fca330d3f1e95bcc0a9 -81f8464efbb0b340f8667347f45f24d0 -81fad47c334aeac99fd501edc6052634 -8200915a5798d1e93496f34a54ff3c0c -82015a6dee9167d4b6a4ea632fb71885 -8202c9f75067a2127d81ccb864b0545a -82083d8061100f7fec6ad2bd7d86a93d -8208ca4398eeb573ca48b31ca45e0b55 -820a1b42bbca1a1c3dfe79e23e219b37 -820a9baa8962e0d210fcf2a2f124df95 -820e87cdabc48e86c31f2cf417fb818e -820f356da3b8480a5c56f52f8389ee1c -8213cb107716013405dc8449f6bd9700 -821418987dccdd7aa80ab7a1b63b0166 -82144ad445cbb2de6a03fb642f180afd -821609f309343282fafe9a64a1b43733 -8217f4cb5e681570ac1e0cc6e260a90f -82183884d167b3badcd6433d9d8911ec -8219e8cc8f84251022adf1235737d43e -821ad8e97cd322ad2aef0d2a900bf802 -821dd2e4467cc269e089421fa7e5178b -821fd8d6191b1a5f0f691770a3591c59 -822028fa0ff1c28025be8920f6dd1114 -8223021ef8c2b88a53ccdb3b0715ae78 -82241bdcd43b7ff8766b8103bf839f1a -8228a6fe3b4d00caf59806c36c7a0c99 -822f8f13f5478084f09291494d2a511c -822faf9392fd41cb0fa791ea951ed04c -8235ccd805e9bdfbcdec7c07659f7ccc -8236828d7d3d21548c24fad840faa95e -823d23084cbcf9917974c300e04b3e90 -8240973dba3a3527a130e85a7b3e6c11 -82433009ad6834d496d6f97079446581 -824500f3f21f7475077d6b89f2902e01 -82484aa1e513219e866d7ddde34ef731 -824b974082ed095b5dc0cb16c93ea034 -824bf81afcf6a8d4c5501dec3d17811f -824f244e235d7917f3b915e2c5ccdcbc -8258d5fe75ba1ffac384ea5d7413a12e -82596d97a6205f8f07e1574243e35678 -825a8fc95a9d23df8fa5672c15a35736 -825ab3fa130effdf149255c13b70d928 -8260462976391b769d990108aa24d5e4 -82621811de0b0ff6e0ce3a2ee6c19f6e -8264bf209c11c7d1bfa39d53c9061edd -826a3b959f7661e0ed12c51ef626504d -826b95bab520f242356b5ef9a0a56938 -826cae86081ca2684a07e45021836fe4 -826e93193152d658071b5f9049f53957 -826f5296e27d787f4a92a102cd044d9f -827299998908cb5619fa4371658d266e -82768ba559840008989191ee84a674e5 -827cf51551c63a0e7b7cca9a6f18eeca -827de5f08e8f6b93a396aa883e137460 -827f3aa024cf44471a16f97ca795fa65 -827ff70312352960cd0997a39320a245 -828590e6cc150e247d371be0b2198341 -828d98118677efb6187b018f88a5ecc6 -8291f98902958a95f7f0b0575578a10d -829532698561f1a4ba52b7f4b076230e -82a33e9436148a359e8c9593f6567ec6 -82a46da7fca6cac23afbf49696b49500 -82a968aa47d9744ae3ebef61b55908d6 -82accfc009d48cb484e8f5c20fddf62b -82b1db8f2444031d9f49d9fa34a8aca5 -82b3b6325b217c939b7d0654655349fb -82b64992d73ad7dcb79410ba69af1172 -82bc730e76edda4132349e85ed5bfebf -82c02395eaea970f78891979390c157f -82c6f2117fa87bd19ce87d6bfab7c8e3 -82c7db54af28eef39b926d5a0ad3f33f -82c822f940e95a6f1988e1e511ed706b -82ca74509d25520df3b613709a5c4a07 -82cfadadd8ce31d7a28173cfb71de6d2 -82d227076ae755438e2fd8d6b057cf6d -82d3bc5da153b1f124c126bbd5deb113 -82d5abdbf8e204219a87e645168bfafa -82dc2e54f2917715e11fad672e1333d3 -82de7885fab8af5af0d2c07d06f868e4 -82dff4d298cff11bf60a5141c4823a26 -82e6bab1ee4bb8618760158ddc75d21d -82ebf7786291974323bc383ae33c1417 -82feca66471232b224790fd6fbaa904a -82fef80d609399159d6a9b0a5e1908be -83021c0f9d0eaa5e48cb2218db6b6554 -830458baec3c72845bc10e6574c99448 -83088737aaebc275c8e83f30d9580e31 -830947418b71054df4c0cb19b70bf909 -8309cc973fdb6ac83ea6fc4375f1680f -830ab8dfbf3fdbedc9155102d44aa4eb -830b9b92860c61eaf601b71856194c3d -830baa817a8bf5fd177df62165fac5e1 -830bfbf2a261dde4772427489c178c3b -830cee72b12c5c97ee090f94911abf3f -830ebc61a85d9659d98415a8b200f6d9 -8313a1430fa7b292e2c454acc0011331 -8319f4d68d7ef8162914afdc83c773fc -831db29a71f891987a4e181ec647e19f -8321816136fea77adb042df2eb44f546 -8325c932bed746f9f9350fe5e3dd8585 -832731df232c9d4c124bde82f12a4b5f -8329eb336616db60c15db50487f2ee16 -832d8561be7b3bc228058c069d950db4 -832ed7016b174adff48de88ce3b366fe -8337eebeeff73c31e1137abe0a101ba1 -833a4f00b5b7899de5cd04546515a2ef -83412498f484678211519538d2bc13c8 -834a51b85fb7f2bb75a15fc44074c300 -8352210a4b07c4c585460cc19c1fe049 -835259d2c13bfe0e1c27b4a1f044fdde -8357a579a6bf7d5e4f737c00e124d0d9 -835a313f08cf694339d697625d2a3302 -83742476ff35fe1c3b7f157bcb93767a -837472c8896800d27dbe5093dae02ff5 -83749286da2ad721ed985709eda4bc87 -83777024c32952d97e66179926171ab5 -8377fd7056a587f4a518034fcbc8950c -837810020643531478d4b91a6acdf459 -837b5942f81fc2ee464b92aad1af6cea -837e60b73d190475699917c2c906fa45 -837ff6200dcb6232515c596aa46e69b0 -838310e7a6591cded1b014b3ff12161e -83833c66cfca9a1d2a4f40f03548324d -8384258ac15534ad2eab01bfe4251b35 -8384987d40544136f957d9d0b7684158 -8384d5169312d50e505c2efbdca14355 -838575406fee6f53c8bc87ffa6e5bc54 -83866ce35382c3be6c66e050d7620704 -8389d5ca84fae6201a33e06c99cc5a03 -838d4da0dbc50fe734f8224cb13b1e0b -8396454e611338dcd055c2122aed45ce -83984bdb841374e1f8ca4e68b65862d4 -83985c3e5f2746d13bdd6f54d2acad89 -839a5ec02beee88df484ca34135c55a1 -839b3b9f5e4bbdd550e8ce6d882fed9a -839bf81c4784f561eda8d2fa1926c6a9 -83a78fa5104aafbc822fcad682687066 -83a9a7676ad711b8229dbf65bfdb7420 -83aa35f49c15a68ab4b58d3e85766f48 -83ab643ac904eaf1b4bf42806111df0f -83abce2f06a43ad521cd372197c22e96 -83aeb125897e4fb04c6bdbeb569d2598 -83b0a45ca34b495dd155c85ac07ba7c7 -83b0cfec4d4a9a32f1dc7ce75c4e50e0 -83be20637e553038ca1af7c84b856632 -83bf3c6783db25dfeb78af9730097917 -83c1aa3be4c0e268291f7b204cfad920 -83ce4329272e62f55640af0b413cca4a -83cf0aa31d59c1d227eefb7213d1d8b8 -83d0abfdd5a06e83ebf150e1b011c422 -83d751146d2e4d8567f3e6e36c1c6cf2 -83da8d70a1fae5502e7933784aea4ad5 -83dbfed22a3e8ce86dbb2100254d37e7 -83ea9ed4b4ee2cbc27470be5d7a9a07e -83eda42c0277a49d91b89ac37d0446af -83f0237fe49dd8d085d9cbe205a025f8 -83f6537afcd024ec6fdd5eae4571f5d8 -83fc20a6ab0ec80737a783df4fa9a8c6 -8401dea3d964afc1a1bea6a228757356 -840431a1faf54f6ca8cf0d165b2d9e8b -8408f4d1ce13fdd14789840d6ada8159 -84097c1b14bce7182df9a871cd122d1b -840a409a046b6f8c9018564f309715f4 -8412aceb3f97a1578f54fc9b3287ea5e -841331a3ca7c71849e729294e37ce621 -841359a891bff28306d0454c9a3b82d7 -84139ff3a182c17a9c6c668e12a1fa1c -841ca76d6659ca3cb210508fbaba83aa -841e012379a1cad8530f4d72937baee5 -8420528e62a539a7f80fd7304b29c677 -842212dda111e8ab434d167e60d7e9ad -8424d98a44dbea364f7fbf259e3f8e07 -842555e6a7e7d92db0dc25d6f9a1c2d7 -842a6e586447d28dd15edad7d8c2c08f -842c2d9955795953faa9de49ae14985c -842e5b56d3f97f3f25c0abfcaeb4d061 -842fe4d90ab902e0bd4db7282ecfd153 -84307d118a0e392a990c463a91f34263 -8432c72b9fd07eba1b21d2e2e9379706 -8436310c286c32f5c98b86ebe0460a6f -8436c46f2ca8bc9ad33f5553e5d75bbd -843a37b6a33689a964f43164213421b2 -843afce13524f952bbb73157d94e4cb4 -843d4990ae21c6080d79847fcd2c56a7 -84409565514809c8b3d10cf722b96c57 -8442c508f0280f36e67f7eabdea016f0 -84524673de6cb7015ac353c0522a0ec2 -84528f48c85dbd46d2c6fb4ce9ddb2cf -845976a989634053f24a1d7d7dccedc2 -845bc71fc764fec4d3f9dbc48695c897 -846060cd1981d69e0210d4aa6d43a07d -8465cceb8e0e242aa192c075b806490a -84686a4622333cd62328ffe084fdf238 -846c034de0d88610196d0d7358c724d5 -846d59e5b2a5782c2a76a2713e5da0a4 -846d675117f11595a5bc461047ae70a8 -846eea52b7442c5044b14624b59440c9 -8470b1419213b93a86dd1bbfd805f879 -8473a57055bff9858d01aabb05693f3a -847a469e6530baa12aef2d1409e83440 -847bee60bfe2344ffc188e1d1e461101 -8481d4a649c8aa297b95abcd67e773f6 -8483dea2af2a8ce01bbfe2060b0591b8 -84888d512efb1ba0cea0764498941e48 -848b8e875737296ecc0a541ca2ddf3f4 -848d79aea0b62c632e660a59da4986fa -848d951f8199110c7d06aac5addf0567 -848ff93398fb8ec0de7cefe9a4678961 -8491cddff65472191e497a0d81c9bb27 -849eecf21071f319d439a666ee10232f -84a46f8b2baafcda5e3462eb2c0107b2 -84a4cb671c4dc215e9e855aafa956cda -84a70b559ff9c3476396a1fb835bec44 -84a78b96b3550d10a9cbd045f1ae99d3 -84a8ee94d3f67149aec2aa0bdef7082d -84ad9d7d6e1e0ac31da624b0cf6dcc67 -84afaf1772d99efd889ccd47c918e7d8 -84b07171dfceff882728175c6e0dd135 -84b2a437a1f17aeb21956ec5f43c1af2 -84b356171e8d60bb4c0cf450aa6c4f77 -84bd2f8db36518ba10a18db51c7e1c8b -84be2fa9c7beb4bfd6ab176bf9d540cf -84c05f4b908d1dc9d6f17b94c13c8d88 -84c229260f2470ebdaebc1c11eb72b44 -84c32bc66091a4edc2b43f24a4336e04 -84c9c3db92022d1ac8483e18cd1e94c9 -84cabde851a86191b2e11a45980f8401 -84cacb5c3bc09490b736c7b83e89a827 -84d0d246820cab7c35aa74b52aff270e -84d1ebd647fc42c8695a0155fa853fa0 -84d432f94440ad13fd22ad8b1dd1fbda -84d8efeea48c8959c6ef634afa683188 -84db454c16b6be04f510aba02b2e5979 -84e1251954012c37a7d9d1390b894ab5 -84e7f26f43d290c86071fa090b9a40ad -84eb38e07016b73fc1adf920ac064489 -84ebd454e153d5cb997c972833409754 -84f3c5e3f71594202ec05e934077106d -84f3df46a7f22e2d950f228180df9c4e -8503b5c480f028aac433ca7575a36ea1 -850813262cc2af06a7c86413f48e436a -850a91bf2cc79a99948148e47f3d9889 -8510ebb5d162766d83a1bd1d2443910d -8511584f4b2d9c0785af522f91b7e1f5 -85135c3decb9d925621de5d89e2999bd -851aade0de193c4293c2481da6dfa2a1 -852166b9d3af257b33ac8bc86aaea9ee -85290123e7f062f10767e6f7b5f95097 -8537ee3eb9850fba65a6b1ab6a2c0fe2 -853ee769cb41de9c891afb8de88aa9f9 -8544d646ebf56fdb0a90c71dd5007c91 -854ab2e7e5739f7e719d506504c87a41 -854db32ba58bf53a67bfac3755f379b5 -854f42986f552edad42c25520d3ee8cd -85551f09c7da5506ea42b8203952d6f4 -85569ac20d46a4abecf5a20578c52cbb -855a94decc0f9292df95a4b10a203e6d -855f1897e7f33a078b42a3a210c470e3 -855f94b06b216c3336d9aad8b1f6aec1 -85654a9d0a969b187d3c7492c1a679fb -856b1712ac2be79f21fef520ba72f894 -856e3798b8c00e865fd153317bb863c8 -8577ff1b1a6e7dd27b80f3d4e87d073e -857afad9fe0f5afc937171d4ff656843 -857dbbc127f009ef525e90df073ba296 -857e6821d7c79c38fb72e65dfa763d71 -8580e673df2127e44a77dbf1a9e1a37b -858a4eb6106da7fe4f235697a06ee7e4 -858e4ddd566270e581cbafaa1bd1e3e1 -858fd33959f4976224a6790126139d9f -8590949f1aed4384a8952e0f90a997dc -859235ac9aaaf82bf72f3a1f56c523e5 -85945b5aa58d46250871c78af66ee35a -8595968995563145ce91310cae9b7c64 -8595b19046d6ddf114f746504ee16a7a -8596218b44125e00e90e011f240a8715 -859a323cf267f622bbcf829cbaacf6e0 -859a5cabd5c68e274441bdc621992e3c -859f6fa1e02a0bdc44da2ef614b38257 -85a17070331706428703fb1d02261396 -85a182216cebdfe7d372e926899def31 -85a3de27ed4e7f43f1cdef99805f5ab1 -85a493ad741bdbb33cc7d75670e24e75 -85a4e3e6abd7259b71cdb2dfd2ca011d -85a55c8a33793276b51528af5bffcb72 -85a839757cf77b0cdf3910b4a91a6d41 -85add775fdb1221b258508127213259f -85b6d9a622cc8f8c6184bbbacaad7fc0 -85bad1e432da7438b5e5c13da4809c21 -85be9f06344fa14968b7bf8c83f4b894 -85c35f4943504b76dff92de1bf0b25f6 -85c9cd7d979c8dc905636239b5b1744b -85cc4ae96c1e84397637e30903e8e067 -85d05b647ab3be9b221d24de81960970 -85d295b532a904280ace1f0c945b6869 -85d414f537971b62879e1d2dae317448 -85d71486bb154eaf42d5b887bac40d81 -85dd6d64a1a9f6eb06a972ab3df427e1 -85e1bc302f308448012ef72975af8e3f -85e1c6c50de43efdefdc48a76e772e14 -85e289aa04ce07feddc6c37b7867b93d -85eb80d4733c47510a95865908076b90 -85eccdcbb0185330412fce9349d98aef -85ef0c6dccbeb0f45e6aa4750e857cc4 -85efbdd16d11180ba3ccb78328a4dcd8 -85f01dab11f7a1553d7c7cf588e9639d -85fc782b3042a5ba2364d4051751159d -85fd87d05d56e553a2d55689f03a0fb9 -85feb6b1a990f51aeaef7adaef6aff44 -860328ef8b19a83f32afea63852eb064 -86072ea55a0b5e58595b5434a4c2518c -860ccd24e795aca9724758b32b36002c -860fa354049d314f93bbe907f4f2718d -8611496d6ed41057c6abf8f37f27877e -861230a9e92b9fb6bfa3e561451c9e77 -8613f7b7b2943ce57131db2c8be26076 -861553e01c6de0d93eb0f10afaccd1ae -8617094f5d6917f6d654b4951db76c1b -861d27610749ccd7fec1e38a7ca53a3e -8620fddfaec3de219885aa2b403dc9dc -86312af07d77528ab5cb07c30ca6430e -86365b8b8c34a7b2474affa9af469840 -863892ecef548a229d8190ec544b7a28 -8639aeb10bfe3f8a2b25ce48217a5179 -863f48d8dc0044080a424292f54d518b -86411e23dd7bad503f7d07ac8c10c31d -8643a2c2537f7773883924db6308bcbb -8643f4d05d024c9cf3eda4e135c0e9ce -8647602aee37adb2ec57573f712741e6 -864c11d1a2a9c77ac37c8fdc47bce4b6 -8653c88ac7fafc4a98d53342b447b436 -865485c3753da5f5e343d2c434ae327c -865dc03a1bfe5b970057975f213be93f -866033e74fa5e001e1dc2e19ea447d24 -86617aa0d426dfcaddbab206b7ce50c9 -866670e09867d7a36009f4c383574ae1 -866bf0601da06e7790217f985de865e7 -867241d55995f5f8f6e9ba7c30746a8a -867245882a7bc622cddb829476b353eb -867383b50e58d6e374568df31beffe57 -8677ae53cf03c0dc854d0af7df2392bd -86785d78f4ede7d68b4af509dd04c274 -868670871a92491ca648f8bc95be5d9f -868d4bfc5164ae0be6e6976c704925d9 -86984658a05591915fae12cd5c9c9674 -869d1155363bc57711da4a35d322fd1f -86aa6296c72e0216aff358493e64b0a3 -86b418f5ffcd92e89c186e5643b6518f -86b731d0f4a55150239cb917c8b0f5b9 -86b9eb76fca4780377a1a72c9eacd9aa -86c1b70d5e06c03d0d9447dabcf799cf -86c2c51bac96a61d8db51b309b7efef8 -86cd0c9c6a9e2a7946ed4a7eb8ef121b -86cd3f0810c581b20b8cddcdb1ef0646 -86ce3231aa25d872d7d0fbd6fe9ce4de -86d43b5e496a4acfea9b1f6826e1ebe6 -86d5fb7c36c749b14eb7799578412ad1 -86d8f20d84fa36f8dd842f3dce27323a -86dec86c4c9d67b2ffca5940d8f77c10 -86e4fbba2abf29d2503efe40cf738b5b -86ef728fae4763b0de753e67dacc3ae3 -86f199ea259966b8b84cde98ebb92695 -86f1df1f382669385a6bb1647d707150 -86fe3cec391eb550a6a28c0f025f00ee -8703bf7f81b6c7f6f40a090d461a1ca0 -8705f821001d14c52d039972d100e845 -8707aedf7d7e91c95b95f1f3a1ed761a -87081376c2ed97f20bfb324d5443b31e -870aa5fb18296bd00dfd728da426552d -870daa69f2d90bfc89c5ddb41ef93618 -871001dceb90f54f36a2df7f5e02789e -8719c41538e07102d29f931e46cbb2af -8719fea29173fa9710aa2d2f97169380 -871fa027399e020db43350431a5cc9b8 -8722c9c453411e7fa6f369b8c96b6865 -8722d6cf8883f8449fdc94216ba965aa -87244c14cabc5014ca9ddebab98492c8 -872bb22090c3592985e5390275c3c570 -872dbb8a9d198953be1f03cb524256a3 -8736389021c7736eedd938d23a0c1015 -873a10366fd532b4576681ddd8b03080 -873bb7f85eb40852ce1ddbde4554ff16 -873ca002042a50f1c110fd06e1ae575e -873e5724ee139da6fe844a82288a1e75 -87409eba2103f2bb29d6cfd809cf0544 -8742fcbbe611aff3bd1b2386d8f45e7b -8745904f602bc1034904265bf237327d -874609de4ee126c73c404fc7cb733407 -87490898f3cdbb98c194e909932d2c45 -874b2151e572f5caf015ab056a4f7722 -87502b4e89d37d3378d92a11de07bbea -8756da7bcc2fe31b517438f704ecae24 -8757f421ecfe5d2e4b517ff5f394846c -876788744b7f3858e18a3b676ca9b660 -876ee5a27743685f5b707113efebae4b -877579c6d30d077edfbd2bd05cb98b27 -8780646986a4fd586ed92b68f0c468d7 -8780b29f10787a6452de38e603eaafa4 -8784a110d3a5ea6077ae6298989be163 -8785c63bfa27feb28167bde3d6064ced -878b308c6e4de749b59e77708e04722c -87906097355d402b3c223a6b6fe38913 -879b9bfb205e54ceab4ed0df498556d9 -879e0f4da97ac5cd06a4ae516a894349 -879e26dd8d74f2ed0428f166cbe84ab0 -87a2cec408affdc8fb82fc1c51ef45f4 -87a6afdb2516e73875c60ffeb40687e3 -87a90dbb648045b7ae2b12cbbc38da0b -87a99b181c6aac9446e29ac2e956d5c1 -87aa0bb3be7c303a63f5e8fc2c4757f4 -87aa19fc761ab0e046807642cbf8b929 -87aa4448b19da378ebd376274f7f4402 -87ac57e011995724e4298a3b96791a0e -87afa5c51f8905bc1ac4f9b6475eab3a -87b2069791cd8ce4b5db983a3e067e65 -87b38ff91c922be3fa0306816a8125e5 -87b5e8a7e600ef06909863aad5818546 -87bb47b7cd0dcaa772704d8a4dc29256 -87be89aa0dc7f8ab2bf0d13e1aafbed2 -87c0e32b1914d854a60e1deffe18db1f -87c14938d596c39c7c32e89caee4d164 -87c688fff57fc5a6978366f8065b4fa6 -87c6db3169b6a3f0612f48542dc6324b -87c81e31b48829885241a400f29b0908 -87cc21dbe2005e2a9c16c9a0a42ef10e -87ccac55f0af63fa8557bda648292ee8 -87d0afcaf2ff06435dabe43cfb1d0926 -87d0b3817ba79c046817a889c57c6e1a -87d5cc308fe9cb2a9d97b4957ea3dbf5 -87d8db9c12bd47776bf14872f0f73c7e -87dbb5c1d8aac961a8e05628ebefcb1a -87e0448942b1363f33a692c6e3a5fccb -87e1ae3d3d2ecd20c87bad3a5900c234 -87e25d632e125b1bd084709de744048f -87e542e1850705110f9718bbef5e7251 -87e8625178bb4d6c32750fd8127b2c8f -87ebd6582ced5b5667e5c19eec52fcbe -87ef22ec3877a9d14ccd30aeccfde1fe -87f00f2a5da03ed6df4d05f7281caa24 -87f9e0c79bc510e7b44e1533fb49b66e -8801e7c563b2c2bc7be156d6b397bebc -880426995c3f09d07c938d959068725f -8805b8584fc0b30673f85d9ae898e6af -880b390e7ca81269661e282b5aeb487a -880b7ae2865077c5fffb7167be1f22c1 -880bc4380bce668eae1181bb18d67875 -880c0fd0e344c7b51231be27ebed29de -880d3e089035fca27de7934badfe4aaa -881c413f5c7a65a5e9f74f95689bf628 -881c4dacb44c30345a714aa46f601601 -881f5f8612fe359c33c3ac7c804f1806 -882159e2892adab8e50f06823d140350 -8826007a3ff852f1d65643e352db371b -882629497b8b10726531755472fd566c -8828a13a1b5c5f06527a71acb3059828 -8828f062c209668797fb239ff8b47181 -8830405557f66111b9e3d036e5ea6554 -8836ef1ab01d31c060738f8b7813ceca -883b2091d403b3603ee79c5b24e2d24d -883e65b36803f022b7bb1c7e70258422 -883fb2657aa9447f72b22dadb3b41770 -88410258e0d9934177e663bc89f8a807 -88413cd3501820cd2ffcd69bd9c14f49 -8844911451d1383740575df568233046 -88465fb210dfb8d19370095b3d49238f -8847164d9f8ddbec0c8067f053755f81 -8849b592b8caede34a8b47670d196ce5 -8849c3cab3302475cf5fb2c5a5c860a2 -8850b15cd17bd5cd5c3389718b590dd6 -88522bfe68c7ca3ed0048d0a18583123 -88542ae381e359609d2dd90f22c9832f -885a5dc7b908b13f436a38d55122b92b -885d59cb3c92473a257401cd918dd9bb -885ebda4fad411fb842885dfa1af981f -885eff2ba360ad1d76047af739cb13a6 -88666cbd06301f070ea28893b7dd5a89 -8868583ad9436dcf5a98e43649570efa -886b0fbadbe374623d2e8f156ddc15c9 -886f47ca01dd1ae949c33dc0db68b37b -886fb225990449a210978779eea8190d -886fc587f5e5821396e3561e13c16844 -887606ad63457bdfeac5e71421f8c4f8 -8879fe161e6f548195fe153814d9e1ca -887a1348a7d75dd2f6fa9829bde43d91 -8882ea5ec89b7ed77ffdda851f7cbaa7 -88878e5063c6c5f63c7a644a6e2f69dd -8889b70297f3df737101b0de0b9bc75e -888bdcfcd9b9cdcab143a940e7073b29 -88905520e38773b045554f74b0d3a3b5 -8892c34af0c46b50333a747715cef5e4 -8894d2045f6f343cd4a8a14c42a10170 -889638aed40f14568f27d3b04ddf1fb5 -8898f01342a2eb77ce4851d3b16ce826 -889a60158b8e7322ac41cf986f8f075c -889c9143952a669768248d4a31adf058 -889fd3a337837b6dfd09b0ffacc0b4cd -88a445d0b67b1814e2756a877dc4aaed -88a5e62391feb4349b07e9592f8887be -88a7f82dc9eaf0a7144112e2e05ebe69 -88adcfc8e2cacda9a5216e71df53547d -88afc36c7188945695fb8c48359f21c8 -88b13122caa7739704299a63403c124d -88b2b892f9333e9a58074ff67980e23c -88b46cf24a7a3cd1cdbcb1029cb0c6e3 -88b733125439eb1e2448cce121494123 -88bd22ad27885a1463dd33667cfdf53b -88ccf23d5ae87bb032e25020d53a498f -88d7f32bf195921f2310e2984c2fbce3 -88d97e5a067fc25d6d113a484a6c9e22 -88e05714d1591810ebf76e053d405fb6 -88e7953dbcaebb6df169b24aa1e248f3 -88e7e9098fa7c4b64ea5593950a77d92 -88ea605e413815ba9a648d160fc96a83 -88eacc823c376888ec1a9086203a5b17 -88ed9a579cd578af80172c15f10049da -88eea9cf9f747f822042b4fbb928bb69 -88f38f4992960ea60b45f7b5011b54e7 -88f57746dd44e77839dabed0a9c062e8 -88f66e5d4b4ee8f2ada07af1aef35acb -88f6c61382788ed3d443fdfd7cd7ef06 -88f91c874803ea18e1922d3373116b8c -88f953bf631ea9cd19a42da0083b051a -8904cddde57510aa1b92596144e98c74 -890c6ae3ef77b86025db713c45d3cb71 -890ce5fe70b83634786d9bd2c35eb61e -89143aabe005f474278ff736e93ea5e3 -891ea05219b8c55e7f32d0c73b28ddf6 -8921d2223ffa648dc6e1c0f384d0f693 -89224a4758e97ecd119431fc78cf3c4a -89273a96cc0cdb10cc11e2b384f1a643 -8928f5ab2eaddccab3cbaf750a60ff46 -8929223c5988041f5920d1949ddc35f4 -89309ec0f1e6531ff832f4358fcec008 -893492c8a8c36ffd3a0638164664949c -89359ac56f0892cfe9315ca09209b620 -8940230479a1a957693ea8980e46fae4 -89456516276cba595d7d43bc1bd1ad8f -8945e049337dfb4f375de77c84ca9095 -8946eef725eea6e9dbb251835e7902d6 -89479a895d07e9fc801b45f934b95ecd -894b1fa7531ea9ccef89f1e55e480206 -894b6e9b8c53daab8e0097246253f586 -89517304ccb0e7085dd1a1647418b8d0 -895231c8282f4177f379bebca640265c -8952f8ffee24e667979f5018b96ddb15 -89564d089bff68aeb6643777f3defe54 -8956a82768a949f076f6de0aa271616f -8958e3398038129d27fb1e30a42973b0 -895e55fd423c57388a9a7471c8aa3b8c -895e567aecb864208ceca2c9fdec6b33 -8964d9f18fd72bde93424a8dc4eba4ec -8964ddf884684e98bc78cc8315511aa9 -89664040418e4791d3cb7984d4524228 -89667ce2925f44e9e116ca2705d40f91 -896a3d0b02c480020da78a7aee6c6449 -896b1f65beb853744594b1754c04b419 -8976c87de7c8dec980cee2a035129e7a -897b435a43d828ec7e4d2855d3f1fca6 -897c8acf24d0cf87cdb1af2afb5a3072 -897e02150162ccadae1cff33e9e3bc45 -897e551d31ab084265116c4c1e53b9ea -8980badaadcc17f33c1ece7c087a4bff -8983db87bfff7dc59633ff94a4a5a4e8 -89863ff677ac9df95be25980bea7dd14 -89881cdb9806cd8ec6356c7b5cf61576 -898ca5aff06c509d378785d66d3e99d0 -898d2967cb03dacf73293fca321aa7af -898e50836b5b8d80255fda4d9fef3e67 -898fe049eae992d6ccac3321bdce11ef -8991ffc55f32ba8c424c0a6925dde5c8 -89929cf65e777782b053e3343d320b56 -899332ccfe991e9b5a4521b87d37a956 -89941c5d30b350a9b753eb63b1f733e5 -899966f86867596b36562d55b02fb546 -89a0acff7fb1bc1fe0fbeb545c88350d -89a0fdb1f8b3a5002be819a6f6acbed2 -89a144cba88aa1241b725e25c3c13ed3 -89a44888e6c4dc32b7200b86159de3e3 -89a603e8f4328f2f18a4c815fef49e0e -89b565afbebefc49bf1cbe90bcfbc6c6 -89b6b0884065833b2957063c8d337e2b -89b7d4f9862ef2cdd07e430dcd600e2e -89b82a5ebc5d44de2bfab8782a1fc24d -89bff0c9554ad38864489f3b5340414c -89c17555138852a7a765444339f19e07 -89c2e04730f5437777ff3685d00ac406 -89c5660783399e48904fdc87ca9ac1ae -89c5f0b4d7587e038f6fd0b32b9a2482 -89cb127aa990f4b83341e02c92a5ebbe -89cde0c21322884208d02a71f17333f0 -89d1410e0d8731f9e6d32914085beb49 -89d199215282a06ced19c0d51ffbf618 -89d1c46aba7b8d605ddfbf2349117e7d -89d849b728e38ebbd3e9174d5a5f6693 -89da1dfc3a5b8e447b9b940f2f5a9365 -89dda8eef07ffd29633e7c043a4178f5 -89e27446774c4de4ee7dc50a5e842e57 -89e278008f9ba108b2b4af1e368099d3 -89e34bcaa1ad2b99fc3978c6d2d06f98 -89e4cfafae505da5bfc19b2f8a0d64ba -89ebed0f87cbd6805b23eb9188181050 -89ec405e35e26bcf77b4f831633e731a -89f317140b6055d40228f8b13444fbfc -89f92de3d34aa227526d212921ef95fd -89fc4b6aead3aaede50f92875b459747 -8a0160cd26cc5c398447b1448a096040 -8a018d2297a672db2173d8e648d01f18 -8a036c84ae0f63749b443bb05268a372 -8a040fb743f0f88a4c02d1a592b8260d -8a057ca2ce5b2075e936c111f4dc9638 -8a0bdfc6406a1a3a84d62da2a7e962f1 -8a0c21a83267c397265405f1aff167fe -8a11991893a319fe2c40ee7a18954e36 -8a16c1e3c873a49ca3e0b5803355d597 -8a19ec97333f9f8319c46b03b1ea6f63 -8a1b558453e693b13600bf46ed99dace -8a1c179dd32739f31e09c12d751ac000 -8a25c4cce3b2f3f4fa241294fb87ac47 -8a289fa00cfa390dfc2f7be2a93af629 -8a2a10b40d8715fe2a88044e9f84ca11 -8a2f3191c88bcdf6962d5be181b9d998 -8a2ff304aa6a8250cf6269043d53354a -8a33d2123914ec351ff953dd4a156746 -8a36c93143ae737992b8fd661612d982 -8a37cf3ff3227382ccb1cb6e600783e3 -8a39ee05b5e1429d2b8049244d49e11b -8a3e37c501a7268cf6b2c5f61e815492 -8a41bf38597848cef0154ae05f301de7 -8a4a231f34cc02e85d1d3d786a54b678 -8a4ba2e6cd5d9946bc10d7cceff77e81 -8a4e21498812aaad165f5dfd4e2a78be -8a506f978695407a6e2f82c17aba412d -8a52855d78128d54da5f20d008e07231 -8a535becd8c9efcdea2220fecf376cb0 -8a56d47c2c3a9b2d470f0499baa369c2 -8a5abf32a17a65811eaeaf7ca7bac824 -8a5afb5d559120d90e5b84ae10dfd102 -8a5d871cae82cf1f6484d463da064c8d -8a61aa2925c1e0dbbc2f951d564640c7 -8a61ae4abfadac1f030aa9f768ae7893 -8a64f0584ecad5b98daba1fe66145838 -8a6584f9c3b93cf25a97d7bb4c259ff3 -8a65a6674af7b91ccfc3c4ef95458311 -8a667d6e92d9542e4cb69cc5b5bbc9e7 -8a6b253e25bb0697a4935e303075345e -8a6b853f26451c455129673bc4e0911a -8a6c42141e96a0c5268d43ea25981f06 -8a6e3588c632585389b4a89c958743a8 -8a6efb1f1cb871cac6985518078f79b9 -8a73be28b66ad0937433b2ae2e846c51 -8a770691868662a1b134d6e30155a44c -8a799cbd54e4c0ce81d39f31033250d6 -8a7af7b1770df68688a073da8ec7aa82 -8a7c8585f685e14712993c35c51ff359 -8a8286be16b368eaa348d7904cfbf114 -8a863f3054d3c35d5d6dc46967b39b0d -8a892dafc2d26fd64235093d1b228355 -8a89dd3cbbb0253bf84b7589621070ac -8a92555883a159951da4e1e519cff22e -8a947054b85a2ba47189d39cfaaa067d -8a96bb224d324fd3d99eab204be84ddf -8a97a656afecfc0a13065edb24e1e178 -8a9d4dfa11755a8e5775393f74ad78a7 -8a9ebb91e0897950256e0fa54bc1245a -8aa21eb256756bf83943b10cdaedfc10 -8aa5c7b106a968d7463865d3b9b2c336 -8aa5f6eb3dc49d9cbd966c46a0b4a54a -8aa6f836006b2744a7f2e506457498ed -8aa969d5028fae05cc68849138ec845f -8aafd1d3e0b0a36d574752afce381d9a -8ab39ed8ca656aabcc6d2a9828a35687 -8ab5cf434446562ce8b783735a2c8b1b -8ab7f61287f73359f9d1fb226ed13d51 -8abb1dac3f140fd42fabdd08d90eb316 -8abdffc2469c1b5df727e361321c3145 -8abeccd55f2f13d6125e7284fd5950aa -8ac10af6dd050ee6b0322d86633f72e4 -8ac4a65b87e45dbf63144fc62a315f0d -8ac9ae4dc71aeeb9d1f6bd4b543862a2 -8acacb1a340257cd71f43a1b8fd7a2b6 -8acc5ec7378bfd8cb109e7b1b41de5c8 -8ad0178e7a7e08decb1bbf8ea0cf695f -8ad97d7ba8379b12b745435b849d33e5 -8ae4b36cf19b30b3029241fe90915155 -8ae57edcad71123777922674ec57ab45 -8ae6bb3aef7df0a83a4897c2f3cb01a8 -8ae99a8183fbc23029476eb77dfde306 -8aeabcf20d686e1d5a51db008659ad02 -8aebbc4a8db32ddb3072b203d7859540 -8aec8bd10f2bd6d922d93a62a5334376 -8aed2e9559e401f59434321dfc92b0de -8aeecab5aad55e90071c8d7acdd4cd4a -8af1aefd2fb0fbf15bafe3a8b16aed05 -8af235481608387e49ead9488dd3a695 -8af3421d4635154c146c255597068404 -8af592cb2a0c6af1009725012e6a3e83 -8af5d93bf7f43d54556bc432ed0490cb -8aff5458f3963d60ac3627e1725b379d -8b081322045e8dcf8b8e263cfbd404ca -8b0c020687613ca1d1eba473014342fa -8b0ea861ec8aa0443dd3f5ca40753c5f -8b11087b8883313a476f12fde37aa269 -8b1e38c7c3feb994dde362d6c6fefeb7 -8b1fbdcc970a1fde16c6c6b75d66e4b4 -8b22d28c38ac1d78c2104a90abcb2954 -8b25026dbcba054ba17ba165c4bd5a9f -8b33703b9b4144cf814f3ece4de14f47 -8b3a293fc65bed43c2223cad7a229a60 -8b3a33870d1ef4677f0ec27baf42cb6f -8b3b7052cd530dee03f1133c5871453f -8b3e690a1e1cd52ad2bfa79d84c963ad -8b416b22854a40d91ec5735cb11d55c1 -8b418059afa7b2bdcc560aef94d7b199 -8b41f556daf93d810c884da29b0c0afc -8b483b47c9d08cec5c1ce1413fe58f2b -8b4cce257592e3642c7b870aa73193ee -8b4d75995367fcf630910819b7e85a61 -8b52c4d0ec972b72048acafee5994c3e -8b53b5ab093468fb958e09227d93f476 -8b5599e6567c85b13dd0d54d8ba02dac -8b5714caa539737d515b54a2e7f6813f -8b5c3a1f70968b4ac3212d6f9334a527 -8b5caac1fc15573ea354aa5db05e09db -8b5d1a997da00ca395d7be81ba021886 -8b5ed3dc115ccb7dab209e24edb9ae3c -8b64ab727581942bb7caa209bb2c5e0d -8b66cd22f88078df20970175fa6b40f0 -8b6771f2273fb230cf368839a7169eee -8b7027b606d7f140b427dbbd38f7a2a9 -8b772686dac2e67e9f435fc621fcc998 -8b7bbb4414afe313c84749bec55017ee -8b801427d14ef0b1e7c289eeee4e0567 -8b8a865a84ab9507fd7c25c0fe87324b -8b8ab4aae35f4da2bbd84ef616509efc -8b8be6c831b165d0affa0783c36b06b3 -8b94ecb0a9965908f785dd968f489a82 -8b95a036ac6577336f69b0a1c4f33ef8 -8ba4f5a9168eeace34e6f8ddadcf5f8b -8bae9f958c81d6bdc61c2658bb5f384e -8bb22806a74fea8a96ed691144b66e77 -8bb5244f5f0f8e7300bc2cdff21b0664 -8bb5b588da6c0dba3cecd7f1db492f1c -8bb63cb33e7c47ed9f2b4cee709c1b2f -8bb965578277c895a15b6be96886fcbe -8bbb75e696e97380209152abe913343a -8bbc024a1b59881eb0850ba6ac54aed6 -8bbcadfb79be01a36badb667e5795df7 -8bc24f47416b3052c4d1a91d0efec774 -8bc6dff2ee45be0ee9d25a3608d37f9f -8bd4546cb622ffa2d0ee2c89944817c0 -8bd54c128b7d1a5bd3c336724242f63e -8be0497c058029e7d7eecfd4a7e06c1b -8be1edb8f9fd9c5e624cf895ab84e0c3 -8be964e0aba26d47f049ccbf6c3d3cc2 -8beb6e2c52cd946a3fa7512d7251b3da -8beb7afb6656fc8cfe6b1ceb04bee53e -8bef11d2d5975c4e362cd035ef18f21a -8bf948af6612dcfc044a93ea76c04663 -8bfe26ceb569c50353e396311608f296 -8c0235cce1c43daa144160c8eefd7270 -8c07011c105c96187a9fb9005fd2e96b -8c0b933e62ee0781777697c17c0d2053 -8c0fe97b06aedba2c505a69c10e8bd91 -8c1426170b943e3d2ad7f72b02842bba -8c14d5b95e6f87f453094360bee278b5 -8c1824946aac4a85c3d5a37a6d26953b -8c292b72897f040b22617cf9552c49bc -8c2c7869c93683547ad52900a79314e9 -8c2dfa7d855f61618ebc4e3e4d61333b -8c37f3a968eb44d0f1ee4f63aacc6162 -8c3990e287ba774f1038efc819e3a57e -8c3b9059cbf9644ad8a72f360146300e -8c3fdd225f12364e94b0ddd245f24dcf -8c4b76d116a10bb92dbcfc30a4a2cda7 -8c4c7c3de220c8a771d0421d583202a1 -8c4d5c0e0bbd74f7050059a375b1fafe -8c4d61ec0af6cd03e5d98ce98b95bde9 -8c52e3950463af2503f20e1d72532d6d -8c5943d95dc7fbcf7ed7ebb403e447f7 -8c5a1603f6fb5099a41d43139b862c94 -8c5b37494551a140723c785b0df1bdf3 -8c623588d1ea90f6fde1dfb166067ba8 -8c67ee9cdd5596da5789230f8d197c25 -8c6abde21bd20320c36a80c31149a0e8 -8c6ee67f6d3316f5f4325ab3d0a0677c -8c716d08a5586215304b0a4590e67e24 -8c779038176a5712e9a4dedb0208938e -8c78cf2ef0e6932049ec9a7845692f9a -8c7aea267c12643cd7d3ac9d09fa70c6 -8c7da809b3989e69ebd9c216b9ccb7a9 -8c7f97a30686d314806ab388f94e2d4c -8c8878f66fb7e9f14d428a24ab34e3ee -8c8ac0302f307a33d7ab2fdcc3296e5a -8c8d789b9a983a1ce2128cd0dcb34fac -8c8dedd80653b0ce41b1f954f49e7278 -8c903fc813353a148b97d1ae22438e93 -8c911b33fd0e7353c50a243d217a4220 -8c93e1ac15db5eb6ece6041460425153 -8c950f2f5862ee4812283ff555d75b57 -8c9c2744a3617c558af1db20df4d59d7 -8ca2f81468870fd689889aac0e97fb70 -8ca54f8b7a17bccb98878ff8ff352c59 -8ca89bc7764741dcbcd25eaea9be770e -8ca952ff5b5a9fad2bfe5f23f6e2fca1 -8cb33f31192cdd3fde9aa9a6a97bb930 -8cb64fc7168f637bc313c3bef3fa96e6 -8cbdfc05d921f2b83fee125df0630cb1 -8cbe1dcfb1778f1cd9af93249fdd734b -8cc22136ec6b2f93fa11848418762ee9 -8cc488605e7dd17b98941416d78ebb51 -8cc880a20c3f1c1f0d87cda10cf1199d -8ccdb715e9abe071d414e5c76d73df0c -8ccdbe5ef951c75155d985932082107a -8cd4a926ff21a7b845c5a46070d343b2 -8cdb78ba7c1578e72c7b7d9391df4813 -8ce0a1ee58ba3be9d93a9b49035e74e4 -8ce1a0d2100d307812bf390e53c372de -8cebc5e028aac0e507e133da8ae83e1f -8cedd8c7f6b7f25a263692ad452e40dd -8cf219c6c2c5e261c9b2a06512cbd3f7 -8cf4fe3c3cecd5b57c8d15f3ca9af249 -8d0779c5d7f08572e84345e73b4c9dc9 -8d09dce4cd60516615ffe7233e368164 -8d0cd50fd9b2271fff36a7b6ce69a4a1 -8d10467792a13d9e4d1265562f77a35f -8d141b5ad8b26d9fd2eb41cf8c6f19bd -8d1752fbaef802e503b0e63b8a07b842 -8d1d91c5e500d8d9ce16eb9ff7131cd4 -8d1ebcad5d4a3d8d3fae8bb1c9568fb4 -8d1fcfaac59395212f322bd790b1f429 -8d208ea370b796a08515b90e1d8333ba -8d2177a1eefe9cec143c6b211a87e43c -8d242eaee558592397ba1d577723b1a3 -8d33b47b52e901ad17b35e224c847702 -8d33ba755807d49ed0bae51a91ba3fbc -8d3583e948e2ac463725f1287264124e -8d3dcdfc13295d7c8d24f029979f324b -8d475b590ab51ac4f1fb7a7cb5475c8e -8d4a4780aedcc4d1542a25bf57ce5c70 -8d4bad225c98b4d19f03c23f13b40aa9 -8d4bf9f8fec320d956b85ae821bfc79f -8d5496a74c59b347c391bc4ab09ba2fa -8d597c48d50528c1a725d39a6252dd1e -8d5adfff623fd22bd5653151e2352752 -8d5cd25d6dd0c81ef89f8c590371eeb3 -8d5cf7ee49159310e8b78628bda5653b -8d5d62e989a955bc510b5a844f6f7230 -8d5dba1ac484bee0012e72ecee7ceb99 -8d5ed8b719e33d95ecbe15a299268c7d -8d64d7ecbb398f7fe47c8836f609a604 -8d6631fc4fd413264ae9bf564ec386c5 -8d6b516f104588e8898fc40964b33501 -8d6f2e9046fac7d66d3d6360058e5da9 -8d70979739277559fabdf90f4c91ded0 -8d72f5883c7d47f6947f7fc6c37b9ba4 -8d78e52033da94cc0b335aa01186a4b7 -8d7a92ba5b91a9221aaabfb9ef55b4a8 -8d7c4ad83d47386360971a7bed959cb1 -8d7d30acd64313cce781aaf3877e2082 -8d7d837da0dd5bca172a6e04946ce705 -8d7eefc9e8b07d058a344923ebb20f61 -8d8871a03a339cf84280decc9686d1fb -8d8a1cd6a65a737a40e60a77bbe00737 -8d917aea9210b561f4ff5f7a544c24ee -8d965aecc574eb5c73be736df2ad670d -8d99109cc6f0940841b8850331b716af -8da5c721fab86c64758b061c4d292284 -8da870b1d850914c18847e2a57e5b519 -8dae750186a846d02bd8664e8fa09304 -8db529f46be7c755926cf83aa0f93701 -8db54250cb1bc9f024435889ab582a71 -8db55b67c0fc79a82bd3e53756559c89 -8dbe161a814f25d2c9232d2c209f1043 -8dbec8287723f891c3d548faf7c75a6e -8dc04b94da7f2dcfc9663f3e82b8e0ae -8dc1388173deb626ac65e89f8a18e0fb -8dc32c174e48a54d52dab9eabb551767 -8dc3fa60a38cbcfebacc41885a78865a -8dcfceb39987f94411b24bbde51babb9 -8dd172c56202dc13700c225bf9afdc1a -8ddecb21a27b9ceb9254e0be9aaf8baf -8ddf5712664c55962363c9e39d695a9c -8ddfdea4545adbc47aab93f1cd1036ed -8de19b2071b4336f1c89ffb1a610e518 -8de61d5f54c88c28d1c3078568e6dda4 -8de7dcd887225964a1c1057835fe60f8 -8dedf964458d1b180fad2680309fac97 -8deee6aeb279b0b6ec0e086c645b7b70 -8df7c6da39a98a26437ef23cee7fef99 -8dfe24c1886ea3fd985b4a9dc347acb7 -8e00526b9f62e662bfa229c8aa1edaa6 -8e00b586267fb4b08e0b1a22c0927c4c -8e00cd018e7e5ed66b8d191fc1b2796d -8e030fd955437b08eb1fbb0f28686594 -8e04f31b976565043ce74361b597fc03 -8e09bce76f0ceee85b02bc83373de821 -8e0e85016039bea8affd4e783b894672 -8e11a831d45a83104f5898a6bbee1c12 -8e15e9c7bf8eeb71bafe349ab94b3e6a -8e170bc0262b7ccf6f05d1181d5e779e -8e1b704c6295b6c5c87f4b41e85879ad -8e1da1a3bb697d92433bff919456594c -8e1e32ed1b27e05e2cc2e1f83b5bfabd -8e1fc6743830e75039556aa30b81e849 -8e24443c0cc133e136d87a96199f8e31 -8e2bd0cc7402a30c9692ecc13d0c5112 -8e2d209545520181bbaa304142eacca4 -8e2df3499fa05ce52753650d2c04ad95 -8e30d103bbd45f2cb961d86803d3d718 -8e30e602923c9999ede9c0a7c69f93fb -8e31d6658ed3f4330f545236a8e32734 -8e3aa245acabaf2fe0591d17b3b78fc8 -8e3d76482927b0ce82022d2acfd5ccaf -8e3dc0f2b03881f22f99dafcaaade3b6 -8e3fdb154f099c8e5b20e0117ed65346 -8e42379da0124be2742febd38433a3ed -8e473263a9b74e8c84da86443454ad14 -8e4915f7ef5666a4e42cb34c9738da60 -8e4947a4f10713a833260978da0c4a47 -8e4ba386cf6e1f024a67c4c6886619cd -8e4ddf0fc40073bee18c0a2cd757cd74 -8e515015595f4fda24f541bfd93fd816 -8e55f6a1ac10042f4d63504d4b702573 -8e57024d1545207a41c70ab82eee28c7 -8e5c2212da7960a0280a7f7f89f16c03 -8e5ca0ae8b56a36b977e8d41abc99579 -8e6824c01d170a0f6896d5fe1302a9cd -8e7390805babfeac77d98cf91a7a7b7f -8e7626cecc7d9a52db659847712a8b06 -8e85bb5053b5ee758bb90a80f40f06b4 -8e87a83b177e040663169e2c874b594a -8e8c831a4deaae5323e6a708d212547b -8e8dedc7c645d16eac9fe82aa6a1e049 -8e8e888bcfce691e554157a14b69e95e -8e8ef2be64252258bb46074dbbf2b392 -8e916ec45ba6ed08a61de23744bd46f4 -8e9ad87b3e5bddb20d03283c47b7f016 -8e9b4cf82707290a9e47f7412d6b37e9 -8e9da9938dbbeea4643a7ffc5647e6a3 -8e9dd5d70386370b323b2f3a7ae77f08 -8ea6336aee6dbd25e0eec48c86b1bbd0 -8ea70044976072f057a4f9366ab37f2e -8eadca9660c0d8c28494dc138bb19177 -8eae485e8dfa384efe6d1a72777bd6ba -8eaf6852c44fbee4d5686bc31bdf03ef -8eb7f88211f18185bdc65b6874ff6c0e -8ebacce065b60edb4fc2adeb386bf445 -8ec3f7806715044e5e07b288721bc2a1 -8ec55942f8ba1fa7a7ccd30b36d75c87 -8ecaaadafaa4f8f0f173cbde92a27b6a -8ecf56191c0548bbd5c0956efe526081 -8ecf8119fd329a8dc0afff08c70752b2 -8ed7582a71f5e017c6f8a52ade39db8b -8edb5698d72aaa28b01a77be107076bb -8edbaf58eb37b0cc81e96d6b9d1face8 -8edeb6d11f406d5c2fa9d7b65ad1e4de -8ee8b927276fc6cc9b0b704b8e1fe743 -8eef4fa4958dab6cdd7c629a56c8fce0 -8efabf98a2105872c746c73e7e77d862 -8efdbed41be5e34b564d7f7330f94e06 -8f0285818aeaf875797913e9cc924d66 -8f0e00e8854223e3396d6dbf4094e2b3 -8f11fa754db7461eb4258e44728710cb -8f183986c248f13a021a8beefb294506 -8f191c3d0fe746fd0b34fbb25860becf -8f1cc6206fbb4b6bb2c840e9cd36101f -8f1d12ad0e1509725d1e021acce0d0e6 -8f21ccf33342422550123741773742c7 -8f253aa1e98173c7cf091b1bcfdbe5ee -8f290db0f882b04989047693b33b09e0 -8f29a3dd4b0e0d9436ca638d0ee446d6 -8f2b449720975b8780c45650b089f87b -8f3783b747e1399a858a18541226461a -8f4124785124590db62c7cd5a180a6a8 -8f41263bd0cd5c8de627914493212873 -8f44460dcc77543fda468a1df8929d24 -8f448608f9742d02e345e65643a8783a -8f4913596356008a2aef90dbed8a9cab -8f49c7ab0568c1c323378803a250886c -8f50ee4c49d2114500edc6df0971ae79 -8f568e606a86ac3317e997f5cb2a656b -8f6457c9cc802a8677a679cb65b44d56 -8f68328c000a781234b62025888fe1ea -8f6c2cb48bce2a0cfa9dd85530282c59 -8f7069841ac5af6fe46f82370da2b067 -8f7a0a6001640a45a2311c4f0c878ff3 -8f7da3029a5ba5a8b46043abd36adae4 -8f8020f80fde3e2b779323b9c21037c5 -8f83a53d333ffbd203ce134a32c63aa3 -8f8a2706708d7b978434bd1b6bae54ec -8f8a38ca585697233e841f5bacad593d -8f8b08b0729bb8b8e44b57b27a648c62 -8f8f7e89e1a28ba32d4a109088248a15 -8fa47d1a79072e7cbd40fe1f37a0cf49 -8fb56baf14013de5c230e1fd9e8e9711 -8fc076e4425f30c9b0736208fe8b0dc7 -8fc74ca90d5d6c1808534f1aa0e84f26 -8fcb463f4c985eb9570a39e0764cc540 -8fd4bfd7d9180a91d4de090904628170 -8fd5cba9dae750ab310df04988d4b505 -8fd6dfd037b7c8a1f9d3c044f3517a6b -8fd77ac19e125e9b0adab901fc893229 -8fdc0a1080b363a8799335215075f63e -8fdd64b95988b2b16954f3068d3172c1 -8fe7ebccf14502220be74377b692bdd2 -8fe946fced3a9f83d858e08e91de200f -8fe9c62c50edb317f4a1886e37712863 -8ff43001bfa0790801809f3380cbc6b2 -8ff51c93d92f372a46cccf353a56822d -8ff7eddcc5af10d77a88d9e6b8d48627 -8ff8cf96e7cc5923adfa2041142e88fb -90010f7caa23e4d257f2cf6435e17167 -90049b2910fe918cbaf52db263c4b117 -900702bd7bd267dafd51c57108522385 -900d3222e79e6031987a7704fb7e4077 -900e3b13fafa6500b12b88703a1f0c23 -900f8e808259be7ddffff7b4ecdd5492 -9011cd6083a81c456dac02c8ac69212d -90189010c22cb6b6983f7c8c09a90d2f -901e31fe68ef392864c6f956feeedc4a -901fa22595e69be00eba9386b92458f1 -9020b39d7fac5f3ac7e10f6f7adb3943 -90219ac9602e20227f734c9f78311023 -902afb0059c0c8ab1750bbba3e5ec97c -90318d9b69b8e26759f1afb595838105 -9034f3515ddb27dc0b7910614160ef1c -9038c3484e3922f7fdd5491fc82f6e6b -9038f9d79febdbe36d0b532cd79d9427 -9039ddabf57192b719688867654fea29 -9042e1a2c33d1e6b569e9e4bd63501f3 -904445861e305194ab7ec532bb5a5da7 -9044547c93bcf483b3913d148650ae5a -904d62f65272316adf3eec3108fed265 -904f826fb200ca0a540764a0ec741dde -9053e589ede5cf799b9b9596d42d20b9 -9058281d66bd641893c8fc0066e865aa -905879904d283dae017b42cadc9af505 -905b9c778b2f955fa49a85eb8adf830c -905fff028c0a0bc315adf0e783da871a -9063f2370c14c154cfca9234885c4a69 -90778373b6fcdd37f45db92e031580db -907f6b8327388a7a3a72ce3fb5edd3b0 -908248ce192c3906d8f83ab5cf7a2235 -90852a359648c1a41805edbfe5540ae0 -908d52a24a4c95926eafea098d6fb559 -909bd2c856915de4c1432f06095ad347 -909de6cd0a277184fbdce642deec7f7d -90a43d930b93befe7693d0b3fece10aa -90a6e211eac860186e64f752bc41591f -90a6f3c9c4a0509ff57387649ba112bc -90a9203438cb5db0751bdc41fb5534df -90aa1408a4e2cc66b61552c610faed09 -90abc7257ba68e1b26bdfabff2e37556 -90abd81df9f214bf39d6ad08b26e31f6 -90ad6dae235fd97fc8db06e93bdeb122 -90b39a519b513a5d6349fa552a6a008c -90b9c1844df3384b1bf404db7b07931d -90c2fc17b412c682b8c9d58746c56dd3 -90c41e182da90dd439027b74d7ba89ef -90c487fef2c007e430ffd88099321613 -90c93067c632d8e8735a332bce14702b -90cc0edfbc8632ab7af06128f160c33c -90cd00a685fc54fc3acdd4c244c53d4e -90cd7c737184d580cf2ab029ed921a0a -90da5195818a765b3bc2d3c483938a92 -90db11fe0e21769498f3e3b38fb94ae3 -90dc05b61e06ca2f4a447a85b780a3b7 -90dc6093578e559647c7b36c780db3df -90e3a63f91eb2a29d89410b2aafeb1a8 -90f1874de26e9ae12f99679837d372ec -90f216f22ce6c731dd9143ffbfd483fd -90f2441259d0881a58f7bf896f086913 -90f385db526b4e554e243ad42c113116 -90f3cd969f2d6fdf49c56ed2c31de8c1 -9107e8b2de0617006b077cd26e3023c3 -910ad75a0686183650dc22e17e58b3b0 -910b3234f7dbcfab8fec7cd532dd900e -91127d8b2344ac59511172c29d5c02f7 -911ce322f26b730d7793ad58daa2647f -91246d1e3d47ead307e0c54847004c56 -9127f03e80d7cec9f679fc14fc48096d -9132b0fd15ef5233a651f928984f1697 -9133d4a1c60137a2a29f2aaa8bd47224 -913517b13984a0d4785fa0227ee5b783 -9135e0f7eb7f1e0c8e0d8dbe0baae4c7 -9136d8b1e9e69cdba1aab4ad818a5fe6 -913a89fbec23003dad940caf52c349c9 -9143b729c61e60fc04cbf4c9ed53cb7b -914db87790fff93c94ebb04bb3e47e2b -915c17fc1c4b63db5d8b61b4301e0029 -915eb6310c66c21fc1097d58a74e80fa -916229969c61eddd7bb47cac832cd33d -9164a6d3d761b321b2fc5138eee65a88 -9167a49f040f2a471ff86180abe2a5ab -9168f5252be58d05fb0529dc58cbbb27 -916e9a0e9aab0ad38c240c7a75418373 -916ec77160fb30343362bbe4e82657a5 -917115dc40cc3dacb72abf2952129861 -917465f5d63e65ff121ce73c0599be4a -9175f323276fb6275836aeca4b228777 -917bf5da59817e265b96d82f6944c228 -917c81144c9c01671be0c3871c0e73ee -917cd84932813644b972af5b0a55adc1 -91838126c4c21b1ebef74859320dc966 -9183c2674f84d031640fcda087b89dc6 -918a81f2455b4e5028d40337faca74dd -918bc9c5ca408c47df5b2f83343d678e -9190f950910fc725470ba17b29095f15 -91961398c6a1e1da8d27e1a272727e88 -9199df63bbf80ce2ba324f4b1cb7055b -91a1155c658ceebac98afc9851ac5b16 -91a1daa20112800c1de9e41081220f4b -91a2e44a8f6db641ae68e5a4d00e8259 -91ad37fff6838678b4ff7d6765c67e82 -91ae8e002c44fc39ef5c6bd86bbcd352 -91b4fe75569911ae520237bbeb2eabfd -91c346fa3caf6f23c38cd4e33752c099 -91c59cf292f5aef1e1616dba5e71febb -91c657fe4fe1205c85c325b02fa5bf99 -91c7680dbf711a2f493f1f03ebdb1759 -91c81b996dd382db282c1fa59e9751e7 -91c95ff4b8d5f9e711a71e3cd597b467 -91ca4d098420743a07d6579fa3daaab3 -91cdb0f310407dbe2aeb9bb496bb5e74 -91cfe5882f2a029cda771ed58c7b3a84 -91d3b782599a36bfea56c85f419ecb5b -91d3ca86eec6fab8f0031e8b579812a1 -91d552ec6072c9e548543478664d8dda -91dc744d529a275b30699ea623ea6ffb -91dcc2ee059fc3bfc6144de24ba6768a -91e5af21d21c715aaa47d60628a6c8a9 -91e79598034841bd9d8b922dbde1c040 -91e80267b96e6bfd55eeb63fb1e68adf -91f08ad481ab7aa7c85ab7fef7ad6a6b -91f19c02e08cfad6e36810e60d132367 -91f278c7584e112d090a31847ed7cad9 -91f496a941a7c76f307da0ee26856317 -91f4f3f6ac39b927e82d877e61e8fd1d -91f9f2eda30cf79a3e677d9a1215f5cd -91fa5634c761846a94136ed32860845d -91faa0d4eca564cf57201cac31974d7c -91fe16898f6a311a6837141383be29b8 -91ff0ec55f1100fd30638fd71b93552a -9203836a259272de05b13e834ba5560b -920709a5a54cb065568d638b50c0a2cd -9209255985027cb5b143148c01fec03e -9209ad7f53c39aba9cfed276bc480b27 -920ec0d328ed3874cf6f61b882cafbaa -921b95f850196df41b240905618df4c7 -921ff9c8e341395733e4679b0beb9008 -922398ff2c7e3ac2f4e3f44ba1645c81 -922ca950adf15ae879d381ddd2c47ac1 -922feed288785b0fefa3405f67f4a613 -9234144289e3a560135fb56104aaee76 -9234d943e1d83c0bd638696f62a3de64 -92350414cf21e6af364788ffd28e06bc -923737699969e6f9435b15d5ee4a95dc -923af14d1a7d2ed28352f7af31342325 -92440c86f9ac2a081800e3babe1e163b -92462c46c5e3c3d8ef2a033c6a657527 -9248f5db79e8a67c90ca0ad4ade91799 -9248fd5f235ecd36422f97ea8f7b9c60 -924a716764dd3232013f4206b6b795bc -924bdabc2ebf48a51ec8a89224e90fa7 -924c7c31e33b0bae559ec5091d991a67 -92558c8a8d6beed0cc835a688e092e4d -92566a71f5f86ff71bf15ec6ced0ccc6 -925e25f2ad8a3f866fcbe2b9d5ec4972 -925e6c6203a1a8f65e11d962ba800f6b -92655481d6f4e2c2588e87edd8dc78a9 -9265756b9834fd66baa76c5f52610795 -927354d63e839b46893ec8d4c74a6055 -927408ccada9cfb21488048a991adb97 -92764213fb123a13c3a1d663ec8e94b5 -927646f37d12520a2740974ad5398667 -9279771e81aa5e215f35c796075fe99a -9279e6b25e0f9de0b0477d3cec3a0fc7 -928040daaa04d8777a57c5f81da3cbed -9283f06c7596a332cc416af5f35c1143 -9286a5479b522aea3dffb20f55302ed1 -92876576c28cf831f4406d39e8006be9 -9291a1280ea4a8ac0b9eb7c85701c59d -9293bb1b1e21d35baf5e1e48f822b908 -92946ec95658e8322506c216d0f75864 -92947fa4e9e659472208100887d86427 -9298d0fdc0d96df5d0234f862261bd7b -92990a24ffae160918b1b42415f9f663 -929a8573f9f69c172fb3cbdb1931e5b6 -929ae4ea89a9729d0dfea1d50e650dd2 -929efcb17b11cbd0599b347b5c8fd4a7 -92a856ba24eece8d37ff32eb62b31be0 -92b2e59999bd3ba7692f546cc2c894bc -92b64b9960af990a09b348cf1890f9d5 -92b65a8d7c6b858f8451adecf86723eb -92b70ad63af2151b6476b4379f9775df -92bd5eba2fc0cc9731d8377204034d74 -92be3da40533399f8bf2cfe2264283fb -92bee067a187e9003a169f0ca6768e89 -92bf95c7a84460c76f7378db3206d695 -92c20a2dc5fa66339f34d28a84c80fab -92c36f053220afd1ca3341fa9d8cd582 -92ca5c3f1e95634ba0e7d057d8177a11 -92cc1c96d19bacaac8754d7027190536 -92ce22d54dacbfbf249df37d3ada007f -92d7ae1ba129282ecebf562d851de3fb -92db1ce2b982fe1bd04894fa92923ae3 -92e0db778c9ba7d5f7355e62949b0859 -92e4e8c07402576e572cbddde5ae115c -92e8348bf1955ab2affbe4873cd19723 -92ed153def9c0c93b55fe8b754b306e3 -930e1a7bdb1b4f181311db2ffea21ae3 -9320ef5c25e1367656caa55452425f86 -93241cbb9a583e8e8c8de670e0c257ea -9324327bbdf15f6bde755d7161bffa8d -933805e1ec0c210306ceed2cd1d615e6 -933906559f6c2d466ba71f53eac099a7 -9345ea7ed31bb22b264ecae9a0ba5c0d -934776c941c5dbe294eb21e5746951e1 -934baa26cb6a7bf1201973f0bbbbbe78 -934e5f9702a847d7059c4aac35b2c7bb -934ff86b55e92a5e131e6913d8262a6d -9353d2a619bbb14c3c4cffe3c7370fda -93571f86d3eb0a5d1ec22fb525c645d7 -935db2eb3b1d51a040fadcc788702fa2 -935fa61b925309c35973fdbde2463a26 -9360e210e7f6d8c4ffc3e4e8008f3dbf -9360f5a2f60feeb4edef047a8753c599 -9361567ba48d4da25caf0859efddf48d -9363f3a7a91d8fd21918125343afc332 -936acb0b31a4a9afd68e28137f491bbf -936e013b89a70078a80ddafbff8ec029 -936f1baa4e4fc9bca398fc6fc5b91490 -93727b5271da8e236eb12e947faa8298 -9377c2f69e9b6f793e03499392301fa4 -937bec014319643ef5079f2f71c9736d -937c5d1100d2efd26434f53a1c5ca038 -93893788bb959d3a959f60440a8b5930 -9390e0932c478f9aee409fdd48b91159 -93930a639d41d484c4f3433bc37d95d0 -93970522e15eb9d70c0a525949a88346 -93996b2e604d10473164f6d41bf5ad69 -939b25285093208b9eedba725ca6f0ef -939c550b4ce776fb50e4a5ca69c6cb97 -939f2e9d93cf60c9055e7d295baaed06 -93a0c9093f097fc53c4179dd01cde90a -93a5a4b472637a9a3c2e6c5282cebae6 -93a678dbdcd445cb18c062e2bae5aefa -93a8860bad9f442ebe8f32db068db6f1 -93ad17a81fefbffbeaa07c05a40cb6bb -93b099a0e9a7eabb7634301ba063b4e0 -93b0f66d51601ff783dd2639b9471e39 -93b10baa266d5c2f0b93ddd0e00624b8 -93b266a74e0f7c876d7a674236721550 -93b2bcd61c9a9dad1aad0b358045c2b5 -93b9b9c660169523cf5532267dabfc94 -93bb6770872b599e7ac30cde27bac5b1 -93bd9d6ed3eb8ec532c03a30df3a5ded -93be38a572eee13990aff0320ac0a306 -93c1ead2a8f6cf7ec93b6d971641a485 -93c47adef2a206c46114d113259e0e7c -93c6a43bf364d236e9c5c6064db21b2c -93d3d015536d80f85be58d0def86a4a9 -93d5c2f73f3f09d2386966c547d9b702 -93d735a7ab804117acedb43919b8c434 -93d83aace85e574c50acd45f4b8d53bb -93df4c0ff19d24f641053df578c5e553 -93e216d9c5b5aba1ae1fbefc98e77227 -93e443c47a5ac9fdb8923ff179343b29 -93e48654708960e25631eb3fed231d04 -93e4a46fd1a0ec52734941a304c69cbc -93e87882531bed17afb38e2dad7fbc1d -93e9b75ad50462a4dce621271b03e5d6 -93eb56567f3efebd3b8ad384665603c5 -93f1d6f9bee5e8462fafd7b6a29ee149 -93f37167eefb615c9774a3d2e68e1e6b -93f59f428114c83012185a1eee9be70a -93f722ba149f123f93fa7b632b04a20e -93fb852a3ec8ecc1ebd5ea0c7692b225 -93ff8df437e76a71e334f696e1c36e80 -94014a826be5662f5bd094fddab035e1 -94065804c55c29e51daca228bbcc408f -941c93a948f9df38d243692798d463f3 -941d95af16a53f937f4ffe315859f7e8 -941dffad0588c4b292fe17b3c3fb7893 -9422fe83700184d381c3c709c24ff2b8 -9423a90bf9f82bcc79cfe32d5f852d87 -9429209837ba8febe942828a72dc863c -942d688ab776281cbe1d9ee4ff77699f -942e459ae28f91e703979d1e11e1022c -94313e083cef8a45eb1570fe01f4197d -943468929215c4c4cb35c0430b073a2a -9434fab470b1bf09d1f8c4dd1509192c -9437d0b3eec4d150d987c8810c37b079 -94393b12529aa3921d8d466c2ea8b062 -943d82c81185239d756d98bc64d33ab0 -944060319841cdc449f93e376a160ac3 -9442a8bb48d6b66cee00bf7a5b1a1599 -9443487f24f43a532685f480d9f5924b -944f9b0a14f27e361aa1189467400d4f -94517438ba54a1e2edc710ee76267828 -9451c57f54faf305c2d8a84e04662739 -945565efaf47b7b1dc64ded0d167c60a -94563fa32bbf3e04677c78f71682f8d7 -945676fa148668daf4d7676a4c0b7eea -945c7cf7ed6b9972f011634d5b05da65 -945ef36d2d6e517fa53666bb5f578b35 -946105a2b83870897915c7e5bb2420c7 -94680ee1adec2063dedda657d098db94 -946a02c1abfd4810cab4551129fcfd02 -946c54f7cef97b0f61600571e5c2383f -9475eff3e9307a49a60cb39bebc3d342 -94773eb1ff628584ddc241aa195106ce -9477bdc5e8f6ac36adba056e1ae2affd -9477c09250c55e7171a9baa516cddcc6 -9478a85098ecebe800cbe12c119d62c7 -9478c074e6fc3d2edc432fe1751efcaa -947c637ffbaf93242f926337c58371fb -94855b96b2cee6a70873273348b6858a -948de0699e52a78f535cf24f0e3fca28 -94911a33fce6a0c208901f96c1714181 -9495a944f7cce258c09b1ceba9d980aa -9495ea31975a5a8f03ce9cae1866b8a5 -949b461ff3724a445693c1e31678bf12 -949e1cab9625367b8c1a30b5995defbc -949e5ba84dc8acf97ee6271b630ca5d7 -949e63af04b85cf2f1e58bed063d6264 -94ab78f0626943fb47b0701a1282f29f -94b2a347e17a744824fa165f60d19ba0 -94b4b7a2f25852649b73e34322259679 -94b6ead678277ed64e6bb3f67cbba2ab -94be132f4484f24dbef167a3a206ef0e -94c100c6b5866e42de374a3285491d3b -94c5f07a8b90cfb7a93972b062d94df5 -94ca72d28a2c00920380623785c53578 -94cda97f861d9c4b93f934c925c3b327 -94d45147b6c2e18842a2410af79adec1 -94d505de8bd81108ec78d5f1776dac6f -94d6b63d66d5426e8a53807975f5dfeb -94d8c5a640f61bf427c756f70bf3dc3f -94daf44ffbb463be0cd16e683a0a1da5 -94de6dd8c01c3e04f4bad25a160aaa48 -94e22cd21ee6e3d00de342b9fe3d3664 -94e34579459b8bb6fdd5249a5c46410f -94ea25775c150372ffeeee8e123f3514 -94f5067c4d6e006f56999e5284e70dcf -94f56a15311c43d3bb2a739bf1c23858 -94fbff43b3223c2f3d73190c36046017 -94fcdcc141e5109bed417719eb1e3a77 -94fe53bf2313ad8130d05e1a727a7ee6 -94ff062d68daa28832d806520bb1f44d -95048037ed45508470ecf6eab23c5f6b -95075c54a9b618a713962fa891445769 -950d1df99a097d79f7c5de4ce40809d2 -950e52a5cb3812ffbc5a0ec7b355d52d -95130e775a8450135f2fa28d6fa5033a -951b2962dc4d8fe0f7cf7de103252ded -9520a2e781484756d3582f07d8a39be1 -9524b7040c121289f60b645fe5287dfa -952ff364f02381d5923fd4790d33f324 -953b831b06422abe96859fbf55c6c3a1 -954028f053e6bd761edf9902ced8ea2d -9544074c11c70ed09ccf063eb0cf5c33 -9547b712351a4f7b3434e3d10f85478b -9554b89a01d708dcecc02c12df5d3541 -9557a40d962f06ddbfccb4e716670534 -955d4fdffee53e7481f22234bbcf612b -955e447882e800e34a1fe42d9fa05669 -955ee7b607d73a439f85b2e8570b941a -955fb72be04acd18ed8015b233f9a5c6 -956139c3436904ad26e8a639f5c01f29 -95618abee5ed2560a176b86c831e288e -956c205bd60918942974ce977b628bea -956fccd7bd72b73f2e8e4b3af064e39a -95709416186b211e59643efe69678a55 -95726306daad5705522ff2da89a2d5d6 -95742745a536962dc887b4efc6865ceb -957c4a5ca50886aab9f63fd2a89d7a78 -9581d90446a51f5dd64c7111e8fec095 -95846786df57b7367cf328c03c6e8d7f -9584d88b6a7351c209474463b22c67fd -9589bd9eba941a456a3a59cafcd3b352 -9590ca104dcc01998246bfe7db67aca2 -959c00e2ffd21dcdd408c75df44c47b7 -959cf332319839a01fc46d347c7820ad -959deb22525f32f72882ef46d48f1364 -95a6b603f17c6fe5be1d2cff298bac9d -95ad0a63f0cf310d2a3cb8005508d511 -95b8f1409bca511c85df2e1955401c0c -95baf1d0e47326066dd3784913291c4f -95bb70bdd5f602dc4a0e56bc47cd0130 -95be85b4bf59b5d2be452e9a0e45ce33 -95c01fa830be857714193e4423de3abd -95c08feb917e6d8990a0f5184fa403a5 -95c251b92a448929550c9ce60ffd10ca -95c9e9a582fedbcc84c66d7a5a31c493 -95d134677d40874142d2d4e8f9607933 -95d28f062450a2a992067ebc26bf4832 -95d5a5a570118c61d7b0d9d3d5c60ae4 -95d9b3a85c62990da03e29da0f49cef3 -95de1307cce8b146f54825c46efc148d -95df32ba76e4f9cbd1a12fd3136b0379 -95e349af5f1d42016da0eaabc869f2a1 -95e592a90964a00ed70fec0ca3ccae5d -95e5e25fb0fdd86131ff72a6fbab3cb2 -95e93253a619126cced4cbab5a69e33f -95e9efcba1cf43a5a8e904189f1ca84e -95eb06bc411c527628cef89509d068d7 -95f9eeb1d2a52337167593a25983bb15 -960441b76c2610932692b99533d34f90 -96081fc904881e9197c5fbefbed14d6b -960b423bc75c01b30d877e98afa68486 -960cfcf08e3f707e06dc7c728dc44ace -96114a6cc60f368aa63d79b41e6cb6b0 -9612a55bb3d270edb3ff48779f1b8dbe -961b60acd2709d82ab7d52915ba23659 -9625ac5ba1485edf7e351eb4ab0a8273 -9629fe9ed5ee3e794d399c1bf2856ea7 -962bf63c5e2eec7a288a7dcff5867d56 -962c4f7ec67b16a0d950b510ea55d396 -9631f57788b210d50bd95278112e8fe6 -9631f6852b33e78439807dd3eabc0461 -9637a77f223d8a633237b62351076049 -9639cadc98735d4484ebc753e1c70052 -9640daa6500892fbd666dbb246317b39 -964329b46929f3630fa52d2a17faeabc -964fbb997d35b44d4b8d9c8b055a9c4d -9653bad422ea9c9aee2089ecdf4e18ea -965c172188615b02fb42d6f355b761ee -965c9e390f0f05648efb5cb1d0549b1e -965db93df2f1a54f9692fe1fb16ac075 -9663d5ca4975684a56f0e363ff75c2a8 -9668abae0d9ea7282c7c41cae35cf973 -966aaa41b9c901eae0c4a836d8bbd1c2 -966bc855fb3c62d10dfae9134be8cf90 -96721de9a2ec101cbf50a79c1ef1dfc8 -9677b6ad6164e0a3a6dcad90ab9c7c94 -967b01a89ccaf0e7170c35d24980e158 -967dd42b2f10cedf4e203bc19c5b8698 -967e69b63c886d7634754cef39911513 -96810d3405615819120ea992307e6e8a -968553f95a27375498d30c7549d4bc2c -9687614868435e50c728fb858a88f4ec -9687d8567e6c5e90f2395f001f9378ba -968b565683628e8e2bd0a02775830bd7 -968bcb427771195307da425582bfad0f -96933e2083f795d973fbbc521445b003 -9694504551d94811c3b6262030cdcddb -96947baffc7b44c437dc8ad1b204f239 -9695b95cf5907c0bdfccfee325ad7c4a -969614fac19521f70d44fecd4422f513 -969ff44228aca4326420b47ed1cd7b1b -96a03a6fe10840ecc6765ab3f62bb825 -96a47ca681fe7f7748dfde0468496638 -96ac117597dff44228e56ae08ed7cd56 -96ad4c0f8e15adfc5615c9ac9fa418f1 -96b13d885796fa4b8d63df709264be24 -96b166310f26ad17a6aa7c106711feb1 -96b438bc0cf9c192b59da764d47658e9 -96bc7f1618f99e33f564dad29e2059c6 -96c17111858f448198cd8fcb102df26d -96c17e2078bbd61a774bdc3ec6974ada -96c1fdbbaddabcfcd7164faa9e096317 -96c5aca4068eb1ee05b0972f2476077d -96cd4d523fc06d5dca93a131f5d5274e -96d6bf00d4c331a6e22d585d1bfadf79 -96d6dad2a12ee90c182f6dc3a36f532f -96d877b3d121a8cf994b16ac990757f4 -96d93bd9cbd444bf29847621aeba1fcf -96d99ab9da6523be7c95a53b4f08a0ab -96ea3192819f00e0bf26f936b34b105a -96f086738fbe1a0f51bb35a75a785c6d -96f4b24d539b12db45da6590ea3fd005 -96f584471dc2afc6c224096004d450a3 -96fe5503d0f5de799022c8bbb7112c3a -96fecb5e094793ebec863e058c15ea86 -9703a8520ce4b2a31f9f397223647e20 -970c8eccced74c49c58a3dbd230cb7ac -970ff1ec76be5ce57c85f72f06eda075 -971041d9543367a1566950cd77d751e4 -9712a3f2cb7b92445be80f20bba10d9f -971632af16ce958ae5c40226ce32e13d -9719b6ce55b96a171d5f404c685bb70b -971ae29d26ab6e6578f3358fdd99710b -9722c1c650f00c1abccac843e79b2f5b -9722c7518903036207d3cea8d8b58c9a -972475297dc24672d79d8814004cf9e3 -9728bb415830634b9260fe1415c155ef -972a63e62aca267cf49ec23e79e3c24e -972cd7da0cef515124270abb56d804c6 -972daa442f9a0f386a39d1a22b490bcb -972e575fa1b1b3b298f2807a657623f7 -973085719c93ded6f937bad67c3e17f6 -973364adc55a1fbd6e08c10d4cb6e0a2 -973526a994fd3d8fbe1236849190e2e2 -973c4623a6e7da340eb60e5e320c97c5 -974489a7d051f11d102d94bf28b5419b -974be5a085d18b5041456e4690ec3ae2 -9757145ab6447209f8aebd603df2af8e -9757670b24c3362103d8599467063074 -975c2729c69baa5ea08552ef4f9f9811 -975ed5c63f96486bdd063f199f5429d6 -976950ee4f07f7ef135ec5b644cf8191 -976de60823b0520daafe310d58079b8a -97727acfe5566b28d759df940c8e5dc9 -9776357db5da42b16790d3f6acf04ed5 -977ca2eea79ac8a03c2ab03637e14e01 -977e1826b8e83dc15133d6957e51ac16 -9789acf3684f96c2f0caafc477252c7e -978df8a787f414f72c625c4c67ef815d -9797abbbca5933094a0ebae59cc10f84 -97983cd65948f23f18fc7e2a04e466f7 -979a0621c042694d813fe0fe7f112e72 -979fb768c4ca2877f3b46d7bf3d37d79 -97ad902bc590a402998f7726b6927a27 -97af48505da2db69183fd0b4a3d12718 -97b04c751c9158b1a6324dd0d39f476b -97b80dfaa68568947dd40af8758e110f -97ba3fb75b7f2f2a9cdc62e3841844dd -97bc5f1a024dd9c014a36c5dc7277c41 -97bc770cbf6fe4758d7ac53e0c7dcb3d -97be6be77626d8804c6535d02eb6b8da -97c00e8d22c938955164ab4513f05838 -97c3f6e57138784921765d5a42df9114 -97c91858cecc18abab0e6cdd3a033a9f -97d4ff708a7016f0925f1e8702655a3b -97db192a74c0d7713ffebd54a18ea4b0 -97e1c3d85d1366707773b65b0d53f116 -97e5829301aa1c03739f8b576a39b09e -97e7341b469e0420f003758134c4f379 -97e8143397fffb51f5bb125828299e3c -97e9b45f018aa84d26365ee70ebe1377 -97f0afa684c351072d65474f39ac6979 -97f2870bc46a8d069ad0051f8370ee00 -97f321151d42bb74cde79f96d9861511 -97f3bb9c0880a5a4eb6cc531a636af7b -97f5af9844f3bbf3b0f82c992a24c731 -97f640db7545e75336ca64b62c6f84f6 -97f819ae3f26d7a2be6c2c2331362924 -97fd5351184f5797d3f4f522f535ea5e -9801051dfa98d753d3c59f4d9b93096a -980109133681de7858c3b3235e29d35d -9801c89fcd7ede5d2e7561297b93afd7 -9804e0e3ebccd359ef91a18588182b3a -98054423559123c419bfcf2e9e60c520 -9806b54e46b6b4291ea779bdec6d4e7e -981233072ae033a20cf158a288b858ce -9817274209c845b43537c8a3fc6f05f2 -981a797888b075c2c31fb88c9b5abb78 -981cb56ec7b7c2eafc9a4d61806d53c1 -981cdfbf0e06b39c06d517d3609f0622 -981e2924dcbbcf253b5afa514cd2ddb1 -98206d07f341039d436007bc119bbabc -9820b03da3e468e7e8749b7297854404 -9825c8c811ff05d452e8176cb32fe578 -982987a36dd9d8ded5375b1db9dbf8bf -982a203b018574d758327b50a7c43fd8 -982a988bbd584d9775d07a6f0ae8e509 -982d1c1dd016bf8d2fe7505d25dab86c -98362a96bbc12d5b9f3d9063f67b53ce -983908f4b78b7c27f851b7466763c52f -9850413262acc40d3e791b140258e55c -985409c48103d5367714b9cbda8b9ac9 -985a4cbeb150f9eb183c82e5b3219407 -985af8d10691090e8c3e20c4d142a743 -986af39f8bed3841397297561d5adaa3 -986cca8ab073fdfdaed55a013fd3d5e9 -987393e0844691924f19354b41be030c -98745fe9f4c53a2081be4fdfd317f150 -98747cf695a720b6232a7023429c636c -987d907787dcaad18d8c892f475c8021 -9882603eb29fa15dac9db9d654187bb4 -9887c8112ac7108fe005d6d3459bea34 -988add19399a04fd2ed6c81cd0d91218 -989212d34734df0b3171f9e6d3a5e011 -989677edfc59ba2af1cddc3b978e55ca -98982d39bf77d77be7216fea410aa172 -989a065155327d9d275ab7a67cc752c1 -989b4ffad1c1d992b16ce0573dd3adc3 -98a211ad8e1a16e0f1a6a968b64e89b6 -98a21fa3375c9034ec80a0754310157c -98a23c4de43c7c089bfe5dcdbe4e4ef4 -98a7e418f88ec19ffc9c5e89809ad6ad -98a7f2fd883d76d477aedf2106ee44b1 -98a83845f5fb218b215ef445ce82706b -98a92e589c69b078fa8aad7ee4ac3654 -98a9c5415c2f0f13cab2da05415e27f2 -98ae9241c41f7e4307c01c7e22c9dae1 -98b25f00b25fe75a9871840fd36a17f4 -98b49b184deac6f2d9afb4e24cf9b823 -98b4e6bd0bee591b85fcd083e4800311 -98b5fef672e1d0f34839c3690462ffd6 -98b7ec1e19905d36d391b04c8c67a445 -98bbd9ca942a72cbb729dd3c70cdfac5 -98c344051055f06e0cedabe8fc053595 -98c59b5a2be1f6586e85cc73abd19b07 -98c65bc11a4ece0ef2aac90624369e3e -98cd2d4a4c28d79d9f26d0c2bd84fb76 -98d10f2f909e637648fcc9a402d3bf0e -98d3aae89846cee81dbcc4495f6d4ae7 -98d823b66aa517c43d71539f9851cb7b -98d8c4a315d60dd143003c8e4209e28c -98d91d9686d85f494555e768b443a51d -98d9819375d562e5aff3a28310ce203b -98da3c083c0a92be9786d3dad55f8cf5 -98db0a2708ee4b76118fc12eadf2cf44 -98df1ce4fef803d926b9639f9d1a60e1 -98eaed63cc49b165a6369cf2a107a8f9 -98ee260a9f8a8680a4ca3fce12b702cb -98f18c2f1d449bc5a5c24e734a0a7f64 -98f43aaaffcbaf05d85bf8ed19f9316a -98f45062d02a128543587a0ef9913d57 -98fe0cb4b061c20d3d12956c2fe65512 -98fe618a3ef98d07d2bff144d1c53cfb -9902caad3c76fe94c1eca5dde6c6dbe0 -9909535e0ccd49f1b171fd13e3cf0c87 -991118918b4c5d1ae724f8b83fd329fa -9918ffe56d4b0bf77f5dbf90ee168a5e -9928457b727a892ff83cbc826b966e00 -992a2acc09d0f0202b25370b8f135d48 -992a94b402335f58b9efe1c9c90a4f5e -992d201e71271f427cef32f864f5aa6f -992df7fad95f19cfdbd0881ed1296a64 -9931c730898a2800fb30c643c21e42c5 -9933e8ada843fe5cb2660a60a9ed07b9 -9935d15d6347b509020fc164337a5c5a -9937d8d97429d6877867f08a6e539862 -99397a093960f75cada201535d8afbc7 -993b875b84f7b0afb2857acf87bb483e -993ddcd4044305bed0cbec5983897f23 -9942df750d06aa58b4521600bc9c9612 -9943f41a2ce7663d3554803aad3f3722 -99451dc3573da46aa887dc090b9822de -9946b47909ff739f1053c06f33bb795a -994abc3e771f767027813718dd3903a3 -9952a011ec7c057d42d4363088cfe566 -99537572a95b5c80d7e91a4efd17dd3f -995608dc73420bf8f3215893aa5f031f -995883fb93994da3b389ff1a88b75d9f -995a5fbbac0b8089504a4e17b35c6a3b -995c2ae2796dc65ba029f5f2d32dafa7 -99614e108361e58e7190464275c0bd5c -99673019b873ffd447623d24638c7ea8 -99694b0c5774b442f7236f097b005a7f -996bc0c25724c0416e1f56d4e18d502f -996c4ebfd1cb46ee46b204970c4a1a96 -997207b98a8db8be45fc9ecedec0344a -997a1d008d5ef574bedfe17178fb6091 -997cc2a04813d5e7d7b2ce197a1f7b70 -997f9012a5548b0d27db149fca39f665 -9982948bf46b7bd3a2c433958ebacfa8 -998594acd134e1b53838898830d04ece -999013cd579d6615d8392ea87db9e137 -9991d033cccfd2f89ff36d7a43112722 -99952e744dd77a7fd2e60b986294cf66 -999cad35928724212f8ff1eb9efb85ee -999f586fd524f6933dd7239dc27ab264 -999f97c1ddee1a387f36fc431fd8476d -99a24f766ef5c61b6f6b3b3b9a12e1e6 -99a4b2843242522a4f060f2c408b5e56 -99a654a338efbd6fc6a0e2d7e5f1e632 -99a6c68f58daca9a3bd411349cca4e05 -99af31f0bc744916b5339fba24489f48 -99b3e8ea9abd1e9a77ad5c66e095ca92 -99b521d06038f6e784612523d3aa1aca -99b6b7b6b933692eb166ac734ce475b0 -99b78b73e260b25e311cb1610fcb7149 -99be730d5756f8c15568854ed175d430 -99bedf22341c75c5eca47d8d6d9b0d14 -99bf225e1efef3e56af900c5121bd8dc -99bfa770e4d9b824f91faff4d1be5eac -99c648048fed8acfd45f36330d0750e3 -99c65ce8b44c1de97d503bcb6bc96d40 -99d03f3527423b8535acc284b3d650bf -99d0afbb440990d4db1fbdfdd17c2bbe -99d1501077821b4c90d628ef705b949b -99da90d33189e35c3991ac845a35b3d6 -99dc43a6beac54b53f1b79db129f14c5 -99e1b97286f64c7fd80615281774a51e -99e89ff15cd624bc9db122396eaf9c43 -99eacb6460020fbb190d1c2b3c8b0c94 -99f29e99e2a6940dc179053e851faabe -99f5c788be9daaf4df8ad6b1d0544bc5 -99f868eb6c6190075cbc47dda930ba74 -99fa550b6486ca2baf3d873480e91891 -99fc1f1099bafd39c166e48877826037 -99ff214659325a12828f327ffc3516d3 -9a078806d0fad797d6dcf0603cbd4707 -9a084299cf87ae5d7388985b3bdd6231 -9a0e98d91a42eab82e6800990f879d45 -9a0fad8bd5bed2ba0f86d1a6ec6d4ba6 -9a0ff5eb711815fefea844a9995f5a7f -9a106f7a3e72a0ef1c29532e61922c48 -9a10b0390daff5ed34eb7c14d4b45e3b -9a10bcc8ae1ed1dcdc0d54fddca24ac5 -9a124b15d886618bef3eec663593a862 -9a1401d08639afedeacf71d1c8733655 -9a156068398b6a580c27118029e9c3cf -9a1c0f8926d904e7de5e297c4d6d4732 -9a20995a6f80d37366770ba8ceeb72aa -9a20cb9d7b4134e82cf09a6856c6671d -9a2125ca305257eb385ec0fd28395bbf -9a21ca8a42776d43c11f117cb28fab51 -9a21fefcaac971d304d9f89d0071524f -9a250214586226a36b5839c6db140714 -9a2c1b80e41024ba2251f780ba56615e -9a2fae2409aa6c8227603cc8537da731 -9a3299f800b6ebc2460e74a5ba53e491 -9a37405bdd79ce29676cf131e3d58dd7 -9a37d7e8009f715faccafb1847c62e7d -9a387d8cb566ee78a96193ef1a192850 -9a4dca5bab7367148054cffc4f3c2f9d -9a4ea71a2672153f13f5a0f0c2d8aed0 -9a5eaa85758ac00242d40f98b791400b -9a604110af202551f31755b60fbca1ff -9a62894f638477f4b2a32197b461e6fa -9a6322a2079fbeb6b5bb82a2c9c640cb -9a665d249786ca94f7b9ed206196ac8a -9a6a95701ad00fe7445025544ddd543e -9a6ca5902386c4361a343c4c2f0a30a8 -9a6e0ffa25c9182df8170ceb323c2829 -9a6e3a6b3fdfde20689f4acbe296033c -9a6eb714517ab8e1044124bee52d4573 -9a6f494e3ba98dbb71c40f316db1147f -9a770b51ec2966537cb3d80614f0fbf3 -9a79a958d32e99ba6e2e812d84ea7e08 -9a7b65badb6599df317a6a502bd94867 -9a823353c6290390b281aa9fbdacbe30 -9a8738f9d45279fc6c0f06e15dd31116 -9a879591420bd3775dea24c85a2ac67f -9a8c0e8aa10341be9ce83632323e5762 -9a8d9d91e7e7b660b86cab61eea1a9c8 -9a9598aae42ae47b7653d48d6f316de8 -9a9c8ece56d0965a11cec168d13a103e -9a9d36d5475a7b5e546899785da09861 -9a9de95fc21c5e67cfe276211b611145 -9a9f3c13d262557e798e360d0b2da5c8 -9aa0b687473fc46491295f271441d229 -9ab14e8cb268e58a0307d31927d2f3ab -9abe15a8a079ee0103ae774c41c1aaaa -9abe831742c014a7ba3e106652235ead -9abee557204f22f21125694601e862ed -9abfbeed14212f3b69401f7f6d27339f -9ac46aa7d103ba304f05e834fbf499ea -9ac6daafe3e199f8328bb7f18e3ab30a -9ac856a06353f0661698308dd6a49a17 -9acae185c15b3a8e1378f6d407e45a67 -9ace31b0e6600645fc369a137c512c16 -9ad231185e1a1a47f71bce069b8ef594 -9ad24d9a4b634b1434d1a392a03fc670 -9ad26ac8f2ecba628f41164e63a61b47 -9ad2fde5ea54120a6f2f4fb5d2459725 -9ad5c55f57d94e4e85277cf03be9187c -9ad64c30bf5ef07727e45cb5cedf8fa9 -9ad70cc24ee79a4f1d4890e061e8112a -9adac856838c5e42ae1742189d7a30ff -9addbe765b40096f3b88b72e81613cd1 -9adfdf1a4cc22a5556d243b90d7c9d41 -9ae1a319fb8f44a8a51b4fdc9aca5bea -9ae444245ad85d0f4d86a696136e9a4f -9ae9591be382cfc45425b95e71309701 -9aecc3a565142f991dc8162bcfd7903d -9af2f929f6de6b0d014bba290520f226 -9af41398b52dcc8934bcdc2ef7095f30 -9af463c3fe323a8171a042fe761d1601 -9af643cbec8ea303813ff116438de3dd -9af87a38930337d561077143e66ae1a5 -9afa31d3673d698ca55dcf04411c1923 -9afebdd6ddad9e336c20ce436f2dbeeb -9b0680dd24542c87887b28f6c69556f8 -9b06ac784f943e6965fbb312dd5c685b -9b0bd19a572d45da058f1ab843d1e54f -9b0e335d4f2a92586d3ac00841d542db -9b0e7fdc0bd2050e47d1e99a688b43e9 -9b0fa5111a4133758d56a2e0b60c66ff -9b109829547e4352b3c882709640d896 -9b13910097c0655d89b0c1273490151b -9b17a662f37c65be1dc0a2601be67d0a -9b193accad73f3a8c533af098efb8669 -9b19956efa8bff480a5ec4228fc36999 -9b1d1f271805ec311012c57a612919ce -9b21476110c7e88f5f63af181f2ed577 -9b251e699a97e3b92ff084f74ed677e5 -9b26586e62fc26a34d78da1f4f29541e -9b26fdef8e7e71e50d25975546d454bc -9b28c190fb8af1835f12e78527c7d7a9 -9b29631b084552d7bb89f9123426499d -9b29999db3bf9e6520389bcc4e9641c5 -9b2f940062185a39a905b47527c6603e -9b3033e313ffd8087a178df886964d59 -9b32bfda75a54110ec51526f63710b32 -9b34484b674dd8d056a524f91306c20a -9b470327cb323229d8ec942b4cae9bb6 -9b4d214f84367b6fe77d1663ceb59256 -9b581050e2ecf0b9f9d4c378a4b25463 -9b59989bbdc05148caa21fbd71495b52 -9b5a1dae532ef9bf9dd37ba88d3c8710 -9b5c02ac15948473e91c6be7687540b3 -9b5e31bddfaebbb14c5f91c0327b9e8d -9b5eea025b77256b7e2daabd2b697a3f -9b636eebb8bd63e3f3fb8c5e1ad52c21 -9b64dac97d04328cc8377434299c95dc -9b675666ed680d0dafe1a9e55ca93dff -9b6bfb8c67d4a2a6c0e2185ad400318a -9b6ee4a9dbb1184c00391993aab48080 -9b72375f708b0a62cad42a72e4afffd9 -9b7486947ad365fdadcc773a75720c26 -9b784781c6cda9496b85e5321a284633 -9b796ae99a780f985c10c01d3642fe51 -9b7a257a3ffb10c392954df98e94f2bc -9b7b944fc950bca5edce4c8229038ef3 -9b7d88067c11d22ccd9f86be4577c7f9 -9b82001f11ef22097ed7c59d3e309f8e -9b83337aa3412932c25f40176b5ee1c4 -9b8554f6ae48eed99f4edf4d66524dfc -9b85fc71907a78d1e28cc7d9c6195185 -9b88206b84290819d9df8994e8525aaa -9b882a6e949de70e2a8a4e63ecbd7d43 -9b89e1b60cdafad5e3d36120cb463a7a -9b8e5013ed0a3eb00ee34ffbc9d89395 -9b8fff7199387be7c83934dd4a4a8ea9 -9b97f24c07674e8f710a9446ec90cd3d -9b9e7ddbc0b91ca4acde8e046f5eb673 -9b9f3d4702a291ff307d992164fec34c -9ba35ea204c86c15353707ca77563e34 -9bab936a606915a42c18ae6b0b37a4b0 -9bb2d6b6e2694773333767c4544a48ad -9bb56af2d871fc38e91ca63daa6921c7 -9bb73ca867c339e40f589956a994bdac -9bba38a026b3371f34b41cdc167ab9de -9bbd7c28e477df9d44318daf8fdeb535 -9bc60241f70be80046243f842702c282 -9bcaf7a94a9db8a662eb4fd3c3d50e49 -9bce5a821beb625d568e269de4693d20 -9bd89bb369170cba6649a681786b8d2b -9bde563a514d60ea5ece05d7d628f770 -9be314a6af4bf72219be4aae60d3e692 -9be6a6266bb2cdbf00bd26bce35deecb -9bec075725bb94a961977d8afacbc86c -9bee43a6be4282534ba4278e60a08d8d -9bf90754e4f3818e6aae87c402138039 -9bfe28fad5880b23d388dc9de3587263 -9bfe64ca09c1ddfeb89bb3ed34adab04 -9c0e2403902ae525cfcf16c71b831a46 -9c0e56e5aa2d0613d3f636c9339cfd20 -9c1608f7627557f6c2fe446e11090f39 -9c188c0402bf930dcc47982dac988900 -9c1a485bb8da2ed34e39457932623599 -9c23179248614065e8a43a41336079e1 -9c2ac8d127341092c560f544d44870f2 -9c2b821b4b016fd977980d108636e9eb -9c2bde90d2462140588a7bef6168861c -9c2c5340021622a5d1f6b340ba259ff4 -9c36de49a8b789926d0a78db397c187a -9c3c18e67a28c5a69f0f7c1b8bba2701 -9c3f8ba083740f9bf7badcd9967ff895 -9c4294953cefa61a44ca1d5ddf6b0fb8 -9c4514477b208a2202dfcbeb69d11c2c -9c4706ce76b191d72a2eb421cd625e17 -9c497aecb96abc2a5cb5c360c7f8d156 -9c51c5f9429b2c7593ef430c830054c9 -9c521b366b4068f855b2b59401857f4d -9c578ecd19e7f72409fab6aafe006540 -9c68bfcd79c2031f41fcdb917c40f6c7 -9c6cd7cc2a9b0137f8f64fff58c97fa9 -9c70b3a149b3b009a890594933a6af18 -9c71bb281f06821a6c112e93cf0c3b2f -9c79f44ffc67c70461f8c81c24e2e8db -9c82cb9e0e5afa110b0a53b9741d9edc -9c84ba7c5065f0ada916a58ae7714294 -9c8cb1637ad63a74e0e5d4176227168b -9c9d7760f6042f29c9396d3eae5bf5e1 -9ca72b464ddae54828d268c5de8c4850 -9ca8f5fb7bee23ee68d0b9b6d7ef81d4 -9caa2a0c02261e9b83b3b74ded77eb72 -9cabe7db618be23abb862faa2ae0043b -9cada370e5bf62d51a039a1c5bd0fe0f -9cb03083a669f675791a810c8efe2e5b -9cb8c52450f2908c8b5cda073bbd3caa -9cbdecd0bd04b484809ed7a7334bf4db -9cd55fd5c46a85f03293f972441d4742 -9cdaa71d475b8655e9304567c45fd2d8 -9cdb9987fa143095c4524eeeb12aefa8 -9cdedd882054902d8e4b207080d26e3e -9ce08e10c5cfe510e10979363b8f17a1 -9ce34574cf83a7d4bc1a7e42bb33b43f -9ce4443ce1a81cda5f8331d30226fd67 -9ce49f66d05a3698e9672ab71d93c022 -9ce5469ba4072b357e54e6f1987fb419 -9cecca4994f23165055e921c9bac040d -9ced740d11d5d82573d11d779007cca3 -9cee4b8e63688c4e31a4014519887836 -9cefe9e9c3d0733821a75e70213942ec -9cf430f4db4b660c02277ad2ff90b431 -9d06be9b7e13fd133a7a8f1f11bc8b73 -9d078ab0bee2e88cd5f7b2fff2784327 -9d0d0136cb008cadefccdb00ec69b4d7 -9d0e284ce1c45a54b87eb0ed1ac45ee9 -9d0eaca84ba9a3576218da3e9f807a66 -9d0f7cfb9074a828c725c50f43348666 -9d13669a54a0641de3d5b7f46d6d10c3 -9d180d286072f44e24bea52ff32c8bfa -9d204ae75b9614f0495be3932008ea95 -9d296c2a46ce20508eab6f4c4746d8cf -9d2eb770acc5c5faa3eee32e7c8da74a -9d2f110d2bee03cce35c9f020917f937 -9d31e7493c5a43bffcc27b5aec3eb0e5 -9d33a1b68323b68f950cb2b28223728d -9d346ebf71a461f582b606f9796ab532 -9d3614641bb94ebedc3ca44ff1708a6f -9d3cfba4cfb1d0b1111620251f9d68e2 -9d3f4bdc4d1bd2851d37f02402872904 -9d40846b6d94f8417df6b600fdc6eda8 -9d4129c03457545df3fddeb9857e1c41 -9d45379eae41dfe215655a11a9860d24 -9d4a639cce13727cb814cbdd32805e0f -9d4b6bbcd89cf1e406e1541c79ec1995 -9d4d4fa44873d189384cc53f92123ca0 -9d54d328a0b8ef4c18d65199f28381ab -9d587a46370e6f4535e4328810b7f230 -9d593ffd35e14f83ca530c6ae366b618 -9d5eee56eea325dbba8ead8b3f34ec1c -9d63dceada1b4f1b6c7cd72654d3a98d -9d736e55c3cb558298331f65a04ca0e6 -9d76092362328ed92ee148ff35fa84da -9d798ccd857dfcc850e5f9190e6902ed -9d86e9caa97d78704d3d5d742dac748b -9d89256bf4ddcac11d3f9fb9a8589a55 -9d8d45f17440bd58bcb418f8b862e13c -9d95c47d8165e3c3da80edcebcb2cc5b -9d9aebf33219b85300611a8c91e7b1bb -9da17bddc551171017b0f73f861ca136 -9da2547cb56337f074341fe1aeaa4a57 -9da4ecae0d130472c782bfae637e1d6c -9da7750aab2d3f09939c3db1b68edea4 -9da82c2fdccb96ab140f80fea2a52c63 -9dacbb6867fa634529ba85b2368c9cbe -9db61601f0efb4673c5be1b595441e25 -9dbcba23b3bfc76648d971b518507129 -9dc58faba8c34f18d3ce6e132814813b -9dc9b4dc70a97a09417861e6cd877369 -9dd118b9c67421f249c9b8265a2ee349 -9dd194dd70c454e38a2df74ab5b6a7f1 -9dd209bfd5d870de0713b9251b42df81 -9dd33bef2522dc45c17b1e314c23cd5c -9dd4361a8e88929f992a0469f95b2594 -9dda4b59f81a864086247db76fbcc094 -9ddb7279b751d09ee537af53664a6a10 -9de27337bd5c9e4cf2758ad59a37cf1c -9de970cff69eed314339b65abf1d54f7 -9dec6bc06c4e5abc29ab9b0499cf99c7 -9df17204912109ac06201eafb3f0a28b -9df54218d3a9a22211314189d687dab3 -9df7a5e1a54055104f962f191ff470bd -9df807fa61108e1e67b58e75f94419f7 -9dfa66bae5176e99ea7d58a6274b09b6 -9dff395436ac8bb5efe345a357496a36 -9dff57c66e1ad292389fedde3dd370a9 -9e013bb197bf50edb23b990950d7f442 -9e01b0230446f9a23a9cdd748bea59fd -9e08218744aacbd0cc695e0d218f9d25 -9e0cc7c63b693a9f1ca5a9a8cc01dd8f -9e0d4d9ff1b3acfeb3735553b8390b2c -9e0ee38ea6f5674e37b42cf41548f81f -9e10599b39c1efcb31c30032fb817fbf -9e109f9cbef1843c36b9dbe13d9016b2 -9e17dc72b2ededdb48b35abbc994e8c4 -9e1ad5609531dd281b4c8ddd71eb9d69 -9e1b8436466eeb8d5dd89f90fdb98159 -9e1c77ce5ed620af4f1f55a3ac924da8 -9e2449ebd974f5596b00877e08f5cc43 -9e2533358c4b2e9a280b61b3aa129fa5 -9e2606e32f73457d0d9a9b2ed5bb6f14 -9e2a6facf7b7643ef558434fb92b12b1 -9e2afb5f6b76b4fd58c0534f24e423cd -9e2fd817e704777f36d37dd68c5e006f -9e300fb609fdbe30a5621f9cc947ba09 -9e304b1b2ab84cbc19be3f57dcbf127a -9e31feda2692a26b35e84aaa3f5f2dc9 -9e3480cbac92b555d775f2fcf08ea999 -9e39bd820d236220ee60588ac21a7789 -9e3b34c34167a07d5e1b479c96d68b8e -9e3c21f1f8986e8a2a025b797dd19a85 -9e3e5b4e133500836fea21c710313a39 -9e49906ad75b1116e35e724fb8f73d74 -9e4dc2e769a7a61dc0e58c63e5272383 -9e51c93ef9032733e456e620347b0866 -9e5712c955d89028108e52e13f5488db -9e5a10dbed4f75493226c16211bc4711 -9e5aea68f5862b96966c340a36dad6c5 -9e5ca5585f2ef8dab469287dd8649eb6 -9e60970247999d68e9a14d96d13ff2a1 -9e60dbfe7521588f829fc89de77871d3 -9e62b20b25dbbf39dfe0ce04da6ea213 -9e67dff4323639a67d04ee631752a50d -9e6f0cdd81a8005f60952c4d19089c57 -9e71b16c0d9caa9ea68e1b484220ee43 -9e78a0a3e4688b35241c2a8aed02657e -9e794ccce0f14ac0c2db42dac13acde6 -9e8105e0a0aa5db3060f49843cf5486c -9e89bf5e50d829c15323d4f5a4f952ed -9e8bc9f9733dff0c40731b53ab857325 -9e8d703a268d2d5c1d0b442aef469f3c -9e938d92fd659cae26f2e70de70034f9 -9e960682b1e4750c3491698c73de2a22 -9e99070827b1225519f3b9c4364e1857 -9e9929d130e5fd8d9197611ebccd6af4 -9e9a2941b68e437a09e1f41a6fd29d1c -9e9b722eaa6c74dd25d83f5e52d3a36a -9e9ddd94861db26d2c5a64a2db96aad5 -9e9e9b0cef9abef0f980fb2818306b9f -9ea192468455dbc845e090ed3255bca8 -9ea37e8bb9de6dcbea415e15be833d89 -9ea4626a8010f6b583910cfc91b5a521 -9ea4a36bed9e163408222506300fb235 -9ea5e4da4fbb848b1cfe72ce24e64c2a -9ea6931d74a6f3d25125d5a9c4489505 -9ea7829a5d5461f15b081eac68be11aa -9ea8d559c083e5ff2db08f1c01670cc4 -9ea93fd4b49046d774b32ee3a4e3dca9 -9eaaacf8776f959225944ed2777cf5a6 -9ead152a369d3e55e2f4d0a5cd22987a -9eade967a04df82a064cd81a0795f1ac -9eb0a1e19c7f926297193f75bf8f82c3 -9eb2f0af835e54478407de50af1c5539 -9ec1a7390e2abd75f4f103443f1c5f70 -9ec2c99c3239edd406401fd4183cd092 -9ec7c1a77d8d2750f5e532e8ffe71cfa -9ec7e5483b022460569ed90706810f1d -9ec86e612159274a04c99714692d1f2a -9ed6f754c45b90168d6345ea46410ae0 -9ed8a5c7964a2a6cff678b3d6f464552 -9edb5becccf3197b52fcebbb0f94c787 -9ee234a61820fd72c529c3ea8bc7e714 -9ee6c0a166e295cce272eac2814fe4db -9eeb174636b3be39c7b1d391b596861d -9ef3bc88f5fcb2ecf97f10cd2891b16b -9ef647d58fb5b28fed9a31d76cf21c20 -9efa2ab37432fbe609ff4d9a8d8236dc -9efd09500c3d84e5568f4ac1ff3261ad -9f0007955e55a3c5e5d29bce15fbf1fa -9f00d5ca8707ac39840aedad433acb30 -9f02d940ced7cd6319bf77ea68e904f8 -9f06a04923087aa3e4f2ad9c7d3aafc6 -9f0b58de44b98ad75c0e6128a34d637e -9f0f21e1481800c9b2c3570918ab83fc -9f1741e24207ec85de99653036a9ce2e -9f1cc2b639554923084000cbeba67bc4 -9f200e257386f251c6a3bc58760c313b -9f27873529369ace9f5361d50aaa89cb -9f2c6b0d979daf69249139022c950a18 -9f33ce84878221ace4c3e9cafc52fb68 -9f359ddd800dc12d8fba1907aad2bcbf -9f37932dfa37bfebb9fcaba9f99cb6c3 -9f3942b86dca35c1b01faf1271189d12 -9f3d8dba56bdef867427c5d1e7cc626d -9f3f3f2efcdbd4bd71c58505803d7820 -9f4001ec68d1b24064ab51519cd70846 -9f42d0f542c592a13ed8d12aafd40810 -9f44a2488c7c38331ada71a781f71198 -9f488d2da29772f33246a3421c022a25 -9f49578edfd588dc99271d321333cbf4 -9f4bb452c51568c326191e5eb0002d1a -9f4f809b3ccfeced05f78e9516760e50 -9f526cdb022ebcc04dc65f1d2407a200 -9f554f84ed931e4e79af03f72404189b -9f558b75bb2a7d08df67f021199aee2d -9f55e634fde7644718ea29e5c5c59949 -9f5713d582c143c628f57c78fb0f3053 -9f5804ba72dd3283889c7e0abac99b65 -9f61a79bf942114640ffc67a925632d2 -9f6223459c7a03f268fa274f25e96ca2 -9f62bc6f1eae1ae3830ef830c995632b -9f703ad58fca11d8fe8a2415ccaee667 -9f715a1e507020983822b2e3dc21470b -9f72f4558689fe93a5ec7986cf218f9e -9f72fdc478f1276e075990632d121cd3 -9f7b6f8d57a412aa6d74bae43d7395dd -9f7cfac24ecca104f50303a0a80d25fb -9f7f7f173c7f020f23522849f7885a13 -9f809cad0d62b160beeb8d26e14eeb94 -9f819de09f6ba053d8c33c0daa0c7ff4 -9f85175ce91cc463aaabc94a98b8045f -9f852d318da591785dff8ae2558de636 -9f891a768537ffe38023c48591684ff4 -9f891c569980f3a1ef2e162899273441 -9f8b8641004a8959ba6e43103d49a063 -9f8e5825e2afbbcc303973114376b62e -9f8e7ebac6be9d21de101983f37de378 -9f921c723edd536888f7a88c15836029 -9f953152db90da6cc41bb63e99aa3f6b -9f966959344257f6499be26d10568d2e -9f97d1b7b4256d0f1e399a7d25ac96a4 -9f9ba3c30dc9317968e8ec8f29de488f -9f9c8371adf3df86f84c480276563122 -9f9da2dbf5a03dc99596d3bd66c4e65c -9fa8dacd856ba8c03f046002b98c2cc0 -9fa9b539ecea0f0f083cd38d376705a6 -9fab66fadf8a62d558a56779e074a3ce -9fabcc374d16cdf9465d5e64ee40b1cb -9fac9dd7abea22815be7b6c71ff18f4f -9facfa24fe71ec6a4c14a4b7b704272f -9fbea916f47ca09326b00089b93dbfe4 -9fc19357977760581706234cc2c95d39 -9fcb4d2d86754c670ab97c73251fda03 -9fd1017181d447c76a2af8f509d21924 -9fd174dda6e4fdbb8474b4b26e32d054 -9fd3e4e469e7ca11b840bfa5cccfe15f -9fd529ea0cf805e659059e1087535b95 -9fdbbc5721448d6912f168bdc396093e -9fdc99297647c4e4caa87dddf9e82520 -9fddf6eecdc21984bc9cfb8d668eaf91 -9fdf1d41c0ab7d7819412f130430a882 -9fe0af324b2d2c1177a8e369a9f5cff5 -9fe2f4a9ef6e476ec69202dcd6a262e8 -9feae45b07ce7159d9c01e503897ea5d -9ff1b9934cc9543541c802484e11ae3b -9ff8c9f18433037c604dc4f7e16ef9e3 -9ffcf18b72ae0de030d2c0ca0762cbb5 -9ffe0594e8a8fa1ed41c4502494401fd -a007ebee2b471f58002ea2806b5c4edb -a00bd37972e644cb0f4930710c866691 -a00be5fdf5f1f983fdc2d2cf162e07c0 -a01512a3055e7c01a51d4a6575e4c31b -a0184f28213ff985ad7ceb0a55f67731 -a01b069bb752667d25574145e5fe2d1f -a01eb567c6f10c7b300116baef769c95 -a01f236e261ea17e8a2b748ff45227b6 -a021ea56fce6aba6652c78c2a1f591dd -a0221299765eb8ab9ffea822f23d0bfc -a022874d1adf199f1caa1266cd9e8db0 -a022a79666388982539bcb19ea468e50 -a023410f52cb6e84b6f490a6e4fac59a -a0251fed5cc900737d12c782e0856b06 -a0269216f1dfa879d11c92253dcd29ab -a02857ddd089926f755d9596339e6668 -a02a8dae004c46cc48d1357f5fee97e9 -a02ca6be594fa8abfb3b1f34a0fe2396 -a02df12ba934f4aaa49a1e1dc334edb3 -a0339bf0dd2b5e481a92b1739f604c01 -a033c3f2565a7b5364d347c61ecb3388 -a03735ff81ce1b637ea935372deaa74a -a03d656ac0e18d0b1e3da56403e18b24 -a04441f99124b3c5a097d296103b94f9 -a045996ff25d6569362ef78e09e503cb -a04add201290aa5254a9219446bbb199 -a04bc8fab8e7951f6d3d98e527e3eb17 -a04e5434222f6b38984e2e2bd0344f8c -a04f71ccd09db430d74f8b4dc6e7d9cc -a04feb568ccaf0dd30e49f25f89f16a1 -a054f6fe22cde40f4579b91c42607bb4 -a057a4150f4dbdd91ccdb1c7a9e04ef8 -a05a303d9506f7adab59e6a8ed4991cf -a05d34d6e0898e79bd3c282ab96a9309 -a05eaf38ada092177c2d6fdc001f6cd1 -a061c1a53a148f9d24de3ded885f3bd2 -a063dde3e217658e27ae0255add7cd95 -a064e86ed63628d08fb026a7311934ba -a06ce69e36e8003de48dce635ff83935 -a06e6a008270f161a5787bd834cd074f -a077f1f81587a55c832327407a907834 -a07aec6f3ab9aa2a47ba27ed8401fd7e -a07e9a11166fd3b6103228ee2df311b6 -a081f2fe0fd13dbe1f1c54787d503a93 -a088da3b3454ca09cb622d8d3d3c9283 -a08cc02354932fe88bf9c7a2c7a09e3b -a09016ad171cb773b356f99ad08c36dd -a094e410ec544f3e8e63ad7e2ec63901 -a09529409e141df2468a91c665885e4c -a09936d7c6fa4590cf2d7f4032023ce1 -a0a2b6beea438e960a44168c7c49f0d0 -a0a89536cdce5073003d3d3367d767bd -a0afc172c8c8af7fa3bfc0c4e93d2c35 -a0b62b3fa2d83db4dd2101076668eaab -a0b9f88e5c9fcde78af0fa0159ceee85 -a0c45450b4bfc86da85a166c969e573b -a0c5546ac5d1dc26284db9bbe62d286e -a0cb44fc35a9f0a5a8cd284cb88e29e0 -a0cb46fa016ff078256314ab5d1330ce -a0d5d7485a6dabc9eac9e87b624c1bd9 -a0d609a8d35d9f3cdf7dfa6d097d9bd0 -a0d69d7b821efbba78ad204dc0887f47 -a0d728f55c8b9dadeea9d3d92938b24e -a0da979a507df19706b3e23ae33630ea -a0de164c6dba81562757a01f29cbfb2a -a0decee73201290649f2a1ecf40f2696 -a0e710f5491a92cd9bdfac9e43799419 -a0f02c5bce751ab5337d753f9bffc41b -a0f7f49f290e5f26872de6e971fdfe30 -a0f8220539df42f78f25d57a8f59f4c3 -a0ff1321c7c05de00879b7273e2e3ca8 -a0ff1b16f54c91a4aa7e9bbaa255c3ed -a0ff42795c099e687489904a283372ca -a1033a801e0f1ae4a7c3330a3fe4c8bf -a10987704dbb214b42c67a9ac0d9eac1 -a10e41c9868ca874a31149dcbc66c9b9 -a111037291d55295435d9b569bef5988 -a11232ac6b0d850d9adf9553c4a4f37b -a114c588fdd324b11a9b0cad73555f89 -a11558bd2148bbd471c6e43439483634 -a11dcaae028c28b7001cf859024779e5 -a11e8309532499083a5443329a07d077 -a11f13cb0db16cd1ba1fe2208655b366 -a1232c2d54d60ba9ec2d768888b643ef -a12a3b40d77e9dcb0335c6a0df749c04 -a12c81719b73dda0e5589bca45104a00 -a132664ddc084b57e2f78ba3a97bbe27 -a1386aadd6cf93519ebbf5957ff8d3a4 -a13922e37585a74a9174e8fda7fe796b -a147855a24a5ab083dd91a2ac48225bb -a14e787b9d4caca45ac2ade19bbbc259 -a15c4089f9a64a07ed19231a3a9c95fc -a15ebdd0f790219c6419900f2bd3f0cc -a1627bc656d53060e43503cf993d1808 -a164b70e5038a0163996cb44d3bbd76b -a165c59877837d917b659111c6de8e46 -a1689a2b819145db32d384c5f479cb03 -a16e2baa1e3c8c1cce0c932e9433e237 -a16f21ad17310b4b704ba9b51f422f06 -a16f3f16d0838c1ebd000eab07874f71 -a16f4fe65601aff8d657737c696903ff -a17aa233cb10c3762c30af1c9c7cd372 -a17da48a8abc29a54fcff471d6516fda -a1857d0dadff90f4827a5395f5f8fae7 -a185885faa2fbeec7dcdadcaa808de03 -a1894925e9711527737d38f1464f9ae9 -a18b7b88db6b03ec2bb70f9d556ea3cc -a18c09a851d8d1fa950062f410130669 -a19152a15598aad20488194474efae80 -a193991559f8c8a7449c64f3cdb44f78 -a194452bef5191d9953b4f7b2314ee36 -a197242476c6dd9e28afbe6e81c98109 -a199e3e4e16fd2432790a14c9e6e06c8 -a19b48a13812ab37bfcca445932f7c31 -a19ed9e47f0bfd73c9ace792bd072852 -a1a3d35a6db788de0a19e05d0e8164cd -a1a3d77cc43dd59743b8b511ecfcc5bc -a1a85a2471fac5c4367ac423df0abcda -a1ae194ae74f175fd247617c7f8b89a7 -a1aef4a686d04830a6fad51e3cf8bc92 -a1bf596cb6d003e3850be6d9efbdbda9 -a1c4c89851502becffd8b733f4f05f73 -a1c4e3588503477f6a712fe7bda7f849 -a1d30192d6a6e689785ea5e769c7b591 -a1d3fd4504ed7fe049500a6e417ece1b -a1d765cc75a48d9f22f809dbcb5f61d3 -a1d82a1500f8e5cb19feba2cebf35473 -a1d8958e6c776143430602303294a110 -a1d94e1fbe2a6bcea015c76564b10083 -a1da0af28b9f79214d175ea3c23efc45 -a1e0d8eb6b957cddc0620a4f86c72096 -a1e139c0352e76302d6941118cd8f3f1 -a1e4b54303f52ab0e514447b418b27d7 -a1e8397762c69c1b4f366d30203df493 -a1e86b77bb61f32cc0c1addec93f53d6 -a1e8e5c5c175e3bff2dc157c88e9015b -a1eb345e271b8da84a3d8c0af5077121 -a1f021a18f99a8ae182d5737653e59c1 -a1f1bc003ead8b41c1b0276f2814a4e4 -a1fbec59defa9835c9fc0b493af9674a -a1fefb1b98da3cff0b91394e515f6e3f -a200b91c845e0ff11c3a5d0964d56f8b -a201a390e40cb5e2db7dec9c22be376a -a2055a3a2b1a6d52982ebccf8d2235e7 -a20b2186a2630b21be787ca1114dfef4 -a20c20ada4018428e9d8efe99963b0cf -a20c8de60acf1cc52767edd6e05676b0 -a21460302525000a1c9269abba4bf069 -a217a99922c988fde0abf094857a75d5 -a217b4727146acc7e96330a0ba549e87 -a2180d3b053a659b181c6943ff773982 -a21a80f546079a9f57e921916be9e822 -a21e92cdcf6b57f2789ccd9e53ce038b -a220e693061cb6a211a40af41b0fb25d -a221aede31e4652f3cd9294b3ce88c41 -a2237cb6f02e1b463f051e1a01af58be -a224dc8fecd6d88c8e3d69a639b6d631 -a2378082a102121067c71002314cccb3 -a23a77e52e46b661603be079bd95ded3 -a23a9b4e9fbcc6cf725607a137eea17a -a23bc03157eb722c5b7bfb21e506b679 -a23de0a897f08aaf0e7c9d8b1d8d5791 -a23fc9b47b0a18683f64c771a68e97d8 -a2448c7afba2fe8d1011b1b1d64974c6 -a2466102fa7e26373c86dc6f67b95d56 -a2476549ba30b0fe4d84c360f8589f81 -a24affdca72aadd8f11ea8597cc00a11 -a24e36abb47f907a09c3cc38b2cc1298 -a2511b84b2475410148f5b7b3e33bbbf -a254bd2d62bd6958aad41a65ab339fa4 -a26443dd10a593b2daafc3434b21f0c2 -a27287e135a59f8d9e808e4438bcdec4 -a2735e239dc7bc7701a06bc91ec5b9a6 -a27619ecc4927733599c91148e98a369 -a2769e58eacc4575f486766d689ff4bb -a27754fc5ac425838294cde5d6d364ca -a2797ee7dcdff93e84c63f458a4be892 -a27d6a92723ef338be6e49779bd8c1ba -a27f3bc78e1414b2b8ac13b04c62563b -a281b451bdaac030773a255cad4b37f5 -a2839e76b82faa7a3ca76c52040d3897 -a28c86f57a9df3c49b9a026de8c4694e -a28e0b00285e12f1c01427fc1e34e3d7 -a28edc7283cda80c1dec724da13ae32b -a29eb4501a17bdc156dbc525a9bfc13b -a2a0608feb5b68a1902b63b08d6c15ad -a2a3cbdc810ecbc4404bb424d7dce422 -a2a429a38286b06742433903cdaf2bc5 -a2aac11b515b35dc50b8c9321580ce0f -a2aee12dd2cd27ad44650331deeeee15 -a2b5e5e3b99e918e5ed3b105b7eec3b9 -a2b9fab6b4918b55c9a27cc4b9f36a8e -a2c286a01779ee25a36faa94c3fc5e47 -a2c3ed77a33e36c7e0eab6ee708677b6 -a2cb37454cbabe283b060c260a16ef45 -a2ceae794cce3b67b4ff177c9d720cc0 -a2cedda525df7d5103c2b92d23d2bb95 -a2cf3bd2583aa9f3946f9606cf775af6 -a2cf49b68ab7597c32c23c9434ed095b -a2d54e3fab0111b1ebd3ee3baf63ea95 -a2d95c148f997a849dd5bef871f8e807 -a2da59a042c28e21fe258df0e8dd471f -a2dbc9cfb16e247906b2b097ae077ff4 -a2de7d7710f0c4e45e0b495ccef7e10b -a2e2c1f31c91e6ac0eb791bb2f98ae3e -a2e3e0d40b7d023a2ddd02534cc2dc61 -a2ea15ff45a1e6c6bf443ef43f24dda9 -a2ebbf0dc39eb59a4c9565df4b0d634d -a2ebe271ad48afca6f107154aeab368d -a2eea4a114bdd300b25ed3b7789df603 -a2ef972a833c7d3b21778c510fd14f45 -a2efc5bbda097bf697788c791df4ee5e -a2f27ee9765a0c4e74d48dbe862ec81d -a2f33c2634c8e83a00c6d6a53149cc34 -a2f41b6b1a00f4d20866b74121e35552 -a2f97dc9f065ffe83c41e507082c20a5 -a2fae65eab8a02c1f63e36fb53ddf186 -a3010ddfcfc489f548bbd7d7b2ec0d1e -a3028ba297f7cdf3ffe4efe56d666e3e -a303ace2503caeaa84e48175a5caa2ed -a3076051255c9bff513d6db11c0e022c -a311d7c2751094acd3fbedfb710ff99b -a31975017b4e2893e860736269151bc9 -a31dbebbfbbfe952bfeaa02e094a2c34 -a3202263a4152466f4955f0cfbc57dbf -a32153d06161ef66f21b5a495a3b05b1 -a321ec83a9b49380dd69ea700d68a5e7 -a32878ae4d95c9a84c7ffe5f67dbaf0e -a3298294b105977206b48027579e64d4 -a3307532774f13508506af43cdf88b5b -a334b0afcc2b2c9b1e7a31392b260e6a -a337e5bdc1701c80b780062edcf18950 -a339725e9ade419d6bf8575960ef0a7e -a33c3fccc23510eeabc7503f1a3d8d30 -a33e52e5c5e1376369598c748ebb84a7 -a345b934ef7477ca68cda518b7a3161f -a3489db9cab7af00370767201a5f08c3 -a34b2472dadba391bc4879bfb596879f -a3512ff388c26f949b417b13cc65699d -a358dba532c4da0477c25f8444033d4d -a3594a37cdd82d5f77c90e3071f6a475 -a35af8a43b0c77652ef8cfcda68faf38 -a35bf654bbd4961f470124b6f233b04f -a35c15b07442c0393cee4a095842b9d8 -a35cfedfd2337e97101d23c5b5dcc3cd -a35f66845dfe11a24ddc8754235e3d93 -a36ab9ae8f1901c82c597a90b84ee5cb -a36cd7ad18294f9fb9ad25916b66c2cc -a36d7bdaba7bcf4b509f304b5eb09b4f -a37482e503177b7a35ad575650d2f10a -a3758ef1b0187727506cd78add91286d -a3785072775184b318be65f21a4189a0 -a37a784d2914eff602935ac0af278254 -a37dba8255da222dd4a2ac391da05495 -a37ef7dfd539dd30d01b6b253461f2d5 -a380ac9c8583f48d77d5a690baad941f -a387a84f2e235848bfd96f4c5c2aa3cc -a38b01d0530f14d7864d2cd9ad17e436 -a38ba4da2d848c770361707af44084d4 -a38bfb1fa92e3f93cf76d0bdaed1dd8c -a38c317877dfd3083444d25f216b0028 -a38e76d20d5e2ab5233cb1db7fad3847 -a3918403d50c8476fe4d1dcfb3a55e51 -a393ea28fdba9182a72fc32b6b6d5d17 -a394a2ccf170940dedaaa6fc1ba883ff -a398ea7ea00878b73870ee94b068deb0 -a39fbf2bbc24e255ae157fec09c5a670 -a3a30104b76ba3a368525fdcc417fde0 -a3a56045629d866ef413cc12dd6eb5f9 -a3ab5a0b368b618b7a5c02ab276eab74 -a3ac400258f0ed012469accf65f21547 -a3c5c7ea1866b5e6ca5efce5a3d6522c -a3c656adfd2544447d72890e9297fb3c -a3d119cbfa22b1ef7651b4e9ae480ad6 -a3d4f8902c19027691041e6c4b60faca -a3d730614ec9fb9268cc613cd825a2ec -a3d849627945901657c2029140450671 -a3d87983ae25bc9b8e26172518a0652a -a3dce5668d63fbd1726b13ecfe969c26 -a3e0b623d80bd21981ed2bef695202cd -a3e52fd2ea76987510fc039a25c58e2a -a3ebc0e6eaa2f972b58d2c92288fb089 -a3ee94296aa34e69159b631fbbd3b7b8 -a3f21e0e61c573f8a4fc2d23ba5dc370 -a3f5716ba0b07af6d29b95166b6ae494 -a3f74fe7fe757467099d28748127c316 -a3f7e97a368cd69fdac4a3b3927c24ba -a3f991d1fe812d9c077ce9acb2ad5df4 -a3fb0a1247463ee26a8ec719a3ec0c84 -a3fbbf92f1d1c2afadc66c3a949749ce -a4004ae44d809b75163846255eb00fcb -a403808299425ead0a951e709ae055c4 -a407e3734437da008c56bc3d2cdea39f -a40b37654839ae60aaae19c835e37aca -a4130bdaece1ed076ee8f4e5ccb14d19 -a4170c1d89958d1c4dedd06ffac13573 -a417c08807f939ef4f57d55f9f3a0744 -a41befb9171917fdafdb554a11347184 -a4258d8b8dacfb95e79df3554a587774 -a42773edbe2f7e3b2ca9b3d841c7efc8 -a4279a13a95e53879c65350d814ae0e4 -a42ab735c4e5817cee9bc714a46f5a61 -a42eab6930105da2e2807fe6f309b735 -a4302cc20eb59ac7caa2680f17d49ff1 -a430a1139530da49869220489a46f417 -a433a6509f5ff45048265aca6827d6ee -a43ad183ad73648e0f6863a146e8e659 -a43bda7aee775b69b20ef5715007c78e -a43d81089ed3fe696688943bc0ad5d5a -a43eef9ee0e5bf1be241eedac39a5d9d -a44255e0c18746cc885dff79c094fe47 -a44989b64b1450f255feebd379170ef0 -a44d9641f364764c764cf6eb59889af1 -a44e2462cf26767a6b6bd9344e7b1c9b -a451cf07d6052fa08e16cd221ba4f8ed -a45231051a73088c6e13ac18de75d0ee -a457503495682802834fe512a0f4615e -a46609dbc44681bafbd049ef81f30bbe -a46698737cb4f089f78cb1a184773db8 -a46d885929e971a7ce338df14ded0370 -a4732b662d22af92d2d479c3354b20cc -a4814f62d05f810fac6ef602a5c5cdc5 -a4884dbf970f050baf117463dae3b799 -a48a8dea96dff50195e9c8f1703c3eea -a48c2bc6799061dca6366b08fa965378 -a492e8293a8983f0ff2f77834c2e713b -a4958a034c4301a72739901b75766e74 -a49e3f67aea9848501f92d0bed90edd6 -a49f63fbc31b8b3ee6b2263594a4e342 -a49febedb8af5b6d55637f25fcb87a52 -a4a0657c1c079520b0af84fcb0490756 -a4a45d986ef94344a14a36318537e98b -a4a54ad8379fefe1018a82cbf08b5c3f -a4a8fc4d7adb760e2c6ba8588df713d4 -a4aa1f5add9f67dcf9b66c533c5151f1 -a4abbfb8f16fcbd250c960ab9f657990 -a4adfad8acc274490f169ebae2ead50e -a4b072d4978526c6e499d5f879705c64 -a4b2747d9b2857894034a3589aad575c -a4b3665f5b091daad00675ece725e612 -a4b4fb8b0df5270e3cb907506f5219c9 -a4b6dd6cd145d1a208ce1beeb6bb0b4b -a4b71511a4c6ccda4f38e8f79f5d7342 -a4bde247d19fbfab6f7b8071bd5815c9 -a4be6b709157a93468fc2f4ea4c25246 -a4c2c54270634497c0a5373278282c31 -a4c4e60b53400717935bedf84ebd1f0d -a4c7a254426cb4487140ae17688930a3 -a4cb690cf10466f72098da9253c38495 -a4cb888ead142b3fc98dd3fd14f17ff1 -a4cbbf4b202dc2c508f1ff136ab343be -a4cc3db4482551a035a27793fe741f38 -a4d26986beafe5d532dac54210501ced -a4d359adb840ad96398e7f39e823390f -a4d5e2d38af074e04292d17d3f56bb99 -a4d73c41e13b0e61a232e31472d5f323 -a4de465248f984b1090b3e33e9260af1 -a4dee0de96a477bb88d02470dc426a92 -a4e22156336d9cbf25f440c994dce108 -a4e4503ac3cd7f5beaea4b281cc0c915 -a4ecea027ecc6ec471da793bd6c82588 -a4eee4fa16d44989f8eb50663f2ccf77 -a4f12869cb411346218c797f3c54ebcb -a4fef1f69a166e5d2e4deac9dd095f2d -a4ffa5f0c7fffd24dc93017cdd9e7881 -a5041b1dce7b80ba16db3ff6c69754c5 -a504e96cb1ce1dd7d339e25c3d448e3a -a50a6475615f04fffdbb9012caae4516 -a51145d7b6fbcc43597785ccaa857598 -a512462dee847504de2a6e96ba6d732c -a518589bd1e8e71275d94f55c2335d4f -a51afbf855020a5bd718d004dbe22f74 -a51ca8c17f9487941945c9ff5fd4f61b -a51f1f46a36e96eaa4c8bac0a7b02050 -a5216ce4c388a51c5ff5307861a189ad -a52ba0b7cb3567710a359bd1d313c1b1 -a52c4edc59cb9cb1d1d9bc1e7896efda -a5328ca5eb5c464e8d9b94eb9747bef8 -a5422c577ba382517a7f3b6c4603e1a2 -a546b6fafa5e7fdf4e4d4f4a2430815e -a551a96dcde83b4f80e6b6f1bdc08def -a552555201886152855e204c5a4976c9 -a5570a7e22addb8fc7b22662e67429a9 -a557361366d6c9b892812fe2c52e15d1 -a561f5e42f64002b1c2e80a4abacf8a7 -a56963ed55086bd1c0e732c92623b557 -a56b8ecf7a7b51672a54edc7263627de -a5703b5c927c341decbe4f18c54ef7b3 -a572695dab2c78225f4ac1b89a354d5c -a5727929bfa0f2e6130ba6d1258405c5 -a57c4431b4ca3bd3c8a63b8691bd6f9f -a588060611e019f8d710d35044516210 -a58f21d260a8a1b769479d2295600f61 -a5945d4129214ff646db70d16d2ca368 -a59a63c947a00cff489f9868d79e945b -a59c5d4d6638d79076d7963fb6d311cc -a59e15dbd9e53b143423adc9906d127e -a59f592df7482d92d9e8eb6a8680c887 -a5a552726577a65460e6ad950dcbfffd -a5a87953778e89bcbc4981d07f7c6329 -a5ae5c8037e647bd349fbdb09beb162a -a5b0e845614d983a32dcfe5725eccbf9 -a5b13e1e89c1b757583a8166b32f3dad -a5b141cc9453c513c8fcf494e60f046e -a5b42ef2282bb4932c9289888c182f0c -a5b6312d4917ada267cbf270effe6e8f -a5b899c7020c66000f2aba2740a0b498 -a5ba1a2b2f6db09cba767ea1dfb2fd39 -a5be0d7c0bfe10a98d9547a281b82069 -a5c65adee364c70ec860a9e058e4cdda -a5cb98d92f6866b36e1ee8147df77f44 -a5cd8d4546ddb90bd8533631d8cc14da -a5cfecbbf0db5b2923e690dc97918718 -a5d1ef06e4dcd20237535ad389aaa232 -a5d751b835b2d241fde300fe690b463a -a5d7de5dbd907476dcf3cbaad0638afe -a5e2217c969e9c4e6bfb4832d74dca36 -a5e2cfe585f558903f295ae8c16a8a02 -a5e9fc25de185892b851c1fded5bebf5 -a5eb6cd40310afdd796bfc8fb35c88a4 -a5ee1aeebceead355bbd62bbdee3f315 -a5ef453ae71997794093b8d9f62f7659 -a5f09fd953cac0651766171596ec71ff -a5f4ed3e58ad3b20ccb2dc01c99261cd -a5f71fef57a2e40f4a71ef76c0694308 -a5fbd4c850aee312360f2e892c3ab2ac -a5fbfd6c9f825c197071563d80a012e0 -a5fcfcc4071ba89ffd5c76fdf9964e93 -a5fe6cb745f5ce7f04dbcb1362d4d53e -a6093f7d08b8c5b16c87271ec838afa0 -a609a897127bfc6ed7ce56b95318dba0 -a611ecb8162b3e26f595d91d0c58bdc1 -a612da4b93d33a4c1b4ce66afc454567 -a61337388cd070b01473f913ad3703ba -a61d2317ee4393fe16d84d7971f17e1d -a622d8806149cefb05a11094f80a3e15 -a6253ee7ae090faf40cb22eb25d7a6ab -a627af77e62bb00a9eaf6f88dc064d27 -a6299c78ffabe98f27498cc5398b2aec -a62c33a1b1df79e2f91474b19e1a4bcd -a62f20995b167153a2c61978ea5908aa -a630d8aca0b846a64e0bb8a60da58df5 -a6315a0db6c74f16591af958d86c9cf6 -a63197b3c93ac9bb909cd308b3667a4a -a6324e3efa542db5abee42fb72466ce0 -a6343515721108ddaab24ca02301cdfc -a63556a754fec63abfb4013052fc4b66 -a63597eed3eecb29917e646a8ace39c9 -a63624bb7a8bdb44c66a7f2a286bbac9 -a638002cbfa522ad736c251fa9b39c5e -a639cea41157ccc829d39be4cbfd51a1 -a63b919411aa767cbb7300dd689c86e2 -a6421cbaffa2ae3c8865adae238ee0a7 -a64ed71f5d5d354be359cdc5f9172a35 -a6500ed28412329959407ab1fd189813 -a650f1be5235bba5e3cae340675fdd3f -a656d451d4cbdd0389b431ff218406c4 -a65793ef4437a0b9212b182b4094aad9 -a65928090bb4434056617f44ff06bad3 -a65da9a19a867caa1c73368f36156cdb -a65e26e93e84ebca6a0ce6b2e991379d -a65fb7a591532dc232d88fc8312ccff9 -a669e7439f892e2850885d1009904325 -a6764b06e239d78f07c7fafcf0efac80 -a677d649f2aa9cc88b523b0393b1b29a -a67cda6db6b558907362776e22afed9c -a692b8b9d9cc92f0cf7d23801e0c526e -a6932311c0212dadcb7b07aaa6d8ecd9 -a69415ecc15eded19de142530e28629f -a69ef562048276825c7df9d8f9ace3dd -a69f7d65f6b6d1d4d212bcae15a679e9 -a6a59b14c4a0c0fa5c1b6208fcf2fac7 -a6a7f11a21fee5c42a9d408f90e124cc -a6b0cc8b01689f46130885eaf4d32f8c -a6b621892a04fc88ab4e74541692cf50 -a6c36d757704e10a5ffcbf5ca6333c67 -a6c9149c69552e2a127994a5d548e30f -a6cbfa4d33f1f859f3789dbe2c394e95 -a6d07e5c6011546c7951fcf45c12e66f -a6d5d2ca27de290fb13dd7d9ca10336c -a6dbd30c1deed7bd726bdbc4013c67a5 -a6dd2d16132a9ca02aecf79f3006b074 -a6dd34bd08a8f02822ede3131f31e0be -a6e0ffcbe4c0a293c31011aa4582e925 -a6e5b5278863e777dc0546be0329ea8b -a6e6ea68bfd7ec7b987e13d7deb319b6 -a6eb384cb16aab840f8088b680c9468f -a6edef1451200b6f23c90981dc6bb4de -a6ee17b48cb500a42e4d022bd774463f -a6f10a4c241dc47ed943b1fb98f5817a -a6f515559a708ac16be1a44406d5f20a -a6f56366959bf744901a75a3a575d9ae -a6f995548851270343cde1ca53274771 -a6fd8d71223b138992c77e5e27be0ce7 -a6fe8e7c1f9f222a0480d5463d4ca5b2 -a6ff33b7de7cd82872befc1e9e54ef6d -a70738a7dbc7bd48126e56092caf7d2f -a70c1a4633c7d8d0092a3e4a2d31b5f9 -a70e9347c23fc3fe455ddfec4f0400e4 -a70f1bf25c2feaf57af4f23874e7dcc6 -a7116d87f43ebaf220b3d5f1496a6a21 -a71437e6416bd9e165ec4ca4f673fcf6 -a71440ce23bdcf7a840c184ea5c3dbf7 -a71833011f93ee64074a33daf77f5538 -a719f420334dfd10890f0a75febffac9 -a71bd1b72ea3513f3c6b675e070bc690 -a721b5980fa2324587f512ed8e191653 -a722c6a97b555feba7921af166d40092 -a72476e01919602fa25491718630bba1 -a7273b61d2d749d7078254a4abafbdf1 -a72760025cb756d8b3e9045dc03f03c9 -a727bbda31d7543dfef7eced5f46b76f -a72a27b2bb8e2b4ff8c6263428a99e71 -a72aa5b78adc0fbd042c98602520a44b -a72df9a22a7509fc0cb30e6298c37946 -a7317dedc7fd56b1b3db8ac32213ffd9 -a7320aaec2bbcbb189f9f6f82920b5a9 -a73b417349db61256545ebddd40ef6df -a73bd906b3c5af56f46634a74b92661b -a73c0821f6b0520de88512d77de003b9 -a7403c9bf31a8bf1f759f8c1b42c1657 -a74699e359f0d765168219a4d6239089 -a7481c5afb0977324a19bc4ba123b78c -a7483cbf7898a617a17cb1d997790680 -a74859d5cc2e69ae2388c8c9b9b393c0 -a74948873ca768881142d0bf8dc63982 -a74b1d299d1cc3be949104790d574522 -a7577cfae04ce78e64f3d6152da0d5e8 -a75d2dd49dfabd6695483c96dac5c5a9 -a760a8860e41c4412c643c3e6c0be7dd -a761ee2504cc0fdbcd90ea44121bb78b -a76f3035976d6d1d70fc8134b2c59918 -a76f6802f3e4bbf5ae9d8fb6d3c39c7a -a77488b6b1518fd23a8364677251a731 -a777c82811507a811ec16e74a1e3b62d -a77f7d310fa589bf4e192fa26832e87c -a7800d843b615554d904574927bb82ef -a789fdce26fd4f54234c8bbc93965c91 -a78bb4e10108310b8bf4a0b576ed74a1 -a78c3df1755a65913e38773546b78537 -a78d2668c548503b2147e43106d10f72 -a793b79ca50936aee3d94e5973ea6d4a -a7967cbe792110c24efc624f15a55c5d -a79779cf2ef77243632a893bf1c4be52 -a7996ccf8d3b7d6848ec2832c8165126 -a79b6c73aaeb39826652e9a045452f49 -a7a01816d2486635d910114b1881ebf4 -a7a21a6a370dda830d2059f3f011dd3b -a7a3d8f013f740ed6e16f2d6274a830d -a7a71bfaa697ff117f264b4fdabbbe9a -a7a8757ce72ab5b2e5fdab1345c8b4ae -a7b23cdfc03272f1bd60103cbe80376c -a7b51868ba51e047d72b272bf1a711de -a7bc0595121b98ba6ee6e5abc4cc49d0 -a7bc439551bd2c0f4c5c9eb6c08b71ef -a7be27f39d17a15c3fd36bd97f01fbe9 -a7c7f697212f846e21d8191784959217 -a7c9d767a3b3c775ba696320fae4cef0 -a7ca170e39ab05879f4ac8a449b69d7e -a7ca5dab3b81673fc618d06809b5d9b0 -a7cf42b2c72aa45d0143a57316ad84f9 -a7dbf18feb9278bb41e7941ec16f8477 -a7dd2f217fc179f7da39c16868690527 -a7e097eced828dc7b20946c7d21cce19 -a7e47d018632e3033a3797c33bd3b10a -a7e5611fbe7d1d74e94c2377374b4236 -a7ea09dd1056187b020f522425202386 -a7ece540ba96bc9cf5be97b7a1d51548 -a7f497aa490f2981760219da72fbcf73 -a7fbad6749350692b31611fae6b92d4a -a7fc44809aa8ad09b694d53b44a63c07 -a7fc889585628e86efa7e59d1ba41f0d -a7fd7ab21a26718f0b44b322e89236ae -a7fe63c4efc8c37fdc03fdb4e8060ded -a801bde7b013adb54761ea8de91233b3 -a804373c20227607b7b3ef59627ad26c -a80daf101a5576bde27a0562fa39a4cc -a8157a7d0e3e260cb64a51cff47b5509 -a817e0cc33f06ea023d9a894a10f4717 -a81f280495576989c88631189a2dd8ca -a8315b8c6f779b34f902a2f4ead19211 -a8338de28b7b0d08032fc6f46c423592 -a833b0e488c0df72e86a053416a5b5ec -a83ceb7f5a93314f7fccffda1bad4f4f -a8418f118b480f3b4b1e4505429241eb -a84496a96a59dffdbc8f25d616af0b5d -a8457384795114558591a2ea26e89967 -a8473afc968b24aab26ffb742c72fb7f -a84aff98c850bc5ebd0555a9333ada5f -a85376a28b83d79171bad65d5c0cd17e -a8575516ce45f950778e2c6822d3a900 -a858b1c99b1e64ac5290daf0e97df2c2 -a858c1c6ee95e5954a6d9f596b5f168c -a85d13732155fe0bd77cc4587a8e578c -a85e5964d69d24139a42f630964e74ed -a85e6e8f71660db42bb262c828d7072d -a85f6a6b4e355b614fe72a6ef12a6fbc -a860b36a9519b92ac3e83507e3b200f6 -a861125432412c95b5298013030de4a2 -a86a4f49bef16f0e7d7004d0be4b3be2 -a86aeb171959e769847870e08169309d -a86dc14b0553ff9303d948480370ec92 -a86ee1b9f016105fb53f195fee4ed306 -a875030181674cc287f61462706c31f5 -a877d6b474ee2f29819d5de32ff18a41 -a878e474925867e4119a21c6208e89c9 -a8871d48e1614532ba760477754392f4 -a88b38e8cc9fdec93e7c5a5abafabf16 -a88bf81cdabfc3c1022668adc9bd0889 -a88d9fc72b83504844da8d96a77a472d -a8a3910c01303a363d7c750fa6455c6c -a8a4896255ec1b9f571e5f04775080ff -a8a53e28bec61d7f54444a080d996a99 -a8a63cb7a783a611e0eb21040fba040a -a8a95e54c15b6d11d575620bc2c71e18 -a8aa4d7001ccf054fabc302e84efd32c -a8b3795ff4b72d0957678f4e5ca8de04 -a8ba540d9bd8109f0364d28533121079 -a8be9bbbe0c60589713eabf197f2b5be -a8c19d3771220b69b4caf6e890dcd220 -a8c23e02cd31e0fb5b5ccb497931342a -a8c59828cb92a9ec28fadff351b79f88 -a8c885ed716c60d5132443e1e311c189 -a8c899b7aecb9ac02006f2270e1dff9e -a8c8ea60889237392b2f5570897bd886 -a8c9436e53fb1b8d07780f5049bb19e5 -a8c96be24390dc7884ae9f609efa496d -a8c9c547176cb01c560ee5d5d35cc0ee -a8ce9b503c4acc2b8987420941cc6979 -a8cf4f37d8ae1dc0f4f1479411db4c1d -a8d28d6aa5a06ef2948812791fa3e1a9 -a8d3412a6ece404580331895aafece61 -a8d4ad54a4be944799ed44369357c632 -a8d9ac6ed35ed17d2c1253848b19ebd1 -a8dd08214e04212c573b54476789cf25 -a8e022af62972117212b5be9354d156e -a8e0fd536d4302ca5e8e50ff277e6d6f -a8ec39e07edf3439c208d912294797eb -a8ef515aae9770df131e07eda4207f37 -a8ef564005fb4ec097f230e3f4bb7e72 -a8f35bcd4d447d2761349856fc68b586 -a91a9af3964eb7c7dc2efe5229c0e17b -a91fbb515c750dbbb549de0439694a70 -a920871c00d1fc877ac69a2a35f188a4 -a92601ea1172620dead87f68ccc31c8e -a927c28dfcb8e126166e007660567493 -a92c86b2f88bf3e5bc78966ccca5124d -a92da6c0c82d27ff60d52f865e6e64fe -a9363d386dc3f1757d21fd1df75021ef -a93892cf4b4a1efd47d33a5443f6d92c -a93fc1bd88fbc2df95034ccd7bf4010d -a9403c152e6dc54393245bcda33c73b9 -a9431a62b7ebb044b489e3a6b1d0691c -a945c65f587d79f7da325a9b1b18af91 -a945da64b34fd1f5d7776fd46a07acf9 -a947be855e06fcb231c0ba970f7f8858 -a94ed1195365d3cc8aeeb9b08d3aa4f3 -a9512d54de43b1e1157a5de637db8e33 -a9516e7961aef0ab8e55f4fc1b2ea685 -a952cc200e7e6effce05107c161d8ca2 -a9547293af267606043dc73619a1d8bb -a95aa1fc4fb9bf3f3cabeadfe16c8cca -a95b9e4510e0084d70ed7b6afc496df8 -a95c0233c4b734408ab0e7bb28d81b53 -a960727fb14449c56e0daa264aee5623 -a9630ddd54b7ad136cd38b580b8a79a9 -a9657f8cfe63c6a695c766b2358839a0 -a969d01c67603ed2d62afae79dece216 -a96a4df93fe35f2601dd094ac2bac991 -a96b0d7225ea68bc857580cab75bf633 -a9703ded37523cb21a65e33901b6e6d6 -a974ef3756d642393d3694751842b936 -a97810d8bcb46badc2fe12a3fac272af -a97b5fa4577d255f4a6a06232f74dba8 -a97bfcb7debcf883acb3557079856942 -a97d1d2d9dfbce752e8168c658794a56 -a98383799472c1839c390291bd1ed0f9 -a98a7fe4f15d47c25db9cf857e266f86 -a99ab318f0efeb20c129c4f9b6368277 -a99d7c21ef9a0c05ceb87effbaed5b73 -a99f517d1cd2a623f096c0b34c1a5a13 -a99f6fb54acc674007f35f87040b852d -a9a1aae7ee95bbd2ab70b2893ed22cdc -a9a2888c28cd78a58f22edb001b40bc3 -a9aa9c9b2bbb262b9ad779874f1dba67 -a9ad2b4357b50f807aa85f970aa4c84a -a9b47c9ef0e45f721ae405c9c88e42a0 -a9b682fd194cf3d5e9232667a2bb318a -a9b96fb72bcdebe22db84a2f6f1e5c6c -a9be1a5f5bd1897e65d513a39f1a0fff -a9c15ca6aca2c390ab605509a6f32b24 -a9ced68ed00774ab8fb76fca3c8bb21a -a9d4e04db2bc2e1e3fb2257d53f25343 -a9d77fdff295f39067bc806f3f440ec9 -a9da21fa6b50de0c5cdd9a0c55f82537 -a9da65dc9dbbee53a03ddee6d85537d4 -a9db85d9aba2591780d3809f8eadbec3 -a9e0d106b3bb15e48f5fafbf6cc262a6 -a9e13452ea060e3e1558f36931ffd4ca -a9e1e5f0103e7bb5669caeb2991f2aa5 -a9e2477224a79e6ffe3b4abb9a8eee3c -a9e28f39d01518d238bc0461780937ff -a9e6bfc3905b24446b27a607db6a4bc4 -a9e9439d16ec1408318610c28c80241c -a9ecedd44c16c901119eec513fadb9ae -a9ed0a1040f7f6607a4f84d973141491 -a9f4da1563c3c5fd58d2f9fd7022ea18 -a9f634857a1bcfeb5c0f3a2150b6dfd0 -a9f69078785078fdcd7401b4d78335b2 -a9fe223319a97d9b04baeb1db2554deb -aa07898bd32308b5eeecc1bb0c27571c -aa0897670bd8fa8c6322cdd689ee6157 -aa13891d30cbdd13032e0dd9f4e495ea -aa16444c37aba77d3f90b3d854a7dd37 -aa1adfd5010c0b9044498a9d7112dc82 -aa1fcc09399e5732fdafb11de3479676 -aa330df86cf80a0e6ee9ea9b612a29ed -aa38624eb0408f6a07f03cf58dbf2640 -aa3bd0b588b4e3ae627d151c2003c848 -aa3ec1e17cc7862bf1cfaa540cd2677f -aa43f3472a459dc2e04329adfc7f57fe -aa5559c57eb83aa8afc7d751872d7e73 -aa58117af7989f0434f528f20b46e1c6 -aa5a2f3edfee012e49b9c67855f1d142 -aa5abd33a2c35ea275715775044bbd94 -aa5b0c20a11b944da8d19ec7bfa56695 -aa698335b07402d9e912f52c5dcf17f0 -aa6b50db227be998a0b87fdbb3ccea0c -aa6e999fee6a2bad549133bd824f891d -aa6eb13fadeb54560db07371f1478016 -aa6fc7489195af74a7f6cbb8746fffe2 -aa6fd6be4d745e2ee771b32ff7f4e87f -aa7150cb03a0df1eee70734fd2a311e6 -aa7210422a34db2b1a8085e9a3d61254 -aa7309d837fa8c7188865c81ed4f4b18 -aa8451468c0cd8d024663f58357d2ecb -aa856116bfb065d4aef6426b70414c35 -aa87aa868bdb25635825c582f04e9c44 -aa88f995cdd6086b78e60c28d7599b78 -aa8dbee4a607a46c169c4b65483f5095 -aa9429843900cdbe80a3b2d2072b8c00 -aa99f3a89bcf08b710bc90d1c4aded3b -aa9eaa35d86a96ce07c5f7a0a12af4a8 -aaa48e9a63a7029d48b0db26dcfc24ac -aaa60a8c7bc7d4227e7c732626fc96fd -aaa7d4535e6f28bfa38596f0b9c58979 -aaabb44e64727caa0e398748146b3e02 -aaacddac8f6f2dd5e0fb5283c124d031 -aaad20cca406dedb93c4a6c96937da91 -aaae39dcc8c14702ad3ac1252cd5af9b -aaaec8af41400b5425aa88909a99ad34 -aab2323c3b55aa9f137018c8af6ae7cb -aab3c095aeb1a3b4474a4adcb793a522 -aab6ebf17d0dba256cb00de46440496b -aab91911e6fc58a8b7d526225f63863d -aabcfa1c431fc0ae765fac01d9ae706e -aac4e926a05f2746e20aaf34791f1710 -aac96958138ff9e4a9da07565986c7e3 -aaca5a4bb823d993670aa86e23e47f58 -aacb63dd80bc889a4b66718bad1e5dcc -aacdec8e7d1916c504a947edcf195410 -aad3195e63dedbfb40e69b27c499c626 -aad544b3a8f875d6a6afb793dd59000c -aad8908cd15c7084935489e2904aa8a7 -aad930fe252cc85cbda32409fcb5dd14 -aadb0566bd02aa321fa530f74bfb77d2 -aadc2d38b80dd4d6538ccb247ed0bed2 -aadc8a42f28346015200d9c2681aacd5 -aadf6cbe3e7adc90b59c4da78a484ee6 -aae2f3185d477896ab2c3e1e946e94a7 -aae60142a3e1d62690d909d00c24d2fe -aae7ab3b42a5397f6158938ce0b8daaf -aae88c4b4ecd8e448cc86b58215ac7a3 -aae8963e4d7acf183cc7afec128d699c -aaf1608414c9dec6f48e6841197aa04b -aaf1931b2f73504a32b7c2475bf36527 -aaf3eb10ee5ef36c60c7e07ec0c57bc0 -aafb9d9cd4dd7ca01cbf53b513905bed -aafc51892e961797d2fe309a24d0b94b -aafd84655b1d4a142649e081e628b54f -aafd9088b32a3c5b0ffd75967d9cfd79 -aafff89c75257792a12db4cd105e0fd1 -ab0d37df3aa21e29b43324510396d830 -ab0f095ba1dbe4d46f766bbbc726f28d -ab1dcaa6907d46cc9ddbd359f6948b94 -ab207e8555d07bdb112e36542bc43d08 -ab23f37a476d5ece25036f9039532fde -ab24b1b9397699dfea0ace179be3cbd4 -ab25fe34683e1120a564bb204b3f0baf -ab275ab49cc962bbdf78f2975c31d092 -ab2b6eee94f95c261e4ac1fada93cf4f -ab2c8795f3f59310d4ea53877a179d58 -ab2d8538b7317a357caa451049590266 -ab2f917a15b0d0bfb35f4a331ebf7bbb -ab34a9a0fe8729ad466ddd93a3dbf6e1 -ab39f6032fc72c4d3b6808fd6656de74 -ab3d6050f237bc6b26c6e99799d34aa8 -ab3d92e13605b778a315969ed6d13f79 -ab41880eafb58a8409bdbf1b05cdd64b -ab490fef5015e10de33b086e7b6e6d10 -ab4ced6eb259f0ff93a5dfbf7dc016e3 -ab4d971cc4cd350d8abc9050fd848b6a -ab4dbac9f96ae9f14aa35b792e438771 -ab57fe3151f520a6335e863671737f74 -ab5b39078759272d050b566aad1dbe5a -ab5f0a63b94cda6c90a0615c6c24782d -ab5f0b2f3fbbddcdfba0f7f0df4d33aa -ab60f63c792d6507ea43bdc0adea3101 -ab6602f682faafb05ad3793808afb478 -ab67303c1de0373729eb29f4fa02b86b -ab6b55e69af3888b40d51b2ce224b955 -ab709e11382cea356ff1e508a7506805 -ab755079ac0b35b8ed4fde1ec5ade45b -ab7637913bc3be415c79131ecac548e8 -ab781bdb74df08a595424c2991f10f43 -ab8019ebdf6d9b86a48a22e0c0694062 -ab842a5d3d3e59a0d4ae5ced387d1b28 -ab87b7227329cf76ad58ce85650df016 -ab912910ff3465fd5fd042095715ac9b -ab9255edfce93973618d6a7993624f76 -ab948b88b44245d0c061f71f30b360b3 -ab953aed3fc16cf00619a5b6c7ec5065 -ab9e0a2b522d7e39458aab500a3ead16 -ab9e99a377b0345255791933f1af062d -aba001bb2e74fa171e54a244c8f4237d -aba0a92adcf8c5c52f73a89e02e1f7ca -aba40c1226c50fcae9d5faf0b6a3c9bb -aba5074e9c51c5b07db427b4824ad7e2 -aba636a9741ad125e78b07e9dcb057cc -aba8a6d3d4697dc00afc77f730dcd29d -aba913bf8fecb68046821b21d32a753f -aba947b0945cf24cff8fa86a03dfe139 -abadb7cd92bbf26e67f672f168d5d486 -abb142234163d8b88cec2476bc4751cf -abb217c5b42933679c59060f372a91bd -abb65d50261d54da7d7de3c53494af67 -abb87faa9f57c2296b528eb7efa09697 -abbe104f087570161630cb80d0cf4c51 -abc5f42d0ae742b0c2ed2067635ee805 -abca8bcfa8de4d13c74a46a2e8973d3c -abcc382ad915ab93a9f9bdeec8785834 -abcc7afeb67a0716942b7f24da60142c -abd11ad941d9bece5639f07556af4fa9 -abd3e23ecf3610d7d5736632bcc9574e -abdb8ced6946df56347667b94c7a19a3 -abe4693da90c02553e4dccc6649a4505 -abed9985e50933fd0b14549ee819afc1 -abefef29c9caa738721154a4d0881a1a -abf255468eeb1d22b3388e8b0bbf6994 -abf3283c82570c68779eae8f847694ec -abf8ad2fb15d00e2a59e5e0fdcec1d1c -abf8c4c817c53996d578aada495274c3 -ac02fe3164ed4066842e0dfd0984a7fe -ac04012918c454a69b09c37d791dbd1b -ac120991de3bb7a21613775c669a40a4 -ac12c5a936da317bbe80a11a1712d8c6 -ac1c2767e3b461542ee8e670e757044e -ac1cfbddd9d86ccd0efb27d13be2152a -ac1f1756f2bc49281603e34193d116cf -ac23673b81e8eae6ae3fd3b59dd15a6b -ac264e32fd9f555b3043dd58d7a59796 -ac28846031d0fc8ba6738786387dd81d -ac2e3bd31cbcd147b21263346298af1d -ac33bb04c70f2581ddbc17ce773dc06a -ac3624f017afc145a8e3fb2ceffef65f -ac3773cf8d5cbdebf6cdff331440b4b9 -ac42f67d218bb47d22db32a79f0ca25d -ac44b4c8540699fe2c7c6775f2ae7767 -ac45894560292f5769f2f6f2b55c9478 -ac4722d30f2a2b459a8a45b929a70efb -ac51cb3273de58d2578353bba4244568 -ac528d33203bfb9ec928745a90919c8c -ac562754332572391995322b70b9b6b7 -ac579d7a970798a2069f686991de51da -ac59446c5959d7fa004d7cd82247b0e6 -ac5ee64ebb80f1d30c9f03ec52d43d63 -ac60fd6dfcf0808d8a625dd4dd91f9d4 -ac621a374b22a58ee61e93e19ca0dee0 -ac6367ad90687659113bba6748bc54f5 -ac645970af153cb35b54890404cfe169 -ac64f17e5843ca400c4314e3d3903950 -ac66054d11c1753eebbcf34716c27a2c -ac691685a848326a54db6f8f18686413 -ac6bfc2b1f35723980495cb51e6fd05e -ac6f29aa38b65049137127d1ddefbc62 -ac742983a07f9f36f001c8973d340463 -ac7631d6d4b1685f1dcf317fcb89d66e -ac765dffbfe1681d0a5984f76a43a213 -ac771fd042e4c9798b3bb59ab12e3dd2 -ac77d68291b8eac9cc4d5425fc42b169 -ac7b24cd138c55f9dfb7f7776eb55301 -ac811a9dbd4aa5e0cdc40d2a199e3a30 -ac87726eabbe9c3aae4d30e40cadb20b -ac8eb3df595580580f25353eda07bcdc -ac91b2ae9a20b5c3610c396a94355ec4 -ac9324243e6b465d8d694b25f263d737 -ac95af9fe02b9276d7e0fd0c32ba923e -ac997754e918fae7733d6137ef519590 -ac99f7ff75bee25a3f4f92279cbbe70c -ac9fc3c459edede0587f7e83fbf13e17 -acae1849a4dced710acd5ee719dd39ba -acb30a84848bbb028412ec599256eaef -acb3f02c5e9fa449ed51c70a3d0bb038 -acb42fe0ecfacbae762d64c3535f2e8b -acb43b48ac0343db3b939ba52f55251e -acbdc6957f1de6bec4b19c405578ed4c -acbe7f3439fa7f77b2008f8159458717 -acbf13e847ac2085eb510780dd7b4f33 -acc385bbce6d31956f9ca9e5ccbff41d -acc7b9362edd1dd2a856ceb2a5559d78 -acc7d6543a93c98d6d1787a7cc2c49ce -accb746d87fac836a58dd043ecddc16e -acd004085ea907d706c6bb1d1c00ce09 -acd15048d681142c9ad42a71d3b40f6a -acd5c30a88089b16ecbd91471eb4c4f0 -acdb56f775256937ea3aee4b64b1956d -acdc8615fad5f7937b4d9c96fe7da4d9 -acdd4c505f24ba2b7fa430c38dd885f6 -acdedbe878e59413ded26c0fd1599393 -acdf308ff0abbb05a8e62fbf3ac62550 -ace19407f8860caa886d21086866a44a -acee42817574e62951aaf741b5d85702 -acf7438e262cecc4a212edc2b63785c6 -acfee8ef9a37a7e626ebaadcea0cb097 -acffdec8a36aa8743c8dd02619cada31 -ad0c6e9eeb25b982ca6cda00586d051d -ad11cbbc91ec36ac61404971d9f0b3ac -ad166a4b7dc93f671efd876e1ebe8759 -ad2014b9433ce7fe1b35ccf0849df28c -ad20b0aadd7469ec05c462b027ff6323 -ad2c33edca0d770621373ba0f58808bc -ad307afc9013a76437b8149749e98a90 -ad348329ebb9a4fb63c48803a2a6869f -ad368f9ba7b30e5d57339f85364ae72e -ad3cde9d38ac8595b775c7c2c3a6cb19 -ad3dd1b241402d0db1c2d2b1b72d3618 -ad3ee435d3ffa3e6e308039d862ae6fe -ad455b8784fa0ee9a396ff6b1bd74a31 -ad46879e929314a6b756cdafe0eca759 -ad4c8312d59329ab92a2ce9bc9a6ee5f -ad4fa03740340c10a2321d1e6fc20b06 -ad50725e5b8f52afdbbf3433a735cc0c -ad52099399c6e6e10371ece7bba7838e -ad58215515bfae8ce0ec061568645b44 -ad583964da1b629961316a4158b302a1 -ad5872fb5f8cf9c3ab5e715500b49bc3 -ad5f27fdce108ac7e002f4be2d67bc05 -ad610cf84c8d83e7800d634209ff5eca -ad64512d66b20e6dec2b522b19a865f5 -ad6617baf627f7ad0196f5c0c986a898 -ad69f264605cc38b8193e26f2b431bf2 -ad6b802753ca0eaf74f397be2aa86cfd -ad6c8ee1006fc80b74200bd9879ab88c -ad6feef7a7bc2853ecc2057c2f6fb720 -ad702b3e1dee77a3356c111e4f20f94b -ad74dbc5c1b23a1a4d79c184d0bdd0a3 -ad794692bf7695dd01f79f375fb29fd8 -ad8123a934466afbae8787743235c44e -ad82f82f770b441ca546e11b402d3b22 -ad84f6298938d684a727887b727ea564 -ad8c11e483906b0f19c4403ff4cf5946 -ad8db15378fdd0aaa2d19b98b88b6147 -ad927d6005e831d219fadf46ccf3ea32 -ad94741a841cec179858b8bb3ced0c5f -ad959e15235351395edf7776412406bc -ad96146886d0e3159f04ee0b10726857 -ad990a39dbcab1d9f9031868be1a85a7 -ad9980a90384e7e71b5ad14a4cfe5e5c -ada3a2790bbff652c67edd9021bb3855 -ada3f3765794d7a1dc9fa3932a2dfef6 -ada68b0af0803a4910bb27c5bee25c56 -ada6a66ddec509fd3707d7fb5ff85fb7 -ada6d3baa62fc356725a08c3d56fb7a7 -ada806016164b5ab162477c45ed5847e -adac8b89defa83c8ffb1c0cab96cdb6c -adacd6a814307f39c541d255bc0fe2d2 -adb0722db71183e7684b9411c570346f -adb2c47a309a72087971faf0ffe04e46 -adb709326c6945b70ead6c948805a19a -adb73334b63a89d0d3ef1476178fd9d6 -adbd42b12d1809e7a6530041ff6ebf3b -adc460f797783f5377c8d54d19d76170 -adc639271b164694a62408f965420367 -adc734f88e6c66fcc336fe5703c1776d -adc8bee2de8787e64730487c757fa84c -adcb168a4f4920eb76fe72de68297bde -add3bf64783d66602b6289a56b75b9c4 -add49ac7c2bf5cf2062719ca1c5650b2 -add8af2fe94434962a7821ca2b35520b -addb0eaeb035b4e88405a36fa05995c4 -addbc1deeeca5fccb8c610c11a7c14a8 -adddc0bf214f85bff42391fecf02b425 -ade14a86707a2576c5e2cba801bf8ab2 -ade4efe4122631da2ee20778cbf8207c -ade63187e6b3f20dfa42f2feae24c6f4 -ade664148ce481938bf38b23b588f8f6 -ade8643c6d2a18d71141dad6a0e4dc66 -ade91e17e040b7b47161f6a205015907 -ade960391db6bdad4752e9845a72ea28 -adeab3ee5b4ab1493c728699b0eb2337 -adee254ab06cfd81a7b98a9bb468c7b7 -adefb22fa12271199fc33bfa0fae693c -ae02b08686deab4907156c787e6130a0 -ae04ccd6ef643f10b17146bf2de5217a -ae0c84296748f1be1b184ebafdcac6a8 -ae0f7e02d29343f5f967833492ad7db0 -ae0fb809153d29fe5cba4493cbbbdc76 -ae0fb8ad3ea7745342cfc76e49951cfc -ae11190f2856340cd99ddc636ebe2983 -ae14d4909d2e423dd301b5a0c5b04803 -ae192bdf5fcb12deca3a87a7fd2de7cb -ae21364ad937db64853f70be9384cf29 -ae26ab880454e5e52c59e4d3aa6200a7 -ae27604a14ea53783de69e5c9130a504 -ae2a3dcb26d8ce3e794a5a9b4677a2a3 -ae2fcdbee39253669259a47cd12d4dca -ae34bfa8c80b39adde7dfaf949958362 -ae3f23f148c2ed7d7ce03e8fb230572c -ae4057fcb87e99095e34131c489b8558 -ae414c54022163a3ab126f92449d1099 -ae4797d4311d01d45e095393fa215257 -ae4867312f826c33e1fed2a8154d0f27 -ae4c82a448ac24a2b2740b60c5e95e96 -ae4e4ca52249f236d4c5197a798d6427 -ae53ee7a67650c8e1812afa473fef168 -ae54b5a1774b56dbe35249bdd18eecce -ae5b9dc09d9301b080796648e06cd0dd -ae5ea6d4462d9ef7c8e90731c3b1ce55 -ae66a627035019f0991116e696084721 -ae67a4420d79f4dc88f3fa0c5b543c83 -ae6bf215481b6fd2895c4362fbcc8fd1 -ae6d99c66fdac4e71677a318a4a193dd -ae71371b59ab1917b2afbd73d06818eb -ae75d2f13b1c98adcbf0c65741aef2e7 -ae78b7ad75363ff10bcdd64241421fec -ae85dabac4c5ae07adc6d4d8bed4d4a8 -ae88acd7cdd5e5c441e14e916e345c89 -ae8daee01f1810f609d0c54085ea6b67 -ae922a8c860e7bf2910b2f98b4a9b276 -ae95c4315d0dcc63095620f885aedda4 -ae97dda65d748059d4602a000d5650ad -ae9b62e96eb2559470f8891ac8cfae94 -aea0d11e5cf469f7e15445d1dba0ec4f -aea2e206f81605f0b8f9f7e71b9b6880 -aea4c9010becd1b2dcbf04eb46bdaf1b -aea78e967f350d0916e43d456e62e964 -aead83e0a027aa8167440c8bf653027a -aeadab88a5cca99f1ba7aa3cf9d29d60 -aeb1c952199e85aa1085e72ff78e33b1 -aeb2bb92ade45695e995218f4080c2ea -aeb4bc743a39e7be65d9c44c13ae6696 -aeb5489d984d387abb9fbbe2858c9051 -aeb9a8a484019a6da5cad304dd2adaae -aeba152442d95b5eccf256b83e2849de -aeba9bb2dc9b7b1b91c24c00e88f17d0 -aebe8b03a97e3c6bfabc765f6532d457 -aebe9ac932ca3d5887e509e6aefe1cd8 -aec1207b96bb604f422e25be1c260b32 -aec19c6ecaea0e90ca6714fa2533341c -aec231aa631f46bf60f239fa34d520c4 -aec67fd75a41f5d09cb4a6110200ca7c -aece04d2398d3d533eca238b32d8c616 -aecfe130303e9e782592ab695d544ff0 -aed056bf1f88d12d66574d8efa66887e -aed115e4f559f637f94db95ceaccdd55 -aed7511febd66ebd0c2b8c195f79a364 -aedac09402b6cddd4a61e9595e7d9989 -aedd6ceb948630b608f91555da4033d4 -aee0d298184fdbe48ff5e4d5bdf77a0f -aee4c779d95b6123921f7e1fc8059426 -aee746816534167083de1cfb3b067fd4 -aeec6af08ffb4bda16010b8bc3ab29f7 -aeeed96207535fd783eef544abf3970a -aeeefc3ccdee46a7e770f3e6a8bc5ded -aef4fc80828786bf1bb8bee2e5473421 -aef6e1ef2be49c341334dab7741e7f22 -af053c0171955f2cfa91aba294b0e309 -af067bcc545e067eee3f528d6e3c9851 -af070590153217a2d8d31a2f3a68c542 -af0dfd62cd759715e9a7db665f6e9c52 -af0e8fa14e00075fff1b37bf5597785b -af127b546be8bfc59b7a108857999b4b -af151bc1f80cd923d04080c602cd1cb9 -af17698ef0fad61d2ba46eb8b9131208 -af17ee6b2a7e8ed7ad54ca51b09a036a -af18a720531c2f1a914dd963e47286ce -af18df60b83225839a4ee33d89c94844 -af1b985f6ab0e4e302df88b20ab72bc8 -af1d67e89f1d100a3fc71af12069c90d -af20a0bcf312ecafcb92d7d8a29600eb -af29a7a9321c0941bf1200a2159f95b3 -af2b8f01fdce301f039a784bd8a62948 -af33c04b9f3d17e7bab61102634e3413 -af34da7a27d8464af95fdd7a46aff003 -af391ef055c2a4c9ac530cd70663f853 -af3bbdba9a6b107a9275950df8adb680 -af40d37511714a65920e03ea6dc87591 -af4906392c40cfefe61c56cfc474bc32 -af52b82c1cb1d3820b5218ea2fa871a5 -af56971fb1e394b06d8e071d4ce2f93c -af59039f7fd030221accf7065d289c8f -af6545d1cd3327470756725b69335cdb -af67d598838637d4c2299843ee81236a -af683e9bc3d22fcfb02bd187053d9cb8 -af768980da3c6e139d026977bae8db66 -af76a31e81c08f5b310d57b4c991528a -af7704910a12b691555ba2cb2bf45155 -af7d5819d9c83edc19a2800ff9da94da -af817c74a01837b7025f865389dfc203 -af8220f0b4c16293d034d4d72b3ad6fd -af8b0e32d4533947e0b84e19a9636836 -af8c50d2503f92a6d5546fd0c4d0ee3c -af8d34f8092bf7e2814f29e7451699df -af8f9af08f94ac82a8fbee8e4864be7b -af94e7185407c5a9dfa2919e550266b9 -af95448979091cc9d4f4eea2d4be9a99 -af99a1213a4c446c2d82a5395a3cd913 -af9d542362ef4db8540efb0b553eaec4 -afa32d64646cf4fd62b556316ae33e4b -afa8433d258373b53252d7f3590155f5 -afad756411a9112a0a35a485308fe490 -afb073b59d4a725044adf7763e46fc0c -afb09d641c37bbb8f5a87da6bd0fbdcd -afb0e6fd84b0af0c7c92e889aaa0db75 -afb1833c1265f6106c39c3dfe63996a2 -afb731fc7719f91be6efc9db877b896b -afb8a6e143b47e6113fff9acd55d10e7 -afbf3929515a040471351e8776f9a27d -afc45100957cd7234757c04ad453a8f5 -afc5200bc6c6f8540659cd10501229fa -afc6533924aee63adb52d7a23869e26e -afccdd1649487197fefeafff49276bc5 -afd0c3b118ffab2aed4d6075ff82afbf -afd1c3f291da477ce8cb34ecaed18a4e -afd1c74be55be88a9781b8f962879d2e -afd6ea6e3a23ee9edf13c3f42b4cb1df -afe730ca68ada2a5a9baa47af5c6fe8c -afe781393e62bc52838eb91b230d106e -afe8135eb1a4f8afe2640b8a66e8be49 -aff87b0ecf9ce622b87094f42b1e00ce -affa208224faffbaa43022423b1029c9 -affa47858fe22ca285e49d5e7f52b109 -affc21048565b2f7ace9beecd4cd799d -affcbc60522cb62a40244e54e01272a6 -b0023ce545c557990da3292d3352ef75 -b003867af9f085cdde5dc0b5ede43ac8 -b0041b4507e5b9833a9956599c7d1dd0 -b0042e812b7c67919079dc1a10adaf5e -b0058d3dd23a8ecc32e4d6b42abc53b2 -b0072bf689bf5b08e0377fa084a65b76 -b0078c7b757653c9c0b7a2288920fa7f -b00ceca7afb0bdd1a2b1893fc0a2982f -b00e42a3bc94c064cc6d47ca904a7f8c -b01567365bc6148a64a55191c96d69ac -b016968885805a2f4ec1a0e8ad0a7904 -b0182100b92e307f7ca956e565ea383b -b018444fed284473d85e90af265bf4a2 -b0189a9cd14937e54239a22fe508f060 -b019c1605f8368e5bd89ed527a4d60a1 -b01afcae08babe504d65e3f59f19bdad -b01fe3ed7210e254cb5c2e561bfced1c -b020dbb558c128966bed25ce5773e83e -b022a4e37a5002bcc96270a171460b17 -b029b3d19b5ac0533e88e37e0b4f1744 -b029dd4ff5784be726458f57f3bae466 -b02db3385baaa447649d2e769b05defa -b031b2cc793cae8f63e89952fee7f1fb -b03af17e55de781a31bd7e75e4d36d5d -b03c110eb71bf61c60a052aac9cfbd06 -b03dd4051b0cbee245194248d69fbd7e -b03fde235bc96899acf8604dcddab526 -b046eb800c5b735f12b6e33c6fbb603f -b04778e7dc5d1348a7957d98927bf8ff -b04f262825dc79e7ee0285ad80ecee7e -b050d7986d966f9cda9aad94dd8f119c -b05ac71c5d606abf0e97caf79285ae79 -b05c7550a2c4cb538286278027e31b78 -b05d81b31ceca0cc8178f2440bec0bbe -b05da5c12bec67f2967b577f9e61dbb3 -b061a36e84457ce83f7f8d2b398f9754 -b0636799569acae92f33b46faf3fa02a -b064cc877c20016a4517fcae0ed9cdf3 -b066920b97efc957e37370a2fa714461 -b068d4a6dfda7e6cf507078ca3748244 -b0692ab07c3fb1e20395c1a9b48567d4 -b069e24f70c23dfdd1908b20d46a26b1 -b06bc21fceb9fe01427f93c14476371b -b06dd7ef6c3dfe3ce0585a85424e3146 -b0779b91d6fc6bd803d23f16769425c6 -b077d1ff85932951f1032f8e5fe7d495 -b0780a49b7e5b04d3097689b3a5bb0b0 -b07919c013f51df76f1271d4fc792d7c -b079f09748127048c4bfa947f4104176 -b07c677b913c7ff2f6c65de4158bc66e -b07d97574aeaf22c3601f39151bd98f4 -b08919c36d83dc3cfee93b0d6bd293d4 -b08ea19a54932bad3b31c6293caa9ba7 -b0920fdd36227c21f04f84f0db7c869c -b09724ccb17f368f6dcc7aaba31cfdb1 -b09882d65ca8ac49b4648034c05291d5 -b0993338620994c0837ecbb50fac12b4 -b099c5e1e0a96366b4b63fe6c5a6479b -b09a98a769bcb2d7ef3b362f44a7957e -b0b1096dfe76c31d920e4ed312e5e507 -b0b190fb0f52ed04bbf8014537f43669 -b0b418b2099bd6079426de1c2fd47566 -b0b699fe21e88020f6a1c5a027be1edf -b0ba0aaabd9b12161d4ad113987b83dc -b0bca52f0058c1d955ebb636fab93bf9 -b0c297e12429822baff57b741fe5ffdd -b0c820a0bf993e756e8b3212622a539b -b0cb5f3428d1aa11ca6bf92017fbc0f5 -b0ceb1dcb24bf679fce27c89318c9cb3 -b0cfdeeba2faa6aa79ccccbd5956fb0a -b0d01de9e9c28a8dbb2866552354b070 -b0d6090d6235adbf3ad65cfc621ca100 -b0d656bb237ed7f34d8a7306412c16d4 -b0d7a855ab846b775e0289b564eef7ca -b0de0a2550140b6708bfac7fc4d1311e -b0e00e4364188ea1cbff06017d97974b -b0e21c27cb43325f0d2e4b68774c9e29 -b0e580283d40bc2cddc96bdee652d456 -b0e62eadc8fff702de36db462f916158 -b0ed5168ed64c5ea230e036ee49d17a4 -b0ed70bf96b459883d2562205e142db8 -b0ee816f433717323efdbe06bc385245 -b0f536a2d68e78327547df0aa7fff1f9 -b0f7e6fee81aa9edd3b1d6da66741a58 -b0fd98d9e4c40ed2a1155ae2aa51ee7a -b0fe133cebb27f479cd849156143fd4b -b1006e18bae5edc0640177167e8eddba -b101e0fa1c94776e95b6bb370b927628 -b1098be0f3bf1bdea9d9cfa827783530 -b10c5149baf86d384efaee678953756b -b10f4a0102dde33b4e41f297074fb404 -b11370ab8803eb6e52019623a1d60ec2 -b11ff28b6159ba51fcfa219c7d773aa5 -b120ecaeba6e2faa5c39360704b4acc2 -b121205ed9e49767c22426d9e023fc5e -b12378cc4e6cc89228ad7b722f7a1025 -b1285d6b7c2802063aee79bb596b7270 -b12b16636a8585bfc01c93f7a014606a -b12cfdaed7541d7557cc60af068ace97 -b131041da698d9df6eb243d147e25aaf -b131c13318299709402bc08df954e568 -b1349c1e3b4d41f21e19b1ecf3309dd5 -b1390000b2aa1f91c1788a4f6aa21f77 -b13cb992de922b705af491aee2f137ad -b141e420b9db5b2e1b2fe2ab3700ea39 -b14bf89192bc622c4d2cf83939e0b487 -b14c1f25953e74790bfb7979fec8c7ea -b1502d29ab0c35141a8bd2200cc70d66 -b1523499ccc81c42ac681e3e50b1a436 -b157b93be085c79207c9422cb7e9e33d -b15a58aafe4d517835c8714e9b4db95a -b164ab74eb5c3d6badcc075e0b95ca55 -b166d51fd6a36efcf180e30482c20793 -b16775eeb4430de4e9411fb6ff3ccead -b16961ffa3a09580846e0412fc2eec95 -b172cb8965fc35acf155bd015fe3a872 -b17541fe46aeb075ee59e3a8da16edb7 -b17bd79341de11334ce0c14c6319ed40 -b17e33d2688e58b9b1b7f1426c4dc1aa -b17e4eee58f92715f75b9befeb28a80a -b1844047e652e2bcaac591314a64a52e -b18736e83cd522fd35d92ebf31a8c41f -b190d1b6f700a9359ab76cb9a751d808 -b193e2f5debab5c5c9ee7f313a7dee36 -b19996ab23c7493987fb14d8ac110be2 -b19c6c8746bce23db93897c6312d3f5f -b19f22462e4cb12bf3a78156b03f3404 -b1a146317112e5bf5fcdf71dc6822d29 -b1b1f620b43bb68b2e2895f7c521129b -b1c071299c2e48ed565638b5095ffba2 -b1c8b8d0134270d983c63cf05f0681d6 -b1cd4ca15c3e4d2aa16723473f7575ff -b1cdf4ae749fd3f4b2916f90c207db12 -b1d0e3b5dfe6e31dc1a3296bacdcd723 -b1d238fbbb6028365589d4aa2806c863 -b1d9bdc61f8dd3af82e23b610b6f7fe7 -b1dd462253a6860c6197ae6e5dfcc182 -b1dda31c9a8f0e4b43ea77a4417e423e -b1e060cd82344e3247a9293d4b26a682 -b1e3ce89d84300594e6f13b39a4baeef -b1f2fbc855a5aa07de3e63384b7defa1 -b1f346d4add415024bba3a5ccf00bbc8 -b1f59caa1b42ba87703b722c6567f4c1 -b1f742b5fa9623bab3e7feddade90b48 -b1fa69f9271812d7881637c349340e09 -b1ff28d3d31eb30b44524343fdce14ee -b1ff9253d1633dcda10547751d9c47a5 -b2019eb6c10d3df138c7a70b35efbce2 -b2042999ca8596ce5f25f2baba4b2df4 -b20eee09efe0bb0b73d5fc2b676507c7 -b2135d2186973514fae5787d7247318f -b21e8cc81a67417ebd457ab61c912c4b -b2265930bfa19cec2522297121524bb1 -b2295934af2a48ab0205ea8f6dab9517 -b22c63290111e73906a8f924d4fc7360 -b22c9c1c13f077bd30189e2238b9f9b5 -b22d4896982b8beebeab2d05816e5aa6 -b235e5b89454bfffda572e6c0b36067f -b2362dfcf73a0313c923e3b2906ff194 -b2390dcb52d5faf0c620df796efe9269 -b23a6f450f8bd4e65de4f88510d8af29 -b23c91060a9172b162fde7923d1ab0fc -b23d30dacd203346b063dfe141adf749 -b240341c2c544ead5fe662cab0f3d97f -b2405c0d0232dc7c8e2e2c2e5b01fd7a -b2407e2717defe784a20a33fa232fb41 -b2413940be04b774de28b69b11a97646 -b245a11852555054217f06148ae9ff7d -b24dc65c6f54f69810dcf5a1743c7e0c -b2530ba47fe4adcb510dbd37657a6db5 -b253ea3aec6c3f496255b36414194760 -b25c2b1ffd0b41f5f7c51f44d745cff4 -b25c394cc1aa8d9c9d095eb99c79b9a2 -b25e908e4c9ed1b077d01b74cc633a17 -b26505c6ad9b5432a9a9aed9f5fd27f3 -b265e79c62bbfd8b28a593a91d3964ab -b269e042f29c053d8d8746da236c9720 -b26eadc04e5dc2cb71b0081c96a6b289 -b2737e110b00346df21bd27d0fe1b731 -b2770b3a1ee42d0ac35c9525e3e9fcb5 -b2783532b85acd34baf4effa385cbfa5 -b2794d1e3df2b53f09fed8f2dbc1dd18 -b27df0e92d9c6434841f1cd77d970879 -b28448e7e19e0a27766b400ac289b00d -b2852e31126c1cb04f8d28269def1b06 -b286aa60904b4f09cf808d95c668b1c5 -b288a42c520627b7edf3842d04595660 -b28b018c3de8a202a7a1e5ce6c88b6a0 -b28b9686c0f0154612975e8710e310a4 -b28eb38c4eca1c29e862110737b402ae -b2906e1841b85dd22f01a303b167bd41 -b293ccd904eff216f617eceac55021c4 -b29898007abf332f8a54bd42c3158586 -b29b9b61f3b92f72a5d99a6917baab46 -b2a5672d500b935223f5998d7abc73d1 -b2a572699634d0189e211409e7f27deb -b2a9514a459d6608c9048312e0ca208b -b2aef8aa181fa3d9ced960545a057c77 -b2b0e347e56e1aaced5debed4deb944f -b2b1be8dbf9bd3df77b314e58c3ec1de -b2b7df3af217f92e5883f199ac962a7e -b2c2bf6c5ac22001c7535c6479baf0b4 -b2c45a006b42f143e8ba23977e89ee86 -b2ccb3d9c132d4899e7a869f45c32821 -b2d0557745c20877154b40de6de24f6a -b2d2caa21e794f26b784654d48c6337b -b2d8d1eaec313f9382cea7eb6c59c5d8 -b2db563db0c255cbd33e88744dbb2eb1 -b2e52b041f272d5f0d70492c2db7cb8f -b2eb1cec1b6b65b087a9f0aa75261501 -b2f32125c2b9ea6b03c035444adb7a40 -b2f3cb5d3f727abde98ee95b68925b85 -b2faf7db82d342a63c2741b07e73dfab -b2fafcab71ed8a7c5e5d56c14f03a716 -b302a9ffad3698f25293d28d39145a7b -b30a14cb8792f2c7a54827d6cf7a0160 -b30aef74a83a06e0afa22ffff37921a1 -b30af080339e55e1531646746c429dcb -b30ecdcef6d970087958cecb4d1e5e11 -b319840c52c1a1bc5dd0d4f6a2e3484e -b31cb5b539ab30dad854d8915cca6142 -b31da65a8024cd27f21df8062d05da9c -b320903d6ee56d8b25f0c5eaca4f3917 -b32380c8bc69d76d631cc7397118ca30 -b329054f33bfd4bd4d8304af60062087 -b32a78630f4d1da8e9f2fff891944e33 -b32f4cda774346878d27b030e002af0c -b330230a3a670661ab3f762ecb2bdc3a -b330266f616144bf7ba80f7d27396d7a -b331bafb0376f26bbc0c1d97ea2d62e9 -b3353d9e8ee24fc0237d9cc556952039 -b337cd390a9b64e57e7d3ffcacd5d5b8 -b339dd91f1a530daf17c2050c870252b -b33c575a82070921d8e15eb93593b587 -b341f4d77d4c9fa302576ef61f299405 -b343417d9448957e249e26fcbb28786a -b34e7a09d00601cede220fcbc244822a -b35047743d9f399ee49763be1fd5230e -b3513727d09c09179e40c4a383a0ee8c -b351e55643d130a080023e4129ee3ce3 -b3576ef3f5c12757a91e324cf3abf627 -b35aec3cb72a2e04283007f6f6e56c5c -b35be7a4c8f7c757d74608be9995e9f3 -b35fd122927103cd9f100c903e7b4f1e -b361674a9736a5a30bd3abd953627094 -b36d96665f578ca728f63710668f6b11 -b36daedf30433e0eaf4bfeaacaa85890 -b36e201727bcaa234ecb197268095eb0 -b3722224819f809b0a1c8d1f4a553b4c -b372ba10255f53a089a04f1faa7183f6 -b37455e8605029af34b292bc5791793b -b376fb1036220f96e52e3f07b8c0f0cd -b379b06c7131405870ac98db03c9da1b -b381533872948313ef7e22340849b98e -b3876b679cc0e73e1624cc5a5b5d14a3 -b389d214279f20ad460f33a6fcd34561 -b38b66a31066c8942c0c2b63e1d79fef -b38e86f5351228e3a1e791d0839ec254 -b392d9c9463ae8c581dfd8d6f2c35730 -b395b879d2dea9e3a52eb2750c37ce47 -b396a416394e7b2a78cb2ac2f542501d -b399ec7d1c2af23ed6d671927a346902 -b39b140781e671086cc431031aa8bb8d -b39b44f067c54c33d9513e1babb46e0f -b39c51c6ebfe70f33ab91ef5f5b3ba2e -b39e63b823907e931b3a1356bbc7c1eb -b3a977d4eddf97ab6d504b3066e1e9c5 -b3ad1728fd05a9450a35384811b88947 -b3be9f2f9d13992dec490fe60d2e3a14 -b3c0bcb764bc8dd61fee703642206373 -b3c0f70df9d89a6cca003e4e4425c544 -b3c8104287bdd9d55cf13c3cf43e9d95 -b3c9538e0db046f93bf35974ba508732 -b3ce97fab65f44aa3e0c0eb22582f580 -b3d1f92dc2fc34aa20cabf45397c6a09 -b3d907ac63376c5a926a6d20730d1a25 -b3db0c39e11aa6b22d194fc07a89100a -b3db929f24ebe5eef9e33e2f9310cb27 -b3e7c0bc1f68d7f8c0198531d58961bf -b3e915831054ed3db24c914854548f25 -b3f20ac02fa2dfb5c23c896ee856daaf -b3fe827affc73f92fe5c50612bff3b77 -b3ffad12b4a7b3c913eeccb2774ac7ee -b404214be218fb2f230f10b37a80fd18 -b4057835bdd097e6a275ff066b747468 -b4059286e09974abc18a56ba7fcc9eee -b40959f08d54bfadfcd2d1d0cf5f5d2d -b40a2263fc3174798ea74af71b0e7777 -b4115e04295c8200229a424f9f28bd6a -b41311297789d82d2e3fc3fba2256b9a -b41336ac875f4b1ab44d9a3ab61288c5 -b41583ce5707d8599f5f622b5dde7717 -b4195683157ed6541a95e83175805c90 -b41b53695d9294e78ad1db2c484b6110 -b41c82d9583d00cfbd280a47273c9b32 -b41ff7d2d86414a23f5debd168c02176 -b4232fd7715eda7504879cdcd3f75a4a -b42888c2d2ed5d1e9f6401f39327fdf5 -b4290d70b61e0d597332ae1f50633eb6 -b42b7d3f7413ce3686c0bafbbeacd57a -b42c057630f7f4f1ad80977ca24c0121 -b42ee55d0036530e7626cd6e88937c16 -b432216db666cf4c5e7d265d189b9c04 -b4350c822e414a85f403129d630e5274 -b43af6a09b032079b597b1caea126dcd -b43f7381fbba2f338fe35ff7aebd6534 -b43f98eefcd1055e9212deb817762a83 -b44291f978c4a5a086a73ae3991f3aca -b444908f4a4e187528184ac29e2af42e -b4562230b9aad20505101cfea46a82da -b45637bc8be31c80c3972a69f65d035a -b456abff3ee6d2e19f368b45a57e39be -b457beb9e98059249b5cbf39c4806fe9 -b46025adff7c7f7736e0e2db2d475c5d -b4649b456b52a4eec121775323d3c7d7 -b4681ce6f72143bbd086dff973176654 -b46c3b7e1bb9be9a90fb6dede1f5aa86 -b46e41acc0bc637a81965f8bf93636e9 -b47217003f968a3818468548b7977a5c -b473e36c1542bb933842bc83b002d879 -b476d014055af1b903223edcf4b8c99b -b47861194271b4d8f7a2b27ba720d73d -b47a9e0990c5593696a28385c2a3c2f7 -b47bb9810c7a8d91c947651507e9af57 -b47bc6c98fc5934dcef4154de7f45d67 -b47e410231a2691a9ad2346f0df4a5d5 -b480202c33a8e0584489e4bb97e090b1 -b4852b892b757739e50488be387b491c -b4868958d11a557981e978b758e14320 -b4915eb38286404f2671908745165223 -b492dd9e87a487948dc560cb8708b242 -b49fb3a0bfca3f350d7ebf9123416c77 -b4a3f88cdf326388120d85e075101fcc -b4a4465ce878e1a27c980c5ea4399e26 -b4a457570eec841f39f5eba22fdf9ca5 -b4a4cf809e635eb019cecfcfd330de46 -b4a573a8c353ea8176b92c64fd6bbad1 -b4b180e0dad7c69d859ac96af46972ab -b4b427b932ae2f03c622d7d690c43de7 -b4b6a22183963af9580282dd6c4864cd -b4b9f6baa77371f4ca3b691ce26ba7fc -b4bddad7772aaa0673b347674cd13396 -b4c009a1593fa4ec2bc8f787d9c3360c -b4c02f044bf4a6003dce93cf1b3d68f2 -b4c07fcbfb5d101cb311a1e4aaac37e0 -b4c70675c3ac86cd3c52652b613bdbbc -b4c9645dce46dfd073176194acbd8f3b -b4d1a6bcf258e4cff401e82db7175951 -b4d265288603d69b1c3c9e09ed1eb72b -b4d3724f9606189aec0cb6aa31f756d0 -b4d5bf0ca80951c92c7eac09918073b8 -b4d648285c33f8020ed81887dbd150ab -b4d8525cad03567f8a9fda86c5f2dd5b -b4dcccb741ee42b8c7b285526884337a -b4de5daeed519e12b83f30c57df33769 -b4e41e4c39faadc4cff3ed6bef13f718 -b4e92b72f6a5cde9e5d49636137f584e -b4ea68e6a3fe7b3af88ac33e55560e54 -b4eb35b03c731ede85afd662bc157894 -b4eeb6bd5d7e3275c6bc0736dc027bdd -b4f13184d51dab7e76e077fa611df0ad -b4f25418398d5396a3d3674b45e73467 -b4f47e6e69d913f57090706d44fe453e -b4f7056302cd9550f895707cd9049578 -b4fb636dfaac80c44c37b30fdffa0282 -b4fd3bc9366a91a4607c09c6e4014bf5 -b4fee6a2458413360c42248ec60ef61d -b4fffd265587670d7cc37996e28da406 -b5017363161e802674ba90177b9ee4a9 -b511d597e8c4b7d91ec8269bdc52d9a3 -b5121b742dabdaed7710b3e4181a7236 -b513e36c05ba6ced02070b6c3f6a2729 -b514caf0b77646943939db180ab79106 -b51b2a29eb5d005e5667a9949084c033 -b51c5a8b0d46e6992c634197be959060 -b51cee3f88e6b43cdddc469163ce9b26 -b51ffd3bc4f2febad9d34d0fa215ae26 -b526d99997de432004a6891553ccfec2 -b52d8f2c079035bb0cff087c79c7628d -b531f8a6127c1e2334669aad2702c422 -b532486a6140a6928e3dc8a8cb6cdea8 -b536d62d60865212b07252b613fb66f7 -b53a82529c6235151c720adf9a84639f -b53e512da982d82228fce6750accd1a5 -b53fb8570c9da115708e27a97d3b8681 -b54177d0a72f0c6a08d05c2cf00bde97 -b54a17922a8f170f5a1581f74e9edaaf -b54c80f2b9f28ed1268c9aa58675ec16 -b54ef082c6949787f56e3f45a5c3efb9 -b55027b43242d6ab636a83dbaf0d86f7 -b5542c2003efc970af3a5f55ba0b8c1e -b55732ba0cef6e2cdacc4d73d8827060 -b557d5baa473a0f01a5b3b898c38aeaf -b5592119c2428a65546dee0cc6f7e022 -b559e9fb39282e416c0ec2f25aa18054 -b561a3f62045870c2b85853036b59aa3 -b562459e2cfa4f293db33d49bbe267a5 -b562d87d375ce33ad57dfc3d72ae55c9 -b563f09efc2ad25628454b916a08910f -b5687bdb75fff9332a746932a5d0c07d -b5697fd50a12bfce80322574b250102a -b56d38c75346d0f941e8aa58a129db31 -b56e2205c2769cb26e89605536a16c5b -b571cfd172e6bc7ee77a462a2d23e6e6 -b572f3021bc57bbd6c223d2761288e96 -b574932f44f9bef333e16c9fec16601c -b575f5ff3d60b580b9363a0e2a41d2e1 -b576a8e1af2279d03d19b4c26f6dba4c -b57b40e3183ec68484eb9d9f9fb5e96f -b57b63b7b22e54dab1ee8df814a9d71a -b57db92095e48f2ab4aca9267e304db6 -b57fa6cdc942ab566dd17e78761f5c39 -b5856d9cfb04f7177ea539a92390b3b1 -b592ae93973f0a75841e0edda2885beb -b5930d25957fe719129120e7da7e0670 -b59c6907b78da75e70506e3e20eba273 -b5a36953ee286447dab9871b62318887 -b5a51737e16706798f7e2961367470e8 -b5adbf10d5e76555f667a99a46db8f91 -b5b0df084372f6cff5cc0cf94cf3c06b -b5bbcef3b3509ee2ee88a356aab69722 -b5bdc9e9dba3fb9859c22362d0fccb10 -b5c1fe4afdeb13ea6508f7da9fb53cc9 -b5c3e55567e93d10270fb29884697ff8 -b5c4c643a3a2912128a12ab12ae2ab33 -b5c965d3b9a82c8d1145e590c870a27c -b5ca00101275b22e7f52520051127417 -b5cb1333371793b699ccec828b08f773 -b5cbb9c8adb9962ce850120f4db97931 -b5d8bd3c48ec3e0ff9754c4c37937444 -b5daf921b7de5d8037b8ad20b3282589 -b5db7c99eab404f1dae2508b76161116 -b5dbdfc83c991dfb6717609cd276534e -b5dd9625f2f49471d2b272869d97fb7f -b5e393ccb6e7b3a960eb0d1bf6582f6e -b5e47b5b5c65c026bb10488d57c2cb67 -b5e5a37c52fb349213fbc2c6e7a367a3 -b5e6c961a353faefa2a630a7a0b91b4b -b5fb660dd97969dc477371517678efe2 -b5fb77356f3b3bd8aac894333abe4da7 -b5fed6bafdd943b37f5ba3140bcd0ff8 -b5ffcd5c03d7304e76b72b7cdf81c773 -b6016b2f5cf78736b14debde06c0cdeb -b605670516214e4fdb4ede76ee486c22 -b606abef34e4b25bfe3f92578adf1ed4 -b609d21267e2d032d95da2b22b852480 -b60f8739ce089df4259386dc44fb74d8 -b6112cae3d7e9cdae0dc404d8e034e81 -b6120cab2d46fcb726feeea96ef18071 -b6149cfb1c5e2b75869b52035a3b3225 -b61b145c351d530ccc2cb3fb75d24ef4 -b61bdc4533e5eb937939114e375fed77 -b61df124faf5f1bc2a39ab1b978db6eb -b61fd109e41fcd2e0213a44e6d6509cd -b623d5485c51ec21fd54d604956112ee -b624d603ace876f86e12b139996fe9b5 -b62668220966febd31aaaf71a58679f1 -b62afe39a777e1c2710c56fd4e41fa8e -b6331bba73672af033f050618b935291 -b63adcb93a041369484e9e368bb73699 -b63bce1c9631f2e187211de76797daa2 -b640de0c79fd8029d34583137c6c65d0 -b642849fe4b52121fa2786c10f4ba356 -b64649571cdabf26d1c313f274b9c27b -b649d6168a4a43e4a5a9d0a8a04432cd -b64c1c474323919a08a986574f187444 -b64fee61df0c32b70707d22ef70a6885 -b6560f6440e603253611887f48c8abd0 -b6562cf7ccf3975fd25218fbdf96f60f -b658424cc5a4995b80244ebd2f66fd68 -b65843aa523573400f4077101624d952 -b6585888bb6f94c91f8a88ae5e1bd6b9 -b65b95ed3c09890e0fae66b9a6f21853 -b6616ec878815351f204f7eb5b96215d -b664a86f9dc82f0435c345b9dc18fe57 -b6667a90211d22ba59f85f81b6005d26 -b66770c6802907ae75c211a8bcdc561f -b669a4ba8298df432a3448f084d90946 -b673734b1cc8d4821e4618870a769c1a -b67a0d4b1cd27f7a1c9cc187a4c85d29 -b67bc8c16e0f89c9a85ca52d2ffed0a6 -b6818eb5f2069ea51198cbf329feff46 -b6824c9940bcdb0b0569a13114b579a0 -b684ac5679501b102c472f887bdc43d1 -b6871f0dd29c8c2bed38ed64189f7b17 -b68afe9eba40acc93a97a30bdf8ff8d8 -b6994b323e0c476b6cf0256df81a885c -b69a57ead54caa03d7a7eec71d0616f2 -b69cc0bb3fd9f01ab436fa37e4c9a8a1 -b6a13d03882bd84a1c4ac28baff416f5 -b6a24066052492135599082429156ae8 -b6a6ca5da9a2e81772ea87d03b604d31 -b6aa395bccfb94cd8e401989eb14f811 -b6ac61f5391721ae41083df355ce6194 -b6afda3dfd18e00aadc1f9919f268538 -b6b130393513a11d64dc4ad99fc651eb -b6b1f612e33825d437b4bd36c744ef8f -b6b3cec946778923c0d52ccb46e932fd -b6b4546a45481a4e896745d3b51ff359 -b6b735ad29ccb6a8f3d0ab554542418a -b6babb7751c7710a266689fce360736c -b6bd021b675e97c45cfca39c96dba5fc -b6bdbc9e7c602e03c0e9fc40052a51d2 -b6c11c05b2484649bedf0fab599eda94 -b6c52e58ecb6fa892b4e8f0e1309b9bc -b6c9bd684bf6d443c83a34256e8f3c70 -b6cf5a7cd3dfe7a13625bdfaca18eb0a -b6d022d19e9b137450717bebbf0feca4 -b6d18afe1152647442d4e6c28d431d37 -b6d33ac8e3eb527d04166de681c3aa56 -b6d6b54adfc3022c19aa84388c04d901 -b6d7ceafbf508e013a9c21d77de7c169 -b6dbca99ab099bf5916ceb67e0d4117c -b6dedc92d9e4337ccf4eefe514997861 -b6df48258c7d340028ea8c45ef94abdf -b6e7a75cbccf4a48dcb0ade6a0018bab -b6eb8a5962ff3a198f3d22fb4575be40 -b6ec6982420987d50b8fce17635c83b8 -b6ee10af01fde9f95ae8f3ec1d8e4c71 -b6f4653e145ad6fc381f9355640db480 -b6f644509d00570fb134bc157080ac71 -b6f798a22782eb2a2905ffb6d3f9a93b -b6fc246834effe0116ce5c9ea7cd9962 -b6fde3c37381cd2b75e1d0e1d5fb6b2f -b6fefc7ddf1c52b040fe74ceac84565e -b6ff2b3add111601d019466269125112 -b7018c6bd8c836d3da7ab1c4434810aa -b71126b8934b88b1fad74a646e870ae7 -b71378a4027fbdc76646a35d7fee0738 -b71598e20fbfd8118128aa77af0e0cf1 -b7174d895b21ff5d0643636456e9a6d4 -b71b6e788ebfbf88b29a62cff3945a14 -b722d3b5f62f8846308f78554da688e4 -b722da0f598dca4e7b5d976a29a5cc99 -b724857f6afd01fe91951044b431ce16 -b725d67e99d644f465f251817abe4e4c -b72767739ce4b19826c27e6ad40d01c1 -b7289b41d422d815643f737b804579b7 -b72a93169db476878d45bdde9b1c0333 -b72bccf43becc57153c0a6736077b799 -b72e0e24f5e41ff049b7ee07d6c97cb0 -b72ffba4cf385093b327c192f77ebe9d -b731abda0983ffc7c337eb05569c499c -b737ff30675686eb0753aacbd8d8a74a -b738a01501f9a883f79cce97856adda1 -b741afa1ebe4bd3c930f9b9b80cb8f8e -b7461112f87c3c1676ac9ca6ed239234 -b7464c284be72047e773e8bb5ddf7366 -b7482be8e3b0fbee0a2cbdc51f635503 -b74a0cdc89325f8ad6ba5c4fdeb160eb -b757953c73948716fd5f4c996e5a9ae3 -b757e6e043cc0d9ca825a2c4c6bd641c -b75cfcb9c7fc19e64c109b012d04e2f4 -b765ea251f92805a6487dd226e6b9453 -b76d48e9561cd5eab8178753414326cc -b76d84aa450481ccb3add5f518565403 -b76fc2e9d395046023968878820e8320 -b774b773b4eb127015b1ced0edf87dd3 -b77529ba410e1efcad163f1e4be78c2f -b77873403b64f687b993a6a3ef87525f -b77daf32c1c93efa0ddb11fc97ad0b6d -b77ebf6a874332ff6a45c9b87f99e510 -b782de85142afb4df1f026140f318368 -b782fa6266bfcc465537864fbe66add9 -b78732d8c96532ba15bda3c40f9765f0 -b78ac07dcd59aaf04471de85b050ed5a -b78db4e3241554e1f19c62162408d070 -b78ed584b092cc383e74d49ec6a842df -b7937c5fb23ba8da8eff406f0c4c14dd -b7939fd331d332e4b8985cd9aafde654 -b794168228cc9130899922eccc3f4a2c -b7962205ccb4fc664f22b7af24f2ca4b -b796f98c68f0ad5fd1e3c8974a988b0d -b7981e743d4a87d5b74b6244cca2f609 -b799e654bfafd30b7798efcdb73e9d15 -b7a1261cf4722136a80f462ff5d003de -b7a6614063c540601a8e31b8240bc739 -b7a6806e051f5fc50c02d11456794748 -b7a904a481df8e33e338a42fae183b1a -b7aed85ef3092ed610d259ea379695dd -b7b65426c6b2143d52954c2a80ae17a9 -b7b8fd2afd7211681b3b9e947dec423c -b7b91b1aa361d80fda267649a213a4e8 -b7bb87e8d3d782f0fe0ec0205397297f -b7bc4d74299242075edddda8c722fad7 -b7c185f3a5afa9a5d056e72449d385fe -b7c6bd332f9652defb6f742121575cac -b7c754c982091f735f3d7b1050c2e3e6 -b7c9825387c611a832a145c8435b18a6 -b7caee3b8fc3fc24e14c0bb957ca0bec -b7cddcfdb12d5a2cc6c718dbb19f9d3d -b7d4c33e2d04a72cf8a7054aa69e26b4 -b7dc560c16120eab64dc69d95f184c34 -b7dc9e9525125121db81a1ad0516cebf -b7dd968ccf0ebcc6506359c237d91789 -b7e4439c8508f51d511b0f22c2e4fdf4 -b7e4a41b7eb64c8935ab2d97dd754616 -b7ed1487f54f7d7b4522959a10a74a91 -b7f1d443b6e30649451ac82f314f9ec0 -b7f5579be26a71146689dc45447d6109 -b7f5d2e08c6f8691bfb8490f7a542096 -b7f7b1c42128ee5330da892579a91e26 -b7fe995c8d0e6b2a0734e75cf68de102 -b800e2a35b8e53beb10b800f89d13517 -b80df84ba991b4c0c1a060854c62c957 -b814ccb4ac9017d77bcc36a2d6837da5 -b8176443e18c8e61d3f1f442e9e51c78 -b817e3f6beed7dbbd71ee6bb32e9f5be -b8197c38d7cb8f2846bf61e313d91855 -b81dca5c9bc617fc2c59bbcb2f888058 -b81dcba0273509e87c11dd7c4eadce53 -b81ddc4992e84a3048ed73d1ad66cba3 -b8237a502c6d4dc2df0b10a1046b1e36 -b823e9eec64be8254d2dbc7b0ff4950b -b8264e0ce162af0b298e4b76c2681e7d -b82ea73e39ec97b1ef3668f4c7c30b07 -b82eefb2c854a91e658acf953abdad34 -b834d6e9b1376e6a6af9effbcd7618ce -b83cb322f39e66fc960d2ae0cb8321ed -b83e7ad7f316fed7f0bc9b67fd1f342f -b84b5c0c0c532e2225ff30db6fade155 -b84e663dfaa78f3787aba3cfabcf1fbf -b85b0649b6857c54894b071023d438a6 -b8632072679ea01fdad246db6191e6c1 -b864094d19d5986cc21cdcea390dbf0f -b86b8ab06d3460afd3f600fd06384254 -b87010a3fef82f7dcaabdf070a14282a -b8715bbbd0d7a54b824ef96cf71c3296 -b875bfedc6f2b2ee4dfcb5d907a97d97 -b8775f49b48cc136c4864d0057f1dc25 -b87d3d42efa93861f70a8a1e9c19f788 -b88081f08f8389616b708592637fbb13 -b8814c0cd0f89834323359a010deabb9 -b8861f23cfccec446e4b562197cdc4a3 -b886776d1670cedba8056ebb074ef68d -b88832f6ef3fd387becc48e0dfa98935 -b88c084d0a6cc6a3d4be0a92c2ae41e4 -b88c4633f0cfe47738f1a87fb81b88be -b88f94b40c10e1c449b5584d1b660351 -b89463fdb9deaa333c35313a31c97ebd -b894b3668b85d402c86874a2584ed469 -b895d197391ad65e2659b1bb088f3422 -b898a6b282c5177934cc8a1a37214bef -b89e2d204d6d5280fe9f06c588501bc2 -b8a317445bce2000993db6a7eb92ea8c -b8a591a48b48be2e5a9335846ea02130 -b8b0e65d7317179cfae2b289821135cf -b8b6396c5e12dc79c3b36b7c46bf8751 -b8bc594c50a06066b2e7042c3915e325 -b8bcc42578b54f5b4cacb02e837647d9 -b8beb42880fb232f9c547e29d3a0b582 -b8bf6b72acd57f38155d79446fff6e4d -b8c5b9de601c5b03286fa26dc523549f -b8ca52cf07eccd108bda5e79368dc750 -b8cb7a9fdc7eaddaf43112f5840705f5 -b8cd7f57f9b52fe90ac4be0c8fe3cc64 -b8d0dee04decc668a24163aee079ef51 -b8d73e600d38a8f3f1cb664d949277ab -b8dd35f14f4621552021f93307423480 -b8e4bc22d65b021f1ac9c0e711c4dbe7 -b8e7786919f4ccba6b9da7cec25291e4 -b8e7848363de2ce8cf64e9ed360fa936 -b8e9f2a9d65616a880975ee59dc4f128 -b8ecfb5f5aed2d30aa21a7a81b06b05d -b8ed0d7cb02c3b79302d4f0181e4eb57 -b8f14946a441b73586834bf6aebae770 -b8f915cf383c5c570e3fc338badd83bd -b90623c2af7e48cb3664446d89321244 -b90d8b47933f866ef2d76f7e73b3af24 -b90e2eca6e5e1b5595be4aa3dc0c4c7e -b90f7c8343b735dc976bf736eae329d5 -b911c93ffcfc3adb958ae0bce72675cd -b9199cc12acaf8e032054ff607c83fd8 -b919a7b575c43451b2e92732eca6ded9 -b91a2ae3ced4f098684ff3b9b0c6c592 -b91adf5d142208c65cac8a57b153f712 -b91b0eb468c2b82913ed45e02fff8bc8 -b925d67f98efc17c0e3758ff17a521b1 -b9273bb950f7fa0fcbe7f31aeb546d2e -b928137e88847eb868e330c59836d9ce -b92bfe1ea01a7967af87a8ecbe0bd6d1 -b937016bdc45f81bce3fec43983a5d80 -b938b6a0b5a19350d6d855e660a42b3d -b93c36c82a5600f67e6fee582a9ca193 -b940e9faac167b10915585ce977ab4af -b94bd16091fb38567f220ff34f6188b6 -b94f3dcb3cb10c51d92931a0edf3a9aa -b94f8e08d217a38d5b6e1540b0536569 -b954c277ef2fd64c3dd38945eb6e0413 -b954c8a9bd49df6a4125e4f1db52ede3 -b95c84e2a5e1d23047f173c6054e167d -b9634b249258f434501a78c34dc8b20c -b96b6b5bf2f170560895d232279a6ead -b96d379be13a766498578eec9cfcb639 -b97720f039a2eb99ce6ef2666c8290f7 -b97ecb4748a64dc257de4837ac9183e2 -b9822ff5ab34fe5d56cae94950bbd4cb -b983c7fdc34b28c1ca2ea8dbf8f1063a -b98534c22fbb64644b0243ea6591b2b9 -b9889fda1b33472b192c37afe9193527 -b98a92f98794673a9828ae0e2b7abb85 -b98c36a5150b75e59f5ea6b1ee2ab410 -b993e3fc2ae12b3f3e77b65c7784b726 -b9978d7b7b5f6603fa23bffd862eec24 -b99fc4b24b67034ef02b1f4bc7218319 -b9a0b4720451d3f5ad194ca79cd4ad67 -b9a25bf709c9ab1938d644cf9f487b5f -b9a52d9fd02f40ef4fe41a4335a6c762 -b9a6736f5b8040b20de38ae4bf7b168f -b9aad97e50c4bd33094ea141c872b3a6 -b9ac970cca94f1038bcad3629b3ec807 -b9b52827e9b4b33d99335cc43ddb1609 -b9b56f8b413caa5a0154f0a7447ccfb6 -b9c0653f025eb7bf4a47d77b7eae6fae -b9cc3ac275011aa259b067fcdf315fbf -b9d08daf77b8bdcf5c9fa32fa5a36e73 -b9d10012b1fd20f5b2b58af69155fe0d -b9d1ab89b7928a83c1c5ae0bdb8f0ca8 -b9d2eed1eae3e8ee88c4f68a5219967b -b9da18a697602025d167a83aa8648025 -b9dba162b0c766d9a0fba5f4e832c598 -b9dc47463034ce13080587adc0c57939 -b9e65fb61c2e7d5c5de917a8003d7339 -b9e8f95c87319cb059d7abd7d4f2f6c4 -b9eff3df0c04dc428572f21a8ada9900 -b9f235a64032f0053d85042fb69c8230 -b9f6cb9012fcd42070350456d1a54b88 -b9f6da5acb239ea663f44c4201bdc9ea -b9f77d2638f97e1ad36c5033b81090ad -b9fea3b009496d1e8609ca86269d1c84 -b9ff6842cda7c92286c06c2ecde8c3ed -ba0273f3a01c74387eef4191ead1fa8f -ba04b3f5d592c7d00c8e2e684054b56e -ba0c06f62b5d9b545d64e5e98bbb2ca2 -ba119723b31fb8467d98c87652560040 -ba12edb220cc509ecd4b8721c3cf32d1 -ba1866c8f86bb1dd1dc9bcd20d63be77 -ba219ca9fc072219b42151075d1f3f1b -ba231d1fb5df3012d746689133141c3a -ba282d65e60c5289a02dd5504f445eea -ba2c14a0148765defb18f576898717ce -ba313d211bc01b2794b08b43463da987 -ba36c1d723d3b28c9306fbb1c27b4c88 -ba3706ae740b00aed975cfde32385ab2 -ba38cc463c01f0a13768edd9a3560484 -ba3c20f6889c601273b3101114ba61a1 -ba3cf6df28dc07da602fd2e7b4501323 -ba43778f711b1b922b630c3954f432ab -ba46a28729cfded9cf82b18203eaed8b -ba47d9872c4d31f336b795d2434dc614 -ba49637f5c87b169be14a1a3b26bcbfc -ba4eec446234aaecb82e2dae10bc7325 -ba4fee669d2ab885dd1c54cc823bc103 -ba52dbcf982d1de137f234aefda10958 -ba59b4b30a2bf3f18eeafe936d2c5a3f -ba5cd9c8c6d317459f53456ce51d63b3 -ba5deda920d853a4324c6ac53215f19b -ba5e6da597b8fdf217eb3dd87d997732 -ba5e842e5d19ca31b0cbe1ed478d1742 -ba61c04a8a0a9cce5550490ff2b82634 -ba64af3bb24b42b0a072f1bcd3bdd262 -ba6515873a161e3988d071a6295d9992 -ba660b30030bb5687762229606c2e69e -ba67d52da2f5b83625b2a313444de95b -ba692b72d5125d29e07adf9c989de801 -ba6bcf669e37fb858b3ba92663642e76 -ba6fa8665980b8e65c083460413b2489 -ba70d71f49e2cbf369c103efa416e924 -ba74815a29d7c205045056a78c8cdbae -ba77938b60b756ca36683bed9ad469a0 -ba78b55a233407bf0c6e359028483cd0 -ba795ec2e36ed4937bc1049b434694e4 -ba79a6caffc5117e8f3196eb7ff48ef7 -ba830176431acd854dfffe086756f04f -ba8c4dc1b2b650e792823b4344ebc0ae -ba8f69c0348e29ed99f538c1a26280e8 -ba8f72b41a57ab6c55e90f7aaab61936 -ba90c94a738e87035cb6883d10d1f188 -ba91e4bbfdc8f9e48f5a36dd788879b0 -ba92664753eb55f466538ad6951091e6 -ba94eb4b3cddd0c5babc30462c30ae09 -ba994c9097fc8a993d9e60f0e3ee7f6c -ba9977abb41f02a8a232ca7c12b5cf5c -ba9c563e36a0bc95e8a3d3b0cc82fa0f -baa004b3f1572b62c5b1b5dfc37fbde3 -baa194289dd074f971cf9497df5a438b -baa1dda5d74a93f08b5bbfc3b4aef135 -baa74e4490c56d1ca455432e01edd775 -baae2c61273ba06a179d8a029133ffc5 -baaea306cee53791c0c4d1a4dcb6c24c -bab01d215478926c90e26e0cf46013f9 -bab16ea54cf34e6429dd2daa0a944e04 -bab1ed8fc353b98cee627fdf92f7ebbe -babd05ab20c22747d39c6ea379313096 -babeded7e56bcf094f399459ed1a4efe -bac31000f005f269696fc85edae322f7 -bac8bb917ddb26513184c24bdc378935 -bad16a6f3b694fcdeeeb6698f4c8eaa5 -bad37e9555a12869ba9648751569dc71 -bad37fc4e2ff156c8fe4e64cd6fb1f3b -bad7e6ca6c9379992cbcb7675c57ee81 -badb89863438fb6dc644b66cacd12cdb -badef9b2092f502429e9423e7301dbc5 -bae1b23e2019f4c9b2ba0594d9ab8624 -bae97cc36cdda7b3df47abbdf86d8de5 -baee6236ef998c27d8039e2bc6adad42 -baef8f12be7881f197a66e7922b98851 -baf008e64f03c22659f8cab5ea95e211 -baf1d325e575f0f6ee0fc80da89ddd09 -baf4253288ad73752bbeb6d62c64739c -baf843b5bff7cccb18896ca784c72b46 -bafbacd7592e41f33358655187bf5424 -bafd4e2bd4286a0adc20497116f58e7d -bafea387751f8014e08359da50d33028 -bb089d647d14812de72877bd943dfb1a -bb0be349eff7310ba3efc59e4b01914d -bb0d5fd4d3641a1d664e1aafde8a2d00 -bb1073e32af7e4d9e28938651403a04a -bb13c35cd3596a257297adf51371afb0 -bb1a132d30b610b6ac01e9c4d3b05c98 -bb1a9090a6adfe6f7b6d322b177b9f66 -bb31565ce1a1738395823354cf690251 -bb33bdf5b80f9598663bf544288b60d3 -bb3757250f97e77d3dad4af77f54043c -bb3a2b318c1ee70b44aa28e485bb8e93 -bb3ab829942c5386bac7f43e6952ab5d -bb3c0d25305b3cc6bee690f233bd1744 -bb3e5a483b7252af136a9ba792761318 -bb4081d803a2bb97e2ba95af46ec18d8 -bb4bff5cab67095d662588535ae119c6 -bb501aff29bc405007d5701863506a10 -bb5a3c15731d68df3a415c1f4fa8944d -bb5b0a33f5c12cb0b27275cc2afdff18 -bb5c11b791f795a1a394d92abbd8340b -bb5f9c0597f8b32bd81a1e4a6b684cbd -bb686f93d71ce0ba7001e838c81b5bb9 -bb6a6c252cab42ab1f755de20ed0b598 -bb6b96f290a43a7ef5155560c3e79d69 -bb6bd9430560013235f5ef279f29656b -bb6e9d44b02c0b62544be3686e9dc8de -bb75c2b85d9fbb5e810bb001f6db781c -bb762b8c606a0adc35a02b2783938c16 -bb7761bbd57ce4142d6070be3f16d413 -bb784f6a1bfc5af498231079eafd1fca -bb790891c9631889fbc1443167e4d958 -bb7a82148c0b6a58adb5638a50bca3bc -bb7f3f48858fd7e993b98d40f2ea1106 -bb859bebca8033774638c670c9f269a7 -bb8833f47f23b3dd892e4a6447ab1cd5 -bb8874d779c82518341fc279c2c0f3c3 -bb88afae3c77daffe8befbee730b42b4 -bb9000bbdecf9dba1eae618c71d5e905 -bb9181c4b15a8c34d3bce3720083cb8c -bb966af5e6445f34c5ccf9617351b60f -bb97130d6ad4adc03a1201f416db2edb -bb9716edf6cecbdfa7fd8213274259ce -bb988802de8a4939be6000254628a0a5 -bb99eeaa32715e24221606d1d400fd70 -bb9bbce7bc8e498387649a5a367e0077 -bba3273dfd073da47f7473651c5df51d -bba4884182eb3a690d57f68d6ea12aac -bba7a5ded36653bcabf8f0d6c0dc1e25 -bbb08222ae7b53257c40b4f543521f29 -bbb0cfd3333fe299130399cef1884c49 -bbb96cbf838a2aafc7a5cac94ef08568 -bbbaa1a974f14598dc6a28415e97a984 -bbceb443078694c4d171ee5939545662 -bbd4a4560f6c6b1a9127df10936ecc48 -bbd6cf687878ef8cc60f5c9b0acb1a37 -bbdfb3640b22b41d8609a9b646051a67 -bbe0c7398a803171cabbcc3e428ed1b7 -bbe179d83665bbc6611f3b4ee861b40e -bbe7c1d3334a0256893702be5d97646f -bbea5cbe059e95bbda04a81d7c176800 -bbee19ca2913c8be31f49b685b3caba5 -bbee58fc68872f06ee9fcffd545a9acc -bbeeb017392bf0d36a30d75eb024cd5b -bbeeee07e9609be79ee564dee1c50377 -bbefa74ab2d857b0f5709e3788eaafe9 -bbf2132cb3b3a1fe7c6e495d506c5cef -bbf87ed60c18d288810ca5f30facc2d0 -bc00da8583417fbd4d0067fb1111e602 -bc14c9d69c9355cf41e799fef9a0f367 -bc172569bcc96ef42ab2a54e8d1971ef -bc19c25288b3ed414759533d6d11ac32 -bc1a73afbd65e3ba6119b9f36123596e -bc1bfc3194b99c7f1a1e8d0ed0bb508d -bc1cd67c4133c3267fc13925f13e20af -bc22a54ac80220c55e554b88f2163e96 -bc23e222cbdaec8983526b7b49d51743 -bc274898bb463d176752b204195f4841 -bc29306185c9f61ee1869affc9c8cb7c -bc29db5b95e4ecc77863a129eb6e6afb -bc29e36f112f152852842f48f54b5f93 -bc2f8271cdbfa132b9e55d69283e0712 -bc30525c7107e0904cb32483771117df -bc3497b0dee58f7462426379e8d62a0c -bc3709d7b270eefee2ae3935253ebd18 -bc38ad7396bc25e7f7a99b6a019cda2a -bc39d33fb044c4266faa1593f505c945 -bc400d98e930abf30e05a79733e90c54 -bc415caf03c8648836bb3543c599efe8 -bc43395166bd73040a6fca3b8db0b81b -bc4b2039c2cad8ed563df871b11abfa1 -bc4b9f25bcfe13b7c5fa5b2d1125fa41 -bc4d8c4544177021e6ccf1896c43ccd5 -bc51fc72a9134f55ca49415bc1ccf9c3 -bc52eafe24b19fbbd79ffb1e1d9a23b3 -bc556321a0661cee3d6dff53a0288556 -bc55dcfe5dbded40eca4674d8442fc4c -bc5fe81066c6e004967903b4cc84098c -bc625d9a3d5bb4595699a541949246bb -bc63da34d4f8c2b59d1c941083e8e0cf -bc64df93b22f21ca27ea892194f1f081 -bc6577ca158492d5be82f9c356695893 -bc6690341c3f31633f2867b63650d3e5 -bc6b3662788abaad227e9fe887e8be02 -bc6d1decf7b0cfb40a92612e11c2a419 -bc6d6994862d513632130418e1fc3fdb -bc6e49690876359a2e9e034b4289bbe6 -bc7251ebb5a208b4834c2e5cc68dd173 -bc73d19e5d98d2421fc2eaaa7c9b5f04 -bc7ce8bb3b34e274df5009f6ec23258a -bc811044174701dfa31aa781bb1bee75 -bc86ed66bc30df225b248e040881c26c -bc8dcc3a0b3c356b62272aa5be1b7350 -bc8ebe4a94a730416c74ff991f1a236a -bc8edf1d260605d97e8632d3c0b341f2 -bc8f78ad91b161b39c86e7f60ec1ce70 -bc90df5b381a88cf711eeb513bc87a15 -bc925aec35475c1ccb1618f5740d5050 -bc92613e88efbabb6f9ad989313bdc11 -bc92b2227085c0d1d9aee1b11d062fee -bc969fcabd8efa5607d0a9f2c47b6c04 -bc96b5e6b8ef8b329942fd3541b37bb4 -bc96fb1dcba5fbd0653371d9c7eb4f08 -bc98fb9045921d5bc386d5decbb32e4e -bc9c5594b18de4f32ec8a34fea01d7f5 -bc9ebcf635ffae332d31172653391530 -bca15de24afc67482725cfda309d4cb6 -bca6be4661a0d63e11bb04f6c8514229 -bca7172c4b87e931db8c637c9dc65418 -bca775ce0ed7bc6da998258c1adefe8b -bcaf015da5dd0b7eb4a79be754314a51 -bcb082888afdfe9dac284ccd364a75a4 -bcba07074b5a3083456b52094d340ec4 -bcbc6b3cf98638baa84e22efaa04f7a6 -bcbfa250f1562cf9ecd0b8696f480af7 -bcc03034ca94a163925f725de8e377c4 -bcc55a33f1c4c58670b00c72d9787f07 -bccfdff9365853328320b0e7a480b453 -bcd0cbe2337f25290c97ea520ed0e6fe -bcd729a6732c842bc9e784198b5237ee -bcd747730dc6b2dabfbb1b43d9508a01 -bcda2e0458e30335dce0240f58c5226c -bcda9ec8010c53c3800663a8d2c6fc3b -bcdc6ae0d0fe6dccc4168febb25bf69e -bcdce0dc757c8d57ebf893ecc21204ae -bce09bcfe85b51f45ae667831cdc1491 -bce304b263f944ab86b0902c45494fee -bce47f546f07dd52ec3cbcc6ae1d2a0d -bcebba46754e0dbf2204e304d0fa51f3 -bcf0b7e17e846792faeff4786e030cc1 -bcf4474e337b358d548dd4fcedf2898d -bcf78c99583165301f2129ff4475c890 -bcf801558e1d56a1f5adaee1f8e874af -bcf8a0460f2a18483c13bd361e0d702f -bd106277a17b68339711b18d6cf02a21 -bd167e272290e9251c4a4b21c47bb4d4 -bd190ede9175ee6d5c335f52fec2ae54 -bd28053edee1c49b78480be7268b44ea -bd30ac267e76108a800d5c804ab939b5 -bd36196ec9a9871bb30291ae60247ea2 -bd38730f29418b36df49065a9217b2ef -bd3930c374ae45111a4d632961a751af -bd41d920a4c02e1d35c1e7235162f21d -bd4d605a7893ae28a900d0739f73ae99 -bd51e2033f0ce6dabdddb00c57dec002 -bd528cb4e6289e4dd91ed96eed545911 -bd551c12756021127a407aee4bd3cd29 -bd5a8d066af5d4644b56f3b66b5d356a -bd60885cd87ed453d0b42f3a7d276f48 -bd6609be714ca59d9863abb6e16ff0c5 -bd69cd548744290fcc7640f23d4f65bd -bd717394107bc81e5cc90e94fb447fe2 -bd720b019f9e0737e5e2318d924926f6 -bd72bcfb7d931dab6f542f4b9c83db86 -bd77107c575b25a8cd1ce223a9696b81 -bd7951e90ee44d3c79e866277f4e9ae1 -bd7cf70f58f94acc864c5fef27058818 -bd7dd69ff50d63a8e61371bc9da859a0 -bd7dfa27b377143ac24a38bc398ffc6d -bd7e5eb7babd048aeff454a0abec82ac -bd8b0655ce0116eeceed0d36a550bc66 -bd91f2e4cfa424243a43729891224ae1 -bd9233b3d5de76751a8d54d6bccf7031 -bd94b32f8475a23ca5d080aacc7545ac -bda11f694f00f63773ab3cd7452ab071 -bda1ce8878dad9d21814f03d163a964d -bda1f5fbe149713045e835c13bb097d7 -bda3ae6ea7c56b9a2fd986b70a6765eb -bda9c170ed50bc53f3ffa6b26433987d -bdb0102dc8b4e6f2c49b23ff85917443 -bdb5ca7d0342f613998748525f7763cf -bdb900ee9d259d279001ec87477d5c39 -bdbd01278f40e3c439c4101bdbff389c -bdc38e6cb79e1d37a3b2f83e1363370e -bdca7eaf53a4233474166a4bbf77bb72 -bdcc58f9d18e4688ee255bdbfe8a6c5d -bdd51699a6e0f8e8809808498126d890 -bdd5366444bdece307b0b03c7df44633 -bde1b8dddd5de89ea46dc5d3ed8bc239 -bde3ae853260bcdfb8868374803a5562 -bde808c3d1a14b77d4bbb4c5a39c77f1 -bdea3fa8fa7bfb20551e6dc5c9c28e1c -bdec385e84fc77a8740f679cf97d3e8a -bdefb5d19dac655603d2fed72d6caefa -bdf1070eab1412e0a4eea6d1fb303eff -bdf56cf0bfdcfcf82dc5965c360912db -be00e0a046819500914a66ed247bbceb -be01223e34a354a6e883eeae8819f585 -be07618beb3dc5e45f17d851fe794c4a -be090094607609ef048561fae18230be -be09ae91184e890cf5d626191b999863 -be1f663e7407055cc735ea3240720f29 -be22696385df848cef30e5794f0fb10d -be297985c9ae89a785719c214cd02e05 -be2ff4c71dcedd0ab7d29757d0905f08 -be39e64b7d1b5e0bc03514f271809b2e -be3e42b2d9311de76bf6e4bcd239c730 -be434b93330a3ced391bddda0cd432e6 -be47f9caaac8fb1232831df7214478ce -be48bd2555f039412335b4a0d0a640dd -be4bd9c1bb13c1d1cfba09a9fee33a35 -be50220c4bfcaa522429989f4a727f30 -be53c922a472bc2861d978f1a81b0e18 -be5c5d33d43509fae451d70e8b3ad1c1 -be6779bc5203a31b6b9897ff08037400 -be69096da808231e839afd6bc827a047 -be6f06656e5021a29b511e985dac79bc -be6f8ce1da8ca8a2c0e80fd190eacd2f -be722e26a11388df55372155042f0ba1 -be73be7406d3b6d30de4360ec6111215 -be78c70ea4cdabc8ae2053e03c2c7fac -be7a0f3a88db1893bae712f540f52582 -be7cba3a10094c351264d6a941c5546f -be86b5ee041cd30197a48ef265420260 -be86df02c03dfc2ac4ae4950d6d24879 -be8d6dd5cead78e33372268f234e120d -be8e83ca4d1c2bcef8955afb6e88d375 -be9028c17d382dd28a49563892a5f84b -be90a687591cd8ef5cd66be0538390c1 -be93f40f7574e8245fb5f9b2bdc8c81b -be972fd73b8f9e1576e8cf0aecc6e1d7 -be9ec304369856228884bad07099b2d0 -bea10314b20be829454c49f2f33a7240 -bea4e465996e71d46ae511e7d1e92cdd -beacd19be8a4204b1f3f00dcbdebdb4c -beacfa933aec442e6ca101ff121e9b11 -beb1d97b6c26077d8190974494499497 -beb23c7eff575696cd4c1279b76c86fa -beb2ad2de0dc556a0597e18c1a45cc24 -beb3f44ceb81ba65614c2da119fc52db -beb417a70eaf9b6faee471bea3596945 -beb797c3d7ba23a8de8fac85452a9e5a -beb80f3fec093983f9b55d44ba70846b -beb90e272a4f60c64672fe320593a609 -bec83f404460602a251abc57459d7e75 -bec938b30a9fcf92592b9f7d5991d34d -beca63adc4bdc9ced6b649e26365974d -beccb815a513225401a1f8c0e9cbe7e5 -bed0a43838d99120d271321529388e2b -bed4c8595526efa3c4e97d2f12db02e0 -bed5962b6e5bc6cc5800ddb58c3f8976 -bede937a3099674ad9402ac0699edcf6 -bedea6fd3003e973ccebb4c97d1d41a2 -bedf55110345d8103fda04520667b5ea -bee498b2225cde88b74d16ae499635a4 -bee5a1cbda3e995890e7892259ea5d16 -bef0f2841394b37b039cd033e24e8b4a -bef6bff7d67350582016ee83ce33b8ce -bef8556e56d748cda2795c9099074d23 -befa7c4f984a96250a7f292a6b40dece -befbcd5af790a3534e014684b310c324 -befcc6ddb14c34fd92a04361ca947574 -bf018aab78cc1799bf53d1d6430386ba -bf04a8cfae74ec7d7abab57172c8eb22 -bf0a01caaf5802a3af5fc9855928ca62 -bf0b31d4e9cf11e0f200a1a36095e001 -bf0bc45c5c145eb1b801dd95b20f58fe -bf0c38f9eef0ff230af19be771b0a83f -bf0cc30cc12cddc4ee90ff671bc2d817 -bf0ed9213dd79d89dd126d2ce4dd850c -bf105a0da557838059742f6feed986b7 -bf18021a3cbbaee34250a8996ce5c82b -bf1b4d60b7aaa8f81959abe876268605 -bf1cd432db35a6f61c07e6c34556ba10 -bf1d8b3bfc3246adad41d9a48798ef91 -bf1fe7fa36f1f90dd9af1a08587ccf21 -bf233ce1a481581d687bb62331d0c643 -bf236f619886d1030e9c3e147aebefc2 -bf2452793f3c6cd940f4b079e9da0cd2 -bf308633197ae0d5e3785d5eef1cc598 -bf327e13d9ace8decb023fcc1d956114 -bf37d41cee19dc03a51565d81de620e7 -bf3ab1dbb24ad358e5fec2a07b452e2a -bf3d06dd2467fac353d4543864e362fc -bf3fd3d5b886c1a3e159f5ddc669e6a3 -bf41271c8195fc83919f5dd91a55bffd -bf42d9affd3357ef148d89405ea8acdb -bf4a139d336553b84f70049609c17ae9 -bf4b94bf10627cafb580b083353b0e38 -bf5404909ffabda7527f1667e6f98bd4 -bf571c44ce4325a24412bad49a4bc09a -bf57e217f4713fd380eaf3a8807f9525 -bf5849cd40421785fb55f9720c444c8f -bf596e961f996ec290dbe42e997b7baf -bf5ab540efa0c8a475f89d88e223725d -bf5e82ad937d584f7270c5288448ecc0 -bf5fb6cf2eb081f5f892839c96831695 -bf6e79fba544c05b2e82e938c1a2a8c2 -bf750d52efb07c09febae3a3efe035eb -bf75f81c98e46e020203355a4b628d32 -bf77b952b9348c04c9e0140069028c34 -bf803c9bf14da9f4a3f39da05611e8d2 -bf8040f6b358ca6d6133c520dc265983 -bf8820217fe99c2651173945d1df318d -bf8d3da23a0db0b901d9eb3c29c835bf -bf90cdadf4ef764ccaf46eb84d68b497 -bf97d69f5d8942819c8b06081129c8c7 -bf996a7537dc3376e7f36ba8231eddd3 -bf9ceafc50fa7314f329462ea2d3af77 -bf9d92c21d5c40c4ae2fdf750b1e4832 -bfa649b59e78a2b9c47749d0531d9321 -bfa7726ba63fbab0d7e4f7105313391e -bfad2d4b754730ac5aff41b91f82974b -bfada4402b600126f6a095fd3fbcbf66 -bfae94de111f72a39ca2171094352c2b -bfaf4024bee0c858d0c05e1b54e464b7 -bfb84f9f45df45a46dd2b5b85a4e7b7d -bfb8763e2be116faeb79b6e9212677cc -bfbc2fcdb4cec89ea15995636a24bfd5 -bfbe92b2fefc952603bb13d7ea143e0c -bfc09567cbdb82900d45b230162d40f6 -bfc368d43809b19a70f8011497817e7d -bfc81b189e3bba28810f6e3e77b8617a -bfce317ac0581d2231858920212ce3bf -bfd1ff4e0ca22743a54068e55e150e64 -bfdacb9bcb08638699bee8a6456e5f71 -bfdeba10bb4432bf8069b52f1a5f8ae8 -bfe576852fc345fee5c9cc6a066d816f -bfec1446af1e4814f245c55b31527082 -bfed56610ba2b3aed150d47f39885bef -bfedc8a2b57e682d807222a622fcf437 -bff11f269ba4f1b49239962d2ee164c7 -bff1aef3d5bda9f9aae3cc69ee7cf08c -bff27d072f73c16e58acd6fa2c2ea7d6 -bff2e1d16108df81b2162419c362ecf6 -bff62adcc58d0b45a59bf029a0b72e7d -bffa73aa09aaebe76271bd2846a8f824 -c002c3decca968c75422af1892011ea5 -c006b0730f8acf83e8a13570e6c62577 -c026e158e332b2d29492d6a5b1791aa0 -c031b1d81f840ffaca5397ae8fe5b31b -c0384e4d1110df59ed0fbb0476bd6c2d -c03a4b32462f82f98a42c03b9a31b7b2 -c03d1d0a8a726af56c9bc8d49d4cc7be -c03d903db301efae1e09bce48a4c6aff -c0414b337e6276b1371ce5e973b48ea6 -c04921bbdf30537beb14ae4445a63dae -c049aed19ab4e0b848b518bb7ba904f2 -c04da2b79530634390dd7472ac49ec85 -c050df4472a32b17307a0883c517420a -c0594fdedc3acf41ec9ad81d83608d62 -c05d1457da21b956a89789ba07d5c26e -c0628c034864261daa74e996e6911f0c -c062adf31809ad93d23b3fbbe708e3a0 -c07340c6fd9ada033353c9f2473dc3de -c0740f4f92671c26eb2f30043e9875ad -c074969ee21802ac649a0901be836776 -c076df1d91da2ef27732639303c24366 -c0778b27dbb1731ea7e853a1ebcce742 -c078d765b49d489731556a6d9c2c2cd1 -c08022bd533b48f4e348251629f04c28 -c08547d425be4f6e8eeb2109ac8908ca -c0898df4757dd00c6751712f60413173 -c08a727855754e46a14c5e70a7e7707d -c091423b7108f7b7af918b4e7d7af6f3 -c0996ab78eac0cd40e335b1bfc232ff9 -c09fb046702fa1a796c9a1582a5daba4 -c0a50b4c8616514ff9db36511516a1ed -c0a6f8c01354ea7beefa3cac323449c5 -c0a9ca8cd78f4133e98e9ff9c7e968a5 -c0b362e9571ecc43ee4d5228d3641de7 -c0bc9f5044c19090e7251d262f25d49a -c0c4ce6586b1b8a695601c3f3c906c9f -c0c4e38fbba85a6bef3b0e53f46d45f6 -c0c5cb05be4882d7f189081de89af981 -c0c7e59b0e8b45de7aa5e074910890f5 -c0ce76e176bfee8ac3dab08ceeb2b930 -c0dec3e9c45067c643227db3e91e69fe -c0e23702e09766b7581ae7f9ba24c0d3 -c0e5ed63de5f84a7969f0012147ad77a -c0eae1ee429b155380b4102d80d63c23 -c0ec4aeac2e746a4b99563652bf75583 -c0ed71a7eb6defa7b7dd97600ab41c1a -c0eeee7e5aa7fe3fc5822c8f10ac6e04 -c0ef9d7dfed0239fed2edacfe1399c40 -c0f0918f7c920074ccdba7bc9285fef5 -c0f149e355033fd3e7423a6da192b0a6 -c0f52e9bb5e95dfa2163af3d94e899f2 -c0f8034bf44972cf649b13332c6a3587 -c0faff57a43dcf09d538cf792fe4f8e9 -c0fc4d10a8d3162088d5ee794ef11601 -c1066ffbc53e03550a26d6a37ca2ec17 -c10a5311bf0fa8ea7f62b2ac271ee36c -c10b295ff0098360c65ce28cd6321645 -c10c581614e336dc376d9413b3d9c829 -c10ec2d59f876d3d1219f5079267b8f4 -c110f8407f60cced0ea131e56290a59e -c111e16c61532ff76c48da6d02e0d831 -c11924e3893cfe1b6c62e06642cd9614 -c11aded8b6f784f801e4d784a8345cb2 -c11beef2daece4fb84d5177e3092e309 -c1229e9197d1ecd57b3c1f4d295fa92b -c123c5bc4281a277e85f64831b51f710 -c1276df5fd974647f35ca41c44f5bbd7 -c12aa0f7ca1a45d7351651fab9986222 -c12ba02973b898a30e78e5399adac5c4 -c12d0af94ffff16e65769fc9483025af -c13069174b3c6c3ab9c213f079e42e73 -c136006a591083ef709ad73be2955a0e -c13c1185a16a43c48750e2d9171c2eee -c13fc08d6882eeb7c4aadb873a7b76ce -c14208aa93208fd3f305a9494f05ad40 -c1430ce579fbf59278158a7f1feda13f -c143fc589bd36f55c07366b4ea0a96ae -c150999703c98586f7afdc45a5bb9f15 -c1518f7a0b95956f72995b4b748a86f3 -c153864c98b95caa0147d97d1dc1a08e -c15b1386801e7c77546f4544c8b577e2 -c165f00de3f4449dddbb389656efceb2 -c16a2103e770626c099cf2700dc5df38 -c16f5cc886f2c81a267df1caead91cb9 -c1741ea90985fe69d647a45ba6d13dd7 -c175a9777e2bca048a453ac3c92230b1 -c175afa1ca0c04e578157a21eb546d35 -c179babd30637d465b5fc26216958a49 -c17c3e968cba2d42efad8a8d67b19562 -c17f81bc670274139ed053a2eb34922d -c181b8fcb208d274712f5bd6ce98553c -c181d161f516af8480ec1d1e92802e7f -c183b7a982c69a6a167dcdf70a420e65 -c18506a35f2faebeed0e47045340f1c2 -c1870365534632dffb1b39b5bdf4ba16 -c18a2dbdac98b4377105377c38db75ae -c18cccb0443635c7de069e764ed10105 -c18dad11812cfaef68b5562844334086 -c18e24281e91611fed858301b4f6c5d4 -c1992d073fbcca4b58f582f76cc2fee9 -c19deff62aa073fd829f74ec8fb4e09c -c19ec34a5d73090b28704e435b5bd587 -c1a10a2a11a81e5ce88910e6718990a0 -c1a2ec9326c58c6f08cf3fd71392a899 -c1a44dd6741441105765b774baa14a7e -c1a7b954ea20d05743edb979508e3e4c -c1aa9488c21cd6ff4502de63ec0e1d9b -c1ab3046a67364608b9daab8703560cb -c1ab5feebe7e300c2b94a4decf30af4c -c1aecebb81da4434224db3935992b669 -c1b697b1130f8bf2743a8245d37ca219 -c1b6fd8f8feb6261de93a914f232cf13 -c1b7bde2b5732146e878f62a28356a99 -c1beba39295799e248c0007d197f225b -c1c0d5b23d2666fe15d31490502305c5 -c1c964e6659225e8c6c12d490b5ec383 -c1cd800a506a48509920fddda38d07b2 -c1d1c5a65036e6f22e00d1ac4dfea4c1 -c1d36fc1ebc0464ed8ab3184af0f226b -c1d6d7f3913db1937152d1662f5c3eb8 -c1d72467d2bdd83dc35fee40788d04e6 -c1d7708b609e17e52306a1f20848e9ab -c1e0a6a97b3288bac6cea66055b7abb1 -c1e16d8e55a68c8b518a3d03d2ccdd0c -c1e269c16c9da7e08deea36a3256c880 -c1e2b41b18dd9ae49ed8ae5e1bd0c713 -c1e2b443734d99ec7eb7178847395663 -c1e76ea8839b654fbd04621cb7cf355c -c1e8749bc810648e8295d6fc68c888d3 -c1ee4d310780d3c9f36b8a54df4175d0 -c1f2156a717ada3d4bf786aba0f1ae96 -c1fab2eae4338738a947c23f2375411f -c1fde5bff477c7667250e8aa1e938bf1 -c1ff557c21bf14efb3fd2d9bf727329c -c1ffeeb374312f4dcdc3ac211d017805 -c201068aa9901092d2ba9e8ee83e7a76 -c203a7b62434370b076eb552aa3ece35 -c20608e4d8d40a33e60061381fed91e7 -c207465f7436477f030826802fa8d5fb -c20b90b283a9917d0a192d00f47c32d9 -c2155f00e0bdaf45ed244bde8e1d9c98 -c216d3a4c9197a389a20d22bc58cf1e4 -c21e354148f3383fb1027a759c4a44f1 -c21ee42a4157974ae225a36d4bdfa701 -c220c8a990d59180348eed7b10f1edc3 -c2267ee56197db3b74f2bb4df652db9d -c22ca079ab884f4e3eff4309c1174ba1 -c22d3da08a632bef198df6fa216ff222 -c23279dc7e02c5f81073173bda444b17 -c235344192b8bf35b75f63f7afdddbca -c23630db3e48fca8ac8d6eb50589c6f2 -c23bdfccfe47518c793142076c80a3a4 -c23cf0bc312d621071fe365d3a072c80 -c23f341d53c606fe948056c99aef061d -c244ff7816101126e10c9567aeded9ae -c246bc48223311d06aa33a23f9576112 -c2495604376bf4b0d4c0096dff641f54 -c24abc9659d1c738c84fea437e4c6e0b -c250f466bb5d1f56e1050c48e0c289d7 -c258e9d73d5f65ae106a91f0aba9f31d -c25c9d1d1e50d690d3b2e7e7136f13c9 -c26ea6fe6912e2fa7625ae97a41e1689 -c272e74a374d24e77a1fc8477e085fe7 -c273bec2d9e38ca0bf7c49c02f94ec7f -c275cc64f85d7b053c9ba44975cde352 -c277cc896e428f65bc43269fefaa43e0 -c278278cf777a1b6c9167546c0ea19c2 -c27d0668cde2c0334d8c1fd89b358b05 -c27f902332b821b43942e16ff7b8c861 -c28a6e34dba002dac2d1f83496bb3034 -c294a344ed2d72460e283ed173a88ef7 -c299ffe4436663034bd9f7f303f62b7b -c29cc9154292abb5f803939aae7a4ccb -c29ce00fca5e03be4dd7bf2307f3f56f -c2a3e0c7992dc7969f1805624fc1c1a5 -c2a5b92de53ab918ebfc76b30d49ac70 -c2ad47ee53df41aaaa6653d173ebc6c3 -c2b1005454c72142fa5b832020e121ea -c2b24e91fde17fe5636ce98b39c8c587 -c2b9131490faf2c9bf8680c768d60be8 -c2ba186917f86cdccf87f65f8ab22dec -c2c14751575821ac28eb2135d848601e -c2c30dd7581d90c18cd7819641feecda -c2c546a4b55d1bb6e68aacb0b809945e -c2d3b35121d20e212ffb800f66e102ae -c2dafc3de3ea56cbc3483f874da6798d -c2e026dd25462c4e4b426d08a5183c41 -c2e057462f4fec0afbf750715cd68bf1 -c2e6bbb67bf4cd4e0631b8937ebd758e -c2ed49fd4c15d33849485a9b4054d7f8 -c2f0c87efe1c7f4c1ce642f36c810d68 -c2f23803dff72555bf1ca01923517685 -c2f5d0b96f8da04c256d5841e326e056 -c2f6c6b4aa1152a5fbd0107ce9e7572b -c2f81ddfdfa2b32e60499cee2adea05a -c2f88ca070b6e22fe7e87c39b0b01494 -c2fa2cb00ba0612c1c6d88649568a810 -c2ff56c116d9bec3c7f8afcc7cbff013 -c302e4116b1506e22bcd95244ef372de -c302fc4b13ca6e49b66b39d2694208c8 -c3051b3f24522216c45a07c735dbcfeb -c3088df5b0329802554b01b1f3afdaa7 -c30af07c53ebeb5cee10d3686d19afbd -c30f2dd44c23502cf3d5d1b3e0f05ac2 -c30f7119992d04e7952d3f0068ce1bb6 -c30f852e2ee40bb91a798466266228f3 -c3104287511904889f5d4a4ed415fc03 -c310ca61b5b3a13770746e0e305ffcb5 -c315850a88197b576b57deb53ca0df24 -c315e2f259c8816969b374248477f60a -c31696f5c54f9953738e8ba5c21c3840 -c31c695963f8854327ac30f6201ecbe6 -c31df035c599d41153977051f4ba20a5 -c320085a2488c47c27a3e487ef928d37 -c32ad66be4f1bf38fcc8aed5a5465bfb -c32c7478be2b7257bedff835e203039a -c32d56f627a76fb2c55c4d4c8f153f34 -c336ecfa407d79f8073dea458383b5e7 -c337dd1d91aa0cc3fe630d0f55371439 -c33875e07eeec08c263111245b00022e -c33ebc107477a6374adf89c5c1552693 -c34236f00de99cae5d60ca4cdfd2f326 -c348172ffd35ce13aef4de9acde314f0 -c34e3b37928dd9aa6983417b49c87621 -c34ef934c1c154acb938285e3236af62 -c35118efad16ef224d9ccf25dbea2203 -c35209acfb3697a103b11221e338a88e -c354822595c22aad5a7087c084d3cd12 -c354d7208130f7042e737acbc51a93b8 -c3566fbca7de82f849018d298c8a3673 -c359755e89002d8bb3f14da9a8d8639d -c35ab5ae0a6f9d64176b5b97ec2d54a8 -c35d4eca0f2bc31bd984dc15fcba06c7 -c35e69238ff278f304521307fc140d94 -c3600314bb92ad4611061ff13e27deea -c362a5f720be9a5eff0dc6783a41a81f -c372f1e1872f9aba48b7e485316807ad -c3743e590dabfc575151f5d0a2e7a878 -c37a49ae06cb6d9d9648b35632518215 -c37c3a1dd81faf0db76049e54c0f11ca -c38159616f9f0002bc598001ce291af4 -c3849d8078fd4ea89d99baac28a8d9c5 -c38603434748349e24a0d63f0ae3b18a -c38da9350ecc780cdac09ed9d673da67 -c391162f1062b1884bda41814bc6883c -c3916ec7731ea7a527183a30b72253a3 -c391f7cb2c7e3f52cf66c9e32409d773 -c3948f8251c4fa9c4ddf65ea2dc2e252 -c397503888b098dfd65558dcabbe8d49 -c39b5f597f323768328b9df863cba151 -c39dcca688a1b04556fa8e9205bb5512 -c39eddb90dbe2d3115da7bcc01262b05 -c3a06158566c4fdd75d5fabffafc5af0 -c3a0a78457d7a0bb62806cbe84fbfd6e -c3adc8ce47adfeeb3728e8e06f612a50 -c3b018bf85e7a771bb8f1abcb7f88571 -c3b137f11dca18a44afb514833f0c1b5 -c3beb4118d49ff3c77c73212a157e42b -c3c09c29a883e0f53dd681a3fcef145f -c3c8792b0b169bd990a3ce8a41dbddd1 -c3ca250a07cede92b392d6444ae76861 -c3cc24b00ffc603b7c9dc221b096c161 -c3d57c30038a88251948419eff73f642 -c3d907f28f837f39d928c04a16408cc1 -c3dd5ad464e36157823e7bd9839918fc -c3df573610155449e421394cd48dcc90 -c3e9bc4de85988de8e2f208f13b169d2 -c3ea1589b3ab115b61b8272f896e38ec -c3ed54b69e85e17aac7e5d8a5debc7a6 -c3ef7964a93ffe39a97b1c4765503aa9 -c3f05eef852b442e0ff1537097a11cb1 -c3fb5ae804f967998ae6e91bf361dbaa -c402703b89badac9661b1ac809ec6e6b -c40aefdef4cb1c6fa7951be4c5652650 -c411bc157437c6a7a1d6a648848de3b9 -c413403f7abf831449298997e8aae544 -c416d791a255c0d285b21dcc7cde1e09 -c4199c0de57911950812db778fc996e9 -c41dde305e2ed7b57358bb2432b93fd5 -c42013d775ae7a99f750ccaa44674a44 -c4209ba8ee8ef2de84e9c6d6603b1153 -c426ecced847668610c019d1cd4d8e13 -c4278ccf03e416090efbfc6a17b896db -c4298281d2c134545ef1a4988465687e -c42d10fdf64e015930caf96827ba93f9 -c4318c3d30d2e4bb51b98c43ce15547c -c436056ef9aa202808f15b0a3ff5ef86 -c436ae53d43c52c4e564cddd3c2b05a7 -c4385ed5e69f2cf5ea4a4d537114d857 -c438b6ad0be37a1373d60d1d94fb98a6 -c43da58814eb7b4735a30db1540422a2 -c43dd5845458724dd27d46dc6136de5d -c43edf243d77cfc1fc24510090ef860a -c4425106bcb2d555761ece9557931fdc -c449421e9f8f31ab93cf296d44e83e33 -c44999712d2e30964d2a73e5c596c448 -c44d30d47604429bf4fafb822eb24b90 -c452a86a1063c5214fbda51202bb58ab -c455118cbd5e8901653fccffd52672dc -c45e5d83a7b9456e07ebb970500b170c -c46960b6d21454c819221f47d7c63aac -c46e1377b8cea2a5fad3cca83d877d6c -c4717d04ec723e5817fc900bab996942 -c4729b8eb36ee7d62a1eab2af220a1f7 -c4779efaa6e0310d681b37f4365ed37d -c47c47e100cbf61018e9a860d4e01221 -c47d5e551c1efeedf72947e470f0f0ea -c47f77d6ee076b723870026b1532567f -c4850f3512c1da0bc3ad08d7c6b2c7a2 -c4853885a44ecbdb7c85c9296e025ffd -c4857f3ad2128bd3f390b55faacca421 -c490c814df083e9a8eb35a298104f10d -c4933f2f3c1776f96b9f60dc33718d0c -c4939a757c3d0c20a74116560e5af9e1 -c496359ab5d9a5c29e85a728cbcd6b74 -c4ab2092d880c46725a109c729ee87f4 -c4b34d21a50eae2ac399191f5fcba12c -c4b71065752f3d71af82af3408866b2f -c4b977e61d0a817a83007dad5551e186 -c4bdba7c92f8b7c7b3c50f654a3b7d26 -c4c2dc6d86bf1a729339ef3bbfaa16ae -c4c680402f5c6b6db03bcdd8524746a3 -c4d499f98d37985b97da5e6dd8404c90 -c4d512534b2ecb7210883d1a65642436 -c4d7b6cb420016e8c3e519dec688592a -c4e3604f6ca5f24ae519ef96032375e0 -c4e7310486e9c6974b11520478188ba8 -c4ee3b90883fc4983c04ed6758aa8cdd -c4ef196e23ed67a524155691705cf5cd -c4f358ad78c9b4fdf98925c6a760373b -c4f3e1be0bd14fc74c245840ae343065 -c4fac24e126321360194ba6af2fc4bbf -c4faf0716737705e07d5f1031ae8f251 -c4fce36fa806942c1841d66724360713 -c4fe6722603e041578a8b72564f252b8 -c4ff9737d688fda840e69f2dd61cdf2e -c503bd86fa9b07016343b111505c56e3 -c50647eec3b932f2594bbc2aea08f815 -c50ebfb88b39645a7570f98d9089822c -c50f5009215d72770f5233cc6b7183c0 -c516d3b0f51c9505e1b1ce8c81600b48 -c519ed1c4214a315f7060b6154c0b6ef -c521984cd3b3601db6b26f9c4f5daff5 -c52452fc8b5959cabe80143eea83d037 -c525c74dc5878107488bdefad5b9407c -c5281ba9397315d5bd9e364d21060cb6 -c52c99ce203536ae9ae1374ee24f9cc7 -c52fe07c54359a421c3ffe85d59a5fd3 -c530e658d0ffb6f9a0202e87a05706c0 -c5447887e7fb9a484224f268bf5996d1 -c5456d0ca3b15b2fe747d36f58f803fa -c547c67fd5ac3e4e141fd440bd4774ba -c5493637ee40bb5c07f7c4e5cb6ca778 -c549ae7cd02c706dc79c3e670efdcd05 -c54b7c6d73fe0016d35ec00b5417ed36 -c54de6790c619d3c58f1420d59dd2bc5 -c55147e7ce6a893f99bd6742ac73226b -c55167f1db19a8271e829d96265d150a -c55c14bcd98a30543dc8d3d6dbba3cea -c55ca2a65328f82076d2bd0d9550122d -c561d5eda8eab06e3f3b513df66afb51 -c568cd2cb065319f1bece6a6db3fbe21 -c56cfbc2d4614222615aa41c8e059c2a -c571adcac4f87f9749ab6373f086c982 -c577889f4e7b13ad169e8898cc92d207 -c57b0cd5d797f752f53c0a5c7a020df6 -c57b79a68089d0f1e12b7275814267c8 -c57de47c4d8a1cedf631ab2af8e0959f -c582e6886fc7f35f689218a9dc01f3f6 -c586a56b0cf889ce869a197c3f406653 -c58908098927e112eaed8b9b326dd6f9 -c58d3bdf1f9173fcd3a4fca1d5c69679 -c58e19e01987cbce6f43538e4e6e204e -c58f3fb9592499f2557cffe87832c12e -c58ff3a71814fa00becee9115024d6dd -c59207c4fd43a7319370e0bf8e64402c -c59d0ed8dd2a93cb0935afe86257fea6 -c59e524a61b1efaa09ea2f7498517b17 -c59e92f4f3ba8284c18e0e3439562318 -c5a63404420fe2ca58ffbb3806c6051f -c5ab59c3bbf8f3b1196d225aca37b17a -c5ab653a92cb740488a85cce307e3fb3 -c5ae2315bd9876c4f5a4744915e34406 -c5ae454e97d603f116d851f491a151f7 -c5bc9e39a7c421affa6b5146079a451f -c5c008e092336f442cd651a52a3f82aa -c5c0c7a31049d18114c8df41f699963d -c5c192782edd08706660a2772d7a091d -c5c61059b70f6a98284656b7c31a6e17 -c5ca8e6932ac15a78853f2dc836bb7f6 -c5cb161f5d934899ecf8fa5c891d3b96 -c5cb20c1dd2d4d5ed1230d86bc281dfa -c5cbc904c7d25ebf062a9b039d3b6ef9 -c5d563d08a2ce09e2001d99a21c29fc9 -c5d5f3f986892ac5acb27cc2a4e673aa -c5d938eadc54a5c3d72e25d3a66674c8 -c5daed7ee246bd766317aa9f0bc943b0 -c5dc83e211614d813479471b23b9c891 -c5e28d3619a0b0b50b92f4d33db3804c -c5eaafb765e84a46301f527aaa4803a4 -c5ebcc2395eb661ff434c266ac8e7b08 -c5ee0e951ce5c40b4cfb194626fec6bd -c5eea4ed06bd71a78daa961054242ceb -c5f1ee5012fd9c669184abf35a2f6291 -c5f544bf917cf1ac33e24152f9cded28 -c5fa2570ce776c1ffe9598a44a44a8d7 -c5fc1105c1d1b8acfa7b0b2d2c2f8d0c -c5fff2fc0e902395c50dee991639ded7 -c6005b6496f67e1f8c11e4b495c06a78 -c601811e1657926bc3b1cf21d0d3113c -c60574e515874313ece7e6ba56d563cb -c608fecd5c00bef5ad0d1dcaa549fcc9 -c60cf58c546bb5d7ea53e335ed99b1ed -c60d5b54894272925e013177814aa48e -c60e011dd9646c42c34a66d12ddb15e2 -c6146d2061a965e9cadf836ece310309 -c61579b5f76b26d49af4f61fe667b083 -c618597b4bb58d56693889c2101c2dc9 -c619d1d72ed69c0f3c77a049ffac495f -c61c3745141733776e30a89e32820449 -c61f477641ac977a949139b5edb22e6d -c63fb774d67ceda3482ba7da8f20a1db -c643279cfded35d12c542c7e8150fc12 -c64385d0579e88b4dc08509870d5cf5a -c6447bfa13f859288c154ffce53dd7fe -c646da8b603b94f874c6346b1f496737 -c6519fbc9b68223f62e85caad4fb05ce -c658fb3e81518b2b9ce5f828408cf364 -c65ce6a4cb0a227f1b1b59f8854c4462 -c65e4248e74664ebf9bee70505d4e6a0 -c65f55a2661f61cdad217d04f03d159b -c660f1b3492bcf623f40f0310bfb409b -c665bc0538684f2b292bfddb7e05da6e -c66f73449f8215d2fce2b3ed931a341f -c66f9b6d6b45ab8cdca8144ba5c6c61e -c66fad6c7df648d5969fba0c4f02f105 -c67011898b7c4267b082dd4a8d85238f -c67056adfbebf6d2307c0ceeab9e90a4 -c67259bb9274fa237b8136f7c66673ef -c67314f9b73a7f20646ec829f9e84792 -c6745aae2f89e4f357374f0ebe793374 -c6780e75adb1864e5bc2e3452fb982ba -c67bceff8b2af7f7e1c25c5d4a761df4 -c6842e182ee5600a9f07ac64856c71ba -c68c436a8a26dae11f8c67df7b4dbda6 -c68da41d74d521055b7afd50d87ff83f -c6919f9bb363049799607cb88511ab7e -c6961b3a24b3f5216ece4370978cff07 -c699da7c803f61398439ddde77a4461d -c69dc73e0b2f2d93c5e30233e0b8d6e1 -c69ed5e1adb7973404d431f4b4a5bb37 -c6a3c6d4c945d1dc9ec6b5d28c57c109 -c6af7ee85a28cc2f91747411c0126fbe -c6b1222f4c28e57a44b413cc50739115 -c6b2afcdd404a49b3962f179cd21524d -c6b2c59b6be005a9ccf6751cc6101b69 -c6b3dbc6039ff0f0d70329264ef68574 -c6b6e3366421f781f4a5a6cc374247a5 -c6bb0c0c885f02acf81b1b53b6b09b78 -c6bc426932f5e0cf2b7ed0393445f965 -c6bcf4f2208a01fdcd5b4a699d3ad392 -c6bd5464a670524783eab93c12540692 -c6c0d1e53fa516569af0c58d2c7384b1 -c6c25242985cb35843d8ade137334c07 -c6c3116642a32ac47a647119b807acae -c6c427426c299205f09d9747ec190332 -c6c4a50375301f62b1af2f331d5875f3 -c6c672c6a78e6d751923c4f178ce14e6 -c6c79196ee1e90018fbe700eda454ae8 -c6cb0fa1a72ba56a5a4c0efe27f989ec -c6cb6b20ce632430ae30abf79ea21e9f -c6cc90aff41bb2a594381be913878249 -c6ce252b2be297db0bdb6b1d9ae9627d -c6cf0be571ef4de4a55b0ec4b01cea23 -c6d31120e3e815011ba570ebf6e1bcd3 -c6d454a489e61d8c3b480696cc770728 -c6d4924cb82d81482e951ff092faf570 -c6d9129c7e7d3569e6455c50dd021c2e -c6dde6249ec7043e9e51fb784a667154 -c6e247aed9dba941b33beb55149bb433 -c6e2b293c59b14057e2a996788864134 -c6e57fb2733270b4864eded0ebed5898 -c6e7622ed684d877142be34dc71bb4d1 -c6ec18e06c40d8443c1dc5c713fbe2b9 -c6ed02e7e14293bf59b0bcff341955d6 -c6edc3996fa2dd9c06a35528be4ed05e -c6f3bfc245ba29dcf7baf2a59cbb63cc -c6fcee28a929228ece28aa713a941f50 -c6fd5a8ccae7ec96429b3e86585d245c -c6fe0da6442ca3160f1ddb3af3d0e1c0 -c6ff65e29f53716e8ea5df86649562e5 -c702a340b413e9eed175ed2245642cc7 -c7062774b23a52752e51fa5df78cdf8d -c706f0c07e4d14e153f0e3cbc2e75748 -c70dbe1f7c68539607ea9f81d3206ce7 -c713d23be678056360d175b8a90a6599 -c715d458ee41b8f8938e139441dbdf09 -c71676185918675711878b1bf201a765 -c71ec772ed9bba62e9502cbef55bb8d9 -c722d71c2bc0447ad5221267938c0c82 -c723003d97f07bf5158fa60e1a652181 -c723b334597dc2a8c83c663d979954bf -c7284355a3d4519cbb46679fb332817e -c72ad6d7cf87e21ca2de0c60cbf78fda -c72f177a46a275922a451e3fc21d3c85 -c735c5e9a7a965f260c1427ed9d9196a -c73dccd08a572489bdc10819f5bb5dc7 -c7436143e7fed0edf980f645319e2010 -c74a736de04de05d56dd7edba3ad60d5 -c74fb91607a7efd2bd77f2d8f209be23 -c751ca2c54aae9a01f5dfcc338691cb5 -c7539595afcd8da6c86b1297f5457c9d -c753bee58a25656ec257e8eca5fd9b86 -c75687951ace005462de49fa4c2609ff -c75b710431f2ac27a805b99e1c9412e5 -c75ceb97bc08bcbb71f1f028d873fee1 -c75d479638dace5bebd675a76cdc5ce4 -c763093e1328e3b41c39bdfec102bb11 -c7642ade620357d1933d84f25ca2c3b0 -c76d2d4b4d719a6a21a923a2ab8c535c -c7718988d5a3e68fa48c58072f074b84 -c77417efbcada17a19f6d57c37089688 -c77d7f4260f37864277334b23e13784b -c77e3d42e225cc45496d66e5c1c2a3b8 -c785a2042b83757f917d7cdc3a4f472d -c78c9221587fe71c1ea20474e0978c75 -c7908e42d34fe5cebf427b6cfdab95ad -c7921ea53e58b7944ca527a32712b529 -c7a77340680547b3f9f3b3b466f56a1d -c7ac03cce0e1436dc6700c13fbaeb1e8 -c7b6bb2110ec7534530b252440894e8f -c7c8f4c391aa75635f4992751ac13af8 -c7c9a845dc027f1f06a097c3afc1b1b3 -c7caf9e23e5ec22cbe13394fbd905b55 -c7cc84ad413538d23a0138be8a35aa5f -c7d34d606050d97d251efeb67ced32af -c7d568f4e87e2e0b71381c24d47ba0a4 -c7dacc7c8da06e9e0e7a1420c825a0e8 -c7dce23b322623c9221c9f66c43db118 -c7deafd4c683fdd9ab87e061cb4dd08b -c7e0231e3ff6a3f925fd519dcf73774f -c7e45738d36157795b31019fa962e7fa -c7e89f7a3efc8af530845ce85261b51d -c7ebc1e79a02326a1d60dd1e7ee636ac -c7ee3db4a097aaa45e885581f28beafd -c7efc97d246c9e47d8a7fabf127baf7a -c7fdc0a95c04d600accba09aae2e3a9d -c8004d37f0385e670b0101a7391094ad -c8010f1f6d8912fecba617d37e6cb05d -c80190f89b911c4629e15ec667c36f04 -c809ac84e66228c260f360b5c3f42254 -c80a7ae9a7efdd50fbc5b8bf3d342dd4 -c80ce3bc1c73bdcddf3706a468a7857e -c815808fbb580466b395ba0cc11c78e8 -c817ef6c7825967a483d057540039cf3 -c81cf06581fae3b009fe93bac634d021 -c81d1bc11d5086e22438d8c254afb329 -c820d91c8581f1902523160dd93e3a85 -c825c32aa8fe10516fa8b98993b6bcf7 -c82702d9d59fffa1948d946280fb505c -c82a2d189f943836c27ca9c5fe29e715 -c82dd07b5259a426e7296e7e9c63021a -c8328cce4f6cb7a5ab35d7aa71cab7b3 -c835248adb6b18e34a45770d864713f8 -c837bc91c77865c507e0a2c04bb4daf9 -c83904ba3e1b991043c3a49a6a75c478 -c8396930f6930c06594ae6ea006f7910 -c83a426d1ef4b068c61a1c07f71b56d7 -c84b6c14ddd87407aff3de3a1885d89e -c84c8adddaad155b3ddcbe311a6220c3 -c8501eef9bfef5698f0fe95054a83856 -c8521dfb6ee85de25044c97a0fdcfafd -c8522612f5254da3598d9e23e0da4389 -c852301e9b2483596139cb808929f0a4 -c85403125c4b4cbfa64d97eec70328b6 -c85bb17a7c7ee79e72f12c89ab30b387 -c85bd63e35d89469a5906d2a70313525 -c85e133534dd9a9d56d14df585cbfbcf -c85ebd3a1e41bc969f47a0d13334da0f -c8602ba7337d3ad5c0407e2b41ccd606 -c86545926bbe3bc86eda43a3e0400bac -c872988e0ce721e87fe5c8cd8309e4b3 -c87975c8d8d131fde14ed43ede8d7206 -c87976a05e613d8682059b7d09b8a5f2 -c87b35351acb00b81d44cd2fd8212bda -c87e04d4198aa2fee677f8d01f5b919c -c8826f70c0786fa77eafc12a10d76a03 -c88667d23ba4768009d2198cea06d284 -c8881e87ba1bf053f9f72dfbbdc01e62 -c888330662eb5f009394c1ecfdc05e98 -c88b09976ba23fd3a5bcbb29280f6a12 -c88bb0264adb0de47044205e155fec1d -c8904b09657cb77927e72a8429eb110d -c89147644e10d1e58bd4b476b01c8b8d -c892b8dae0a858465fa2b1ebe101647c -c8934796dfe1ddc735a5ff2a56477833 -c89956da8c82b79309037eac0f2442da -c899b28c8446478164689a3cc259b923 -c8ac24963996be2f6ac30c4ff031a543 -c8ae050e2b40505622c49da96ddfb8a5 -c8af2135c767a5d65e59cb26b1a8db65 -c8b3ac9979d6796bfd749d5d8207ce74 -c8b4b8e5b7dffba06ea08095a51e4044 -c8b7a62ddc9f6b1e02e758d8ec267ef7 -c8bbc8bdb61a90405210da982bb41b8e -c8bc96eb5c25170768b0c5036201c1c7 -c8bdfae6b3d263f59c2838bd1e776dc2 -c8bea55512fe02a005793abfe125ba21 -c8beea9df289fa1774975ebf397bdce7 -c8c68d6211430475a7212e24ad75edc5 -c8c6b37d9c81fba24b255c1e177b12c8 -c8c96be3b7cc83520eb1d9ce7ca2cad8 -c8d0f8972b3d5c5f57f02fa3893c52b7 -c8d42e1f22597bb05ef3390f89c94680 -c8d520d44a57c74c3dd2ee4d6769c6ab -c8d6a4f88e9c2ce0cfb455128a02a532 -c8d7d6e0949e8a9a9fc055a8544301b0 -c8d9fec57ab92f86690d87b56bcba7f5 -c8dd528c1e2994c710f69c6741b76df3 -c8dfaee82caf34bc38f0f4f6ff3df921 -c8e138adb6bdbd82bf1efe90972393e3 -c8e16450cfa1ae1dc2e764b638ec207c -c8e523305bccc2da581d7f17798fd55a -c8eaca7fd768b7f68f264e4f88f77b88 -c8fd6123b876031e8c7b2e7d9b5a0b55 -c901fc07f7b1036de6bc7103c29f2aa2 -c903d4418bb97cd067d64b47f41d2b3e -c9056dddafbbd9e84d2f8f2a3bb839b6 -c90d8c4554d24db29d7d4374832008e9 -c90e5e6071342ee139c72c9d1d73d8f8 -c90f583e8b6109012c61cb01d5982a10 -c90f62a8ed4240bcf1db3c900f1a59a2 -c9143e7c5d06de5ddb9e161a43291d22 -c916b05643eeb9b670ef681efed2ba91 -c918c017282b70c1a95fe78f91e3f05b -c91e040bf3306204bcdd84cdf62f5c9d -c91f679801529a574348b7cfbbef080f -c920c149b18d940b09fe26805bf56180 -c92a28601d40f0a98f61452f1a76bf75 -c92aa641c2942b967523b2699159fc2d -c930a267e99e4c905a7eac9d45202d7b -c93254fe2f05f0c7e90471a48b447b81 -c938d8c56b4b4bb80c3ff6209d1d3cf6 -c939bd245cf340340861a5ab348c18fd -c93d6e4b1a2814434ec1dbe893cb4361 -c940fd9294e4d36243cc992e169d6cab -c941d8df5e394d8b3c914cfe97b373e9 -c941f01439b927a37a370ca5be1e1c16 -c944817c9eec77ab2dc24d68d22f06cf -c94af86bb168828cd2dcc4f93a606461 -c94d830daad392e66aec2c82542a3152 -c94e92c2392e59e738dd4ed37d93cec9 -c94eaff7471e07a0811c0f4cd9b573c2 -c951aec15d038c3557961f4069b1cf70 -c958b9f8eaf21b68d49d4dd31e0a6359 -c95a6b02adc906ce1351b2f37804be45 -c95b6d1dce3fef06c8322ca27f3e841b -c95fa164e1935a11b532dcbab52b1104 -c96092c99bbf7c813321e5411b31dbd4 -c966856ca85f734bcba9dcc94db6c29c -c96a727124d1ee4aba5f76934b655cac -c96ab281498d0c51f86c96b3ccbdb810 -c97118cf064e3fe71c491f7936f098c3 -c9737caca905c64804f4fc55cc52d195 -c97eb85a03d93ce1d4a1493d6cc4c73e -c97ee1594524cafcb26347f9e7dd4912 -c981dbfcfcfc21e837cdab38a85df79b -c9848145f2d1b74ed7fc25535dccdcca -c9862da6dae93b5ec0e6343d7a7f9ca0 -c9954314c0a4af38dd26a0d3c4d30543 -c99d64fcc7729d96d1d989f1eff9e437 -c99eaca7b0a10d038abee832d05eec9e -c99eb1d29964c4c22f5f0b8392b43c86 -c99fec6b22c7f6e8c35e14138cba7694 -c9a374018a7643984a75d7686bda97f9 -c9a65923983f38dea3aed96f15da702e -c9a6767b5791671a7e209aab77abfbd6 -c9a833eb9715c93c08558b14d5dc8c40 -c9a83cc7ef35fa9dc69d4d7bdee57eb9 -c9a99e2ed7a2ee24774ea1a3e7b7f9c6 -c9ad0af1ac545da02d6f6b3bbf9e97b8 -c9ae773056f7d370502fddfa70488977 -c9b797f60ebcc499d016853ee48f362a -c9ba1b0ed865fb0e1140b3aa86c5c930 -c9bd62feed525fd2cad60dfcd5bb934b -c9bd680dc053999bb0f5e5d7063e1cd3 -c9bef5a187da68cca09092b28a75ea8c -c9c19d484b2b0b92b1d3b6ccfedea94f -c9c4575da1d1db0c8e5e38a3bde2a3e0 -c9c750a36f45e640eb05b2e1d65c01ba -c9c89f7a992872e934ff20257edc155c -c9cb06caf8ee9cb407b9db57679b2703 -c9d1ee0c5efb751f88437a2c3e27009b -c9d83f199066e47b87adfd8eab45aa60 -c9dd9336af064f4184daffb548ff8c9e -c9e0c78bf82650a462055f7494e70950 -c9e10a695650249fcb0f39a256474dba -c9f5db8bc29714905358df69fae7969d -c9f601ac68ec6b740f0480587b1acb6d -c9fa7963aea09ec5e6157578b1a2d1b4 -c9ff73eeb5c054c70d1abf6fb644c4d8 -ca015d4162dd74eb4f7970a421dedaff -ca01a87a1df1e27148535435b10944fa -ca0778635184bea008ed22b32a37e9dd -ca09e4dad6e596254546de26f20e1fca -ca0b7ee75f503abbce96a7df244a4516 -ca0e0c30efce45e612eb80da9ae74f19 -ca0e304bd7ea5e51b3756d20009d3dd6 -ca0e9c0c4e22e5d1fe57c6b3281eab8c -ca0f334f69d0f4c48a01c09591944b16 -ca1263d2d9f282063468dcf6520dfac6 -ca190238d2069686066b55b8323b3a08 -ca1e4be1c0117fe91d1e7b4cbd165ec5 -ca2094810ade8065e8ff3a5ed7aabdee -ca27f8440f908f8adf1b0bf4ee29879c -ca29d2af053e65f64b046a752b10dc16 -ca30e970eb6d9b8cf4e0df36f7d98f60 -ca31ced64e07d45538084f78593675ed -ca36cae7b35c469a9c59173dd215a9e8 -ca3955eb36acb13002b480541c7b3e8a -ca40c8ec7afef2afb0d5cdc7bb9b22b7 -ca4ff050768c6ba9cdb2dc0a765caf54 -ca517eb11e51ed4f1a3987785673f153 -ca52c49b06869ff4b89cdfb9a376d576 -ca56ae7990fb049e3439ec432596f49d -ca576c6d7a32e3e7c43bef746c0b8a25 -ca592b486de13ee5f6e8a9e94b492ea9 -ca5eda939ba4ff11afee9348bd8a4fe1 -ca60b6bf0ec1d740db576e573e7dbfa1 -ca69ac52f916abca680c5ed1157188bd -ca6b23210339394aaf1735c4452aea22 -ca6c7018721faf339e39f064d5f153a5 -ca6cac5c22d49964ec50960d6c7e1b92 -ca6d62ea11f510fe8ba7bf4a918ee2b8 -ca72e3a911b80c1293e33153b3e1d9d2 -ca7352bc912e43ab83080131dad9fee8 -ca73a7a2b21cfd0acf0226ca3543a942 -ca73efce30c26a91180764783e4c25d3 -ca74f3dc84e82d3a075a076e4eafda42 -ca77ac1976311f268779d82bc631a748 -ca77d685e42cd5c39f3fd63a42cd996d -ca7e04dbc311f40706e190a9dd38b9d4 -ca7f90e6fea01789c9236dafb0bf70aa -ca7fa25e00be1b7ef0dbadd898c02030 -ca82d77b2431ae11959b519796e4b26d -ca89204b4aa370e19a5a3d8d726be8d2 -ca8bf5ed05247d969c89fdc295664f9d -ca8d56bcc7e34c01ab47adbdae692195 -ca8e542b92488d1bf0e7f61bf6e6de26 -ca90714075a8fd91b1a8af280dd97918 -ca90a4b47d0449fef0818687b33d96f9 -ca91188bb014900da3c8910a8832beff -ca984d32ef007daadd9dbd0408116f0a -ca9b13ec2fa0441fadba062cd136c2d2 -caa1f4818591218fca6ee290a2117eb6 -caa3d85513f5f23f32e4b049dc9753fa -caa5eb83c86fc7d77e4d6cdd64333c0e -caa72009577e8f46133720b89daf817b -caa76c1b9706c96db4f2115acdd4a4ea -caac3abfdc7701bd7e3ffa3909f9aaf4 -caac5af1e2125dec85e3f481a4a50ecc -caaefe8714062df108172a8e16531053 -cab1b62b8bf6970539bc14ea86553fc8 -cab2c79110ed6e07c901bb9e1b2a169b -cab369d3667ccd70b1269f42a4f2bfba -cab8988457b3f2eca82984a3fe2c9dd7 -cab8c05c14e89a32270ae14eab9ebfce -cabc3973d77af4e1e54014379855a64a -cac0758acd0e8c3e05f17b536661c9ef -cac11864024754fd487eab172bfd1be7 -cac8fada9643dcbb61a0a35676d59bbb -cacb31845dc328fcdc12aedaed98ee57 -cacde4162a40db91ec6bbc088c3acd8d -caced82dd347209825f7bd435575c0bc -cad411ef1cd103c94a8fd1e2d0b0bdda -cad49f860e6232ed8ea0bf39495cf4e1 -cad6748d69edd2ef6f4ea1403f3d9870 -cad76650641ef43923d50e791f696de3 -cada2934366802dda0bb05f45ac31a2f -cae1c6c465c8399957d104fcb1adffe0 -cae500bfd6c64e4380fee2fefcff2369 -caeb9e84ee355bf3254903b332df6413 -caf162834c040c0ce4462b28407bf55d -caf45317a4ea42221441746ede18b4a6 -cafa25c8125edbf6e04111ab921ed3f4 -cafa3d8a68cf06beee5067afad42de77 -cafe6d8316727b3563194adeac822cba -caffdc09f9cffce77b22252018d9d120 -cb06fab0d6fdcb6d7933a0749b893e41 -cb078facace9cf193f2232b47023261c -cb0c3bf0d4eb67a382f509b65bdf985d -cb1085b0dde7cdb08d62f2c96257a0e2 -cb1a32bd293141d04e7d146406d3ee2e -cb1b7d239dee21977f5ee738734b15dc -cb1d44bd9579be063428cafd5bdf721b -cb238ec71c12f74eb4fe3e321aaf9346 -cb27b6ea49ce86a9a62e631632a5b983 -cb27d80af4943092d63e0ac0175b3129 -cb2edf61ee2ec82c9588a77574b167a0 -cb2f7c3653cfd92f75cb72fccfd25a24 -cb3eb00089b24249a48bcf28c660dbc3 -cb3f91408bcf36b69fb91cffae517997 -cb454eed48315bf4051d2043f5308d78 -cb4bbf0f88f224b405f768c937ecbf9d -cb4d553068de3a4fcbb4eca6ec4f2ccc -cb500a21e97692ffcbddee73663ba77c -cb55a573c4a3d47786e55e8d28e0e24a -cb560091ac67ae3374038e98293d8bf4 -cb5a59ddf499e30ecf8ef398696fa4f4 -cb5e0d49e41601fd0db7027ee8fb60a5 -cb66e11e97e5fcb50e29c911d40bc4ed -cb687e343b42d05780a90b2f3f97c60a -cb6a99c74cffb1a6908cecdf16b20308 -cb6b92f85fc3a7021bcea9bc4245341d -cb6d1af7bcacdc8ec8dc39028b81416b -cb70d98f5cbda7d1e1797d5234f0973b -cb7475a883d17e1d52e39769fc8897b3 -cb7cb819b971c81380255caa55a3e3d4 -cb7da01e134e020393e48d8e240834d4 -cb7e490b9fcf18f3c58e080cd740cebb -cb8b0ba75036eb81ea91fbd518c29ba9 -cb8b174fd84b0bba429d6ea876546a10 -cb8bc58698355fb1c19ecd8df1de900a -cb8cd4f0d4b0c8658e4435e9e7d2f84e -cb8f4c85ad8071e5b74062776d57819c -cb966a10377cb4deac765ad75279f90c -cb98eb36507fb5b76382a132466b3c78 -cb9a9e6956256a95af8cf42fddfce0cb -cb9c8b7ff3bb2dc2cec2cd616dd980bb -cb9d26750a35b47639d6aa2f2df27cc8 -cb9feb547136f404a4b02c23b6c85b42 -cba03bc61b99d81e77723742f636605e -cba35b11ed5c9052076f4d5f2d1e3806 -cbad7a2d1d7a4cf955efc694c4f81f66 -cbb333b798e001e7c3fcd1660641cfbc -cbb6a1611005d06881ebbdae13957fc7 -cbc10cf0cd55360abae9bf666d336730 -cbc4071a1461a6075638ad0aa8a16b47 -cbc64f243eb7324520230b559761297a -cbc7a15bdac22c8bc2e5f2544c7a33eb -cbc8d06939bd0dba702d2103fcd255aa -cbcd93d86aed18c394771e5805278da5 -cbd2cf93b33afb7d6c374c6fcae20fce -cbd5bd59b1d7f74ba66de03f306563d9 -cbd6e1c4071f5ab9e0e305dee43c54e5 -cbdff875ffbbc2214ae6cd9b254b55ff -cbe0b69393d696c20de52c91f2335653 -cbe3c1175b0f224e2cf8ff17fc97dc50 -cbe5c84b6b811a8ef4c6b2bb385037e1 -cbe65628977654514b8b0f09c60b96a0 -cbe8cef14491de53dda0348ccc40a8c4 -cbe99bae8dc31db33e874d18e9484bbf -cbf2154d7c257871739133a33178b564 -cbf2e72432a816d26c8d0999f20f2930 -cbf3f9688257cf3f1d3a6e60c8c1c410 -cbf6a0c5c41223852213036416632dcb -cbf90f72b032a6d680f844ecd6df5274 -cbf9240714f6d7a468eacdce7c1da5c8 -cbfa37241495279b52fe64fb6d8aa8d8 -cc0802168ebef98c1ca6efa0c8256be6 -cc0c1c7a3d2605175f58a2432d24ddc0 -cc0c600be175b105a15fb741c3b0926a -cc13c03690cce9d8acd40a7729febac6 -cc186fc5809eb662cbec88591360cb99 -cc191afd5ede7ca8b491c13fc96729fb -cc1b888f409a7619289341f7183e2304 -cc23f86d37cb41531d636dcc5f304d4b -cc244bbb63ed84bd484425f23bf791d2 -cc283ba548942bb55af3f19157d84065 -cc287ebc8a179bdb429a24c12a1accb3 -cc2a6a4e475587fe0db859bd774d55a7 -cc3604d9e09ef177b7b3b0413663b44a -cc3724a9fbf2df5911e6bb5fbd6b853c -cc37d0d168eab7c032c1ca76e36c77c6 -cc3bfa7664c3cf8aacfa758ae965d3e7 -cc3c8f48bbeb328335dc062f7c37bc2f -cc440895dc3762cd41792886632a246d -cc4cdbd542e9aa43fe23c4586615deac -cc53952ea4a05f5a32a164ce49bfa6ad -cc6437884ba3b63c96cd13dc093eb487 -cc6584f54f0d2ba99cee06f4ccd26211 -cc6be062768e334c846e051b4ebf5776 -cc6d91daebb1cc686201b8074c4af2e9 -cc6e76b559fb864675993b7cd1f2a1d4 -cc7003a2d4c126cf0fb39a243115c876 -cc780461ea336cefaebb576c3d8c0c78 -cc7be4a56c927b90b317fd79c741d797 -cc809167f76c6d3409d508d7714010b7 -cc83796d5700f7231376edbf9e2314e4 -cc869227195153497c5072e9fab2aaf8 -cc8b808b7a4c0d48fc236d5ee23aeb86 -cc9194566093f036b33bea4ab6329393 -cc9497444b886bd2c5a5828a9a4db471 -cc9640baa8f581d39425608d7ba53635 -cc9914560f6197b696a08c827fd84edd -cc9b0032b7c69863a2fda773c4e631b5 -cc9cecfc2735b8aa8700911c502e2964 -cca711e25c07e0ef8d783ca4bed8edc7 -cca79cc5ea29814e98e55837b315d788 -ccb0ac1e0f3882b88cde9e4f1d6292d4 -ccb27659c38ce7213bcaa3ed77215eb1 -ccb6f3efb0da30fa33fc71961595076b -ccc56ea00407b6ffbdf201831104c75c -ccce5aff881c3ff9f3c7b8831a836efa -ccd20e7eb53b92615139c3f94da5430f -ccd49a5901eafec768b8c12634011b11 -ccd6832b08b8812229715f68dc4e0437 -ccda360b9804dd9f618d7f66479984d7 -ccda38420a76c7fad49da5bfffb9f98c -ccde7328a7d300d0347a6cfc96319428 -cce1a9f0b9bb87a0770591ceb2072f19 -cce76f140aa971aa67257d83b24579bd -ccee74bd72f7d75c3b0f9d339a4be584 -ccf4c1fabeadfd9d5206589a9529a6da -ccfa696394b928832f046e4984f5334f -cd0502e4ae97531f3edba6270677e601 -cd0970c226b2ca7d4832a4ef7a1a30d0 -cd0f62b8c02c76b9fd2293653d69fe6f -cd10e789372447d219250a3b7340111c -cd149f8187b08055fc3c93c3ce6e0e00 -cd15c3e7bc0860685e942b677606e631 -cd17de0bc3825a14b1eb1a46cdfe1e57 -cd1b46830928679690ff0eb75af321c1 -cd2552384494f76586ed64ac42f8f525 -cd29c2ef5f2d76f7bd91ef9865cf7f56 -cd2c36e816e8bc64a312c2e5e26ff9a3 -cd32a6e70637a7a541d2982a5a56cd67 -cd36ef0388c59bbef1cb3cfe196d48d7 -cd3c6e9549e14e55807e34dba2d64583 -cd3d636d3a5dba56eb8be46ab8f3aeec -cd56d1d950dad8ec04a5dcba9d761ac4 -cd628edf9b1271b1f4de15554ce540a2 -cd643ec8edc66d87111cdaeecfb56e11 -cd65ce1dd745932c97c48fa429698302 -cd67a46e117dbd94bddd360e39ef54d0 -cd6812d2112c43143b14408e3590f235 -cd6bccdef4046defc710486d329aab96 -cd6d7e155397db5263932aa4f597706a -cd71f10f69022ecde8f1cdf631e93d66 -cd72d26dc7b7116f1c236371cc617256 -cd736792c429a5fda3540179aecb4734 -cd74991d6af462004ae65a91447b2f6a -cd7c5a12fc6819693e17f5b662abf4b0 -cd7d24dddae3ba076e5de7527b948f9c -cd831a89f8a10841f62ca9cb2b36d837 -cd87e5b08137f97c249d92eacc4e5c05 -cd90a5a1806688797fccfa7a0c030ac3 -cd92657c95b7ca8e1d27e627a663f4e5 -cd98f0ae17e5018b0dccb6ed529836c1 -cd9f487a343ad1873611d57ccc44233a -cda3f165fc624dc19c6aa8c518e03ed8 -cda46c97e307ce8829bf756ffd576d46 -cda8b541f1afe3efc76d3c2ef7323d65 -cdae9a5d536184d6346a79fc753efa1e -cdbb3c222e051f6b00bcfa7fc64eb155 -cdc25c01cfd5d362dfb2791a8d156503 -cdc4153fb3e1ca0af03c1a18267b4209 -cdca6203b7d114cb34f4c95de17155c1 -cdd16e5e8d063d1d7ff49815e4c63611 -cdd41a2f46cabbec0af1a24607aeb180 -cdd72889825ee8b657a9154bb4472ddd -cde24efb7826c804b730f82c12770d89 -cde9dc293bb812cec5a41ead785d682a -cdef951b269e652cb71406c5aa33e939 -cdefa6124dfcf90ecbe9a2be746d4f7c -cdf0e48aa0eb6aa754f19b0b91f799e0 -cdf771ab8bdc7e06334d0b1b80029b5d -cdf80266bece467aba3c378a06a9fc7f -cdfa6d9ceffb47f2b8cf05f6c13a3424 -ce00fa44d0f9c54746d3dda221958341 -ce09a4aa83f73b8ba6289af206a4f6ee -ce0ef093a5acd4fbd70035992b4fb98b -ce0f9469d0d101c721ad1d3d8bc4bc64 -ce160aedf3a7c6833404984de8b604af -ce1d8d31c94aa37dabe8e15236716f5b -ce307ea56edebd754e1c00b9f4d2c175 -ce339cf109d2408eb074267329d4e336 -ce34e579c37e7afedd17d326b8fe5ac6 -ce3e481a831514684b1313068e3cfeaf -ce3ee6b201b44ddde726895da6494442 -ce41d9997d1049084c920a18634ff405 -ce44c7b97f8b0319a9df26b3dca40e1a -ce4942c1b4d5e401921ed060147fb194 -ce49cee67d3fa5050b7439242e0c39c0 -ce4cc12d319e7b3675495eb63208df31 -ce4f35f595827bf1f3a274f7930b69b6 -ce50735b2a1b26f08423b16b2d8f57d8 -ce5354ff079a64b85076d6de263a5a92 -ce584033368ebc4a5b56c597707a1af1 -ce59b2f21985eba4ca4135ebfa5d3da9 -ce5e9ef990e8efb133001307ccb664ad -ce5eb9772e2f84817dc86a2767827ced -ce65d6605c1171d2e66cdec017b18226 -ce667431c4d8d69cfb8a6a9fe806af75 -ce6994bed569cba6e1a15acae4b10e97 -ce753a955aa8902276da9b5563ce57fb -ce7770801757389f8049ce2e42ba8c39 -ce78fe90ff54b6605c69f22d3a0e7f2c -ce7944898cb8191507a6f5563373abc2 -ce7c5b1224d0e9a7c555c77b093f6ab1 -ce7ff5160ef01648e82988d78b2d815d -ce840ee90f1ce760b801ca3d99a86794 -ce85638abe130967da0d3fbe12754715 -ce860c2356a2c9215f456aaf6a43811d -ce86acbe833ca40a28b4db58eb8ad1b2 -ce8c6eb1286eac383024f9cd45e40aee -ce8f51ed1a082d3428760f14379d179d -ce8f71463b78742d0bc854e130acedb4 -ce91381740e566ca42bd4f6e11da5e9e -ce96e53e72d4f5aa98517a57c042d9a9 -ce99a8081c0b628bfbcd81fae9ac89b9 -ce99ab04f5c4d46c0c0e3a8ddbf8992a -ce9b5bb21e6e02a095363cf48a712794 -ce9f1edd56b89d15dfb1a826e7bea11d -cea32b8fb1740504e5e5dae6cf026f53 -cea5761d6f5689376fbc49c75e026100 -cea9c1a3ce847b2224178e8f6d2237e0 -ceaf452e7325c9e20f4645942a4a8b18 -ceb3028d9792ed1df0a2437214cd9fbb -ceb97b3b651567d2eaabcc9a28f45caf -cebc52add4565b6b2661ea38285bbede -cebdd64d77af7a4820959a174ba1ac7f -cec141212789f7c449a84a82fe7402e8 -cec1dd8ee2afc783a3fde8d8d70dab29 -ceca246651679761c6a631fffca56a7a -cecadcdb828d657c5072235c4f25ce5d -cecdbf4b860acf733f8d050f01440b79 -ced0692e69f651b7eda7240fb703b965 -ced9613c7e8d848abdd4a8d0f0742244 -ceda52ad07d1be2f359bbffc77b6b85b -ceddcdf9245fd235d2887ca1d54a77e5 -cee40efc9451f3104bb894b683b9112c -cee54c6989ce27445dfb410d4aff7e52 -cee5649c61e6a3b384a6adc91a6a0a0d -ceea42f0dcec5fc48e1ee6104e9df68e -cef11c347217fa955876efcdd23aee37 -cef2888c9177d60cecfd607ac2273265 -cef95c63a032cd90b22324fbaeaf49e3 -cefd7cbc7938a390747baab664014c17 -ceff55fecbf926bedb8b639e301eb27e -cf0034211a16a69cdab2c6f56067144e -cf0c7e411fefd0637dfa1a165bf406da -cf0f728d6dc8412c314567e9b783822c -cf11c18cc7f4c7559806afe4adcbb065 -cf14ddff29a760c12ec43f051cc5a38c -cf16027177baf63c4bdc6f1d1fec275c -cf197d4efbaec721a79718b77e0892e3 -cf198cf542b27c060f086565945bd13f -cf1b14481d811e8d46938c15b858674f -cf1b5e4788946255298f0d63007c1788 -cf1d3787a3e2ba722010ed524954cd8c -cf1fd8a636ebb34e0bb2c39273b2264d -cf222a727b18d29c0788cf56631e8970 -cf224e79f5093c21f2460ef6467261a9 -cf25fe99189ae15e6500dc827fbe6cf1 -cf2aba86061689f53e8604b986db2cd8 -cf30628ff8390b998561dbd3e7b42e97 -cf3ad04172656312084e3d958796528c -cf3d889e493e2339a08b0300acf93ff1 -cf428ded9a2614e3de820e189ab48083 -cf42bbdbc7eb57b79abf33fbecd20e22 -cf448487423d7148fdf2355b08698e14 -cf45388252c9d8edd295d560283b0830 -cf464baaa517241af01ed823487bce38 -cf58148f54175490ef7d7c66dcf33361 -cf5f157d38139708ee6034e3a9f24677 -cf607dda9f8ef33c99ac204a08cf47b1 -cf66a9d6815c68e2d18a5efa85aef5a6 -cf725ddbf1eb386f2539b5df3fb3a6b5 -cf7352653b38b8893b3d3eed48543d49 -cf740e0f9363bea215cf6f0940c971fc -cf7570f687b8916ac33af14667d0ca1e -cf76f0e092d27eb0669c9a28d90ba1a6 -cf78d5a2927ca22ad3004c16f6b7174b -cf824c1ac3317e3ae17f74634f94e17d -cf8cdf0c6a9402e4dd464ecdf29ec2ac -cf90dc1da4c1b76663a931f86f6dd4a3 -cf927a5646b016fc0a604e11becdee91 -cf9be30c3e86f36a245b1ec9e0867f37 -cfa2c00c1be8ba6f85a7989aee7674be -cfa84e9c1e12a4ec6f16b41ba05eee96 -cfaa95c985adeb14e83d298d513d7068 -cfb10791ad2bc960d40d24c52faea550 -cfb508d42949f56c1c2994e133977711 -cfc79fff40a21401db702a00c177d95f -cfc8fe38e6774584886ac3e48f47768c -cfccc655298aafaf15a7b716826ec250 -cfccda6d4c42b6b90356c503d2139bf4 -cfcec1d128ca1aa8becd6e1357a83064 -cfd49db5f77b2a8c9661af173d371e69 -cfd5b12f91e6954d95aefcd7bf9be460 -cfd706ae9092c045dcf46d88ad98c3bf -cfdf3f2053784077e176f7713071115e -cfe8483dc66457b4bc87a19802a1bd80 -cfec0d1f544f0dae0ee46f94f6ccaa3a -cfecc31e35d34e0d4ead71d94f554be7 -cfece79120c6ec56c7cd7d5778adf5bf -cfecf7d9c8d20283a73cdc351659b5c6 -cff057c75f099649404aa65232d52784 -d00137aba9c23f66cec0fc38ec014da5 -d003d1cbf255e1aa7bf48e2412eedfc0 -d00785fb08b7c5d94fcc27b062a09357 -d0087d6f3425f599f026d4201d5770ef -d00a46c0db13d5f1e3d7e7687f2164bf -d00a939b9f028f67b111dca6ba80ae13 -d01f867df34510993478a44fa3176f52 -d024a6c5037aee9fc3581f665e41590f -d0283da776fe5aa2739f5018ce9b3c89 -d02d7110b9071dd417a5989fdd176a81 -d0321ead1a886d9a2f2616bf613e6ed7 -d037e549bb8a062570c6e923a32d929e -d0381f1e317731d469d9e66d34289ac1 -d03ae6100ff3e2a39c71748b1ace1b54 -d0448ac5941e2525f64ce8ad8f815841 -d04aae77b46c11e82c2d86b8811d929e -d04e6ca02c9886f3d689e380ffeec1d2 -d04e91827d52431f1d6f5a51eddf52a9 -d0506c5a8f319bb8e6fea943a0ca8f29 -d055451bff526175ece647a5db83e21c -d058343eb61f8d449c30e50df70284ab -d05be6a6a40f0f0c2f42a0e85dcdaf16 -d068d48d2acf47eb5fe4246100607169 -d068e199ef15c6320762c422db96af72 -d06c558e2216a490410d2576ed66c5f6 -d06c78eeb37c097e2ff550d37cdc25b8 -d06f69b8eb4b60fe9e63ef0ecf0f664b -d070ca723eeabc0577229327da984a20 -d0740a9f91d4892d13b00b8bca0b34c1 -d074ae709e0260bcbe9c44a3b57c9bee -d079f5c97b129e25a9128ca6ec786e99 -d07d3afdb60443c2b98c48d31021d322 -d08160abc8441d1e373215cbb51bb53d -d082204b2e91dd040953c1c801adbc19 -d094ef42324eaa990cee59c07e9081d7 -d0960af6f1e13de9d633754b07b46b22 -d0b1a6b7243efb6b57ec342af98e3ee2 -d0c24ce95ca2162a9758ef3fd035a036 -d0c5ac6a9b17767009ce2c032a5c2820 -d0c5c7e979cb8060d8c6eda47d8b8dad -d0cfe94a0f0af304be6f7b39439d5405 -d0d32a95d72794d5e49fe3a0f6a0a729 -d0d3552f13005fd7b8ba2238d2b322b3 -d0da8eaf000cf7e1438f6b2f9df76015 -d0daa8e3ee3933f6d43b5fbef0611973 -d0df72d9d60d3aecd6fe512e0a6fd5c2 -d0e3a8dae94522d11af39c9f031a2cca -d0e50a2a945501d9f29d5e0b272f928c -d0e6558474e04653c85a84d074248f72 -d0e7beab8ccdabbed3ec06f6fdef323a -d0e93348dc58560d895de517748d1611 -d0ea3495e71a5c01d56fe8ed4f75a0a9 -d0ebc795a9c2069f12b2ecfb8ac34e63 -d0f0b4c76030a2678f1b0a3cc2d11f07 -d0f14ffa96c660732862fe607cb63aa5 -d0f261b3e1ceb7cab64e13e5acec5934 -d0f4e378fd7d21456f8b346ce78fc4ea -d0f50b36854adcc84d90c774600b9e7d -d0f9df1b3e7f27f879793c4c35ad6f20 -d0fab6666eb979caa8935841315d57c4 -d10219895df02a6d68229d447c553fa3 -d10263ad7a684da7a2b526ad6772fcab -d107e0056dc6919be184b595f3a94a8f -d10fd383e5d963194e8d0be665cdd6b2 -d113bda59c7ac176cc52ba38fb9f94aa -d11b5d60f0a871a90972f55f9e3bb1c1 -d11bbe2f51182a0d1b09e1e8c5aa91af -d11d60596ccd2ee0273e9fe36fcc8fa6 -d11e802406367bed53a2bb020454981c -d12009850b89cb06e8bcf988afbd35ab -d121ab40b8477792a36a7cb61076c85c -d122202da09d692041e4b56877faca30 -d123a67dd337ec696e7d8d83675ed242 -d12445c0d56ae133787ee34300c90a27 -d12733b3bc742549205da818a931f7c6 -d1296c1283cff880f35fb0b7af6528dc -d12d74758844d42072951ff5476732aa -d12f2b9dbb5e9954dedac668b38e696d -d1337c55efda4f93d2edc7c434bef7bb -d136484e7f36f78b9648de107a65a56a -d13c0494386a1c8c813c09482aa7d3fa -d14152f666bf2312e2ecc84bbe31e5bc -d1436af2af979e7c8a54e306813cd030 -d143ac8411004532c0ef59981dcb8fd4 -d14a9f8cee2598cba68b50f92b8b3800 -d14d7b5fcd4c17d4142732f3abc074f9 -d1516bc924feab43275add59ad7c6438 -d15365e5e73390c6bf5ee7c11df8eb8b -d1569f3db6d2c3cf65f0c3639329a447 -d158271ed488573fb8f8981c7443fdaf -d15af473e199dc72f7c53016db482c6b -d161e93adfa6849cb9f7eb8f9cc8406c -d16e76862fa4a27fa3dc8eb027596230 -d16f092af17c82dcb7336eea51e77b45 -d16f108ea6ff919f006086890ae311cd -d17123b9af8c5bcbce761298405c239c -d174f7d6b1af67f7c05b66db662a7b0d -d17600bf4a905b2324b85f6d8f50f885 -d178afe0ac9de9bba63bf1ffed61f69a -d17be78f918542eead17ec230bafa20d -d17f42af5c942783c6b5a5d908d44e0b -d181545ea04bbe68c6607f4b3392027c -d1854c72f6f74d6e380bcb4e3b1d2fc1 -d186e4cb8802072434144577431f928b -d187263fec0a79f32bb6d6781d01fa18 -d187ab22dbb23b5b2f02314926e7bea9 -d18b57cab9575869f11edcefb7a79c9c -d194b7ae743807caf452942c064bea18 -d197ed72d2814b2985d64ca97aa4e10c -d1990edc3891e3b9906209c3ff500268 -d19b0de0928912514f77aa33d5bfd8ab -d1a55fcb25e6ec1ef740a54357ecbdc1 -d1ac2b27092a8d2ffc0f04a4a81e896b -d1ad589cda6ac7a79ff2b883f54ba4f0 -d1ae42ba0f9fca35fdb1abd1d19a9207 -d1b3ae35f189222d5d05d43ce534d6c4 -d1b40abd6bcd116f3c602325e5bf20b3 -d1b4df220614f8373a67c529f64129a0 -d1b71bc1d9aa9721f493956beaa071b8 -d1b8befcf3205a0230431428c1cd2e29 -d1bae669be1fd867c025fd82b00f55a7 -d1bb8cc9908a4fd36b030d3e3a489a52 -d1bbff7fd94587d5a9e09e7eb7a69af1 -d1bdf33d619d6d46e81d1b01c721283b -d1be59d17a8c4a44548bca81e534a56b -d1be8be870d659dc1d8ab79715249d9f -d1c798ab86b03849420f15fd23632d85 -d1c980c24af9e918585c91f6d494cee4 -d1cab63bf309819e9e1f1321c809f72d -d1d1b1dadcfd8844b4fe38126bf313cc -d1d8e466abf5f3beafa196383fac806e -d1da00a0a652dab36c7fb6d8ca17d01c -d1da353f9c987d56279619566d7a69da -d1e0543661bd1754e68fa0a0b3f1c846 -d1e154c4d8a9c0728ac14f93d5588097 -d1e2f9b9847a0e1e392b4fc5c4133735 -d1e3432da751bcb6fc193fba72880074 -d1e75f551773176efb13431560c9bfbd -d1e76a1725aead00aded3a90539dd293 -d1e7bd7fe23703ab5337ab80902796c7 -d1e98a5e78171f2fff41cd0fdf1a0ee1 -d1f5f71e0822df2acc4965a2a81dd13b -d1ffa9ef33e875ea6ff76cb278fa7e32 -d211e609832ad97c3f51f70d9c107618 -d212d7302fea1dd56677b12afb7e7ed1 -d212f1d9d066ad96acef091339164b84 -d225ac9a781e1a57bcc7412190dac791 -d22bad17b29704a938353c42591778e0 -d22e4ab78bed53ed007b29bf8907c0fb -d233735b89b2bf5687a3dadd74e221ba -d236d650137f3b5f1733bafcc9304299 -d246c8d2d6ab81d8e51ae1b5e21846f8 -d24a81e874a01bea21e8ff3723aca967 -d24c6630e06c3a1b13a753ddde45caef -d2502e05fc1dc4ede60526c46c322a63 -d2512f1c67f4598fe3409d8108c56973 -d2534104a8b7ce69e3a950295dacc437 -d25368990e87df233989c22a760e3a12 -d2558e8a307dc01fe6a8007f9b608de2 -d25d4f0d8c175f0912f8c6916e201995 -d25e4bff6c217343f945616ba693d018 -d269d35d5697c007eac8893ca9d7a49a -d26ac869b328a2a27221f6d1aeb7ce7c -d26dbd1afb71bd419c89418960c38f84 -d26f95804a664513f7c5af7e6730aad5 -d270fd9ca35a1388b31fa92fa5566f73 -d27258d8988d3b8f2025f57ea44a98b6 -d272fa9e327352325fd665294aff4207 -d277c198d087d8d48a2b6b6118e68a18 -d27bb3b15382b8f12be448744ba38605 -d27c7704cc15d395353b80a679468660 -d27e53d59f7ba2f29d4e3b3566ff3ef3 -d2801b306780e6f2cb4d7c14332165bb -d2804c9bb530dfe74e17458428b561ea -d2883b6ccb3841ba3c242b65a6a8a1cc -d2894147bdc91d2afd029a5960a22fde -d28c0a9b03ffa295e3a818f4b0b1d52a -d28e4522b0e2de89faceb88803b505e4 -d28f90f6cabceb95eb28f1ad1ddf339b -d294d2fdfb00c88e09ae60c67a1addc4 -d295881d8f03fac62e05a22250ba0419 -d2974e2e2bf8a5802a09f778170d3f4d -d299aa1cea1ee15a3ec4b755d4d90163 -d29c8e692e7f8c266ef53205af88403e -d2a4a8ea3a41883dada0d7eab1c267cf -d2a7c76b170e5c1f886336e450bff02c -d2a922e1180383982eb208a2903d1ec9 -d2ae95066ebf79c4cb6aacaf4dd184a9 -d2af29153e47ca603205f75d16245e37 -d2b0d2c15798501a8302b47d058b4efc -d2b2412de314097c62b62e819f14f176 -d2b2e98794f24076da675ca965f0b8e1 -d2b959920ccb9e0c8529eca8e9c89acc -d2bd9d6e195c31b8502bb090cd736d05 -d2c46fa6321a948aab9f7098cd0bb8db -d2c535d6a5a1ca30e1b6edc0998276a3 -d2cc42cf231abc805ad16be2d8f3655e -d2ccb0dd0ae9fe8fd1c5d5f71f2ac9af -d2cf0c6535f15b1a05605bacfa7cb734 -d2d238119467bff1f4752a6bf9d37a01 -d2d5db7a88832721bc1c9a132ec7452b -d2d91261cbdaadcfe9f5f4a117f7af34 -d2da67bcb14e683811b96a632d26ac9e -d2e33b7fbc1a52ba67cfbccb5f8e389a -d2e8128a800257cbd35568292049b9a6 -d2e83617b8fb726b97ce9cccf5f26969 -d2ead85f55886ef8b249da961601ef99 -d2ec0f20643a8bf8e1ddac20f0980c73 -d2ecef2d13f876e00d794d587eb04150 -d2edd2093407d0949828cf420231ba44 -d2ee2cfbce277e9401b28257497f5ae9 -d2f51a8c65e81ca3e8489a379b0961b1 -d2f78080728bf3ce4627dc602c91d906 -d2f9f5d7f6b0517b6851791b071a3d6a -d2faf3297051bd0a34f9b08b1415a2a4 -d2faf61614f1ffeb6ecd72d99eab15c9 -d2fe9b4ad753a8084dbd9137e1ef99c0 -d3009a981c26a43a7d9c9527d980de0d -d3079a1929a45bfdbee53c2b7e230b44 -d30db9738bee61da462205f612b10489 -d31004b1702091998a9369f192cfbad7 -d31420ed27ff25aad1a8f24b697edd68 -d315f2f210aece2af3c5ddd9092c7e92 -d31a92336604e9c3ca6d67f7100e9975 -d31b7754b5cc12080154d417397c6de7 -d31c91ae1042c1e22fa7972991686b8c -d31e000d02fd0abe4a47a1c2a22e07d7 -d329b6c63c7b2c8d619d9b04e20020e9 -d329f7b19d897a3d86c6bd544acd49c4 -d32acccef11336248e95ddbafc1f15af -d32b8bccb607727e29d9e03cc0901f01 -d32b9d6aface685b2ceadc2d740f5362 -d32e20c60cadff4838dbe1e383b55477 -d32f7327d616d0dffe5865aacd72b92f -d33104bfbc0aebb53abed2e79cb09a64 -d331d2193f392a9ade297a2350f4eb6e -d3355d9f7b57dec4667b328f31938813 -d33927c58f06cc422610f09525126c20 -d33ae52c26bfa5b2a48fa0cad4c57396 -d33cfa004fee22d6587c7271f19d05c8 -d33fcf0ed1dadd3a4363ada52e8112a0 -d342d8696d920adf974820f399c0b72b -d344442cd9e59cb1d326d9f401edd5ff -d34623a3dc4c196aec1ca45a7e6fe00d -d355c5cb4f5a0e69d3f4e90ffb638255 -d35710c796fddbbf29a3d73c3da796a2 -d3577eea521287aa231c547eb5ac6e03 -d358f0495b70521c3f55847c8cc84657 -d35ce58b693c2e495cf74e016f8e44f6 -d35e5e8c0e6f486494d5fd1879f7d437 -d361390cf1140834e9c81d735ea7b493 -d362987a326f020536a4786fff89d3b4 -d36809ac20d102a6872d57b4128179bc -d368b0b2ab6b75af3c3a467d5865ec58 -d36b08d99464df020718916e6b537143 -d36b38304a00870aa9cf81ed5d5b2d36 -d374c1427858c24c53213ec4cea9bc6d -d378134afb84ac4fb1177ccff7df5258 -d37c37c3ecbfb8c6399a8bb5eace9f5c -d3805e84b8eb97023e2c5fd8cc08ee5d -d38382c85cf4a0d3ff87a01afb227114 -d3883a59acf382cd79ec50cbbdf65a81 -d38d8b94815e3447d8bd09816bb927a3 -d390a7e829412b49a5e4cbf9b9e17d04 -d39233adf938cf839635432b1018101f -d396a77bbc0f057b3985cfde83cf26c0 -d3970d5948a53e0033ae68f7fb06e5a6 -d3989dab019a20a832d2327cfa1a00ab -d39e3126d6c99ff6e5b15f597127b711 -d3a4be8c8e788c639a8d0d10e308b7d1 -d3a787a31e15a558e811bf74c3900c54 -d3aa119fa31f13e621c3f0c3d13a8fb0 -d3ad40d2481400eb2efc95542fb52285 -d3c22de93616e9c28b7a85b676e128f8 -d3c249a97efc6a5b7a819de08e006f2a -d3c5110f78b3ceb8505ce48449edecca -d3c52ce6a639ba4dd1b27b287c37c0e2 -d3c7e2205802a9ccc2d19ebd97d7d9ab -d3ca11a445914c5cbd886ac1aa71a10f -d3ca5c4e7c7377ec997ced0c4764179c -d3d3abc0b6fa3a653be6188677555237 -d3d4b7031fc91b6976174eea2a05082d -d3d6b5a1b75e1739fbcac0b25940b6e9 -d3d8adb788aeb43231d60945e43809fe -d3dc1dacfa5442d5a0ad4f1b5d6ebfdc -d3dc2590c728a42d6fdf7ce0871d9496 -d3dfb0b7a0f49b9e2276c8847bebd9cf -d3e23ab21131118a9b44abb345d14e72 -d3e78b5c0f8dcf92b296c1b6163807fe -d3ecd3d3ee0e010a825990210cff09a2 -d3efcc7cfa9ee37631b6febdf2154935 -d3f57d46c6660f09a3b875ffe4331819 -d3f63bb266aa4ee329383eb9c0c32826 -d3fa554da17e59e322c54b10e7bf1d89 -d3fe14f9bae32f134eb70dce358f8bc2 -d3ffa0c37a85f06e7fc0462bf41a1df7 -d4019196cbbb2b107563bd68e7537ff3 -d4022d68bb61cc9fd11ce27a8f7fdfec -d40d8de53a55770855bb6f158681ae14 -d40e3e8219d44fa425c2168189dc3d39 -d4100202c032a00751c66490d1c6873d -d416476dab13291297bc5396d426ff1c -d41918de88385de56d30fe53004ddfcb -d4281f894bf64e87398a24a186a809ed -d429208466e0656ffc0664d8008a54bc -d4296e0d40d562b74e8a202317d3c135 -d42cc1e94ae24a88e38c08d5248a55f4 -d436b23388b3f19d765dd968c4b71d26 -d4373f3691e971c19516de4364bedd37 -d4383a6331038dabd8b3d8388af18de0 -d43b3e47534276b4e787c8895b1f17d3 -d43ed56cac64d0644508fa4c1f382e5c -d4449e01ad1007c964cdd52811907d8b -d447751ce8c8af7228676ef81508449a -d45cf10e958a224bf3ee492635c45abd -d45efa03214aa319bb65114b1b5f3429 -d4637a217049a313e02044d114ff406a -d4647071071c6ca0a55fa12ca8cc6c21 -d4669e9b2f115a4836c9bee661905303 -d4669f4f1d63eb7d1a17340bf8f415b7 -d46a01754ee766eab1f60de58074cc36 -d47146a3ed42568e5ec16cd4e30eee69 -d477dc94adb88c66844c36bc7a769d8e -d479d12afad1ac59fd4e4f0867be3fd7 -d47d99a82dcaf4733c2b9820a242a0d5 -d47e409972875598e6cffa60980cf368 -d47ebb01b3560eba62ab339e3f86cdaf -d480809e77c64c0ccd532ba59781c481 -d48645332ec053ae431a15096d49b875 -d48948e714cebbcb60b38f5e96c14982 -d48a9bd29ba7633fe65ee52d282989a5 -d48c52a14cb52948a5ef9b434fb56cd3 -d48c7c0acc1d79cf461d0bbb268eaf1c -d48d59ffb6206dc83e1216546b1a4208 -d48f3188ebbd09fe0a593493cda0b53c -d497413d130d6d249bcacba03d261959 -d49855953512dfcfa040ba4f62d298bc -d49a934efcd8f0fc5d70353fd645dca9 -d49daed5847a7da044022cea746add46 -d49e7a812c97945144876679f3a1fa5d -d4a5e04f293208722162529c37c4009e -d4a74b8bbb75b8fd06f4e04d4b10b51c -d4a86deac504fe1bf806a2c10d2bdd96 -d4ad399f3b5e1f7e7b9f533b27624ec0 -d4b32eaf6ebc32443cea4793e4518936 -d4b4fd8d0c8118052a1f8ae7108bc9f3 -d4b7303db0647b7aa889713150260b76 -d4b8c5a4bad73ac1f594c9c8798f2eb8 -d4be707553f579c5571e4bc573185cf9 -d4c215a5aca74771dff2ea27051ddaca -d4c48debc6c4a3723841c978afc4837c -d4c4f6e41f5a236e2130b0d5bfd97620 -d4c565b0f62c162ad740aa61d1fca3a9 -d4cbc96287b1b914f09db397f9f9f973 -d4cfafeb137c4f808c6cda0d5fb16301 -d4d09b2941e39fd39988dfc4134c5ef7 -d4d590d33dacceeca2aa79e01026050a -d4d7f217af76ef2999ddc704fa25f1b5 -d4d9de96c3d0ab9e375ad329b0446d07 -d4daddabec903440a97e59456a971868 -d4e1c4d5bfe3854fb169073941e2eddc -d4e53816c9bf2a03972757e8ef102691 -d4e8d8dba287f165efe7d664002b7b04 -d4e9b6f66b22a8ec2d8bd11fd0191616 -d4ee36acde4d4ab7aa1fc19fe4643032 -d4f0faf9fd7d1f4dc2a369b8cc1f3873 -d4fadd69ab7f6954f0ac3d18b0eee511 -d4fcf3a70707ec884527936bfccfbe60 -d501132d2c8c72e17965b5c1015a2087 -d5025f065590648dde547c21aac60b1e -d502e060a4211cb74af463f277d4fbec -d505cba74304758bc5b4a20f1dcc44f0 -d507a3bfc9662ff2eff3ccac3ad6a161 -d509bab3b75c0420b93d20ee78650c90 -d50b371bca837aef59f78ca7e0cf9a48 -d5105f31f96e810a19295a9afb55ff4e -d5112ea0310bb7921cfc1b026d8a591e -d51e8624722f588db78f0de0354e3856 -d5205d7ab14f0ade7e53b80b80723686 -d523260923041f8cd140692d0c869821 -d523fc31955ad270ded62e5606e1b72e -d527f8105e760c52c137a59d58a4f72c -d52940214ce09f99d623cb6f0c0921bb -d52d7eb47907f5fa493e1325b1d205cf -d52d88585e242ce3cbfa868b0502829b -d52f43025c94cd5769dc641400ce1a34 -d5311c379baed55cc78f3429ab4500ca -d5345ac1ee7c082627c9fbd740727fab -d537994c82ba9f197a11584fd0b81ca5 -d53950b8a7bbbb778318059d2bc1baa0 -d53aca0e386d2fa37f69cd9f3aea8921 -d53be08e832b9546cd94159c311db613 -d53f1f68012e268d18573a2a1290406e -d5463fd7d39341cfec2a5aeedd829433 -d54b32ebce9601acb4ed14af17e2a9eb -d54c4b47289780820d3648e976ba8a8c -d54c546baa36e4fdd91dad20569d5a77 -d55afb5badf230d6c800cd810fc621a9 -d562594124eb91f3c3fd7d3ea114f800 -d569dc3391216328931ea3218cc60d81 -d56f098db7af5ea8dd2955f777da40c1 -d571252a060d5983e2a8615344a5de37 -d57babed438b9effda531857073cf792 -d57ce837dcc378da9f0c233e6851582f -d57fb882387e4720dafa7195ecfe2886 -d583ea9545b8761d7706cdb8d2b1601c -d583fe811de0490781397fcc2bb14d9c -d5843c51020444d959291ea1ce715876 -d586704fdc7580af2cb4ecfebe00b4bd -d58a25f804a2af4a840468001fb43d94 -d58a5cc0f1be66a2d8aacc446604d70f -d58d8cf53a76c1b2b89cf34fef0beb4d -d58e02cc49ebdced9a6e376e754c0563 -d5940016f9a2c1144d80c2660fcc6b88 -d594e30cc2d4c7544f2b8eee0e1d36f9 -d59512c6fa06fc3b5c0ff9005bcca9f6 -d598f3781fbf961c67e76824663afbdd -d59c39b5a18ae1534fc1fa65da205e5f -d5a22664272d47422df28b76a1fa018c -d5a76790d9af1883c15688abdcd7cf95 -d5ac67ea0f81c96ade5d1bc19c34a22b -d5bef5f537bbe91412d6b18c6f69d8e5 -d5bf35071c452368852cfd801a34f2b5 -d5c04b11d84840984fb9f1e946f33fd8 -d5c8f4f97ddbdd7e15fdf2f9d905a266 -d5cb21ba68df918f43fea5a03389cbdd -d5ce72393715caf55da12e103a26c271 -d5ceba669a0525c01bcd8caafe3dc91c -d5ceec8a30fade99c315d2af3a3dfc00 -d5d22ac3449a0c432f0362b74b7077dd -d5da2ea33defa4e3bbad7bd9ec5be632 -d5df68b62365afab9cbf6e7669ac80ab -d5e0bc6affd96532f4c0c28cddde3bcc -d5e55309352ba652bb7fbc8e0f2d9497 -d5e9d8e846f9ef388ce51744f19eb8be -d5ea56e7df1b965b8805f8973a222517 -d5eaaa3465574b330c6c27bd2ac23a32 -d5eee44130f4ee9e5c65a68998642729 -d5f009a96e410389734220574242c0cf -d5f12519fb60d002ec50c6dccbdad6e1 -d5f8abbdb0f0c4bda93039a999c1130d -d6038df4019f454aae7a4e43253927ae -d603ad23629db20930cc2d30903eb0b5 -d6071486bdaeb3fd1ef8acbb1a4dd980 -d60cef12222c265d8b477fc2c252133c -d60fa929e69f4fdb78f06673eb36fad3 -d613934ee684cbd69afd3af17e6b3123 -d618faff36c769b03895243a0dac5e8f -d61911f41cd02706cac82a85916bd41d -d61a4a518bb6fcf2d7c3b507dc0e22fe -d61f242006ac617e3427563d98d4e358 -d62059f27b712bc43c2c4889d5c2a42a -d6205ed97f83b3ba4c7ac324794a7887 -d623ba3f2d4aae81be37c590e250d488 -d6257fc3202e5ee80bd8cd2fe7f5a41f -d62a78a1a38d51a7543d8d529bf6019d -d631fcba34f31ae840256ab7f90b864f -d6322e32ec2fab492e03b6d17d0e163a -d63908bfb2b96e191f50e25b4306e5bf -d63b33edc1932756c87eefa4c4bfb5c3 -d63d78be74133145e8986a62857b0914 -d641ffeabb1615482e7f11ae67090e84 -d6444f6f73d6112eb1b6b8bbb983ae1c -d647b06c60e6e56b51be9757c02ae303 -d6494c2b4775427fef7d418ca5b5ae62 -d64bbab35046015ceca0cb380bfc0d0f -d64bd8ea7c969476074fcdacafaaa42a -d64d71dea4c77ddb8834d5173d01dc39 -d6540ae0b33661bf5d71d1a3e87a42fe -d65d19bafa797d0e282140095ec916d0 -d66001b231369bbb0d6b951d121e6a67 -d6622c2e2ba4a3fa2491563ee9b97d3e -d6663e55fbe10e20dd0206896f7d9b9c -d6684d775d4b1025ad42ab072f16d5b4 -d6760a2c9c6973b7556ef76eb4675c6d -d678eed648d568fa5c3ea578f2a9ce3c -d6818144ec5782361f5b63e5d6eca8c7 -d687048642b5f04ed4d516e8e63dc2fd -d68ed923bf96dbac7e721c61bb96f6a7 -d69a74d67d8be7e4236f1c4ed20d588e -d6a20c6b848c9065b10a19d9003b2410 -d6a49c338590df927410dfda81f97c79 -d6a504bc55d9e7753047c97d49290dbb -d6a5be584ec5ff92f823fe925f00c56c -d6a646d1a4edb48050f7ca52e62a1e28 -d6ac6ea232669b62166df25213797251 -d6b6690c7068239b700948b048db29be -d6b75c8598282c8091f762a05b19faab -d6b8e543007305bf8ce05e3bbd9fef60 -d6bc0798776e5ba06807b5ab2ca229b1 -d6bd9d091685636970d75657e609eadf -d6be85a42697fb96f84a760add1030a7 -d6c0ed8483aa7ff51743da3fdbc812aa -d6c1782fa0159c7d674b7e1aeeadb105 -d6c720b107d2f21347c9281208e1ce58 -d6cb5b72b2bff6038a179a544533fb11 -d6cec3739f24ba0488efcb0bce4181d2 -d6cecf69ff57aa0177aa795e95bb2d71 -d6d2297eb9c8f51b5ad732deafae32b5 -d6d40175fd9c2b152391a5a43cc138b2 -d6d80d01d0306a41d484201bfba86e2f -d6d8850f3fdb600ef7161bc8f24a88ee -d6d9f2cfa27c0360a7561b0b837d3a15 -d6dce3196cb0778d3e55b63cd03521e9 -d6de79026784b77457a3e27dddab2e89 -d6df2ca9f414f62a854f621b35d00077 -d6e35b2414766dc8ef600fa94dafe59a -d6e50fe873dedb53e59f89f02fb62548 -d6e682fdafab6601a40e9b2cb346385f -d6e6cb97ffd2bceb882428a1ec51c4a9 -d6e9593d710769acceb258f8ee4963dd -d6e9aa1911ddc935108aa5cd4002ec71 -d6eb30066a7d1639145c30ceb781d45d -d6ec3186fa30040efe4b871694f02fcd -d6ef367abbec57155195efab72fbc607 -d6ef47f65be251156155fbed7dee8d68 -d6f26c2764e1fcc4180d7ddbf6e8b094 -d6f54bd7fcda27146adaa61d94fef23b -d6f61a63760db25ef8d3c7c96f85face -d6f74404081ed88c09af09e44dd061ed -d6fb382cdffc9d7aef3ae9d41c4709de -d6fd4da7e8b1dad6452ff5277d5dadba -d6fdff53dd0d63caf0943ab64ebb7959 -d7014789f0cf291e15e3a7de00170a7e -d70a751973c50595ff5ddbf90ab31d48 -d70d38e00a87a03ede4b40fc90a6efc5 -d715a25052ebab71a19e2a10e60923a5 -d71656fcd6638c880ca9ca853750998f -d7173cf1e79947bb5a6eb7581ed27bb9 -d7191fce297f2d69aaad5c86dec72101 -d71e3418d44e2363778d5d1fde340179 -d721332506cb4c9a5bf33a87afe78097 -d7245a8331adda9cb6b0d29c8041c8de -d7296bd81758f0cf6b81c8a2a20bf7a9 -d72aa93842e04e80232facd3f12085bf -d7348c48db22d530d4d25ea1a75f1037 -d735cba164bc1db1f5388e7bd9e8884e -d7360e95d09847c0ce25e188c971ba46 -d736c131076b3cd535ae18142c77b639 -d73dca8fd0a567620b800d9000fbe995 -d74049a46d0ca4a6e131875611764715 -d74051bef1dce32872041d03495f88de -d742e15608b85447ae456193f7820e4d -d7467242625876f2c8c0a2a07e98fc23 -d74dfc6ba8790442395f3f86e1a9c225 -d74e2f1413125eb5b13221a2ae3a10c7 -d7504843db26582021b69fe198fbc597 -d751c9cc89171e777148c215e79b03f5 -d751f4c079cc76eb51a0814cb8da67ed -d7547b428692a3f971ba0dca7557f303 -d763e80a1980bd61c80b988bc280755a -d7660bbdb5332e72da0ea1dacea50499 -d7673052b09f7446a035d63bb94e622d -d76b0d166b6bcdee6988a84ee642929a -d76e4de9fac90ff995d2ea18867dd990 -d76f719997b8181a33d06892c80b3a7a -d770c5e88d1239c6dd3b16c5cbf85beb -d77247eb65070df1f53b6eed15577487 -d77441a7136cd5a8a49831e3de770fd2 -d775b40be79c696ea0eb81aba936dfbb -d776016be41e922ead34846aaee0c9ee -d7792cafac9a263f35a3744dfa65c373 -d77c35f8943118dc852c03a60dae4523 -d77d2098f95f96e7ff0be9d3068c841a -d77fa03353ce2332020b9d89906512dc -d7870ce33ad516730d13889224cf76e5 -d789f1efb58f1132aaaac434bee5378b -d78c542bfec5f8862e63e5bbe9ca0816 -d78ce2e182fe180092dea14bbd3c8456 -d78f6a0dd08fbd5508b5ef23b7739849 -d79011dd7b69483541eea81646990626 -d7902f64fc5384ac249e59946515f619 -d7905301d226b7a59a1cf3cb2fbcbc29 -d7911ea2c7231f38bdd6b997b958b5f0 -d79462d44c45af55f22db859e5b9b218 -d79857c356a1a04775fe99c3ee508469 -d79a400dc305cb6dce92484bf731b640 -d79cbc8e907c83df7b0d5cc99c689a4a -d79f80250d2f9503ce7e87f6ba60782c -d7a02239f37371daab0f81b6d26092a3 -d7a2ea17bb3ebeff2e545477de3798e4 -d7a5b3ecafa52deb4c5cf53235563306 -d7a5f1267f73bd191e0ce20559a98b55 -d7a803fc6f11639ee9c64f2839de7b36 -d7ab28b79da0a8ec76b9cce393eba4fd -d7b485570de86dc734437c440e00f2dc -d7b4dac32d4e4124505d17a53d31ce36 -d7b541d081a66933adcea9cf2235ecf6 -d7b5cec664694e992deb46abcba543d9 -d7b6d8073aae0e5f62a7bd327366d70a -d7b9c78abf0a0d4164f6c6181c530e8b -d7bb90a6b528153e98b8d60ee033dddd -d7c3ec461e5e4264a999ec6ae9cca6bb -d7c44b63b2a081ebb8da1a82255caf88 -d7c47044ca9c819d5c0841a47f2bd207 -d7c5358733fa80dbc3613108d67fe542 -d7ca4fcec335aeba194da2edd275b418 -d7cb672c573fa3f7a9f9d01e20903128 -d7cd9c665d56dccf1362a86de14ddeee -d7ce4495096817cb6a24c69efac2fa41 -d7d22247bdd131503288c4b31b83e0a9 -d7d25d895a10442d792b725db56fb354 -d7dedad771fc082261a072697dde7cb5 -d7deedb5887acb67e66ddf4a4ce81aa8 -d7e21e343129c8df8ee2fe65807ec75c -d7e2d6668ec320e968b2d93c10712b59 -d7e457d8f143aaeb9d0d05f6eb9c0f77 -d7e4ddf2f5510be43d849135977443b0 -d7eb12b493dd980d6dfa0963336b3d9b -d7edeceb0022acfb76f64163d0a24fb2 -d7ee5ec1064e3d7b37bf6eb15b232d66 -d7f2edfa823c4c93fd266721c239f824 -d7f380e5c223e3a5e8dc3fa689434063 -d7f85fd24f19041ab7aba10817a2d666 -d7f8d1e82eb2d02afad7a4c4a50240ac -d7f8deb4028a4d9e6bdb30639c1a3f3c -d7fa100b1dc7dc09888398e27c9627ad -d7fba232701ead5b6986dd9f754197e6 -d7fe6a0124e0ba305772a11412b88c6e -d7fe8e5321ca7a7d0734bd0253c90f78 -d8019edd432f0c6bda89b6f059fa811e -d80b5c3b3c81b8888d57219083921e2a -d80b76d81a4ead787a58d3c7b87b8f5c -d80c01638e093cb621817ed83dc0744a -d80ceea2297df4d83c926af92d6b39db -d80e0e786e8435cb376787863029beba -d80e6875fc05ecf7f18a5e02b42419ec -d80ee8342af4e09e3124b5d392e4320d -d813a02f69b67c15c264de9de662d4e6 -d813c7a6b576c97ea85444af6e653210 -d8156fa7f4ce075ae2ff5648c7af70af -d81699faca6949282a6123cec95ea15f -d8187e607bf10a8f378c9cef9991a9ca -d81b1fe3257f1447d70c69b2547a89af -d821ec0aa2c2560c0199c77277dfa485 -d823e88be02b2fcb82df678690801628 -d8295fae1cbaf1743462d1a1e4ef1992 -d82ee7ee6da08806cc4b939a109116ee -d8322877fef9442c54599c60faa46a4b -d83567685c737fd9be5183ca518e3675 -d839f4bad46d0a0b690d3d1b6e57891e -d83e2b803b793e4d9e87c159becfcc77 -d848def341a28185aae55d619204a808 -d84aea140e8efec6e2978db6825acbee -d84c25f45fa39e6b77d8527ca9a5ee26 -d84dbf7cc775cf7ec85a693316aa093f -d84e949be3427539ba2e6b96263a4a8d -d852fb8cf484e4b349801934ee380dc9 -d853f94c2400fd89c4c4c0e661e873ad -d8549c4c7755eee2c32c47228a6865e0 -d85e27778f43d88078672b462c481e84 -d85eeac6e2377a9d8a406f795ca0a991 -d86407f2ea43bb0bb0e4dbbe09eacee6 -d8649e07aa146d0b1438b78729c0d6c7 -d8655ee6b3079f313e2f2bc0a2b85330 -d8685da3fb7f59deb626f0c79fafab34 -d86c7cb07f519ea3f5b1b3292306e58d -d86dcf799343c9ba02a770cfe400ea8f -d871b8555b49b04508989574b8c6bab5 -d87279699da85837b9d24dc5221c57b2 -d872927d76a7c4ac047f1f0e26d9e008 -d87d5437ac29517be28bd0e710d981c8 -d87f10a4f615144fcedc8ac46a01b20c -d889e19a264a5680e18c7c20d3993ffb -d8927654b04bdf9b3c667e529a186c85 -d8a1995833b5d2a177a297f3d2c1efeb -d8a2ff06f30823e53e0b77fc3a080786 -d8b370f44b0739969b02987f70766f45 -d8b638304906ac85dec3aedf000c95c9 -d8b6dfb7d9afabdeb8fceef29ae17b3f -d8b8441ba49e36e098e7991096281dd6 -d8b98b292c8bec0a17c8a3bc9e334587 -d8bdbf53c5b70c7f2fa20371f892972b -d8bed910799096bfb211b6db1ea5b184 -d8c5960a9dbadaafee400ece3a0cf116 -d8c89fa06850f5a304144fa911ac9cd7 -d8c9156f667a2a22c53d4b42b2ffe8a7 -d8ca770b4f6d4a0f83b461c3a3ce3d69 -d8cae2f1e4a7843aa5f05bbcf34ac181 -d8cbe840902a5e979f0e5aa7d74fe9df -d8cc6c2ffa5ad10607f680a72490412f -d8cf8fbf85eee59af77e60f8230bc7a4 -d8da7edca4a954d4ac1ea53985878ec2 -d8dbfd633277b20cf7cd3ef05c91495a -d8dcc2355bcf344736134c944eed52a6 -d8e1adafd3961753fe07f8f10b454db1 -d8e1e9febe9d6928806ac258ad6e7d18 -d8e2879b919ff5b80616912f7fb5e8a7 -d8e75e466a6b837278a891d1a83dec21 -d8eb66efc61eed4fa874f3a5f1a0b0cb -d8f19b008b0c61baefee24b5d347e772 -d8f6f9f3bf26ed61f18b5e20a1fd5e01 -d8fb21da01bbeead24d63a2858152a0d -d8ff8a78d9991bd4a6cc75483a331fe0 -d8ffbf9b4f1d4acbd414860b192d2f25 -d901a69fa644c59849562ae01d6252d3 -d902e21232c7ea8f0b1340880d48f7f2 -d903dbf9d70ff95a4a9f29353438dc05 -d905ae05dac5b176e39d67b33ebb1b21 -d9066c31aeefb22779f5f9d8328ce20c -d906c9eed2b8c65d3ae72b967fee0368 -d909746215299870da61d4fc0ee230a9 -d90e6b83d3e603f49aafc50f6bbbaa99 -d919332afeae73aaf50cd21b2df7dc56 -d91cddc328ed91771baa87597fc7f986 -d9220cec9def2b964e1aff436221c335 -d92215e88c6accb67170dceea64c3f62 -d9231b6b970f7f034776a6acbaa90ae0 -d92539e31255a2c22343beee70dfa2ee -d92749265f65b19a811400391ea49879 -d92b8b0f8fbc9535eaf4faf4b3af95aa -d92be2b1f771a2780a15ffe26a43bb54 -d92d59086f8dade97f39f209f8a017ca -d9379fd640b2d995e27ea7feed45e393 -d93e28c46a088c843c14d4ac4667aed5 -d93e30d364ed06b54bf21990f979cabb -d93f58cf97250f68788b9106a63545d0 -d94250328ad47c13febb0997ec000de2 -d94420d4610713ef1893d3d7ae772d32 -d94457ad204976b3006701b4861db57a -d94d4d7ea9acf9d0f755c2978bd73110 -d94eadcbac42b117f9ecba3175b2620a -d952fcbd054f68a10acef89324d0c7cb -d9624b06e42b1b0722e2e9cc0363e2d5 -d96366c11e4eabbcdb98210a3af6c44c -d9667dc7af364868ab8c429016ce4f7b -d96b73d082475dc4f4645adeb9906451 -d978b1ad84a994a137569908dda7fae9 -d97a1d4e95c23b7f31deb2a6fa792b16 -d97f71e7eeac655045dffea6b962831b -d985aa0b3a0fb238c2782e66e9bb3c86 -d985bfa5b3cd2fcf6751579ad75ac553 -d9893459048f005c46d163ece0a85126 -d993f7c1bc5e9c2078e850bd2d9d6e57 -d995254313559db572f0cea0bb8435bb -d995d7500f74962bf3a89515faefd29f -d998337d38b91f34c5333e1cd0b60f09 -d998b579ec286e8357fb1ff55b602813 -d99909efe7771eb50e6f75062dc60669 -d99c1787c9b94adb5a153f5edab4f127 -d99ca886536ef41346f288e3de682a89 -d99fe9ef6d81be122ecaa483e7d655f8 -d9a09d38f6aa5564d7a9dead278835a5 -d9a11ea58051f7a8faca5d0cba0f1b07 -d9a34b811a334cf460c45fa8a6db6401 -d9af211718814a204caba598295ef75d -d9b2c09acf6bc653b67d029a0e13bf01 -d9b6e43450c496083b56cdcbdea5d9d1 -d9bf387861ddb0270e8e5a5c20f88330 -d9c2be38f653c9c030b660f877713560 -d9c5df83d79297d85aca27e9f5f7373c -d9c7dc5d9b94a8326ad7962465e015c4 -d9c92a63b9cb48f9ff7c1ade81bb0f0a -d9ccae412028236e3fca5e54669de2ac -d9d159dedc4f123682a3fdf0bae695f7 -d9d4734371a8ce1b6ce4d45138d6128f -d9ddb7bb15203df335026a8a87af77fc -d9e4bd6fe997ed4ac1b7710d6f492c8e -d9e8fe2225abdf639c66e62c910af000 -d9ed76c9c7c4e0790da52da24334044d -d9f448a4a538efc0c15127b357f22933 -d9f648b08499bded3711ec7752637f68 -d9f8064cb0ae2c19f94d07836f71f10c -d9fa886c7a1dcf384c1d13398cfc86c3 -d9fce3ccd61acecf2f114c6ccd6f676f -d9fee879d3b4dc8569d0b92ccc70b24c -d9ffc2214cb1b572cf5f9fd95493a177 -d9fff24879c2ae56aa551a2792d4f191 -da015c0da2a905bb7a165289f1fd04c9 -da116a76dd54e8eb0bd559f0aa79085c -da117fb3424f02b5902b7c1878be83bd -da15adc1a58c0477328905c56fdac63a -da1dd043ed8262bb424f32bc891cfb50 -da1df7e00cba46c40f26e209349678bd -da20ae228d000b845e1c32818a57bed0 -da235c6be077ef9fbac106596eba74f7 -da239647fbbbf7e686275d77231ee388 -da25e4d8c742c40a86f176a4c4e104bc -da271761571e30907a2a96e64a917f67 -da2938f3b3242824b1d0ab393e4f474d -da2bb2af57d6a1d9eb7339e675b5fcfa -da2e30e28a8b353e189aace6dcc32d4b -da320863ddfb53f82904f8e823599b99 -da34fbc2344a3d97957b09a378067612 -da36ffc316d799fc186208b0dd1212be -da3c0d8e138eb0d03ba0813c30a83ccd -da41fa18ed9b90e425871e01387e57a6 -da54a9b3ecd8389722541782b03b45b3 -da55cf117cca98d21df71b1c1e76b969 -da56f16c1cc41d32c6b51292a02de826 -da5dd3b61f45fb8f92ba674c97cf598f -da639687e098146d971b82eed720f69e -da639b640c8363df9e76088a7d07eeeb -da65596e663dfbb244373f0b0c3a3f5a -da659a5b63e119351854180407f42c70 -da672a544ad96b3e608007cd3c7f4921 -da672ed427f38a6f884e54511eaa95ee -da67c432f5dc1d5b5f0eaa03adbb2952 -da6c9b0404cd62b57e6924498eca7c1e -da6f69e0c136ed7dc06a6541df017734 -da7009825aba045da4fbedc4c6be2612 -da79312dc127411b1b58546f2cc0ca37 -da8346484f94a2fdb2cded891d9c92db -da855fb318d92b8c51306391716be430 -da8a0e3215f61c34eb4bd200a679e06e -da94e417ffb03376a5a55ca8e92a9108 -da94f39ac31f5b6caa73a8448fcfa08b -da9689abb7fb09b7885d54f7732f8683 -da9fa15f9b5364c306170c42f59ab46b -daa41f8e8f6ad65fe5b4d29d2052ad41 -dab32670615455347d203105931215b6 -dab4529d15ebe49039f70451b09156b4 -dab5794acfa95a929396b911438c3571 -dabc7de2f9716712ed5f499e69d83c9e -dabe3ae3f63317be98d69123160bf3f1 -dac2e148c0c0b58d00ff607b1662918d -dac31ed8a48236485f436ac0b7a03ac9 -dac5d2c2cfe708d572111e22edaa22ba -dac8396b64655593451f33c37e041442 -daca9a57d70cc3af4abe00bfd2cc4a6f -dacaa820f7f3b674eddcbc8e662499a3 -dacee3042e8d489e0ced87e8e86a5a14 -daceec2e69a3943679ecb4cc3e66308a -dad2d756f6590f787b405b60addf2d73 -dad992b172e7dca39c9f34c54adcf593 -dad99b3f96802b3a93fd9752f67f0941 -dade40cac8b541e58189d8137d5f38cf -dadea8506ceb1792fa4e2f6f3c1cf302 -dae29b6baee87fc25365b1ec65925215 -dae7b5dbcae8a5054261fc039822b183 -dae899bb43c62f0e2506bf110fd1f779 -daf6a428b0bd511c94e6bc408e2335ad -dafad16a345c8ac4b4c2edd065919557 -dafd11bd033e0dad4a97eae736425c5f -db01f2a14f99060b03a0195f901fe2af -db0a8b61fbf4f95f9f74e371fd784c41 -db0c9fd41efbfd05e96d7167169a56f5 -db11d36f80e623cface30b2e2cb4582e -db159af80a0790e4b39b7db1f654de03 -db159e34105b8c7d17056feb288eee22 -db16f63e8f8a0f1d9d363966aa17c5bb -db1948bb1255e12f1ff303402f7982a5 -db275d2fcc178d544e3ce1c1346de15d -db288391a1cd116d572fc99d415f390d -db312b92c3079d6012d373daa48a71bb -db36eb30437f8346ac31aa03b7961b89 -db381b4414f950ad7bad1114bbeb177c -db3fec346bbe722c3f312d6b2f19e2ba -db402d2185f55e32b9f883696ec0ea51 -db42a535ac61a9a68f0caef2846109a9 -db4bc4ca97e8045350a1fc2000ec59f0 -db4fafaf6dbfb03c4d626d46b53162b9 -db50adab8d6255bf9b9da5ffa8b9a97b -db51263ce6d0ecf6af166694b13852ea -db54fc06fbb20aebb6fa9e649c7748ad -db56448652d6220290ebf630ff41d182 -db5e63928a133666181d5e00b3f39d19 -db5f00831622650dc157ffa3267317cd -db64ceb568034016521ed4edf5353b23 -db67bbea5cd9bde353b2eeed70ede5bf -db6c7bf1a8f55f77612d2898e7d42c7b -db70741130bda77976d73d4470c8bb02 -db7156ebb69fa994380b1c41b3c3e4cb -db75e3e59bbc0a75e17a82cd71db70db -db813d7bbc5df85a7fc1f192409395ac -db81e21b96ecc18eaf26bb7127e4c670 -db82ef2f6b0c96b5ddbb7efac450938b -db84fae54874a942c58d5794118d1636 -db874e75ccbc554508fff8787f431bf4 -db88fa27797cf8046f0edc3d44fbb5cd -db8d1f5d185dfceb5cd521985507e70f -dba06e480bdf156941f7b008f60af61f -dba4b314619a8edc321bf6cb7a5013f7 -dba5596c284ada069d209ffdcd2ad120 -dbb01ef825d259379c4d17ac445f76b0 -dbb55b662faf07b01a533b27305ff452 -dbbcc2a005d39fac6e6ce8feb608544d -dbbd55cadba12d8ec4dd9bf02db8a614 -dbc7fe03567b5194977dd452f1cdd398 -dbc863ecdd8fa766b5d59f73892fc8bc -dbcafea449c0f3304f7c6cc766debd31 -dbd7216d2311348f0339221494403b42 -dbddde0ee1c10d12b6f9e3bbef0e00a1 -dbe5e1608cee5fe4ea900118f678b8f0 -dbed3701dadbbaf0c9dd23f08cdb44c2 -dbef81613c8ec1b618d2d283bfb9a986 -dbf08bb9cc3c92bc32b3f93a52294060 -dc073e202becb13926f081c685968a1a -dc084b2e7d1ce0e4713b516397635494 -dc089447ccd12345c41fc8470f964546 -dc0a06a4957dbf732badf8ed45f3e789 -dc0a7cc1a21a48f72e7f8dfa27e862b0 -dc0aacc043e2eec0382e698a4f1ee837 -dc0b28fac11c8334d63906445faa92d9 -dc1199f92c5e8a23d0a1b66988c2eb1b -dc12cc64f00fed570edb6b215797a201 -dc1503500d1029e34a9009a2d1a1b085 -dc155cabec2219e6500446168c7997c2 -dc1b35c8ee24d6de8f6ec6866061bb2b -dc1fd54ee2cb7e1d321928e92247ea6c -dc20ea5ff120bbbef60ea0b8651be8f9 -dc32962228e071960925747e5a2eccff -dc36d0651d2cc30bba8e56b0d485c933 -dc36f1ed17eb4d07263cf41611de6237 -dc3df1656148345569640fbe214a886f -dc3edc1ac37d1cf5e4b0d61925cea2ea -dc40c3980dd022397a182d60acb35e61 -dc41c22cf4598807e5cb167e0feee00d -dc442186108fd55f035f916360473c48 -dc462a628c89d49e514a870ef732ef32 -dc4860916db188163e8f67ca8f27a07f -dc4a3573d9c08eef89b90c44b14588ea -dc4bc118e23e124f0f2db44d0b10327c -dc4d83d3fde64665961bc026591e3a86 -dc588c04df6c43a328da7b0a7606fe7e -dc623ec50dd523e623ec8b7515da3a29 -dc6ae39a553d69a19983616c2cd10806 -dc6caa0c06f1bdc6e95e762a3d19c895 -dc71ebcdc321a4471103977c22f4e710 -dc74f462437de1c8f1c0da1b5f638a1a -dc77ce5d85c95afc8013c1fa195c815c -dc7b37c7452174a1e2a3333ff289fa04 -dc8b33c33ea2f65013f829b535cf5ce5 -dc8dd782cc06b269bd30b3cf43774e43 -dc92742f5a003ef6f6fe05187408a0be -dc92d108c4186448708534b646365d33 -dc94bc37a9b15fb57aaca762133c9219 -dc94e2aed50b894979e6c9f72b7da8f3 -dca4f8c3b93243cfe860aa3d8d58c68d -dca7183b4100f2a7e537aaae93814a89 -dca8e4173257f70b7204e1eaf42851ce -dcaa5248a1461a6ab52d910a49f89d8b -dcac01808e0c49fc03e010250214b12c -dcaf41fbedfd6e6eeffeb3d9fab31f3f -dcb620a490be49e0416267ff80d70ae8 -dcb89678bc5ee30d5a8675d09700f138 -dcbbdf4d5ceaf6b33764b81c8afd1672 -dcbd9b9f8fb42e2cd2853a9ee0bcee00 -dcbf3b4497516ebbda068124980faefb -dcc1996721e40fefd67b57684f96b751 -dccd23356a401b3127e35fb99fe2afb9 -dcd2d5640c9ecfcd8c5182ccd55e97c8 -dcd370b7b603ca88bd2b9d74de13181f -dcd3de39f563d065bb4e92804aacdd3d -dcda185cb4ee1a1448700d41d4a1f8d0 -dcda60571a0bb13062fa32602b98a742 -dcdb6cbaf5ac8ab194e17516bc6cf772 -dcdd1c718dc683402e5c98c80526bb56 -dce1500b85c35226895248395013f472 -dce30d7682ad8e5dcc1e48ae60d3d366 -dce89b1271e28314e8c03a2ed674dc98 -dce9d74a6ab0311ca739d1e2dcb7a950 -dceaec176112fde09502f50f0929be51 -dcef81773430a6f0e4f1bed9b68b34c1 -dcefa36800b739023dba2814e5dd4243 -dcf2e9c3088d5e9de3605189cf70537f -dcf39fdfe3b8fe7209ab84f668afbaa8 -dcfcf63a407686db00d59a883a074cd9 -dcfdea73a6ccea8094fa4c500bc6d67a -dd0288d3fe0ab648e55ac420ed251839 -dd059d6be04d0326f33d5b91ed1289a8 -dd08176e62163548a0d0901a51e6a5be -dd0c763b8c848f2e845bf1ecd8458647 -dd0e03727457d252ee3f88d2b283789b -dd0e0bf4ccec40665ccf3bd76b97d348 -dd11adf929c0c1498b47fde9c2189576 -dd123e8193226b009e42a7efc18b78b8 -dd1dbfb858f5fa6943047f353bd718ad -dd278ed6f28857516e5f901adb367e85 -dd2799598dc410ff1dd05d99a80faf25 -dd29c41cdcd4af9aed6113021c6df120 -dd32c17440516a0ff4ddccc6284bd24a -dd348a50548b0b7f89a317855f34fc42 -dd35ca6491d6702f0fb2a6dbe2e18fec -dd3a04cbe5de2815ff642afaa1fa7306 -dd3ab8b9e7ffbc43d6a6935025af81a0 -dd495ca3e2f34e577044ee179210e729 -dd4989664be488445564dd6daf18f2c5 -dd4cf29506031e4f3719a7c782ecb649 -dd50aaeda6bdbce1083d80a33572710d -dd51e2cbb8134cd5481700abc6ef7d66 -dd5afd2b56dbcb4c4f987aa8f937b2c5 -dd61ca9daefaba0316301fdfcc04a571 -dd63ad35ab38da7ad093a0427942989e -dd6a4c4db3fcc9ad7b87065e9f36b4a0 -dd6f816fb5e0a9ab8ce4123cc285aa3c -dd6ff33e6e89e243d26b267b6f366db0 -dd752d369801691f99cf4c38f40de786 -dd7ac2e3a6634c5ed70ad034d14f66f8 -dd7ebea78c8296f89ac10f6654be437e -dd8541005934d67f437b66c7d5e05a32 -dd85503d98d0c7eaf6e54e5b9c24c3eb -dd866843e3e009fa0bb6ec152d11d5d5 -dd87163490d3087e1db4e611023ccc72 -dd8aec773c0928e55254f3c81c2a6d0e -dd9055130f5ca072135b5e5dff23158d -dd926e79d01012e0a83d7b539f5dce5e -dd93b4f911f45ec22cf1866245245b3a -dd9b7f1a65ee495486e8398506bf0c3f -dda133c8147959ef9035b9b234d5b399 -dda136c29ab46a9aac36fe53ddf1af0c -dda2583593896c005113b4c4f35d918a -dda397fd278cc435fae4d4f0dd65ab4c -ddaa1db63e4dc2e59f55b4e12ac8775a -ddae9431eee3e00e648b159bca5d49cf -ddb3970e49ff603ef31416ede140671d -ddb9c9c45fb00c52ef608ad36db7371e -ddbaea5f6ca3f2571bc48ca2014e19cb -ddbbde185b36f53af6534351c8b04e78 -ddbf48516bd4abc24b3cdb057928e02b -ddc17ae9986d59192261c9a238fdb2e9 -ddc1ba315f29a1a999a36f6c4ae562d7 -ddc4327949a90e273e310d18201e7980 -ddcd1b70e18c86ba60b3d21749d7cdb9 -ddcdfd1807601538b41510b82fa7f4a1 -ddce1e84125e7b35ed26c8d1ab868721 -ddce2180972e10abca55ffbf332013af -ddcf03f5b60f1692432331054a2a14c0 -dddbbfe116d2bcfda7c629240fb90c36 -dddf0a2086151c9c013a9686bc3de760 -dde1eec25b56d235dbc995b59fcf4b3f -dde79e63019a6b57ce4ad81c97eeaf43 -dde9f0f95789b08a2ce840cfb773c864 -dded62310346ad81d69d781a565d0440 -ddf19aa882554cd4895337aec2116e6a -ddf30078b81043762be485070d010c15 -ddf30867e223f75b1078cd0a08b2ade4 -ddf33eab404f97de4bc552792d6c803f -ddfa145337d10448755274b4241fff3b -ddfe32275d0d4379e6f1532923f5427c -de01db1879ce34a1b1c7b5ecf89f18fb -de0547c068ccc028ba4cc1f28ed915a5 -de07245562d4661822b66aa05d465a09 -de0ff48c7ac1f0c553a1039fe1799982 -de10be67335427634b5fb97f0f9d1df3 -de1198bab70f9882fd864b71b355179f -de131c6b6dae8357780de01f74e755e1 -de16391d75d26c5ca790ea8f62ba36d6 -de1bcc8421481f9c47046233eebc8ca4 -de20a88c3e30f880dd16b26dd6a6d9e4 -de246368ec1636601f2b08045293d32e -de2932aaeb6f6807a55af5801d67fb2d -de2e3bbac961a3f10ae7c24ef0f368f1 -de2fbb79c32a6406c59f7b5437df94d1 -de3050cb40450ef10052b8bc9ff731e2 -de32caadd2e24037cfc1bb83dc8472e6 -de37011f1fde88f49c5830e00367b198 -de3f681e2786144b299074fc7565e5ea -de4a0ddac49443e3e21d9c9d8c633e63 -de4a0ef8a4b7c887d4a310ffa443d80c -de4f23598768001464d65dfc43eb8577 -de554b9cc5d266ee3f5d450df524d122 -de564aa0aba000d9fcd3af471a9af13b -de565d8981d734e4fc571fad20985cde -de5fc7a92c45e0e22998f3f2fedc37c0 -de60c920997b1cf8b69b6b86f46ad728 -de617a8bdd5d8ba456a3b9863475344d -de6296763515eda2d9daf40af0aadb35 -de63eb8afb9b7dd56df2d0bbae15a74e -de69f83dc878641b593e4fc9b0e3d44d -de751b709f583e6b0d28c0e210af6a8b -de7631a56d2af81e91e3619475a1f3ef -de7747f182f7b5ba4ab253fd90922955 -de787d032e0d3faec43c86679039ebad -de78e9da25ab8f989e477d49a8ca11b0 -de8a1e1d32efd109608b02bb48fd445b -de8a8e0582af19ca7478f70d7907e444 -de8b484401b2befdbab76788f78b9cb1 -de8b9020e9148c7d58056bd00ca290ba -de8c5f3ae2caa5567b918d72136cf3a8 -de8cd9abd8a6b8564c503008fa80b454 -de91283b7180955608701743f0091c26 -de9a0e43a4fd52abae6862ac1a630d92 -de9a25066f54a65fdb62a4cae47bd867 -dea4fee031794d66d341862df3654022 -deaa938de1786d65dec07594d01fe74b -deb3be931bcb7df18211063803c0de66 -deba871f40d8c1c13aaf872a07bdacd4 -dec205de8532cbf5c79e07c60e35aee6 -ded1b73a2d6002eb39ab6077c2197c21 -ded87742c0f6a2ebf4849965b34c38ce -ded8ec58f5cbfa08ff2ab2e18eceae45 -dedaaa87ec48bd46dda3139f7c825b06 -dedbdb50ca1449a559aaafdefa8748f5 -dedd758cd74411e6197ac8450f0b983e -dede891801cd3501f20daeb3433be0ff -dedf0c6e26c9deb35ad213fbd425a2e1 -dedf23bd43762b7927c074f4e8379824 -dee76fb4736a17b55583a721fe3ec5df -deeae1b1a201074d80153c7507112477 -deed037d7e9e6c2ab9205b8623da4e0f -def028c3989b155d3942d50cba64836b -def32105a69c6fe37a9e75b2fe8fe959 -def4aec227096bdeacf937314f77fe88 -def76bcba35ea4b022fb68bbcbe08f49 -def8f962911c7a8df854654701074f76 -defe914b5259e9450f4518e01fe8b127 -deff411de717292a4449e17bfc04fd07 -df06f38a0db8a7d57805069f370d9988 -df09e6e53ac27babf6f886d4afbb7533 -df0a3de0a4e396179c9f6a104339c3bc -df0c66dafc994925802e36bddd8ecbec -df10eedd913b87e581db3085237276ab -df1245c2749871f109adf896a6236bff -df17194df770e656f5077692b3a22e31 -df176e78ee1cba71fb014b593537633b -df17d47172c7a01302b8658d701291f7 -df21045e74184d31e194e31878089d07 -df22d0a2069ef9ffe206e01bef802b00 -df23da74ef635a9b9a27d5f5be3ac7e3 -df2657c882d35a497ae1157ef961d59c -df310647dd51a6d7509819882e6559a2 -df3201462cbc46d3aa65632d1af62448 -df33fc7dfe8f57b39e25fcc4ef2cdc77 -df441578be29e676816cd63663c358a5 -df47cf07a3681719bc6e14b20ada82b8 -df4a6c78c48b82511c37a166911826af -df4faffc90f0f8a569fa0daf74a798e0 -df53e6f78306c9f78cabec880d0cb00d -df5fd9144497a43ee399795728f826d9 -df60b82e4507b29c624eb11d3a140ede -df656f3a841824d22db04fd90baab1e6 -df66a48f0f16e45790df85045e3ba56f -df6b53df196526d36fff3c9114d447d6 -df6b8f0e1739204f9c19f61217e09b84 -df6ca321440ea9a8061bcd0087dea18b -df6d7389e0adb6ea8b2856e54bfa7859 -df6f8f9e54144fa6b513a6bdefc9855b -df75a9ea1641de3092b574e13c4d7f66 -df77f94458fd8022f9c87a1fa7df2603 -df7aafe1d05bd531a3d078786036bf8a -df7ac13b87810352dcb205ecc1e16199 -df7b853289247a694ee7d76abba0d03c -df7cc04ce020bdbf74e65464e578166a -df81dbf87b910ae1f56cf0a1ec4710be -df83009042a2d4001174c58a7c866b10 -df84a395884b4c7744bcff1683c672fb -df8c05c8deb00a4a0ea4d11b2742cc8b -df8d594e7e97ee4b8692f6686b3de2c9 -df905241da642fede0390fa167a84f25 -df956cc9889d3aa1d92667a16cce778b -df96ffc1feb7caadcf58b422be65f858 -df9732c3619969119cb9437cf236cff1 -df9a0d769276ea02e7ab6165ea249cad -df9c566f1b96fbac185b1623c2ed9cbf -dfa0c96224e1a751342e50a942db37d8 -dfa1063eb6d5da83f55d7ae43e1749da -dfa58e87b531dd0c7807b66d4bf41c89 -dfa5dacc7ae751885035170484b8e5a2 -dfa851bd53fa5fac04146e4b362eb0f5 -dfadcdc2bf043ed3d889ad9a2d60446e -dfb0d67df7c8e5bcb50099b443f7fa47 -dfb34e8476804d45586eeaa216f343ae -dfb3cc25f84edbc4056747a76ba6d8ca -dfb5dda48c3effc9eb646f1ff5833689 -dfb656bfbe38b9f1af726f480be1ff16 -dfbae1161cebed893da94d8216620565 -dfbd466270d3438202b1fe3cd3b62da0 -dfbf6ebee47ec23b8ba68246b7858f1f -dfc166b572e7ae3e8e91803b12edad5c -dfc28eaae27ee5bdc44149142967998a -dfc57e405c60c3d56b6273d9cf63c085 -dfc71755b1a7c63256f8081dd3c347c0 -dfc7c11fac1795c2b45d63b796b347ae -dfd31a45e85b83980a7a49b55be2150e -dfd84953139680963f110827563084b3 -dfdcada913dd7243c314e9e2cb207ec6 -dfdeffba346e7bce90b684fadc21008c -dfe4def1d8d96925ffc2dda3f409136b -dfe5fb42ba963e878a7effa076be3afb -dfeb9f4ae93eebffadf26ea17f735a80 -dff021af78ed0f8bfb34cf469c5d25e4 -dff21f4c6efaf39abbbd47b6c5b15165 -dff7fd3bcb8e7d4a00ff7cbc27f8a81e -dff9e46afd2703ab80101d3911da84dd -e0034292299df09cc7a9924918d51bd6 -e0090608f2961196bee84f3c358a9126 -e00d1d7deb3663032e4b7d27fdb69b6e -e00e6ecc0cc7ca58e38ad55fa9d0f71a -e01f4d75140f0fec8f8ee039b956ce81 -e020d24783462fba39456a886632f123 -e02103b229d71bfa5badb2113b905c64 -e024c22940b2144a024a33b1263e1299 -e02a8983cd9c76a3f8cc058e4dc1bf1d -e02d09df75a76bcba5bdb4fd66123c54 -e02f207216e7a4be0523124c8113eaa2 -e02f848678a17e3ec55ab71cef8ff786 -e03053620a2c864e29cc869480479009 -e0384b53a969975eff9fe0a12c7a7a0f -e0390a0a5946af9c9a499bf63eea7190 -e03bbecc3082df3f8ddf33af1901c09c -e03bc75ee54931413973f2369eef325f -e03edd6ec07f052977e800234aa84a61 -e047459c0ff805c8e76f3e7914f3e015 -e04c7f6fb3b6dd143f343174335dfe74 -e04ce4e7c29b6a2457ea0efa1959d160 -e04fa089501a18ac2b4e0bc5e829e781 -e04fb6362dc2a0c64a069c78fa497fdf -e0514f0005dfa6a66778a37d1b4edc3a -e053b10b07c14b18f409ab739497b0ce -e05516f8c1dde68e9e57e7cf220b7f6e -e05d0ae404b3847e4042d0a2f4e623c7 -e05eb43bd5caa91fe9f43da061b15419 -e05fc08710cf39a8a77bfa9c73cb1a35 -e0657178bfb5592d0d54a51a9b072206 -e067ec7f5596010fe8eed689f1a4551a -e068245fb190bd10b9c69cf3103f88ef -e06feae7c7c87cde1591568b51696e49 -e072456e566556d3006c7fd12bd65c3f -e073134631cdae70973d69812d72a889 -e0760311578e43a7584671f1b604d7bd -e0788646d8442493a2667658df290519 -e07a2d2c7c2565cebdfc7db42bd47fc1 -e082b78e67995ddc852c7abcd67a479c -e0869bda88b43259b0e4bf541ce94e5b -e0888f01667527d9053f2d00cd6c7a40 -e0913abdbb32ae0c29d135ebb03e7bb3 -e0943453cadeadf44136499c28af7929 -e0987a10ea251bcba5e9cef0663753ea -e09abc06c6f6c63ac7e99d5767335898 -e0a173cc77785cd18de84c8c76492813 -e0a5430ea035205115636b4eaa6147c0 -e0a92e5aa94ec315007216c610958aaf -e0aa2556cf77926e5113ed2a456e76fd -e0b3bce828e4b58f5792a13a117fcab2 -e0b3c0697b5591c4b4b4515bff54abf6 -e0babd00947264a9815dda7574f0eff3 -e0bebc7db2f9f759c4658e7fd4c27ed7 -e0c612d59b93a52f528728a9c64cb780 -e0c685b3aa6b892a7578e2850652892d -e0c70052a2a4e699ddffe2d366b94ab5 -e0cc66e91efe3cb9d861149e1b1b4c51 -e0ccc6b9d327a894ba3dcf370809df68 -e0ce5a01525b40a00bc3715849da8bef -e0d28d7d7b95daf5ddc831c70471301b -e0dcec7f7326e8cef57b18452d253ef5 -e0df5d05eeba615cb9544074ddcc636e -e0e5357d1d66d4f4fb8f135b78a702c3 -e0e9441f12b5d9caf4e4308fa81b24e5 -e0ea8b4057a0b5dc963f1b70c45b13e2 -e0f4da0bdff9800793c01a5ddbf299c2 -e0f6ea97498c3acf098d1fc3fa4ba1f4 -e0f7c7432279e524126f6ea48c8d1190 -e1031ba49216077cbb1c55f8590f3ff1 -e103b7845ed5396b68d8369240aec0e9 -e104ee17c4efebd6d3f1ece3ab97f198 -e10b005b0f530f3d9231085ffbd3cac0 -e10dc4d66e27909df7ef76c13be36b05 -e117de4e11db21ea84f7209117d6c534 -e11cf226cfd9cdfe92e05816eaa07151 -e11e28dd6d9fe4c0ee2bbfb19da912fb -e1281e67b956c86dddaa877ab8aaf5bf -e129166405474c7f5a84119eb3466e38 -e12d75db22c422d36f6b20303b1e5a5d -e13686a7e67f2446d9881df2815c2199 -e13686ac1c3c22afcd50ab1cc20f8a17 -e13cf245c47077ac0497ffe7fb0b29e5 -e143abed68083fa73c294fb80c24419e -e1466559711836355f080b160669f5fd -e1467726e910c03358c7632933680546 -e1480fd076cfa8e48b9a57a71733f77c -e151adba6fd9363b7a4881a705bd75dd -e15bd12a2d340650953715dc91b3e550 -e15e95f8fbe3c4133b6f4396be678601 -e1607cbb945acd35b3c253b765e56d71 -e160b16a52e2e3d54c530770e9cfd0f9 -e167d50236c9fb9c04ba7bf071293511 -e1684d441133b33a0aeedd8524743e77 -e168c6c0ea62d76defb62d68587e3abf -e168f615e4141466abaf19d415f27699 -e16917ccbded4b8528705396eb625a03 -e16be6c84ff76df369713bc86c153873 -e1722956de181dbb662aba8e3a0f6e10 -e1726ab6008bd6c519201fc5cb89e56f -e17305e53c65a5f3af933759d899bd9c -e1740ff79784f9d33be7c7b186de4082 -e174389739925635be168271776296dd -e176680ed99b0150ab088aad59a526e0 -e17c444ccee49e2c4a803010692dcc89 -e17d2a87901143319fee1025ba4aee43 -e17f8f95194d0dc3c779ac314b5cbdd1 -e187b6ed58163b25cfd6338f92d98067 -e18ab32d7c43cf6670407b3e8e9680ca -e18ca862a988bf58a537a24110a1ac49 -e192ac2514ae0722734bcc964a822105 -e19e231516228ab626c8ba32ebe89da5 -e19f2489582bbe1a084361fbea9ff04d -e1a11b1fe14a9a2f3f89d9fae3300285 -e1a39809b8e30016d7521a4e49a1d3b0 -e1a451ba38076d2394ba698af0b01521 -e1a612e4f739bfaa326f128a8013da62 -e1a94f022eb43bf9b58abad10cf613c0 -e1b0e80443e69a8bac8f210c446c9e0f -e1b15cd3448c8f95d5b27617e9491091 -e1b4d8000bfbe87f7cc5bc02eb858ed2 -e1bbd97cba5047b5c284eebccf720da9 -e1c3102eb2e47c21348f6eb52245f5f8 -e1c70fe46d7f85a16abf8796cdd71986 -e1d50559a2033212f6d0e2936217eafa -e1d6503a1874b63826bc861d9fe30966 -e1dd7f5cf84b2e6bcd5c7f5c98243ab5 -e1e02ecd25f989dd30d728623dc66eff -e1e3c67ce126d9579e29a19ff74a1fd5 -e1ec81ad17116b85d1dedb82a63022ef -e1ecd4ec4e952d0f416691b88532e121 -e1eea60854e6c6651e295e93dc9f0ac6 -e1ef12d39fb4fd9a635da49c03e157f2 -e1ef3c28b7ada72501a5e75fc160587a -e1f2c2dd82a1f75a841837d3cd593be2 -e1f3d268e215382d0922ada8c7232c84 -e1f67f8bc0ee70bbd9024158d63056ec -e1f6b1a2ea8b1ee5d226f68a5afd7321 -e1fdcbc61068ec6dd3517225a97ba299 -e202ea8e8621a5dc81e83d45247e2aa7 -e204d50ae85954a29bd48338c340100f -e2077f25b8b4860b6ab1097921e95062 -e20b5a2642acc6f580f1f8a07d4fad53 -e20f9d9e4081de967a22f0068922c349 -e21116620a622a6f4d487a0cb6c7fc20 -e212c5c2714593ebac12171ea63ae890 -e216675592f289e67ace39ce4b07d20a -e2191dcbf0fed4e1eff9825c8c51f4f8 -e21cba8aaa06f5862421eb971d0eb15a -e220f9d32edc685f5269851d37e662c9 -e2215c540adbb136ef12b3d6c9772830 -e224791425eb79e10b6e1deb4d092138 -e225716664eb621ebab42107cb23f75d -e227a0a5ae135a02f5c30e32b36d42db -e22b6c7d30473d655408931e31018a4e -e231cadefe8c2794a7df1907386104be -e23534ae42495d891ad3664ba07b7495 -e23a6c419eac71660b98db978adff3fa -e23fff21f4f11053809523d50dfe88d3 -e242bfe5d16e0d156bfb6806d7b6487e -e25096716e8097a6c146cf4aed6c1d94 -e255e0bc3327380ed5ffc569a89e458f -e25626d550ae59318e49c8c1e66f2d84 -e258bda5901e4cb1a10cbb8c480b929f -e2595c12641437d9b0f9de1311232789 -e25cfb5be2e3db658878d2bf3ff1d054 -e26051b77e64187222b8c19a26c15633 -e262b5ccb9f1d574958a898be0f4df18 -e26f7342541843091e576a640213e616 -e27241798eaa9530bb991584e235cdb7 -e275417ac0eb6df75f36aceee84c5852 -e279f201542c25f87cb10cfe044faaf2 -e27a87e9be5af4d93d8eb84cec8d68c8 -e27fa0fc9348e5f700838f5ac30d5781 -e282654f19aa9699651abb3877eb324c -e2828eeadb3c422a2392e04c9832c2f8 -e289c199e966dac47ed0abe13d7f76d4 -e28d581ef4bc736accd5cf251585fd4a -e29c5bc36ed2c7db847d2205c89e0cb9 -e2a1854a6cf729c03e7cf7f3b3b1d895 -e2a3275c45fea4000a91cabb0666ec49 -e2a3d0b75aeab322d99ba2dad5eb9e52 -e2a791ef335af2a605e44d63bf14a96a -e2a9a76c8fa229211c17b209945ce718 -e2ac2df84466c7931ae1d4ad0b990443 -e2ac55f6592c656f8ef7bfb68d93c7fb -e2b04590767725a6361b74db7bda803e -e2b18c0c4eadb98230055576750ce4c0 -e2b31e3e00cf10f1b4a00f0695c42960 -e2ba337311d0fdb89454b4ab12fe8e86 -e2bb943cc966845233f550ddc514a3f1 -e2be05c0ceb581653fafc5e1c255fe02 -e2c2c9ed68c3b48e2a8ee776c7bd3a01 -e2cd5f08cc735d38fa7b6ce3f4858bbb -e2d0fcafcd4f51d955bb0c6b852e7091 -e2d4c547105d28cd29e014d442d77a38 -e2d53f79bae5800fde7cac8bab87f5a7 -e2ddc8b72e727b83bd8023d4110521b8 -e2deab68f98ea7dee9ef77828f32a342 -e2e177c543d67a73541fcd3256a19cd3 -e2ed8c65c8b84bd04a85ce4d5ae4b083 -e2f0cb086cb948143159411bf0c4885b -e2f863ecbd58e91ce6071ac8d7c85fa9 -e2fdb193213f6b209e12e99fc81fe96a -e2fde053cd315020ca374f7849196080 -e31496edca2d7403a2d872156fa2656c -e31d1e1bcfb7f14da4896b9bee5503ec -e3216f1d588c98c21288a11206e87702 -e327c0b7ed7c91cc728b3b7e8ba382b0 -e32aca6287cb252006a3ef32f137badb -e32df8002f780844e29e13da1bd03c47 -e3333900bda3f3078ad7c8d9e7f5181b -e3355f0eac205901e820a4112804d0b7 -e33710f04225e965ae9175c7aab48280 -e3378f21d334c36692f1aa0a6841c6f2 -e33be30a962718c8d98329adaa5c1956 -e33c24ffd26c47eb452ffe9d9f251f77 -e33f30f3c27425900fe2b6af63386b84 -e34111218cc6caadb783620a40ed9d03 -e35268112656c1bc2434db062c27bf28 -e3592d5ac9b531b5089d6ba4c07fb754 -e35a0dbe76bf10c29c16a176e585bb54 -e35c722339662e24da6e284cd6ec66bd -e361409cbe10c49befbf678f2f23148c -e3640c7e7a2f83ff1770186965419a86 -e3692d235588b448f2b2a33699a69d93 -e36bf5a49adc0c10e925446f86993362 -e36d817264a857ed1ced358323d32629 -e36ea3060194ad834d2f86228ae75bea -e375dee1f28d55860f62e4cd14f4eb15 -e3789566761f923b35384399e6c7b710 -e37923d1e5770565af38461ac47f1b51 -e37a7ce5127dc268a88544a8dde82312 -e37c1cc10e55f30d98c651f988e60c1b -e37c888ee08bc3cd99f727d7e915fe05 -e381e185748237ff952d31a991a3bb2a -e384dc712b81a1173ecc8bd6922014d8 -e386612bf485ec793e7c06d3a18921af -e386f3b967fcaed24e072e4e0c353b61 -e392521c44f4b91367ddf872f016f42a -e392cce1253454048e158c0cada26bbf -e3952ad396d1e0b41996106990d6a6fe -e395bf165f8221d077e63088887f640e -e39f46d0ed673559a0c02a4786cc5f37 -e3a4589351c84a45b41e0576fe4b8b4b -e3ab6b0f5242ac6e8e767a8a60c72587 -e3ad5b8f4b2d6d829bb60e19958e2160 -e3adbaaa415710896162398868274dbb -e3b60cfc9ebc0bf71317bd1c4af7426f -e3b62884fc04a4e9e6b5bf95fb18827a -e3b79580dbd00c033b9d6e593801b2c3 -e3b870f3fdb98a8062e622d23c80204b -e3c0cc1c8e9c4181d4e3e360716648a7 -e3c4e3fa987dcae6325af27336f4673b -e3cdfbec4940dd075b19f0e40f95cf33 -e3ce6e72e3464025f5b22109e68311f8 -e3d015aaac7d9edbd55f618d55af8444 -e3dbe2e171ae1a58833fe5f31650ca2a -e3dfb56dcf6b6c7f9e37436d9121cdf7 -e3e558ceec8f4a2fba8d0676b0eae28e -e3f056b4f5db9d56f6b9d3c724055a8f -e3fac11d6e21127d44281b3590374103 -e40252054393fa8482d8edf63361b2f9 -e402592f309ca7fec20bcc6d71e4c59b -e4057f0b1d22ca4ada4112cbc3b9bae9 -e40b151b2ff1f384249b6ea08fc58a53 -e40ce85030c5bde4f0f32689ab921bbb -e41cfd737c544bce19a24819ab0e6907 -e42281dec89ee45a143158849c0bc286 -e426937bace9ce662a4533197ee50926 -e42c8358c081203a6763385628a9f495 -e42e3a759a7cb51ec7f53ffeadef724e -e430c80949d8625c1c23f601edc7c4c0 -e4311bd2bf5a53d850bbef42b9687a0a -e433899cc07b9e92788061593c699124 -e434fd64dc1cb7829af5edfef1459c0a -e438d559d795c5e2eb377c5aec9c1bb1 -e43eafa75d8d8ed3d536349c3c93b300 -e4459e68bc33c11eecce761d46d42be0 -e446fa34fc2cb59bc9e9b03af21117bb -e447981117fc89fe56f8f5b819c7c808 -e4480808b486c2896f2fdcdb6c8f160a -e44856b3ae33f237c1a66f1029a55b56 -e44b54825105ab45ccbfbae12c45b722 -e45340763a211b17b1311578539a3bf6 -e45ebd083e5a7d1449b84e2652f1471f -e45f86380b78306d79c18ef3aa4502a1 -e4607feced2ecd1d41898dabc2fe108f -e461800bbd6e237819f0d11cd850d361 -e464616c86cdcca0982cc12352d5dfb6 -e466536fdb69abb1e402d6d87da08b41 -e46b3034ea8405f98e9913bdd8847a1c -e46f820f4fc103e947bc06d94f3fca6b -e474b1ad958b6621eacef7407d388dae -e47665125e28d3b07fd4b5d3aefc9a5b -e4788769dd24fe0e130856e8a414a8cd -e48118d18eafad8aab2c81dd132f173e -e48312cdfe66a345a0e1d8e5d05dc86d -e4849d542e2890aced5e54b0edd1bbd2 -e48d4acca1e518156e34e560aadc44cc -e48e03d6b1fed07fb05d9d4ab7b5da9c -e491d52bc4f6ea4f9d88d97ededf84a1 -e4922987dc62b985a73fb25b3049ee3f -e492a8875d16769e04f394528c35759c -e49660f31c17acfc5e92de43a23ba98c -e49682ee83c07c3d791d5425890cea5a -e4992bac98a6ddb9c1876a61bf491489 -e4a5903794a779ff79880e395283f865 -e4a702cd3ef76a98695e45851e2839f6 -e4a82a117460261beae528291a864c13 -e4acb8268aa897f97065ac62793ca109 -e4b7397e0baf78723737fe74dcd1a509 -e4ba5918ea0f4ce2ecd07ec0e929c998 -e4c060abd299787cdafed8c410aabfeb -e4c85da362f699c0d65bab4a8547213e -e4d0c126e1169d57bbb094b7b3f88467 -e4d63f41676ab1e6cea78102fed9efff -e4d6998192e249488b6686df331e455a -e4d8e3b300f7bb4ac3e16d5c51a7c859 -e4dac23780f9ad51a82e20b4d96f7a22 -e4e37013b31f0cbb254a402f75002e36 -e4e4509285c7289b4b1c6d94be4eca77 -e4ecc5964fac8fd95927048a209be7be -e4f8243c13eb7d09b787fd56bc04625a -e4f9557e6c90b5b4e7b8bb492cba5257 -e4fc492b1a9f5023bea05106ec729bff -e4fc9ef16e0590b7cbff32167c9e1170 -e4ff098880ac4101215e9d6b82ff645d -e4ffc798d028319aa627d3c28c0851a0 -e5006b220f7ff16e35ece89956b31bc5 -e5036429a5b645a34e06ffd2545aa54f -e503b06977b4d643819844a3ddbfa487 -e50562caaaced22fbb1dd0183d904162 -e50bb5abc6798c3d26b883ebd7fd5ace -e50c70b32cbbeabf8f0472989357a363 -e50c9e6c20ba6460a387400f3fc7f3f7 -e50f9c787ec67aad3ba7212dd386fa97 -e5127b63ed3dd69583def2afa51fc542 -e5134c610bd2091b4aa4377351fedfd1 -e518cd68ae60a12422654e19fed8b6ac -e51a7be4da04c525678e9049ae039c1d -e51aee761ffd39e4dfaed4dca5335962 -e5271a5ca6303e6a00894f788528e04c -e5291749f9bad0b0c692ab8eef89be9c -e529daf091c04142332b1bb930a1462c -e52cdf813b3799cb29ebcce1e51affdd -e533d3e5a2a1631fd44c6aa8087d8589 -e53530f63447c911b5572fd9ed0ad205 -e535be89c7e8fe68e82992b672d65ec8 -e536578e521326314de9372de84840c4 -e538991bcf42897ecdec38751c509fc8 -e53cf13cacaadeafd23dc5644c359053 -e54333be78c06261c81519ad04ed2434 -e55211fd538fd0e41d000bfac30bf1fe -e555b7e6ce2f6a6a9bde40e7e299721f -e5568f12c288aa60096aaeb43e54f34b -e55a5f8a99398edb80dc9b00d7480b40 -e55d2b224fab319399932fa6eecd8828 -e55f70dfefe38daaa5c7b8e3ed403039 -e562c54cd152e5ca0f5f6ee92036bba8 -e5655b18ad79175cffd5337db5ac44b7 -e56578789e7f4338516035a51cb85eb3 -e569072810976ea6b5356ed9e8eaa029 -e56a110e77815b4afe38b0e5c3b45fe8 -e56ecbcfef35cfc312bafdeb320acf4e -e570b797008a51e9266d6b9fe70d35fa -e573dceb9d05e1dec07c5af9d4439efd -e574ff2bb8658c7d282f2c46bbf9b983 -e57d06f40f50fb622ad1e9ce8706af4a -e57e52fb37e7654422f59528cdedb0f0 -e580baf3eaf293d7cf617546ff51145c -e58111ccacdd78b2bc51e19a4c060dd5 -e585c60321c8beeb44fce427da548870 -e586846f5b0d459ec7c720a3febd125f -e589904a23de9eda6fce42dc8ab60567 -e58a5d4e72e0696f944d787ab1f8d9d7 -e58d072aa639557f1e5088b55acdd320 -e58e3cf6cdae67e6a0e3afc052513cd5 -e58f0391bd5b8744a86023f4527e5402 -e58f79a87ab2c886094fb3627e360f76 -e591c56738b10291a9b5f94a34638839 -e591e1cd123c401d9961ad14caa6b3fe -e5934f62c94a747fb0d12895844ca6d1 -e595a110c7cf5d3b5ff2d4526b2089bd -e596b23040bda481264e90e9cbb83c8e -e599c728869d89857fc4f22b6f79c9b1 -e59a2491534dd342506bbde5a0c8216b -e59baf214f5d7d289fa5e0548f9e9f70 -e59c93ff08124799ee5542e253189e62 -e5a89ce3fa86f38dcd944655431189be -e5bc69af35be536d42c86fad69c9b5eb -e5c4a005137394de18e7d77c06bd8071 -e5c61e16652d2633453dccce16a7a309 -e5c83c14032eaa0abf90774d0e780b4d -e5cab9bb6ef849ed4e3d2a1763cc22fc -e5cb0602703ec8133a7935fbdc452378 -e5cf58b5b0ab643c8142e1022451ab04 -e5d028d1720d6fb33d93e71d18925187 -e5d6766426e2e1b3f9de50c71ae1d77d -e5d9379f9d402d8c7541dae69de9889c -e5debc22bbd3e9e57f4046fa5d3df3cb -e5dec87a70f744931122a16f90fd1d46 -e5e11b2163fa91afd5ca01fbe967eb2d -e5e18cc92c3f47666816071742f9ac3a -e5ed576b5d9fadea930f5dd107e97956 -e5f0226c19b4817c6ad114e7a79d6697 -e5f61ab0ae1c5ea2a5a7a86e1a23f6db -e5f64ee143f76d964299f17ca0d270b1 -e5f9779842c967282f4d76f6e203508b -e5fcec949c6fd1da27d5c03fe42fde48 -e60194f66b520228027d063f4637cbaa -e609fa44a43e803b3d526478a91c4798 -e60cb6a5e50ae470d36a89056bc6a077 -e60f98a18adb7348b1cc73ea539e9e84 -e610a94ddf698913d6b0b2297f622223 -e61243b4adc611f8a3df2e9c062f161f -e618bc0ed55a72d4020623d86b283e39 -e621058f22ba4a6459d8c585690dfc9a -e628ada71ab7b6eca855f8da419f2905 -e62bf3a612174ebfa9efce9882e38ead -e62cf481753b2900b594db6f1f1df99d -e62eb760373845a4ca9a60e5b9bef647 -e62f1c07ac04a47c4a63d588619547cd -e63077712c3878a0dd9086bc4d8a324d -e634eef069458ae8919b8e671bb505d7 -e6388bb77775de129b5559763ae1b170 -e638e84fce91126bcc79dda42a13699f -e63c90127c38ad79ca29ab93c8a61bc1 -e63cce5f16483c8b03d10bb5e851ef5f -e63efc508f554df4c5ad29342f9a6800 -e63f5e7ec880a2ee555635a3f35f2393 -e6414e1bb3201197314608688b337b17 -e648f36202534b11e99fb995e80faacc -e6498eeaa5a9d1687d319bb25e9e3953 -e64ccee491e84c2309feb649b5b151fd -e64f0a44d5ada135dfc7503d643c273b -e653e3ba027858c11b4b6b194552fe8b -e659a63413d6019b0c61383609426587 -e65bab9335eee7afcd5177379a8b3e59 -e65be4f9ead08ec0527043a840266f16 -e65f25a8d168d8005235ca40c07c5348 -e66108cb04944626e1e529d71417584e -e66250fe64c69f872fd97c604b77e04d -e664351a8947373e7ac1b9dd90ac8a58 -e675a5c8b679e4060bd2637a7ab0a73d -e67780d2a47b83fca5b872a83769a263 -e67c5b38880b59ae0a632682ddf851eb -e67cd7e2b182e1d401549036575d2980 -e67efaabf258338ee3a007b18344ebc1 -e680373d27b3498a4af2fff2e060a6ce -e68606096ed60d2767fca3eec107f828 -e6863b530b9d52e24441f41cfa3a9ef0 -e687eea879d77fd26b64c75015ad1a2f -e68af299d861cca9c55b5dcde3825e50 -e6917a38af5c0984c2644c9591e5ae3d -e6941a00eb3b15dc874645b744b4ef6b -e69468bb91083ed483ac4b4cefee8e1e -e69761ede92373ad876e59bedbbdf472 -e69c10ca216523327a74ab0a49da821f -e69f8cffea3a8ead836963758ecceac9 -e6a638e317453e0d7ccb39882b6dfa89 -e6a6d6895cdd319eb8aff36a163370ad -e6a99510fa7392ceefd191079a91a82b -e6aa96e6b230548d82d48417d94a19d6 -e6abf3896c51c9ec3bdfd64133c61fe4 -e6b509247d7872d03002b35829f2593e -e6b612916e16f739eceeda285d01bd8d -e6b980d02d654f18b53eff53a0fdd3c5 -e6bbbd369727e57e8cb5419fc6ad92c5 -e6bd4a343c18b8c915d924ee2c2b5bbe -e6be0bd872a176154897138ec9187092 -e6c50eccd342049d3aad12d71833e552 -e6cea313b0c2b1230908d8c34163795a -e6cf4ab73db9fe119e56ed8bc57b4398 -e6d3c2064cafc85de6746a1d6cbbf572 -e6d7d2133c68c24cd581e95357b1055c -e6dc9bbd3f57c455137f34488ccd5832 -e6df4435b64a9c99438d3e1ba1c95630 -e6df6feefd00c23ce4989ac9010b7292 -e6e326344ebf72486ef77720a4a933bd -e6e7918cfdcec340cf7fda58620e5071 -e6f50f766c44cc37e0939f293bcb42b6 -e6f9a1fc78888abc07c3e20791aea4a0 -e6f9dbba94ad6804171f2bd740a60923 -e6fb9ee979c8871ad0337ad752d259ce -e6fbd802b65cefffe9b25ed27bd324a1 -e70a46a019c919544eef7fa4be7f0f2d -e70a55ec6061c465de69646a0423d2a9 -e71000ba0888c2ca6ca1557ea38e09a1 -e7125cc74539071479fedce554eadbe9 -e712834f26f3e13a23acf2b3932923ee -e71297cf62a6cb1204e7fec89959d7c5 -e729aea1791842ccd5dff222de15b3bb -e72b48f647b908b68a8d11a210f81deb -e733cf595e317cc06b046ed3ebd32745 -e737f029a7c49ae005e574f2c4a7553f -e7393c8abae8b8676deebace8c6c711f -e73b86e1c4d7ae1402897a0211ec3f7f -e73c53e4d02afe73f9aee93478ca576d -e73ee95fde32570e79272555a7fdd951 -e7414ce4846d8f74f135f2eb4e77950c -e74678f410bfcc4e5c599180552a11d3 -e746ec9736c471ea66152fb587ab0b0b -e748374cab5a65d57b204980e787dc76 -e748a8c37c6d480b48d1d083bd2532d0 -e752121dfc0413366060e012ff4d18d4 -e75593c241df398dafd74c952c9446d0 -e757477a031aabe890b15275942153b0 -e75a29f846fd1db95b4ab3a4c995c3d7 -e75bf3d46df1a0b3ad828bc4c116b5ad -e75f379dabff03674111e9a3c4773ebe -e762247960251a8018893bda034db5a1 -e769627a2947acd1102a546805d74c32 -e76c3353bc9edb77064735033f64fabe -e76f242e5f3c4c000063421313d9f2d8 -e77244eb3f31876eeeef6b636aeabd86 -e773d0df3b5c4f009e469fd12357abc3 -e77a0fe6aee9db67a545ddfca3b870c9 -e7800ac745b6323720d6a448aadecde6 -e781800704b94f8d6439dcec652be5ad -e781ed41ad214c5385c52673f740ceb7 -e787aff2d8d4ab52702f99fd40b76f03 -e78811d39f6c5caecb610567a757f4ab -e7890738e082a50d56caa88b7cd26118 -e7a079e0fb75a87a50ffbbc525f0fffd -e7a4c06dcd65741d51d55a952538afb2 -e7a7441a3bcb6e14e2c4bc2f484395a9 -e7b5396ac11124edfd7dfd44cae15d08 -e7b82e03c7206b1565db2feee33c4be9 -e7b840b35857693ace9471da540dd0bd -e7c1c32a9e4c0027c390f589ed274450 -e7c59dffd86e3b52e3d249594ae50f1f -e7c86e5ff172152f940294f878b50e2a -e7c942b56a99bdf55b927c2bdd104c69 -e7cb9b4527fcf06cecda963c288edd49 -e7cc08a56dfc1d841267a67a6f3c6e1b -e7cfe4208784fc2b05e2711e27329724 -e7d020cec12b1307e390ce4c67b315df -e7d6f9a7ba3d9fa8ce2ddb43eee1a462 -e7d72423c508106676f8e434d40113c4 -e7df75d10046f5051bb2d87b9950d248 -e7dffb2f4dc326d0ab67ea3ec258c690 -e7e721052eb417750dd4ab58c8489574 -e7e9c5a0cd1e5b2f3aebda8d0786fb8a -e7f460706167da81d5ffa64de90239f3 -e7fb3867822fe4d5bdbaf7e25be31a37 -e7fcaa82fa33803fe3e8ddcc1e5d3fba -e7fdddf67ff25b5c259c477094a6821c -e8011d85bd328ab8ae6f9b1e450f9b7b -e8044fc57108a23132665dc23b8fe7ff -e805a43b116adb73e90a2961ed344033 -e80721a3620025732d0a40f0dc6f345c -e80ac44cd4e420357d56d116c6f9f13e -e80fbe3b51ee37c354e64dcf56f853d5 -e8104f053337e3522a4c1f0b168141ee -e810baa3bf6ab4afb2120cfbfc8a6f7b -e8170b6cdcdd12e0052cdc2c12085d70 -e825b0b0d0308d80e127d942bbb699c4 -e826350decad7c086d4bb2c60beb354c -e82db3242c894325ea8463eae5a00820 -e82db718c49b171405c0f1cc0c41317b -e8336976f4dd2105db684450d44ba4bb -e839e84d44f6b0fa60e8e1b36dcc2a0e -e83a214dd89f4b726e693dddc9412406 -e83f8f6542496e3c9a783f4d44ba9d5d -e840d04c3892abed49d0f1422ec54085 -e84140738ac9298fe5b3542f66e0a48f -e843ea49f3b248d3e4938c16b8acf6d4 -e84426d4f9d77876d6d6bd56e6c67f20 -e84abeff8e88f790f1f61414c4221b67 -e851a7ae33e07ea0e7e2f380ec11593b -e852db0472c7984b33183cb34fefe40a -e8534731d29418164f09f88d9b4c0279 -e853c93b5e5d352cfce5bc62fa3c1e87 -e854a54cb051f1d23a5247cc05f377f4 -e8558c3d1a39debda0553ff720210458 -e859591b85896570092facb06489e0cd -e85af7abb8994417eb19ebbddf3e499a -e85c67b31b9040463c7b1c24d53544c6 -e85ccbe8816235800628467eb99f6a37 -e85ce98555b4d8cec3cbab58559eff5c -e85e55d8fbe35941c8170e9a9f39b410 -e85ec6e6b55d80585538b6d23e6a9825 -e8712d537ce74d94cbd88fff78542a26 -e874d7017e2143fd352b2a5ef35d5791 -e87b965f45051d1eab414ba7b2092638 -e882f8945127da1008127ce111e2cd61 -e88453586ab588908a17e5b3ba6b9b45 -e896917f74e9c1bd179f033ee7e07dbd -e896a22e7fc8263717fc4d86dde03156 -e89c0189e1174999a1ee79a71594b5b1 -e89ea48c0d3c32a299979215fafa52ba -e8a06bb2bb32f8a00e296d6dbdd231a7 -e8a1106798486f5783cf43c72381bdb8 -e8a1a322c4a2786ac1395e23aa598d78 -e8a46e4353433d28149289137ad9126c -e8a5984eb61fc4b3b05a270da538d6be -e8a8dd421ccf627d496db5ca24a6e6eb -e8aa155fa57006b470817d1dc2777904 -e8ae025149d061d4752b5e2bb17fe953 -e8affceea88cbad27f88d2594c233314 -e8b074752055a509d31bf7385f377103 -e8be95f868fa967b9cfc58b3f735b51c -e8c3175adf7ba8cad9d69fcd61ec6fa2 -e8c586885792aea6bd1916bde997455d -e8c78fdda79f0feb40f909c9cd215017 -e8c82779db22db188b8fd80214167397 -e8c8b83274156bd1901a118188aef14b -e8ccaba4b3b810658a8603c58a1d7cb9 -e8d9709c580e7e93e7f86700ce23f0c9 -e8da4683d117bc4fec68a4c9ba414216 -e8dd6ee4c7e9bb74aa2c83201f6e5c16 -e8dd8d9318920334de54df02e762aa2f -e8dde1420f3cb489792b7756b61e61b0 -e8df681bb7e76e674e472989cae235fc -e8e532e7d519ff62330c5c090f455e62 -e8e5cb8a694cf568af82e9c36ac041ec -e8ecd0380d1bafaf0b796536d7c7fc67 -e8ecddd1eeeb39bd179f7634dae3abd3 -e8eeceb162e8213648d912dfc17f2a16 -e8efe4c5857fc6176e0dc17a917a7668 -e8f295cfd66a7c0687675a658829a0d2 -e8f641d41141a01da04ac40d54950000 -e8ff442f22886f5f80478de54b1169e7 -e904e6192a0b4befcfc9ecf639742c3c -e9075ed38ae51209b2645d3b5af91230 -e90770ba66264d133d4f9b0eaba35b4f -e90a116018a8384e9bb1783fbcc2edd4 -e90af448f8e23790218d5688243d56c8 -e90cda6163c68d9a0c35f6b9f9eb5b85 -e90d0180c9cd3bf1e1fe6ea42503fde3 -e90fb88d9726cd99eb1c009c89a8f7dd -e911a7093e3d6ab250f1468932599d84 -e9128d4fa22046799efa7de7956b5b3e -e91313fd91feaad254ed23070a7c0f1b -e9158a3beb8789bb4dfb9b2179e848d9 -e91a144d12b885df10c77375b6d1e0f7 -e91c277b98b3df4c0ddd5baa1eb171e2 -e92299300ec7e38914fbbdf7c884e0b9 -e924ef3c2fc3f189a04e665b33c7d248 -e92934cdc8c8b6c1f97c1bfa28afa1c8 -e93061d1950485aa0cbb41bc2f2057ae -e93754fbe565c22466265c2b705662d1 -e938857393c688c52cf3627772ce0eb8 -e9416ba3275a47b24e1a4797323a37fe -e94770d16edaae92b154e996811e09b7 -e94a20c7d9508ff72809a8c999f27b6f -e94fa5ef164ff31747621aae7e261cbe -e950935d20d3d4789abff30a40470479 -e951f0c2ebdcf518089a2165e481b751 -e954e13600848c6bd508a33d1b6c5523 -e95634373f2932523232fbf458b1cc5b -e95c52e22e95434bbea622fb327047c6 -e95f429f770c221123726850b8ef6e6e -e95fec1a4bc5d6e1331f159029a80c8c -e964181bc2b1f9018e5f15a88676e95a -e969b504cbe54a2537843d36d8e46ec4 -e9737604b95f45ff3cfb25ee7b73c209 -e976fb79b4d98284b0c8c95b7db8f1fc -e97ac760fd9e93970cd53bb8fda350cd -e97c4d511e639e2eea75c72f45e8c571 -e97e16e13fab4da0c794969d8cbe135b -e97f8c10965dfa4634780c4d54a8b9eb -e9813099efadf886ed3f70266573bdce -e9833e1428eaf52674068b01f20a3920 -e9835d7e0ee1a64dc662b9f40a3e4031 -e983ed21a9b428b1b580520173501d3b -e984cc1fa00b68182a0aa16b848c0df7 -e984e0172aacc99c4776e2fd13b26564 -e987690ecb0d79388434e295d7b365e9 -e988c7c24b5b20c35ca544ea06caf94a -e98c62494c97f5989c9d1732dbc280d0 -e98d15adb06e4361abd787fa196ff628 -e992dd996485bab3f48a9cc41357cc04 -e997af7c57ece4ad3885b47deccd5380 -e99809e905d01337fc84a7c3521eb49a -e9a39b4584e0ecaa2484cd9ea39e1b0e -e9a763f3a02d31a83cf2a4f4efe703db -e9a85913a527412c129cddb23d5a3afb -e9aa5dbebf84400e0199b58f79ef8d7b -e9ac8769715d5c5a92a2fa5b6532d24d -e9ad05b2506387b635f12f212ad7e87d -e9ad3bd3e05ef6016d774c6941f34b13 -e9af1c6550085a8ba16c3ce96cd83158 -e9ba80a2dd82e63b972b6dbdc5865c95 -e9bfd5adf95fdd84218708486e3d1381 -e9c0c7f57fe22eff13833bd4d6e92eba -e9c17dace5fe2927b200f4dcdef3728e -e9c7ccb292971b43b8889d1ff59c63a2 -e9d0d02bea577327287572e33d91d4d3 -e9d37b740acc3331bb87c64bf4cb62c1 -e9d3a3515f8a98f06d0539c84aac522c -e9d5d4b26909967622a946f207aceec7 -e9dc4edfb3a49d5142dac341b1178643 -e9dd95a01d6b003d4882f249dc500be0 -e9e04f85b35ffeb16e62dcedd5599527 -e9e66a2477c5ec2d7e128e64acbafa62 -e9e8b89b493e046120764a52d62baa98 -e9f60b81103fa0fcc9d1e467be9d5eb7 -e9fd42291e8f4b5e7c225ab9a98386e3 -ea01c443d06c6f43b0d2f6085d4ef217 -ea042f2a741a247c55fa04777a8ba6fb -ea044998258d72811b1e13b234cb04c6 -ea053e36ea137a4b5b0c79fe15f2a1d6 -ea0bd582ef4c7e152418adc4c9878723 -ea0f14462e6a6b28fc4424c2f791a270 -ea146cf3ca918b38f549b09febd9b359 -ea1a9812069075e441bf4db3d2752692 -ea1f811923a86e342e7448f4b5fcce58 -ea2418453e907f62815e5bf24c61d59d -ea33b4335756dcd60c80a7bae6dfe96f -ea34523fc72622684a90d8618750e1d7 -ea39b5a5bb9d78576ba47af41a267af8 -ea3cd9594a222cf560cec820d6b21e4b -ea3ce38f14fbc067a40337603234bcca -ea41cd3a9a9fb7599260511a17b1ea08 -ea46d8209b3624b5bfe1fbc50f2edf5c -ea4898c72e871d366bc99b53d257ae6f -ea48a636a1f0b5dbe635515e4916a637 -ea4eecfc638d6208b80173c78fef0804 -ea531aeb7098ebeab3cd9769777e0bc5 -ea5a8ba016d217c77450c5c63ecf8385 -ea5c5909cbf3948a720a5b7b5114a237 -ea5d73c1e5acce3e1ed748e2890a785d -ea6082c71913bfe5486ca3faaf65c7f7 -ea6218de12db3ab4a89b19eff7ec80f3 -ea6608b1ce569bc80a1679e7cd0986cf -ea6a05770fff7ab7da01a32077b8af35 -ea6a84ddb16d735b1dc57f96f7c25840 -ea6e08b688fe19ff96718d454f87205d -ea6fb9a2f57eeecbfc3d14f5629b01cc -ea711f363601620329b55caa63540add -ea7218c041884a75e165189a237640a3 -ea72e0d8103cc3219da363b7c91ffd77 -ea7893effb2fd2a4dfc9908733c85f94 -ea7aa171fd51a23b318e30ef5078cdd4 -ea7b334cc734c2ff84eb931eae31e3bd -ea7f057537580907373f60e2e576923d -ea89a393b666e752ccce285fc1da41dc -ea8f487b415b607f0217242d0b2eef38 -ea8f70bbb2772a842003ca99cb31146f -ea9b19d9c83633b3e1e018599754d478 -ea9d593687a9583b1338411e4cddc833 -eaa036da7fe3634a50130217e321140e -eaa2401df8ab1a19c7c69526bbcbd106 -eaa6abff5a4adae8e42e2c323dd7af63 -eaa6d1f6b70197f464ba05b7a5a7b558 -eaa7290dffd8180729feae2eb3fdded9 -eaa906e5140a80d69e48472e6c77a959 -eaabc63a57edf7362a72e3b396bccf91 -eaac83e0bfbc36b788bf80d07d550565 -eaae9e76a931cb2c0e9bcc45af896116 -eab367ba94d10d2db701115725627f43 -eab9f815c995e65877d2eb62650aabc0 -eabcb077db050204f57139ebe7b8dc0c -eabf64ce017315be375c90dc6896c3a3 -eac34383b4484d3750e0ea1b85ad2852 -ead354160753e457ad6d88623bcebc99 -ead4bf399b7dbd1b4be4b9727cb3aa08 -eadeabc612d5248a711edc1a5d079349 -eae4a5fab789a7826eab45b7d6ed00b6 -eae5b8888c2b7af58ba211dc2143e585 -eae69929e8157eea4f78352feca21297 -eae84319854e6fa636d2996dac094342 -eae95e9656a1c4d459136ef5c04194a2 -eae9887a6c53d18112ab340aa4dd1a5f -eaeafa1266493997361da7d4b4fa0fd1 -eaf8fcd4dc26d917d6d9ec3d293a2456 -eafa7ef234102d8d9e1af1dcaf1e3da1 -eb019842e460cbeaabcbd14c793e65e7 -eb0293ef67743e4d3cafb67f78bbbada -eb073d95aafdbb2a6558540400e939ad -eb088e85a158f295b8cf855cfc93c553 -eb0938e3cc30eeb75621bb45d13d93ea -eb1101552493ecbd2cbcf9f5933e1e02 -eb123dd91617d541cd9f40f4d649a764 -eb15be8fbc79d0bc44d78d6bcb1d0fe5 -eb17100ade71ee5968878310518d3ede -eb1c6dd344fade3edbd289da6bb8b7ff -eb2289dd0f4ceb4a0e6558eaa75914d6 -eb22b000fc4d7531574deb757cb0d8a4 -eb26bd3c710ace0d2020630ac75eb3e6 -eb285be48cf54c8744a754418ebe999c -eb29f9293c10afb7f937d9b729af9c80 -eb2def228c0c0b34b581affe510dba6e -eb319178e8b6a2c47f1acb7735011c50 -eb34de72e0046fbb44b1da8340b56a82 -eb35e2e0e897ab027a3d8aa848e6c721 -eb38285142dfdb56757ff23df7523e89 -eb464dc781c64aca17103bc92ac6e9d3 -eb57130470b8029aa8fc9cecc059b34a -eb58a291a6f7a36b87911372734cded3 -eb6430d5929ae3cc86a68f6eacfc54b7 -eb657fda8b533ea2c5b3e05054eac679 -eb68de03881d78de6e6607988262586e -eb6d3cde5cba8ca58260761aa0a530e0 -eb6fe4f587453c3fe9e136734722cdb6 -eb743ca81ec81e6627ccee68430bb82c -eb7a41b5c044c9e97adc4f7f04fb95cf -eb8306d2243adf671a63580bd2ada29b -eb89d8d932e2f9cf548d47327c3653b9 -eb915142f7e077ef68e80607d3c1d702 -eb91b3e3975f0d09f89526365f46409f -eb91f4db85d1fdf135f26e2dfe936558 -eb96668eadf755fa4bd6d49b68c12446 -eb98615a9995907e565051c5c5d6f71a -eb9a1427a9a90c245fa729b26b2be9cc -eb9ddbeaf7366a67231e8f8f960ef687 -eba19ea3c86201cb68e934e8cf291816 -eba5860f8aec590cbe911536aff1db8b -eba5d25e206cc1f6e885b9efcf16018f -ebab373b279f96da69af44eecb051f27 -ebb34a6cb0e4dae1ee0dba61c94e09f1 -ebb745e6d202bfb13ce81c3e5d4f2a73 -ebbb70ad888024a364b90bedfdb82b2f -ebbbd4180b7c55175b7432849ef59623 -ebc97e784ef89794bf46c9ef748ee02a -ebcd1230042235c0a064e22b49a79041 -ebd0e018ff3a10a1a69ece92823cb9bd -ebd2e3af69d0e1c1c6ff1fc0d298fa37 -ebd8270b2fdcf20abcd9186b6bb2dc1b -ebd827b6f817ed620a991e9af0affba8 -ebd9b9a73d140fb89af6c02cd74a1caa -ebdc934b6954c0c10a644291221a79be -ebdce99a6127e79d405e3a75573e025d -ebdffa0982f325373da9c1b20292ba6f -ebe21f1c3496b5a04bf753f6393677c5 -ebe255b26f02bfef0dab6114b99f4f3a -ebe4790c1b78b7b43f78bfb39dba2b58 -ebea63ddc966d99ea66323c7d89c103e -ebea92c5d548dc161df65c45dff51308 -ebeb64b448b2b161bd430f2c08f50f2d -ebebfcabc3f9c343b9b5d9f3125e7446 -ebef26fb59926cc2d93990a25a30d92a -ebf27e7a49f28757f7fd32af2747a8e3 -ebfa5e2997b0ca24fc2e57656400f6bf -ebfecc270ebed0ecf3534bca8eeb26dd -ec0399fddedfedddc23113ef1140a0da -ec056d4610038b664516dcbf8f609fcc -ec07a9a86d8d63406e85292d74c419a7 -ec07d049b6201670233821841d4d2a8c -ec0b63e34607b14f6d40e2880aceca21 -ec0c09b338febee7bf33fb4c950fbd3e -ec0c460b8f1c788e39e6d4f3fd0965df -ec15351d9804d2f1eaf53a7a25f52475 -ec1712141dd457351235b6365993edc7 -ec20aa9ea38aee8a1187cd51ea9fdf84 -ec246d33acb443e1708027276e43403e -ec2d78de53b2e1d28fa542ed373eefc2 -ec34dc6434f296c868a4d555d9ad9cb2 -ec387e7aa60047de01e1eda32979a535 -ec3a70dd05de8d5901e7a5560ae762b8 -ec3f0c075ce7c05e929372e5acff2be3 -ec40969996f9463ab0efe766d84666ee -ec420085d52414c73fb950b763534832 -ec4362690f077a2afd254bd4f1e21e1c -ec547e90a9c2e865054b021ed2a863f4 -ec5679c3c9c0838da87f4ca02de47ea4 -ec56d949e458ac9618a6bd06df768a41 -ec56fdc025fd671c70eb79e93a6d5e6b -ec5862d8abff6e61f71b9fdce8f3bf32 -ec5964ac6424ca55ce45805135c6f3b5 -ec6144bc96b25616ae5deeebf56b604b -ec67296e16eb2e26da2c3b99b1ae69a2 -ec6b319550eeee09b6d845edf421e9dd -ec722ed19d527aa7b7779df63f320c1b -ec739ed4908bc6319fe5073f3c734ea1 -ec7a5a9dd84ff9ba337c977435a75693 -ec7b198c50b1755fad54eaed920460b2 -ec7b3922cf7bdf20c39f5f775b941e65 -ec7b48a5c985d68b4dbc360b68481b4f -ec7d3feed7adf98eec79324ab0bdd455 -ec7ec0fe330b84163d075e5cacf34891 -ec850482498b6a9ea265093deffa85bc -ec86105cb3f1b25b1ffa5b1ac44bfee9 -ec88007b20815ec87fda456237985aa6 -ec89eea7862342e13f2d58869c59550f -ec97558c133b073a55562bc894a8dd6f -ec9ff1773b843f396c3d30b60b5a3baf -eca1287c5355e0d6a075edc03d230998 -eca4278a981f64ab0e3a28171cd6f1ee -eca9bb504c208a154fa86648940b6724 -ecad1fcae6c1a82bae09264e82459f88 -ecaf92b2b1928e952dc8c3db3472cfa8 -ecb975ae271f431c9c5685a8de719c58 -ecb998a35714857288c09c1cbd323688 -ecb9cbf8b0d61edd06328509a07b1ed7 -ecbc76ede79625253b073e561d792797 -ecbe1f419a203ff8b64d3bf42cbb7c55 -ecc0caa8264b12925cafe2639f6574a9 -ecc17a8f558f47c0b2393111e58c208b -ecc5677fa8903bc55b1028dd6fa8797e -ecc59e324b0e89649cbaaadb25a6f956 -ecc6cb3983ab899dfa6dfb3b875b178f -ecc70bebf376a1d295a67fe045a4e35f -ecc8df3acebb436c87d21a91b2b42374 -eccaeadb9597f6c2a457057f12da8d35 -eccf0cfbf0aa74ad8b6468967a4d6aca -ecd8e44608174f1df1b6a1bf6df00bea -ecdc49703804f9a0f89fcd5fa463f268 -ece212b25ff09cdcc42590e3f71f6919 -ece39d32213bb85259da3c35ce531cab -ecec33d3fda55dfad62b03593b4a5c82 -ecec7bb7af409223d2b8fa3bcc5f41f9 -ecf30f633e5795d81ef632f5350b9162 -ecf6dd11181bb6b01cc57f5ad5bc5397 -ecf73ed1762c43063b5c678fa7dd42be -ecf7c06e21fd774d92368717c4994a5e -ecfe9e42f0fb3a81c27b906bb0dce61a -ecff9b5c5094080aea1b21dba0333cd8 -ed037fad58d76f67b522ce84839a8779 -ed0b79fdd97ac70909c80692a822e5e3 -ed1604193cd33b6ebc197ef4e59d6b38 -ed1608ed641f7e4f00fc4bebaa7f38d2 -ed1c386f5ea1d22847d137b01f22c134 -ed208ab7d410bf7dc9bbbd25bae63b0d -ed23fc67243f9950e0b21d5910595208 -ed24784023861085d59efd85b6e400c8 -ed290a55a3a4d2de8b08d11715972375 -ed2afcafc1863c1efd1b62210e4e73d8 -ed2b1ca61774495282388507492e852e -ed2f2c40271ca7ee7792c2824e09ce05 -ed3060474813f969332aca0c3ca034b4 -ed346c869699cf46fc00d01c539c89ba -ed3dde1e493a260a0bc01f029de66733 -ed468312e2324f35dc8b34f3e52fa411 -ed49250a18c9bfbcb10557bfb5203933 -ed4ec0f33dc2ddb13b1be52f757993aa -ed4ecde49277fa4c626f5f7ba19a6709 -ed550c928a6a45f76cd5da34aa98af61 -ed584bcb2c2032392fa9991383e7068e -ed5dfe5bc981b15c12a793e0d37ad33e -ed5fe1877ea6d00d275e898c889e0b82 -ed6abe95da3d4e3dee6cad684d52179a -ed6ea7364ee70f9754dc825763469076 -ed6ef0412472f41540426497bdb7483b -ed6f0ff961acd7a0009e9b0631858b99 -ed7094ef9300457c43c7a3c9a07a594c -ed7635b640857ed5a329d2cc22bf2a21 -ed7b045b5661fd9bd1d440a457140d54 -ed7bb7519faf689d8ccddd0b8c739a0b -ed7c0d4d6498af2f6a1f820cc0fb3de0 -ed7c9733d47d7a6b285921f80ce46c06 -ed809f8dd3951165549f311a0e8f49b8 -ed829807bfb92dc6a4ca5c5c3b6ca984 -ed83795a5d14fde17d911437df4ec9fd -ed83f8f3439972ea43b8593b3ffd8a72 -ed89d23d67b2a23fa6c2639db9752b04 -ed89f1427ae478246dd331350effc303 -ed89f567dbbcb80ad31b80526037c25b -ed8c2d6c144a735122d5d1599792aeb3 -ed8cffa2cc73f5bdc89d0b3bf80ccc4c -ed944a74f2bc2abedaab41a86b2f7016 -ed96de03a650134f32e7133c265a068e -ed996bfbf24580fbe5d951941f46b2c9 -ed9b96c510eb62e0e066b91a067055d4 -ed9fbf7ed8107e90243dc7a562872628 -eda2723546e3e395ecef38a79f260bf4 -eda57f4fa83b5f9c52e420f67b05179a -eda738df74503a600934e66393893d7c -eda85ec28a76326bf6eee98942abf15e -eda9059df8431d3b0db453a990529682 -edad549efe7071a306b442568b371dfc -edb1239de5984d16045089c3efd048c5 -edb1d6db125d2238f1b0261571519120 -edb291cd29b4a9ce98dd1b7d5f8d46a2 -edb85989ab9c231617f1a6c8cbf788aa -edc1a443c74903d24683cd9ca4dc7321 -edcc12e46d6a7d76a4a97203e28a7559 -edcd57ce76352a535e2f383e8b031545 -edd3227118d995733bec7bfb8ff66186 -edd3c54208caeab281476f717a1566ce -edd85621fa774fb502a5d922476bba69 -edd8bf276fd5b13aaafdd84d05a0f42e -eddb833f4a044b6fa6c15d6397c9414f -eddbcb14280502430c213441f257c3d7 -ede22fb0b4459ee288ae204defb4d1a4 -ede5ba329320213c6224889ecc6bf23d -edf12a2cfd4528bd57a29d82c6450f13 -edf1e6b4fc221d811a431750ef70980e -edf458627bb9024c4016e93a8150f8d4 -edf665d9609e8cf6444631e32862639b -edfc1e95fad851c16325a5d55559945b -edfce63fa7af2390c4aa18fa1a1b0c70 -ee006c8f86ec5b7ef627d5e56ca0b44a -ee01eafa8620fbc671103a9f608ef159 -ee0556236d0cbab513c97baae5ed2abd -ee0cfb628cb3c0934d3fe0ac9deead55 -ee10611f07b6f2ed9eca65e90c27fc71 -ee18ea954e40247873784defd8721303 -ee1a4b3552fc828bb53c7f66b51ce61b -ee1a5d2e4ff130a36bb24f5b521a369c -ee1e7b7d1f712bd0b71758fecf800c58 -ee1f581abd53953f5d8fd508a9d2fb4e -ee339e9c23b487ca22fd45ad4bcef29e -ee4f5aaca0a75bcb1b1886ab8b67dfcd -ee53fa1309f3c3bc31833190b6012c0a -ee57fc881012647b32d6915cb9ad1ebb -ee59ea7c5d2ca3ff10605fb85b71cf74 -ee5db9be5a19de2a8da55168e0a9a83a -ee5e27aab1eb424ef98eb5943dd6fc08 -ee618b2a2bfc94f0222b290a2424a74a -ee6339b5a09e3f568d11c3e5658ced25 -ee66eea4ae014d581b03b5074b7c3448 -ee6b864d5763f88584700208d38a3af2 -ee6c996d6ac4c1b6873ee3d90fe04202 -ee7040afdf185d951a67a8d36c277ab7 -ee7067c84ef21e458438beb133d1db83 -ee75448142e288a0641070641f4e124b -ee77886f08ffbce7eeb0d4557371bc80 -ee7af704370b0304453de25294b7a709 -ee83eb93de40be686c45ba5930818c93 -ee88c17517fd5f46c9ce709abc3b4f6f -ee8ad0cbb240e7b4feb947a2a22bef83 -ee8bf5eb4797de542e538a65f03cba0b -ee900fb42d6ac31fd1d3e91476239544 -ee9f76e4ccb5994c9b5698fb85b33a2e -ee9f882c882b3c27a2d466f25fca27f5 -eea0b03cf79875ddd0b7f312ef3f7026 -eea55c326bf9fbff5d53418ee515542d -eeab37fbf5a75119b98784fe267d92ce -eeab78583e97a0b2a22310bb51b46bdd -eeac3208fc3e27a56dd756ff5b9fd401 -eead89bf5095dd517b7497fd236408c6 -eeb3a481eb6654ab9c3ea208bd749e33 -eeb4ab9ecb929359ad6744bde33c2541 -eeb5d6991eae35dc4c9a29fe0aca043e -eeb93b75b115ee53aea894ac5194efae -eeb9e97e3479e7609b04690de03596de -eebadc6807c38365c94ce34addfe2f68 -eebc8d45dc3ec5d79cdfb7a53e1c1cf1 -eebd8e12c2539a84823217b59fdbee5c -eec3aac8fd33f752419878a13e5dcbd2 -eec97d595a9b567e284fae84e1475d98 -eecc70952452e6030698b96614943fe3 -eecf4a8e341798ad86dad2721f47ff3b -eed020c8326da3ed5c3b5dec500802d5 -eed13184423c6c57942059634fb42868 -eed58e9e0a82fefa7a068482f512701a -eee142371e7f14dc2cffd92a9dfe14ca -eee701b2d127ede6c8af5d68a1e70340 -eeee0466cfcf3b389194886dacc46ec7 -eeef070c07c5bd33215f19f6dfb10bcd -eef66557d2cc1b6cfcf3d6e0d9851f32 -eef87f63404cf6b7e08395a3fbff5002 -eefaefe983a5ef75e0d8b3452b627649 -ef0064d4494ba91a03062de55deea796 -ef08f00ef8fa24563164859440a0b01b -ef0b8cc4d9fc9f2453d2bdf6139be783 -ef13040b37a91449bdaa05bdcb49c9ef -ef1405deee8e2a1d4201ec58b611ec61 -ef15779facb0ab1d375136bf7c97b42d -ef1ad4146fe7eda8b88a8eee1ebcb134 -ef287997755e539741e208cda67a92b1 -ef2c517ee5cde8d29185238f3d1e3967 -ef2ced26a1c9cf1e16514d5d2520d324 -ef2d1b017ecc9d4524ec275f9b2cff61 -ef2f17db436cd2da45fd7d3d8ad4d10d -ef33c9122a8b8f0a85efe541e0e332f9 -ef34a258c6ccec765381e37fdca5158c -ef362ca6c50068e9f1d03ef187bc1f90 -ef3653c309dacff2f2739b36f5692f59 -ef382e9ab8dfde24dfa96fec50f08c4e -ef3b0050fc9b624aacd37aebb07deeaf -ef423276a20d1e06e815b308d6f38106 -ef4522b94c84d942a61312fcb1891dc0 -ef5061608aae63fe42e6cc06d812e280 -ef5bf3b532e74f2c8539a881096ccc1d -ef5cad1ae210e815e2428888c4814564 -ef5e194b555cb96871c71186302179b7 -ef60eb77ecc649caa17e96fac89cdf70 -ef6223b586623009445f6ed05baac2eb -ef66a03fda3920687113766e0f278b08 -ef679dd05774cb95fba5bf1c0a24ae1d -ef6a0f9a008f01623e54949006f95be0 -ef6a2afc27ee362dede9a91548ba2a24 -ef6a9a69ceacffda72d75036aa0ec85e -ef6bf406ea3ad4a10a73f8fcfdb88612 -ef6d6f1d7a6094fccc068055058fcc76 -ef7249ba3188eb9408645a05e9415c33 -ef74096648bf03f76c920fcb33e26cc0 -ef7a1501ba8b410576dbf5036b33ac5f -ef7cdc91d193fcae278c94351b34886d -ef80387eedec69ac80170ccda3768d25 -ef8147837e866111e700815fa2456f86 -ef83b236f2d16aa1a8f6f6e0b055f322 -ef88adb17b5d86a6d36658de805e645c -ef900f6c302a90bae7e392c6f2fda40a -ef90d7e2cc86943d0b5f4fa7262839e9 -ef91fce6c45c5e7a9bbac85d09582226 -ef94536f55e09dcd23523f705a17763f -ef960833fbf7ae798e0461e01948ef90 -ef97d511289149c234d8be35f5426a20 -ef9828e4973ce31a9debe0c334e4931f -ef9a07ebc464967cf4b170b83cc77007 -ef9a0e7672196c58127b39575b52f5c8 -efa9823d325ec5b8ac674d520a3b3bd7 -efaa89d1b3f75db504312185e9f9415e -eface23f419b7333f0d1d5558d4bc5e4 -efaf168bdd4ba45c6dea432cf7790fc5 -efb1d92870a835efd11dd37a60abce16 -efb531bbb8164b8d7ce7affc4656ef59 -efb5ee0c0ec047e2e7014c024fdf3132 -efb807e643c6bdca8ed38e0ffcf04514 -efb8ba5bf09b93449559ea058f6861ed -efbaab100fa158f67614d185982f2ff9 -efbec6f302f9074d8d9b9f7f2f0568d5 -efbf5ee52880fd1e4572d9cc7e079ba8 -efc1290c1f060a2789db9c90c0531e40 -efc1caabf4d6f79426341701c906b459 -efc68688bd08be09fbd6d3190d21522d -efc78445aa6be228d24b94e2b6cc94de -efc88a69ca966acff2c03b2f830689e5 -efc9b0fb696afc83ac555bf12e3cafe6 -efca9aa27c0f408f4a1a401ffeba5fdb -efcaf8242b71e5c3d980d6e9a7735161 -efcd052816f6c1cfd03570e5a5a20364 -efd5345f4b0cdc6fce775efd996ff45f -efe08a006631effb2bedf98eabef18b8 -efe19d500d8ed1818304ce46304a1f93 -efe46e3b6263e9959bf1293f8aa4e590 -efe59ab1ef7324f746b15f9b37498aa9 -efe83bf7cfa2e4b0dfa356c01b5635f3 -efeb581c4aa7a97679eb15c7aaab78c4 -eff16abbfd07cb0b3e5ee1a2dadac5b1 -eff3bcafda516eb9a9167e8dd8b68f29 -eff68abb18ce770141c38d00db03344d -f00c8fdfd7781773ff5c8f69f15fd698 -f0157dcd378a2a4b4aaa6ffcac33b43f -f016438daa8b1b5642d6598d8641c200 -f016e6cedc9e77cbfdefa101eb822c2d -f018e692dbb47b97001c8e26505761fe -f01956e2a93fc4d517604fe7703304a1 -f01cc6319808975822a441957455076b -f01dc475188ab3d5aa185f5aa998904f -f0200695d5ac8e07e827a81765928972 -f021a635ffc52f232dac5f0ff869c8e8 -f02968f62d43a1b7c4fb32358b9bd1f1 -f0304a44cb41ea349d8c7677a417303d -f03351872ea1dc142c8489f397a4749a -f0347afdd1413aa208bbe8872c0d872d -f03b27d86485b30be2856d4fd3088dc4 -f03c8e0ace27427329abca59b1510ff3 -f04011559f32d9ef21132841390c3f0d -f041f99ab25f5812d2302b378b4381fd -f04e0e26cf61f32d31fa5092c2e221a9 -f04e1ac30358647e2c75365c7174b312 -f0534d2da1e44663f620df778c0ecf35 -f05a4bd3a2f9fbe2183c0052fc01e234 -f05f77f3acbbdbeb32301fa9c2468c45 -f0665391025ff2564eb656346d30147f -f06730acf5ced5db4edc2901ab019290 -f06b3035d8a61797a04ab55ae882132a -f07440540c1f040231ee7ee77e53291c -f0761cdf2a8d015a98c2d7a0a981820a -f078ad28ded7e3901f729ff94fdbc192 -f07ef764d25cf7b1223e7e0b80e68107 -f08af5515f4ff6d1fbd5f366c481a6c1 -f0903d915e9065b668535a9606ffbfbf -f091219c8e290618a83591c658068a56 -f096d97330b0c7a9dda866d0d0eb489f -f09b173c5f03fe098db2ba689b69a448 -f09fe46af62092b2e96ee1269d7aad56 -f0a1a98d5e1e7455fc6780b983def29f -f0a42398f5d2260f9dfbc0bab61d0b24 -f0a58ba265297f8588bee0074123fb30 -f0ac18af2421fded1e82a67115ad47bb -f0ad90eb881a0cc33ac95018b5ac1862 -f0aee1f3aec5a9fcf995098303efa18a -f0b011fb98c4695dd834b08e94ea5cae -f0b0ee0c4e205ce549ddb5b18da78ab0 -f0b147a1b6e8f84c86c1e504f7c833de -f0b1a3782449332cddcb30d5ed5d4c8d -f0b330ad5106ade9f9fc0a309c9020ef -f0b4dcdaf08deec0e97e10782f79afc6 -f0b962d451880b5f7790d8c63e2cf366 -f0bb71afd39a62642f280f13749fc8e7 -f0bcee2b1d6b1980f09507705692c648 -f0c83965f8c42f4a4094d4863d8c59a9 -f0c9eaa80bf32654382e3878c3645bb3 -f0d009a588006fbe6f144fdc53f4ed75 -f0d2c1ef1d6e1be150cb636f22d0e006 -f0d9b68836bf8eab3f16d3bdf893e2e3 -f0db1a78b7b75850983ca230e0ef345a -f0dbb7400d4771a2bfac48dc72ac5f21 -f0dcbe5600bd89f84a8ce982d827d5d7 -f0ead7fa9d8abe9f2905a81a7903ce0e -f0f285bd9b31c8cfeb266b908a6d9741 -f0f3aea31d32ce19e35a9981dd3d92e2 -f0f70e69eeba8f3b783f422ff8c01171 -f0f812d7cc40080f14d16e6debdc77f1 -f0ff48b68c3cc29b4de350625e70570c -f10233cfb422e45c80a51c9d5219a0a6 -f103a79412935fa01833d01b6a81c011 -f106ba86083f603f695a30644c7775f4 -f10a588fc02fc20feabea1a4f013c8b6 -f10bea1a3623592c343a0f03df3fae30 -f10d6d267b76821a779cda8cd3f72ee7 -f10e42df74605914db317d308d5ef1f3 -f1109851c70084d703b9fdde8d430891 -f1120bd6d68e82ab50068759086f59e1 -f11bfe4eeb544259b46dc6c737332321 -f121e976ebf3dce5090c9cfe210384fa -f1255a4af4e9051d634c016fc1481d47 -f1263ab84bff9063ebd053341c4a5b47 -f129159075373f8d823fdc0e1f8d9d0c -f12edbba01fafcb1124d6e65b7441535 -f12fff5b7b39c8bfa156e24f69cab2fd -f13802fe58323e16281f8212349df294 -f1384a565a67ef1de1c73235190d60c8 -f13911b1e96eef8d0359e66e22cfd90c -f1407fede683d782d17bf4f224120020 -f1446d1fc35a72797a16e8fe41b8ac8e -f144bc6a5220e676ac455871001c602f -f1450de7cc2a1f1f0dd763fdd0fd57c6 -f14546bd0999f28a65d519d13c273759 -f146bf4f9a210e0fec9fb69978a77053 -f1476644f4039eae058e66dfd7836f90 -f148e60d1958c95a2ad552a5da186669 -f1523eab5161a93b04de83bcb3ad6981 -f1545bb5c7384d2ddc6f3f8029bf079e -f15a03f9c8860eee81816e6656f71e02 -f15acf77ad329dd4c6b53d5e6f1e7fe2 -f15fe1b168d5200af832518d9e974891 -f160fd14a296c7e4c511621351992554 -f165587c2ce755b7b43924bb8b6f1144 -f16b610469dfeb6021ecadb1dfd1f487 -f174739cdad911eec8e7d53a08a1925e -f17c9775d45f22a4c6cc93a2aa9054f5 -f184b1f4f4ec337ea5cd569517bdb5ed -f192b54c5403ab271ad030e30b071961 -f194ff2fab20b66079085f343c6512ee -f195f762fd3303671088a2d0876d481c -f1992a053a5cbaa18969e4821afe3b5a -f19af6c8bef5c5c595b045549fb5b35f -f1a4a9cee02447b9d8f058349007d3b6 -f1a5b5298634d9a9d9ee8f39f5c2c9d4 -f1a79888b847ff56facb5e4926b32ed2 -f1a84aae6266f5778225f99a5e04c90a -f1af7e721e345c8038bf20fe8765d861 -f1b024fcd7ab09545ba15994a90247dd -f1b668333e70d0c25c8f5ad0740b4d84 -f1b985862e4fed1c495dd4b068270243 -f1bc0e681319475af25e0acc5f15e74f -f1bcdc4204e44390198369034bfefb14 -f1bd7cdd4dc275ae30438327b135a7d0 -f1c1ee731a5e9f2e90a9ba8a80ab0cd8 -f1c27a43963e74ee701b5f7aeaf43446 -f1c5e7001c71e7bfb1b753d10a44df8f -f1c927e633aa3f2b6add8f30453839cf -f1cbe1ee0465c29b37d9426787eff1b8 -f1cc264a71fdff5c46493e869dfb5c77 -f1cc2d37c5627907f36a7cf78fcb5e42 -f1cd2c770dcc04c50bfc9d07f462c279 -f1d00c6b4fefeb74369bee96817cf193 -f1d0b77970578349ac29e7644e0a90c0 -f1d1415fc0cff2ce1bbcbfc47931d9d6 -f1d5b24208750b80cbe1e494b94fc152 -f1d793eb2a0be53ae096d0b1780f57f8 -f1d819018d5502e2d08837edb50da392 -f1d9813a045742dba81dd7ea92e5ef14 -f1d9fcf17d77724296269000278be60d -f1dc8b926726d45586dcc27ec9cefa00 -f1de1ff3b3d21d4f79673ab36b37da26 -f1e36422f30fc183a1a5578784da22a7 -f1e638bdde443954f52385fded5d6964 -f1e6d5f05019e63cfe2381264b246401 -f1ebd83cdbb1e67a3fc3b1af1cc54094 -f2010079404faeb9230b02a28cf3bf48 -f20112f8cf47a3269df6967a2fb44a28 -f201b5fa222fffb54acffc94d1bf6992 -f205ecb46bafc16fa0aa18a47dfb6727 -f20bb80c2b30378d638a4536168ce5f7 -f20c48438b91cbb64a5afb31506f362d -f2104e70648f0ef885d9caa03d3ec175 -f210567c2723d495bdffa1cd3d9461a5 -f210e93967857b61198173cd43a06576 -f211220cbc065dc1b4092abd6f9a42a0 -f213be300ddfac84e3c6b3c75b8b3507 -f218ff313ba0902454d85ba7da578af1 -f21f633a78f10a8835ed28c9d9a51b01 -f22a2fe424aab20e1281093794fa8c26 -f22d57eb77a82e3bb5971703abfccf3e -f22e9d40f87411d9829b5edb20fd23e5 -f22f98e4f2b6d6b995c5280a4e137a88 -f230834ffece5b42237956addc94fd5e -f23209fed35f7ef66e4cbddaac4f1f11 -f236167233204bff1df48e965f1fd7aa -f23aaf7b9ac598b56a30e528c2204a00 -f23adcbe8f76dff9d00fe417e2ea4f0a -f23cabe9d91df33b8bd6905cbb9ea61f -f23e91a9a8e67790d038d18de203163f -f243fff5dc55575824cba54cc09413b5 -f24f193a1cd6ff28881193d3bd649c3d -f251a2c8ba136cea440d16230bdd86ad -f2541baa3b12de0c5bd4cc4ff75ee422 -f25c17a1de5960c41fa819a5819b090d -f25c7c5e43d09e2068e21708ce42be6e -f25ff6f055c0b1cadd3f69e774ec9704 -f26381c21160e66374c69ec1335958de -f263c65a06cd049485d9dfda788fe8eb -f263e02af400d1825e2f7bb109df9a01 -f26700ba690c02fa9cde5f681a070c04 -f269a94706aa5d81d6e9be359626f8bf -f269babc272b4f848234a50f8b179046 -f26bcb6a29fd5c9cea50e48d43581178 -f26fc920cd57e90c2ea69c1b589da3dd -f2702d449db609d98a693a9cf05773f5 -f2719aa375054f88b066a89b96da1145 -f27e6822bf58ec71782aecccabec762f -f281c16724d1234d48591da20c6e116a -f286ae7a86f211f55d1601865f7f2aaf -f28af21c31fa4cf4043554e1ab923249 -f28ebb9517c18e67442e084ae590ceab -f29356d6d58da4cf8bf355ec46c1ce0a -f2938057e1ea81c4a0d44b09e9a4c16f -f294a29d18f658d2ce8c64b67533a857 -f2a49a6e3d0ade62ffd3ed0f70cc2250 -f2b1e9edf92a4e0d6b240ff13ab95f28 -f2b63e24043ac07074ebbe6d3462a78b -f2bcfcc15eb10396d1f84f2fec84c3d3 -f2c4345990b9eb382fb57c4c5691c5f0 -f2c54ca5d89fbd1888a2ad09b3db8270 -f2ca9d8450d61623f3f8ff9343f7f994 -f2caebf3b98eb2373dee05f5f1a60905 -f2cdb54c9ad935c50466ea6f4824cf4b -f2cfd31bb4befa08517676ba6c83fa3a -f2d15327e08a9b2d34555494987ae1dc -f2db520d20a3257c9fd96351cb9ef15e -f2dba92486d6b0dcf549a3c27f0f1b3a -f2dc14e873d73403334d7be4598f90bd -f2dcc5b31a7a3424ccf8e8a3a7887352 -f2dd0a10d9aff95097ff73e8c43ed484 -f2dd479dd240f0c0043db63b508ad78d -f2e2ddf530418b008bcbde2abf486af2 -f2e35bac2bb19cc208dd79e3d7fc14ab -f2e7b2a63dc7f70303d2029ad1883df4 -f2ea6124516e119d10d8e9fc7ef3c8be -f2ef15f4026d535458f5ea6cf0a320ff -f2efd9f2ce308dda6c40606e22530482 -f2f6ce4870f107344d3b05d5d93d41c2 -f2f735638785f8a3dbbdb06992eddc73 -f2fa42c4f6f8ad2387cd52dc0b388aa0 -f2fa61a4c52006362f764a03b49afbd5 -f2fb2aa71a5801e8088d7cb85a2b079e -f2fd69bfb850bcc66eff341f8d470d5b -f2fed8fe8c4b9c629f6eaf72b3db53ca -f302cb7431981e76c015717446cdb9e4 -f306e18abed8b19109e9ab335f815936 -f307785986019e988a3105ae2b52b093 -f317535dcb1c1fcd8d6e03e79acce760 -f31b692c7992bfa474b1b106d223dba1 -f31cde1944fb770c870b7e4e7c5f957a -f32325045d6698dd90d76eab0c74a1a8 -f3238186feb50539b86c4df14885fe80 -f32b88838460565af0d6103f598b3603 -f32ef8deedb495695c4d799294f10d55 -f32fd3c83beb2a2d7a9cb45bd7c42888 -f33662146458234cebd658471e4c2d14 -f33bbed475d6e2ec26ee27253312606d -f33ccee674eb9c6402cd410ff8785ad8 -f34337710006282f39dcabc8b2264adb -f346aa077cb84c1da139c96d45c15ea1 -f34aff251243a8824dec9a0e57c3df81 -f34b82082ba25971f8367aecd9abb998 -f34f51ab286de0fc6ad79c123280a71c -f3539e7bba67d49b04903a35749db6e3 -f3546fa6a3264b557c756ce1d0a91a0e -f358968df09ad396530c2629fe8aa533 -f3659220ad8f4e2ed45ba58cec9f1745 -f3712ccc5176e63c5ecfa4071d1f10ee -f373e2536d4962446a05b2324bbfa3db -f37d6b6650fc3050ec017ea9285f6c18 -f37ec5a3c3d364e78f250dced41ac46b -f3803646f17cd2f9adc5989a60dd75dc -f3850c7dc24f589bf419085dbb43c4a8 -f38570d6f2aa64982349daf790d94331 -f38655012f245750e84e5a6ee798e982 -f3874ac1a3236de7905764f2a3f63a9d -f38af6fe429b4db4f7b4c69c803c4d9d -f396262e311c9b3c2ab5542edeeb584f -f3967d41fb95ae9c10a7d17baab3bb33 -f398a5a61fffbac4bc42030bb8f52beb -f39b7e1e25e53ced97019f2b82b6ce54 -f39bbae14a5c758f77207a1122fae1e3 -f3a49f68fe913dbaf40a1b6270d0d8f8 -f3ad8b1fd8d538285e5b366130d4b2d0 -f3af27f04eee8ed6a1b6e4a63f95a471 -f3b0c666754fabe5e045f2aa26c372cd -f3b4ea042e29cab03523b24dbed5e4ee -f3b9f39c8c4d7a2d5d44700a0df5f360 -f3bae0cb3c2706bab576e7d3d8a7c626 -f3bf22b4abffb930b8e2d8a25c3de74c -f3c2701c6140db301b2d824433544017 -f3c7a87e4f2b0e035db526518f89b502 -f3c86b091ddc35c449712c18df223606 -f3c87dbbfe3cb1aaee8203522b869ea0 -f3c8a7c8d280e51b8ac6a61e5c2b2798 -f3cb4fa0cedcfdf873a17121f16e0484 -f3cece7cb2a86e6edafc8c1d9494c6d0 -f3cee695ac8c7881a211cde849bedb5b -f3cef500f1ae520dad0e2a9312c37d26 -f3d234431f0c88521f5a7a5734b2e216 -f3d2dbb289a2182a40200159d58490a1 -f3d5e00ce6bdb0e18c04171777565f8a -f3d972d7e55fa513c1716b393822f272 -f3e42fdbbc842bc465c86dd749a297d8 -f3eb1e8da16741a7f3ed78befe7f6848 -f3eb4b9e25e3001cb25b97b21b8fe5e2 -f3f312c2cf54a5e2e3ed03c5049594a0 -f3f8274c31ab468d29861d2c5fb18feb -f3fac0abc7cf6e5a93a81501fbf05e8d -f3fcbe6dfd593cc171a0e09599e96adb -f3fe3b68a04507a302d9255067a0785f -f3ffc49f18807d6bdd2822abce610302 -f401bdb97aaa8018944df2a84524b037 -f408223e54f025ebd2d7916e813d91dc -f408d68913d23e293d055b7ee0e5a276 -f408f520d79cfd87a6ca192131ab0b51 -f409c74795522e756ec82ea915756353 -f4104a5325c8647f69bf007ebf47535d -f415ee156d2d78573a19450e703a8994 -f418538c955f8ae706409feb7475b1e8 -f41897e4ba4c178f79f5fd9e6ea6801a -f41d472e5f776b669843357dae540571 -f41fd0344d6153c89c30cd3e80dcf520 -f427abb103368eddb60f548985b16289 -f42c26b6380dc70dd7f84a3954e6858e -f42eecf0e8b1cec4b4ba6d0a97f30ecf -f42f45b3a01f4751a9699056beb49529 -f431b8e695b29b17210b1372982a90fa -f43b0a557dc3564b86aa904b4bd5cca6 -f44c30356a6c5fdcf193b2cff0fe0525 -f450d1d16b5a639695fd7d355a6ee9bf -f454c9727c0d7de722b5d37ee17aed7a -f45ad72ee02bf09beec4324fb7cf734f -f45ba296932e7ea6ceaf57c43ac64850 -f4654d2b444474ff914dcda61f64538c -f46e6ed50105eb643907a98aa3975c72 -f47722802001d388dc1786eb6bab66b4 -f47d463435efa4a438ecf091d87cdb84 -f47db00ec563292f0ba196b047e954c4 -f480bb85757affca9b347784b7ebe4a7 -f481312137481cbb0cf2e31a5f2ea517 -f4890d39f83bec4007384e64af2290e8 -f4894934b5113a5fb04e4d419be1360a -f48b91c087890949427cbc275afbc857 -f48e5da5c07840294f707e72c5907b6a -f48fcce039a43f984f42d589efc85322 -f49ed9ddaf750875545fa918ec4ce350 -f4a343dc1bc2ae3df0a79bc97b2ef1c8 -f4a5369e5e3075215251e605c6127a34 -f4a69473e4a4320845d149a835fd8c33 -f4a7ef2adcc5f7d36077fdd7c4cb3254 -f4a82252897a9c1edb4fe4a204086908 -f4a95c15964c0caa01bcf4c01aa7018e -f4aa3a047d07d0fd5fe49ce0c452733e -f4aba6c73ce579bc8546d00c3d33d3e6 -f4b3a09d630f3d54301993a53e4b44a5 -f4b582a0087d21e513d5fa15e9a3a2be -f4b6d37437d6f065ff4f0669ee03b1d7 -f4b7d5e7a39e83410c698b525b124c9d -f4b81c2d4d974f587bc28b5a93913a13 -f4b9ec833fad6a119cd6f418e030896a -f4bb276b31acc783b99bb89be6caf53c -f4c37681cc2fb17c2de8cc0a12b85670 -f4c58caf8a062b6d1aaf7a6280ff5b8d -f4c69649fc9c4a996cef907dc2b86b26 -f4c882965cd2e2e7fd9fe628e76a3ae3 -f4c96d08abd9421321281256d3d609af -f4cecd509bd1230a283e70e8f191aeea -f4cf3984631fa8df37a0434379fb2e4e -f4d1186943a42747d980279c277cf14c -f4d19358b3265b40afd3e8fc56029b3f -f4d1e634d9bd563caf65c71f8d37e1ad -f4d368d943e2b7fe2831734f3b4337da -f4d48e1eba78dd4fcf8677045cf0b4e1 -f4d59317bc07a13d16211f2064dfba50 -f4d5a049d0ea1b165b0938fd77591263 -f4d8148e1aa0f25d0e4dcd2334ad0a86 -f4d9499ef1f5968818bb2631fc2319e7 -f4e1270f665e89fad953ec10ec7b6636 -f4e135a6b0566d24e78187448c52e957 -f4e1e20d642f0954305cfdd4a9509006 -f4e35382b734e979628729c6198b5613 -f4ecd4f423b02aaeb00028083ddba698 -f4ef1379bcef88a7ee0e8f42667a51fb -f4f583bb5a19fcbdd534947aebbc43a6 -f4f5a2ef68d5edd3f1a655b48806998a -f4fb91b29edc1dc373422b59d300e166 -f50151d4be8ca575714daf84eb1eda0a -f5027bf02a01fabca23b82d59fbf679a -f50772c610f23a9ab4b759d0de5cf95b -f50967dabf1d968266e0429dad70dda6 -f50db41a3a7dc4a9f4d90383f70363a5 -f50e3b1c7de3e699ed21c8b770649823 -f51065df6ac677fd99c158351ca7197d -f51080a0b8e44d358390a75aaf076936 -f514bdeefd0791ac731e2c0d86e3c7f2 -f51b4ace48cd38e65d026c0ede9c17c7 -f51f6a96417b959da827b8fe670a3105 -f521e2aa436ee425c378e687e2663085 -f525e073ddf746b7674e27870f411264 -f527d7c8e5ffa3afda67f156059deef0 -f5360dcf7ff1c8e6fa3cf586c52a103a -f536882135e737babe9dc5c480b7cd46 -f53c71ec17067d03cecd68165c2bdc60 -f53f048801962c2a66f79ce981b13370 -f5423c1f3178d6f8842d808b5d39f052 -f542b47d00e79e3414cf7767b7a13eea -f5446018bb5d97bdbce6e56e0e1043dd -f546e840fa7d4abb5a4c29b38c602c44 -f54a3742d806e4786b3f800cffa58857 -f54a6e91844f1bb9d547004febcea9e0 -f54b1db3d663af29ea4ab3257a7356c4 -f54f210519038b5d28fa780c4fb8ffa6 -f55cc2992713c756b2391749ac786756 -f5605889c14fc9c1308911b89bc835c9 -f5626f73bb6ab25c3fc11ba2f9fe6975 -f56a97071d4e968726e5414633df9919 -f56cc61e87f8a314cc070fca2cb010fb -f57269f587f27fc090bdddeae46b185e -f577b6fa3054d843c0349cd068174419 -f579bd2266eaa885904a9d5fe5ad215a -f57a6a1f45d8412f1b5ca3a01ae2abc0 -f57ef3b7b370b81b93b4783aa51801c7 -f583a2b000e7aa19c2d33abd62d92d7d -f5849791119ec54d7cf797286adbba8d -f5858c3f572b3935253ceeebc0b6b271 -f58901d598d23f8daf999601b2ae1348 -f59e1e308bbf733ced6e407af78669aa -f59f93b849591b3b0f27f3ee9e5668f1 -f5a09f3a518aa2c86d90972eeb0f6017 -f5a596f61568e4c4321c60b8ca741847 -f5a7fa812ac67d23be78c8d8e90b6aa7 -f5affc64d81a1468028aff6100ab5be4 -f5b23256a1def25d97477ce53d51df2f -f5bc183f1d2992908140d041fbbe4668 -f5be38ca4433ca47ded89aee6c042c62 -f5bed41b3fc020ca9a9a1293441bea94 -f5bf151cfa1b70ad7a2daf0802d39b74 -f5c22142e0eb3eb3a3073c087bce70b4 -f5c5619c731c20ce14022af46688a63e -f5c89f2bd3693af7e116b7328de70c62 -f5ca487e66d7d4fe02d5fb0daa541716 -f5cb591c4d6c711fe5d0acedd87ca439 -f5ce5bcc2a5abc81c204e55cb3a2f095 -f5cea3d7532eb222a2e93a15c69cbd3f -f5cee6611f630d45409ee1de1b59e595 -f5da7c5257f29e4510b14d468bcd6c3d -f5dbcc8ebc597acc2fb6cff177bf2efd -f5ddde7ed7d4fd2d8540b350f2b69d5e -f5e0bef451da7eb167762125911b39f1 -f5e4de9d1d2463ea81b923d3f4bbada4 -f5e6b88c17952cf4c897757638da4753 -f5e87193893ed4ef9650bcb3ccbaa12a -f5ea8a00b617ccc79532c035d43f4de4 -f5f6c509b00d47483821cd0df0bed245 -f5f8aabbd855cc4eb4620b895e3fe1f8 -f5f9d2c230b61c78e9187ec2414b97a4 -f5fa98ade7069c5cd188c5989b356968 -f5fcdde689c0873c04b8702b629fa5a3 -f5fe69fbc0a236093375a2e4415d1053 -f5ff2076ff3a831c1f8d76d3ba1a4c78 -f5fff53a391d3d4d4bd0b86f85eef0d2 -f6025d346d9dbb8c4a8237ab01c019eb -f60535577ff1f14f2eaafac806597411 -f608124ba52a311d57b33dbf32f95776 -f60a67b7a477046b4790f7bd4dc83e13 -f61169e349aa479ce02c36d96647cd01 -f614fe697e75bbda66c9774b503efb38 -f61c35e11e8bb00bd8a4f7b427566f34 -f61d9e7484c2b919ebb998ad4b67d2fc -f61ea37df7ac956fe40c4a4f26a6c0d0 -f61ef535e7f7397945d16ca3a014ca87 -f622ad20394c56419f5d0dc5d82396a9 -f6246ee2746368ff7071b4a2f662d866 -f62b609a0ea76a5b52769eb1e6a75e0c -f6344dd65ff7e490e657f4c59c0065b9 -f6355b04e423eecc1cd8aec680bb731c -f635bcd043ec3c2aa2460614b9a310aa -f637918192ee7593a42bc3bd686ed798 -f63a16d36870a6b9f50e13544f6294f2 -f63fac214545a4419fc81c4a71781712 -f641fe46b391b75195c33d3135201547 -f64500912148caa49c4a0969e46edb03 -f6455ce1b020e05ccb9c86eb52d66a66 -f6461a6249f0ae5be98d6f623efd54f9 -f646d6b5db7eabe0972e48f53ffcd766 -f64c64c0e36502c8e18e250e1b1cc7cb -f64e67cad9b28b3d753873a4d6907299 -f65659ab61e9029bb688f065794d476b -f65a57449fc5a17d94487f59d2dc691f -f660a9ba78b69be922100abaf36010d4 -f6670e57e49dbe96c8bbe2625fbb14c9 -f66d4b03d98403a733303e664385eecc -f6779cb70600de511d00150c57db8f86 -f6817f298ce1a4e805aaace59ab5419f -f6823f40f683f9d38f672912e690a145 -f683ffc6f0282b6a2772880f420c79ed -f687a05c922af1a7dcb3053e0b6fa3d3 -f687e3b344b44e9abdfdcf3351eea462 -f6943608057c906311c8652716b0bfef -f6945e6c3a8039599c7191de19d0118b -f6968e7529ff94567e3fcc0b9928dc78 -f6998660948562fc8efd7dc71d31fbaf -f69d86836891ce66b922a12b5a2ef17f -f69f7c7f7d6c3546b46643e24d0390d2 -f6a116236ca8a6ad1c032e7fc1baf8bf -f6ab7ed53f2a02f141a590b522fb3854 -f6ac18a6a266f077fffb6d0bd0a48bb6 -f6af84b8f7b45dafd7d5a55cbb4a1169 -f6b886b501de7813f144fccef450cbf0 -f6b9eef29ae2a47a51ecc947e64c4774 -f6bac9becbee61f37ae1e0c3b9aec92a -f6bc67bf4cae63ef24b71d2484390678 -f6bf250ff5a219287da9792b03e24de6 -f6c26fc3a6a0f202ec45fe6a9b9b10b3 -f6c6dc9b03a88609819a49e34c4e4288 -f6ca235a6c4b05dcd1e885fbdae45f1c -f6d694a982d2dc3b66a703a045c8ee55 -f6d7e95947f14ab8e35e4228334922bf -f6e0e47c171b7cf323b1071f42fa07be -f6f3c50d14c57a6c709628f03e838dbd -f6f3fbd5998c086a9f4f3a61b0eba7b1 -f6f435ad3e80313800d5251973a9e3fa -f6f68d49ae37fd334a552ba324455fdb -f6fc8fe7c0894fd0076aa765668762e4 -f701909947014cfa9408c04161296828 -f7084d0dd54fddb9b73f89c77803ecd4 -f70a5409e8063cc1f67b95463d890f63 -f7126f8523c107f7ae1737eb065654a8 -f71a30c22504d1ace33bcc747edee685 -f7267220509d9292907102028270e66d -f72c92d1e4f5b3d0df6ea71ca66a8578 -f72d06d7bdb80c3f4c1646a1dda0c82d -f72df1689a945b14e04eaebae1f0beac -f73056cd898d694504d89bc196bbe0a2 -f73ae7c8251ce0b08a029a7d2fd097da -f73c279e4cab87b5c34c0584b103a4ce -f7447f2f888774a1400ea4591ef26fed -f749444ab4fc76d5ba8e7336437aef16 -f749cd51532439d2fa5ab594faeec702 -f7510fde9264b6ff43c92f8f5f8b3021 -f754b8ac3623b691e99f1f0990001847 -f75caaf95b7828cdd4040b6cfcc0c8af -f761c54567315a5151bb47c95aca90c4 -f762fa1956dee3d27a4fec021348fc61 -f763e1f635dd63c8057a1bcb17812486 -f76916d222d73f8a3661671f37c0a7e7 -f76e352612fec84937ef5b4716ec88a5 -f77ac37fc83f913de1775e86a6a88c9b -f77bf5d5e7e1af43de7f0d9b4655a60c -f77df6c8a9131cb8aa457734ad45f9d6 -f77e83fb032c2d42bb961906d121886f -f78146dd5187746f87ba49bc0e2aa15d -f7816f8df4231c5b97cc77e4833dbd91 -f7851ae69ac0e0e8f8271f12a5e2c9b2 -f785fb83454949cdb131a68248506372 -f78709bbac3e57ecdb2be240821b77c6 -f78a5b1a14cf49db66c4dac96c92dfa7 -f78a753d217cd17a7f4693f1f95be63b -f798cda73aca6fc827b916c73a8aa2fe -f798dbfcaa00339da53b9258a537d8db -f7a20485b63536aff4170b457cc43bfe -f7a4af8f06680d894cf434894184fdff -f7a6275abb2fe0d978f00c186228ec3c -f7aee30e443e123da846a452a9d95d86 -f7b0ce131184ce1ff8971fcf4da5bed1 -f7c376c3a5e371377a84b3e261f3c973 -f7c9c53317faaa6d4ad9501cc436997a -f7cda0cfa0b7ec9b02db391d776dac85 -f7cfb8fe1fd1592b46accf4d83454ff4 -f7d4a989d34d44b8a4d565cde239822a -f7d76ede157bbdf8a666777b049d681e -f7db10d76728faa29b8349f2712e46c6 -f7e7abfcb75bb658d8958b947f3d524c -f7e7d8977756e13e00f02fc2df419b5c -f7e83a2bed1ad75f5828787ac9e9da6f -f7ef3d1129e3e94c0adb5a4bdfb574b6 -f7ef8137b91863c2d5753e87beafed57 -f7f4b1996e445d9afa418c39469489ee -f7f99379069546570b4239b6f7a2cb9a -f7f99ba2603ab425145afd6493b4ab19 -f803a4f059d510604e973050f19f6899 -f809a30f8022fbc0dea997a640fb168f -f81000383a279247b7da858be9b8aa94 -f813c90a8940f1b1d75720babf06bed4 -f8147a80b6570c85575bca5addb5170c -f816990489bbe2d2d069d5261fecfaf1 -f81b8de4cd2bf792c196bff8c75b4f49 -f81b9426ae3ced5184c06c83d8641180 -f81bb44519ccb358fd953fc837eb87c6 -f820546f4d19b888a5c1fd9e9af3da0a -f8267072405d07590851124f661f636c -f82759dfdc562df9a08b2925e3a138af -f827756d8de0937fcde5329c7dd89007 -f82abe1a3a50c2529fea06a6c6163583 -f82be6b49810c39ae7fb00bcdb5c5e80 -f82bf8eba6784abccb5df8c17b28f8ba -f82c2915c1b5c0aaeaa18019d8ec0ded -f82e1a2d97ea5301751686caf9e059b3 -f82e9a23ad7b7a89fec3aa9ebada7cbd -f83235dc5d0970af8729d8f47fd4cf9a -f834783e6e60484fdd3b59865170bb4f -f83b0aeb7a694bd893f5c37f86f3c29b -f83c2f652913ae8029e5ec6693741065 -f842c0b796e648771bf2cf8680be934e -f84ec0d33c93ee7e06105b48f9f5a4f9 -f8526e53f50cfcd2e541679e49dafd9b -f85616d6dc9be9d277c0b1ee3b73779d -f85879a800832b73d1a289f65e11709e -f8597ffd56372f2781a2db31a606fdf3 -f85bf2fa52d06843295dc693136d7f86 -f85e47cbe27fb563f0904cbd02263759 -f861425461a11646eef936605a96017d -f8616e075c68a7e2f2e601e270ef4aa0 -f8625472588cd171d8e35df46831721e -f863ad0ab3de92cd826b68436d24fbdd -f867f47c79dbfce0720adfe5cd31d279 -f86ab7785d5aa56d22704ea5b093b2b2 -f87203792ab7bc3fd3ad53089758f531 -f87ccebe49000fdabb03ddcf187fbaa9 -f87db07c2ff13340a2c1a7cbe3a6c869 -f87f4658340a3cbba3dd26615076d1c6 -f8800dc70feec1c9395408b2d77a84c5 -f8852a7b7802871d50cc485da83b9bf5 -f887ef0a7dda73b68859e853c9270de5 -f88a34a32f0777ec5fe3f302afb0bbc2 -f88b8abab5d2033e52b663b2819935b9 -f88d63529254f26680af704b1c4a06fc -f88dda5c9f5fad47e0c0f3bb795b4d38 -f89de52bb851f81a500cc7f49f0cc728 -f8a48695bb68edb93d6b1a5bf7b439e2 -f8a653aba017d4fb5adb4c959e5cfd41 -f8a699abec9977e3d053e09a34d58c82 -f8a727d703b696f9a98886a0a3f5ba9b -f8afebb23e2b616e2170d5f9953f87ab -f8b04faaa2fca17ea5486ca2365db6a3 -f8b2d0adff80ef5ac0a95dfbb8299653 -f8b825ce9e0800df2d0cdad8f4b37b15 -f8b9a25360a47e7510cd767400f7c60a -f8c5aab3ea82d98f8374b5360927743f -f8c80652851ebfe09deb57b595982032 -f8c940caa27e5e313e8e0f96c3ecfb3c -f8cdc68a41ee9f4145353d1fb6286a73 -f8cfe4bca8bf3654e5011e869aff5f10 -f8d26dd0655ef2c22841953936d596ef -f8db465ffad10a16afb0a82e93bfc08c -f8dfce0fc9e8e4f85872b63d92f34790 -f8e24cb8bb7af356ff4b9669dfeaac35 -f8e3c28b4e167391841a2f25ffed10fd -f8e5a0ee265a92386c04e2d723413857 -f8e85466638a7a01a283a02db5f1116f -f8ebe35c6ac4cc180ca649167a5f3fef -f8ecbae645dde4129d22f553e0d1ff9b -f8ed8e25e083338f1bd8807901618f32 -f8ee8ed23072cea675a82f286f2f0ee6 -f8f3ffffbbfab75d237d91ef2822ab61 -f8f7796ebefe8fdff5b30b2e9fd4943c -f8f8019b3a5eab0de145f3f846bc5946 -f8fc1af17297eae160c7aa9d58a80a81 -f906a541f44dd38fe354e76f434b126b -f907724a36df2fc88ab09c596bfee080 -f90a1802daa91598675695bf0042bf28 -f90cea63174ed8b6bf37ae3dd47cc599 -f916888f68eda17f6784ebadd99d178e -f91d4097c44ba6c933855464c3f2fffc -f9258e1d266e0b48fdb6a130a268bd66 -f925ec176a8cc6f95051d78c17dbc3e0 -f928eb5de7baabdb19edd59d4aede584 -f92ce1b907f57cf7417d3cc513ba9b11 -f92ce3870ebcd93499c261334d356c39 -f92ed45a55f6a290a356c7766a312740 -f92f9a797f9f0456615610a63228ab63 -f936ae9c9763b2eeb6abbc4f567159b9 -f937500d9feb283eaf4b3f14082644ab -f9429199f5c547be10f0e3ab14fc70dd -f9453b3e0e93132dc959c22a43127183 -f946683e3190902b4b03e1b708cf1f52 -f94881e3cc6aa183f79fec0ef95ec0b5 -f9503246f3fdb46112aca07401aa0faa -f951ddfe16b449ff76e30e8b7f38a8f2 -f952c4cb3c4fe91ef1bc3ba667af5fba -f95719cdab587dc7e7699e3b2125a8ca -f95f56577e263aa95e205f2558033db1 -f9605fb6d2b3e92526591d297d9c6a2b -f9620641001cd8c5a474d0d23fab194a -f967a903a1737de93afa7014610973c9 -f96af132586fea56dc33006e7823cf4e -f96fcab9bd4b43a57f222be2cf844007 -f9779446a6063aec25f045c2a6a50f64 -f979692cb7b47c5a74dcdf028b9d4922 -f97a5c476fb45ae006d4ff800fe052ea -f97abeba1fec66fb3c66d8c58696ef59 -f97ac150be6cad7d47c48a965d28452f -f97bf35fd10f13f068f6fb9e15bcc102 -f97ea21419d636f3c9c0a7fd765e3574 -f97ed5e2c8abeb2f35772cb0db11b0ca -f983ecdc1665f293f2a5acf23ad9fc24 -f98777010985cbbdde90b537ae428341 -f98922b8835100d9038da681cb283dec -f98976f301b9eae28e6b63f5f19cdd68 -f98ce57c07016f0874788382bc088c7d -f98d1f1c28a0a9727951a3ecaea39579 -f98d73d2829a0f2689ddbe64ee6398fe -f99473b28103684d33e0382a8e98a7d9 -f99a78610e38cf7d52570e3eaf79cdf5 -f9a092372b94401be06d9636a3c93e26 -f9a0c4f3b68e81b71a6fff9314d9bc5e -f9a3e699c6afb35573bf4a0e52302290 -f9a4d6bc5125a69ed61a5b2f704c7497 -f9a78b224dfc5c84774c2adb5f3c9bcc -f9a887dfa1207631e00a57d30e985b3a -f9ab9e4794e675d96916c54747d22172 -f9aeff8aa8dfa60ed193452caa58d146 -f9b3fc349298adda18ca51995b61c309 -f9b4e7d296c50859cfc4c6a6c1d31bbe -f9b5b096e9db36b07cf5c9754046b7d0 -f9b8c07a0c3a0862e00b9440f897a9a8 -f9bb97a122e38d1cbf8d86a7863eb8ef -f9bec4a585840c71f1e7c7e5f83c919c -f9c0174dbba276924761761a633406af -f9c28dc5903dcfaeb24cfbb5813274f0 -f9c40001af9f93a2ed86870ad1a86045 -f9c922f7327dd763312b17eed3bc31ea -f9ca4f576f9cbd85c4f9e3c8ca7d1283 -f9d1064c5f1c2e1f9b3730ef1607f047 -f9d17038b999da5e31e62b7d5bcbf37f -f9d42be672d46d208169d6535129031a -f9e05a49b1c65b3b1f7daed40b42107c -f9e0da0085e9033ac59e8c462e2b7252 -f9e2b3179ca9b381e2690ab260ff92bb -f9e655a58eb17503647ffbf279a3d3d4 -f9e777c6711d01321fb8308fecab7973 -f9e8ddd1073f417f1499649b8fbaba58 -f9ecb795d1c0722f3dc1cd2a434f8483 -f9ee1dda4f14147f748bc233a8503f96 -f9f5196d60bce1820e27223893cccb79 -f9f9f4b2bbcbcb7209cdb0a435b5f4be -fa01978eb0d0845e4abbaee8e881054f -fa037d5e66c18d6d1680f6f68dabc5e3 -fa05bd051937ce962fc8fac0a0cc238c -fa2235e6c7dd64dad660dacd29080e98 -fa2465aff828419ca8878e3cef919862 -fa26fc9237dcbe3594c56a258f595a02 -fa2c9efb2c8345d4ce2c308e7da95f84 -fa35082e03830233169893c16382aadb -fa3d2b97b9ad07d5a54868af4c5d8c85 -fa4158d640121258192626814009fc60 -fa4359b74375cdf5fc3f73bb26fb97e9 -fa4385ee29ec1cb6bba5e307fec9c503 -fa45c6f27aa10e0b60ffc937f15fbaa5 -fa461fc35c43b07ec62bcf2f1850947c -fa46a0efa6abb1b4512a2382ed5cb678 -fa4730776e7d079a9dfa4450c36b845d -fa4c3a687cca54c1da172bca8b7792ca -fa4e75bad011d2ec7e59614babd5091a -fa504151f0cd4dce604203f8f6f068d8 -fa5724e95fe28999d326585a7e956ded -fa5a11ad3c10a3e4a3d5d9f40ab294da -fa651ae52ba45e0fd824f52984d7c9e8 -fa6a0fd2c085cdb1135bc08c0aa33fa3 -fa7296ab1e87045ceceb9093e5f321bb -fa7a5fa5676bf2a6c4093e2ae6833a37 -fa7c858e3da3a697de502c28a2fc486b -fa7d1a8c749d62b235eedd3b4318080a -fa7d8040580cf953d2002e6b1a0e1d6b -fa838b620ffc6b8f65235e3b3d453c49 -fa866296b521b84ccb569f8f0ff66c5b -fa89704df325b84f525e9477a3ddc19d -fa8b47d0530d20b3c421927964c3ad53 -fa8ce0ace709c15f254bebd8a921f9d9 -fa8e6aec8ff3735a84d076e3a5cd4a24 -fa8eb7da7e8e5669e6e5969cd9194d71 -fa962c1f8d72f95920253d5ca587e7ab -fa995e6763115c07533e2bbce9486ddf -fa9fb394eb9538bba829f89c920894c0 -faa087d70e048913f7ef0a6d59746f70 -faa700453d118197208de1a1a8fcaaef -faa80e936a3ebec41bb07f0a6c4da9f1 -faa89e951f6c93d085b942ae1de6db80 -faa9fa2159f28bc9d56085f8ede61704 -faaa3dd2f6970b3257c3bdc5035892bf -fab0659046bc5d0b352bb6fd62e2ad51 -fab36fba8ac224a741f42798bdfcefc7 -fab5d88523a9abbc69287ce2944b435c -fab65b0acd689ba2ae111a2679f5b91c -fab7895af41d9dbac71400a4127c4ed9 -fab9871f7a6683cbf2560359f23c77f2 -fabb5c59a47c7a13db14960d9e13374c -fac6184d18bb11a485959d3b5d494dce -fac8ab022c0e7ef6276d69369ec7989f -facb0fa339e058eb1df4a2d2031bc0b7 -fad7ef725b8aed057408a25958c250a3 -fad896395e8fc5a91ed882ee2e47fe72 -fad8c2e08e76fd604661e68d63121334 -fadedd2e012de8107cb21aacc3aee331 -fae0d439a8a45e7ae8ab5286c046020b -fae1ffc29e1a159a2fa99af9bfb876a6 -fae604a99d67644fd3f1b42183b62337 -faeb936e46621cf84418c76a3219240b -faee4ea9afc5d2e1a47d207a5309895e -faf1af78fab2487a3e097868f6d07fee -fafe365b1ba1360edd8a727b339f45e6 -fb017f1a3666def770a8b8629b4f9b50 -fb080da5fe4d00fd8d5452d1b6c8a71a -fb081a7fda5be8d93755d385268051a1 -fb13611a83817133b6cafdef4d48c91f -fb1924537552ddc531b7000ba4c8a74a -fb1d426c53565ead75b86dba1d29fb66 -fb1f9d9d695c2da150674ffb33a83ea7 -fb20e3352381dde40c16a07f24549bf6 -fb22ea4fa551ab36438f29ffb35cf939 -fb27a3b8c338c1674cf2a2dbff9a4deb -fb27b638e50fd26fc4132aedfefbad75 -fb29dc7ea8d1c118b759f974d08e741a -fb3360d8f54c295c0bb22bf003ec618f -fb35f42dddfbd0435f337fb691d5a466 -fb3f8d6b6ee8cb386bbd7f3f4116e645 -fb49bdefdcaab597d48fc0917239e9cb -fb4ea0dbfc81e17fcfd227e4bc3a164b -fb5434842ff1a0fcc3b3da0f5ae6625e -fb56eae47ee161a8346258c28b234d99 -fb575c41f8dd9733f290f8b07d8edb05 -fb576929454a179f274ab68bb2e2161a -fb57f8fc44f509852a161595319d3bfd -fb5b973d3fbc66756ea86f086e66d4d2 -fb5e6495e1b8fc7f2e8f66704a4b6ce8 -fb6b07262afab75650b1c034dbbdb4dc -fb6bb9d71a3c98a7a7235e89e7940b12 -fb6d3c2b88874d79cf1fdeafb3ecbed7 -fb6df3c111d80a2c8f4ef22a8716e73d -fb6fa1323406695e86969a294249f273 -fb733df05d7adb6e632d4dc62712f850 -fb762801e562c83026b0bb4c3fc510a1 -fb776862d4376970ca29c22582250ffd -fb7a0c166bb6f3070c8d6ec05dd0f8c7 -fb808c8c3ab523bd27f8a31dc27b7535 -fb8a37e41f63a5a9af907c1d2b0a364a -fb8b5ef471455e141b3ab83dae93ed9d -fb8b8a136ba81a6abd9acdd4506e2d40 -fb9017301e4a6d603b5c3584294cceef -fb939cdb55b13de3e0db4246f7e1c777 -fb97e4d8a1cdcd62713aa842dd5dea65 -fb98a84ac5ee650d6e626b5feaa2c618 -fb9e24870528d5db749d494644d2a1a4 -fb9e411e6ea6d8f2d72fae2880cecb00 -fb9ec1e839409bfc2c8048b14bf3e9a7 -fba36108ebddf597f97e79fb14a9ab40 -fba3e0ecab90f9d11b34e7a2747dc13e -fba3ed6e2bdaccdda6c28e3ed7012bc6 -fba408cc4af706a59245b5518886adb4 -fba9d1be560569008e4f6ea3dc1f6bcb -fbab59a11806d4402b1595696ff651ed -fbad182af3c40129977edaffa7d0151c -fbb19aaf3cae34e4b5952ed05fd3e677 -fbb4bfef808258683f6af955fe7e7d69 -fbb8d5c6b127c0f38a39632a64b23fbf -fbcca6b80150dc0c5b9669a4db8452e8 -fbd00d79d6a00541b2165011f3c7dab0 -fbd92a61d0b67861072a62db1c55b3a9 -fbdc6b1f6022752ce6168a436ee4c95f -fbe0d3c25d98a587ea9c9800952e2029 -fbe262f49b737942364b8ab3ef0b3f34 -fbe5f3c9ac4ae1782061ef8451cbf46e -fbe656e2a158a085f289478e63bc7475 -fbea1b01e5507201b1390e29b7690d0f -fbea44f6ee0362988647a80c440e778b -fbefdce4ffab4dc094bb1af3f592e9f4 -fbf296136e6a1f1da969d632d5358a42 -fbf2dd0171f9ae0da4b3e74b2be39bf1 -fbf862fe45e8d65ed1b65d17990edda0 -fbf92432e88a9f67ae281693f5c99ffd -fbf9feb7bb8ea0a7009931a4b9d620ef -fbfb668cbe5f326874ae7459faa04012 -fbfc3a765795e088e49f91f504072060 -fbfceb6ea62b59ac278681c9520868b9 -fc023fb452f2c9271d62e7e187d5e6c9 -fc074137c8a0cf984991cd0d9864b7d9 -fc0ca21ba78d6df6bb42e77484628a3d -fc0d0a15bec6adaead413017a0d5343e -fc11552d8e395597f16b7e8fd79aaeac -fc11bb3ac7377c3c88db6756715d741c -fc149c32e4736cc6314f76b301e12992 -fc1d3170cccfcd5853e37ce4729107f2 -fc1fa3629c39cf3eff868749b06a16b5 -fc2008dee7a6cc3bda7e7f727fab16dd -fc22b71b75d299ae32ac627f8e92326e -fc236983486a3415e9abcc5bb71333fd -fc2369928a46147afb31de8d19b56597 -fc2526723a80c61c9239f0b903ccf8f9 -fc265c7558c0a907d10e94d1c6888adc -fc3810de7638d218c98364ae47a7109b -fc3954813a6b9d0ca92adf723fd138d3 -fc3a2ddd0d302fae66965209656d16b3 -fc3d6b560e667372413eb7fe1691b268 -fc3e537de087c9715a108edbd927023b -fc3f16b62d7e1169103872f30a0acc62 -fc41cfec1ce9884b0aedd1e0b0e8ca3b -fc48bc37d13b76a3ac42f43c09041969 -fc4c378d4010183c8a6edc3282fecf5b -fc503b8641bf9a8b12ad1b2adb881cf2 -fc50c3f708976b7c64a0ad23c82831b3 -fc54c6d790b32a8967914549843bad5a -fc5b01c5714e419acc0b0dd6c38f3fdf -fc5dc67c759865b4b78746cd03535ed4 -fc6174e5864957af53ee1ea3ac4a3c09 -fc626c6e628bfc96b8741a547a8fa65d -fc666250be329f146fbc66be050be2b4 -fc6d9d2eb6a74a6716b7eb91a2292bde -fc6fe7eef452e5d3e9b448f74ddc793e -fc70fd01464da618bbea9e2eee8c18d1 -fc71264a3b3b64d14ece2113af4eb9c5 -fc763ebb1d4ddca50f9827c62b209638 -fc7f38ee96e30749e9b0b0f55a91ce4a -fc833217f52753055888268d6e54872e -fc83fb0fa8953deb39a6cc1b39b3b8c6 -fc8535e31336263e57f87e7bc39f8070 -fc8b73efd5c618ce4b7811571afe2cfd -fc8dd5d947e330bc8d31ba285ede5a51 -fc90807d5478ced76b4dd3921359c2b1 -fc964a0290259c9fc605555ec4a3bd56 -fc97296809c1ea00d1cfa01ed2e25624 -fc9a947c3b9d12a8c45dd7077be6b74a -fc9dd3a43f0ae139e9ae5aadd80ddec0 -fcb015b3ac947dfef29859a216667e56 -fcb303d15bc83e94107edc4999effccf -fcb8d5bb3b6f8cfeeae8a036679cc493 -fcbbe2a3a73071f3745cc2d3e981e7f2 -fcc21284b660c98b25ff528f6297a6db -fcc4a872257764710fb9ac92fe749a89 -fcc80212b0e0c37640c2e3b94280043b -fcc9989ec3765425edbe4d37b4c9a8ff -fcca6c835ef22099538816773039d549 -fccdbf01805e5b4c761c1d6b8e93153b -fccffb6418e549a53bb64dddce711e55 -fcd1763cb95a5438899dae62e7523beb -fcda2d55e53270096110edea8dca7060 -fcdb0ac83d9d2757f3e1496e6a079754 -fcdc5c5445ce000e8d63836f98f1bdb3 -fcddbf092836d583db0ec0ddf4fbf9db -fcdf492bd75a038407d235a0e4413839 -fce648aed98c9939a061fbe8179835f5 -fce6d08af9e01cb22975a6a3f90009e1 -fce72f2e0043f3c31e6176684d9246fa -fce8998efd3b636c509409a2e7efc626 -fcefbd9a7a8ee10f0851b948c1509901 -fcf166e9b07084c52e56d34024090b14 -fcf2a5e325d5281021d1c2845810ff63 -fcf3c1325eef4e6fe634948c92c665a0 -fcf8c2a97470e283b313b9eec3421f75 -fcfbcc7af26872f24884bbf80b75ff5f -fcfccb533264308cbb6ac8ab417829c2 -fd046b6d0c594c9b78d275d987305716 -fd0515c6389d223bf9f1d42285ae349e -fd062d7de1d16fb189f9f65e90d51b11 -fd062ea33c146f6d661037cea6ce1ccf -fd081dff2a98ab0716cc0d155aabbed4 -fd1175e772ae2cd8a2d4b8cf07bdf640 -fd12ef2c93a6ef7653f4898ab27df971 -fd1444c780f9a969ef9e55e13b671471 -fd20c40371557ad7c8d7f70d7a1a7848 -fd22f429a80fac17c52fa8a167fcb63b -fd2339a6b83dd628bd7939008799ffa5 -fd27c4cd0aa96b4bdfe28e7ee4acb277 -fd2b300f150e011e41968639c7378f3c -fd3012b7234ca65c30338b45f8124c90 -fd31876328cf86684aa47a739c4bda76 -fd341deda9d88225509a481a488841ee -fd39eb64b0d7d81cdd3a4dc3f44d967b -fd3c17a3afc6c89ec23a6e37fa3ba25a -fd3eda09ffc6ec510f85c88538cf5395 -fd423f903e5a1a3d746f29268f929176 -fd4428791ef1f8e75569c3e1c715da1f -fd4f28f978f2bde269722f8daf901742 -fd59a90519005fd5220ca423f40e99e1 -fd613fb1cd38ec2801c6d1b0e2404542 -fd6211405be57b350fe61418ffb6dfae -fd674f4ff1506c34cf7d9d17002ee155 -fd6cd47d9c0ffc6995130247c7797809 -fd6f3500071e747c33de5634631aa088 -fd7001af36561310393623fe0bd63175 -fd77157c9933a8957d403905e55b679a -fd7e8c69413803d51ba18f4c13630e52 -fd81815b6f64135c0adcf789ba7175b8 -fd85ea64d5b4232e20a48341f2dd3916 -fd875fdecacbb7fce43e07b03998c349 -fd881b09ba980e349c818dd359ed0a73 -fd89a12b31567ec2d4339d7c253600fc -fd8eaae42e11028d042a82d89fa6d38e -fd92b797ca4ef0f2c894086b4fe03a9c -fd9654f9e565d9619b8b92299e75009a -fd98df84a1d9d618a3be5a12e21f5f5e -fd9acd7d1fe07fa97bd8998e6c684bba -fd9b31a7e8f15614a5749f5801b31176 -fda49b7d8969d5760164d276776c10fe -fda9c4ade4e315c7326d1c43dde1be9f -fda9e8d5eb01c891935a10e253807fa2 -fdaae9c5ef125fc3491609555e79e250 -fdaf465c0f20e3730fca93abfae8ebc6 -fdb1a394b867ed58a8d302e84658a58c -fdb637971aa71ed8bc65f750367bca58 -fdb68d18a66772632620d9a9ad353d35 -fdb6a7367206e8dade52229154b64334 -fdb7fe66042032dae5cec18eb101e47f -fdba6a77e48c63e92329930f2e29a1d4 -fdc08434b29f1997498e27dfa9316433 -fdc0920471e7f68a4849e16d3527660d -fdc0ba24323e82a3768f2d1c61c80a31 -fdc1c42214a4b808ef1298f48b9132a7 -fdc68b6ede67cf3fac8bef036d5cb5df -fdc6d856aa35866cbe00d2417c452fa9 -fdd3325911a4fce988f6fc3d9c66f64b -fdd55c04f1ecd3e9a0170a89a7eb6fc5 -fde01a45a97e078e8eb026d7afa79a3f -fde2458b309db570c11d761a685858be -fde36d1747ec7cc9085fc9b8d4df64b5 -fde4efb42e6fe5a01c166d2c16ebbe59 -fde50e611451e737af52951b44b38c39 -fde5de8561aaf55e03f036d42a8db4ff -fdea716637af928698d158ebd9f0b036 -fdecd15430104d1cc27995cacdd24d23 -fdedbd76af185e63d9e906fd36769e23 -fdee3f95389ca55e49e52f273699b691 -fdf1d596c3748479836ef6b264260cf7 -fdf3b9e3b8a5508c8767f19c5628f8b8 -fdf6a8a3218ad8b7ab03734de0ab48d0 -fdf76759174cfd9e25fdd23e5f263c08 -fdffa96d3cee1ad486c37d85ffbeb80b -fe0465a1ff85a5c213daafca20cc0c81 -fe0aac9a17699e7e1dd875fe76204fee -fe0c2fa96596de96d9b24e73b865997d -fe0c7500f6d98963f0b8ab0da4fc1bf4 -fe0da82b3d7d9db97e96f4aaa0d6a33e -fe145a6284741ba48c35e9822239adb7 -fe15c0d5ed19b55811459a1ed2e6955a -fe15fffee1fd535463472be3dc09c360 -fe1823f3f3ebc9c20dc27f3c42fdb6fe -fe1b1a75e02acb8610c2351fd35fbce0 -fe1b6e25a16c65409b7bcdf966ef4f26 -fe1d88ab6c33ffec4e6fdb12f9c46ee6 -fe2afc30a2fb4fa74563bb3120e250ee -fe2c5574c9c0292ab8981f8fd8dea837 -fe2d01bfcecde85adad27b76548caf96 -fe32d39f47488efb59aa1d2128229b01 -fe4302edc88561f0247d0ef1dac0d5d4 -fe439b38a13bdb8df49b6a46ed2a3f40 -fe48fce1093ac1ea73fe5801af68a64a -fe4afebbc7eff059485846198c812a91 -fe4d5f08e49d31e65616cf01bb610afe -fe56878bf49aba131992500c61be3d4f -fe5978aba3beaac52dc67e93fde647ed -fe5a207aa868d990e1cc99df1ff69ca1 -fe5b6150c33c4aaa924cf0822d53b96a -fe5c07a8cbb65ad630626e793bae9c07 -fe67f66eb182669b89a54298eee2d85f -fe689ff12979381ac939a82725f14b5c -fe68bb398c20b95ad3ac817d3961b8ec -fe744c3df1f4dd9fd7001a21b428a4db -fe7e14d43bbfc0e0aa5aaffdd4077eb6 -fe826116269e6dc22fac3d927e9aee48 -fe84cabfed2b16dd6f95ab2bc663d163 -fe8b84c3fd2e847cde501e2b52205bc8 -fe8d31e8c9cdccfa8dfb9a0c39c48afb -fe8df9042c71f7625ffc15566ea4042f -fe9152a485ee933f604630f906879662 -fe9170c99cfe1e1cdc11ea69f9d16271 -fe97405194860b9d47ba30470dccaabd -fe99edabcec5bd83acc09165eb9d9c90 -fe9af4332c84650bd962178c16209751 -fe9e03a8013f452eab395047fd68a2f8 -fea1c72bcf7b0549e615228ac5505479 -fea6e0fef29727269d12a02d03e8879b -fea8400636aa6182a7b0a0f5ee66a540 -fea9044824bc24433835d73fb2baa82b -feaf09d0c0dce53722d9c1a8de4055ac -feb3f68293b09c5b146eb73ea1bfcafe -feb70e4ec3402e1caca4896fb06bad79 -feb73e866bfe9a24f4380b89b41c91dc -febc05bb5e2619915f57bed34496a080 -febe63320d1abf4e5788f4b92cb1a14e -fec024dfdde6e347262968adaf10367b -fec1627ebbf9c2e0b19aa1abdeace369 -fec31e3c5636d034db7d77b74d392837 -fec6c4dc0fb8c6387ff66142a4390802 -fed288c923ce63d5747893c906b4d2ff -fed6ac3f495a65cece4eee539b265f98 -fedb8d83f3f99ba774319ee865b2bcec -fee08b0ce490733f4f40ef2c16eac7a4 -fee0f3d3a27eb5c939689fba39817323 -fee44874cfe6f529e200eaf8f85df43a -fee8563a3bc62ade3295a810e31c4772 -feec501f02a92df68cac935fe8c7d80f -fef7884338438ce445b9a64408d5836a -fef8a361d5dfd33ecba109224ee5038f -fefdb6f54346b4cdac54bc3038bc9f9a -ff03868f631ec2f4240443ca618a4f5f -ff0afc56b8e788821134edbcc68ff703 -ff0b4fa7b69f4771296ccf11f63eb5a6 -ff116155f8c0f0b3c51d17f26beb6911 -ff12fcf47f47fbd64a794be6e5519549 -ff155d98f767cb59ab511be56e2d05b5 -ff17ed00fa3884f4cc42a4b0f0c2465f -ff247086752290cccbf4ad67b5250166 -ff25b948ce2fe844ab640c4d6ece3538 -ff2607011d5a5d67351c9b17c5ab745b -ff28180d46379384f4c773b7d789a0fd -ff2b3eb773a53660896b753067686cb3 -ff2c672b3efcd05a680e799363f406ee -ff2f5df7b3e1e330a67f5b778608ac4d -ff2fe843be87cd71bfc7fb0452908456 -ff47df32fa4daec649bdb7680a342718 -ff495554aab44edb5e62f653fac69326 -ff5185fa1dce45618224432060810e3b -ff590878a55e5c5969cded82ec13584f -ff5f5c1188f105b31db7a629d99cfc50 -ff61bb10d210bb0c72b0ecc6f45b722d -ff620ba75b7700af24d652173a38b5e3 -ff6347cdbff3d963ef396f29c89dd5d2 -ff67340c069120c7f71a3afe1b34a698 -ff68c100187941b90afb53f08b8a9f81 -ff6a89a5d252648e8e91d375cf805675 -ff6c730a20cd7facdac591a48f9ac3a6 -ff72d7b87a310e97ec6c9c8e8ce4ab77 -ff792104847892f2cf829a8691c30165 -ff7a6fc72552833d6aa877b8cb8de8aa -ff7ae88de9f08a441636378aa4ea2021 -ff7f7dd10730508f2921ac5a14d6d5c7 -ff819ce1be5c74133dbb80900f60f913 -ff8204a4476dc0467dbadae97251bf6e -ff831717a5809c0c5e8a97e514f6294c -ff8acd12b05e64f5a6277f1cab9e9b1b -ff8fbcff1f2c034a1d6cea2c483241a0 -ff91d654536517f0d97b9fc32ccf8d47 -ff93ee2524c5ceeb4f9e875a8f4524b8 -ff967e254c09a5fa162d2c513e9cd465 -ff96cfc14006dcd5cd2f5055e02692a7 -ff9d7b79c3596d49a293888a9c8b6725 -ffa21619d2a8bdfb201727d6429b4d74 -ffa622a3c8bf0e0afc36215800b166a9 -ffa707f1252a9ef49255c0e28c287ee2 -ffa8a0b92a632f93b26d210aa8cb4094 -ffabb8920899a83a51d88dc6ba5e2596 -ffaea6b3910d55fd6763508599326c3a -ffb33077c61dcb2d89ce36de45d66db2 -ffb74266d52bf044cff87eab01bcf2dc -ffbb402e50ae32f31b0f54368603c4ff -ffc5e9210e86b4d906777e35ccbfb0cc -ffc613c073b6677d6717edd112f10a47 -ffc8d8c753026ea34e14d1276bd76b06 -ffcb39916ee568957d9560d8efbf199c -ffcc56cfee46a62a7594c29b401bf8cf -ffd38187be49ba0f49119fe65b09cd0e -ffd3d80bf0be1a7d0603e9be1e6405ac -ffd68d3fb874785c712b4d0e9a3e3c9d -ffdbabfd29ea1c65e46c7e60c16766ad -ffddc05f4964f02f82dae3920d11eb63 -ffe00046a95ddb1b7ac23ede3b3ba5ba -ffe47064a9535832c1cce0ad42157308 -ffe567b7773e542f81654a93768f7223 -ffe69d829af68ded36787aadf32bbf95 -ffe78d515dbed78b8a75415c98633ce1 -fff0ab39c75cf5441fcece68da746c7c -fff2eed02d5934c5443f7b727bcdb8bd -fffb4ac56addf8324be3e7e3d9f4a8d9 \ No newline at end of file diff --git a/searx/data/currencies.json b/searx/data/currencies.json deleted file mode 100644 index 0e4c5c4af..000000000 --- a/searx/data/currencies.json +++ /dev/null @@ -1,15052 +0,0 @@ -{ - "names": { - "verenigde arabiese emirate dirham": "AED", - "درهم إماراتي": "AED", - "সংযুক্ত আরব আমিরাতের দিরহাম": "AED", - "dírham dels emirats àrabs units": "AED", - "dirham spojených arabských emirátů": "AED", - "vae dirham": "AED", - "united arab emirates dirham": "AED", - "uae dirhamo": "AED", - "dírham de los emiratos árabes unidos": "AED", - "yhdistyneiden arabiemiirikuntien dirhami": "AED", - "dirham des émirats arabes unis": "AED", - "dirham dos emiratos árabes unidos": "AED", - "דירהם איחוד האמירויות הערביות": "AED", - "dirham uae": "AED", - "emirátusi dirham": "AED", - "dirham uni emirat arab": "AED", - "dirham degli emirati arabi uniti": "AED", - "uaeディルハム": "AED", - "아랍에미리트 디르함": "AED", - "jungtinių arabų emyratų dirhamas": "AED", - "യുണൈറ്റഡ് അറബ് എമിരേറ്റ്സ് ദിർഹം": "AED", - "dirham emiriah arab bersatu": "AED", - "diram emirati": "AED", - "ਸੰਯੁਕਤ ਅਰਬ ਇਮਰਾਤੀ ਦਿਰਹਾਮ": "AED", - "dirham zjednoczonych emiratów arabskich": "AED", - "dirrã dos emirados árabes unidos": "AED", - "dirham eau": "AED", - "дирхам оаэ": "AED", - "уае дирхам": "AED", - "emiratisk dirham": "AED", - "ஐக்கிய அரபு அமீரக திர்கம்": "AED", - "birleşik arap emirlikleri dirhemi": "AED", - "дирхам оае": "AED", - "أفغاني": [ - "AFN", - "AFA" - ], - "афганистански афган": [ - "AFN", - "AFA" - ], - "afgani": [ - "AFN", - "AFA" - ], - "afghánský afghání": [ - "AFN", - "AFA" - ], - "afghani": [ - "AFN", - "AFA" - ], - "afghan afghani": [ - "AFN", - "AFA" - ], - "afgana afganio": [ - "AFN", - "AFA" - ], - "afgani afgano": [ - "AFN", - "AFA" - ], - "afganistani afgaani": [ - "AFN", - "AFA" - ], - "afganistanin afgaani": [ - "AFN", - "AFA" - ], - "אפגני": [ - "AFN", - "AFA" - ], - "afganistanski afgani": [ - "AFN", - "AFA" - ], - "afgán afgáni": [ - "AFN", - "AFA" - ], - "afgani afganistan": [ - "AFN", - "AFA" - ], - "アフガニ": [ - "AFN", - "AFA" - ], - "아프가니스탄 아프가니": [ - "AFN", - "AFA" - ], - "afganis": [ - "AFN", - "AFA" - ], - "afgāns": [ - "AFN", - "AFA" - ], - "afghani afghanistan": [ - "AFN", - "AFA" - ], - "afghaanse afghani": [ - "AFN", - "AFA" - ], - "ਅਫ਼ਗ਼ਾਨ ਅਫ਼ਗ਼ਾਨੀ": [ - "AFN", - "AFA" - ], - "afegane": [ - "AFN", - "AFA" - ], - "афгани": [ - "AFN", - "AFA" - ], - "авганистански авгани": [ - "AFN", - "AFA" - ], - "афгані": [ - "AFN", - "AFA" - ], - "ليك ألباني": "ALL", - "албански лек": "ALL", - "lek": "ALL", - "albánský lek": "ALL", - "albanske lek": "ALL", - "albanischer lek": "ALL", - "albanian lek": "ALL", - "albana leko": "ALL", - "lek albanés": "ALL", - "albaania lekk": "ALL", - "לק": "ALL", - "albanski lek": "ALL", - "albán lek": "ALL", - "lek albania": "ALL", - "lek albanese": "ALL", - "レク": "ALL", - "알바니아 레크": "ALL", - "albanijos lekas": "ALL", - "albānijas leks": "ALL", - "albanese lek": "ALL", - "ਅਲਬਾਨੀਆਈ ਲੇਕ": "ALL", - "албанский лек": "ALL", - "albánsky lek": "ALL", - "அல்பேனிய லெக்": "ALL", - "arnavut leki": "ALL", - "албанський лек": "ALL", - "armeense dram": "AMD", - "درام أرميني": "AMD", - "арменски драм": "AMD", - "dram": "AMD", - "arménský dram": "AMD", - "armenske dram": "AMD", - "armenischer dram": "AMD", - "armenian dram": "AMD", - "armena dramo": "AMD", - "dram armenio": "AMD", - "armeenia dramm": "AMD", - "דראם ארמני": "AMD", - "armenski dram": "AMD", - "örmény dram": "AMD", - "dram armenia": "AMD", - "dram armeno": "AMD", - "ドラム": "AMD", - "아르메니아 드람": "AMD", - "armėnijos dramas": "AMD", - "armēnijas drams": "AMD", - "ਅਰਮੀਨੀਆਈ ਦਰਾਮ": "AMD", - "dram arménio": "AMD", - "армянский драм": "AMD", - "arménsky dram": "AMD", - "јерменски драм": "AMD", - "ஆர்மேனிய டிராம்": "AMD", - "ermeni dramı": "AMD", - "вірменський драм": "AMD", - "غيلدر الأنتيل الهولندية": "ANG", - "florí de les antilles neerlandeses": "ANG", - "gulden nizozemských antil": "ANG", - "antillen gulden": "ANG", - "netherlands antillean guilder": "ANG", - "nederlandantila guldeno": "ANG", - "florín antillano neerlandés": "ANG", - "holandarren antilletako florin": "ANG", - "alankomaiden antillien guldeni": "ANG", - "florin des antilles néerlandaises": "ANG", - "florín das antillas neerlandesas": "ANG", - "nizozemskoantilski gulden": "ANG", - "holland antillákbeli forint": "ANG", - "guilder antillen belanda": "ANG", - "fiorino delle antille olandesi": "ANG", - "アンティル・ギルダー": "ANG", - "네덜란드령 안틸레스 휠던": "ANG", - "nyderlandų antilų guldenas": "ANG", - "antilliaanse gulden": "ANG", - "florin de las antilhas neerlandesas": "ANG", - "ਨੀਦਰਲੈਂਡ ਐਂਟੀਲੀਆਈ ਗਿਲਡਰ": "ANG", - "florin antiano": "ANG", - "gulden antyli holenderskich": "ANG", - "florim das antilhas neerlandesas": "ANG", - "нидерландский антильский гульден": "ANG", - "antillergulden": "ANG", - "hollanda antilleri guldeni": "ANG", - "нідерландський антильський гульден": "ANG", - "kwanza": "AOA", - "كوانزا أنغولي": "AOA", - "анголска кванза": "AOA", - "angolská kwanza": "AOA", - "angolan kwanza": "AOA", - "angola kvanzo": "AOA", - "kwanza angoleño": "AOA", - "angolar kwanza": "AOA", - "קוואנזה": "AOA", - "angolska kvanza": "AOA", - "angolai kwanza": "AOA", - "kwanza angola": "AOA", - "kwanza angolano": "AOA", - "クワンザ": "AOA", - "앙골라 콴자": "AOA", - "kvanza": "AOA", - "ക്വാൻസ": "AOA", - "angolese kwanza": "AOA", - "ਅੰਗੋਲਨ ਕਵਾਂਜ਼ਾ": "AOA", - "ангольская кванза": "AOA", - "ක්වන්සා": "AOA", - "angola kwanzası": "AOA", - "ангольська кванза": "AOA", - "بيزو أرجنتيني": "ARS", - "аржентинско песо": "ARS", - "peso argentí": "ARS", - "argentinské peso": "ARS", - "argentinischer peso": "ARS", - "argentine peso": "ARS", - "argentina peso": "ARS", - "peso": [ - "UYU", - "PHP", - "MXN", - "CUP", - "COP", - "CLP", - "ARS" - ], - "argentina peeso": "ARS", - "peso argentinar": "ARS", - "argentiinan peso": "ARS", - "peso argentin": "ARS", - "peso arxentino": "ARS", - "פסו ארגנטינאי": "ARS", - "argentinski pezo": "ARS", - "argentin peso": "ARS", - "peso argentina": "ARS", - "peso argentino": "ARS", - "アルゼンチン・ペソ": "ARS", - "아르헨티나 페소": "ARS", - "argentinos pesas": "ARS", - "argentijnse peso": "ARS", - "ਅਰਜਨਟੀਨੀ ਪੇਸੋ": "ARS", - "peso argentyńskie": "ARS", - "peso argentinian": "ARS", - "аргентинское песо": "ARS", - "аргентински пезос": "ARS", - "argentinsk peso": "ARS", - "ஆர்ஜென்டின பீசோ": "ARS", - "เปโซอาร์เจนตินา": "ARS", - "arjantin pesosu": "ARS", - "аргентинський песо": "ARS", - "australiese dollar": "AUD", - "دولار أسترالي": "AUD", - "австралийски долар": "AUD", - "dòlar australià": "AUD", - "australský dolar": "AUD", - "australske dollar": "AUD", - "australischer dollar": "AUD", - "australian dollar": "AUD", - "aŭstralia dolaro": "AUD", - "dólar australiano": "AUD", - "austraalia dollar": "AUD", - "australiar dolar": "AUD", - "australian dollari": "AUD", - "dollar australien": "AUD", - "דולר אוסטרלי": "AUD", - "australski dolar": "AUD", - "ausztrál dollár": "AUD", - "dolar australia": "AUD", - "dollaro australiano": "AUD", - "オーストラリア・ドル": "AUD", - "오스트레일리아 달러": "AUD", - "australijos doleris": "AUD", - "austrālijas dolārs": "AUD", - "australische dollar": "AUD", - "dolar australian": "AUD", - "ਆਸਟ੍ਰੇਲੀਆਈ ਡਾਲਰ": "AUD", - "dolar australijski": "AUD", - "австралийский доллар": "AUD", - "austrálsky dolár": "AUD", - "аустралијски долар": "AUD", - "australisk dollar": "AUD", - "அவுஸ்திரேலிய டொலர்": "AUD", - "ดอลลาร์ออสเตรเลีย": "AUD", - "avustralya doları": "AUD", - "австралійський долар": "AUD", - "đô la úc": "AUD", - "فلورن أروبي": "AWG", - "florí d'aruba": "AWG", - "arubský florin": "AWG", - "aruba florin": "AWG", - "aruban florin": "AWG", - "aruba guldeno": "AWG", - "florín arubeño": "AWG", - "aruba floriin": "AWG", - "florin arubar": "AWG", - "aruban floriini": "AWG", - "florin arubais": "AWG", - "florín de aruba": "AWG", - "פלורין ארובי": "AWG", - "arupski florin": "AWG", - "arubai florin": "AWG", - "florin aruba": "AWG", - "fiorino arubano": "AWG", - "アルバ・フロリン": "AWG", - "아루바 플로린": "AWG", - "arubos florinas": "AWG", - "arubaanse florin": "AWG", - "ਅਰੂਬਾਈ ਫ਼ਲੋਰਿਨ": "AWG", - "florin arubiano": "AWG", - "florin arubański": "AWG", - "florim arubano": "AWG", - "florin arubez": "AWG", - "арубанский флорин": "AWG", - "arubansk florin": "AWG", - "aruba florini": "AWG", - "арубський флорин": "AWG", - "azerbeidjanse manat": "AZN", - "مانات أذربيجاني": "AZN", - "азербайджански манат": "AZN", - "manat azerbaidjanès": "AZN", - "ázerbájdžánský manat": "AZN", - "aserbajdsjanske manat": "AZN", - "aserbaidschan manat": "AZN", - "azerbaijani manat": "AZN", - "azerbajĝana manato": "AZN", - "manat azerbaiyano": "AZN", - "aserbaidžaani manat": "AZN", - "azerbaijandar manat": "AZN", - "azerbaidžanin manat": "AZN", - "manat azerbaïdjanais": "AZN", - "manat acerbaixano": "AZN", - "מאנאט אזרבייג'ני": "AZN", - "azerbajdžanski manat": "AZN", - "azeri manat": "AZN", - "manat": [ - "TMT", - "AZN" - ], - "manat azerbaijan": "AZN", - "manat azero": "AZN", - "アゼルバイジャン・マナト": "AZN", - "아제르바이잔 마나트": "AZN", - "azerbaidžano manatas": "AZN", - "azerbaidžānas manats": "AZN", - "azerbeidzjaanse manat": "AZN", - "ਅਜ਼ਰਬਾਈਜਾਨੀ ਮਨਾਤ": "AZN", - "manat azerbejdżański": "AZN", - "manate azeri": "AZN", - "manat azer": "AZN", - "азербайджанский манат": "AZN", - "azerbajdžanský manat": "AZN", - "азербејџански манат": "AZN", - "azerbajdzjansk manat": "AZN", - "அசர்பைஜானிய மனாட்": "AZN", - "azerbaycan manatı": "AZN", - "азербайджанський манат": "AZN", - "مارك بوسني": "BAM", - "босненска конвертируема марка": "BAM", - "marc convertible": "BAM", - "konvertibilní marka": "BAM", - "konvertibilna mark": "BAM", - "konvertible mark": "BAM", - "bosnia and herzegovina convertible mark": "BAM", - "konvertebla marko": "BAM", - "marco bosnioherzegovino": "BAM", - "bosnian ja hertsegovinan vaihdettava markka": "BAM", - "mark convertible de bosnie herzégovine": "BAM", - "marco convertible": "BAM", - "מארק סחיר": "BAM", - "konvertibilna marka": "BAM", - "bosnyák konvertibilis márka": "BAM", - "mark bosnia dan herzegovina": "BAM", - "marco bosniaco": "BAM", - "兌換マルク": "BAM", - "보스니아 헤르체고비나 태환 마르카": "BAM", - "konvertuojamoji markė": "BAM", - "konvertējamā marka": "BAM", - "bosnische inwisselbare mark": "BAM", - "ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ ਵਟਾਂਦਰਾਯੋਗ ਮਾਰਕ": "BAM", - "marka zamienna": "BAM", - "marco conversível": "BAM", - "marcă bosniacă convertibilă": "BAM", - "конвертируемая марка": "BAM", - "konvertibilná marka": "BAM", - "конвертибилна марка": "BAM", - "கன்வர்ட்டிபிள் மார்க்கு": "BAM", - "bosna hersek değiştirilebilir markı": "BAM", - "конвертовна марка": "BAM", - "دولار بربادوسي": "BBD", - "барбадоски долар": "BBD", - "dòlar de barbados": "BBD", - "barbadoský dolar": "BBD", - "barbados dollar": "BBD", - "barbadian dollar": "BBD", - "barbada dolaro": "BBD", - "dólar barbadense": "BBD", - "dolar barbadostar": "BBD", - "barbadoksen dollari": "BBD", - "dollar barbadien": "BBD", - "dólar de barbados": "BBD", - "barbadoski dolar": "BBD", - "barbadosi dollár": "BBD", - "dolar barbados": "BBD", - "dollaro di barbados": "BBD", - "バルバドス・ドル": "BBD", - "바베이도스 달러": "BBD", - "barbadoso doleris": "BBD", - "barbadiaanse dollar": "BBD", - "ਬਾਰਬਾਡੋਸੀ ਡਾਲਰ": "BBD", - "dolar barbadoski": "BBD", - "барбадосский доллар": "BBD", - "barbadoský dolár": "BBD", - "barbadisk dollar": "BBD", - "barbados doları": "BBD", - "барбадоський долар": "BBD", - "đô la barbados": "BBD", - "تاكا بنغلاديشي": "BDT", - "бангладешка така": "BDT", - "বাংলাদেশী টাকা": "BDT", - "taka": [ - "INR", - "BDT" - ], - "bangladéšská taka": "BDT", - "bangladeshi taka": "BDT", - "bangladeŝa tako": "BDT", - "taka bangladesí": "BDT", - "bangladeshin taka": "BDT", - "bangladeška taka": "BDT", - "bangladesi taka": "BDT", - "taka bangladesh": "BDT", - "taka bengalese": "BDT", - "タカ": "BDT", - "방글라데시 타카": "BDT", - "bangladešo taka": "BDT", - "bengalese taka": "BDT", - "ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ": "BDT", - "бангладешская така": "BDT", - "வங்காளதேச இட்டாக்கா": "BDT", - "bangladeş takası": "BDT", - "бангладеська така": "BDT", - "ليف بلغاري": "BGN", - "български лев": "BGN", - "lev": "BGN", - "bulharský lev": "BGN", - "bulgarske leva": "BGN", - "lew": "BGN", - "bulgarian lev": "BGN", - "bulgara levo": "BGN", - "leva búlgara": "BGN", - "leev": "BGN", - "bulgariar lev": "BGN", - "bulgarian leva": "BGN", - "lev bulgare": "BGN", - "lev búlgaro": "BGN", - "לב": "BGN", - "bugarski lev": "BGN", - "bolgár leva": "BGN", - "lev bulgaria": "BGN", - "lev bulgaro": "BGN", - "レフ": "BGN", - "불가리아 레프": "BGN", - "bulgarijos levas": "BGN", - "bulgārijas leva": "BGN", - "bulgaarse lev": "BGN", - "ਬੁਲਗਾਰੀਆਈ ਲੇਵ": "BGN", - "leva": "BGN", - "болгарский лев": "BGN", - "bolgarski lev": "BGN", - "бугарски лев": "BGN", - "பல்கேரிய லெவ்": "BGN", - "bulgar levası": "BGN", - "болгарський лев": "BGN", - "دينار بحريني": "BHD", - "бахрейнски динар": "BHD", - "dinar de bahrain": "BHD", - "bahrajnský dinár": "BHD", - "bahrain dinar": "BHD", - "bahraini dinar": "BHD", - "barejna dinaro": "BHD", - "dinar bareiní": "BHD", - "bahrainin dinaari": "BHD", - "dinar bahreïni": "BHD", - "דינר בחרייני": "BHD", - "bahreinski dinar": "BHD", - "bahreini dinár": "BHD", - "dinar bahrain": "BHD", - "dinaro del bahrein": "BHD", - "バーレーン・ディナール": "BHD", - "바레인 디나르": "BHD", - "bahreino dinaras": "BHD", - "bahreinse dinar": "BHD", - "ਬਹਿਰੀਨੀ ਦਿਨਾਰ": "BHD", - "dinar bahrajski": "BHD", - "dinar bareinita": "BHD", - "бахрейнский динар": "BHD", - "бахреински динар": "BHD", - "bahrainsk dinar": "BHD", - "bahreyn dinarı": "BHD", - "бахрейнський динар": "BHD", - "فرنك بوروندي": "BIF", - "бурундийски франк": "BIF", - "franc de burundi": "BIF", - "burundský frank": "BIF", - "burundi franc": "BIF", - "burundian franc": "BIF", - "burunda franko": "BIF", - "franco burundés": "BIF", - "burundin frangi": "BIF", - "franc burundais": "BIF", - "burundski franak": "BIF", - "burundi frank": "BIF", - "franc burundi": "BIF", - "franco del burundi": "BIF", - "ブルンジ・フラン": "BIF", - "부룬디 프랑": "BIF", - "burundžio frankas": "BIF", - "burundese frank": "BIF", - "ਬੁਰੂੰਡੀ ਫ਼੍ਰੈਂਕ": "BIF", - "frank burundyjski": "BIF", - "franco do burundi": "BIF", - "бурундийский франк": "BIF", - "бурундски франак": "BIF", - "burundisk franc": "BIF", - "புரூண்டி பிராங்க்": "BIF", - "burundi frangı": "BIF", - "бурундійський франк": "BIF", - "bermudaanse dollar": "BMD", - "دولار برمودي": "BMD", - "dòlar de les bermudes": "BMD", - "bermudský dolar": "BMD", - "bermuda dollar": "BMD", - "bermudian dollar": "BMD", - "bermuda dolaro": "BMD", - "dólar bermudeño": "BMD", - "dolar bermudar": "BMD", - "bermudan dollari": "BMD", - "dollar bermudien": "BMD", - "bermudski dolar": "BMD", - "bermudai dollár": "BMD", - "dolar bermuda": "BMD", - "dollaro di bermuda": "BMD", - "バミューダ・ドル": "BMD", - "버뮤다 달러": "BMD", - "bermudos doleris": "BMD", - "ਬਰਮੂਡਾਈ ਡਾਲਰ": "BMD", - "dolar bermudzki": "BMD", - "dólar bermudense": "BMD", - "бермудский доллар": "BMD", - "бермудски долар": "BMD", - "bermudisk dollar": "BMD", - "bermuda doları": "BMD", - "бермудський долар": "BMD", - "đô la bermuda": "BMD", - "دولار بروني": "BND", - "брунейски долар": "BND", - "ব্রুনাই ডলার": "BND", - "dòlar de brunei": "BND", - "brunejský dolar": "BND", - "brunei dollar": "BND", - "bruneja dolaro": "BND", - "dólar de brunéi": "BND", - "dolar bruneitar": "BND", - "brunein dollari": "BND", - "dollar de brunei": "BND", - "dólar de brunei": "BND", - "דולר ברוניי": "BND", - "brunejski dolar": "BND", - "brunei dollár": "BND", - "dolar brunei darussalam": "BND", - "dollaro del brunei": "BND", - "ブルネイ・ドル": "BND", - "브루나이 달러": "BND", - "brunėjaus doleris": "BND", - "ബ്രൂണൈ ഡോളർ": "BND", - "ringgit brunei": "BND", - "bruneise dollar": "BND", - "ਬਰੂਨਾਏ ਡਾਲਰ": "BND", - "dolar brunejski": "BND", - "брунейский доллар": "BND", - "брунејски долар": "BND", - "bruneisk dollar": "BND", - "புரூணை டாலர்": "BND", - "ดอลลาร์บรูไน": "BND", - "brunei doları": "BND", - "брунейський долар": "BND", - "đô la brunei": "BND", - "بوليفاريو بوليفي": "BOB", - "boliviano": "BOB", - "bolivijský boliviano": "BOB", - "bolivian boliviano": "BOB", - "bolivia bolivjano": "BOB", - "bigarren boliviano": "BOB", - "בוליביאנו": "BOB", - "bolivijski bolivijano": "BOB", - "bolíviai boliviano": "BOB", - "ボリビアーノ": "BOB", - "볼리비아 볼리비아노": "BOB", - "bolivianas": "BOB", - "boliviaanse boliviano": "BOB", - "ਬੋਲੀਵੀਆਈ ਬੋਲੀਵੀਆਨੋ": "BOB", - "боливиано": "BOB", - "боливијски боливијано": "BOB", - "bolivya bolivyanosu": "BOB", - "болівійський болівіано": "BOB", - "boliviano con mantenimiento de valor respecto al dólar estadounidense": "BOV", - "real": "BRL", - "ريال برازيلي": "BRL", - "бразилски реал": "BRL", - "real brasiler": "BRL", - "brazilský real": "BRL", - "brasiliansk real": "BRL", - "brasilianischer real": "BRL", - "brazilian real": "BRL", - "brazila realo": "BRL", - "real brasileño": "BRL", - "erreal brasildar": "BRL", - "brasilian real": "BRL", - "réal brésilien": "BRL", - "real brasileiro": "BRL", - "ריאל ברזילאי": "BRL", - "brazilski real": "BRL", - "brazil real": "BRL", - "real brasil": "BRL", - "real brasiliano": "BRL", - "レアル": "BRL", - "브라질 헤알": "BRL", - "brazilijos realas": "BRL", - "real brazil": "BRL", - "braziliaanse real": "BRL", - "ਬ੍ਰਾਜ਼ੀਲੀ ਰਿਆਲ": "BRL", - "real brazylijski": "BRL", - "бразильский реал": "BRL", - "brazílsky real": "BRL", - "பிரேசிலிய ரெயால்": "BRL", - "เรอัลบราซิล": "BRL", - "brezilya reali": "BRL", - "бразильський реал": "BRL", - "دولار بهامي": "BSD", - "бахамски долар": "BSD", - "dòlar de les bahames": "BSD", - "bahamský dolar": "BSD", - "bahama dollar": "BSD", - "bahamian dollar": "BSD", - "bahama dolaro": "BSD", - "dólar bahameño": "BSD", - "dolar bahamar": "BSD", - "bahaman dollari": "BSD", - "dollar bahaméen": "BSD", - "dólar bahamés": "BSD", - "bahamski dolar": "BSD", - "bahamai dollár": "BSD", - "dolar bahama": "BSD", - "dollaro delle bahamas": "BSD", - "バハマ・ドル": "BSD", - "바하마 달러": "BSD", - "bahamų doleris": "BSD", - "bahamaanse dollar": "BSD", - "dolar de las bahamas": "BSD", - "ਬਹਾਮਾਸੀ ਡਾਲਰ": "BSD", - "dolar bahamski": "BSD", - "dólar baamiano": "BSD", - "багамский доллар": "BSD", - "bahamský dolár": "BSD", - "bahamansk dollar": "BSD", - "bahama doları": "BSD", - "багамський долар": "BSD", - "đô la bahamas": "BSD", - "bhoetanese ngultrum": "BTN", - "نغولترم بوتاني": "BTN", - "бутански нгултрум": "BTN", - "ভুটানি ঙুলট্রুম": "BTN", - "ngultrum": "BTN", - "bhútánský ngultrum": "BTN", - "bhutanese ngultrum": "BTN", - "butana ngultrumo": "BTN", - "ngultrum butanés": "BTN", - "bhutani ngultrum": "BTN", - "bhutanin ngultrum": "BTN", - "butanski ngultrum": "BTN", - "bhutáni ngultrum": "BTN", - "ngultrum bhutan": "BTN", - "ngultrum del bhutan": "BTN", - "ニュルタム": "BTN", - "부탄 뉘땀": "BTN", - "ngultrumas": "BTN", - "ങൾട്രം": "BTN", - "bhutaanse ngultrum": "BTN", - "ਭੂਟਾਨੀ ਙੂਲਤਰੂਮ": "BTN", - "нгултрум": "BTN", - "பூட்டானின் இங்குல்ட்ரம்": "BTN", - "งุลตรัมภูฏาน": "BTN", - "botswana pula": "BWP", - "بولا بوتسواني": "BWP", - "ботсванска пула": "BWP", - "pula botswanesa": "BWP", - "botswanská pula": "BWP", - "pula": "BWP", - "botswanischer pula": "BWP", - "bocvana pulao": "BWP", - "botswanar pula": "BWP", - "פולה": "BWP", - "bocvanska pula": "BWP", - "botswanai pula": "BWP", - "pula botswana": "BWP", - "pula del botswana": "BWP", - "プラ": "BWP", - "보츠와나 풀라": "BWP", - "botsvanos pula": "BWP", - "ബോട്സ്വാന പുല": "BWP", - "botswaanse pula": "BWP", - "pula botswaneză": "BWP", - "ботсванская пула": "BWP", - "боцванска пула": "BWP", - "botsvana pulası": "BWP", - "ботсванська пула": "BWP", - "روبل بلاروسي": "BYN", - "беларуска рубла": "BYN", - "ruble bielorús": "BYN", - "běloruský rubl": "BYN", - "hviderussiske rubler": "BYN", - "belarussischer rubel": "BYN", - "belarusian ruble": "BYN", - "belorusia rublo": "BYN", - "rublo bielorruso": "BYN", - "valgevene rubla": "BYN", - "valko venäjän rupla": "BYN", - "rouble biélorusse": "BYN", - "rublo belaruso": "BYN", - "רובל בלארוסי": "BYN", - "bjeloruski rubalj": "BYN", - "belarusz rubel": "BYN", - "rubel belarus": "BYN", - "rublo bielorusso": "BYN", - "ベラルーシ・ルーブル": "BYN", - "벨라루스 루블": "BYN", - "baltarusijos rublis": "BYN", - "baltkrievijas rublis": "BYN", - "wit russische roebel": "BYN", - "ਬੈਲਾਰੂਸੀ ਰੂਬਲ": "BYN", - "rubel białoruski": "BYN", - "rublo bielorrusso": "BYN", - "rublă belarusă": "BYN", - "белорусский рубль": "BYN", - "bieloruský rubeľ": "BYN", - "beloruski rubelj": "BYN", - "белоруска рубља": "BYN", - "belarusisk rubel": "BYN", - "பெலருசிய ரூபிள்": "BYN", - "belarus rublesi": "BYN", - "білоруський рубль": "BYN", - "rúp belarus": "BYN", - "دولار بليزي": "BZD", - "белизийски долар": "BZD", - "dòlar de belize": "BZD", - "belizský dolar": "BZD", - "belize dollar": "BZD", - "beliza dolaro": "BZD", - "dólar beliceño": "BZD", - "dolar belizetar": "BZD", - "belizen dollari": "BZD", - "dollar bélizien": "BZD", - "dólar de belize": "BZD", - "דולר בליזי": "BZD", - "belizejski dolar": "BZD", - "belize i dollár": "BZD", - "dolar belize": "BZD", - "dollaro del belize": "BZD", - "ベリーズ・ドル": "BZD", - "벨리즈 달러": "BZD", - "belizo doleris": "BZD", - "belizaanse dollar": "BZD", - "ਬੇਲੀਜ਼ੀ ਡਾਲਰ": "BZD", - "dolar belizeński": "BZD", - "белизский доллар": "BZD", - "белизејски долар": "BZD", - "belizisk dollar": "BZD", - "belize doları": "BZD", - "белізький долар": "BZD", - "đô la belize": "BZD", - "kanadese dollar": "CAD", - "دولار كندي": "CAD", - "канадски долар": "CAD", - "কানাডীয় ডলার": "CAD", - "dòlar canadenc": "CAD", - "kanadský dolar": "CAD", - "canadiske dollar": "CAD", - "kanadischer dollar": "CAD", - "canadian dollar": "CAD", - "kanada dolaro": "CAD", - "dólar canadiense": "CAD", - "kanada dollar": "CAD", - "dolar kanadar": "CAD", - "kanadan dollari": "CAD", - "dollar canadien": "CAD", - "dólar canadense": "CAD", - "דולר קנדי": "CAD", - "kanadski dolar": "CAD", - "kanadai dollár": "CAD", - "dollar canadian": "CAD", - "dolar kanada": "CAD", - "dollaro canadese": "CAD", - "カナダドル": "CAD", - "캐나다 달러": "CAD", - "kanados doleris": "CAD", - "kanādas dolārs": "CAD", - "canadese dollar": "CAD", - "ਕੈਨੇਡੀਆਈ ਡਾਲਰ": "CAD", - "dolar kanadyjski": "CAD", - "dolar canadian": "CAD", - "канадский доллар": "CAD", - "kanadský dolár": "CAD", - "kanadensisk dollar": "CAD", - "கனடா டொலர்": "CAD", - "ดอลลาร์แคนาดา": "CAD", - "kanada doları": "CAD", - "канадський долар": "CAD", - "đô la canada": "CAD", - "kongolese frank": "CDF", - "فرنك كونغوي": "CDF", - "конгоански франк": "CDF", - "franc congolès": "CDF", - "konžský frank": "CDF", - "kongo franc": "CDF", - "congolese franc": "CDF", - "konga franko": "CDF", - "franco congoleño": "CDF", - "kongon frangi": "CDF", - "franc congolais": "CDF", - "franco congolés": "CDF", - "פרנק קונגולזי": "CDF", - "kongoanski franak": "CDF", - "kongói frank": "CDF", - "franc kongo": "CDF", - "franco congolese": "CDF", - "コンゴ・フラン": "CDF", - "콩고 프랑": "CDF", - "kongo frankas": "CDF", - "congolese frank": "CDF", - "frank kongijski": "CDF", - "franco congolês": "CDF", - "конголезский франк": "CDF", - "конгоански франак": "CDF", - "kongolesisk franc": "CDF", - "kongo frangı": "CDF", - "конголезький франк": "CDF", - "franc congo": "CDF", - "switserse frank": "CHF", - "فرنك سويسري": "CHF", - "швейцарски франк": "CHF", - "সুইস ফ্রাংক": "CHF", - "franc suís": "CHF", - "švýcarský frank": "CHF", - "schweiziske franc": "CHF", - "schweizer franken": "CHF", - "swiss franc": "CHF", - "svisa franko": "CHF", - "franco suizo": "CHF", - "šveitsi frank": "CHF", - "franko suitzar": "CHF", - "sveitsin frangi": "CHF", - "franc suisse": "CHF", - "franco suízo": "CHF", - "פרנק שווייצרי": "CHF", - "švicarski franak": "CHF", - "svájci frank": "CHF", - "franc swiss": "CHF", - "franco svizzero": "CHF", - "スイス・フラン": "CHF", - "스위스 프랑": "CHF", - "šveicarijos frankas": "CHF", - "šveices franks": "CHF", - "zwitserse frank": "CHF", - "franc soís": "CHF", - "ਸਵਿੱਸ ਫ਼ਰੈਂਕ": "CHF", - "frank szwajcarski": "CHF", - "franco suíço": "CHF", - "franc elvețian": "CHF", - "швейцарский франк": "CHF", - "švajčiarsky frank": "CHF", - "švicarski frank": "CHF", - "швајцарски франак": "CHF", - "schweizisk franc": "CHF", - "சுவிசு பிராங்க்": "CHF", - "ฟรังก์สวิส": "CHF", - "i̇sviçre frangı": "CHF", - "швейцарський франк": "CHF", - "franc thụy sĩ": "CHF", - "unidad de fomento": "CLF", - "условная расчётная единица чили": "CLF", - "chileense peso": "CLP", - "بيزو تشيلي": "CLP", - "чилийско песо": "CLP", - "peso xilè": "CLP", - "chilské peso": "CLP", - "peso tsile": "CLP", - "chilenischer peso": "CLP", - "chilean peso": "CLP", - "ĉilia peso": "CLP", - "tšiili peeso": "CLP", - "peso txiletar": "CLP", - "chilen peso": "CLP", - "peso chilien": "CLP", - "peso chileno": "CLP", - "פסו צ'יליאני": "CLP", - "čileanski pezo": "CLP", - "chilei peso": "CLP", - "peso chili": "CLP", - "peso cileno": "CLP", - "チリ・ペソ": "CLP", - "칠레 페소": "CLP", - "čilės pesas": "CLP", - "čīles peso": "CLP", - "ചിലിയൻ പെസോ": "CLP", - "peso chile": "CLP", - "peso de chile": "CLP", - "ਚਿਲੀਆਈ ਪੇਸੋ": "CLP", - "peso chilijskie": "CLP", - "peso chilian": "CLP", - "чилийское песо": "CLP", - "čilenski peso": "CLP", - "чилеански пезос": "CLP", - "chilensk peso": "CLP", - "เปโซชิลี": "CLP", - "şili pesosu": "CLP", - "чилійський песо": "CLP", - "renminbi": "CNY", - "رنمينبي": "CNY", - "китайски юан": "CNY", - "রেন্মিন্বি": "CNY", - "མི་དམངས་ཤོག་དངུལ": "CNY", - "čínský jüan": "CNY", - "renminbio": "CNY", - "yuan": "CNY", - "רנמינבי": "CNY", - "zsenminpi": "CNY", - "renminbi cinese": "CNY", - "人民元": "CNY", - "런민비": "CNY", - "juanis": "CNY", - "juaņa": "CNY", - "chinese renminbi": "CNY", - "ਰੇਨਮਿਨਬੀ": "CNY", - "yuan renminbi": "CNY", - "китайский юань": "CNY", - "čínsky jüan": "CNY", - "женминби": "CNY", - "ரென்மின்பி": "CNY", - "เหรินหมินปี้": "CNY", - "юань женьміньбі": "CNY", - "nhân dân tệ": "CNY", - "بيزو كولومبي": "COP", - "колумбийско песо": "COP", - "peso colombià": "COP", - "kolumbijské peso": "COP", - "colombiansk peso": "COP", - "kolumbianischer peso": "COP", - "colombian peso": "COP", - "kolombia peso": "COP", - "peso colombiano": "COP", - "colombia peeso": "COP", - "peso kolonbiar": "COP", - "kolumbian peso": "COP", - "peso colombien": "COP", - "פסו קולומביאני": "COP", - "kolumbijski pezo": "COP", - "kolumbiai peso": "COP", - "peso kolombia": "COP", - "コロンビア・ペソ": "COP", - "콜롬비아 페소": "COP", - "kolumbijos pesas": "COP", - "peso colombia": "COP", - "colombiaanse peso": "COP", - "ਕੋਲੰਬੀਆਈ ਪੇਸੋ": "COP", - "peso kolumbijskie": "COP", - "колумбийское песо": "COP", - "колумбијски пезос": "COP", - "kolombiya pesosu": "COP", - "колумбійський песо": "COP", - "costa ricaanse colón": "CRC", - "كولون كوستاريكي": "CRC", - "костарикански колон": "CRC", - "colón costa riqueny": "CRC", - "kostarický colón": "CRC", - "costa rica colón": "CRC", - "costa rican colón": "CRC", - "kostarika kolumbo": "CRC", - "colón": "CRC", - "colón costarricar": "CRC", - "colón costaricien": "CRC", - "colón costarriqueño": "CRC", - "kostarikanski kolon": "CRC", - "costa rica i colón": "CRC", - "colón kosta rika": "CRC", - "colón costaricano": "CRC", - "コスタリカ・コロン": "CRC", - "코스타리카 콜론": "CRC", - "kosta rikos kolonas": "CRC", - "colón costa rica": "CRC", - "costa ricaanse colon": "CRC", - "ਕੋਸਤਾ ਰੀਕਾਈ ਕੋਲੋਨ": "CRC", - "colon kostarykański": "CRC", - "colón costa riquenho": "CRC", - "коста риканский колон": "CRC", - "costaricansk colón": "CRC", - "kosta rika colónu": "CRC", - "костариканський колон": "CRC", - "بيزو كوبي": "CUP", - "кубинско песо": "CUP", - "peso cubà": "CUP", - "kubánské peso": "CUP", - "cubanske pesos": "CUP", - "kubanischer peso": "CUP", - "cuban peso": "CUP", - "kuba peso": "CUP", - "peso cubano": "CUP", - "kuuban peso": "CUP", - "peso cubain": "CUP", - "פסו קובני": "CUP", - "kubanski pezo": "CUP", - "kubai peso": "CUP", - "peso kuba": "CUP", - "キューバ・ペソ": "CUP", - "쿠바 페소": "CUP", - "kubos pesas": "CUP", - "peso cuba": "CUP", - "cubaanse peso": "CUP", - "ਕਿਊਬਾਈ ਪੇਸੋ": "CUP", - "peso kubańskie": "CUP", - "peso cubanez": "CUP", - "кубинское песо": "CUP", - "කියුබාන් පේසෝ": "CUP", - "кубански пезос": "CUP", - "kubansk peso": "CUP", - "เปโซคิวบา": "CUP", - "küba pesosu": "CUP", - "кубинський песо": "CUP", - "إيسكودو جزر الرأس الأخضر": "CVE", - "ескудо на кабо верде": "CVE", - "escut de cap verd": "CVE", - "kapverdské escudo": "CVE", - "kapverdiske escudo": "CVE", - "kap verde escudo": "CVE", - "cape verdean escudo": "CVE", - "kaboverda eskudo": "CVE", - "escudo caboverdiano": "CVE", - "kap verden escudo": "CVE", - "escudo cap verdien": "CVE", - "zelenortski eskudo": "CVE", - "zöld foki escudo": "CVE", - "escudo tanjung verde": "CVE", - "escudo capoverdiano": "CVE", - "カーボベルデ・エスクード": "CVE", - "카보베르데 이스쿠두": "CVE", - "žaliojo kyšulio eskudas": "CVE", - "kaapverdische escudo": "CVE", - "escudo zielonego przylądka": "CVE", - "escudo cabo verdiano": "CVE", - "эскудо кабо верде": "CVE", - "зеленортски ескудо": "CVE", - "kapverdisk escudo": "CVE", - "yeşil burun adaları eskudosu": "CVE", - "ескудо кабо верде": "CVE", - "escudo cabo verde": "CVE", - "كرونة تشيكية": "CZK", - "чешка крона": "CZK", - "corona txeca": "CZK", - "koruna česká": "CZK", - "tjekkiske koruna": "CZK", - "tschechische krone": "CZK", - "czech koruna": "CZK", - "ĉeĥa krono": "CZK", - "corona checa": "CZK", - "tšehhi kroon": "CZK", - "txekiar koroa": "CZK", - "tšekin koruna": "CZK", - "couronne tchèque": "CZK", - "coroa checa": "CZK", - "קורונה צ'כית": "CZK", - "češka kruna": "CZK", - "cseh korona": "CZK", - "koruna ceko": "CZK", - "corona ceca": "CZK", - "チェコ・コルナ": "CZK", - "체코 코루나": "CZK", - "čekijos krona": "CZK", - "čehijas krona": "CZK", - "tsjechische kroon": "CZK", - "corona chèca": "CZK", - "ਚੈੱਕ ਕੋਰੂਨਾ": "CZK", - "korona czeska": "CZK", - "coroană cehă": "CZK", - "чешская крона": "CZK", - "česká koruna": "CZK", - "češka krona": "CZK", - "чешка круна": "CZK", - "tjeckisk krona": "CZK", - "செக் கொருனா": "CZK", - "โครูนาเช็ก": "CZK", - "çek korunası": "CZK", - "чеська крона": "CZK", - "koruna séc": "CZK", - "djiboeti frank": "DJF", - "فرنك جيبوتي": "DJF", - "джибутски франк": "DJF", - "franc de djibouti": "DJF", - "džibutský frank": "DJF", - "djiboutiske franc": "DJF", - "dschibuti franc": "DJF", - "djiboutian franc": "DJF", - "ĝibutia franko": "DJF", - "franco yibutiano": "DJF", - "djiboutin frangi": "DJF", - "franc djibouti": "DJF", - "džibutski franak": "DJF", - "dzsibuti frank": "DJF", - "franc jibuti": "DJF", - "franco gibutiano": "DJF", - "ジブチ・フラン": "DJF", - "지부티 프랑": "DJF", - "džibučio frankas": "DJF", - "djiboutiaanse frank": "DJF", - "frank dżibuti": "DJF", - "franco do jibuti": "DJF", - "франк джибути": "DJF", - "џибутски франак": "DJF", - "djiboutisk franc": "DJF", - "cibuti frangı": "DJF", - "франк джибуті": "DJF", - "deense kroon": "DKK", - "كرونة دنماركية": "DKK", - "датска крона": "DKK", - "corona danesa": "DKK", - "dánská koruna": "DKK", - "danske kroner": "DKK", - "dänische krone": "DKK", - "danish krone": "DKK", - "dana krono": "DKK", - "taani kroon": "DKK", - "daniar koroa": "DKK", - "tanskan kruunu": "DKK", - "couronne danoise": "DKK", - "coroa dinamarquesa": "DKK", - "כתר דני": "DKK", - "danska kruna": "DKK", - "dán korona": "DKK", - "krona denmark": "DKK", - "corona danese": "DKK", - "デンマーク・クローネ": "DKK", - "덴마크 크로네": "DKK", - "danijos krona": "DKK", - "dānijas krona": "DKK", - "krone denmark": "DKK", - "ਡੈੱਨਮਾਰਕੀ ਕਰੋਨਾ": "DKK", - "korona duńska": "DKK", - "coroană daneză": "DKK", - "датская крона": "DKK", - "dánska koruna": "DKK", - "данска круна": "DKK", - "dansk krona": "DKK", - "டானிய குரோன்": "DKK", - "โครเนอเดนมาร์ก": "DKK", - "danimarka kronu": "DKK", - "данська крона": "DKK", - "krone đan mạch": "DKK", - "بيزو دومنيكاني": "DOP", - "доминиканско песо": "DOP", - "peso dominicà": "DOP", - "dominikánské peso": "DOP", - "dominikanischer peso": "DOP", - "dominican peso": "DOP", - "dominika peso": "DOP", - "peso dominicano": "DOP", - "peso dominikar": "DOP", - "dominikaanisen tasavallan peso": "DOP", - "peso dominicain": "DOP", - "פסו דומיניקני": "DOP", - "dominikanski pezo": "DOP", - "dominikai peso": "DOP", - "peso dominika": "DOP", - "ドミニカ・ペソ": "DOP", - "도미니카 페소": "DOP", - "dominikos pesas": "DOP", - "dominicaanse peso": "DOP", - "ਡੋਮਿਨਿਕਾਈ ਪੇਸੋ": "DOP", - "peso dominikańskie": "DOP", - "доминиканское песо": "DOP", - "доминикански пезос": "DOP", - "dominikansk peso": "DOP", - "dominik pesosu": "DOP", - "домініканський песо": "DOP", - "دينار جزائري": "DZD", - "алжирски динар": "DZD", - "dinar algerià": "DZD", - "alžírský dinár": "DZD", - "dinar algeriaidd": "DZD", - "algerischer dinar": "DZD", - "algerian dinar": "DZD", - "alĝeria dinaro": "DZD", - "dinar argelino": "DZD", - "aljeriar dinar": "DZD", - "algerian dinaari": "DZD", - "dinar algérien": "DZD", - "dinar alxeriano": "DZD", - "דינר אלג'ירי": "DZD", - "alžirski dinar": "DZD", - "algériai dinár": "DZD", - "dinar aljazair": "DZD", - "dinaro algerino": "DZD", - "アルジェリア・ディナール": "DZD", - "알제리 디나르": "DZD", - "alžyro dinaras": "DZD", - "അൾജീരിയൻ ദിനാർ": "DZD", - "dinar algeria": "DZD", - "algerijnse dinar": "DZD", - "dinar algierski": "DZD", - "dinar algerian": "DZD", - "алжирский динар": "DZD", - "algerisk dinar": "DZD", - "cezayir dinarı": "DZD", - "алжирський динар": "DZD", - "dinar algérie": "DZD", - "جنيه مصري": "EGP", - "египетска лира": "EGP", - "মিশরীয় পাউন্ড": "EGP", - "lliura egípcia": "EGP", - "egyptská libra": "EGP", - "ägyptisches pfund": "EGP", - "egyptian pound": "EGP", - "egipta pundo": "EGP", - "libra egipcia": "EGP", - "egiptuse nael": "EGP", - "libera egiptoar": "EGP", - "egyptin punta": "EGP", - "livre égyptienne": "EGP", - "libra exipcia": "EGP", - "לירה מצרית": "EGP", - "egipatska funta": "EGP", - "egyiptomi font": "EGP", - "pound mesir": "EGP", - "sterlina egiziana": "EGP", - "エジプト・ポンド": "EGP", - "이집트 파운드": "EGP", - "egipto svaras": "EGP", - "paun mesir": "EGP", - "egyptisch pond": "EGP", - "ਮਿਸਰੀ ਪਾਊਂਡ": "EGP", - "funt egipski": "EGP", - "libra egípcia": "EGP", - "liră egipteană": "EGP", - "египетский фунт": "EGP", - "egyptiskt pund": "EGP", - "ปอนด์อียิปต์": "EGP", - "mısır lirası": "EGP", - "єгипетський фунт": "EGP", - "bảng ai cập": "EGP", - "نقفة إريترية": "ERN", - "nakfa": "ERN", - "eritrejská nakfa": "ERN", - "eritreischer nakfa": "ERN", - "eritrean nakfa": "ERN", - "eritrea nakfo": "ERN", - "nakfa érythréen": "ERN", - "נאקפה": "ERN", - "eritrejska nakfa": "ERN", - "eritreai nakfa": "ERN", - "nakfa eritrea": "ERN", - "nacfa eritreo": "ERN", - "ナクファ": "ERN", - "에리트레아 낙파": "ERN", - "eritrese nakfa": "ERN", - "эритрейская накфа": "ERN", - "еритрејска накфа": "ERN", - "eritre nakfası": "ERN", - "еритрейська накфа": "ERN", - "birr": "ETB", - "بير إثيوبي": "ETB", - "етиопски бир": "ETB", - "etiopský birr": "ETB", - "etiopiske birr": "ETB", - "äthiopischer birr": "ETB", - "ethiopian birr": "ETB", - "etiopa birro": "ETB", - "birr etíope": "ETB", - "etiopian birr": "ETB", - "ביר אתיופי": "ETB", - "etiopski bir": "ETB", - "etióp birr": "ETB", - "birr etiopia": "ETB", - "birr etiope": "ETB", - "ブル": "ETB", - "에티오피아 비르": "ETB", - "etiopijos biras": "ETB", - "birr habsyah": "ETB", - "ethiopische birr": "ETB", - "эфиопский быр": "ETB", - "ефіопський бир": "ETB", - "euro": "EUR", - "يورو": "EUR", - "евро": "EUR", - "ইউরো": "EUR", - "ewro": "EUR", - "eŭro": "EUR", - "אירו": "EUR", - "euró": "EUR", - "ユーロ": "EUR", - "유로": "EUR", - "euras": "EUR", - "eiro": "EUR", - "യൂറോ": "EUR", - "èuro": "EUR", - "ਯੂਰੋ": "EUR", - "evro": "EUR", - "ojro": "EUR", - "ஐரோ": "EUR", - "యూరో": "EUR", - "ยูโร": "EUR", - "євро": "EUR", - "دولار فيجي": "FJD", - "фиджийски долар": "FJD", - "dòlar fijià": "FJD", - "fidžijský dolar": "FJD", - "fidschi dollar": "FJD", - "fijian dollar": "FJD", - "fiĝia dolaro": "FJD", - "dólar fiyiano": "FJD", - "fidžin dollari": "FJD", - "dollar des fidji": "FJD", - "dólar fidxiano": "FJD", - "fidžijski dolar": "FJD", - "fidzsi dollár": "FJD", - "dolar fiji": "FJD", - "dollaro delle figi": "FJD", - "フィジー・ドル": "FJD", - "피지 달러": "FJD", - "fidžio doleris": "FJD", - "fidži dolārs": "FJD", - "ഫിജിയൻ ഡോളർ": "FJD", - "fiji dollar": "FJD", - "dolar fidżi": "FJD", - "dólar de fiji": "FJD", - "dolar fijian": "FJD", - "доллар фиджи": "FJD", - "fidžijský dolár": "FJD", - "фиџијски долар": "FJD", - "fijidollar": "FJD", - "பிஜி டாலர்": "FJD", - "fiji doları": "FJD", - "фіджійський долар": "FJD", - "جنيه جزر فوكلاند": "FKP", - "lliura de les malvines": "FKP", - "falklandská libra": "FKP", - "falkland pfund": "FKP", - "falkland islands pound": "FKP", - "falklanda pundo": "FKP", - "libra malvinense": "FKP", - "libera falklandar": "FKP", - "falklandin punta": "FKP", - "livre des îles malouines": "FKP", - "לירה שטרלינג של איי פוקלנד": "FKP", - "falklandska funta": "FKP", - "falkland szigeteki font": "FKP", - "pound kepulauan falkland": "FKP", - "sterlina delle falkland": "FKP", - "フォークランド諸島ポンド": "FKP", - "포클랜드 제도 파운드": "FKP", - "folklando svaras": "FKP", - "falklandeilands pond": "FKP", - "ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ ਪਾਊਂਡ": "FKP", - "funt falklandzki": "FKP", - "libra das ilhas malvinas": "FKP", - "liră din insulele falkland": "FKP", - "фунт фолклендских островов": "FKP", - "falklandspund": "FKP", - "falkland adaları poundu": "FKP", - "фолклендський фунт": "FKP", - "pond sterling": "GBP", - "جنيه إسترليني": "GBP", - "британска лира": "GBP", - "পাউন্ড স্টার্লিং": "GBP", - "lliura esterlina": "GBP", - "libra šterlinků": "GBP", - "punt sterling": "GBP", - "britiske pund": "GBP", - "pfund sterling": "GBP", - "pound sterling": "GBP", - "brita pundo": "GBP", - "libra esterlina": "GBP", - "suurbritannia naelsterling": "GBP", - "libera esterlina": "GBP", - "englannin punta": "GBP", - "livre sterling": "GBP", - "לירה שטרלינג": "GBP", - "britanska funta": "GBP", - "font sterling": "GBP", - "sterlina britannica": "GBP", - "スターリング・ポンド": "GBP", - "파운드 스털링": "GBP", - "svaras sterlingų": "GBP", - "sterliņu mārciņa": "GBP", - "paun sterling": "GBP", - "liura esterlina": "GBP", - "ਪਾਊਂਡ ਸਟਰਲਿੰਗ": "GBP", - "funt szterling": "GBP", - "liră sterlină": "GBP", - "фунт стерлингов": "GBP", - "anglická libra": "GBP", - "funt šterling": "GBP", - "британска фунта": "GBP", - "brittiskt pund": "GBP", - "பிரித்தானிய பவுண்டு": "GBP", - "ปอนด์สเตอร์ลิง": "GBP", - "i̇ngiliz sterlini": "GBP", - "фунт стерлінгів": "GBP", - "bảng anh": "GBP", - "لاري جورجي": "GEL", - "грузинско лари": "GEL", - "lari": "GEL", - "gruzínský lari": "GEL", - "georgiske lari": "GEL", - "georgischer lari": "GEL", - "georgian lari": "GEL", - "lario": "GEL", - "lari georgiano": "GEL", - "לארי גאורגי": "GEL", - "gruzijski lari": "GEL", - "grúz lari": "GEL", - "lari georgia": "GEL", - "ラリ": "GEL", - "조지아 라리": "GEL", - "laris": "GEL", - "gruzijas lars": "GEL", - "georgische lari": "GEL", - "ਜਾਰਜੀਆਈ ਲਾਰੀ": "GEL", - "грузинский лари": "GEL", - "gruzínske lari": "GEL", - "грузијски лари": "GEL", - "georgiska lari": "GEL", - "ஜார்ஜிய லாரி": "GEL", - "gürcü larisi": "GEL", - "грузинський ларі": "GEL", - "lari gruzia": "GEL", - "سيدي غاني": "GHS", - "ганайско седи": "GHS", - "cedi": "GHS", - "ghanský cedi": "GHS", - "ghanaian cedi": "GHS", - "ganaa cedio": "GHS", - "ganski cedi": "GHS", - "ghánai cedi": "GHS", - "cedi ghana": "GHS", - "cedi ghanese": "GHS", - "セディ": "GHS", - "가나 세디": "GHS", - "sedis": "GHS", - "ghanese cedi": "GHS", - "ганский седи": "GHS", - "гански седи": "GHS", - "ghana cedi": "GHS", - "ганський седі": "GHS", - "جنيه جبل طارق": "GIP", - "гибралтарска лира": "GIP", - "lliura de gibraltar": "GIP", - "gibraltarská libra": "GIP", - "gibraltariske pund": "GIP", - "gibraltar pfund": "GIP", - "gibraltar pound": "GIP", - "ĝibraltara pundo": "GIP", - "libra gibraltareña": "GIP", - "gibraltari nael": "GIP", - "gibraltarin punta": "GIP", - "livre de gibraltar": "GIP", - "libra de xibraltar": "GIP", - "gibraltarska funta": "GIP", - "gibraltári font": "GIP", - "pound gibraltar": "GIP", - "sterlina di gibilterra": "GIP", - "ジブラルタル・ポンド": "GIP", - "지브롤터 파운드": "GIP", - "gibraltaro svaras": "GIP", - "gibraltarees pond": "GIP", - "ਜਿਬਰਾਲਟਰ ਪਾਊਂਡ": "GIP", - "funt gibraltarski": "GIP", - "libra de gibraltar": "GIP", - "liră din gibraltar": "GIP", - "гибралтарский фунт": "GIP", - "gibraltárska libra": "GIP", - "гибралтарска фунта": "GIP", - "gibraltarpund": "GIP", - "கிப்ரால்ட்டர் பவுண்டு": "GIP", - "cebelitarık sterlini": "GIP", - "гібралтарський фунт": "GIP", - "bảng gibraltar": "GIP", - "dalasi": "GMD", - "دالاسي غامبي": "GMD", - "гамбийско даласи": "GMD", - "gambijský dalasi": "GMD", - "gambian dalasi": "GMD", - "gambia dalasio": "GMD", - "gambijski dalasi": "GMD", - "gambiai dalasi": "GMD", - "dalasi gambia": "GMD", - "dalasi gambese": "GMD", - "ダラシ": "GMD", - "감비아 달라시": "GMD", - "dalasis": "GMD", - "gambiaanse dalasi": "GMD", - "даласи": "GMD", - "гамбијски даласи": "GMD", - "гамбійський даласі": "GMD", - "فرنك غيني": "GNF", - "гвинейски франк": "GNF", - "franc guineà": "GNF", - "guinejský frank": "GNF", - "franc guinéen": "GNF", - "guinean franc": "GNF", - "gvinea franko": "GNF", - "franco guineano": "GNF", - "guinean frangi": "GNF", - "פרנק גינאי": "GNF", - "gvinejski franak": "GNF", - "guineai frank": "GNF", - "franc guinea": "GNF", - "ギニア・フラン": "GNF", - "기니 프랑": "GNF", - "gvinėjos frankas": "GNF", - "guineese frank": "GNF", - "frank gwinejski": "GNF", - "franco da guiné": "GNF", - "гвинейский франк": "GNF", - "гвинејски франак": "GNF", - "guinesisk franc": "GNF", - "gine frangı": "GNF", - "гвінейський франк": "GNF", - "guatemalaanse quetzal": "GTQ", - "كتزال غواتيمالي": "GTQ", - "гватемалски кецал": "GTQ", - "quetzal": "GTQ", - "guatemalský quetzal": "GTQ", - "guatemaltekischer quetzal": "GTQ", - "guatemalan quetzal": "GTQ", - "gvatemala kecalo": "GTQ", - "ketzal": "GTQ", - "קצאל": "GTQ", - "gvatemalski kvecal": "GTQ", - "guatemalai quetzal": "GTQ", - "quetzal guatemala": "GTQ", - "quetzal guatemalteco": "GTQ", - "ケツァル": "GTQ", - "과테말라 케찰": "GTQ", - "gvatemalos kecalis": "GTQ", - "guatemalteekse quetzal": "GTQ", - "ਗੁਆਤੇਮਾਲਾਈ ਕੇਤਸਾਲ": "GTQ", - "гватемальский кетсаль": "GTQ", - "гватемалски квецал": "GTQ", - "guatemala quetzalı": "GTQ", - "гватемальський кетсаль": "GTQ", - "دولار غياني": "GYD", - "гвиански долар": "GYD", - "dòlar de guyana": "GYD", - "guyanský dolar": "GYD", - "guyana dollar": "GYD", - "guyanese dollar": "GYD", - "gujana dolaro": "GYD", - "dólar guyanés": "GYD", - "dolar guyanar": "GYD", - "guyanan dollari": "GYD", - "dollar guyanien": "GYD", - "dólar güianés": "GYD", - "gvajanski dolar": "GYD", - "guyanai dollár": "GYD", - "dolar guyana": "GYD", - "dollaro della guyana": "GYD", - "ガイアナ・ドル": "GYD", - "가이아나 달러": "GYD", - "gajanos doleris": "GYD", - "guyaanse dollar": "GYD", - "ਗੁਇਆਨਵੀ ਡਾਲਰ": "GYD", - "dolar gujański": "GYD", - "dólar da guiana": "GYD", - "dolar guyanez": "GYD", - "гайанский доллар": "GYD", - "гвајански долар": "GYD", - "guyansk dollar": "GYD", - "guyana doları": "GYD", - "гаянський долар": "GYD", - "hongkong dollar": "HKD", - "دولار هونغ كونغ": "HKD", - "хонконгски долар": "HKD", - "dòlar de hong kong": "HKD", - "hongkongský dolar": "HKD", - "doler hong cong": "HKD", - "hong kong dollar": "HKD", - "honkonga dolaro": "HKD", - "dólar de hong kong": "HKD", - "hongkongi dollar": "HKD", - "dolar hongkongdar": "HKD", - "hongkongin dollari": "HKD", - "dollar de hong kong": "HKD", - "דולר הונג קונגי": "HKD", - "hongkonški dolar": "HKD", - "hongkongi dollár": "HKD", - "dolar hong kong": "HKD", - "dollaro di hong kong": "HKD", - "香港ドル": "HKD", - "홍콩 달러": "HKD", - "honkongo doleris": "HKD", - "ഹോങ്കോങ്ങ് ഡോളർ": "HKD", - "hongkongse dollar": "HKD", - "ਹਾਂਗਕਾਂਗ ਡਾਲਰ": "HKD", - "dolar hongkongu": "HKD", - "гонконгский доллар": "HKD", - "hongkonský dolár": "HKD", - "хонгконшки долар": "HKD", - "hongkongdollar": "HKD", - "ஹொங்கொங் டொலர்": "HKD", - "ดอลลาร์ฮ่องกง": "HKD", - "hong kong doları": "HKD", - "гонконзький долар": "HKD", - "đô la hồng kông": "HKD", - "hondurese lempira": "HNL", - "لمبيرة هندوراسية": "HNL", - "хондураска лемпира": "HNL", - "lempira": "HNL", - "honduraská lempira": "HNL", - "honduran lempira": "HNL", - "hondura lempiro": "HNL", - "hondurasin lempira": "HNL", - "למפירה": "HNL", - "honduraška lempira": "HNL", - "hondurasi lempira": "HNL", - "lempira honduras": "HNL", - "lempira honduregna": "HNL", - "レンピラ": "HNL", - "온두라스 렘피라": "HNL", - "hondūro lempira": "HNL", - "ਹਾਂਡੂਰਾਸੀ ਲੈਂਪੀਰਾ": "HNL", - "гондурасская лемпира": "HNL", - "honduras lempirası": "HNL", - "гондураська лемпіра": "HNL", - "جوردة هايتية": "HTG", - "gourde": "HTG", - "haitský gourde": "HTG", - "haitian gourde": "HTG", - "haitia gurdo": "HTG", - "haitin gourde": "HTG", - "גורד האיטי": "HTG", - "haićanski gourd": "HTG", - "haiti gourde": "HTG", - "gourde haiti": "HTG", - "gourde haitiano": "HTG", - "グールド": "HTG", - "아이티 구르드": "HTG", - "gurdas": "HTG", - "haïtiaanse gourde": "HTG", - "ਹੈਤੀਆਈ ਗੂਰਦ": "HTG", - "гаитянский гурд": "HTG", - "хаићански гурд": "HTG", - "гаїтянський гурд": "HTG", - "hongaarse forint": "HUF", - "فورنت مجري": "HUF", - "унгарски форинт": "HUF", - "fòrint": "HUF", - "maďarský forint": "HUF", - "ungarske forint": "HUF", - "forint": "HUF", - "hungarian forint": "HUF", - "hungara forinto": "HUF", - "forinto húngaro": "HUF", - "hungariar forint": "HUF", - "unkarin forintti": "HUF", - "florín húngaro": "HUF", - "פורינט": "HUF", - "mađarska forinta": "HUF", - "magyar forint": "HUF", - "fiorino ungherese": "HUF", - "フォリント": "HUF", - "헝가리 포린트": "HUF", - "forintas": "HUF", - "ungārijas forints": "HUF", - "ਹੰਗਰੀਆਈ ਫ਼ੋਰਿੰਟ": "HUF", - "florim húngaro": "HUF", - "форинт": "HUF", - "madžarski forint": "HUF", - "мађарска форинта": "HUF", - "அங்கேரிய போரிண்ட்": "HUF", - "โฟรินต์ฮังการี": "HUF", - "macar forinti": "HUF", - "угорський форинт": "HUF", - "đồng forint": "HUF", - "روبية إندونيسية": "IDR", - "индонезийска рупия": "IDR", - "rupia indonèsia": "IDR", - "indonéská rupie": "IDR", - "rupiah": "IDR", - "indonesische rupiah": "IDR", - "indonesian rupiah": "IDR", - "indonezia rupio": "IDR", - "rupia indonesia": "IDR", - "errupia indonesiar": "IDR", - "indonesian rupia": "IDR", - "roupie indonésienne": "IDR", - "indonezijska rupija": "IDR", - "indonéz rúpia": "IDR", - "rupia indonesiana": "IDR", - "ルピア": "IDR", - "인도네시아 루피아": "IDR", - "indonezijos rupija": "IDR", - "റുപിയ": "IDR", - "rupiah indonesia": "IDR", - "indonesische roepia": "IDR", - "ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੁਪੀਆ": "IDR", - "rupia indonezyjska": "IDR", - "rupia indonésia": "IDR", - "индонезийская рупия": "IDR", - "индонежанска рупија": "IDR", - "இந்தோனேசிய ரூபாய்": "IDR", - "รูปียะฮ์": "IDR", - "endonezya rupiahı": "IDR", - "індонезійська рупія": "IDR", - "nuwe sikkel": "ILS", - "شيكل إسرائيلي جديد": "ILS", - "израелски шекел": "ILS", - "ইসরায়েলি শেকেল": "ILS", - "nou xéquel": "ILS", - "nový izraelský šekel": "ILS", - "sicl newydd israel": "ILS", - "ny shekel": "ILS", - "schekel": "ILS", - "israeli new shekel": "ILS", - "nova israela siklo": "ILS", - "nuevo séquel": "ILS", - "iisraeli seekel": "ILS", - "shekel berri": "ILS", - "uusi israelin sekeli": "ILS", - "shekel": "ILS", - "novo shekel": "ILS", - "שקל חדש": "ILS", - "izraelski novi šekel": "ILS", - "izraeli új sékel": "ILS", - "shekel baru israel": "ILS", - "nuovo shekel israeliano": "ILS", - "新シェケル": "ILS", - "이스라엘 신 셰켈": "ILS", - "izraelio naujasis šekelis": "ILS", - "izraēlas šekelis": "ILS", - "ഇസ്രയേലി പുതിയ ഷെക്കൽ": "ILS", - "sheqel baru israel": "ILS", - "israëlische sjekel": "ILS", - "ਇਜ਼ਰਾਇਲੀ ਨਵਾਂ ਸ਼ੇਕਲ": "ILS", - "nowy izraelski szekel": "ILS", - "novo shekel israelense": "ILS", - "новый израильский шекель": "ILS", - "нови израелски шекел": "ILS", - "புது இசுரேலிய சேக்கல்": "ILS", - "yeni i̇srail şekeli": "ILS", - "ізраїльський новий шекель": "ILS", - "indiese roepee": "INR", - "روبية هندية": "INR", - "индийска рупия": "INR", - "ই রুপি": "INR", - "ভারতীয় টাকা": "INR", - "rupia índia": "INR", - "indická rupie": "INR", - "indiske rupier": "INR", - "indische rupie": "INR", - "digital rupee": "INR", - "indian rupee": "INR", - "barata rupio": "INR", - "rupia india": "INR", - "india ruupia": "INR", - "errupia indiar": "INR", - "digitaalinen rupia": "INR", - "intian rupia": "INR", - "roupie indienne": "INR", - "רופי הודי": "INR", - "indijska rupija": "INR", - "indiai rúpia": "INR", - "rupee india": "INR", - "rupia indiana": "INR", - "インド・ルピー": "INR", - "인도 루피": "INR", - "indijos rupija": "INR", - "indijas rūpija": "INR", - "ഇന്ത്യൻ രൂപ": "INR", - "indiase roepie": "INR", - "ropia d'índia": "INR", - "ਭਾਰਤੀ ਰੁਪਈਆ": "INR", - "rupia indyjska": "INR", - "rupie indiană": "INR", - "индийская рупия": "INR", - "indická rupia": "INR", - "индијска рупија": "INR", - "indisk rupie": "INR", - "இந்திய ரூபாய்": "INR", - "எண்ணிம ரூபாய்": "INR", - "డిజిటల్ రూపాయి": "INR", - "రూపాయి": "INR", - "รูปีอินเดีย": "INR", - "hindistan rupisi": "INR", - "індійська рупія": "INR", - "rupee ấn độ": "INR", - "دينار عراقي": "IQD", - "иракски динар": "IQD", - "dinar iraquià": "IQD", - "irácký dinár": "IQD", - "irakiske dinarer": "IQD", - "irakischer dinar": "IQD", - "iraqi dinar": "IQD", - "iraka dinaro": "IQD", - "dinar iraquí": "IQD", - "irakin dinaari": "IQD", - "dinar irakien": "IQD", - "דינר עיראקי": "IQD", - "irački dinar": "IQD", - "iraki dinár": "IQD", - "dinar irak": "IQD", - "dinaro iracheno": "IQD", - "イラク・ディナール": "IQD", - "이라크 디나르": "IQD", - "irako dinaras": "IQD", - "dinar iraq": "IQD", - "iraakse dinar": "IQD", - "ਇਰਾਕੀ ਦਿਨਾਰ": "IQD", - "dinar iracki": "IQD", - "dinar iraquiano": "IQD", - "иракский динар": "IQD", - "ирачки динар": "IQD", - "irakisk dinar": "IQD", - "ดีนาร์อิรัก": "IQD", - "irak dinarı": "IQD", - "іракський динар": "IQD", - "ريال إيراني": "IRR", - "ирански риал": "IRR", - "ইরানি রিয়াল": "IRR", - "rial iranià": "IRR", - "íránský rijál": "IRR", - "rial": [ - "YER", - "SAR", - "IRR" - ], - "iranischer rial": "IRR", - "iranian rial": "IRR", - "irana rialo": "IRR", - "rial iraní": "IRR", - "irandar rial": "IRR", - "iranin rial": "IRR", - "rial iranien": "IRR", - "ריאל איראני": "IRR", - "iranski rijal": "IRR", - "iráni riál": "IRR", - "rial iran": "IRR", - "riyal iraniano": "IRR", - "イラン・リヤル": "IRR", - "이란 리알": "IRR", - "irano rialas": "IRR", - "irānas riāls": "IRR", - "iraanse rial": "IRR", - "ਇਰਾਨੀ ਰਿਆਲ": "IRR", - "rial irański": "IRR", - "rial iraniano": "IRR", - "rial iranian": "IRR", - "иранский риал": "IRR", - "iránsky rial": "IRR", - "ирански ријал": "IRR", - "iransk rial": "IRR", - "i̇ran riyali": "IRR", - "іранський ріал": "IRR", - "كرونة آيسلندية": "ISK", - "исландска крона": "ISK", - "আইসল্যান্ডীয় ক্রোনা": "ISK", - "corona islandesa": "ISK", - "islandská koruna": "ISK", - "islandske krónur": "ISK", - "isländische krone": "ISK", - "icelandic króna": "ISK", - "islanda krono": "ISK", - "islandi kroon": "ISK", - "islandiar koroa": "ISK", - "islannin kruunu": "ISK", - "couronne islandaise": "ISK", - "coroa islandesa": "ISK", - "קרונה איסלנדית": "ISK", - "islandska kruna": "ISK", - "izlandi korona": "ISK", - "króna islandia": "ISK", - "corona islandese": "ISK", - "アイスランド・クローナ": "ISK", - "아이슬란드 크로나": "ISK", - "islandijos krona": "ISK", - "ijslandse kroon": "ISK", - "ਆਈਸਲੈਂਡੀ ਕਰੋਨਾ": "ISK", - "korona islandzka": "ISK", - "coroană islandeză": "ISK", - "исландская крона": "ISK", - "islandska krona": "ISK", - "исландска круна": "ISK", - "isländsk krona": "ISK", - "ஐஸ்லாந்திய குரோனா": "ISK", - "i̇zlanda kronası": "ISK", - "ісландська крона": "ISK", - "دولار جامايكي": "JMD", - "ямайски долар": "JMD", - "dòlar jamaicà": "JMD", - "jamajský dolar": "JMD", - "jamaika dollar": "JMD", - "jamaican dollar": "JMD", - "jamajka dolaro": "JMD", - "dólar jamaiquino": "JMD", - "dolar jamaikar": "JMD", - "jamaikan dollari": "JMD", - "dollar jamaïcain": "JMD", - "dólar xamaicano": "JMD", - "jamajčanski dolar": "JMD", - "jamaicai dollár": "JMD", - "dolar jamaika": "JMD", - "dollaro giamaicano": "JMD", - "ジャマイカ・ドル": "JMD", - "자메이카 달러": "JMD", - "jamaikos doleris": "JMD", - "jamaicaanse dollar": "JMD", - "ਜਮੈਕੀ ਡਾਲਰ": "JMD", - "dolar jamajski": "JMD", - "dólar jamaicano": "JMD", - "ямайский доллар": "JMD", - "јамајкански долар": "JMD", - "jamaicansk dollar": "JMD", - "jamaika doları": "JMD", - "ямайський долар": "JMD", - "دينار أردني": "JOD", - "йордански динар": "JOD", - "জর্ডানীয় দিনার": "JOD", - "dinar jordà": "JOD", - "jordánský dinár": "JOD", - "jordanischer dinar": "JOD", - "jordanian dinar": "JOD", - "jordania dinaro": "JOD", - "dinar jordano": "JOD", - "jordaania dinaar": "JOD", - "jordaniako dinar": "JOD", - "jordanian dinaari": "JOD", - "dinar jordanien": "JOD", - "דינר ירדני": "JOD", - "jordanski dinar": "JOD", - "jordán dinár": "JOD", - "dinar yordania": "JOD", - "dinaro giordano": "JOD", - "ヨルダン・ディナール": "JOD", - "요르단 디나르": "JOD", - "jordanijos dinaras": "JOD", - "dinar jordan": "JOD", - "jordaanse dinar": "JOD", - "ਜਾਰਡਨੀ ਦਿਨਾਰ": "JOD", - "dinar jordański": "JOD", - "dinar iordanian": "JOD", - "иорданский динар": "JOD", - "јордански динар": "JOD", - "jordansk dinar": "JOD", - "ürdün dinarı": "JOD", - "йорданський динар": "JOD", - "jen": "JPY", - "ين ياباني": "JPY", - "японска йена": "JPY", - "জাপানি ইয়েন": "JPY", - "ien": "JPY", - "japonský jen": "JPY", - "yen": "JPY", - "japanese yen": "JPY", - "japana eno": "JPY", - "jaapani jeen": "JPY", - "japanin jeni": "JPY", - "ין יפני": "JPY", - "japanski jen": "JPY", - "japán jen": "JPY", - "円": "JPY", - "일본 엔": "JPY", - "jena": "JPY", - "japānas jena": "JPY", - "ജാപ്പനീസ് യെൻ": "JPY", - "japanse yen": "JPY", - "ਜਪਾਨੀ ਯੈੱਨ": "JPY", - "iene": "JPY", - "иена": "JPY", - "јапански јен": "JPY", - "யென்": "JPY", - "เยน": "JPY", - "japon yeni": "JPY", - "єна": "JPY", - "yên nhật": "JPY", - "شيلينغ كيني": "KES", - "кенийски шилинг": "KES", - "xíling kenyà": "KES", - "keňský šilink": "KES", - "kenyansk shilling": "KES", - "kenia schilling": "KES", - "kenyan shilling": "KES", - "kenja ŝilingo": "KES", - "chelín keniano": "KES", - "keenia šilling": "KES", - "kenian šillinki": "KES", - "shilling kényan": "KES", - "xilin kenyano": "KES", - "שילינג קנייתי": "KES", - "kenijski šiling": "KES", - "kenyai shilling": "KES", - "shilling kenya": "KES", - "scellino keniota": "KES", - "ケニア・シリング": "KES", - "케냐 실링": "KES", - "kenijos šilingas": "KES", - "keniaanse shilling": "KES", - "szyling kenijski": "KES", - "xelim queniano": "KES", - "кенийский шиллинг": "KES", - "кенијски шилинг": "KES", - "kenya şilini": "KES", - "кенійський шилінг": "KES", - "سوم قيرغيزستاني": "KGS", - "киргизстански сом": "KGS", - "som kirguís": "KGS", - "kyrgyzský som": "KGS", - "som": [ - "UZS", - "KGS" - ], - "kyrgyz som": "KGS", - "kirgiza somo": "KGS", - "kirgisian som": "KGS", - "som kirguiz": "KGS", - "kirgistanski som": "KGS", - "kirgiz szom": "KGS", - "som kirgizstan": "KGS", - "som kirghiso": "KGS", - "キルギス・ソム": "KGS", - "키르기스스탄 솜": "KGS", - "somas": "KGS", - "kirgizische som": "KGS", - "ਕਿਰਗਿਜ਼ਸਤਾਨੀ ਸੋਮ": "KGS", - "som kîrgîz": "KGS", - "киргизский сом": "KGS", - "киргиски сом": "KGS", - "kirgizistansk som": "KGS", - "kırgızistan somu": "KGS", - "киргизький сом": "KGS", - "ريال كمبودي": "KHR", - "камбоджански риел": "KHR", - "riel": "KHR", - "kambodžský riel": "KHR", - "kambodschanischer riel": "KHR", - "cambodian riel": "KHR", - "kamboĝa rielo": "KHR", - "riel camboyano": "KHR", - "kanbodiar bigarren riel": "KHR", - "kambodžan riel": "KHR", - "riel camboxano": "KHR", - "kambodžanski rijal": "KHR", - "kambodzsai riel": "KHR", - "riel kamboja": "KHR", - "riel cambogiano": "KHR", - "リエル": "KHR", - "캄보디아 리엘": "KHR", - "kambodžos rielis": "KHR", - "കംബോഡിയൻ റീൽ": "KHR", - "cambodjaanse riel": "KHR", - "ਕੰਬੋਡੀਆਈ ਰਿਆਲ": "KHR", - "riel kambodżański": "KHR", - "riel cambojano": "KHR", - "риель": "KHR", - "камбоџански ријел": "KHR", - "เรียลกัมพูชา": "KHR", - "камбоджійський рієль": "KHR", - "riel campuchia": "KHR", - "فرنك قمري": "KMF", - "коморски франк": "KMF", - "franc de les comores": "KMF", - "komorský frank": "KMF", - "komoren franc": "KMF", - "comorian franc": "KMF", - "komora franko": "KMF", - "franco comorense": "KMF", - "komorien frangi": "KMF", - "franc comorien": "KMF", - "komorski franak": "KMF", - "comore i frank": "KMF", - "franc komoro": "KMF", - "franco delle comore": "KMF", - "コモロ・フラン": "KMF", - "코모로 프랑": "KMF", - "komorų frankas": "KMF", - "franc comoros": "KMF", - "comorese frank": "KMF", - "frank komorów": "KMF", - "franco comoriano": "KMF", - "franc comorian": "KMF", - "франк комор": "KMF", - "коморски франак": "KMF", - "komorisk franc": "KMF", - "komor frangı": "KMF", - "коморський франк": "KMF", - "وون كوري شمالي": "KPW", - "севернокорейски вон": "KPW", - "won nord coreà": "KPW", - "severokorejský won": "KPW", - "nordkoreanske won": "KPW", - "nordkoreanischer won": "KPW", - "north korean won": "KPW", - "nord korea ŭono": "KPW", - "won norcoreano": "KPW", - "põhja korea vonn": "KPW", - "pohjois korean won": "KPW", - "won nord coréen": "KPW", - "וון צפון קוריאני": "KPW", - "sjevernokorejski von": "KPW", - "észak koreai von": "KPW", - "won korea utara": "KPW", - "won nordcoreano": "KPW", - "朝鮮民主主義人民共和国ウォン": "KPW", - "조선민주주의인민공화국 원": "KPW", - "šiaurės korėjos vona": "KPW", - "വോൺ": "KPW", - "noord koreaanse won": "KPW", - "ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੌਨ": "KPW", - "won północnokoreański": "KPW", - "won norte coreano": "KPW", - "won nord coreean": "KPW", - "северокорейская вона": "KPW", - "севернокорејски вон": "KPW", - "nordkoreansk won": "KPW", - "วอน": [ - "KRW", - "KPW" - ], - "kuzey kore wonu": "KPW", - "північнокорейська вона": "KPW", - "won cộng hòa dân chủ nhân dân triều tiên": "KPW", - "suid koreaanse won": "KRW", - "وون كوري جنوبي": "KRW", - "южнокорейски вон": "KRW", - "won sud coreà": "KRW", - "jihokorejský won": "KRW", - "sydkoreanske won": "KRW", - "südkoreanischer won": "KRW", - "south korean won": "KRW", - "sud korea ŭono": "KRW", - "won surcoreano": "KRW", - "lõuna korea vonn": "KRW", - "etelä korean won": "KRW", - "won sud coréen": "KRW", - "וון דרום קוריאני": "KRW", - "južnokorejski von": "KRW", - "dél koreai von": "KRW", - "won korea selatan": "KRW", - "won sudcoreano": "KRW", - "大韓民国ウォン": "KRW", - "대한민국 원": "KRW", - "pietų korėjos vonas": "KRW", - "dienvidkorejas vona": "KRW", - "zuid koreaanse won": "KRW", - "ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੌਨ": "KRW", - "won południowokoreański": "KRW", - "won sul coreano": "KRW", - "won sud coreean": "KRW", - "южнокорейская вона": "KRW", - "južnokorejski won": "KRW", - "јужнокорејски вон": "KRW", - "sydkoreansk won": "KRW", - "güney kore wonu": "KRW", - "південнокорейська вона": "KRW", - "won hàn quốc": "KRW", - "دينار كويتي": "KWD", - "кувейтски динар": "KWD", - "কুয়েতি দিনার": "KWD", - "dinar kuwaitià": "KWD", - "kuvajtský dinár": "KWD", - "kuwaitiske dinarer": "KWD", - "kuwait dinar": "KWD", - "kuwaiti dinar": "KWD", - "kuvajta dinaro": "KWD", - "dinar kuwaití": "KWD", - "kuwaitin dinaari": "KWD", - "dinar koweïtien": "KWD", - "דינר כוויתי": "KWD", - "kuvajtski dinar": "KWD", - "kuvaiti dinár": "KWD", - "dinar kuwait": "KWD", - "dinaro kuwaitiano": "KWD", - "クウェート・ディナール": "KWD", - "쿠웨이트 디나르": "KWD", - "kuveito dinaras": "KWD", - "കുവൈറ്റി ദിനാർ": "KWD", - "koeweitse dinar": "KWD", - "ਕੁਵੈਤੀ ਦਿਨਾਰ": "KWD", - "dinar kuwejcki": "KWD", - "dinar kuwaitiano": "KWD", - "кувейтский динар": "KWD", - "кувајтски динар": "KWD", - "kuwaitisk dinar": "KWD", - "குவைத் தினார்": "KWD", - "kuveyt dinarı": "KWD", - "кувейтський динар": "KWD", - "دولار جزر كايمان": "KYD", - "dòlar de les illes caiman": "KYD", - "dolar kajmanských ostrovů": "KYD", - "kaiman dollar": "KYD", - "cayman islands dollar": "KYD", - "kajmana dolaro": "KYD", - "dólar de las islas caimán": "KYD", - "dolar kaimandar": "KYD", - "caymansaarten dollari": "KYD", - "dollar des îles caïmans": "KYD", - "kajmanski dolar": "KYD", - "kajmán szigeteki dollár": "KYD", - "dolar kepulauan cayman": "KYD", - "dollaro delle cayman": "KYD", - "ケイマン諸島・ドル": "KYD", - "케이맨 제도 달러": "KYD", - "kaimanų salų doleris": "KYD", - "kaaimaneilandse dollar": "KYD", - "ਕੇਮਨ ਟਾਪੂ ਡਾਲਰ": "KYD", - "dolar kajmański": "KYD", - "dólar das ilhas caimã": "KYD", - "доллар каймановых островов": "KYD", - "долар кајманских острва": "KYD", - "caymansk dollar": "KYD", - "cayman adaları doları": "KYD", - "долар кайманових островів": "KYD", - "đô la quần đảo cayman": "KYD", - "تينغ كازاخستاني": "KZT", - "казахстанско тенге": "KZT", - "tenge": "KZT", - "kazakhstani tenge": "KZT", - "kazaĥa tengo": "KZT", - "tenge kazajo": "KZT", - "kazakstanin tenge": "KZT", - "tenge kazakh": "KZT", - "kazahstanski tenge": "KZT", - "kazak tenge": "KZT", - "tenge kazakhstan": "KZT", - "tenge kazako": "KZT", - "テンゲ": "KZT", - "카자흐스탄 텡게": "KZT", - "kazachstano tengė": "KZT", - "kazachse tenge": "KZT", - "ਕਜ਼ਾਖ਼ਸਤਾਨੀ ਤੇਂਗੇ": "KZT", - "казахстанский тенге": "KZT", - "කසකස්තාන ටෙන්ජි": "KZT", - "kazachstanský tenge": "KZT", - "казахстански тенге": "KZT", - "கசக்ஸ்தானிய டெங்கே": "KZT", - "เท็งเก": "KZT", - "казахстанський теньге": "KZT", - "kip": "LAK", - "كيب لاوي": "LAK", - "лаоски кип": "LAK", - "laoský kip": "LAK", - "laotischer kip": "LAK", - "lao kip": "LAK", - "laosa kipo": "LAK", - "kip laosiano": "LAK", - "laostar kip berria": "LAK", - "laosin kip": "LAK", - "laoski kip": "LAK", - "laoszi kip": "LAK", - "kip laotiano": "LAK", - "キープ": "LAK", - "라오스 킵": "LAK", - "laoso kipas": "LAK", - "laotiaanse kip": "LAK", - "ਲਾਓ ਕਿਪ": "LAK", - "лаосский кип": "LAK", - "กีบ": "LAK", - "laos kipi": "LAK", - "лаоський кіп": "LAK", - "kíp lào": "LAK", - "ليرة لبنانية": "LBP", - "ливанска лира": "LBP", - "lliura libanesa": "LBP", - "libanonská libra": "LBP", - "libanesisches pfund": "LBP", - "lebanese pound": "LBP", - "libana liro": "LBP", - "libra libanesa": "LBP", - "libanonin punta": "LBP", - "livre libanaise": "LBP", - "לירה לבנונית": "LBP", - "libanonska funta": "LBP", - "libanoni font": "LBP", - "pound lebanon": "LBP", - "lira libanese": "LBP", - "レバノン・ポンド": "LBP", - "레바논 파운드": "LBP", - "libano svaras": "LBP", - "paun lubnan": "LBP", - "libanees pond": "LBP", - "ਲਿਬਨਾਨੀ ਪਾਊਂਡ": "LBP", - "funt libański": "LBP", - "ливанский фунт": "LBP", - "libanonski funt": "LBP", - "либанска фунта": "LBP", - "libanesiskt pund": "LBP", - "lübnan lirası": "LBP", - "ліванський фунт": "LBP", - "روبية سريلانكية": "LKR", - "шриланкийска рупия": "LKR", - "শ্রীলঙ্কান রুপি": "LKR", - "rupia de sri lanka": "LKR", - "srílanská rupie": "LKR", - "srilankanske rupee": "LKR", - "sri lanka rupie": "LKR", - "sri lankan rupee": "LKR", - "srilanka rupio": "LKR", - "errupia srilankar": "LKR", - "sri lankan rupia": "LKR", - "roupie srilankaise": "LKR", - "šrilanska rupija": "LKR", - "srí lanka i rúpia": "LKR", - "rupee sri lanka": "LKR", - "rupia singalese": "LKR", - "スリランカ・ルピー": "LKR", - "스리랑카 루피": "LKR", - "šri lankos rupija": "LKR", - "ശ്രീലങ്കൻ രൂപ": "LKR", - "sri lankaanse roepie": "LKR", - "ਸ੍ਰੀਲੰਕਾਈ ਰੁਪਿਆ": "LKR", - "rupia lankijska": "LKR", - "rupia do sri lanka": "LKR", - "шри ланкийская рупия": "LKR", - "ශ්රී ලංකා රුපියල": "LKR", - "шриланчанска рупија": "LKR", - "lankesisk rupee": "LKR", - "இலங்கை ரூபாய்": "LKR", - "sri lanka rupisi": "LKR", - "рупія шрі ланки": "LKR", - "دولار ليبيري": "LRD", - "либерийски долар": "LRD", - "dòlar liberià": "LRD", - "liberijský dolar": "LRD", - "liberiansk dollar": "LRD", - "liberianischer dollar": "LRD", - "liberian dollar": "LRD", - "liberia dolaro": "LRD", - "dólar liberiano": "LRD", - "liberian dollari": "LRD", - "dollar libérien": "LRD", - "דולר ליברי": "LRD", - "liberijski dolar": "LRD", - "libériai dollár": "LRD", - "dolar liberia": "LRD", - "dollaro liberiano": "LRD", - "リベリア・ドル": "LRD", - "라이베리아 달러": "LRD", - "liberijos doleris": "LRD", - "liberiaanse dollar": "LRD", - "dolar liberyjski": "LRD", - "либерийский доллар": "LRD", - "либеријски долар": "LRD", - "liberya doları": "LRD", - "ліберійський долар": "LRD", - "لوتي ليسوتو": "LSL", - "лесото лоти": "LSL", - "loti": "LSL", - "lesothský loti": "LSL", - "maloti": "LSL", - "lesothischer loti": "LSL", - "lesotho loti": "LSL", - "lesota lotio": "LSL", - "lesothon loti": "LSL", - "lesotski loti": "LSL", - "lesothói loti": "LSL", - "loti lesotho": "LSL", - "loti lesothiano": "LSL", - "ロチ": "LSL", - "레소토 로티": "LSL", - "lesothaanse loti": "LSL", - "лоти лесото": "LSL", - "лесотски лоти": "LSL", - "лоті лесото": "LSL", - "دينار ليبي": "LYD", - "либийски динар": "LYD", - "dinar libi": "LYD", - "libyjský dinár": "LYD", - "dinar libia": "LYD", - "libyske dinarer": "LYD", - "libyscher dinar": "LYD", - "libyan dinar": "LYD", - "libia dinaro": "LYD", - "dinar libio": "LYD", - "libyan dinaari": "LYD", - "dinar libyen": "LYD", - "דינר לובי": "LYD", - "libijski dinar": "LYD", - "líbiai dinár": "LYD", - "dinar libya": "LYD", - "dinaro libico": "LYD", - "リビア・ディナール": "LYD", - "리비아 디나르": "LYD", - "libijos dinaras": "LYD", - "libische dinar": "LYD", - "dinar libijski": "LYD", - "dinar líbio": "LYD", - "ливийский динар": "LYD", - "либијски динар": "LYD", - "libysk dinar": "LYD", - "libya dinarı": "LYD", - "лівійський динар": "LYD", - "درهم مغربي": "MAD", - "марокански дирхам": "MAD", - "dírham marroquí": "MAD", - "marocký dirham": "MAD", - "dirham moroco": "MAD", - "marokkanischer dirham": "MAD", - "moroccan dirham": "MAD", - "maroka dirhamo": "MAD", - "marokoar dirham": "MAD", - "marokon dirhami": "MAD", - "dirham marocain": "MAD", - "dirham": [ - "AED", - "MAD" - ], - "דירהם מרוקאי": "MAD", - "marokanski dirham": "MAD", - "marokkói dirham": "MAD", - "dirham maroko": "MAD", - "dirham marocchino": "MAD", - "モロッコ・ディルハム": "MAD", - "모로코 디르함": "MAD", - "maroko dirhamas": "MAD", - "മൊറോക്കൻ ദിർഹം": "MAD", - "dirham maghribi": "MAD", - "marokkaanse dirham": "MAD", - "dirham marokański": "MAD", - "dirrã marroquino": "MAD", - "dirham marocan": "MAD", - "марокканский дирхам": "MAD", - "marockansk dirham": "MAD", - "fas dirhemi": "MAD", - "марокканський дирхам": "MAD", - "ليو مولدوفي": "MDL", - "молдовска лея": "MDL", - "leu moldau": "MDL", - "moldavský lei": "MDL", - "moldauischer leu": "MDL", - "moldovan leu": "MDL", - "moldava leo": "MDL", - "leu moldavo": "MDL", - "moldova leu": "MDL", - "leu moldave": "MDL", - "לאו מולדובני": "MDL", - "moldavski lej": "MDL", - "moldáv lej": "MDL", - "leu moldova": "MDL", - "モルドバ・レウ": "MDL", - "몰도바 레우": "MDL", - "moldavijos lėja": "MDL", - "moldovas leja": "MDL", - "moldavische leu": "MDL", - "ਮੋਲਦੋਵੀ ਲਿਊ": "MDL", - "lej mołdawii": "MDL", - "leu moldávio": "MDL", - "leu moldovenesc": "MDL", - "молдавский лей": "MDL", - "moldavski lev": "MDL", - "молдавски леј": "MDL", - "moldavisk leu": "MDL", - "மல்டோவிய லியு": "MDL", - "moldova leyi": "MDL", - "молдовський лей": "MDL", - "malgassiese ariary": "MGA", - "أرياري مدغشقري": "MGA", - "ariary": "MGA", - "malgašský ariary": "MGA", - "malagasy ariary": "MGA", - "malagasa ariaro": "MGA", - "ariary malgache": "MGA", - "madagaskarin ariary": "MGA", - "אריארי": "MGA", - "malgaški arijari": "MGA", - "madagaszkári ariary": "MGA", - "ariary madagaskar": "MGA", - "ariary malgascio": "MGA", - "マダガスカル・アリアリ": "MGA", - "마다가스카르 아리아리": "MGA", - "madagaskaro ariaris": "MGA", - "malagassische ariary": "MGA", - "ariary malgaxe": "MGA", - "малагасийский ариари": "MGA", - "аријари": "MGA", - "малагасійський аріарі": "MGA", - "دينار مقدوني": "MKD", - "македонски денар": "MKD", - "denar": "MKD", - "makedonský denár": "MKD", - "makedonske denarer": "MKD", - "mazedonischer denar": "MKD", - "macedonian denar": "MKD", - "makedona denaro": "MKD", - "denar macedonio": "MKD", - "põhja makedoonia denaar": "MKD", - "pohjois makedonian denaari": "MKD", - "denar macédonien": "MKD", - "דינר מקדוני": "MKD", - "makedonski denar": "MKD", - "macedón dénár": "MKD", - "denar makedonia": "MKD", - "dinaro macedone": "MKD", - "マケドニア・デナール": "MKD", - "북마케도니아 데나르": "MKD", - "makedonijos denaras": "MKD", - "denars": "MKD", - "denar macedonia": "MKD", - "macedonische denar": "MKD", - "ਮਕਦੂਨੀਆਈ ਦਿਨਾਰ": "MKD", - "dinar macedónio": "MKD", - "denar macedonean": "MKD", - "македонский денар": "MKD", - "macedónsky denár": "MKD", - "makedonisk denar": "MKD", - "மாசிடோனிய தெனார்": "MKD", - "แดนาร์มาซิโดเนีย": "MKD", - "makedon dinarı": "MKD", - "македонський денар": "MKD", - "denar bắc macedonia": "MKD", - "mianmarese kyat": "MMK", - "كيات ميانماري": "MMK", - "মিয়ানমার ক্যত": "MMK", - "kyat": "MMK", - "myanmarský kyat": "MMK", - "myanmar kyat": "MMK", - "birma kjato": "MMK", - "kyat birmano": "MMK", - "myanmarin kyat": "MMK", - "mijanmarski kjat": "MMK", - "mianmari kjap": "MMK", - "チャット": "MMK", - "미얀마 짯": "MMK", - "kijatas": "MMK", - "ബർമ്മീസ് ക്യാറ്റ്": "MMK", - "myanmarese kyat": "MMK", - "kiat": "MMK", - "quiate": "MMK", - "кьят": "MMK", - "мјанмарски кјат": "MMK", - "จัต": "MMK", - "м'янмський к'ят": "MMK", - "توغروغ منغولي": "MNT", - "монголски тугрик": "MNT", - "tögrög": "MNT", - "tugrik": "MNT", - "mongolian tögrög": "MNT", - "mongola tugriko": "MNT", - "tugrik mongol": "MNT", - "mongolian tugrik": "MNT", - "טוגרוג": "MNT", - "mongolski tugrik": "MNT", - "mongol tugrik": "MNT", - "tugrik mongolo": "MNT", - "トゥグルグ": "MNT", - "몽골 투그릭": "MNT", - "tugrikas": "MNT", - "mongoolse tugrik": "MNT", - "ਮੰਗੋਲੀਆਈ ਤੋਗਰੋਗ": "MNT", - "тугрик": "MNT", - "mongolský tugrik": "MNT", - "ทูกรีก": "MNT", - "монгольський тугрик": "MNT", - "باتاكا ماكاوية": "MOP", - "pataca": "MOP", - "macajská pataca": "MOP", - "macau pataca": "MOP", - "macanese pataca": "MOP", - "makaa patako": "MOP", - "pataca macaense": "MOP", - "pataca macautar": "MOP", - "macaon pataca": "MOP", - "פטקה": "MOP", - "makaonska pataka": "MOP", - "makaói pataca": "MOP", - "pataca makau": "MOP", - "pataca di macao": "MOP", - "マカオ・パタカ": "MOP", - "마카오 파타카": "MOP", - "pataka": "MOP", - "macause pataca": "MOP", - "ਮਕਾਉਈ ਪਤਾਕਾ": "MOP", - "pataca de macau": "MOP", - "патака макао": "MOP", - "makao patakası": "MOP", - "pataca ma cao": "MOP", - "أوقية موريتانية": "MRU", - "мавританска угия": "MRU", - "ouguiya": "MRU", - "mauritánská ukíjá": "MRU", - "mauritanian ouguiya": "MRU", - "maŭritania uguijao": "MRU", - "uguiya": "MRU", - "mauretanska ouguja": "MRU", - "mauritániai ouguiya": "MRU", - "ouguiya mauritana": "MRU", - "ウギア": "MRU", - "모리타니 우기야": "MRU", - "mauritanijos ugija": "MRU", - "ugija": "MRU", - "mauritaanse ouguiya": "MRU", - "uguia": "MRU", - "угия": "MRU", - "мауританска огија": "MRU", - "ugiya": "MRU", - "мавританська угія": "MRU", - "mauritiaanse roepee": "MUR", - "روبية موريشية": "MUR", - "rupia de maurici": "MUR", - "mauricijská rupie": "MUR", - "mauritiske rupee": "MUR", - "mauritius rupie": "MUR", - "mauritian rupee": "MUR", - "maŭricia rupio": "MUR", - "rupia de mauricio": "MUR", - "errupia mauriziar": "MUR", - "mauritiuksen rupia": "MUR", - "roupie mauricienne": "MUR", - "mauricijska rupija": "MUR", - "mauritiusi rúpia": "MUR", - "rupee mauritius": "MUR", - "rupia mauriziana": "MUR", - "モーリシャス・ルピー": "MUR", - "모리셔스 루피": "MUR", - "mauricijaus rupija": "MUR", - "mauritiaanse roepie": "MUR", - "rupia mauritiusu": "MUR", - "rupia mauriciana": "MUR", - "маврикийская рупия": "MUR", - "маурицијска рупија": "MUR", - "mauritisk rupie": "MUR", - "mauritius rupisi": "MUR", - "маврикійська рупія": "MUR", - "روفيه مالديفية": "MVR", - "малдивска рупия": "MVR", - "মালদ্বীপীয় রুফিয়াহ": "MVR", - "rupia de les maldives": "MVR", - "maledivská rupie": "MVR", - "rufiyaa": "MVR", - "ދިވެހި ރުފިޔާ": "MVR", - "maldivian rufiyaa": "MVR", - "maldiva rufijao": "MVR", - "rupia de maldivas": "MVR", - "errupia maldivar": "MVR", - "malediivien rufiyaa": "MVR", - "maldivska rufija": "MVR", - "maldív rúfia": "MVR", - "rufiyaa delle maldive": "MVR", - "ルフィヤ": "MVR", - "몰디브 루피야": "MVR", - "maldyvų rufija": "MVR", - "maldivische rufiyaa": "MVR", - "ਮਾਲਦੀਵੀ ਰੁਫ਼ੀਆ": "MVR", - "rupia malediwska": "MVR", - "rupia maldívia": "MVR", - "мальдивская руфия": "MVR", - "малдивска руфија": "MVR", - "rufiyah": "MVR", - "மாலத்தீவின் ருஃபியா": "MVR", - "мальдівська руфія": "MVR", - "كواشا ملاوية": "MWK", - "kwacha malawià": "MWK", - "malawiská kwacha": "MWK", - "malawi kwacha": "MWK", - "malawian kwacha": "MWK", - "malavia kvaĉo": "MWK", - "kwacha malauí": "MWK", - "malawi kvatša": "MWK", - "malawin kwacha": "MWK", - "kwacha malawien": "MWK", - "kwacha de malawi": "MWK", - "malavijska kvača": "MWK", - "kwacha malawi": "MWK", - "kwacha malawiano": "MWK", - "マラウイ・クワチャ": "MWK", - "말라위 콰차": "MWK", - "malavio kvača": "MWK", - "malawische kwacha": "MWK", - "kwacha malawijska": "MWK", - "kwacha do maláui": "MWK", - "малавийская квача": "MWK", - "малавијска квача": "MWK", - "malawisk kwacha": "MWK", - "malavi kvaçası": "MWK", - "малавійська квача": "MWK", - "meksikaanse peso": "MXN", - "بيزو مكسيكي": "MXN", - "мексиканско песо": "MXN", - "peso mexicà": "MXN", - "mexické peso": "MXN", - "mexikanischer peso": "MXN", - "mexican peso": "MXN", - "meksika peso": "MXN", - "peso mexicano": "MXN", - "peso mexikar": "MXN", - "meksikon peso": "MXN", - "peso mexicain": "MXN", - "פסו מקסיקני": "MXN", - "meksički pezo": "MXN", - "mexikói peso": "MXN", - "peso mexican": "MXN", - "peso meksiko": "MXN", - "peso messicano": "MXN", - "メキシコ・ペソ": "MXN", - "멕시코 페소": "MXN", - "meksikos pesas": "MXN", - "peso mexico": "MXN", - "mexicaanse peso": "MXN", - "ਮੈਕਸੀਕੀ ਪੇਸੋ": "MXN", - "peso meksykańskie": "MXN", - "мексиканское песо": "MXN", - "мексички пезос": "MXN", - "mexikansk peso": "MXN", - "மெக்சிகோ பெசோ": "MXN", - "meksika pesosu": "MXN", - "мексиканський песо": "MXN", - "peso méxico": "MXN", - "mexican unidad de inversión": "MXV", - "unidades de inversión": "MXV", - "ringgit": "MYR", - "رينغيت ماليزي": "MYR", - "малайзийски рингит": "MYR", - "malajsijský ringgit": "MYR", - "malaysischer ringgit": "MYR", - "malaysian ringgit": "MYR", - "malajzia ringito": "MYR", - "malesian ringgit": "MYR", - "malezijski ringit": "MYR", - "maláj ringgit": "MYR", - "ringgit malaysiano": "MYR", - "リンギット": "MYR", - "말레이시아 링깃": "MYR", - "malaizijos ringitas": "MYR", - "റിങ്കിറ്റ്": "MYR", - "maleisische ringgit": "MYR", - "ਮਲੇਸ਼ੀਆਈ ਰਿਙਿਤ": "MYR", - "ringuite": "MYR", - "малайзийский ринггит": "MYR", - "малезијски рингит": "MYR", - "மலேசிய ரிங்கிட்": "MYR", - "ริงกิต": "MYR", - "малайзійський рингіт": "MYR", - "متكال موزمبيقي": "MZN", - "metical": "MZN", - "mosambický metical": "MZN", - "mozambican metical": "MZN", - "mozambika metikalo": "MZN", - "metical mozambiqueño": "MZN", - "mosambikin metical": "MZN", - "mozambički metikal": "MZN", - "mozambiki metical": "MZN", - "metical mozambik": "MZN", - "metical mozambicano": "MZN", - "メティカル": "MZN", - "모잠비크 메티칼": "MZN", - "metikalis": "MZN", - "metikals": "MZN", - "metical mozambique": "MZN", - "mozambikaanse metical": "MZN", - "мозамбикский метикал": "MZN", - "мозамбички метикал": "MZN", - "мозамбіцький метікал": "MZN", - "namibiese dollar": "NAD", - "دولار ناميبي": "NAD", - "намибийски долар": "NAD", - "dòlar namibià": "NAD", - "namibijský dolar": "NAD", - "namibisk dollar": "NAD", - "namibia dollar": "NAD", - "namibian dollar": "NAD", - "namibia dolaro": "NAD", - "dólar namibio": "NAD", - "namibian dollari": "NAD", - "dollar namibien": "NAD", - "דולר נמיבי": "NAD", - "namibijski dolar": "NAD", - "namíbiai dollár": "NAD", - "dolar namibia": "NAD", - "dollaro namibiano": "NAD", - "ナミビア・ドル": "NAD", - "나미비아 달러": "NAD", - "namibijos doleris": "NAD", - "namibische dollar": "NAD", - "dolar namibian": "NAD", - "dolar namibijski": "NAD", - "dólar da namíbia": "NAD", - "доллар намибии": "NAD", - "намибијски долар": "NAD", - "namibya doları": "NAD", - "намібійський долар": "NAD", - "nigeriese naira": "NGN", - "نيرة نيجيرية": "NGN", - "нигерийска найра": "NGN", - "naira": "NGN", - "nigerijská naira": "NGN", - "nigerian naira": "NGN", - "niĝeria najro": "NGN", - "נאירה": "NGN", - "nigerijska naira": "NGN", - "nigériai naira": "NGN", - "naira nigeria": "NGN", - "naira nigeriana": "NGN", - "ナイラ": "NGN", - "나이지리아 나이라": "NGN", - "nigeriaanse naira": "NGN", - "найра": "NGN", - "нигеријска наира": "NGN", - "ไนรา": "NGN", - "nijerya nairası": "NGN", - "нігерійська найра": "NGN", - "córdoba": "NIO", - "كوردبا نيكاراغوا": "NIO", - "никарагуанска кордоба": "NIO", - "nikaragujská córdoba": "NIO", - "córdoba oro": "NIO", - "nicaraguan córdoba": "NIO", - "nikaragva kordovo": "NIO", - "cordoba": "NIO", - "קורדובה": "NIO", - "nikaragvanska kordoba": "NIO", - "nicaraguai córdoba": "NIO", - "córdoba nikaragua": "NIO", - "córdoba nicaraguense": "NIO", - "ニカラグア・コルドバ": "NIO", - "니카라과 코르도바": "NIO", - "nikaragvos kordoba": "NIO", - "nicaraguaanse córdoba": "NIO", - "ਨਿਕਾਰਾਗੁਆਈ ਕੋਰਦੋਬਾ": "NIO", - "cordoba oro": "NIO", - "никарагуанская кордоба": "NIO", - "никарагванска кордоба": "NIO", - "kordoba": "NIO", - "нікарагуанська кордоба": "NIO", - "noorse kroon": "NOK", - "كرونة نروجية": "NOK", - "норвежка крона": "NOK", - "corona noruega": "NOK", - "norská koruna": "NOK", - "norske kroner": "NOK", - "norwegische krone": "NOK", - "norwegian krone": "NOK", - "norvega krono": "NOK", - "norra kroon": "NOK", - "norvegiar koroa": "NOK", - "norjan kruunu": "NOK", - "couronne norvégienne": "NOK", - "coroa norueguesa": "NOK", - "כתר נורווגי": "NOK", - "norveška kruna": "NOK", - "norvég korona": "NOK", - "krona norwegia": "NOK", - "corona norvegese": "NOK", - "ノルウェー・クローネ": "NOK", - "노르웨이 크로네": "NOK", - "norvegijos krona": "NOK", - "norvēģijas krona": "NOK", - "ਨਾਰਵੇਈ ਕਰੋਨਾ": "NOK", - "korona norweska": "NOK", - "coroană norvegiană": "NOK", - "норвежская крона": "NOK", - "nórska koruna": "NOK", - "norveška krona": "NOK", - "норвешка круна": "NOK", - "norsk krona": "NOK", - "நார்வே குரோனா": "NOK", - "norveç kronu": "NOK", - "норвезька крона": "NOK", - "krone na uy": "NOK", - "nepalese roepee": "NPR", - "روبية نيبالية": "NPR", - "непалска рупия": "NPR", - "নেপালি রুপি": "NPR", - "rupia nepalesa": "NPR", - "nepálská rupie": "NPR", - "nepalesiske rupee": "NPR", - "nepalesische rupie": "NPR", - "nepalese rupee": "NPR", - "nepala rupio": "NPR", - "rupia nepalí": "NPR", - "nepali ruupia": "NPR", - "errupia nepaldar": "NPR", - "nepalin rupia": "NPR", - "roupie népalaise": "NPR", - "רופי נפאלי": "NPR", - "nepalska rupija": "NPR", - "nepáli rúpia": "NPR", - "rupee nepal": "NPR", - "rupia nepalese": "NPR", - "ネパール・ルピー": "NPR", - "네팔 루피": "NPR", - "nepalo rupija": "NPR", - "നേപ്പാളി രൂപ": "NPR", - "nepalese roepie": "NPR", - "ਨੇਪਾਲੀ ਰੁਪਈਆ": "NPR", - "rupia nepalska": "NPR", - "непальская рупия": "NPR", - "непалска рупија": "NPR", - "nepalesisk rupie": "NPR", - "நேபாள ரூபாய்": "NPR", - "รูปีเนปาล": "NPR", - "nepal rupisi": "NPR", - "непальська рупія": "NPR", - "nieu seelandse dollar": "NZD", - "دولار نيوزيلندي": "NZD", - "новозеландски долар": "NZD", - "নিউজিল্যান্ড ডলার": "NZD", - "dòlar neozelandès": "NZD", - "novozélandský dolar": "NZD", - "newzealandske dollar": "NZD", - "neuseeland dollar": "NZD", - "new zealand dollar": "NZD", - "novzelanda dolaro": "NZD", - "dólar neozelandés": "NZD", - "zeelandaberritar dolar": "NZD", - "uuden seelannin dollari": "NZD", - "dollar néo zélandais": "NZD", - "דולר ניו זילנדי": "NZD", - "novozelandski dolar": "NZD", - "új zélandi dollár": "NZD", - "dolar selandia baru": "NZD", - "dollaro neozelandese": "NZD", - "ニュージーランド・ドル": "NZD", - "뉴질랜드 달러": "NZD", - "naujosios zelandijos doleris": "NZD", - "jaunzēlandes dolārs": "NZD", - "dolar new zealand": "NZD", - "nieuw zeelandse dollar": "NZD", - "dolar nowozelandzki": "NZD", - "dólar neozelandês": "NZD", - "dolar neozeelandez": "NZD", - "новозеландский доллар": "NZD", - "novozélandský dolár": "NZD", - "nyzeeländsk dollar": "NZD", - "yeni zelanda doları": "NZD", - "новозеландський долар": "NZD", - "đô la new zealand": "NZD", - "ريال عماني": "OMR", - "омански риял": "OMR", - "rial omanita": "OMR", - "ománský rijál": "OMR", - "omansk rial": "OMR", - "omanischer rial": "OMR", - "omani rial": "OMR", - "omana rialo": "OMR", - "rial omaní": "OMR", - "omanin rial": "OMR", - "rial omanais": "OMR", - "ריאל עומאני": "OMR", - "omanski rijal": "OMR", - "ománi riál": "OMR", - "riyal oman": "OMR", - "riyal dell'oman": "OMR", - "オマーン・リアル": "OMR", - "오만 리알": "OMR", - "omano rialas": "OMR", - "rial oman": "OMR", - "omaanse rial": "OMR", - "ਓਮਾਨੀ ਰਿਆਲ": "OMR", - "rial omański": "OMR", - "rial omanense": "OMR", - "оманский риал": "OMR", - "омански ријал": "OMR", - "ஓமானி ரியால்": "OMR", - "umman riyali": "OMR", - "оманський ріал": "OMR", - "بالبوا بنمي": "PAB", - "панамска балбоа": "PAB", - "balboa": "PAB", - "panamská balboa": "PAB", - "panamaischer balboa": "PAB", - "panamanian balboa": "PAB", - "panama balboo": "PAB", - "panaman balboa": "PAB", - "בלבואה": "PAB", - "panamska balboa": "PAB", - "panamai balboa": "PAB", - "balboa panama": "PAB", - "balboa panamense": "PAB", - "バルボア": "PAB", - "파나마 발보아": "PAB", - "panamas balboa": "PAB", - "panamese balboa": "PAB", - "ਪਨਾਮਾਈ ਬਾਲਬੋਆ": "PAB", - "панамский бальбоа": "PAB", - "panama balboası": "PAB", - "панамське бальбоа": "PAB", - "سول بيروي جديد": "PEN", - "sol": "PEN", - "peruanischer sol": "PEN", - "peruvian sol": "PEN", - "perua nova suno": "PEN", - "perun sol": "PEN", - "nuevo sol": "PEN", - "סול": "PEN", - "peruanski novi sol": "PEN", - "perui sol": "PEN", - "sol peruviano": "PEN", - "ヌエボ・ソル": "PEN", - "페루 솔": "PEN", - "naujasis solis": "PEN", - "nuevo sol peru": "PEN", - "peruviaanse sol": "PEN", - "ਪੇਰੂਵੀ ਨਵਾਂ ਸੋਲ": "PEN", - "перуанский новый соль": "PEN", - "перуански нови сол": "PEN", - "перуанський соль": "PEN", - "sol peru": "PEN", - "كينا بابوا غينيا الجديدة": "PGK", - "кина на папуа нова гвинея": "PGK", - "kina": "PGK", - "papuánská kina": "PGK", - "papua new guinean kina": "PGK", - "papuonovgvinea kinao": "PGK", - "papua uuden guinean kina": "PGK", - "papuanska kina": "PGK", - "pápua új guineai kina": "PGK", - "kina papua nugini": "PGK", - "kina papuana": "PGK", - "キナ": "PGK", - "파푸아뉴기니 키나": "PGK", - "kina papua new guinea": "PGK", - "кина": "PGK", - "папуанска кина": "PGK", - "papua yeni gine kinası": "PGK", - "кіна": "PGK", - "بيسو فلبيني": "PHP", - "филипинско песо": "PHP", - "peso filipí": "PHP", - "filipínské peso": "PHP", - "philippinischer peso": "PHP", - "philippine peso": "PHP", - "filipina peso": "PHP", - "peso filipino": "PHP", - "filippiinien peso": "PHP", - "peso philippin": "PHP", - "פסו פיליפיני": "PHP", - "filipinski pezo": "PHP", - "fülöp szigeteki peso": "PHP", - "peso filipina": "PHP", - "peso filippino": "PHP", - "フィリピン・ペソ": "PHP", - "필리핀 페소": "PHP", - "filipinų pesas": "PHP", - "filipijnse peso": "PHP", - "ਫ਼ਿਲਪੀਨੀ ਪੀਸੋ": "PHP", - "peso filipińskie": "PHP", - "филиппинское песо": "PHP", - "filipínske peso": "PHP", - "филипински пезо": "PHP", - "filippinsk peso": "PHP", - "பிலிப்பைன் பெசோ": "PHP", - "เปโซฟิลิปปินส์": "PHP", - "filipinler pesosu": "PHP", - "філіппінський песо": "PHP", - "peso philippines": "PHP", - "روبية باكستانية": "PKR", - "пакистанска рупия": "PKR", - "পাকিস্তানি রুপি": "PKR", - "rupia pakistanesa": "PKR", - "pákistánská rupie": "PKR", - "pakistanske rupier": "PKR", - "pakistanische rupie": "PKR", - "ޕާކިސްތާނީ ރުޕީ": "PKR", - "pakistani rupee": "PKR", - "pakistana rupio": "PKR", - "rupia pakistaní": "PKR", - "errupia pakistandar": "PKR", - "pakistanin rupia": "PKR", - "roupie pakistanaise": "PKR", - "pakistanska rupija": "PKR", - "pakisztáni rúpia": "PKR", - "rupee pakistan": "PKR", - "rupia pakistana": "PKR", - "パキスタン・ルピー": "PKR", - "파키스탄 루피": "PKR", - "pakistano rupija": "PKR", - "പാക്കിസ്ഥാനി രൂപ": "PKR", - "pakistaanse roepie": "PKR", - "ropia de paquistan": "PKR", - "ਪਾਕਿਸਤਾਨੀ ਰੁਪਈਆ": "PKR", - "rupia pakistańska": "PKR", - "rupia do paquistão": "PKR", - "пакистанская рупия": "PKR", - "пакистанска рупија": "PKR", - "pakistansk rupie": "PKR", - "பாக்கித்தானிய ரூபாய்": "PKR", - "pakistan rupisi": "PKR", - "пакистанська рупія": "PKR", - "złoty": [ - "PLZ", - "PLN" - ], - "زلوتي بولندي": [ - "PLZ", - "PLN" - ], - "полска злота": [ - "PLZ", - "PLN" - ], - "zlotý": [ - "PLZ", - "PLN" - ], - "polske zloty": [ - "PLZ", - "PLN" - ], - "polish złoty": [ - "PLZ", - "PLN" - ], - "zloto": [ - "PLZ", - "PLN" - ], - "esloti": [ - "PLZ", - "PLN" - ], - "poola zlott": [ - "PLZ", - "PLN" - ], - "puolan zloty": [ - "PLZ", - "PLN" - ], - "זלוטי": [ - "PLZ", - "PLN" - ], - "poljski zlot": [ - "PLZ", - "PLN" - ], - "lengyel złoty": [ - "PLZ", - "PLN" - ], - "ズウォティ": [ - "PLZ", - "PLN" - ], - "폴란드 즈워티": [ - "PLZ", - "PLN" - ], - "zlotas": [ - "PLZ", - "PLN" - ], - "zlots": [ - "PLZ", - "PLN" - ], - "poolse złoty": [ - "PLZ", - "PLN" - ], - "ਪੋਲੈਂਡੀ ਜ਼ਵੋਤੀ": [ - "PLZ", - "PLN" - ], - "zlot polonez": [ - "PLZ", - "PLN" - ], - "польский злотый": [ - "PLZ", - "PLN" - ], - "poľský zlotý": [ - "PLZ", - "PLN" - ], - "пољски злот": [ - "PLZ", - "PLN" - ], - "ஸ்வாட்டெ": [ - "PLZ", - "PLN" - ], - "ซวอตือ": [ - "PLZ", - "PLN" - ], - "polonya zlotisi": [ - "PLZ", - "PLN" - ], - "злотий": [ - "PLZ", - "PLN" - ], - "złoty ba lan": [ - "PLZ", - "PLN" - ], - "غواراني باراغواي": "PYG", - "guaraní": "PYG", - "paraguayský guaraní": "PYG", - "paraguayischer guaraní": "PYG", - "paraguayan guaraní": "PYG", - "paragvaja gvaranio": "PYG", - "guarani": "PYG", - "paraguayn guaraní": "PYG", - "paragvajski gvarani": "PYG", - "paraguayi guaraní": "PYG", - "guaraní paraguay": "PYG", - "guaraní paraguaiano": "PYG", - "グアラニー": "PYG", - "파라과이 과라니": "PYG", - "gvaranis": "PYG", - "paraguayaanse guarani": "PYG", - "ਪੈਰਾਗੁਏਵੀ ਗੁਆਰਾਨੀ": "PYG", - "парагвайский гуарани": "PYG", - "парагвајски гварани": "PYG", - "paraguay guaranísi": "PYG", - "парагвайський гуарані": "PYG", - "ريال قطري": "QAR", - "катарски риал": "QAR", - "riyal de qatar": "QAR", - "katarský rijál": "QAR", - "katar riyal": "QAR", - "qatari riyal": "QAR", - "katara rialo": "QAR", - "riyal catarí": "QAR", - "qatarin rial": "QAR", - "riyal qatarien": "QAR", - "ריאל קטרי": "QAR", - "katarski rijal": "QAR", - "katari riál": "QAR", - "riyal qatar": "QAR", - "riyal qatariota": "QAR", - "カタール・リヤル": "QAR", - "카타르 리얄": "QAR", - "kataro rialas": "QAR", - "qatarese rial": "QAR", - "ਕਤਰੀ ਰਿਆਲ": "QAR", - "rial katarski": "QAR", - "rial catarense": "QAR", - "катарский риал": "QAR", - "катарски ријал": "QAR", - "qatarisk rial": "QAR", - "கத்தாரி ரியால்": "QAR", - "ริยาลกาตาร์": "QAR", - "katar riyali": "QAR", - "катарський ріал": "QAR", - "ليو روماني": "RON", - "румънска лея": "RON", - "leu romanès": "RON", - "rumunský lei": "RON", - "rumænske lei": "RON", - "rumänischer leu": "RON", - "romanian leu": "RON", - "rumana leo": "RON", - "leu rumano": "RON", - "rumeenia leu": "RON", - "leu roumain": "RON", - "leu romanés": "RON", - "לאו רומני": "RON", - "rumunjski lej": "RON", - "román lej": "RON", - "leu rumania": "RON", - "leu romeno": "RON", - "ルーマニア・レウ": "RON", - "루마니아 레우": "RON", - "naujoji rumunijos lėja": "RON", - "rumānijas leja": "RON", - "roemeense leu": "RON", - "ਰੋਮਾਨੀਆਈ ਲਿਊ": "RON", - "lej rumuński": "RON", - "leu românesc": "RON", - "румынский лей": "RON", - "nový rumunský lei": "RON", - "romunski lev": "RON", - "румунски леј": "RON", - "rumänsk leu": "RON", - "ரொமேனிய லியு": "RON", - "เลวูโรมาเนีย": "RON", - "rumen leyi": "RON", - "румунський лей": "RON", - "leu românia": "RON", - "دينار صربي": "RSD", - "сръбски динар": "RSD", - "dinar serbi": "RSD", - "srbský dinár": "RSD", - "serbiske dinarer": "RSD", - "serbischer dinar": "RSD", - "serbian dinar": "RSD", - "serba dinaro": "RSD", - "dinar serbio": "RSD", - "serbia dinaar": "RSD", - "serbiar dinar": "RSD", - "serbian dinaari": "RSD", - "dinar serbe": "RSD", - "דינר סרבי": "RSD", - "srpski dinar": "RSD", - "szerb dinár": "RSD", - "dinar serbia": "RSD", - "dinaro serbo": "RSD", - "セルビア・ディナール": "RSD", - "세르비아 디나르": "RSD", - "serbijos dinaras": "RSD", - "serbijas dinārs": "RSD", - "servische dinar": "RSD", - "ਸਰਬੀਆਈ ਦਿਨਾਰ": "RSD", - "dinar serbski": "RSD", - "dinar sérvio": "RSD", - "dinar sârbesc": "RSD", - "сербский динар": "RSD", - "srbski dinar": "RSD", - "српски динар": "RSD", - "serbisk dinar": "RSD", - "செர்பிய தினார்": "RSD", - "sırp dinarı": "RSD", - "сербський динар": "RSD", - "russiese roebel": "RUB", - "روبل روسي": "RUB", - "руска рубла": "RUB", - "রুশ রুবল": "RUB", - "ruble rus": "RUB", - "ruský rubl": "RUB", - "rŵbl rwsiaidd": "RUB", - "russiske rubler": "RUB", - "russischer rubel": "RUB", - "ރަޝިޔަން ރޫބެލް": "RUB", - "russian ruble": "RUB", - "rusia rublo": "RUB", - "rublo ruso": "RUB", - "venemaa rubla": "RUB", - "errublo errusiar": "RUB", - "venäjän rupla": "RUB", - "rouble russe": "RUB", - "רובל רוסי": "RUB", - "ruski rubalj": "RUB", - "orosz rubel": "RUB", - "rubel rusia": "RUB", - "rublo russo": "RUB", - "ロシア・ルーブル": "RUB", - "러시아 루블": "RUB", - "rusijos rublis": "RUB", - "krievijas rublis": "RUB", - "russische roebel": "RUB", - "ਰੂਸੀ ਰੂਬਲ": "RUB", - "rubel rosyjski": "RUB", - "rublă rusă": "RUB", - "российский рубль": "RUB", - "ruský rubeľ": "RUB", - "руска рубља": "RUB", - "rysk rubel": "RUB", - "ruski rubel": "RUB", - "உருசிய ரூபிள்": "RUB", - "รูเบิลรัสเซีย": "RUB", - "rus rublesi": "RUB", - "російський рубль": "RUB", - "rúp nga": "RUB", - "فرنك رواندي": "RWF", - "руандийски франк": "RWF", - "franc ruandès": "RWF", - "rwandský frank": "RWF", - "rwandiske franc": "RWF", - "ruanda franc": "RWF", - "rwandan franc": "RWF", - "ruanda franko": "RWF", - "franco ruandés": "RWF", - "rwanda frank": "RWF", - "ruandan frangi": "RWF", - "franc rwandais": "RWF", - "פרנק רואנדי": "RWF", - "ruandski franak": "RWF", - "ruandai frank": "RWF", - "franc rwanda": "RWF", - "franco ruandese": "RWF", - "ルワンダ・フラン": "RWF", - "르완다 프랑": "RWF", - "ruandos frankas": "RWF", - "rwandese frank": "RWF", - "frank rwandyjski": "RWF", - "franco ruandês": "RWF", - "франк руанды": "RWF", - "руандски франак": "RWF", - "rwandisk franc": "RWF", - "ruanda frangı": "RWF", - "руандійський франк": "RWF", - "ريال سعودي": "SAR", - "саудитски риал": "SAR", - "সৌদি রিয়াল": "SAR", - "riyal saudita": "SAR", - "saúdský rijál": "SAR", - "saudi riyal": "SAR", - "sauda rialo": "SAR", - "riyal saudí": "SAR", - "saudi araabia riaal": "SAR", - "saudi arabian rial": "SAR", - "riyal saoudien": "SAR", - "ריאל סעודי": "SAR", - "saudijski rijal": "SAR", - "szaúdi riál": "SAR", - "riyal saudi": "SAR", - "サウジアラビア・リヤル": "SAR", - "사우디아라비아 리얄": "SAR", - "saudo arabijos rialas": "SAR", - "സൗദി റിയാൽ": "SAR", - "saoedi arabische riyal": "SAR", - "ਸਾਊਦੀ ਰਿਆਲ": "SAR", - "rial saudyjski": "SAR", - "rial saudit": "SAR", - "саудовский риял": "SAR", - "саудијски ријал": "SAR", - "saudiarabisk rial": "SAR", - "சவூதி ரியால்": "SAR", - "suudi arabistan riyali": "SAR", - "саудівський ріал": "SAR", - "riyal ả rập xê út": "SAR", - "دولار جزر سليمان": "SBD", - "соломоновски долар": "SBD", - "dòlar de salomó": "SBD", - "dolar šalomounových ostrovů": "SBD", - "salomondollar": "SBD", - "salomonen dollar": "SBD", - "solomon islands dollar": "SBD", - "salomona dolaro": "SBD", - "dólar de las islas salomón": "SBD", - "salomonsaarten dollari": "SBD", - "dollar des îles salomon": "SBD", - "dólar das illas salomón": "SBD", - "דולר איי שלמה": "SBD", - "salomonskootočni dolar": "SBD", - "salamon szigeteki dollár": "SBD", - "dolar kepulauan solomon": "SBD", - "dollaro delle salomone": "SBD", - "ソロモン諸島ドル": "SBD", - "솔로몬 제도 달러": "SBD", - "saliamono salų doleris": "SBD", - "salomon dollar": "SBD", - "dolar wysp salomona": "SBD", - "dólar das ilhas salomão": "SBD", - "dolar din insulele solomon": "SBD", - "доллар соломоновых островов": "SBD", - "соломонски долар": "SBD", - "solomon adaları doları": "SBD", - "долар соломонових островів": "SBD", - "روبية سيشلية": "SCR", - "сейшелска рупия": "SCR", - "rupia de les seychelles": "SCR", - "seychelská rupie": "SCR", - "seychelliske rupee": "SCR", - "seychellen rupie": "SCR", - "seychellois rupee": "SCR", - "sejŝela rupio": "SCR", - "rupia seychellense": "SCR", - "seišelli ruupia": "SCR", - "errupia seychelletar": "SCR", - "seychellien rupia": "SCR", - "roupie seychelloise": "SCR", - "sejšelska rupija": "SCR", - "seychelle i rúpia": "SCR", - "rupee seychelles": "SCR", - "rupia delle seychelles": "SCR", - "セーシェル・ルピー": "SCR", - "세이셸 루피": "SCR", - "seišelių rupija": "SCR", - "seychelse roepie": "SCR", - "rupia seszelska": "SCR", - "rupia das seicheles": "SCR", - "сейшельская рупия": "SCR", - "сејшелска рупија": "SCR", - "seychellisk rupie": "SCR", - "seyşeller rupisi": "SCR", - "сейшельська рупія": "SCR", - "جنيه سوداني": "SDG", - "lliura sudanesa": "SDG", - "súdánská libra": "SDG", - "sudanesisches pfund": "SDG", - "sudanese pound": "SDG", - "sudana pundo": "SDG", - "libra sudanesa": "SDG", - "sudanin punta": "SDG", - "livre soudanaise": "SDG", - "sudanska funta": "SDG", - "szudáni font": "SDG", - "pound sudan": "SDG", - "sterlina sudanese": "SDG", - "スーダン・ポンド": "SDG", - "수단 파운드": "SDG", - "sudano svaras": "SDG", - "sudānas mārciņa": "SDG", - "paun sudan": "SDG", - "soedanees pond": "SDG", - "funt sudański": "SDG", - "liră sudaneză": "SDG", - "суданский фунт": "SDG", - "суданска фунта": "SDG", - "sudanesiskt pund": "SDG", - "sudan sterlini": "SDG", - "суданський фунт": "SDG", - "sweedse kroon": "SEK", - "كرونة سويدية": "SEK", - "шведска крона": "SEK", - "corona sueca": "SEK", - "švédská koruna": "SEK", - "svenske kronor": "SEK", - "schwedische krone": "SEK", - "swedish krona": "SEK", - "sveda krono": "SEK", - "rootsi kroon": "SEK", - "suediar koroa": "SEK", - "ruotsin kruunu": "SEK", - "couronne suédoise": "SEK", - "coroa sueca": "SEK", - "קרונה שוודית": "SEK", - "švedska kruna": "SEK", - "svéd korona": "SEK", - "krona swedia": "SEK", - "corona svedese": "SEK", - "スウェーデン・クローナ": "SEK", - "스웨덴 크로나": "SEK", - "švedijos krona": "SEK", - "zviedrijas krona": "SEK", - "krona sweden": "SEK", - "zweedse kroon": "SEK", - "ਸਵੀਡਨੀ ਕਰੋਨਾ": "SEK", - "korona szwedzka": "SEK", - "coroană suedeză": "SEK", - "шведская крона": "SEK", - "švédska koruna": "SEK", - "švedska krona": "SEK", - "шведска круна": "SEK", - "svensk krona": "SEK", - "சுவீடிய குரோனா": "SEK", - "ครูนาสวีเดน": "SEK", - "i̇sveç kronu": "SEK", - "шведська крона": "SEK", - "krona thụy điển": "SEK", - "singapoer dollar": "SGD", - "دولار سنغافوري": "SGD", - "сингапурски долар": "SGD", - "সিঙ্গাপুর ডলার": "SGD", - "dòlar de singapur": "SGD", - "singapurský dolar": "SGD", - "singaporeanske dollar": "SGD", - "singapur dollar": "SGD", - "singapore dollar": "SGD", - "singapura dolaro": "SGD", - "dólar de singapur": "SGD", - "dolar singapurtar": "SGD", - "singaporen dollari": "SGD", - "dollar de singapour": "SGD", - "דולר סינגפורי": "SGD", - "singapurski dolar": "SGD", - "szingapúri dollár": "SGD", - "dolar singapura": "SGD", - "dollaro di singapore": "SGD", - "シンガポールドル": "SGD", - "싱가포르 달러": "SGD", - "singapūro doleris": "SGD", - "സിംഗപ്പൂർ ഡോളർ": "SGD", - "singaporese dollar": "SGD", - "ਸਿੰਘਾਪੁਰੀ ਡਾਲਰ": "SGD", - "dolar singapurski": "SGD", - "dólar de singapura": "SGD", - "сингапурский доллар": "SGD", - "සිංගප්පූරු ඩොලරය": "SGD", - "singaporiansk dollar": "SGD", - "சிங்கப்பூர் வெள்ளி": "SGD", - "ดอลลาร์สิงคโปร์": "SGD", - "singapur doları": "SGD", - "сінгапурський долар": "SGD", - "đô la singapore": "SGD", - "جنيه سانت هيليني": "SHP", - "lliura de santa helena": "SHP", - "svatohelenská libra": "SHP", - "st. helena pfund": "SHP", - "saint helena pound": "SHP", - "sankthelena pundo": "SHP", - "libra de santa elena": "SHP", - "saint helenan punta": "SHP", - "livre de sainte hélène": "SHP", - "svetohelenska funta": "SHP", - "szent ilona i font": "SHP", - "pound saint helena": "SHP", - "sterlina di sant'elena": "SHP", - "セントヘレナ・ポンド": "SHP", - "세인트헬레나 파운드": "SHP", - "sint heleens pond": "SHP", - "funt świętej heleny": "SHP", - "libra de santa helena": "SHP", - "liră din sfânta elena": "SHP", - "фунт святой елены": "SHP", - "sankthelenskt pund": "SHP", - "saint helena sterlini": "SHP", - "фунт святої єлени": "SHP", - "ليون سيراليوني": [ - "SLL", - "SLE" - ], - "леоне на сиера леоне": [ - "SLL", - "SLE" - ], - "leone": [ - "SLL", - "SLE" - ], - "sierraleonský leone": [ - "SLL", - "SLE" - ], - "sierra leonischer leone": [ - "SLL", - "SLE" - ], - "sierra leonean leone": [ - "SLL", - "SLE" - ], - "sieraleona leono": [ - "SLL", - "SLE" - ], - "sierra leonen leone": [ - "SLL", - "SLE" - ], - "ליאון": [ - "SLL", - "SLE" - ], - "sijeraleonski leone": [ - "SLL", - "SLE" - ], - "sierra leone i leone": [ - "SLL", - "SLE" - ], - "leone sierraleonese": [ - "SLL", - "SLE" - ], - "レオン": [ - "SLL", - "SLE" - ], - "시에라리온 리온": [ - "SLL", - "SLE" - ], - "leonė": [ - "SLL", - "SLE" - ], - "sierra leoonse leone": [ - "SLL", - "SLE" - ], - "леоне": [ - "SLL", - "SLE" - ], - "сијералеонски леоне": [ - "SLL", - "SLE" - ], - "sierra leone leonesi": [ - "SLL", - "SLE" - ], - "леоне сьєрра леоне": [ - "SLL", - "SLE" - ], - "شلن صومالي": "SOS", - "сомалийски шилинг": "SOS", - "xíling somali": "SOS", - "somálský šilink": "SOS", - "somalisk shilling": "SOS", - "somalia schilling": "SOS", - "somali shilling": "SOS", - "somalia ŝilingo": "SOS", - "chelín somalí": "SOS", - "somalian šillinki": "SOS", - "shilling somalien": "SOS", - "שילינג סומלי": "SOS", - "somalijski šiling": "SOS", - "szomáliai shilling": "SOS", - "shilling somalia": "SOS", - "scellino somalo": "SOS", - "ソマリア・シリング": "SOS", - "소말리아 실링": "SOS", - "somalio šilingas": "SOS", - "somalische shilling": "SOS", - "szyling somalijski": "SOS", - "xelim somaliano": "SOS", - "сомалийский шиллинг": "SOS", - "сомалски шилинг": "SOS", - "somali şilini": "SOS", - "сомалійський шилінг": "SOS", - "دولار سورينامي": "SRD", - "суринамски долар": "SRD", - "dòlar de surinam": "SRD", - "surinamský dolar": "SRD", - "suriname dollar": "SRD", - "surinamese dollar": "SRD", - "surinama dolaro": "SRD", - "dólar surinamés": "SRD", - "dolar surinamdar": "SRD", - "surinamen dollari": "SRD", - "dollar du suriname": "SRD", - "surinamski dolar": "SRD", - "suriname i dollár": "SRD", - "dolar suriname": "SRD", - "dollaro surinamese": "SRD", - "スリナム・ドル": "SRD", - "수리남 달러": "SRD", - "surinamo doleris": "SRD", - "surinaamse dollar": "SRD", - "ਸੂਰੀਨਾਮੀ ਡਾਲਰ": "SRD", - "dolar surinamski": "SRD", - "dólar do suriname": "SRD", - "суринамский доллар": "SRD", - "surinamesisk dollar": "SRD", - "surinam doları": "SRD", - "суринамський долар": "SRD", - "جنيه جنوب سوداني": "SSP", - "южносудански паунд": "SSP", - "lliura sud sudanesa": "SSP", - "jihosúdánská libra": "SSP", - "südsudanesisches pfund": "SSP", - "south sudanese pound": "SSP", - "libra sursudanesa": "SSP", - "lõuna sudaani nael": "SSP", - "etelä sudanin punta": "SSP", - "livre sud soudanaise": "SSP", - "לירה דרום סודאנית": "SSP", - "južnosudanska funta": "SSP", - "dél szudáni font": "SSP", - "pound sudan selatan": "SSP", - "sterlina sudsudanese": "SSP", - "南スーダン・ポンド": "SSP", - "남수단 파운드": "SSP", - "pietų sudano svaras": "SSP", - "paun sudan selatan": "SSP", - "zuid soedanees pond": "SSP", - "funt południowosudański": "SSP", - "libra sul sudanesa": "SSP", - "liră sud sudaneză": "SSP", - "южносуданский фунт": "SSP", - "juhosudánska libra": "SSP", - "јужносуданска фунта": "SSP", - "sydsudanesiskt pund": "SSP", - "ปอนด์ซูดานใต้": "SSP", - "güney sudan sterlini": "SSP", - "південносуданський фунт": "SSP", - "bảng nam sudan": "SSP", - "دوبرا ساو تومي وبرينسيب": "STN", - "dobra": "STN", - "svatotomášská dobra": "STN", - "são toméischer dobra": "STN", - "são tomé and príncipe dobra": "STN", - "santomea dobro": "STN", - "dobra santotomense": "STN", - "são tomén ja príncipen dobra": "STN", - "svetotomska dobra": "STN", - "são tomé és príncipe i dobra": "STN", - "dobra di são tomé e príncipe": "STN", - "ドブラ": "STN", - "상투메 프린시페 도브라": "STN", - "dobra são tomé dan príncipe": "STN", - "santomese dobra": "STN", - "dobra são tomense": "STN", - "добра сан томе и принсипи": "STN", - "саотомска добра": "STN", - "são tomé ve príncipe dobrası": "STN", - "добра сан томе і принсіпі": "STN", - "ليرة سورية": "SYP", - "сирийска лира": "SYP", - "সিরীয় পাউন্ড": "SYP", - "lliura siriana": "SYP", - "syrská libra": "SYP", - "syrische lira": "SYP", - "syrian pound": "SYP", - "siria pundo": "SYP", - "libra siria": "SYP", - "syyrian punta": "SYP", - "livre syrienne": "SYP", - "לירה סורית": "SYP", - "sirijska funta": "SYP", - "szír font": "SYP", - "pound suriah": "SYP", - "lira siriana": "SYP", - "シリア・ポンド": "SYP", - "시리아 파운드": "SYP", - "sirijos svaras": "SYP", - "paun syria": "SYP", - "syrisch pond": "SYP", - "ਸੀਰੀਆਈ ਪਾਊਂਡ": "SYP", - "funt syryjski": "SYP", - "libra síria": "SYP", - "сирийский фунт": "SYP", - "sirski funt": "SYP", - "сиријска фунта": "SYP", - "syriskt pund": "SYP", - "suriye lirası": "SYP", - "сирійський фунт": "SYP", - "lilangeni": "SZL", - "ليلانغيني سوازيلندي": "SZL", - "свази лилангени": "SZL", - "svazijský lilangeni": "SZL", - "swazi lilangeni": "SZL", - "svazilanda lilangenio": "SZL", - "לילנגני": "SZL", - "esvatinijski lilangeni": "SZL", - "szváziföldi lilangeni": "SZL", - "lilangeni eswatini": "SZL", - "lilangeni dell'eswatini": "SZL", - "リランゲニ": "SZL", - "에스와티니 릴랑게니": "SZL", - "lilangenis": "SZL", - "swazische lilangeni": "SZL", - "lilanguéni": "SZL", - "лилангени": "SZL", - "свазілендський ліланґені": "SZL", - "thaise baht": "THB", - "بات تايلاندي": "THB", - "тайландски бат": "THB", - "থাই বাত": "THB", - "baht": "THB", - "thajský baht": "THB", - "thailandske baht": "THB", - "thai baht": "THB", - "tajlanda bahto": "THB", - "baht tailandés": "THB", - "baat": "THB", - "thailandiar baht": "THB", - "באט": "THB", - "tajlandski baht": "THB", - "thai bát": "THB", - "baht thailandese": "THB", - "バーツ": "THB", - "태국 밧": "THB", - "tailando batas": "THB", - "bats": "THB", - "baht thailand": "THB", - "ਥਾਈ ਬਾਤ": "THB", - "bat": "THB", - "тайский бат": "THB", - "тајландски бат": "THB", - "தாய்லாந்தின் பாட்": "THB", - "บาท": "THB", - "tayland bahtı": "THB", - "тайський бат": "THB", - "somoni": "TJS", - "ساماني طاجيكي": "TJS", - "таджикистански сомони": "TJS", - "tádžický somoni": "TJS", - "tajikistani somoni": "TJS", - "taĝika somonio": "TJS", - "somoni tayiko": "TJS", - "tadžikistani somoni": "TJS", - "tadžikistanin somoni": "TJS", - "tadžikistanski somoni": "TJS", - "tádzsik szomoni": "TJS", - "somoni tagiko": "TJS", - "ソモニ": "TJS", - "타지키스탄 소모니": "TJS", - "somonis": "TJS", - "tadzjiekse somoni": "TJS", - "ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ": "TJS", - "somoni tadjik": "TJS", - "сомони": "TJS", - "таџикистански сомони": "TJS", - "таджицький сомоні": "TJS", - "منات تركمانستاني": "TMT", - "туркменистански манат": "TMT", - "manat turcman": "TMT", - "turkmenský manat": "TMT", - "turkmenistan manat": "TMT", - "turkmenistani manat": "TMT", - "turkmena manato": "TMT", - "manat turcomano": "TMT", - "turkmenistanin manat": "TMT", - "manat turkmène": "TMT", - "manat turcomán": "TMT", - "turkmenistanski manat": "TMT", - "türkmén manat": "TMT", - "manat turkmenistan": "TMT", - "manat turkmeno": "TMT", - "トルクメニスタン・マナト": "TMT", - "투르크메니스탄 마나트": "TMT", - "turkmėnijos manatas": "TMT", - "turkmeense manat": "TMT", - "ਤੁਰਕਮੇਨਿਸਤਾਨੀ ਮਨਦ": "TMT", - "manat turkmeński": "TMT", - "manate turcomeno": "TMT", - "manat turkmen": "TMT", - "туркменский манат": "TMT", - "turkménsky manat": "TMT", - "turkmenistansk manat": "TMT", - "มานัตเติร์กเมนิสถาน": "TMT", - "türkmenistan manatı": "TMT", - "туркменський манат": "TMT", - "دينار تونسي": "TND", - "тунизийски динар": "TND", - "dinar tunisià": "TND", - "tuniský dinár": "TND", - "dinar tiwnisaidd": "TND", - "tunesischer dinar": "TND", - "tunisian dinar": "TND", - "tunizia dinaro": "TND", - "dinar tunecino": "TND", - "tuneesia dinaar": "TND", - "tunisian dinaari": "TND", - "dinar tunisien": "TND", - "דינר תוניסאי": "TND", - "tuniski dinar": "TND", - "tunéziai dinár": "TND", - "dinar tunisia": "TND", - "dinaro tunisino": "TND", - "チュニジア・ディナール": "TND", - "튀니지 디나르": "TND", - "tuniso dinaras": "TND", - "tunesische dinar": "TND", - "dinar tunezyjski": "TND", - "dinar tunisiano": "TND", - "тунисский динар": "TND", - "tunizijski dinar": "TND", - "туниски динар": "TND", - "tunisisk dinar": "TND", - "tunus dinarı": "TND", - "туніський динар": "TND", - "paʻanga": "TOP", - "بانغا تونغي": "TOP", - "tonžská paʻanga": "TOP", - "tongan paʻanga": "TOP", - "tonga paangao": "TOP", - "פאנגה טונגאית": "TOP", - "tonška pa’anga": "TOP", - "tongai paʻanga": "TOP", - "pa'anga": "TOP", - "paʻanga tongano": "TOP", - "パアンガ": "TOP", - "통가 팡가": "TOP", - "tongos paanga": "TOP", - "tongaanse pa'anga": "TOP", - "паанга": "TOP", - "тонганска панга": "TOP", - "ปาอางา": "TOP", - "тонганська паанга": "TOP", - "paʻanga tonga": "TOP", - "turkse lira": "TRY", - "ليرة تركية": "TRY", - "турска лира": "TRY", - "তুর্কি লিরা": "TRY", - "lira turca": "TRY", - "turecká lira": "TRY", - "lira twrcaidd": "TRY", - "tyrkisk lira": "TRY", - "türkische lira": "TRY", - "turkish lira": "TRY", - "turka liro": "TRY", - "türgi liir": "TRY", - "turkiar lira": "TRY", - "turkin liira": "TRY", - "livre turque": "TRY", - "לירה טורקית": "TRY", - "turska lira": "TRY", - "török líra": "TRY", - "lira turki": "TRY", - "トルコリラ": "TRY", - "튀르키예 리라": "TRY", - "turkijos lira": "TRY", - "turku lira": "TRY", - "ਤੁਰਕੀ ਲੀਰਾ": "TRY", - "lira turecka": "TRY", - "liră turcească": "TRY", - "турецкая лира": "TRY", - "turecká líra": "TRY", - "turkisk lira": "TRY", - "துருக்கிய லிரா": "TRY", - "ลีราใหม่ตุรกี": "TRY", - "türk lirası": "TRY", - "турецька ліра": "TRY", - "lira thổ nhĩ kỳ": "TRY", - "دولار ترينيداد وتوباغو": "TTD", - "долар на тринидад и тобаго": "TTD", - "dòlar de trinitat i tobago": "TTD", - "dolar trinidadu a tobaga": "TTD", - "trinidad und tobago dollar": "TTD", - "trinidad and tobago dollar": "TTD", - "trinidada dolaro": "TTD", - "dólar trinitense": "TTD", - "trinidadi ja tobago dollar": "TTD", - "trinidad eta tobagoko dolar": "TTD", - "trinidadin ja tobagon dollari": "TTD", - "dollar de trinité et tobago": "TTD", - "dólar de trinidad e tobago": "TTD", - "trinidadtobaški dolar": "TTD", - "trinidad és tobagó i dollár": "TTD", - "dolar trinidad dan tobago": "TTD", - "dollaro di trinidad e tobago": "TTD", - "トリニダード・トバゴ・ドル": "TTD", - "트리니다드 토바고 달러": "TTD", - "trinidado ir tobago doleris": "TTD", - "trinidādas un tobāgo dolārs": "TTD", - "trinidad en tobagodollar": "TTD", - "ਤ੍ਰਿਨੀਦਾਦ ਅਤੇ ਤੋਬਾਗੋ ਡਾਲਰ": "TTD", - "dolar trynidadu i tobago": "TTD", - "dólar de trindade e tobago": "TTD", - "доллар тринидада и тобаго": "TTD", - "долар тринидада и тобага": "TTD", - "trinidaddollar": "TTD", - "trinidad ve tobago doları": "TTD", - "долар тринідаду і тобаго": "TTD", - "nuwe taiwannese dollar": "TWD", - "دولار تايواني جديد": "TWD", - "нов тайвански долар": "TWD", - "nou dòlar de taiwan": "TWD", - "tchajwanský dolar": "TWD", - "neuer taiwan dollar": "TWD", - "new taiwan dollar": "TWD", - "nova tajvana dolaro": "TWD", - "nuevo dólar taiwanés": "TWD", - "uus taiwani dollar": "TWD", - "uusi taiwanin dollari": "TWD", - "nouveau dollar de taïwan": "TWD", - "novotajvanski dolar": "TWD", - "tajvani új dollár": "TWD", - "dolar baru taiwan": "TWD", - "dollaro taiwanese": "TWD", - "新台湾ドル": "TWD", - "신 대만 달러": "TWD", - "naujasis taivano doleris": "TWD", - "jaunais taivānas dolārs": "TWD", - "taiwanese dollar": "TWD", - "ਨਵਾਂ ਤਾਇਵਾਨੀ ਡਾਲਰ": "TWD", - "dolar tajwański": "TWD", - "novo dólar taiwanês": "TWD", - "новый тайваньский доллар": "TWD", - "нови тајвански долар": "TWD", - "taiwanesisk dollar": "TWD", - "ดอลลาร์ไต้หวันใหม่": "TWD", - "yeni tayvan doları": "TWD", - "новий тайванський долар": "TWD", - "tân đài tệ": "TWD", - "شيلينغ تنزاني": "TZS", - "танзанийски шилинг": "TZS", - "xíling tanzà": "TZS", - "tanzanský šilink": "TZS", - "swllt tansanïa": "TZS", - "tansania schilling": "TZS", - "tanzanian shilling": "TZS", - "tanzania ŝilingo": "TZS", - "chelín tanzano": "TZS", - "tansanian šillinki": "TZS", - "shilling tanzanien": "TZS", - "שילינג טנזני": "TZS", - "tanzanijski šiling": "TZS", - "tanzániai shilling": "TZS", - "shilling tanzania": "TZS", - "scellino tanzaniano": "TZS", - "タンザニア・シリング": "TZS", - "탄자니아 실링": "TZS", - "tanzanijos šilingas": "TZS", - "tanzaniaanse shilling": "TZS", - "szyling tanzański": "TZS", - "xelim tanzaniano": "TZS", - "танзанийский шиллинг": "TZS", - "tanzánijský šiling": "TZS", - "танзанијски шилинг": "TZS", - "tanzanisk shilling": "TZS", - "tanzanya şilini": "TZS", - "танзанійський шилінг": "TZS", - "هريفنا أوكرانية": "UAH", - "украинска гривна": "UAH", - "hrívnia": "UAH", - "ukrajinská hřivna": "UAH", - "ukrainske hryvnia": "UAH", - "hrywnja": "UAH", - "ukrainian hryvnia": "UAH", - "ukraina hrivno": "UAH", - "grivna": "UAH", - "ukraina grivna": "UAH", - "ukrainan hryvnia": "UAH", - "hryvnia": "UAH", - "hrivna": "UAH", - "הריבניה": "UAH", - "ukrajinska grivnja": "UAH", - "ukrán hrivnya": "UAH", - "hryvnia ukraina": "UAH", - "grivnia ucraina": "UAH", - "フリヴニャ": "UAH", - "우크라이나 흐리우냐": "UAH", - "grivina": "UAH", - "ukrainas hrivna": "UAH", - "hryvnia ukraine": "UAH", - "oekraïense hryvnia": "UAH", - "ਯੂਕਰੇਨੀ ਹਰੀਵਨਾ": "UAH", - "hrywna": "UAH", - "grívnia": "UAH", - "grivnă": "UAH", - "украинская гривна": "UAH", - "ukrajinská hrivna": "UAH", - "ukrajinska grivna": "UAH", - "украјинска гривна": "UAH", - "ஹிருன்யா": "UAH", - "ฮรึวญา": "UAH", - "ukrayna grivnası": "UAH", - "гривня": "UAH", - "ugandese sjieling": "UGX", - "شيلينغ أوغندي": "UGX", - "угандийски шилинг": "UGX", - "xíling ugandès": "UGX", - "ugandský šilink": "UGX", - "uganda schilling": "UGX", - "ugandan shilling": "UGX", - "uganda ŝilingo": "UGX", - "chelín ugandés": "UGX", - "ugandan šillinki": "UGX", - "shilling ougandais": "UGX", - "שילינג אוגנדי": "UGX", - "ugandski šiling": "UGX", - "ugandai shilling": "UGX", - "shilling uganda": "UGX", - "scellino ugandese": "UGX", - "ウガンダ・シリング": "UGX", - "우간다 실링": "UGX", - "ugandos šilingas": "UGX", - "oegandese shilling": "UGX", - "shilling ogandés": "UGX", - "szyling ugandyjski": "UGX", - "xelim ugandês": "UGX", - "угандийский шиллинг": "UGX", - "ugandský šiling": "UGX", - "угандски шилинг": "UGX", - "ugandisk shilling": "UGX", - "uganda şilini": "UGX", - "угандійський шилінг": "UGX", - "amerikaanse dollar": "USD", - "دولار أمريكي": "USD", - "щатски долар": "USD", - "মার্কিন ডলার": "USD", - "dòlar dels estats units": "USD", - "americký dolar": "USD", - "doler yr unol daleithiau": "USD", - "amerikanske dollar": "USD", - "us dollar": [ - "USN", - "USD" - ], - "united states dollar": [ - "USN", - "USD" - ], - "usona dolaro": "USD", - "dólar estadounidense": "USD", - "usa dollar": "USD", - "estatubatuar dolar": "USD", - "yhdysvaltain dollari": "USD", - "dollar américain": "USD", - "דולר אמריקאי": "USD", - "američki dolar": "USD", - "amerikai dollár": "USD", - "dollar statounitese": "USD", - "dolar amerika serikat": "USD", - "dollaro statunitense": "USD", - "アメリカ合衆国ドル": "USD", - "미국 달러": "USD", - "jungtinių valstijų doleris": "USD", - "asv dolārs": "USD", - "യുണൈറ്റഡ് സ്റ്റേറ്റ്സ് ഡോളർ": "USD", - "dolar amerika syarikat": "USD", - "dolar estatsunidenc": "USD", - "ਸੰਯੁਕਤ ਰਾਜ ਡਾਲਰ": "USD", - "dollar mericano": "USD", - "dolar amerykański": "USD", - "dólar dos estados unidos": "USD", - "dolar american": "USD", - "доллар сша": "USD", - "අමෙරිකා එක්සත් ජනපද ඩොලර්": "USD", - "americký dolár": "USD", - "ameriški dolar": "USD", - "амерички долар": "USD", - "amerikansk dollar": "USD", - "amerikański dolar": "USD", - "அமெரிக்க டாலர்": "USD", - "యునైటెడ్ స్టేట్స్ డాలర్": "USD", - "ดอลลาร์สหรัฐ": "USD", - "amerikan doları": "USD", - "долар сша": "USD", - "đô la mỹ": "USD", - "uruguaanse peso": "UYU", - "بيزو أوروغواي": "UYU", - "уругвайско песо": "UYU", - "uruguayské peso": "UYU", - "uruguayischer peso": "UYU", - "uruguayan peso": "UYU", - "urugvaja peso": "UYU", - "peso uruguayo": "UYU", - "peso uruguaitar": "UYU", - "uruguayn peso": "UYU", - "peso uruguayen": "UYU", - "peso uruguaio": "UYU", - "פסו אורוגוואי": "UYU", - "urugvajski pezo": "UYU", - "uruguayi peso": "UYU", - "peso uruguay": "UYU", - "peso uruguaiano": "UYU", - "ウルグアイ・ペソ": "UYU", - "우루과이 페소": "UYU", - "urugvajaus pesas": "UYU", - "uruguayaanse peso": "UYU", - "ਉਰੂਗੁਏਵੀ ਪੇਸੋ": "UYU", - "peso urugwajskie": "UYU", - "уругвайское песо": "UYU", - "уругвајски пезос": "UYU", - "uruguayansk peso": "UYU", - "uruguay pesosu": "UYU", - "уругвайський песо": "UYU", - "سوم أوزبكستاني": "UZS", - "узбекистански сом": "UZS", - "som uzbek": "UZS", - "uzbecký sum": "UZS", - "soʻm": "UZS", - "uzbekistani sum": "UZS", - "uzbeka somo": "UZS", - "som uzbeko": "UZS", - "uzbekistanin som": "UZS", - "sum": "UZS", - "סום אוזבקי": "UZS", - "uzbekistanski som": "UZS", - "üzbég szom": "UZS", - "soʻm uzbekistan": "UZS", - "スム": "UZS", - "우즈베키스탄 숨": "UZS", - "uzbekijos sumas": "UZS", - "oezbeekse sum": "UZS", - "ਉਜ਼ਬੇਕਿਸਤਾਨੀ ਸੋਮ": "UZS", - "som uzbec": "UZS", - "узбекский сум": "UZS", - "uzbekistansk som": "UZS", - "özbekistan somu": "UZS", - "узбецький сум": "UZS", - "sovereign bolivar": [ - "VES", - "VED" - ], - "bolívar soberano": [ - "VES", - "VED" - ], - "bolivar souverain": [ - "VES", - "VED" - ], - "venezuelai bolívar": [ - "VES", - "VED" - ], - "ボリバル・ソベラノ": [ - "VES", - "VED" - ], - "суверенный боливар": [ - "VES", - "VED" - ], - "суверенний болівар": [ - "VES", - "VED" - ], - "دونغ فيتنامي": "VND", - "виетнамски донг": "VND", - "dong": "VND", - "vietnamský dong": "VND", - "vietnamesischer đồng": "VND", - "vietnamese đồng": "VND", - "vjetnama dongo": "VND", - "đồng vietnamita": "VND", - "vietnamdar dong": "VND", - "vietnamin đồng": "VND", - "dong vietnamita": "VND", - "vijetnamski dong": "VND", - "vietnámi đồng": "VND", - "đồng vietnam": "VND", - "đồng": "VND", - "ドン": "VND", - "베트남 동": "VND", - "vietnamo dongas": "VND", - "vietnamese dong": "VND", - "ਵੀਅਤਨਾਮੀ ਦੋਙ": "VND", - "донг": "VND", - "вијетнамски донг": "VND", - "ด่ง": "VND", - "в'єтнамський донг": "VND", - "فاتو فانواتي": "VUV", - "вату": "VUV", - "vatu": "VUV", - "vanuatský vatu": "VUV", - "vanuatu vatu": "VUV", - "vanuatua vatuo": "VUV", - "vanuatun vatu": "VUV", - "ואטו": "VUV", - "vanuatski vatu": "VUV", - "vanuatui vatu": "VUV", - "vatu vanuatu": "VUV", - "バツ": "VUV", - "바누아투 바투": "VUV", - "vanuatuaanse vatu": "VUV", - "вануатски вату": "VUV", - "вануатський вату": "VUV", - "تالا ساموي": "WST", - "tala": "WST", - "samojská tala": "WST", - "samoanischer tala": "WST", - "samoan tālā": "WST", - "samoa talao": "WST", - "tālā": "WST", - "samoa tala": "WST", - "samoan tala": "WST", - "tala samoana": "WST", - "samoanska tala": "WST", - "szamoai tala": "WST", - "tālā samoa": "WST", - "tālā samoano": "WST", - "タラ": "WST", - "사모아 탈라": "WST", - "samoaanse tala": "WST", - "tala samoan": "WST", - "самоанская тала": "WST", - "самоанска тала": "WST", - "самоанська тала": "WST", - "فرنك وسط إفريقي": "XAF", - "централноафрикански cfa франк": "XAF", - "franc cfa de l'àfrica central": "XAF", - "středoafrický frank": "XAF", - "cfa franc beac": "XAF", - "central african cfa franc": "XAF", - "franco cfa de áfrica central": "XAF", - "franc cfa": [ - "XOF", - "XAF" - ], - "srednjoafrički cfa franak": "XAF", - "franc cfa afrika tengah": "XAF", - "中央アフリカcfaフラン": "XAF", - "중앙아프리카 cfa 프랑": "XAF", - "centrālāfrikas cfa franks": "XAF", - "franc cfa d'africa centrala": "XAF", - "franco cfa da áfrica central": "XAF", - "franc cfa beac": "XAF", - "центральноафриканский франк": "XAF", - "stredoafrický frank": "XAF", - "orta afrika cfa frangı": "XAF", - "центральноафриканський франк": "XAF", - "franc cfa trung phi": "XAF", - "investiční stříbro": "XAG", - "silberpreis": "XAG", - "silver as an investment": "XAG", - "plata como inversión": "XAG", - "perak sebagai pelaburan": "XAG", - "silver som investering": "XAG", - "bạc trong đầu tư": "XAG", - "استثمار الذهب": "XAU", - "investiční zlato": "XAU", - "gold als kapitalanlage": "XAU", - "gold as an investment": "XAU", - "kulta sijoituksena": "XAU", - "or d'investissement": "XAU", - "befektetési arany": "XAU", - "金投資": "XAU", - "금 투자": "XAU", - "zelts kā investīcija": "XAU", - "സ്വർണവും സാമ്പത്തിക ശാസ്ത്രവും": "XAU", - "emas sebagai pelaburan": "XAU", - "investiciono zlato": "XAU", - "investeringsguld": "XAU", - "kênh đầu tư vàng": "XAU", - "دولار شرق الكاريبي": "XCD", - "източнокарибски долар": "XCD", - "dòlar del carib oriental": "XCD", - "východokaribský dolar": "XCD", - "doler dwyrain y caribî": "XCD", - "ostkaribischer dollar": "XCD", - "eastern caribbean dollar": "XCD", - "orientkaribia dolaro": "XCD", - "dólar del caribe oriental": "XCD", - "ekialdeko karibeko dolar": "XCD", - "itä karibian dollari": "XCD", - "dollar des caraïbes orientales": "XCD", - "dólar do caribe oriental": "XCD", - "דולר מזרח קריבי": "XCD", - "istočnokaripski dolar": "XCD", - "kelet karibi dollár": "XCD", - "dolar karibia timur": "XCD", - "dollaro dei caraibi orientali": "XCD", - "東カリブ・ドル": "XCD", - "동카리브 달러": "XCD", - "rytų karibų doleris": "XCD", - "austrumkarību dolārs": "XCD", - "dolar caribbean timur": "XCD", - "oost caribische dollar": "XCD", - "ਪੂਰਬੀ ਕੈਰੀਬੀਆਈ ਡਾਲਰ": "XCD", - "dolar wschodniokaraibski": "XCD", - "восточнокарибский доллар": "XCD", - "vzhodnokaribski dolar": "XCD", - "источнокарипски долар": "XCD", - "östkaribisk dollar": "XCD", - "doğu karayip doları": "XCD", - "східнокарибський долар": "XCD", - "đô la đông caribe": "XCD", - "حقوق السحب الخاصة": "XDR", - "специални права на тираж": "XDR", - "drets especials de gir": "XDR", - "zvláštní práva čerpání": "XDR", - "sonderziehungsrecht": "XDR", - "special drawing rights": "XDR", - "specialaj rajtoj de enspezo": "XDR", - "derechos especiales de giro": "XDR", - "erityisnosto oikeus": "XDR", - "droits de tirage spéciaux": "XDR", - "posebna prava vučenja": "XDR", - "sdr": "XDR", - "hak penarikan khusus": "XDR", - "diritti speciali di prelievo": "XDR", - "特別引出権": "XDR", - "특별인출권": "XDR", - "specialiosios skolinimosi teisės": "XDR", - "speciālās aizņēmuma tiesības": "XDR", - "speciale trekkingsrechten": "XDR", - "drechs de tiratge especials": "XDR", - "specjalne prawa ciągnienia": "XDR", - "direitos especiais de saque": "XDR", - "drepturi speciale de tragere": "XDR", - "специальные права заимствования": "XDR", - "zvláštne práva čerpania": "XDR", - "posebne pravice črpanja": "XDR", - "särskilda dragningsrätter": "XDR", - "สิทธิพิเศษถอนเงิน": "XDR", - "özel çekme hakları": "XDR", - "спеціальні права запозичення": "XDR", - "quyền rút vốn đặc biệt": "XDR", - "فرنك غرب إفريقي": "XOF", - "западноафрикански cfa франк": "XOF", - "franc cfa de l'àfrica occidental": "XOF", - "cfa franc bceao": "XOF", - "west african cfa franc": "XOF", - "franco cfa de áfrica occidental": "XOF", - "zapadnoafrički cfa franak": "XOF", - "franc cfa afrika barat": "XOF", - "西アフリカcfaフラン": "XOF", - "서아프리카 cfa 프랑": "XOF", - "franc cfa d'africa occidentala": "XOF", - "franco cfa da áfrica ocidental": "XOF", - "franc cfa bceao": "XOF", - "западноафриканский франк": "XOF", - "západoafrický frank": "XOF", - "batı afrika cfa frangı": "XOF", - "західноафриканський франк": "XOF", - "franc cfa tây phi": "XOF", - "palladiumpreis": "XPD", - "palladium as an investment": "XPD", - "فرنك س ف ب": "XPF", - "franc cfp": "XPF", - "cfp frank": "XPF", - "cfp franc": "XPF", - "pacifika franko": "XPF", - "franco cfp": "XPF", - "cfp libera": "XPF", - "cfp frangi": "XPF", - "franc pacifique": "XPF", - "cfp franak": "XPF", - "csendes óceáni valutaközösségi frank": "XPF", - "cfpフラン": "XPF", - "cfp 프랑": "XPF", - "cfp frankas": "XPF", - "frank cfp": "XPF", - "тихоокеанский франк": "XPF", - "cfp frangı": "XPF", - "французький тихоокеанський франк": "XPF", - "platinpreis": "XPT", - "platinum as an investment": "XPT", - "sucre": "XSU", - "sistema unificato di compensazione regionale": "XSU", - "域内統一決済システム": "XSU", - "수크레": "XSU", - "сукре": "XSU", - "adb unit of account": "XUA", - "ريال يمني": "YER", - "йеменски риал": "YER", - "rial iemenita": "YER", - "jemenský rijál": "YER", - "jemen rial": "YER", - "yemeni rial": "YER", - "jemena rialo": "YER", - "rial yemení": "YER", - "jemenin rial": "YER", - "riyal yéménite": "YER", - "rial iemení": "YER", - "ריאל תימני": "YER", - "jemenski rijal": "YER", - "jemeni riál": "YER", - "rial yaman": "YER", - "riyal yemenita": "YER", - "イエメン・リアル": "YER", - "예멘 리알": "YER", - "jemeno rialas": "YER", - "jemenitische rial": "YER", - "ਯਮਨੀ ਰਿਆਲ": "YER", - "rial jemeński": "YER", - "йеменский риал": "YER", - "jemenský rial": "YER", - "јеменски ријал": "YER", - "jemenitisk rial": "YER", - "yemen riyali": "YER", - "єменський ріал": "YER", - "suid afrikaanse rand": "ZAR", - "راند جنوب إفريقي": "ZAR", - "южноафрикански ранд": "ZAR", - "rand": "ZAR", - "jihoafrický rand": "ZAR", - "südafrikanischer rand": "ZAR", - "south african rand": "ZAR", - "sudafrika rando": "ZAR", - "rand sudafricano": "ZAR", - "hegoafrikar rand": "ZAR", - "etelä afrikan randi": "ZAR", - "rand surafricano": "ZAR", - "ראנד דרום אפריקאי": "ZAR", - "južnoafrički rand": "ZAR", - "dél afrikai rand": "ZAR", - "rand afrika selatan": "ZAR", - "ランド": "ZAR", - "남아프리카 공화국 랜드": "ZAR", - "randas": "ZAR", - "സൗത്ത് ആഫ്രിക്കൻ റാൻഡ്": "ZAR", - "zuid afrikaanse rand": "ZAR", - "rand sudafrican": "ZAR", - "rand sud african": "ZAR", - "южноафриканский рэнд": "ZAR", - "јужноафрички ранд": "ZAR", - "güney afrika randı": "ZAR", - "ранд": "ZAR", - "كواشا زامبي": "ZMW", - "kwacha zambià": "ZMW", - "zambijská kwacha": "ZMW", - "zambianske kwacha": "ZMW", - "sambischer kwacha": "ZMW", - "zambian kwacha": "ZMW", - "zambia kvaĉo": "ZMW", - "kwacha zambiano": "ZMW", - "sambia kvatša": "ZMW", - "sambian kwacha": "ZMW", - "kwacha zambien": "ZMW", - "קוואצ'ה זמבי": "ZMW", - "zambijska kvača": "ZMW", - "zambiai kwacha": "ZMW", - "kwacha zambia": "ZMW", - "ザンビア・クワチャ": "ZMW", - "잠비아 콰차": "ZMW", - "zambijos kvača": "ZMW", - "zambiaanse kwacha": "ZMW", - "kwacha zambijska": "ZMW", - "замбийская квача": "ZMW", - "замбијска квача": "ZMW", - "zambisk kwacha": "ZMW", - "zambiya kvaçası": "ZMW", - "замбійська квача": "ZMW", - "zimbabwean dollar": "ZWL", - "dólar zimbabuense": "ZWL", - "real time gross settlement dollar": "ZWL", - "dollaro rtgs": "ZWL", - "rtgsドル": "ZWL", - "rtgs 달러": "ZWL", - "dólar do zimbábue": "ZWL", - "DH": [ - "MAD", - "AED" - ], - "درهم": "AED", - "درهم الإمارات": "AED", - "dirham uea": "AED", - "dirham de l'uea": "AED", - "dirham de la uea": "AED", - "dirham de la unió dels emirats àrabs": "AED", - "dirham dels eau": "AED", - "dirham dels emirats": "AED", - "dirham dels emirats àrabs units": "AED", - "aed": "AED", - "sae dirham": "AED", - "dirham sae": "AED", - "uae dirham": "AED", - "emirati dirham": "AED", - "u.a.e. dirham": "AED", - "unuiĝintaj arabaj emirlandoj dirhamo": "AED", - "dirham de emiratos arabes unidos": "AED", - "dirham de emiratos árabes unidos": "AED", - "dirham de los emiratos arabes unidos": "AED", - "dirham de los emiratos árabes unidos": "AED", - "arabiemiirikuntien dirhami": "AED", - "dirham emirati": "AED", - "dirham des emirats arabes unis": "AED", - "dirham des émirats": "AED", - "യു.എ.ഇ. ദിർഹം": "AED", - "verenigde arabische emiraten dirham": "AED", - "diram": [ - "TJS", - "AED" - ], - "dircham": "AED", - "dirham dos emirados árabes unidos": "AED", - "dirame dos emirados árabes unidos": "AED", - "dirame emiradense": "AED", - "dirame emiradês": "AED", - "dirham dos emirados": "AED", - "dirham emiradense": "AED", - "dirham emiradês": "AED", - "dirham arab emirat": "AED", - "валюта объединённых арабских эмиратов": "AED", - "дирхам": [ - "MAD", - "AED" - ], - "уае дирмах": "AED", - "அமீரக திர்கம்": "AED", - "அமீரக திர்ஹம்": "AED", - "யூஏஈ திராம்": "AED", - "؋": [ - "AFN", - "AFA" - ], - "Afs": [ - "AFN", - "AFA" - ], - "afghání": [ - "AFN", - "AFA" - ], - "afn": [ - "AFN", - "AFA" - ], - "af": [ - "AFN", - "AFA" - ], - "afg": [ - "AFN", - "AFA" - ], - "afgaani": [ - "AFN", - "AFA" - ], - "afganistani afgaan": [ - "AFN", - "AFA" - ], - "uus afgaani": [ - "AFN", - "AFA" - ], - "afgani afgán": [ - "AFN", - "AFA" - ], - "afghani afganistan": [ - "AFN", - "AFA" - ], - "afghani afgano": [ - "AFN", - "AFA" - ], - "아프가니": [ - "AFN", - "AFA" - ], - "afganistānas afgāns": [ - "AFN", - "AFA" - ], - "afghanis": [ - "AFN", - "AFA" - ], - "afegani": [ - "AFN", - "AFA" - ], - "novo afegani": [ - "AFN", - "AFA" - ], - "afgan afgan": [ - "AFN", - "AFA" - ], - "афганистанский афгани": [ - "AFN", - "AFA" - ], - "афганский афгани": [ - "AFN", - "AFA" - ], - "валюта афганистана": [ - "AFN", - "AFA" - ], - "afganistanski afgan": [ - "AFN", - "AFA" - ], - "авганистански афган": [ - "AFN", - "AFA" - ], - "ஆப்கான் ஆப்கானி": [ - "AFN", - "AFA" - ], - "L": [ - "MDL", - "HNL", - "ALL" - ], - "лек": "ALL", - "qindarka": "ALL", - "all": "ALL", - "leko": "ALL", - "lek albanes": "ALL", - "albaania lek": "ALL", - "lek albanais": "ALL", - "アルバニアの通貨": "ALL", - "アルバニア・レク": "ALL", - "알바니아 렉": "ALL", - "레크": "ALL", - "렉": "ALL", - "lekas": "ALL", - "lekë": "ALL", - "lek albanês": "ALL", - "lek novo": "ALL", - "lek albanez": "ALL", - "lekă albaneză": "ALL", - "валюта албании": "ALL", - "валютный лек": "ALL", - "arnavutluk leki": "ALL", - "֏": "AMD", - "درام": "AMD", - "armensk dram": "AMD", - "amd": "AMD", - "armeenia drahm": "AMD", - "armeenia dram": "AMD", - "dramm": "AMD", - "dram arménien": "AMD", - "armenijski dram": "AMD", - "아르메니아드람": "AMD", - "dramas": "AMD", - "dram armeński": "AMD", - "dram karabachski": "AMD", - "dram armênio": "AMD", - "dram da arménia": "AMD", - "dram da armênia": "AMD", - "drame arménio": "AMD", - "dram armean": "AMD", - "валюта армении": "AMD", - "драм": "AMD", - "ஆர்மீனிய டிராம்": "AMD", - "ermenistan dramı": "AMD", - "ƒ": [ - "AWG", - "ANG" - ], - "NAƒ": "ANG", - "ang": "ANG", - "gulden": "ANG", - "naf": "ANG", - "naƒ": "ANG", - "f": [ - "XPF", - "ANG" - ], - "florin antillano neerlandes": "ANG", - "גילדן אנטילי": "ANG", - "florim das antilhas holandesas": "ANG", - "Kz": "AOA", - "অ্যাঙ্গোলীয় কুয়াঞ্জা": "AOA", - "kwanza reajustado": "AOA", - "lwei": "AOA", - "novo kwanza": "AOA", - "aoa": "AOA", - "kz": "AOA", - "קואנזה": "AOA", - "kwanza angolana": "AOA", - "アンゴラ・クワンザ": "AOA", - "앙골라콴자": "AOA", - "валюта анголы": "AOA", - "восстановленная кванза": "AOA", - "кванза": "AOA", - "кванза ангольская": "AOA", - "кванза реюстадо": "AOA", - "новая кванза": "AOA", - "скорректированная кванза": "AOA", - "анголска нова кванза": "AOA", - "kwansa": "AOA", - "அங்கோலா குவான்சா": "AOA", - "$": [ - "ZWL", - "XCD", - "WST", - "USD", - "TWD", - "TTD", - "SRD", - "SGD", - "SBD", - "NZD", - "NAD", - "MXN", - "MOP", - "LRD", - "KYD", - "JMD", - "HKD", - "FJD", - "CUP", - "COP", - "CLP", - "CAD", - "BZD", - "BSD", - "BRL", - "BND", - "BMD", - "BBD", - "AUD", - "ARS" - ], - "ars": "ARS", - "peso d'argentina": "ARS", - "peso de l'argentina": "ARS", - "pesos argentins": "ARS", - "monedas de 1 2 5 10 20 50 y billetes 1 2 5 10 20 50 100 pesos": "ARS", - "arg$": "ARS", - "peso ley": "ARS", - "peso moneda nacional": "ARS", - "pesos argentinos": "ARS", - "argentine convertible peso": "ARS", - "peso convertible argentina": "ARS", - "peso argentino convertible": "ARS", - "argentinar peso": "ARS", - "nuevo peso": [ - "UYU", - "MXN", - "ARS" - ], - "pesification": "ARS", - "פזו ארגנטינאי": "ARS", - "פסו ארגנטיני": "ARS", - "argentinski peso": "ARS", - "nuovo peso argentino": "ARS", - "peso convertible": "ARS", - "peso da argentina": "ARS", - "валюта аргентины": "ARS", - "песо": [ - "UYU", - "PHP", - "MXN", - "DOP", - "CUP", - "COP", - "CLP", - "ARS" - ], - "аргентински песо": "ARS", - "аргентинське песо": "ARS", - "A$": "AUD", - "australsk dollar": "AUD", - "a$": "AUD", - "au$": "AUD", - "aud": "AUD", - "aussie dollar": "AUD", - "dollar": [ - "USD", - "SGD", - "NZD", - "KYD", - "HKD", - "FJD", - "CAD", - "AUD" - ], - "dollars": [ - "USD", - "SGD", - "NZD", - "HKD", - "CAD", - "AUD" - ], - "aŭ$": "AUD", - "dolaro": [ - "USD", - "SGD", - "NZD", - "HKD", - "CAD", - "AUD" - ], - "dolaroj": [ - "USD", - "SGD", - "NZD", - "HKD", - "CAD", - "AUD" - ], - "dolar australiano": "AUD", - "오스트레일리아달러": "AUD", - "호주 달러": "AUD", - "호주달러": "AUD", - "валюта австралии": "AUD", - "валюта кирибати": "AUD", - "валюта науру": "AUD", - "валюта норфолка": "AUD", - "валюта тувалу": "AUD", - "доллар": [ - "WST", - "USD", - "TTD", - "SRD", - "SBD", - "NZD", - "NAD", - "KYD", - "JMD", - "HKD", - "FJD", - "CAD", - "BZD", - "BSD", - "AUD" - ], - "доллар австралии": "AUD", - "avstralski dolar": "AUD", - "அவுத்திரேலிய வெள்ளி": "AUD", - "அவுத்திரேலிய டொலர்": "AUD", - "ஆத்திரேலிய டொலர்": "AUD", - "ஆத்திரேலிய வெள்ளி": "AUD", - "ஆஸ்திரேலிய டொலர்": "AUD", - "AU$": "AUD", - "AUD": "AUD", - "florí d’aruba": "AWG", - "arubský gulden": "AWG", - "afl.": "AWG", - "aruba gulden": "AWG", - "awg": "AWG", - "florin arubeno": "AWG", - "florin arubeño": "AWG", - "florín arubeno": "AWG", - "aruba kulden": "AWG", - "florin arubain": "AWG", - "florin d'aruba": "AWG", - "florin d’aruba": "AWG", - "פלורין ארובה": "AWG", - "arupski gulden": "AWG", - "fiorino di aruba": "AWG", - "アルバフロリン": "AWG", - "アルバ・フローリン": "AWG", - "arubos guldenas": "AWG", - "arubaanse florijn": "AWG", - "arubaanse gulden": "AWG", - "florin": "AWG", - "florim de aruba": "AWG", - "арубанский гульден": "AWG", - "валюта арубы": "AWG", - "арупски флорин": "AWG", - "arubas florin": "AWG", - "அரூபா ஃபுளோரின்": "AWG", - "арубський флорін": "AWG", - "₼": "AZN", - "A.M.": "AZN", - "مانات": "AZN", - "manat d'azerbaidjan": "AZN", - "manat de l'azerbaidjan": "AZN", - "manat àzeri": "AZN", - "ruble azerbaidjanès": "AZN", - "manat aserbaijan": "AZN", - "aserbajdsjansk manat": "AZN", - "azn": "AZN", - "aserbaidschanischer manat": "AZN", - "gepik": "AZN", - "qäpik": "AZN", - "qəpik": "AZN", - "azerbaijan manat": "AZN", - "azm": "AZN", - "manat azeri": "AZN", - "manat azerí": "AZN", - "manat azerbaijandar": "AZN", - "manat azéri": "AZN", - "nouveau manat azéri": "AZN", - "manat azarí": "AZN", - "manat de acerbaixán": "AZN", - "azerbejdžanski manat": "AZN", - "アゼルバイジャン・ルーブル": "AZN", - "manat azerski": "AZN", - "manat azerbaijano": "AZN", - "manat azerbaijanês": "AZN", - "manat do azerbaijão": "AZN", - "novo manat": "AZN", - "aym": "AZN", - "валюта азербайджана": "AZN", - "манат азербайджанский": "AZN", - "манат": [ - "TMT", - "AZN" - ], - "அசர்பைச்சானிய மனாத்து": "AZN", - "azerbaycan yeni manatı": "AZN", - "yeni manat": "AZN", - "KM": "BAM", - "bosenská konvertibilní marka": "BAM", - "mark cyfnewidiol": "BAM", - "bosnisch herzegowinische konvertible mark": "BAM", - "fening": "BAM", - "feninga": "BAM", - "bam": "BAM", - "km": "BAM", - "convertible mark": "BAM", - "marka convertible": "BAM", - "marco bosnio": "BAM", - "mark convertible": "BAM", - "mark convertible bosniaque": "BAM", - "marka": "BAM", - "המרק הסחיר": "BAM", - "mark convertibile de bosnia herzegovina": "BAM", - "marco convertibile": "BAM", - "ボスニア・ヘルツェゴビナ・マルカ": "BAM", - "ボスニア・マルカ": "BAM", - "보스니아 헤르체고비나 태환 마르크": "BAM", - "태환 마르카": "BAM", - "bosnijos ir hercegovinos markė": "BAM", - "bosnische convertibele mark": "BAM", - "bosnische konvertibilna marka": "BAM", - "marka de bòsnia e ercegovina": "BAM", - "marka konwertybilna": "BAM", - "marka transferowa": "BAM", - "marco convertível": "BAM", - "marca convertibilă a bosniei şi herţegovinei": "BAM", - "marca convertibilă a bosniei și herțegovinei": "BAM", - "marca bosniacă convertibilă": "BAM", - "marcă convertibilă a bosniei şi herţegovinei": "BAM", - "marcă convertibilă a bosniei și herțegovinei": "BAM", - "боснийская конвертируемая марка": "BAM", - "боснийская марка": "BAM", - "валюта боснии и герцеговины": "BAM", - "конвертируемая марка боснии и герцеговины": "BAM", - "марка": "BAM", - "konvertibilna marka bosne in hercegovine": "BAM", - "босанскохерцеговачка конвертибилна марка": "BAM", - "км": "BAM", - "марка у босни и херцеговини": "BAM", - "konvertibel mark": "BAM", - "konvertibla mark": "BAM", - "கன்வர்டிபிள் மார்க்கு": "BAM", - "பொசுனியா எர்செகோவினா கன்வர்டிபிள் மார்க்": "BAM", - "பொஸ்னியா ஹெர்செகோவினா கன்வர்டிபிள் மார்க்": "BAM", - "konvertibıl mark": "BAM", - "конвертована марка": "BAM", - "الدولار البربادوسي": "BBD", - "BBD$": "BBD", - "bbd": "BBD", - "bds$": "BBD", - "dolar de barbados": "BBD", - "dolar barbadense": "BBD", - "dollar de la barbade": "BBD", - "bbd$": "BBD", - "bds": "BBD", - "dollaro": [ - "BZD", - "BBD" - ], - "dollaro delle barbados": "BBD", - "dólar barbadiano": "BBD", - "dólar dos barbados": "BBD", - "валюта барбадоса": "BBD", - "долар барбадоса": "BBD", - "பார்படோஸ் டாலர்": "BBD", - "৳": "BDT", - "така": "BDT", - "টাকা": "BDT", - "bdt": [ - "BTN", - "BDT" - ], - "lakhs": "BDT", - "poisha": "BDT", - "ṭākā": "BDT", - "taka bangladeshi": "BDT", - "taka bangladeshí": "BDT", - "taka bangladesi": "BDT", - "טאקה": "BDT", - "타카": "BDT", - "taka bengalska": "BDT", - "валюта бангладеш": "BDT", - "bangladéšska taka": "BDT", - "ليف بلغارية": "BGN", - "лв.": "BGN", - "bgj": "BGN", - "bgk": "BGN", - "bgl": "BGN", - "bgn": "BGN", - "българския лев": "BGN", - "лев": "BGN", - "levo": "BGN", - "bulgarsk lev": "BGN", - "bulgarischer lew": "BGN", - "stotinka": "BGN", - "stotinki": "BGN", - "bulgaria levo": "BGN", - "nova bulgara levo": "BGN", - "לב בולגרי": "BGN", - "ブルガリア・レフ": "BGN", - "레프": "BGN", - "ബൾഗേറിയൻ ലെവ്": "BGN", - "lev da bulgária": "BGN", - "lev bulgar": "BGN", - "leva bulgară": "BGN", - "levă bulgară": "BGN", - "валюта болгарии": "BGN", - "лев болгарский": "BGN", - "bulgarisk lev": "BGN", - "bulgariska lev": "BGN", - "bulgariska leva": "BGN", - "பல்காரிய லெவ்": "BGN", - "bulgar levi": "BGN", - "лв": "BGN", - "الدينار البحريني": "BHD", - "BD": "BHD", - "bhd": "BHD", - "dinar bahraini": "BHD", - "dinar bahrainí": "BHD", - "dinar bahreini": "BHD", - "dinar bahreiní": "BHD", - "dinar bareini": "BHD", - "dinar de bahrein": "BHD", - "dinar de barein": "BHD", - "dinar de baréin": "BHD", - "dinar bahreïnien": "BHD", - "dinar de bahreïn": "BHD", - "dinar du bahreïn": "BHD", - "dinaro del bahrain": "BHD", - "dinaro": "BHD", - "dinar de bahrayn": "BHD", - "dinar bahrajnu": "BHD", - "denar bareinita": "BHD", - "denar baremense": "BHD", - "denar baremita": "BHD", - "denar baremês": "BHD", - "denar barenita": "BHD", - "dinar baremense": "BHD", - "dinar baremita": "BHD", - "dinar baremês": "BHD", - "dinar barenita": "BHD", - "dinar do bahrein": "BHD", - "валюта бахрейна": "BHD", - "динар": [ - "TND", - "RSD", - "LYD", - "KWD", - "IQD", - "DZD", - "BHD" - ], - "динар бахрейна": "BHD", - "பஹ்ரேன் தினார்": "BHD", - "فرنك بروندي": "BIF", - "FBu": "BIF", - "fbu": "BIF", - "bif": "BIF", - "franco burundes": "BIF", - "פרנק בורונדי": "BIF", - "부룬디프랑": "BIF", - "franco do burúndi": "BIF", - "franco burundiano": "BIF", - "franco burundinense": "BIF", - "franco burundinês": "BIF", - "franco de burundi": "BIF", - "franc burundez": "BIF", - "валюта бурунди": "BIF", - "франк": [ - "XPF", - "XOF", - "RWF", - "CDF", - "BIF" - ], - "франк бурунди": "BIF", - "BD$": "BMD", - "dòlar de bermuda": "BMD", - "dòlar de les illes bermudes": "BMD", - "bd$": "BMD", - "bmd": "BMD", - "dolar bermudeno": "BMD", - "dolar bermudeño": "BMD", - "dolar de bermuda": "BMD", - "dolar de bermudas": "BMD", - "dólar bermudeno": "BMD", - "dólar de bermuda": "BMD", - "dólar de bermudas": "BMD", - "dollar des bermudes": "BMD", - "דולר ברמודה ": "BMD", - "dollaro delle bermuda": "BMD", - "dollaro delle bermude": "BMD", - "валюта бермуд": "BMD", - "பெர்முடா டாலர்": "BMD", - "B$": [ - "BSD", - "BND" - ], - "b$": [ - "BSD", - "BND" - ], - "br$": "BND", - "bnd": "BND", - "dolar bruneano": "BND", - "dolar de brunei": "BND", - "dolar de brunéi": "BND", - "dólar bruneano": "BND", - "dollar de brunéi": "BND", - "ブルネイドル": "BND", - "브루나이 링깃": "BND", - "ബ്രൂണെയ് ഡോളർ": "BND", - "dolar brunei": "BND", - "dólar bruneíno": "BND", - "dólar do brunei": "BND", - "валюта брунея": "BND", - "bruney doları": "BND", - "dollar brunei": "BND", - "البوليفاريو": "BOB", - "Bs": "BOB", - "بوليفاريو": "BOB", - "bolivianos": "BOB", - "bolivià": "BOB", - "bolivianischer boliviano": "BOB", - "bob": "BOB", - "second boliviano": "BOB", - "bolivjano": "BOB", - "bs": [ - "BSD", - "BOB" - ], - "bs.": "BOB", - "boliviano bolivien": "BOB", - "bolivijski boliviano": "BOB", - "볼리비아노": "BOB", - "볼리비아볼리비아노": "BOB", - "ਬੋਲੀਵੀਆਨੋ": "BOB", - "боливийский боливиано": "BOB", - "валюта боливии": "BOB", - "боливијано": "BOB", - "боливски боливијано": "BOB", - "பொலிவியானோ": "BOB", - "பொலிவிய பொலிவியானோ": "BOB", - "bolivya bolivianosu": "BOB", - "болівіано": "BOB", - "mvdol": "BOV", - "bov": "BOV", - "boliviano con mantenimiento de valor respecto al dolar estadounidense": "BOV", - "R$": "BRL", - "r$": "BRL", - "ব্রাজিলীয় রিয়েল": "BRL", - "brl": "BRL", - "reais": "BRL", - "realoj": "BRL", - "rs": [ - "PKR", - "MUR", - "BRL" - ], - "real brasileno": "BRL", - "brasildar real": "BRL", - "real bresilien": "BRL", - "réal": "BRL", - "réaux brésiliens": "BRL", - "ヘアウ": "BRL", - "브라질 레알": "BRL", - "헤알": "BRL", - "real brazilian": "BRL", - "валюта бразилии": "BRL", - "реал бразильский": "BRL", - "бразилски рејал": "BRL", - "பிரசிலியன் ரியால்": "BRL", - "ரியால்": "BRL", - "เรียลบราซิล": "BRL", - "бразiльський ріал": "BRL", - "бразильський ріал": "BRL", - "бразільський ріал": "BRL", - "الدولار البهامي": "BSD", - "dòlar de bahames": "BSD", - "bahamas dollar": "BSD", - "bsd": "BSD", - "bs$": "BSD", - "dolar bahameno": "BSD", - "dolar bahames": "BSD", - "dolar bahameño": "BSD", - "dolar bahamés": "BSD", - "dolar de bahamas": "BSD", - "dólar bahameno": "BSD", - "dólar bahames": "BSD", - "dólar de bahamas": "BSD", - "dólar de las bahamas": "BSD", - "dollaro bahamense": "BSD", - "dólar baamense": "BSD", - "dólar baamês": "BSD", - "dólar bahamense": "BSD", - "dólar bahamiano": "BSD", - "dólar bahamês": "BSD", - "dólar das baamas": "BSD", - "dólar das bahamas": "BSD", - "валюта багамских островов": "BSD", - "பஹ்மானிய டாலர்": "BSD", - "Nu": "BTN", - "نجولترم": "BTN", - "نغولترم": "BTN", - "نولتوم": "BTN", - "nglultrum": "BTN", - "ngultrum bhutanès": "BTN", - "bhútánský ngultam": "BTN", - "btn": "BTN", - "bhutan currency": "BTN", - "ngultrumo": "BTN", - "ngultrum butanes": "BTN", - "chetrum": "BTN", - "נגולטורם": "BTN", - "ブータン・ルピー": "BTN", - "부탄 눌트럼": "BTN", - "눌트럼": "BTN", - "부탄눌트럼": "BTN", - "ਭੂਟਾਨੀ ਙੁਲਤਰਮ": "BTN", - "бутанский нгултрум": "BTN", - "валюта бутана": "BTN", - "P": "BWP", - "بوتسوانا بولا": "BWP", - "пула": "BWP", - "botsuanischer pula": "BWP", - "bwp": "BWP", - "pula de botsuana": "BWP", - "thebe": "BWP", - "botswanan pula": "BWP", - "pula botswanais": "BWP", - "pula de botswana": "BWP", - "ボツワナ・プラ": "BWP", - "pula do botsuana": "BWP", - "pula botswaniană": "BWP", - "pula, unitate monetară": "BWP", - "валюта ботсваны": "BWP", - "botswansk pula": "BWP", - "போட்ஸ்வானா பூலா": "BWP", - "валюта ботсвани": "BWP", - "Br": [ - "ETB", - "BYN" - ], - "rwbl belarws": "BYN", - "rwbl belarwsaidd": "BYN", - "rwbl belarwsiaidd": "BYN", - "byn": "BYN", - "belarus rubel": "BYN", - "br": "BYN", - "third belarusian ruble": "BYN", - "rublo bierlorruso": "BYN", - "зайчик": "BYN", - "білоруський рубель": "BYN", - "Bz$": "BZD", - "bz$": "BZD", - "bzd": "BZD", - "doler": [ - "CAD", - "BZD" - ], - "dolar beliceno": "BZD", - "dolar beliceño": "BZD", - "dolar de belice": "BZD", - "dolar de belize": "BZD", - "dólar beliceno": "BZD", - "dólar de belice": "BZD", - "dollar de belize": "BZD", - "dollar du belize": "BZD", - "dollar du bélize": "BZD", - "דולר בליזאי": "BZD", - "belizeanski dolar": "BZD", - "dólar belizenho": "BZD", - "dólar belizense": "BZD", - "dólar do belize": "BZD", - "валюта белиза": "BZD", - "доллар белиза": "BZD", - "белизе долар": "BZD", - "белиски долар": "BZD", - "பெலலீசு டாலர்": "BZD", - "белізський долар": "BZD", - "الدولار الكندي": "CAD", - "c$": [ - "NIO", - "CAD" - ], - "dòlar de canadà": "CAD", - "dòlar del canadà": "CAD", - "dòlars canadencs": "CAD", - "canadisk dollar": "CAD", - "can$": "CAD", - "canadischer dollar": "CAD", - "kanadische dollar": "CAD", - "loonie": "CAD", - "ca$": "CAD", - "cad": "CAD", - "moneda canadiense": "CAD", - "kanadar dolar": "CAD", - "$ ca": "CAD", - "$ can": "CAD", - "$can": "CAD", - "$ca": "CAD", - "huard canadien": "CAD", - "cdn$": "CAD", - "dollar kanada": "CAD", - "カナダ・ドル": "CAD", - "加ドル": "CAD", - "dolar kanadan": "CAD", - "dollar kanadiense": "CAD", - "dólar canadiano": "CAD", - "dólar do canadá": "CAD", - "dólares canadenses": "CAD", - "moeda canadaense": "CAD", - "валюта канады": "CAD", - "доллар канады": "CAD", - "canadadollar": "CAD", - "kanadadollar": "CAD", - "kanadensiska dollar": "CAD", - "கனடா டாலர்": "CAD", - "கனடிய டாலர்": "CAD", - "கனேடிய டாலர்": "CAD", - "கனேடிய டொலர்": "CAD", - "cdn": "CAD", - "canada dollar": "CAD", - "dollar canada": "CAD", - "C$": [ - "NIO", - "CAD" - ], - "CAD$": "CAD", - "¢": "CAD", - "CF": [ - "KMF", - "CDF" - ], - "فرنك كونغولي": "CDF", - "franc del congo": "CDF", - "franc del congo belga": "CDF", - "ffranc y congo": "CDF", - "belgian congolese franc": "CDF", - "cdf": "CDF", - "franco": [ - "XPF", - "XAF", - "RWF", - "DJF", - "CDF" - ], - "franco congoles": "CDF", - "פרנק קונגיני": "CDF", - "콩고프랑": "CDF", - "zaïre": "CDF", - "franc congolés": "CDF", - "franco congolense": "CDF", - "franco conguês": "CDF", - "franco da república democrática do congo": "CDF", - "franco do congo": "CDF", - "franco do congo kinshasa": "CDF", - "franco do congo quinxasa": "CDF", - "валюта демократической республики конго": "CDF", - "франк бельгийского конго": "CDF", - "франк дрк": "CDF", - "kongovski frank": "CDF", - "kongo frankı": "CDF", - "wir euro": "CHE", - "che": "CHE", - "Fr": "CHF", - "الفرنك السويسري": "CHF", - "chf": "CHF", - "franc de suïssa": "CHF", - "francs suïssos": "CHF", - "franc swisaidd": "CHF", - "rappen": "CHF", - "schweizerfranc": "CHF", - "confœderatio helvetica franc": "CHF", - "sfr": "CHF", - "sfr.": "CHF", - "schweizerfranken": "CHF", - "franc": [ - "XPF", - "CHF" - ], - "swiss frank": "CHF", - "swiss franken": "CHF", - "swiss franco": "CHF", - "swiss francs": "CHF", - "s₣": "CHF", - "svisaj frankoj": "CHF", - "francos suizos": "CHF", - "suitzar libera": "CHF", - "suitzako libera": "CHF", - "francs suisses": "CHF", - "franc switze": "CHF", - "franchi svizzeri": "CHF", - "スイスの通貨": "CHF", - "スイスフラン": "CHF", - "リヒテンシュタインの通貨": "CHF", - "스위스프랑": "CHF", - "zwitserse franc": "CHF", - "ਸਵਿੱਸ ਫ਼ਰਾਂਕ": "CHF", - "franco da suíça": "CHF", - "franco suiço": "CHF", - "francos suíços": "CHF", - "franc elveţian": "CHF", - "валюта лихтенштейна": "CHF", - "валюта швейцарии": "CHF", - "frank": "CHF", - "schweiziska franc": "CHF", - "சுவிஸ் ஃபிராங்க்": "CHF", - "சுவிஸ் பிராங்க்": "CHF", - "స్విస్ ఫ్రాంక్": "CHF", - "สวิสฟรังก์": "CHF", - "i̇sviçre frankı": "CHF", - "wir franken": "CHW", - "wir franc": "CHW", - "UF": "CLF", - "clf": "CLF", - "uf": "CLF", - "ウニダ・デ・フォメント": "CLF", - "CLP$": "CLP", - "بيسو تشيلي": "CLP", - "pes xilè": "CLP", - "peso de xile": "CLP", - "chil$": "CLP", - "cl$": "CLP", - "clp": "CLP", - "clp$": "CLP", - "clps": "CLP", - "čileanski peso": "CLP", - "チリの通貨": "CLP", - "peso do chile": "CLP", - "валюта чили": "CLP", - "чилийский песо": "CLP", - "čilenski pezo": "CLP", - "čilski peso": "CLP", - "čilski pezo": "CLP", - "чилеански песо": "CLP", - "чилійське песо": "CLP", - "¥": [ - "JPY", - "CNY" - ], - "cny": "CNY", - "rmb": "CNY", - "юан": "CNY", - "iuan renminbi": "CNY", - "iuan xinès": "CNY", - "žen min pi": "CNY", - "chinesischer renminbi": "CNY", - "renminbi yuan": "CNY", - "元": [ - "HKD", - "CNY" - ], - "ރެންމިބީ": "CNY", - "chinese yuan": "CNY", - "ĉina juano": "CNY", - "yuan chino": "CNY", - "yuán chino": "CNY", - "yuans": "CNY", - "人民币": "CNY", - "ז'נמינבי": "CNY", - "יו'אן": "CNY", - "יואן": "CNY", - "יואן סיני": "CNY", - "kínai jüan": "CNY", - "yuan cinese": "CNY", - "人民幣": "CNY", - "中国元": "CNY", - "中華人民共和国の通貨": "CNY", - "렌민비": "CNY", - "렌민비 위안": "CNY", - "인민원": "CNY", - "인민폐": "CNY", - "renmibi": "CNY", - "ženminbi juanis": "CNY", - "juaņs": "CNY", - "ķīnas juaņa": "CNY", - "ķīnas juaņs": "CNY", - "žeņmiņbi": "CNY", - "ਰਨਮਿਨਬੀ": "CNY", - "iuan": "CNY", - "iuan renmimbi": "CNY", - "iuane": "CNY", - "iuane renminbi": "CNY", - "iuã": "CNY", - "yuan renmimbi": "CNY", - "fen": "CNY", - "jiao": "CNY", - "yuan chinezesc": "CNY", - "валюта кнр": "CNY", - "валюта китая": "CNY", - "женьминби": "CNY", - "женьминьби": "CNY", - "жэньминби": "CNY", - "жэньминьби": "CNY", - "ренминби": "CNY", - "юань ренминби": "CNY", - "юань жэньминьби": "CNY", - "jüan": "CNY", - "čínsky juan": "CNY", - "juan": "CNY", - "renminb": "CNY", - "јуан": "CNY", - "кинески јуан": "CNY", - "rmb¥": "CNY", - "หยวนจีน": "CNY", - "เงินหยวน": "CNY", - "เรนมินบิ": "CNY", - "เหยินหมินปี้": "CNY", - "китайський юань": "CNY", - "nhân dân tệ trung quốc": "CNY", - "COL$": "COP", - "peso de colòmbia": "COP", - "col$": "COP", - "co $": "COP", - "co$": "COP", - "kolomba peso": "COP", - "cop": "COP", - "peso de colombia": "COP", - "pesos": [ - "MXN", - "COP" - ], - "kolumbijski peso": "COP", - "コロンビアの通貨": "COP", - "peso colombian": "COP", - "peso da colômbia": "COP", - "валюта колумбии": "COP", - "колумбийский песо": "COP", - "песо оро": "COP", - "колумбијски песо": "COP", - "unidad de valor real": "COU", - "COU$": "COU", - "unidad de valor real colombienne": "COU", - "₡": [ - "STN", - "CRC" - ], - "colon costa riqueny": "CRC", - "colón de costa rica": "CRC", - "costa rica colon": "CRC", - "crc": "CRC", - "costa rican colon": "CRC", - "colón costarricense": "CRC", - "colon": "CRC", - "colon costarricense": "CRC", - "colon costaricain": "CRC", - "colon costaricien": "CRC", - "colón costaricain": "CRC", - "colon costaricano": "CRC", - "costaricaanse colon": "CRC", - "costaricaanse colón": "CRC", - "ਕੋਸਟਾ ਰੀਕਾਈ ਕੋਲੋਨ": "CRC", - "colón costa ricense": "CRC", - "colón costa riquense": "CRC", - "colón costarriquenho": "CRC", - "colón costarriquense": "CRC", - "colón da costa rica": "CRC", - "костариканский колон": "CRC", - "валюта коста рики": "CRC", - "колон": "CRC", - "колон коста рики": "CRC", - "البيزو الكوبي": "CUP", - "$MN": "CUP", - "بيزو البكوبي": "CUP", - "peso de cuba": "CUP", - "cub$": "CUP", - "cup": "CUP", - "cubano peso": "CUP", - "moneda nacional": "CUP", - "peso rana": "CUP", - "פזו קובני": "CUP", - "キューバペソ": "CUP", - "валюта кубы": "CUP", - "кубинский песо": "CUP", - "kubanski peso": "CUP", - "кубански песо": "CUP", - "küba pezosu": "CUP", - "кубинське песо": "CUP", - "ايسكودو": "CVE", - "ايسكودو الرأس الأخضر": "CVE", - "ايسكودو كاب فيردي": "CVE", - "кабо верде ескудо": "CVE", - "cape verde escudo": "CVE", - "escudo de cabo verde": "CVE", - "escudo capverdien": "CVE", - "אשקודו כף ורדי": "CVE", - "kapverdski eskudo": "CVE", - "zöld foki köztársasági escudo": "CVE", - "cve": "CVE", - "zöld foki szigeteki escudo": "CVE", - "escudo di capo verde": "CVE", - "scudo capoverdiano": "CVE", - "카보베르데 에스쿠도": "CVE", - "카보베르데에스쿠도": "CVE", - "escudos cabo verdianos": "CVE", - "валюта кабо верде": "CVE", - "كرونه تشيكيه": "CZK", - "Kč": "CZK", - "крони": "CZK", - "চেক কোরুনা": "CZK", - "czk": "CZK", - "corona de txèquia": "CZK", - "corona de la república txeca": "CZK", - "kč": "CZK", - "česká měna": "CZK", - "tjekkiske kroner": "CZK", - "tjekkoslovakiske kroner": "CZK", - "tjekkisk koruna": "CZK", - "koruna": "CZK", - "tschechische währung": "CZK", - "heller": "CZK", - "ĉeĥia krono": "CZK", - "koruna ceská": "CZK", - "koruna ceska": "CZK", - "koruna česka": "CZK", - "tsehhi kroon": "CZK", - "tsekin koruna": "CZK", - "tshekin koruna": "CZK", - "tshekin kruunu": "CZK", - "tšekin kruunu": "CZK", - "couronne tcheque": "CZK", - "couronnes tchèques": "CZK", - "corona tchec": "CZK", - "corone ceche": "CZK", - "チェコ・クローネ": "CZK", - "coroa da república checa": "CZK", - "coroa tcheca": "CZK", - "валюта чехии": "CZK", - "крона": [ - "NOK", - "DKK", - "CZK" - ], - "чешка коруна": "CZK", - "tjeckisk koruna": "CZK", - "крона чеська": "CZK", - "Fdj": "DJF", - "الفرنك الجيبوتي": "DJF", - "djf": "DJF", - "djibouti franc": "DJF", - "franco de yibuti": "DJF", - "franco yibuti": "DJF", - "franco de djibouti": "DJF", - "franco yibutiense": "DJF", - "franco yibutí": "DJF", - "franc djiboutien": "DJF", - "פרנק ג'יבוטי": "DJF", - "המטבע של ג'יבוטי": "DJF", - "franco di gibuti": "DJF", - "지부티프랑": "DJF", - "djiboutische frank": "DJF", - "franco djibutiano": "DJF", - "franco djibutiense": "DJF", - "franco do djibuti": "DJF", - "franco do djibouti": "DJF", - "franco jibutiano": "DJF", - "franco jibutiense": "DJF", - "валюта джибути": "DJF", - "джибутийский франк": "DJF", - "џибутијски франак": "DJF", - "cibuti frankı": "DJF", - "kr.": "DKK", - "corona de dinamarca": "DKK", - "krone danaidd": "DKK", - "dansk krone": "DKK", - "dkk": "DKK", - "kronemønt": "DKK", - "krone": [ - "NOK", - "DKK" - ], - "kr": [ - "SEK", - "NOK", - "ISK", - "DKK" - ], - "monnaie danoise": "DKK", - "coroa danesa": "DKK", - "קרונה דנית": "DKK", - "デンマーククローネ": "DKK", - "dāņu krona": "DKK", - "ਡੈੱਨਮਾਰਕੀ ਕਰੋਨ": "DKK", - "coroa da dinamarca": "DKK", - "øre": "DKK", - "валюта дании": "DKK", - "danska krona": "DKK", - "dansk valuta": "DKK", - "danska kronor": "DKK", - "டானிஷ் குரோன்": "DKK", - "டானிஷ் க்ரோன்": "DKK", - "டென்மார்க் குரோன": "DKK", - "டென்மார்க் குரோன்": "DKK", - "валюта данії": "DKK", - "بيسو دومنيكاني": "DOP", - "RD$": "DOP", - "peso dominica": "DOP", - "dom$": "DOP", - "rd$": "DOP", - "dominican peso oro": "DOP", - "peso oro": "DOP", - "dominga peso": "DOP", - "dop": "DOP", - "peso de republica dominicana": "DOP", - "peso de república dominicana": "DOP", - "peso oro dominicano": "DOP", - "dominikanski peso": "DOP", - "ドミニカ共和国ペソ": "DOP", - "peso da república dominicana": "DOP", - "peso dominican": "DOP", - "валюта доминиканской республики": "DOP", - "песо доминиканской республики": "DOP", - "доминикански песо": "DOP", - "домініканське песо": "DOP", - "DA": "DZD", - "dinar d'algèria": "DZD", - "dzd": "DZD", - "dinar": [ - "TND", - "RSD", - "LYD", - "JOD", - "DZD" - ], - "da": "DZD", - "dinar algerino": "DZD", - "dinar algérienne": "DZD", - "dinar algerienne": "DZD", - "dinars algérienne": "DZD", - "מטבע אלג'יריה": "DZD", - "알제리디나르": "DZD", - "denar argelino": "DZD", - "denar da argélia": "DZD", - "dinar da argélia": "DZD", - "валюта алжира": "DZD", - "அல்ஜீரிய தினார்": "DZD", - "الجنية المصري": "EGP", - "LE": "EGP", - "الجنيه المصري": "EGP", - "ج.م": "EGP", - "جنية مصري": "EGP", - "e£": "EGP", - "lliura d'egipte": "EGP", - "punt yr aifft": "EGP", - "le": [ - "SLL", - "SLE", - "EGP" - ], - "egyptiske pund": "EGP", - "ginē": "EGP", - "guinee": "EGP", - "l.e.": "EGP", - "£e": "EGP", - "d.r.": "EGP", - "dr": "EGP", - "d£": "EGP", - "egp": "EGP", - "egiptoar libera": "EGP", - "livre egyptienne": "EGP", - "מטבע מצרים": "EGP", - "lira egiziana": "EGP", - "エジプトポンド": "EGP", - "ギニー": "EGP", - "이집트파운드": "EGP", - "egyptische pond": "EGP", - "liura egipciana": "EGP", - "libra do egipto": "EGP", - "libra do egito": "EGP", - "libră egipteană": "EGP", - "валюта египта": "EGP", - "фунт": [ - "SSP", - "SHP", - "GBP", - "FKP", - "EGP" - ], - "egiptovski funt": "EGP", - "египатска фунта": "EGP", - "egyptiska pund": "EGP", - "mısır paundu": "EGP", - "ناكفا": "ERN", - "نقفة": "ERN", - "Nfk": "ERN", - "ern": "ERN", - "nkf": "ERN", - "eritrea nagfo": "ERN", - "nafka eritrea": "ERN", - "מטבע אריתריאה": "ERN", - "nafka": "ERN", - "nakfa eritreo": "ERN", - "エリトリア・ナクファ": "ERN", - "낙파": "ERN", - "에리트레아낙파": "ERN", - "валюта эритреи": "ERN", - "накфа": "ERN", - "بير": "ETB", - "dòlar etíop": "ETB", - "gersh": "ETB", - "mätonya": "ETB", - "etb": "ETB", - "ethiopian dollar": "ETB", - "birr éthiopien": "ETB", - "エチオピア・ブル": "ETB", - "비르": "ETB", - "biras": "ETB", - "birr da etiópia": "ETB", - "birre da etiópia": "ETB", - "birre etíope": "ETB", - "абиссинский талер": "ETB", - "быр": "ETB", - "валюта эфиопии": "ETB", - "талари": "ETB", - "эфиопский доллар": "ETB", - "эфиопский талер": "ETB", - "etiopisk birr": "ETB", - "€": "EUR", - "اليورو": "EUR", - "eur": "EUR", - "euros": "EUR", - "💶": "EUR", - "eŭroj": "EUR", - "e": [ - "SZL", - "EUR" - ], - "evrski denar": "EUR", - "யூரோ": "EUR", - "avro": "EUR", - "F$": "FJD", - "dòlar de fiji": "FJD", - "fjd": "FJD", - "fijiansk dollar": "FJD", - "f$": "FJD", - "fijan dollar": "FJD", - "dolar de fiji": "FJD", - "dolar fijiano": "FJD", - "dólar fijiano": "FJD", - "dolar": [ - "NZD", - "FJD" - ], - "dolar fiyiano": "FJD", - "dólar": [ - "USD", - "FJD" - ], - "fidzhin dollari": "FJD", - "fidzin dollari": "FJD", - "dollar des îles fidji": "FJD", - "dollar fidjien": "FJD", - "דולר פיג'י": "FJD", - "fj$": "FJD", - "피지달러": "FJD", - "dólar das fiji": "FJD", - "dolarul fijian": "FJD", - "фиджийский доллар": "FJD", - "фиџи долар": "FJD", - "долар фіджі": "FJD", - "FJ$": "FJD", - "£": [ - "SYP", - "SSP", - "SHP", - "SDG", - "LBP", - "GIP", - "GBP", - "FKP" - ], - "FK£": "FKP", - "lliura de les falkland": "FKP", - "lliura de les illes falkland": "FKP", - "lliura de les illes malvines": "FKP", - "fl£": "FKP", - "fkp": "FKP", - "libra falkland": "FKP", - "livre des îles falkland": "FKP", - "falkland pound": "FKP", - "libra das malvinas": "FKP", - "libra das falkland": "FKP", - "libra das ilhas falkland": "FKP", - "фолклендский фунт": "FKP", - "fk£": "FKP", - "brits pond": "GBP", - "britse pond": "GBP", - "gbp": "GBP", - "pond": "GBP", - "الجنية البريطاني": "GBP", - "الجنيه الأسترليني": "GBP", - "الجنيه الإسترليني": "GBP", - "الجنيه الاسترليني": "GBP", - "باوند إسترليني": "GBP", - "جنيه أسترليني": "GBP", - "جنيه استرليني": "GBP", - "جنيه سترليني": "GBP", - "английски паунд": "GBP", - "британски лири": "GBP", - "британски паунд": "GBP", - "фунт стерлинг": "GBP", - "ব্রিটিশ পাউন্ড": "GBP", - "lliures esterlines": "GBP", - "britská libra": "GBP", - "britské libry": "GBP", - "libra šterlinku": "GBP", - "punt": "GBP", - "sterling": "GBP", - "britisk pund": "GBP", - "pund sterling": "GBP", - "sovereign": "GBP", - "engelsk pund": "GBP", - "engelske pund": "GBP", - "britisches pfund": "GBP", - "british pound": "GBP", - "great british pound": "GBP", - "pence": "GBP", - "penny": "GBP", - "pound": "GBP", - "pounds": "GBP", - "quid": "GBP", - "britaj pundoj": "GBP", - "sterlingo": "GBP", - "gpb": "GBP", - "neet": "GBP", - "libra": "GBP", - "libras esterlinas": "GBP", - "inglise nael": "GBP", - "naelsterling": "GBP", - "suurbritannia nael": "GBP", - "esterlindar libera": "GBP", - "esterlindar libra": "GBP", - "iso britannian punta": "GBP", - "ison britannian punta": "GBP", - "yhdistyneen kuningaskunnan punta": "GBP", - "livre britannique": "GBP", - "גיני": "GBP", - "לירה סטרלינג": "GBP", - "לירות סטרלינג": "GBP", - "לירות שטרלינג": "GBP", - "ליש\"ט": "GBP", - "מטבע אנגליה": "GBP", - "מטבע צפון אירלנד": "GBP", - "פאונד": "GBP", - "פאונד סטרלינג": "GBP", - "שטרלינג": "GBP", - "funta sterlinga": "GBP", - "angol font": "GBP", - "brit font": "GBP", - "észak ír font": "GBP", - "libra sterling": "GBP", - "poundsterling": "GBP", - "sterlina inglese": "GBP", - "gbp£": "GBP", - "ukポンド": "GBP", - "イギリスの通貨": "GBP", - "イギリスポンド": "GBP", - "イギリス・ポンド": "GBP", - "ブリティッシュ・ポンド": "GBP", - "英ポンド": "GBP", - "영국 파운드": "GBP", - "퀴드": "GBP", - "파운드화기호": "GBP", - "파운드화표기": "GBP", - "파운드화표시": "GBP", - "jk svaras": "GBP", - "apvienotās karalistes sterliņu mārciņa": "GBP", - "uk£": "GBP", - "stērliņu mārciņa": "GBP", - "₤": "GBP", - "paun british": "GBP", - "engels pond": "GBP", - "engelse pond": "GBP", - "liure esterlina": "GBP", - "funt brytyjski": "GBP", - "libra estrelina": "GBP", - "libra inglesa": "GBP", - "lire sterline": "GBP", - "ukl": "GBP", - "английский фунт": "GBP", - "английский фунт стерлингов": "GBP", - "британский фунт": "GBP", - "валюта великобритании": "GBP", - "фунт стерлингов соединенного королевства": "GBP", - "фунты стерлингов": "GBP", - "libra šterlingov": "GBP", - "angleški funt": "GBP", - "britanski funt": "GBP", - "šterling": "GBP", - "енглеска фунта": "GBP", - "фунта стерлинга": "GBP", - "фунта стерлинг": "GBP", - "brittiska pund": "GBP", - "பவுண்ட் ஸ்டேர்லிங்": "GBP", - "பவுண்ட் ஸ்ரேர்லிங்": "GBP", - "பிரிட்டிஷ் பவுண்டு": "GBP", - "பிரிட்டிஷ் பவுண்ட்": "GBP", - "ஸ்டேர்லிங் பவுண்ட்": "GBP", - "เงินปอนด์": "GBP", - "sterlin": "GBP", - "австралійський фунт стерлінгів": "GBP", - "англійський фунт стерлінгів": "GBP", - "британський фунт": "GBP", - "пенс": "GBP", - "anh kim": "GBP", - "đồng bảng anh": "GBP", - "لاري": "GEL", - "₾": "GEL", - "لاري الجورجي": "GEL", - "лари": "GEL", - "gruzínské lari": "GEL", - "georgian kupon lari": "GEL", - "kartvela lario": "GEL", - "gel": "GEL", - "gruusia lari": "GEL", - "lari géorgien": "GEL", - "כארתולי לארי": "GEL", - "לארי גרוזי": "GEL", - "לארי גרוזיני": "GEL", - "lari georgian": "GEL", - "グルジアの通貨": "GEL", - "그루지야 라리": "GEL", - "라리": "GEL", - "lari gruziński": "GEL", - "валюта грузии": "GEL", - "тетри": "GEL", - "சியார்சிய லாரி": "GEL", - "ஜோர்ஜிய லாரி": "GEL", - "gürcistan larisi": "GEL", - "ларі": "GEL", - "₵": "GHS", - "GH₵": "GHS", - "ганайско кеди": "GHS", - "ghs": "GHS", - "gh₵": "GHS", - "סדי גאני": "GHS", - "جنيه جبرلتار": "GIP", - "punt gibraltar": "GIP", - "gip": "GIP", - "gibraltar pund": "GIP", - "gib£": "GIP", - "libra gibraltarena": "GIP", - "לירה גיברלטרית": "GIP", - "libra gibraltina": "GIP", - "liră gibraltareză": "GIP", - "валюта гибралтара": "GIP", - "ஜிப்ரால்ட்டர் பவுண்டு": "GIP", - "D": "GMD", - "دالاسي": "GMD", - "butut": "GMD", - "bututs": "GMD", - "gmd": "GMD", - "gambia dalasi": "GMD", - "dalasi gambien": "GMD", - "דלסי": "GMD", - "ガンビア・ダラシ": "GMD", - "달라시": "GMD", - "dalase": "GMD", - "dalasi gambiano": "GMD", - "dalassi": "GMD", - "гамбийский даласи": "GMD", - "валюта гамбии": "GMD", - "даласі": "GMD", - "FG": "GNF", - "franc de guinea": "GNF", - "guinea franc": "GNF", - "gnf": "GNF", - "מטבע גינאה": "GNF", - "פרנק גיניאי": "GNF", - "franco della guinea": "GNF", - "기니프랑": "GNF", - "guinese frank": "GNF", - "franco guineense": "GNF", - "franco guineense gnf": "GNF", - "franco guinné gnf": "GNF", - "валюта гвинеи": "GNF", - "Q": "GTQ", - "كيتزال": "GTQ", - "кетцал": "GTQ", - "quetzal gwatemala": "GTQ", - "gtq": "GTQ", - "quetzales": "GTQ", - "guatemala quetzal": "GTQ", - "gvatemala kvecalo": "GTQ", - "quetzal guatémaltèque": "GTQ", - "quetzal guatemalteque": "GTQ", - "מטבע גואטמלה": "GTQ", - "gvatemalski quetzal": "GTQ", - "과테말라 퀘찰": "GTQ", - "케찰": "GTQ", - "gvatemalos ketsalis": "GTQ", - "валюта гватемалы": "GTQ", - "гватемальский кетцаль": "GTQ", - "кветцал": "GTQ", - "кетсал": "GTQ", - "кетсаль": "GTQ", - "гватемальський кецаль": "GTQ", - "دولار غوياني": "GYD", - "G$": "GYD", - "гаянски долар": "GYD", - "g$": "GYD", - "gy$": "GYD", - "money of guyana": "GYD", - "dolar de guyana": "GYD", - "dolar guyanes": "GYD", - "dolar guyanés": "GYD", - "dólar de guyana": "GYD", - "dólar guyanes": "GYD", - "gyd": "GYD", - "dollar de guyana": "GYD", - "dollar du guyana": "GYD", - "דולר גיאני": "GYD", - "ਗੁਇਆਨਾਈ ਡਾਲਰ": "GYD", - "dólar guianense": "GYD", - "валюта гайаны": "GYD", - "гвајана долар": "GYD", - "GY$": "GYD", - "HK$": "HKD", - "دولار هونغ كونغي": "HKD", - "doler hong kong": "HKD", - "hkd": "HKD", - "hk$": "HKD", - "dolar de hong kong": "HKD", - "dolar hongkones": "HKD", - "dólar hongkonés": "HKD", - "dolar hongkongtar": "HKD", - "dollar hongkongais": "HKD", - "דולר הונג קונג": "HKD", - "honkonški dolar": "HKD", - "香港の通貨": "HKD", - "香港・ドル": "HKD", - "香港元": "HKD", - "홍콩달러": "HKD", - "hongkongo doleris": "HKD", - "dólar de hongkong": "HKD", - "dólar de hongue congue": "HKD", - "dólar de honguecongue": "HKD", - "dolar din hong kong": "HKD", - "доллар гонконга": "HKD", - "хонгконг долар": "HKD", - "гонконгзький долар": "HKD", - "долар гонконґу": "HKD", - "dollar hong kong": "HKD", - "dollar hồng kông": "HKD", - "لمبيرا": "HNL", - "лемпира": "HNL", - "lempira hondwraidd": "HNL", - "honduranischer lempira": "HNL", - "lempiro": "HNL", - "hnl": "HNL", - "lempira hondureña": "HNL", - "lempira hondurien": "HNL", - "lempire hondurien": "HNL", - "렘피라": "HNL", - "hondūro lempyra": "HNL", - "lempyra": "HNL", - "lempira hondurenha": "HNL", - "валюта гондураса": "HNL", - "хондурашка лемпира": "HNL", - "Gde.": "HTG", - "gde.": "HTG", - "haitianische gourde": "HTG", - "haitianischer gourde": "HTG", - "htg": "HTG", - "dollar haïtien": "HTG", - "gourde haitienne": "HTG", - "gourde haïtienne": "HTG", - "גורד": "HTG", - "구르드": "HTG", - "haitiaanse gourde": "HTG", - "gurde": "HTG", - "gurde haitiano": "HTG", - "валюта гаити": "HTG", - "гурд": "HTG", - "хаитски гурд": "HTG", - "G": "HTG", - "Ft": "HUF", - "فورينت مجري": "HUF", - "florí hongarès": "HUF", - "huf": "HUF", - "filler": "HUF", - "fillér": "HUF", - "ungarsk forint": "HUF", - "ungarischer forint": "HUF", - "ft": "HUF", - "forinto": "HUF", - "hungaria forinto": "HUF", - "florin hungaro": "HUF", - "florin húngaro": "HUF", - "florín hungaro": "HUF", - "forint hungaro": "HUF", - "forint húngaro": "HUF", - "forinto hungaro": "HUF", - "ungari forint": "HUF", - "forintti": "HUF", - "forint hongrois": "HUF", - "forints": "HUF", - "florint": "HUF", - "florint húngaro": "HUF", - "forint hungare": "HUF", - "forint hongaria": "HUF", - "ハンガリーフォリント": "HUF", - "ハンガリー・フォリント": "HUF", - "포린트": "HUF", - "forint węgierski": "HUF", - "forinte": "HUF", - "forint maghiar": "HUF", - "forint ungar": "HUF", - "венгерский форинт": "HUF", - "валюта венгрии": "HUF", - "форинта": "HUF", - "ungersk forint": "HUF", - "ஃபோரின்ட்": "HUF", - "அங்கேரிய ஃபோரின்ட்": "HUF", - "ஹங்கேரிய போரிண்ட்": "HUF", - "угорський форінт": "HUF", - "روبية أندونيسية": "IDR", - "Rp": "IDR", - "روبية اندونيسية": "IDR", - "روبيه أندونيسيه": "IDR", - "rupia d'indonèsia": "IDR", - "idr": "IDR", - "indonesisk rupiah": "IDR", - "rp": "IDR", - "indoneza rupio": "IDR", - "rupia": [ - "SCR", - "NPR", - "INR", - "IDR" - ], - "rupia de indonesia": "IDR", - "indonesiar errupia": "IDR", - "roupie indonesienne": "IDR", - "רופיה אינדונזית": "IDR", - "gobang": "IDR", - "peser": "IDR", - "rupiah baru": "IDR", - "sepeser": "IDR", - "インドネシア・ルピア": "IDR", - "インドネシア・ルピー": "IDR", - "루피아": "IDR", - "indonēzijas rūpija": "IDR", - "rūpija": "IDR", - "ഇന്തോനേഷ്യൻ റുപിയ": "IDR", - "roepia": "IDR", - "roepiah": "IDR", - "ropia d'indonesia": "IDR", - "ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੂਪੀਆ": "IDR", - "ਇੰਡੋਨੇਸ਼ਿਆਈ ਰੂਪੀਆ": "IDR", - "валюта индонезии": "IDR", - "рупия": [ - "PKR", - "LKR", - "INR", - "IDR" - ], - "рупія": [ - "INR", - "IDR" - ], - "nuwe sjekel": "ILS", - "₪": "ILS", - "الشيكل الإسرائيلي الجديد": "ILS", - "شاقل جديد": "ILS", - "شيقل جديد": "ILS", - "شيكل اسرائيلي جديد": "ILS", - "شيكل جديد": "ILS", - "израелски нов шекел": "ILS", - "nou shekel": "ILS", - "nou sheqel": "ILS", - "nou sheqel israelià": "ILS", - "nou shequel": "ILS", - "nou xéquel israelià": "ILS", - "nis": "ILS", - "šekel chadaš": "ILS", - "schekalim": "ILS", - "schkalim": "ILS", - "sheqalim": "ILS", - "sheqel": "ILS", - "new shekel": "ILS", - "ils": "ILS", - "israeli new sheqel": "ILS", - "new israeli shekel": "ILS", - "new israeli sheqel": "ILS", - "new sheqel": "ILS", - "israela nova siklo": "ILS", - "israela siklo": "ILS", - "nova israela ŝekelo": "ILS", - "nova siklo": "ILS", - "nova ŝekelo": "ILS", - "nuevo shekel": "ILS", - "nuevo sheqel": "ILS", - "nuevo shequel": "ILS", - "nuevo shékel": "ILS", - "nuevo sequel": "ILS", - "nuevo sequel israeli": "ILS", - "nuevo shekel israeli": "ILS", - "nuevo shequel israeli": "ILS", - "nuevo shékel israelí": "ILS", - "nuevo shéquel israelí": "ILS", - "nuevo séquel israelí": "ILS", - "shekel berria": "ILS", - "israelin sekeli": "ILS", - "israelin shekeli": "ILS", - "shekeli": "ILS", - "nouveau shekel": "ILS", - "shekkel": "ILS", - "shékel": "ILS", - "novo sheqel": "ILS", - "novo shequel": "ILS", - "מטבע ישראל": "ILS", - "ש\"ח": "ILS", - "ש'": "ILS", - "שקל": "ILS", - "שקל ישראלי חדש": "ILS", - "nuovo siclo israeliano": "ILS", - "nuovo siclo": "ILS", - "siclo israeliano": "ILS", - "신 셰켈": "ILS", - "신 이스라엘 셰켈": "ILS", - "izraēlas jaunais šekelis": "ILS", - "jaunais izraēlas šekelis": "ILS", - "shekel israel baru": "ILS", - "sheqel israel baru": "ILS", - "israelische lire": "ILS", - "israelische sjekel": "ILS", - "israëlische lire": "ILS", - "nieuwe israelische shekel": "ILS", - "nieuwe israelische sheqel": "ILS", - "nieuwe israelische sjekel": "ILS", - "nieuwe israëlische shekel": "ILS", - "nieuwe israëlische sheqel": "ILS", - "nieuwe israëlische sjekel": "ILS", - "sjekel": "ILS", - "shekel novèl": "ILS", - "novo sheqel israelense": "ILS", - "novo sheqel israelita": "ILS", - "novo shequel israelita": "ILS", - "novo siclo israelense": "ILS", - "novo siclo israelita": "ILS", - "shekel israelense": "ILS", - "shekel nou": "ILS", - "şekel nou": "ILS", - "șekel nou": "ILS", - "валюта израиля": "ILS", - "израильский новый шекель": "ILS", - "новый шекель": "ILS", - "novi šekel": "ILS", - "agorot": "ILS", - "i̇srail yeni şekeli": "ILS", - "i̇srail şekeli": "ILS", - "şekel": "ILS", - "новий шекель": "ILS", - "новий ізраїльський шекель": "ILS", - "e₹": "INR", - "ডিজিটাল রুপি": "INR", - "e rupee": "INR", - "₹": "INR", - "الروبية الهندية": "INR", - "روبي هندية": "INR", - "روبيه هنديه": "INR", - "रू.": "INR", - "ভারতীয় রূপি": "INR", - "rupia d'índia": "INR", - "rupia de l'índia": "INR", - "rupies índies": "INR", - "rúpies": "INR", - "rupee indiaidd": "INR", - "indisk rupi": "INR", - "indisk rupee": "INR", - "indisk rupier": "INR", - "indiske rupees": "INR", - "rubai": "INR", - "rupaye": "INR", - "tanka": "INR", - "inr": "INR", - "rupaya": "INR", - "rupee": [ - "SCR", - "NPR", - "MUR", - "INR" - ], - "hinda rupio": "INR", - "rupias": "INR", - "rupias indias": "INR", - "indiar errupia": "INR", - "רופיה הודית": "INR", - "rupia dell'india": "INR", - "rupie indiane": "INR", - "indijas rūpijas": "INR", - "ഇന്ത്യൻ കറൻസി": "INR", - "രൂപ": "INR", - "രൂപാ": "INR", - "indiase rupee": "INR", - "rupia da índia": "INR", - "rúpia indiana": "INR", - "валюта индии": "INR", - "rupija": [ - "NPR", - "INR" - ], - "индијски рупи": "INR", - "рупија": "INR", - "இந்திய ரூபா": "INR", - "భారత రూపాయి": "INR", - "భారతదేశ రూపాయి": "INR", - "భారతీయ రూపాయి": "INR", - "الدينار العراقي": "IQD", - "د.ع": "IQD", - "دينار": [ - "KWD", - "IQD" - ], - "dinar d'iraq": "IQD", - "dinar de l'iraq": "IQD", - "iqd": "IQD", - "irak dinar": "IQD", - "id": "IQD", - "dinar de irak": "IQD", - "dinar iraki": "IQD", - "dinar irakí": "IQD", - "dinar iraqui": "IQD", - "イラクの通貨": "IQD", - "denar do iraque": "IQD", - "denar iraquiano": "IQD", - "dinar do iraque": "IQD", - "валюта ирака": "IQD", - "динар ирака": "IQD", - "iraški dinar": "IQD", - "இராக்கிய தீனார்": "IQD", - "ஈராக் டினார்": "IQD", - "ஈராக் தினார்": "IQD", - "ஈராக்கிய டினார்": "IQD", - "ஈராக்கிய தினார்": "IQD", - "ดินาร์อิรัก": "IQD", - "ID": "IQD", - "﷼": [ - "YER", - "SAR", - "IRR" - ], - "rial d'iran": "IRR", - "rial de l'iran": "IRR", - "íránský riál": "IRR", - "íránský rial": "IRR", - "ریال": [ - "YER", - "SAR", - "IRR" - ], - "rial iranaidd": "IRR", - "irr": "IRR", - "rial irani": "IRR", - "rial de iran": "IRR", - "rial de irán": "IRR", - "iranski rial": "IRR", - "イランの通貨": "IRR", - "イラン・リアル": "IRR", - "イラン・リヤール": "IRR", - "rial do irão": "IRR", - "валюта ирана": "IRR", - "иранский риял": "IRR", - "риал": [ - "YER", - "SAR", - "IRR" - ], - "риал ирана": "IRR", - "риял ирана": "IRR", - "ریال,": "IRR", - "i̇ran para birimi": "IRR", - "i̇ran parası": "IRR", - "corona d'islàndia": "ISK", - "isk": "ISK", - "islandsk króna": "ISK", - "islandsk krone": "ISK", - "islandske kroner": "ISK", - "aurar": "ISK", - "eyrir": "ISK", - "isländische währung": "ISK", - "króna": "ISK", - "krónur": "ISK", - "icelandic krona": "ISK", - "krona": [ - "SEK", - "ISK" - ], - "krona islandia": "ISK", - "アイスランドクローナ": "ISK", - "アイスランド・クローネ": "ISK", - "coroa da islândia": "ISK", - "валюта исландии": "ISK", - "isländsk króna": "ISK", - "krónor": "ISK", - "ஐஸ்லாந்து குரோனா": "ISK", - "J$": "JMD", - "dòlar de jamaica": "JMD", - "j$": "JMD", - "jmd": "JMD", - "jay": "JMD", - "dolar jamaicano": "JMD", - "dolar jamaiquino": "JMD", - "libra jamaicana": "JMD", - "dollar de la jamaïque": "JMD", - "dollar jamaicain": "JMD", - "dollar jamaïquain": "JMD", - "דולר ג'מייקי": "JMD", - "ジャマイカドル": "JMD", - "dólar da jamaica": "JMD", - "валюта ямайки": "JMD", - "јамајчански долар": "JMD", - "الدينار الأردني": "JOD", - "JD": "JOD", - "دينار اردني": "JOD", - "dinar de jordània": "JOD", - "jod": "JOD", - "jordana dinaro": "JOD", - "dinar de jordania": "JOD", - "dinar jordanian": "JOD", - "denar da jordânia": "JOD", - "denar jordano": "JOD", - "dinar da jordânia": "JOD", - "dinar jordaniano": "JOD", - "dinar jordâniano": "JOD", - "dinarul iordanian": "JOD", - "валюта иордании": "JOD", - "د.أ": "JOD", - "jpy": "JPY", - "йена": "JPY", - "en": "JPY", - "japana jeno": "JPY", - "yen japones": "JPY", - "yen japonés": "JPY", - "yen giapponese": "JPY", - "日本円": "JPY", - "엔": "JPY", - "엔화": "JPY", - "yeni": "JPY", - "японская иена": "JPY", - "japonski jen": "JPY", - "شيلينغ كينيي": "KES", - "Ksh": "KES", - "xíling de kenya": "KES", - "swllt cenia": "KES", - "shilling": "KES", - "chelin keniano": "KES", - "chelin keniata": "KES", - "chelín keniata": "KES", - "kenya šilling": "KES", - "kes": "KES", - "shilling kenyan": "KES", - "scellino": "KES", - "scellino keniano": "KES", - "ケニアシリング": "KES", - "ksh": "KES", - "케냐실링": "KES", - "валюта кении": "KES", - "шиллинг": [ - "UGX", - "TZS", - "SOS", - "KES" - ], - "سوم قرغيزستاني": "KGS", - "⃀": "KGS", - "som de kirguizistan": "KGS", - "som del kirguizistan": "KGS", - "k.s.": "KGS", - "kirgizia somo": "KGS", - "kgs": "KGS", - "som de kirguistan": "KGS", - "som de kirguistán": "KGS", - "som kirguis": "KGS", - "kirgiski som": "KGS", - "som kirghizo": "KGS", - "ソム": "KGS", - "som kirgiski": "KGS", - "som do quirguistão": "KGS", - "som quirguiz": "KGS", - "some": "KGS", - "валюта киргизии": "KGS", - "кыргызский сом": "KGS", - "сом": [ - "UZS", - "KGS" - ], - "kirgiški som": "KGS", - "киргистански сом": "KGS", - "киргишки сом": "KGS", - "៛": "KHR", - "khr": "KHR", - "khmer riel": "KHR", - "ריאל קמבודי": "KHR", - "kambodžanski rijel": "KHR", - "камбоджийский риель": "KHR", - "kambodjansk riel": "KHR", - "ரைல்": "KHR", - "கம்போடியன் ரைல்": "KHR", - "franco comorano": "KMF", - "פרנק קומורואי": "KMF", - "komoransk franc": "KMF", - "cf": "KMF", - "kmf": "KMF", - "₩": [ - "KRW", - "KPW" - ], - "won de corea del nord": "KPW", - "won de la república democràtica popular de corea": "KPW", - "nord korea vono": "KPW", - "wŏn norcoreano": "KPW", - "põhja korea won": "KPW", - "kpw": "KPW", - "北朝鮮ウォン": "KPW", - "원화": "KPW", - "조선민주주의인민공화국 전": "KPW", - "조선민주주의인민공화국 화폐": "KPW", - "šiaurės korėjos vonas": "KPW", - "won da coreia do norte": "KPW", - "won da república democrática popular da coreia": "KPW", - "won da república popular democrática da coreia": "KPW", - "вона кндр": "KPW", - "валюта кндр": "KPW", - "северо корейская вона": "KPW", - "вона": [ - "KRW", - "KPW" - ], - "severnokorejski von": "KPW", - "won bắc triều tiên": "KPW", - "ون كوريا الجنوبية": "KRW", - "وون": "KRW", - "দক্ষিণ কোরীয় উয়ন": "KRW", - "won de corea del sud": "KRW", - "won de la república de corea": "KRW", - "won": "KRW", - "krw": "KRW", - "south korea won": "KRW", - "sud korea vono": "KRW", - "jeon": "KRW", - "lõuna korea won": "KRW", - "韓国ウォン": "KRW", - "원": "KRW", - "대한민국 통화": "KRW", - "대한민국 화폐": "KRW", - "대한민국전": "KRW", - "won sud corean": "KRW", - "валюта республики корея": "KRW", - "วอนเกาหลีใต้": "KRW", - "เงินวอนเกาหลีใต้": "KRW", - "đại hàn dân quốc weon": "KRW", - "الدينار الكويتي": "KWD", - "KD": "KWD", - "dinar de kuwait": "KWD", - "kwd": "KWD", - "dinar kuwaiti": "KWD", - "kwt": "KWD", - "dinar du koweït": "KWD", - "dinar koweitien": "KWD", - "dinar kowéitien": "KWD", - "denar couaitiano": "KWD", - "denar covaitiano": "KWD", - "denar coveitiano": "KWD", - "denar cuaitiano": "KWD", - "denar koweitiano": "KWD", - "denar kuaitiano": "KWD", - "denar kuweitiano": "KWD", - "denar quaitiano": "KWD", - "dinar coaitiano": "KWD", - "dinar couaitiano": "KWD", - "dinar covaitiano": "KWD", - "dinar coveiteano": "KWD", - "dinar coveitiano": "KWD", - "dinar cuveitiano": "KWD", - "dinar kuweitiano": "KWD", - "dinar quaitiano": "KWD", - "валюта кувейта": "KWD", - "ك": "KWD", - "குவைத்தி தினார்": "KWD", - "د.ك": "KWD", - "CI$": "KYD", - "kyd": "KYD", - "ci$": "KYD", - "dolar caimano": "KYD", - "dolar de las islas caiman": "KYD", - "dolar de las islas caimán": "KYD", - "dólar caimano": "KYD", - "dólar de las islas caiman": "KYD", - "דולר קיימני": "KYD", - "ケイマン諸島ドル": "KYD", - "케이맨제도달러": "KYD", - "kaimanų doleris": "KYD", - "caymaneilandse dollar": "KYD", - "dolar de las illas caiman": "KYD", - "dólar das ilhas cayman": "KYD", - "доллар островов кайман": "KYD", - "кајмански долар": "KYD", - "₸": "KZT", - "тенге": "KZT", - "kazašské tenge": "KZT", - "kazašský tenge": "KZT", - "tenge casachstan": "KZT", - "kzt": "KZT", - "〒": "KZT", - "tengue": "KZT", - "טנגה": "KZT", - "kazah tenge": "KZT", - "tenge kazakstan": "KZT", - "텡게": "KZT", - "kazachijos tengė": "KZT", - "tengė": "KZT", - "ਕਜ਼ਾਖ਼ਸਤਾਨੀ ਤਿਙੇ": "KZT", - "tenge kazachski": "KZT", - "tengue cazaque": "KZT", - "tenge kazah": "KZT", - "валюта казахстана": "KZT", - "казахский тенге": "KZT", - "символ тенге": "KZT", - "тенге казахстана": "KZT", - "тенге казахстанский": "KZT", - "теньге": "KZT", - "теңге": "KZT", - "kazakstansk tenge": "KZT", - "கசக்ஸ்தானி டெங்கே": "KZT", - "казахстанський тенге": "KZT", - "₭": "LAK", - "كيب": "LAK", - "kip laosià": "LAK", - "lak": "LAK", - "₭n": "LAK", - "kīp": "LAK", - "kip laotien": "LAK", - "quip": "LAK", - "quipe": "LAK", - "laoški kip": "LAK", - "kip laos": "LAK", - "ラオスの通貨": "LAK", - "ラオス・キープ": "LAK", - "킵": "LAK", - "kipas": "LAK", - "kipe": "LAK", - "валюта лаоса": "LAK", - "кип": "LAK", - "кип свободы": "LAK", - "лаоски нови кип": "LAK", - "нови кип": "LAK", - "laotisk kip": "LAK", - "kip lào": "LAK", - "kíp": "LAK", - "ليره لبنانيه": "LBP", - "ل.ل.": "LBP", - "lira de líban": "LBP", - "lira del líban": "LBP", - "lira libanesa": "LBP", - "lliura de líban": "LBP", - "lliura del líban": "LBP", - "punt libanus": "LBP", - "libanon pfund": "LBP", - "l£": "LBP", - "lbp": "LBP", - "lebanese lira": "LBP", - "libana pundo": "LBP", - "레바논 리라": "LBP", - "libanese pond": "LBP", - "liura libanesa": "LBP", - "libra do líbano": "LBP", - "валюта ливана": "LBP", - "ливанская лира": "LBP", - "libanonska lira": "LBP", - "ل.ل": "LBP", - "ліванська ліра": "LBP", - "LL": "LBP", - "روبيه سريلانكي": "LKR", - "₨": [ - "SCR", - "PKR", - "NPR", - "MUR", - "LKR" - ], - "Rs": "LKR", - "rupia cingalesa": "LKR", - "rupia de ceilan": "LKR", - "rupia singalesa": "LKR", - "rupee sri lanca": "LKR", - "sri lanka rupee": "LKR", - "lkr": "LKR", - "lankan rupee": "LKR", - "sri lankansk rupee": "LKR", - "srilankan rupee": "LKR", - "srilankansk rupee": "LKR", - "slrs": "LKR", - "sri lankan rupees": "LKR", - "tamil rupee": "LKR", - "rupia esrilanquesa": "LKR", - "rupia ceilandesa": "LKR", - "rupia ceilanesa": "LKR", - "rupia de seychelles": [ - "SCR", - "LKR" - ], - "rupia srilanquesa": "LKR", - "rupia tamil": "LKR", - "roupie du sri lanka": "LKR", - "רופי סרי לנקי": "LKR", - "srilankaanse roepie": "LKR", - "srilankaanse rupee": "LKR", - "ਸ੍ਰੀਲੰਕਾਈ ਰੁਪਈਆ": "LKR", - "rupia sri lanki": "LKR", - "rúpia do sri lanka": "LKR", - "rupia do seri lanca": "LKR", - "rupia do sri lanca": "LKR", - "ланкийская рупия": "LKR", - "валюта шри ланки": "LKR", - "රුපියල": "LKR", - "šrilanška rupija": "LKR", - "tamilska rupija": "LKR", - "рупија шри ланке": "LKR", - "шриланканска рупија": "LKR", - "lankesisk rupie": "LKR", - "sri lankesisk rupee": "LKR", - "sri lankesisk rupie": "LKR", - "රු": "LKR", - "இலங்கை ரூபா": "LKR", - "ланкійська рупія": "LKR", - "Lib$": "LRD", - "dòlar de libèria": "LRD", - "lib$": "LRD", - "dolar liberiano": "LRD", - "dollar liberien": "LRD", - "l$": "LRD", - "ld$": "LRD", - "lrd": "LRD", - "リベリアドル": "LRD", - "dolar liberian": "LRD", - "валюта либерии": "LRD", - "liberisk dollar": "LRD", - "L$": "LRD", - "لوتي": "LSL", - "M": "LSL", - "lisente": "LSL", - "lsl": "LSL", - "loti lesothan": "LSL", - "לוטי": "LSL", - "לוטי לסוטו": "LSL", - "loti del lesotho": "LSL", - "レソト・ロチ": "LSL", - "валюта лесото": "LSL", - "лоти": "LSL", - "lesothisk loti": "LSL", - "l": [ - "SZL", - "RON", - "LSL" - ], - "m": "LSL", - "lesoto lotisi": "LSL", - "лоті": "LSL", - "الدينار الليبي": "LYD", - "LD": "LYD", - "الدينار ليبي": "LYD", - "dinar de líbia": "LYD", - "lyd": "LYD", - "ld": "LYD", - "דינר לובי ": "LYD", - "리비아디나르": "LYD", - "dinar libian": "LYD", - "валюта ливии": "LYD", - "ل.د": "LYD", - "dirham de marroc": "MAD", - "dirham del marroc": "MAD", - "dirham marroquí": "MAD", - "maza": "MAD", - "dirham marroqui": "MAD", - "דירהם מרוקני": "MAD", - "모로코디르함": "MAD", - "dirham marroquino": "MAD", - "dirame de marrocos": "MAD", - "dirame do marrocos": "MAD", - "dirame marroquino": "MAD", - "dirham de marrocos": "MAD", - "dirham do marrocos": "MAD", - "валюта марокко": "MAD", - "марокканский дирхем": "MAD", - "дирхем": "MAD", - "mad": "MAD", - "молдовска леа": "MDL", - "молдовски леи": "MDL", - "leu de moldàvia": "MDL", - "mdl": "MDL", - "moldavský leu": "MDL", - "leu": [ - "RON", - "MDL" - ], - "moldava leŭo": "MDL", - "moldavia leŭo": "MDL", - "ליאו מולדובני": "MDL", - "moldavski leu": "MDL", - "moldován lej": "MDL", - "モルドバの通貨": "MDL", - "モルドバ・レイ": "MDL", - "moldovos lėja": "MDL", - "lej mołdawski": "MDL", - "leu da moldávia": "MDL", - "lei": [ - "RON", - "MDL" - ], - "lei moldovenești": "MDL", - "leul moldovenesc": "MDL", - "валюта молдавии": "MDL", - "лей": [ - "RON", - "MDL" - ], - "молдавський лей": "MDL", - "Ar": "MGA", - "ارياري": "MGA", - "iraimbilanja": "MGA", - "madagascan ariary": "MGA", - "ariaro": "MGA", - "madagaskara ariaro": "MGA", - "ariary malagasy": "MGA", - "franc malgache": "MGA", - "איראימבילאנג'ה": "MGA", - "mga": "MGA", - "アリアリ": "MGA", - "마다가스카르아리아리": "MGA", - "아리아리": "MGA", - "ariaris": "MGA", - "ariari": "MGA", - "ariari de madagascar": "MGA", - "ariari de madagáscar": "MGA", - "ariari malgaxe": "MGA", - "ariary de madagascar": "MGA", - "ariary de madagáscar": "MGA", - "ариари": "MGA", - "валюта мадагаскара": "MGA", - "малгашки ариари": "MGA", - "madagaskisk ariary": "MGA", - "ar": "MGA", - "mgf": "MGA", - "madagaskar ariarysi": "MGA", - "malgaş ariarysi": "MGA", - "ден": "MKD", - "денар": "MKD", - "denar macedoni": "MKD", - "denar normacedoni": "MKD", - "dinar de macedònia": "MKD", - "dinar macedoni": "MKD", - "dinar normacedoni": "MKD", - "makedonský dinár": "MKD", - "makedonsk denar": "MKD", - "denari": "MKD", - "mkd": "MKD", - "makedonia denaro": "MKD", - "dinar macedonio": "MKD", - "makedoonia denaar": "MKD", - "makedonian denaari": "MKD", - "denar macedone": "MKD", - "denar makedonia utara": "MKD", - "denaro macedone": "MKD", - "マケドニア・ディナール": "MKD", - "데나르": "MKD", - "denaras": "MKD", - "noord macedonische denar": "MKD", - "denar da macedónia": "MKD", - "denar da macedônia": "MKD", - "denar macedónio": "MKD", - "denar macedônio": "MKD", - "dinar da macedónia": "MKD", - "dinar da macedônia": "MKD", - "dinar macedônio": "MKD", - "валюта республики македонии": "MKD", - "macedónsky dinár": "MKD", - "денари": "MKD", - "மாக்கடோனிய தெனார்": "MKD", - "மாக்கடோனியன் டெனார்": "MKD", - "makedon denarı": "MKD", - "македонський динар": "MKD", - "DEN": "MKD", - "K": [ - "ZMW", - "PGK", - "MMK" - ], - "kyat birmà": "MMK", - "mmk": "MMK", - "burmese kyat": "MMK", - "k": [ - "PGK", - "MWK", - "MMK" - ], - "ks": "MMK", - "kyat myanmar": "MMK", - "pyas": "MMK", - "미얀마 차트": "MMK", - "미얀마 찻": "MMK", - "짯": "MMK", - "챠트": "MMK", - "бирманский кьят": "MMK", - "валюта мьянмы": "MMK", - "кейат": "MMK", - "къят": "MMK", - "мьянманский кьят": "MMK", - "мьянманский чат": "MMK", - "мијанмарски кјат": "MMK", - "мјанмарски киат": "MMK", - "burmesisk kyat": "MMK", - "buk": "MMK", - "จั๊ด": "MMK", - "จั๊ต": "MMK", - "myanmar kyatı": "MMK", - "kyat myanma": "MMK", - "توغروغ": "MNT", - "₮": "MNT", - "tugrug": "MNT", - "tögrök": "MNT", - "tögrög mongolia": "MNT", - "mongolischer tögrög": "MNT", - "möngö": "MNT", - "togrog": "MNT", - "tugrig": "MNT", - "mnt": "MNT", - "mongolian tughrik": "MNT", - "tughrik": "MNT", - "tögrög mongol": "MNT", - "төгрөг": "MNT", - "טוגריק": "MNT", - "מטבע מונגוליה": "MNT", - "mongolski tögrög": "MNT", - "togrog mongolia": "MNT", - "トゥグリク": "MNT", - "ドグログ": "MNT", - "몽골투그릭": "MNT", - "투그릭": "MNT", - "tiugrikas": "MNT", - "монгольский тугрик": "MNT", - "валюта монголии": "MNT", - "mongolisk tögrög": "MNT", - "MOP$": "MOP", - "macao pataca": "MOP", - "mop": "MOP", - "mop$": "MOP", - "patako": "MOP", - "파타카": "MOP", - "patacas": "MOP", - "валюта макао": "MOP", - "макаонска патака": "MOP", - "macaoisk pataca": "MOP", - "аоминська патака": "MOP", - "pataca macau": "MOP", - "أوقية": "MRU", - "UM": "MRU", - "أوقيه موريتانيه": "MRU", - "الأوقية الموريتانية": "MRU", - "العملة الموريتانية": "MRU", - "uqiya": "MRU", - "mru": "MRU", - "um": "MRU", - "uguijao": "MRU", - "ĥumo": "MRU", - "ouguiya mauritanien": "MRU", - "mauretanijska ouguja": "MRU", - "mauritanijska ouguja": "MRU", - "mauritanijska uguija": "MRU", - "ouguiya della mauritana": "MRU", - "モーリタニア・ウギア": "MRU", - "우기야": "MRU", - "mauritānijas oguja": "MRU", - "oguja": "MRU", - "uguia mauritana": "MRU", - "мавританская угия": "MRU", - "валюта мавритании": "MRU", - "мауританска угља": "MRU", - "mauretansk ouguiya": "MRU", - "moritanya ouguiyası": "MRU", - "moritanya ugiyası": "MRU", - "ougiya": "MRU", - "روبي موريشي": "MUR", - "mur": "MUR", - "mauritisk rupee": "MUR", - "mauritius rupee": "MUR", - "rupia mauricia": "MUR", - "rupia mauriciense": "MUR", - "רופי מאוריציני": "MUR", - "rupee mauritus": "MUR", - "mauritiaanse rupee": "MUR", - "ropia de maurici": "MUR", - "روفيه": "MVR", - "MRF": "MVR", - "rupia de maldives": "MVR", - "mvr": "MVR", - "maldivisk rufiyaa": "MVR", - "laari": "MVR", - "malediven rupie": "MVR", - "rupia maldiva": "MVR", - "maldív szigeteki rúfia": "MVR", - "rufiyaa maladewa": "MVR", - "ルフィア": "MVR", - "ルフィヤー": "MVR", - "루피야": "MVR", - "rufija": "MVR", - "rópia de las maldivas": "MVR", - "валюта мальдив": "MVR", - "мальдивская рупия": "MVR", - "руфия": "MVR", - "малдивска рупија": "MVR", - "rf.": "MVR", - "maldiv rufiyaası": "MVR", - "ރ": "MVR", - "Rf": "MVR", - "كواشا": "MWK", - "MK": "MWK", - "malawská kvača": "MWK", - "tambala": "MWK", - "kwacha": [ - "ZMW", - "MWK" - ], - "mwk": "MWK", - "kwacha malaui": "MWK", - "kwacha malawite": "MWK", - "kwacha del malawi": "MWK", - "말라위콰차": "MWK", - "malawiaanse kwacha": "MWK", - "kwacha do malaui": "MWK", - "kwacha do malauí": "MWK", - "kwacha do malavi": "MWK", - "kwacha do malawi": "MWK", - "kwacha do malávi": "MWK", - "kwacha malauiana": "MWK", - "kwacha malauiano": "MWK", - "kwacha malaviana": "MWK", - "kwacha malawiana": "MWK", - "валюта малави": "MWK", - "квача": [ - "ZMW", - "MWK" - ], - "malavi kwachası": "MWK", - "البيزو المكسيكي": "MXN", - "mxn": "MXN", - "pes mexicà": "MXN", - "peso de mèxic": "MXN", - "mx$": "MXN", - "mexican centavo": "MXN", - "mexican new peso": "MXN", - "mexican nuevo peso": "MXN", - "currency of mexico": "MXN", - "n$": [ - "NAD", - "MXN" - ], - "peso de méjico": "MXN", - "peso de méxico": "MXN", - "peso mejicano": "MXN", - "mehhiko peeso": "MXN", - "mexikar peso": "MXN", - "פזו מקסיקני": "MXN", - "meksički peso": "MXN", - "mexikói pezó": "MXN", - "メキシコの通貨": "MXN", - "墨ペソ": "MXN", - "메히꼬 페소": "MXN", - "мексиканский песо": "MXN", - "мексиканское новое песо": "MXN", - "песо мексиканское": "MXN", - "mehiški peso": "MXN", - "нови мексички пезос": "MXN", - "нови мексички песо": "MXN", - "mxp": "MXN", - "unidad de inversion": "MXV", - "unidad de inversión": "MXV", - "unidades de inversion": "MXV", - "メキシコ投資単位": "MXV", - "RM": "MYR", - "رينغيت": "MYR", - "myr": "MYR", - "rm": "MYR", - "ringgit malaysia": "MYR", - "dolar malasio": "MYR", - "dólar malasio": "MYR", - "רינגיט מלזי": "MYR", - "ringgit malese": "MYR", - "ringgit malaio": "MYR", - "malezijski ringgit": "MYR", - "malaysisk ringgit": "MYR", - "малайзійський ринґіт": "MYR", - "متكال": "MZN", - "MT": "MZN", - "mozambický metical": "MZN", - "metical mosambic": "MZN", - "mzm": "MZN", - "meticais": "MZN", - "metikalo": "MZN", - "metical mozambiqueno": "MZN", - "metical mozambicain": "MZN", - "מטיקל מוזמביני": "MZN", - "mozambijski metikal": "MZN", - "mozambijski metical": "MZN", - "metical del mozambico": "MZN", - "モザンビーク・メティカル": "MZN", - "메티칼": "MZN", - "metikalas": "MZN", - "mozambiko metikalas": "MZN", - "mozambiko metikalis": "MZN", - "mzn": "MZN", - "mozambikas metikals": "MZN", - "oude metical": "MZN", - "metical da nova família": "MZN", - "metical de moçambique": "MZN", - "metical moçambicano": "MZN", - "валюта мозамбика": "MZN", - "метикал": "MZN", - "moçambikisk metical": "MZN", - "mt": "MZN", - "N$": "NAD", - "намибски долар": "NAD", - "dòlar de namíbia": "NAD", - "dòlar namibi": "NAD", - "namibischer dollar": "NAD", - "nad": "NAD", - "dolar de namibia": "NAD", - "dolar namibio": "NAD", - "dólar de namibia": "NAD", - "מטבע נמיביה": "NAD", - "dollaro della namibia": "NAD", - "ナミビアドル": "NAD", - "나미비아달러": "NAD", - "dólar namibiano": "NAD", - "dólar namíbio": "NAD", - "намибийский доллар": "NAD", - "намібський долар": "NAD", - "₦": "NGN", - "نايرا": "NGN", - "نيرا": "NGN", - "نيرة": "NGN", - "نيره": "NGN", - "ngn": "NGN", - "najro": "NGN", - "niĝera najro": "NGN", - "naira nigérian": "NGN", - "ナイジェリア・ナイラ": "NGN", - "나이라": "NGN", - "나이지리아나이라": "NGN", - "naira nigeriano": "NGN", - "нигерийская найра": "NGN", - "валюта нигерии": "NGN", - "нигерийский найр": "NGN", - "nigérijská naira": "NGN", - "наира": "NGN", - "nigeriansk naira": "NGN", - "كوردوبا نيكاراجوي": "NIO", - "córdoba nicaragüenc": "NIO", - "córdoba nicaragüenca": "NIO", - "nicaraguanischer córdoba": "NIO", - "mariana montserrat": "NIO", - "nic": "NIO", - "nio": "NIO", - "nicaraguan cordoba": "NIO", - "cordoba nicaraguense": "NIO", - "cordoba nicaragüense": "NIO", - "córdoba nicaragüense": "NIO", - "cordoba nicaraguayen": "NIO", - "córdoba nicaraguayen": "NIO", - "córdoba nicaraguéen": "NIO", - "nikaragvanska córdoba": "NIO", - "100ドル紙幣": "NIO", - "コルドバ・オロ": "NIO", - "nicaraguaanse cordoba": "NIO", - "córdoba ouro": "NIO", - "córdoba nicaraguano": "NIO", - "валюта никарагуа": "NIO", - "золотая кордоба": "NIO", - "кордоба": "NIO", - "кордобас": "NIO", - "новая никарагуанская кордоба": "NIO", - "никарагванска златна кордоба": "NIO", - "никарагванска кордоба оро": "NIO", - "nicaraguansk córdoba": "NIO", - "nikaragua kordobası": "NIO", - "нікарагуанська кордова": "NIO", - "nok": "NOK", - "كرونه نروجية": "NOK", - "corona de noruega": "NOK", - "krone norwy": "NOK", - "norsk krone": "NOK", - "krone in norwegen": "NOK", - "norvegia krono": "NOK", - "couronne norvegienne": "NOK", - "כתר נורבגי": "NOK", - "קרונה נורבגית": "NOK", - "corona norvegian": "NOK", - "corone norvegesi": "NOK", - "ノルウェーの通貨": "NOK", - "ノルウェークローネ": "NOK", - "noorse kronen": "NOK", - "corona norvegiana": "NOK", - "coroa da noruega": "NOK", - "валюта норвегии": "NOK", - "валюта шпицбергена": "NOK", - "валюта ян майена": "NOK", - "norska kronor": "NOK", - "N₨": "NPR", - "روبي نيبالي": "NPR", - "rupia de nepal": "NPR", - "rupia del nepal": "NPR", - "npr": "NPR", - "nepalesisk rupee": "NPR", - "karod": "NPR", - "rupia nepali": "NPR", - "roupie du népal": "NPR", - "rupee nepali": "NPR", - "നേപ്പാളീസ് രൂപ": "NPR", - "നേപ്പാൾ രൂപ": "NPR", - "rupia do nepal": "NPR", - "валюта непала": "NPR", - "rupie": [ - "PKR", - "NPR" - ], - "रू": "NPR", - "รูปี": "NPR", - "NZ$": "NZD", - "الدولار النيوزيلندي": "NZD", - "دولار نيوزيلندي nzd": "NZD", - "dòlar de nova zelanda": "NZD", - "dòlars neozelandesos": "NZD", - "nzd": "NZD", - "newzealandsk dollar": "NZD", - "kiwi dollar": "NZD", - "nz$": "NZD", - "neuseeländischer dollar": "NZD", - "nov zelanda dolaro": "NZD", - "dolar de nueva zelanda": "NZD", - "dolar neocelandes": "NZD", - "dolar neocelandés": "NZD", - "dolar neozelandes": "NZD", - "dolar neozelandés": "NZD", - "dolar neozélandes": "NZD", - "dolares neozelandeses": "NZD", - "dólar neocelandes": "NZD", - "dólar neozelandes": "NZD", - "dólares neozelandeses": "NZD", - "dólar de nueva zelanda": "NZD", - "uus meremaa dollar": "NZD", - "zeelanda berriko dolar": "NZD", - "zeelandaberritar dolarra": "NZD", - "zeelandako dolarra": "NZD", - "dollar de nouvelle zélande": "NZD", - "dollar néozélandais": "NZD", - "דולר ניו זילנד": "NZD", - "$nz": "NZD", - "dollar selandia baru": "NZD", - "nzドル": "NZD", - "ニュージーランドドル": "NZD", - "dólar da nova zelândia": "NZD", - "dólar neo zelandês": "NZD", - "dolarul neozeelandez": "NZD", - "валюта ниуэ": "NZD", - "валюта новой зеландии": "NZD", - "валюта токелау": "NZD", - "ريال عُماني": "OMR", - "ر.ع.": "OMR", - "rial d'oman": "OMR", - "ománský rial": "OMR", - "ománský riál": "OMR", - "baiza": "OMR", - "rial omani": "OMR", - "rial dell'oman": "OMR", - "オマーンの通貨": "OMR", - "オマーン・リヤル": "OMR", - "omanitische rial": "OMR", - "rial de omã": "OMR", - "rial de omão": "OMR", - "rial do omã": "OMR", - "rial do omão": "OMR", - "rial omaniano": "OMR", - "валюта омана": "OMR", - "оманский реал": "OMR", - "омански риал": "OMR", - "baisa": "OMR", - "omr": "OMR", - "ஓமானிய ரியால்": "OMR", - "بالبوا": "PAB", - "B/.": "PAB", - "панамски балбоа": "PAB", - "pab": "PAB", - "balboo": "PAB", - "panama balboao": "PAB", - "balboa panameno": "PAB", - "balboa panameño": "PAB", - "balboa panameen": "PAB", - "balboa panaméen": "PAB", - "מטבע פנמה": "PAB", - "balboja": "PAB", - "бальбао": "PAB", - "бальбоа": "PAB", - "балбоа": "PAB", - "панамска златна балбоа": "PAB", - "panamansk balboa": "PAB", - "b/": "PAB", - "панамська бальбоа": "PAB", - "سول بيروفي جديد": "PEN", - "سول الجديد": "PEN", - "S/.": "PEN", - "nou sol": "PEN", - "sol d'or": "PEN", - "sol de oro": "PEN", - "peruánský sol": "PEN", - "nový sol": "PEN", - "nueovo sol": "PEN", - "ny sol": "PEN", - "neuer sol": "PEN", - "peruanischer nuevo sol": "PEN", - "pen": "PEN", - "nova suno": "PEN", - "nuevo sol peruano": "PEN", - "s/": "PEN", - "s/.": "PEN", - "sol peruano": "PEN", - "perun nuevo sol": "PEN", - "nouveau sol": "PEN", - "perui új sol": "PEN", - "nuevo sol peruviano": "PEN", - "nuovo sol": "PEN", - "누에보 솔": "PEN", - "페루 누에보 솔": "PEN", - "sol novo": "PEN", - "moeda peruana": "PEN", - "novo sol": "PEN", - "novo sol peruano": "PEN", - "валюта перу": "PEN", - "новый соль": "PEN", - "соль": "PEN", - "нови сол": "PEN", - "перуански нуево сол": "PEN", - "peruansk sol": "PEN", - "peru nueva solü": "PEN", - "новий соль": "PEN", - "новий перуанський соль": "PEN", - "pgk": "PGK", - "קינה": "PGK", - "パプアニューギニア・キナ": "PGK", - "파푸아 뉴기니 키나": "PGK", - "파푸아뉴기니키나": "PGK", - "papoea nieuw guinese kina": "PGK", - "kina papuásia": "PGK", - "toea": "PGK", - "валюта папуа — новой гвинеи": "PGK", - "новогвинејска кина": "PGK", - "papuansk kina": "PGK", - "валюта папуа — нової гвінеї": "PGK", - "بيزو فلبيني": "PHP", - "₱": "PHP", - "بيسو": "PHP", - "php": "PHP", - "philippine piso": "PHP", - "piso": "PHP", - "peso de filipinas": "PHP", - "פסו": "PHP", - "pezo": "PHP", - "페소": "PHP", - "pesas": "PHP", - "peso de las filipinas": "PHP", - "ਪੀਸੋ": "PHP", - "piso filipino": "PHP", - "filipinski peso": "PHP", - "пезо": "PHP", - "பெசோ": "PHP", - "pesosu": "PHP", - "rupia de pakistan": "PKR", - "rupia del pakistan": "PKR", - "pakistanske rupee": "PKR", - "pkr": "PKR", - "pakistansk rupee": "PKR", - "rupia pakistani": "PKR", - "rupia de pakistán": "PKR", - "רופי פקיסטני ": "PKR", - "pakistaanse rupee": "PKR", - "валюта пакистана": "PKR", - "zł": [ - "PLZ", - "PLN" - ], - "زلوتي": [ - "PLZ", - "PLN" - ], - "полска злотаполска злота": [ - "PLZ", - "PLN" - ], - "zloty": [ - "PLZ", - "PLN" - ], - "zloty polonès": [ - "PLZ", - "PLN" - ], - "złoty polonès": [ - "PLZ", - "PLN" - ], - "pln": [ - "PLZ", - "PLN" - ], - "polský zlotý": [ - "PLZ", - "PLN" - ], - "polský złoty": [ - "PLZ", - "PLN" - ], - "polsk zloty": [ - "PLZ", - "PLN" - ], - "polsk złoty": [ - "PLZ", - "PLN" - ], - "polnischer zloty": [ - "PLZ", - "PLN" - ], - "polnischer złoty": [ - "PLZ", - "PLN" - ], - "zlote": [ - "PLZ", - "PLN" - ], - "zloti": [ - "PLZ", - "PLN" - ], - "zlotych": [ - "PLZ", - "PLN" - ], - "złote": [ - "PLZ", - "PLN" - ], - "złotych": [ - "PLZ", - "PLN" - ], - "polish zloty": [ - "PLZ", - "PLN" - ], - "pola zloto": [ - "PLZ", - "PLN" - ], - "zloty polaco": [ - "PLZ", - "PLN" - ], - "zlott": [ - "PLZ", - "PLN" - ], - "puolan złoty": [ - "PLZ", - "PLN" - ], - "zloty polonais": [ - "PLZ", - "PLN" - ], - "złoty polonais": [ - "PLZ", - "PLN" - ], - "זלוטי פולני": [ - "PLZ", - "PLN" - ], - "poljski zloti": [ - "PLZ", - "PLN" - ], - "zloty polonese": [ - "PLZ", - "PLN" - ], - "zloty polandia": [ - "PLZ", - "PLN" - ], - "złoty polandia": [ - "PLZ", - "PLN" - ], - "złoty polacco": [ - "PLZ", - "PLN" - ], - "zloty polacco": [ - "PLZ", - "PLN" - ], - "zl": [ - "PLZ", - "PLN" - ], - "ズオチ": [ - "PLZ", - "PLN" - ], - "ズロチ": [ - "PLZ", - "PLN" - ], - "ポーランド・ズウォティ": [ - "PLZ", - "PLN" - ], - "즈워티": [ - "PLZ", - "PLN" - ], - "즐로티": [ - "PLZ", - "PLN" - ], - "폴란드 즐로티": [ - "PLZ", - "PLN" - ], - "poolse zloty": [ - "PLZ", - "PLN" - ], - "polski złoty": [ - "PLZ", - "PLN" - ], - "zlóti": [ - "PLZ", - "PLN" - ], - "zlóti polaco": [ - "PLZ", - "PLN" - ], - "gros": [ - "PLZ", - "PLN" - ], - "grosz": [ - "PLZ", - "PLN" - ], - "валюта польши": [ - "PLZ", - "PLN" - ], - "злотый": [ - "PLZ", - "PLN" - ], - "злот": [ - "PLZ", - "PLN" - ], - "போலந்திய ஸ்வாட்டெ": [ - "PLZ", - "PLN" - ], - "போலந்து ஸ்வாட்டே": [ - "PLZ", - "PLN" - ], - "போலிய ஸ்வாட்டே": [ - "PLZ", - "PLN" - ], - "ซวอตือโปแลนด์": [ - "PLZ", - "PLN" - ], - "польський злотий": [ - "PLZ", - "PLN" - ], - "غواراني": "PYG", - "₲": "PYG", - "paraguayský guarani": "PYG", - "pyg": "PYG", - "paraguayan guarani": "PYG", - "guaraní paraguayo": "PYG", - "guarani paraguayen": "PYG", - "guaraní paraguayen": "PYG", - "paragvajski guaraní": "PYG", - "guarani paraguaiano": "PYG", - "파라과이과라니": "PYG", - "paragvajaus valiuta": "PYG", - "paraguayaanse guaraní": "PYG", - "guarani paraguaio": "PYG", - "валюта парагвая": "PYG", - "гварани": "PYG", - "гуарани": "PYG", - "гуварани": "PYG", - "paraguajské guaraní": "PYG", - "paraguayansk guarani": "PYG", - "paraguay guaranisi": "PYG", - "QR": "QAR", - "qatar riyal": "QAR", - "riyal catari": "QAR", - "rial kataru": "QAR", - "qar": "QAR", - "ر.ق": "QAR", - "لو روماني": "RON", - "lej": "RON", - "لي روماني": "RON", - "румънска леа": "RON", - "румънски леи": "RON", - "rumunský leu": "RON", - "rumænsk leu": "RON", - "rumänischer ban": "RON", - "rumänischer lei": "RON", - "ron": "RON", - "rumana leŭo": "RON", - "lei roumaines": "RON", - "novo leu": "RON", - "לֵיי רומני": "RON", - "rumunjski leu": "RON", - "leu romanian": "RON", - "leu rumeno": "RON", - "ルーマニア・レイ": "RON", - "rol": "RON", - "leu da roménia": "RON", - "leu da romênia": "RON", - "roni": "RON", - "lei românești": "RON", - "leul românesc": "RON", - "валюта румынии": "RON", - "лей румынский": "RON", - "новый лей": "RON", - "новый румынский лей": "RON", - "старый румынский лей": "RON", - "romunski lej": "RON", - "rumänska lei": "RON", - "ருமேனிய லியு": "RON", - "ரொமேனிய லியூ": "RON", - "din": "RSD", - "dinar de sèrbia": "RSD", - "rsd": "RSD", - "serbia dinar": "RSD", - "dinar u srbiji": "RSD", - "denar da sérvia": "RSD", - "denar sérvio": "RSD", - "dinar da sérvia": "RSD", - "dinar sârb": "RSD", - "валюта сербии": "RSD", - "сербские динары": "RSD", - "динар у србији": "RSD", - "csd": "RSD", - "din.": "RSD", - "செர்பியன் தினார்": "RSD", - "сербські динари": "RSD", - "дин": "RSD", - "₽": "RUB", - "الروبل": "RUB", - "الروبل الروسي": "RUB", - "روبل": "RUB", - "rub": "RUB", - "russisk rubel": "RUB", - "rubel": "RUB", - "руб": "RUB", - "ruble": "RUB", - "rusa rublo": "RUB", - "vene rubla": "RUB", - "errusiar errublo": "RUB", - "kopeekka": "RUB", - "neuvostoliiton rupla": "RUB", - "rur": "RUB", - "venäjän federaation rupla": "RUB", - "ruska rublja": "RUB", - "rublo russe": "RUB", - "ソビエト連邦ルーブル": "RUB", - "ロシアの通貨": "RUB", - "ロシアルーブル": "RUB", - "코페이카": "RUB", - "krievijas rubļi": "RUB", - "krievu rublis": "RUB", - "krievu rubļi": "RUB", - "kopeken": "RUB", - "rubla rusa": "RUB", - "rubla rusă": "RUB", - "rublă rusească": "RUB", - "рр": "RUB", - "рубль": "RUB", - "валюта абхазии": "RUB", - "валюта днр": "RUB", - "валюта лнр": "RUB", - "валюта россии": "RUB", - "валюта южной осетии": "RUB", - "рубль россии": "RUB", - "рубль российский": "RUB", - "ruski rubelj": "RUB", - "kopek": "RUB", - "rubler": "RUB", - "ryska rubler": "RUB", - "sovjetisk rubel": "RUB", - "ரஷ்ய ரூபிள்": "RUB", - "ruble nga": "RUB", - "rúp": "RUB", - "₣": [ - "XPF", - "RWF" - ], - "FRw": "RWF", - "franc de ruanda": "RWF", - "frw": "RWF", - "rwanda franc": "RWF", - "rwandan frank": "RWF", - "rwf": "RWF", - "franco de ruanda": "RWF", - "franco ruandes": "RWF", - "르완다프랑": "RWF", - "franco do ruanda": "RWF", - "руандийский франк": "RWF", - "валюта руанды": "RWF", - "руандский франк": "RWF", - "SR": "SAR", - "saudi rial": "SAR", - "halalas": "SAR", - "sar": "SAR", - "riyal": "SAR", - "rijalo": "SAR", - "saŭda rialo": "SAR", - "rial saoudien": "SAR", - "ryal saoudien": "SAR", - "ריאל": "SAR", - "rial saudita": "SAR", - "サウジアラビアリヤル": "SAR", - "サウジアラビア・リヤール": "SAR", - "サウジ・リアル": "SAR", - "サウジ・リヤル": "SAR", - "サウディ・リヤル": "SAR", - "사우디 리알": "SAR", - "사우디 리얄": "SAR", - "사우디아라비아 리알": "SAR", - "saoedische riyal": "SAR", - "saudi arabische riyal": "SAR", - "saudische riyal": "SAR", - "rial saudian": "SAR", - "rial da arábia saudita": "SAR", - "riyal da arábia saudita": "SAR", - "валюта саудовской аравии": "SAR", - "риал саудовской аравии": "SAR", - "риял": "SAR", - "саудовский риал": "SAR", - "saudski rial": "SAR", - "саудијски риал": "SAR", - "ر.س": "SAR", - "suudi riyali": "SAR", - "ріал": "SAR", - "dòlar de les salomó": "SBD", - "dòlar de les illes salomó": "SBD", - "dolar šalamounových ostrovů": "SBD", - "šalamounský dolar": "SBD", - "šalomounský dolar": "SBD", - "solomon dollar": "SBD", - "dolar de las islas salomon": "SBD", - "dolar de las islas salomón": "SBD", - "sbd": "SBD", - "dolar salomonense": "SBD", - "dólar salomonense": "SBD", - "dollar des iles salomon": "SBD", - "si$": "SBD", - "dollaro delle isole salomone": "SBD", - "ソロモン諸島・ドル": "SBD", - "솔로몬제도 달러": "SBD", - "솔로몬제도달러": "SBD", - "dolar de las illas salamon": "SBD", - "валюта соломоновых островов": "SBD", - "долар соломонских острва": "SBD", - "SI$": "SBD", - "SRe": "SCR", - "seychellisk rupee": "SCR", - "seychellerne rupee": "SCR", - "seychelles rupee": "SCR", - "sre": "SCR", - "rupia seychelense": "SCR", - "scr": "SCR", - "seychelle szigeteki rúpia": "SCR", - "セイシェル・ルピー": "SCR", - "seychelse roepia": "SCR", - "seychelse rupee": "SCR", - "валюта сейшел": "SCR", - "валюта сейшельских островов": "SCR", - "sr": "SCR", - "الجنيه السودانى": "SDG", - "ج.س": "SDG", - "الدينار السودانى": "SDG", - "دينار سوداني": "SDG", - "суданска лира": "SDG", - "lliura del sudan": "SDG", - "punt swdan": "SDG", - "sudansk pund": "SDG", - "sdg": "SDG", - "libra de sudán": "SDG", - "libra del sudán": "SDG", - "dinar soudanais": "SDG", - "לירה סודאנית": "SDG", - "soedanese pond": "SDG", - "валюта судана": "SDG", - "sdd": "SDG", - "sudanesisk pund": "SDG", - "ج.س.": "SDG", - "sud£": "SDG", - "كرونه سويدية": "SEK", - "corona de suècia": "SEK", - "sek": "SEK", - "svensk krone": "SEK", - "svenske kroner": "SEK", - "kronor": "SEK", - "schwedenkrone": "SEK", - "svedia krono": "SEK", - "corona": "SEK", - "couronne suedoise": "SEK", - "coroa sueca svensk krona": "SEK", - "כתר שבדי": "SEK", - "スウェーデン・クローネ": "SEK", - "zweedse kronen": "SEK", - "coroa da suécia": "SEK", - "валюта аландских островов": "SEK", - "валюта швеции": "SEK", - "крона швеции": "SEK", - "svenska kronor": "SEK", - "svenska sedlar": "SEK", - "சுவீடன் குரோணர்": "SEK", - "S$": "SGD", - "s$": "SGD", - "sgd": "SGD", - "singaporeansk dollar": "SGD", - "singaporeanske dollars": "SGD", - "ringgit singapore": "SGD", - "dolar de singapur": "SGD", - "dollar singapourien": "SGD", - "מטבע סינגפור": "SGD", - "ringgit singapura": "SGD", - "シンガポールの通貨": "SGD", - "シンガポール・ドル": "SGD", - "星ドル": "SGD", - "dolar de singapor": "SGD", - "dólar de cingapura": "SGD", - "dólar singapurense": "SGD", - "валюта сингапура": "SGD", - "сингапуршки долар": "SGD", - "சிங்கப்பூர் டாலர்": "SGD", - "dollar singapore": "SGD", - "đôla singapore": "SGD", - "جنيه سانت هيلينا": "SHP", - "lliura de saint helena": "SHP", - "sankt helena pundo": "SHP", - "sent helena pundo": "SHP", - "senthelena pundo": "SHP", - "livre de sainte helene": "SHP", - "sterlina di sant’elena": "SHP", - "libra santa helenense": "SHP", - "фунт острова святой елены": "SHP", - "shp": "SHP", - "sh£": "SHP", - "Le": [ - "SLL", - "SLE" - ], - "sle": [ - "SLL", - "SLE" - ], - "sll": [ - "SLL", - "SLE" - ], - "leone sierra léonais": [ - "SLL", - "SLE" - ], - "leone della sierra leone": [ - "SLL", - "SLE" - ], - "シエラレオネの通貨": [ - "SLL", - "SLE" - ], - "シエラレオネ・レオン": [ - "SLL", - "SLE" - ], - "レオネ": [ - "SLL", - "SLE" - ], - "시에라리온 레온": [ - "SLL", - "SLE" - ], - "시에라리온레온": [ - "SLL", - "SLE" - ], - "leone serra leonino": [ - "SLL", - "SLE" - ], - "леоне сьерра леоне": [ - "SLL", - "SLE" - ], - "sierraleonski leone": [ - "SLL", - "SLE" - ], - "сијералеонске леоне": [ - "SLL", - "SLE" - ], - "sierraleonsk leone": [ - "SLL", - "SLE" - ], - "Sh.So.": "SOS", - "xíling de somàlia": "SOS", - "currency of somalia": "SOS", - "sh.so.": "SOS", - "sos": "SOS", - "sosh": "SOS", - "chelin": [ - "UGX", - "TZS", - "SOS" - ], - "chelin de somalia": "SOS", - "chelin somali": "SOS", - "chelín": [ - "UGX", - "TZS", - "SOS" - ], - "chelín de somalia": "SOS", - "somalian shillinki": "SOS", - "somalian sillinki": "SOS", - "shilling somali": "SOS", - "szomáli shilling": "SOS", - "ソマリアシリング": "SOS", - "валюта сомали": "SOS", - "somalski šiling": "SOS", - "сомалијски шилинг": "SOS", - "srd": "SRD", - "surinam dollar": "SRD", - "dolar de surinam": "SRD", - "dolar surinames": "SRD", - "dolar surinamés": "SRD", - "dólar de surinam": "SRD", - "dólar surinames": "SRD", - "dollar du surinam": "SRD", - "dollar surinamien": "SRD", - "sr$": "SRD", - "sur$": "SRD", - "dollaro del suriname": "SRD", - "スリナムドル": "SRD", - "dólar surinamense": "SRD", - "dólar surinamês": "SRD", - "валюта суринама": "SRD", - "суринамски гилдер": "SRD", - "суринамски гулден": "SRD", - "Db": [ - "STN", - "SSP" - ], - "lliura del sudan del sud": "SSP", - "südsudan pfund": "SSP", - "südsudan pound": "SSP", - "sud sudana pundo": "SSP", - "libra de sudan del sur": "SSP", - "libra de sudán del sur": "SSP", - "פאונד דרום סודאני": "SSP", - "sterlina sud sudanese": "SSP", - "zuid soedanese pond": "SSP", - "liura sodanesa": "SSP", - "funt południowego sudanu": "SSP", - "валюта южного судана": "SSP", - "фунт южного судана": "SSP", - "южно суданский фунт": "SSP", - "ssp": "SSP", - "ปอนด์เซาท์ซูดาน": "SSP", - "دوبرا": "STN", - "دوبرا ساو تومية وبرينسيبية": "STN", - "saotomea dobro": "STN", - "sao tomea dobro": "STN", - "sao tomeo kaj principea dobra": "STN", - "dobra santoméen": "STN", - "דוברה": "STN", - "dobra san tomea i prinsipea": "STN", - "dobra svetog tome i principa": "STN", - "dobra svetog tome i prinsipa": "STN", - "dobra svetog tome i prinsipea": "STN", - "dobra svetoga tome i principa": "STN", - "dobra svetoga tome i prinsipa": "STN", - "dobra svetoga tome i prinsipea": "STN", - "santomska dobra": "STN", - "saotomska dobra": "STN", - "dobra di sao tomé e principe": "STN", - "サントメ・プリンシペ・ドブラ": "STN", - "dobra saotomejska": "STN", - "stn": "STN", - "валюта сан томе и принсипи": "STN", - "добра": "STN", - "saotomeansk dobra": "STN", - "db": "STN", - "الليرة السورية": "SYP", - "syr£": "SYP", - "الليره السورية": "SYP", - "ليرات سورية": "SYP", - "ليره سوريه": "SYP", - "সিরিয়ান পাউন্ড": "SYP", - "lira de síria": "SYP", - "lira síria": "SYP", - "lliura de síria": "SYP", - "syp": "SYP", - "syrisches pfund": "SYP", - "ls": "SYP", - "syrian lira": "SYP", - "dolar sirio": "SYP", - "시리아 리라": "SYP", - "libra da síria": "SYP", - "валюта сирии": "SYP", - "sirijska lira": "SYP", - "sirijski funt": "SYP", - "sirska lira": "SYP", - "syrisk lira": "SYP", - "£s": "SYP", - "LS": "SYP", - "E": "SZL", - "ليلانغيني": "SZL", - "emalangeni": "SZL", - "eswatini lilangeni": "SZL", - "swaziland lilangeni": "SZL", - "lilangeni de suazilandia": "SZL", - "lilangeni swazilandais": "SZL", - "svazijski lilangeni": "SZL", - "szl": "SZL", - "エマランゲニ": "SZL", - "スワジ・リランジェニ": "SZL", - "リランジェニ": "SZL", - "릴랑게니": "SZL", - "스와질란드 릴랑게니": "SZL", - "스와질란드릴랑게니": "SZL", - "에말란게니": "SZL", - "에말랑게니": "SZL", - "에스와티니릴랑게니": "SZL", - "lilangeni suázi": "SZL", - "свазилендский лилангени": "SZL", - "валюта свазиленда": "SZL", - "свазилендски лилангени": "SZL", - "лилиангени": "SZL", - "свазиландски лилангени": "SZL", - "swazisk lilangeni": "SZL", - "ліланджені": "SZL", - "lilangeni swaziland": "SZL", - "฿": "THB", - "البات": "THB", - "بات": "THB", - "بات تايلندي": "THB", - "باخت": "THB", - "tical": "THB", - "thailandsk baht": "THB", - "fuang": "THB", - "fyän": "THB", - "salyn": "THB", - "salüng": "THB", - "tschang": "THB", - "tömling": "THB", - "xang": "THB", - "siamese tical": "THB", - "thb": "THB", - "bahto": "THB", - "satango": "THB", - "taja bahto": "THB", - "tikalo": "THB", - "baht tailandes": "THB", - "bhat": "THB", - "tai baat": "THB", - "thaimaan baht": "THB", - "bath": "THB", - "タイの通貨": "THB", - "タイ・バーツ": "THB", - "바트": "THB", - "바트화": "THB", - "밧": "THB", - "밧화": "THB", - "사땅": "THB", - "타이 바트": "THB", - "타이 밧": "THB", - "태국 바트": "THB", - "batas": "THB", - "taizemes bats": "THB", - "bati": "THB", - "satang": "THB", - "baht tailandês": "THB", - "валюта таиланда": "THB", - "сиамский бат": "THB", - "таиландский бат": "THB", - "тајландски бахт": "THB", - "เงินบาท": "THB", - "tayland'ın para birimi": "THB", - "бат": "THB", - "baht thái": "THB", - "baht thái lan": "THB", - "bạt thái": "THB", - "bạt thái lan": "THB", - "SM": "TJS", - "ساماني": "TJS", - "سامانی طاجيكي": "TJS", - "سمني": "TJS", - "سموني طاجيكي": "TJS", - "سمونی طاجيكي": "TJS", - "tjs": "TJS", - "tajik somoni": "TJS", - "currency of tajikistan": "TJS", - "somoni taxico": "TJS", - "סומוני טג'קיסטני": "TJS", - "somoni tagico": "TJS", - "タジキスタン・ソモニ": "TJS", - "소모니": "TJS", - "타지키스탄소모니": "TJS", - "tadžikijos somonis": "TJS", - "somoni tadżycki": "TJS", - "somoni tadjic": "TJS", - "таджикский сомони": "TJS", - "валюта таджикистана": "TJS", - "таџикистанска рубља": "TJS", - "tadzjikistansk somoni": "TJS", - "сомоні": "TJS", - "TMT": "TMT", - "туркменски манат": "TMT", - "manat de turkmenistan": "TMT", - "manat del turkmenistan": "TMT", - "teňňe": "TMT", - "turkmenistan new manat": "TMT", - "tmt": "TMT", - "turkmenistani new manat": "TMT", - "manat turkmene": "TMT", - "manat de turkmenistán": "TMT", - "מנאט טורקמני חדש": "TMT", - "tmm": "TMT", - "トルクメン・マナト": "TMT", - "투르크메니스탄마나트": "TMT", - "turkmėnistano manatas": "TMT", - "manat turcmèn": "TMT", - "manate do turcomenistão": "TMT", - "manatul turkmen": "TMT", - "валюта туркмении": "TMT", - "новый манат": "TMT", - "новый туркменский манат": "TMT", - "туркменистанский манат": "TMT", - "туркменский новый манат": "TMT", - "тукменистански манат": "TMT", - "t": "TMT", - "الدينار التونسي": "TND", - "DT": "TND", - "دينار التونسي": "TND", - "dinar de tunísia": "TND", - "dinar tunisiaidd": "TND", - "millime": "TND", - "tunis dinar": "TND", - "tnd": "TND", - "dinar de tunez": "TND", - "dinar de túnez": "TND", - "tuniški dinar": "TND", - "denar da tunísia": "TND", - "denar tunisiano": "TND", - "denar tunisino": "TND", - "dinar da tunísia": "TND", - "dinar tunisino": "TND", - "валюта туниса": "TND", - "тунижански динар": "TND", - "د.ت": "TND", - "T$": "TOP", - "بانجا تونجي": "TOP", - "بانجا": "TOP", - "pa‘anga": "TOP", - "pa’anga": "TOP", - "tonžská pa'anga": "TOP", - "tonžská paanga": "TOP", - "paanga": "TOP", - "t$": "TOP", - "tonga dollar": "TOP", - "pa anga": "TOP", - "tonga pa`anga": "TOP", - "tonga paʻanga": "TOP", - "tongan pa`anga": "TOP", - "dolar tongano": "TOP", - "dólar tongano": "TOP", - "pa'anga tongana": "TOP", - "פאנגה": "TOP", - "פנגה טונגית": "TOP", - "tongaška pa’anga": "TOP", - "tongai pa'anga": "TOP", - "tongai pa’anga": "TOP", - "tongan pa'anga": "TOP", - "pa'anga tongano": "TOP", - "pa'anga di tonga": "TOP", - "パ・アンガ": "TOP", - "トンガ・パ・アンガ": "TOP", - "통가 파앙가": "TOP", - "파앙가": "TOP", - "팡가": "TOP", - "tongos pa'anga": "TOP", - "paʻanga tonganesa": "TOP", - "тонганская паанга": "TOP", - "валюта тонга": "TOP", - "доллар тонги": "TOP", - "сенити": "TOP", - "тонганский доллар": "TOP", - "панга": "TOP", - "tongansk pa'anga": "TOP", - "top": "TOP", - "พาแองกา": "TOP", - "₺": "TRY", - "ليرة تركية جديدة": "TRY", - "lira de turquia": "TRY", - "lliura de turquia": "TRY", - "lliura turca": "TRY", - "nova lira de turquia": "TRY", - "nova lira turca": "TRY", - "nova lliura de turquia": "TRY", - "nova lliura turca": "TRY", - "nová turecká lira": "TRY", - "kurus": "TRY", - "kuruş": "TRY", - "neue türkische lira": "TRY", - "ytl": "TRY", - "yeni kuruş": "TRY", - "yeni türk lirası": "TRY", - "trl": "TRY", - "try": "TRY", - "nova turka liro": "TRY", - "nova turkia liro": "TRY", - "turkia liro": "TRY", - "nueva lira turca": "TRY", - "lire turque": "TRY", - "livres turques": "TRY", - "nouvelle livre turque": "TRY", - "lira turc": "TRY", - "トルコ・リラ": "TRY", - "터키 리라": "TRY", - "신 터키 리라": "TRY", - "터키 신 리라": "TRY", - "turcijas lira": "TRY", - "lira baru turki": "TRY", - "lira turki baru": "TRY", - "lira da turquia": "TRY", - "liras turcas": "TRY", - "nova libra turca": "TRY", - "lira turcească": "TRY", - "liră turcă": "TRY", - "валюта турецкой республики северного кипра": "TRY", - "валюта турции": "TRY", - "новая турецкая лира": "TRY", - "старая турецкая лира": "TRY", - "турецкий фунт": "TRY", - "nová turecká líra": "TRY", - "turška lira": "TRY", - "nova turška lira": "TRY", - "нова турска лира": "TRY", - "турска нова лира": "TRY", - "turkiska lira": "TRY", - "ลีราตุรกี": "TRY", - "TT$": "TTD", - "тринидадски и тобагски долар": "TTD", - "dòlar de trinitat": "TTD", - "dòlar de trinitat tobago": "TTD", - "trinidadsko tobagský dolar": "TTD", - "tt$": "TTD", - "trinidada tobaga dolaro": "TTD", - "dolar de trinidad y tobago": "TTD", - "dolar trinitense": "TTD", - "dólar de trinidad y tobago": "TTD", - "trinidad ja tobagon dollari": "TTD", - "dollar de trinidad et tobago": "TTD", - "dollar trinidadien": "TTD", - "ttd": "TTD", - "trinidad en tobago dollar": "TTD", - "dolar trynidadzki": "TTD", - "dólar de trindade e tabago": "TTD", - "dólar de trinidad e tabago": "TTD", - "dólar de trinidade e tabago": "TTD", - "dólar de trinidade e tobago": "TTD", - "dólar trinitino": "TTD", - "dólar trinitário": "TTD", - "валюта тринидада и тобаго": "TTD", - "тринидадский доллар": "TTD", - "trinidadsko tobažský dolár": "TTD", - "тринидад и тобаго долар": "TTD", - "долар тринідаду та тобаго": "TTD", - "NT$": "TWD", - "nt$": "TWD", - "dòlar de taiwan": "TWD", - "dòlar taiwanès": "TWD", - "nou dòlar taiwanès": "TWD", - "nový tchajwanský dolar": "TWD", - "nový tchajwanský jüan": "TWD", - "twd": "TWD", - "tchajwanský jüan": "TWD", - "doler newydd taiwan": "TWD", - "taiwan dollar": "TWD", - "ntd": "TWD", - "tajvana dolaro": "TWD", - "dolar taiwanes": "TWD", - "dolar taiwanés": "TWD", - "dólar taiwanes": "TWD", - "dólar taiwanés": "TWD", - "nuevo dolar de taiwan": "TWD", - "nuevo dolar de taiwán": "TWD", - "nuevo dolar taiwanes": "TWD", - "nuevo dolar taiwanés": "TWD", - "nuevo dólar de taiwan": "TWD", - "nuevo dólar de taiwán": "TWD", - "nuevo dólar taiwanes": "TWD", - "dollar de taiwan": "TWD", - "dollar taiwanais": "TWD", - "dollar taïwanais": "TWD", - "דולר טאיוואני חדש": "TWD", - "dolar taiwan baru": "TWD", - "nuovo dollaro taiwanese": "TWD", - "ntドル": "TWD", - "ニュー台湾ドル": "TWD", - "台湾の通貨": "TWD", - "台湾ドル": "TWD", - "台湾元": "TWD", - "新台幣": "TWD", - "신 타이완 달러": "TWD", - "뉴 타이완 달러": "TWD", - "신대만 달러": "TWD", - "신대폐": "TWD", - "신타이완 달러": "TWD", - "타이완 신화폐": "TWD", - "nowy dolar tajwański": "TWD", - "dólar de taiuã": "TWD", - "dólar de taiwan": "TWD", - "dólar taiuanês": "TWD", - "dólar taiwanês": "TWD", - "novo dólar de taiuã": "TWD", - "novo dólar de taiwan": "TWD", - "novo dólar taiuanês": "TWD", - "валюта китайской республики": "TWD", - "novi tajvanski dolar": "TWD", - "тајвански долар": "TWD", - "ดอลลาร์": "TWD", - "ดอลลาร์ไต้หวัน": "TWD", - "tayvan doları": "TWD", - "đài tệ": "TWD", - "đô la đài loan mới": "TWD", - "شيلينغ تانزاني": "TZS", - "TSh": "TZS", - "xíling de tanzània": "TZS", - "swllt tanzania": "TZS", - "tzs": "TZS", - "shilingi": "TZS", - "tsh": "TZS", - "tanzanian schilling": "TZS", - "tanzanian shilingi": "TZS", - "chelin de tanzania": "TZS", - "chelin tanzano": "TZS", - "chelín de tanzania": "TZS", - "szyling tanzanii": "TZS", - "xelim da tanzania": "TZS", - "xelim da tanzânia": "TZS", - "валюта танзании": "TZS", - "танзански шилинг": "TZS", - "tanzaniansk shilling": "TZS", - "tanzansk shilling": "TZS", - "₴": "UAH", - "hrývnia": "UAH", - "hřivna": "UAH", - "griwna": "UAH", - "hryvnja": "UAH", - "hrywen": "UAH", - "hrywni": "UAH", - "ukrainische hrywnja": "UAH", - "hryvnya": "UAH", - "uah": "UAH", - "hrivno": "UAH", - "ukrainia hrivno": "UAH", - "grivnia": "UAH", - "grivnia ucraniana": "UAH", - "gryvnia": "UAH", - "hryvna": "UAH", - "grivna ucraniana": "UAH", - "грн": "UAH", - "krivna": "UAH", - "riuna": "UAH", - "ukrainan hryvnja": "UAH", - "hryvnia ukrainienne": "UAH", - "grivnja": "UAH", - "ukrajinska hrivnja": "UAH", - "hrivnya": "UAH", - "hryvnja ukrainian": "UAH", - "hryvnia ucraina": "UAH", - "グリブナ": "UAH", - "グルィーヴナ": "UAH", - "フリブニャ": "UAH", - "フリヴナ": "UAH", - "フルィヴニャ": "UAH", - "フルィーヴニャ": "UAH", - "우크라이나 흐리브냐": "UAH", - "흐리브냐": "UAH", - "흐리우냐": "UAH", - "ukrainas grivna": "UAH", - "ukrainas grivnas": "UAH", - "grivnas": "UAH", - "ukraiņu grivna": "UAH", - "ukraiņu grivnas": "UAH", - "oekraïense hryvnja": "UAH", - "oekraiense hryvnja": "UAH", - "hrywna ukraińska": "UAH", - "grívnia ucraniana": "UAH", - "grivnă ucraineană": "UAH", - "hrn": "UAH", - "валюта украины": "UAH", - "валюта в украине": "UAH", - "валюта на украине": "UAH", - "гривна": "UAH", - "гривна украины": "UAH", - "украинская валюта": "UAH", - "украинская гривня": "UAH", - "украјинска хривња": "UAH", - "гривња": "UAH", - "karbovanet": "UAH", - "உக்ரைனிய ஹிரீவ்னியா": "UAH", - "உக்ரைனிய ஹிருன்யா": "UAH", - "ฮริฟเนียยูเครน": "UAH", - "українська гривня": "UAH", - "гривні": "UAH", - "грн.": "UAH", - "ugandiese shilling": "UGX", - "Ush": "UGX", - "xíling d'uganda": "UGX", - "ugx": "UGX", - "ush": "UGX", - "uganda shilling": "UGX", - "chelin de uganda": "UGX", - "chelin ugandes": "UGX", - "chelín de uganda": "UGX", - "ウガンダシリング": "UGX", - "ugk": "UGX", - "우간다실링": "UGX", - "ugandese shilling": "UGX", - "валюта уганды": "UGX", - "usd": "USD", - "buck": "USD", - "greenback": "USD", - "us $": "USD", - "american dollar": "USD", - "u. s. dollar": "USD", - "u.s. dollar": [ - "USN", - "USD" - ], - "us$": "USD", - "dólares": "USD", - "$ us": "USD", - "dollar des états unis": "USD", - "dollar étatsunien": "USD", - "דולר אמריקני": "USD", - "דולר ארה\"ב": "USD", - "דולר ארצות הברית": "USD", - "u$": "USD", - "usa dollár": "USD", - "ドル": "USD", - "米ドル": "USD", - "dollar merikano": "USD", - "dólar americano": "USD", - "dolar sua": "USD", - "$ сша": "USD", - "американский доллар": "USD", - "එක්සත් ජනපද ඩොලර්": "USD", - "amerikanska dollar": "USD", - "dolar amerikański": "USD", - "abd doları": "USD", - "u.s.$": "USD", - "американський долар": "USD", - "mĩ kim": "USD", - "mỹ kim": "USD", - "đô": "USD", - "đô la hoa kì": "USD", - "đô la hoa kỳ": "USD", - "đô la mĩ": "USD", - "đôla mĩ": "USD", - "đôla mỹ": "USD", - "đồng bạc mĩ": "USD", - "đồng bạc mỹ": "USD", - "us dollar [next day]": "USN", - "uruguay peso en unidades indexadas": "UYI", - "ui": "UYI", - "uyi": "UYI", - "$U": "UYU", - "بيزو أوروغواني": "UYU", - "peso uruguaià": "UYU", - "peso d'uruguai": "UYU", - "peso de l'uruguai": "UYU", - "$u": "UYU", - "uyu": "UYU", - "uruguay peso": "UYU", - "peso de uruguay": "UYU", - "peso d'uruguay": "UYU", - "פסו של אורוגוואי": "UYU", - "urugvajski peso": "UYU", - "peso uruguaian": "UYU", - "peso do uruguai": "UYU", - "валюта уругвая": "UYU", - "уругвайский песо": "UYU", - "нови уругвајски пезос": "UYU", - "нови уругвајски песо": "UYU", - "уругвајски песо": "UYU", - "uruguyansk peso": "UYU", - "уругвайське песо": "UYU", - "unidad previsional": "UYW", - "up": "UYW", - "uyw": "UYW", - "سوم أوزبيكستاني": "UZS", - "Soʻm": "UZS", - "som d'uzbekistan": "UZS", - "som de l'uzbekistan": "UZS", - "uzbecký som": "UZS", - "so'm": "UZS", - "söm": "UZS", - "tiyin": "UZS", - "usbekistan som": "UZS", - "usbekistan sum": "UZS", - "uzbekistani som": "UZS", - "uzs": "UZS", - "uzbeka sumo": "UZS", - "som uzbeco": "UZS", - "sum uzbeco": "UZS", - "sum uzbeko": "UZS", - "som uzbekistan": "UZS", - "som usbeco": "UZS", - "ウズベキスタン・スム": "UZS", - "ウズベキスタン・ソム": "UZS", - "우즈베키스탄 솜": "UZS", - "uzbekijos somas": "UZS", - "uzbekistano sumas": "UZS", - "sum uzbecki": "UZS", - "som usbeque": "UZS", - "som uzbeque": "UZS", - "sum usbeque": "UZS", - "sum uzbeque": "UZS", - "валюта узбекистана": "UZS", - "узбекистанский сум": "UZS", - "сум": "UZS", - "узбекистански сум": "UZS", - "узбецький сом": "UZS", - "بوليفار السيادي": [ - "VES", - "VED" - ], - "Bs.S": [ - "VES", - "VED" - ], - "bs.s": [ - "VES", - "VED" - ], - "ved": [ - "VES", - "VED" - ], - "ves": [ - "VES", - "VED" - ], - "bolivar": [ - "VES", - "VED" - ], - "боливар": [ - "VES", - "VED" - ], - "боливар соберано": [ - "VES", - "VED" - ], - "دونغ": "VND", - "₫": "VND", - "vnd": "VND", - "vnđ": "VND", - "đong": "VND", - "vietnamin dong": "VND", - "dong vietnamien": "VND", - "דונג וייטנאמי ": "VND", - "vietnámi dong": "VND", - "vietnam đồng": "VND", - "ベトナムドン": "VND", - "ベトナム・ドン": "VND", - "越南銅": "VND", - "dongas": "VND", - "dongue vietnamita": "VND", - "вьетнамский донг": "VND", - "xu": "VND", - "валюта вьетнама": "VND", - "vietnamesisk dong": "VND", - "ด่อง": "VND", - "ด่องเวียดนาม": "VND", - "việt nam đồng": "VND", - "tiền cụ hồ": "VND", - "đồng tiền": "VND", - "VT": "VUV", - "vanuatu vatus": "VUV", - "vatuo": "VUV", - "vuv": "VUV", - "vanuatuanski vatu": "VUV", - "vatu di vanuatu": "VUV", - "バヌアツの通貨": "VUV", - "바누아투바투": "VUV", - "vatu do vanuatu": "VUV", - "валюта вануату": "VUV", - "вануатский вату": "VUV", - "vanuatisk vatu": "VUV", - "uvu": "VUV", - "vt": "VUV", - "вануатійський вату": "VUV", - "تالا ساموية": "WST", - "WS$": "WST", - "tala samoà": "WST", - "ws$": "WST", - "wst": "WST", - "samoa dolaro": "WST", - "tala samoano": "WST", - "טלה": "WST", - "サモアの通貨": "WST", - "サモアドル": "WST", - "サモア・タラ": "WST", - "サモア・ターラ": "WST", - "サモア・ドル": "WST", - "사모아탈라": "WST", - "валюта самоа": "WST", - "доллар самоа": "WST", - "самоанский доллар": "WST", - "тала": "WST", - "samoansk tala": "WST", - "فرنك س ف ا وسط أفريقيا": "XAF", - "فرنك وسط أفريقي": "XAF", - "xaf": "XAF", - "frank beac/cfa": "XAF", - "ffranc canol affrica": "XAF", - "centr afrika franko": "XAF", - "franco cfa de africa central": "XAF", - "keski afrikan cfa frangi": "XAF", - "franc cfa d'afrique centrale": "XAF", - "פרנק cfa מרכז אפריקני": "XAF", - "cfa": "XAF", - "franco cfa dell'africa centrale": "XAF", - "中部アフリカcfaフラン": "XAF", - "중앙 아프리카 cfa 프랑": "XAF", - "중앙아프리카 cfa프랑": "XAF", - "centrālāfrikas franks": "XAF", - "cfa franc": [ - "XOF", - "XAF" - ], - "franc centrafrican cfa": "XAF", - "franc central african cfa": "XAF", - "франк кфа beac": "XAF", - "валюта габона": "XAF", - "валюта камеруна": "XAF", - "валюта республики конго": "XAF", - "валюта центральноафриканской республики": "XAF", - "валюта чада": "XAF", - "валюта экваториальной гвинеи": "XAF", - "франк кфа веас": "XAF", - "центральноафриканский франк кфа": "XAF", - "srednjeafriški cfa frank": "XAF", - "frank cfa": [ - "XOF", - "XAF" - ], - "centralafrikansk cfa franc": "XAF", - "fcfa": "XAF", - "மத்திய ஆப்பிரிக்க சி.எஃப்.ஏ பிராங்க்": "XAF", - "orta afrika cfa frankı": "XAF", - "cfa franc trung phi": "XAF", - "xag": "XAG", - "silver": "XAG", - "silver as currency": "XAG", - "la plata como inversión": "XAG", - "la plata como inversion": "XAG", - "argent d'investissement": "XAG", - "argent en tant qu'investissement": "XAG", - "投資対象としての銀": "XAG", - "серебро как инвестиция": "XAG", - "цена серебра": "XAG", - "bạc như một khoản đầu tư": "XAG", - "الاستثمار في الذهب": "XAU", - "anlagegold": "XAU", - "xau": "XAU", - "gold": "XAU", - "gold as currency": "XAU", - "kultaan sijoittaminen": "XAU", - "arany mint befektetés": "XAU", - "az arany mint befektetés": "XAU", - "золото как инвестиция": "XAU", - "guld som investering": "XAU", - "vàng như một kênh đầu tư": "XAU", - "eurco": "XBA", - "xba": "XBA", - "emu 6 bond markets unit european monetary unit": "XBB", - "e.m.u. 6": "XBB", - "emu 6": "XBB", - "european unit of account currency fund 6": "XBB", - "xbb": "XBB", - "bond markets unit european unit of account 9": "XBC", - "e.u.a. 9": "XBC", - "eua 9": "XBC", - "xbc": "XBC", - "bond markets unit european unit of account 17": "XBD", - "e.u.a. 17": "XBD", - "eua 17": "XBD", - "xbd": "XBD", - "EC$": "XCD", - "eastern caribbean currency union": "XCD", - "východokaribská měnová unie": "XCD", - "xcd": "XCD", - "ec$": "XCD", - "ostkaribische währungsunion": "XCD", - "orient kariba dolaro": "XCD", - "orientkariba dolaro": "XCD", - "dolar caribe este": "XCD", - "dolar del caribe este": "XCD", - "dolar del caribe oriental": "XCD", - "dólar caribe este": "XCD", - "dólar del caribe este": "XCD", - "dollar de la caraibe orientale": "XCD", - "dollar de la caraïbe orientale": "XCD", - "dólar caribe leste": "XCD", - "דולר מזרח קאריבי": "XCD", - "מטבע אנטיגואה וברבודה": "XCD", - "מטבע גרנדה": "XCD", - "מטבע דומיניקה": "XCD", - "מטבע סנט וינסנט והגרנדינים": "XCD", - "מטבע סנט לושה": "XCD", - "מטבע סנט קיטס ונוויס": "XCD", - "東カリブドル": "XCD", - "oost caraibische dollar": "XCD", - "oost caraïbische dollar": "XCD", - "dolar de las caribas orientalas": "XCD", - "dólar das caraíbas": "XCD", - "dólar das caraíbas orientais": "XCD", - "восточно карибский доллар": "XCD", - "валюта ангильи": "XCD", - "валюта антигуа и барбуды": "XCD", - "கிழக்குக் கரிபியன் டாலர்": "XCD", - "східно карибський долар": "XCD", - "đô la đông caribbe": "XCD", - "спт": "XDR", - "deg": "XDR", - "xdr": "XDR", - "special drawing right": "XDR", - "igorpen eskubide bereziak": "XDR", - "erityinen nosto oikeus": "XDR", - "erityiset nosto oikeudet": "XDR", - "sdrs": "XDR", - "droits de tirage speciaux": "XDR", - "imf 특별 인출권": "XDR", - "아이엠에프 특별 인출권": "XDR", - "특별 인출권": "XDR", - "papierowe złoto": "XDR", - "specjalne prawo ciągnienia": "XDR", - "сдр": "XDR", - "спз": "XDR", - "zpč": "XDR", - "special drawings right": "XDR", - "فرنك غرب أفريقي": "XOF", - "فرنك س ف ا غرب أفريقيا": "XOF", - "F": "XOF", - "xof": "XOF", - "západoafrický cfa frank": "XOF", - "franc cfa gorllein ffrica": "XOF", - "bceao franc": "XOF", - "okcident afrika franko": "XOF", - "franco cfa de africa occidental": "XOF", - "פרנק cfa מערב אפריקני": "XOF", - "franco cfa uemoa": "XOF", - "franco cfa dell'africa occidentale": "XOF", - "franco cfa dell'africa dell'ovest": "XOF", - "frank zachodnioafrykański": "XOF", - "franc cfa vest african": "XOF", - "франк кфа bceao": "XOF", - "валюта бенина": "XOF", - "валюта буркина фасо": "XOF", - "валюта гвинеи бисау": "XOF", - "валюта кот д’ивуара": "XOF", - "валюта мали": "XOF", - "валюта нигера": "XOF", - "валюта сенегала": "XOF", - "валюта того": "XOF", - "западно африканский франк кфа": "XOF", - "западноафриканский франк кфа": "XOF", - "франк африканского финансового сообщества": "XOF", - "франк кфа всеао": "XOF", - "frank bceao/cfa": "XOF", - "zahodnoafriški cfa frank": "XOF", - "மேற்கு ஆபிரிக்க சி.எஃப்.ஏ பிராங்க்": "XOF", - "batı afrika cfa frankı": "XOF", - "cfa franc tây phi": "XOF", - "xpd": "XPD", - "palladium": "XPD", - "palladium as currency": "XPD", - "палладий как инвестиция": "XPD", - "цена палладия": "XPD", - "paladij kot investicija": "XPD", - "xpf": "XPF", - "pazifik franc": "XPF", - "pacific franc": "XPF", - "cfp franko": "XPF", - "fcfp": "XPF", - "francs pacifique": "XPF", - "פרנק צרפתי": "XPF", - "franak cfp": "XPF", - "francuski pacifički franak": "XPF", - "franco pacifico": "XPF", - "institut d'émission d'outre mer": "XPF", - "franc pacific": "XPF", - "французский тихоокеанский франк": "XPF", - "валюта уоллис и футуна": "XPF", - "обменный тихоокеанский франк": "XPF", - "франк кпф": "XPF", - "франк кфп": "XPF", - "французское тихоокеанское банковское соглашение": "XPF", - "француски тихоокеански франак": "XPF", - "xpt": "XPT", - "platinum": "XPT", - "platinum as currency": "XPT", - "platine": "XPT", - "платина": "XPT", - "sistema único de compensación regional": "XSU", - "Sucre": "XSU", - "sistema unico de compensacion regional": "XSU", - "スクレ": "XSU", - "единая система региональных взаиморасчетов": "XSU", - "единая система региональных взаиморасчётов": "XSU", - "iso 4217 test code": [ - "XXX", - "XTS" - ], - "xts": "XTS", - "xua": "XUA", - "xxx": "XXX", - "﷼'": "YER", - "rial de iemen": "YER", - "rial del iemen": "YER", - "nordjemenitischer rial": "YER", - "yer": "YER", - "ريال": "YER", - "rial yemeni": "YER", - "rial yéménite": "YER", - "dinar du yémen du sud": "YER", - "rial yemenite": "YER", - "rial do iemen": "YER", - "rial yemenita": "YER", - "イエメンの通貨": "YER", - "イエメン・リヤル": "YER", - "イエメン・リヤール": "YER", - "예멘 리얄": "YER", - "예멘리얄": "YER", - "rial de iemèn": "YER", - "rial do iémen": "YER", - "rial do iémene": "YER", - "rial do iêmen": "YER", - "rial iémenita": "YER", - "валюта йемена": "YER", - "јеменски риал": "YER", - "yemenitisk rial": "YER", - "R": "ZAR", - "راند": "ZAR", - "rand de sud àfrica": "ZAR", - "rand sud africà": "ZAR", - "rand de affrica": "ZAR", - "rando": "ZAR", - "sud afrika rando": "ZAR", - "zar": "ZAR", - "randi": "ZAR", - "rand sud africain": "ZAR", - "ראנד": "ZAR", - "南アフリカランド": "ZAR", - "南アフリカ・ランド": "ZAR", - "남아프리카 공화국 란드": "ZAR", - "남아프리카공화국 랜드": "ZAR", - "par randas": "ZAR", - "pietų afrikos randas": "ZAR", - "rand południowoafrykański": "ZAR", - "rand sul africano": "ZAR", - "rand sulafricano": "ZAR", - "rands": "ZAR", - "валюта юар": "ZAR", - "ранд юар": "ZAR", - "рэнд": "ZAR", - "рэнд юар": "ZAR", - "южно африканский рэнд": "ZAR", - "южно африканский ранд": "ZAR", - "южноафриканский ранд": "ZAR", - "južnoafriški rand": "ZAR", - "sydafrikansk rand": "ZAR", - "південно африканський ранд": "ZAR", - "كواشا زامبية": "ZMW", - "kwacha de zàmbia": "ZMW", - "ngwee": "ZMW", - "sambia kwacha": "ZMW", - "zmw": "ZMW", - "kwacha zambese": "ZMW", - "zmk": "ZMW", - "잠비아콰차": "ZMW", - "kwacha zambian": "ZMW", - "kwacha da zâmbia": "ZMW", - "kwacha zambiana": "ZMW", - "валюта замбии": "ZMW", - "квача замбии": "ZMW", - "zambiya kwachası": "ZMW", - "ZK": "ZMW", - "Z$": "ZWL", - "rtgs$": "ZWL", - "z$": "ZWL", - "zwl": "ZWL", - "zimdollar": "ZWL", - "fifth zimbabwean dollar": "ZWL", - "zimbabva dolaro": "ZWL", - "dólar rtgs": "ZWL" - }, - "iso4217": { - "AED": { - "af": "Verenigde Arabiese Emirate dirham", - "ar": "درهم إماراتي", - "bn": "সংযুক্ত আরব আমিরাতের দিরহাম", - "ca": "dírham dels Emirats Àrabs Units", - "cs": "dirham Spojených arabských emirátů", - "de": "VAE-Dirham", - "en": "United Arab Emirates dirham", - "eo": "UAE-dirhamo", - "es": "dírham de los Emiratos Árabes Unidos", - "fi": "Yhdistyneiden arabiemiirikuntien dirhami", - "fr": "Dirham des Émirats arabes unis", - "gl": "Dirham dos Emiratos Árabes Unidos", - "he": "דירהם איחוד האמירויות הערביות", - "hr": "Dirham UAE", - "hu": "emirátusi dirham", - "id": "Dirham Uni Emirat Arab", - "it": "Dirham degli Emirati Arabi Uniti", - "ja": "UAEディルハム", - "ko": "아랍에미리트 디르함", - "lt": "Jungtinių Arabų Emyratų dirhamas", - "ml": "യുണൈറ്റഡ് അറബ് എമിരേറ്റ്സ് ദിർഹം", - "ms": "Dirham Emiriah Arab Bersatu", - "nl": "VAE-Dirham", - "oc": "Diram emirati", - "pa": "ਸੰਯੁਕਤ ਅਰਬ ਇਮਰਾਤੀ ਦਿਰਹਾਮ", - "pl": "Dirham", - "pt": "Dirham dos Emirados Árabes Unidos", - "ro": "Dirham EAU", - "ru": "дирхам ОАЭ", - "sr": "УАЕ дирхам", - "sv": "Emiratisk dirham", - "ta": "ஐக்கிய அரபு அமீரக திர்கம்", - "tr": "Birleşik Arap Emirlikleri dirhemi", - "uk": "дирхам ОАЕ", - "da": "Emiratisk dirham" - }, - "AFA": { - "ar": "أفغاني", - "bg": "Афганистански афган", - "ca": "afgani", - "cs": "afghánský afghání", - "da": "Afghani", - "de": "Afghani", - "en": "Afghan afghani", - "eo": "afgana afganio", - "es": "afgani afgano", - "et": "Afganistani afgaani", - "eu": "Afgani", - "fi": "Afganistanin afgaani", - "fr": "afghani", - "gl": "afgani", - "he": "אפגני", - "hr": "Afganistanski afgani", - "hu": "afgán afgáni", - "id": "Afghani Afganistan", - "it": "afghani afgano", - "ja": "アフガニ", - "ko": "아프가니스탄 아프가니", - "lt": "Afganis", - "lv": "Afgāns", - "ms": "afghani Afghanistan", - "nl": "Afghaanse afghani", - "oc": "Afgani", - "pa": "ਅਫ਼ਗ਼ਾਨ ਅਫ਼ਗ਼ਾਨੀ", - "pl": "Afgani", - "pt": "afegane", - "ru": "афгани", - "sl": "afganistanski afgani", - "sr": "авганистански авгани", - "sv": "Afghani", - "tr": "Afgani", - "uk": "Афгані", - "ro": "afgan afgan", - "ta": "ஆப்கான் ஆப்கானி" - }, - "AFN": { - "ar": "أفغاني", - "bg": "Афганистански афган", - "ca": "afgani", - "cs": "afghánský afghání", - "da": "Afghani", - "de": "Afghani", - "en": "Afghan afghani", - "eo": "afgana afganio", - "es": "afgani afgano", - "et": "Afganistani afgaani", - "eu": "Afgani", - "fi": "Afganistanin afgaani", - "fr": "afghani", - "gl": "afgani", - "he": "אפגני", - "hr": "Afganistanski afgani", - "hu": "afgán afgáni", - "id": "Afghani Afganistan", - "it": "afghani afgano", - "ja": "アフガニ", - "ko": "아프가니스탄 아프가니", - "lt": "Afganis", - "lv": "Afgāns", - "ms": "afghani Afghanistan", - "nl": "Afghaanse afghani", - "oc": "Afgani", - "pa": "ਅਫ਼ਗ਼ਾਨ ਅਫ਼ਗ਼ਾਨੀ", - "pl": "Afgani", - "pt": "afegane", - "ru": "афгани", - "sl": "afganistanski afgani", - "sr": "авганистански авгани", - "sv": "Afghani", - "tr": "Afgani", - "uk": "Афгані", - "ro": "afgan afgan", - "ta": "ஆப்கான் ஆப்கானி" - }, - "ALL": { - "ar": "ليك ألباني", - "bg": "Албански лек", - "ca": "lek", - "cs": "Albánský lek", - "cy": "Lek", - "da": "Lek", - "de": "Albanischer Lek", - "en": "Albanian lek", - "eo": "albana leko", - "es": "lek albanés", - "et": "Albaania lekk", - "fi": "Albanian lek", - "fr": "lek", - "gl": "Lek albanés", - "he": "לק", - "hr": "Albanski lek", - "hu": "albán lek", - "ia": "lek", - "id": "Lek Albania", - "it": "lek albanese", - "ja": "レク", - "ko": "알바니아 렉", - "lt": "Albanijos lekas", - "lv": "Albānijas leks", - "ms": "Lek", - "nl": "Albanese lek", - "pa": "ਅਲਬਾਨੀਆਈ ਲੇਕ", - "pl": "lek", - "pt": "lek", - "ro": "Lek", - "ru": "албанский лек", - "sk": "Albánsky lek", - "sl": "albanski lek", - "sr": "албански лек", - "sv": "Lek", - "ta": "அல்பேனிய லெக்", - "tr": "Arnavut leki", - "uk": "Албанський лек", - "af": "Albanese lek", - "oc": "Lek" - }, - "AMD": { - "af": "Armeense dram", - "ar": "درام أرميني", - "bg": "Арменски драм", - "ca": "dram", - "cs": "arménský dram", - "da": "Armenske dram", - "de": "Dram", - "en": "Armenian dram", - "eo": "armena dramo", - "es": "dram armenio", - "et": "Armeenia dramm", - "fi": "Armenian dram", - "fr": "dram", - "gl": "Dram armenio", - "he": "דראם ארמני", - "hr": "Armenski dram", - "hu": "örmény dram", - "ia": "Dram (moneta)", - "id": "Dram Armenia", - "it": "dram armeno", - "ja": "ドラム", - "ko": "아르메니아 드람", - "lt": "Dramas", - "lv": "Armēnijas drams", - "nl": "Armeense dram", - "oc": "dram", - "pa": "ਅਰਮੀਨੀਆਈ ਦਰਾਮ", - "pl": "Dram", - "pt": "dram arménio", - "ro": "Dram", - "ru": "армянский драм", - "sk": "Arménsky dram", - "sl": "armenski dram", - "sr": "јерменски драм", - "sv": "Dram", - "ta": "ஆர்மேனிய டிராம்", - "tr": "Ermeni dramı", - "uk": "вірменський драм", - "cy": "Dram Armenia" - }, - "ANG": { - "ar": "غيلدر الأنتيل الهولندية", - "ca": "florí de les Antilles Neerlandeses", - "cs": "Gulden Nizozemských Antil", - "de": "Antillen-Gulden", - "en": "Netherlands Antillean guilder", - "eo": "nederlandantila guldeno", - "es": "florín antillano neerlandés", - "eu": "Holandarren Antilletako florin", - "fi": "Alankomaiden Antillien guldeni", - "fr": "florin des Antilles néerlandaises", - "gl": "Florín das Antillas Neerlandesas", - "hr": "Nizozemskoantilski gulden", - "hu": "holland antillákbeli forint", - "id": "Guilder Antillen Belanda", - "it": "Fiorino delle Antille Olandesi", - "ja": "アンティル・ギルダー", - "ko": "네덜란드령 안틸레스 휠던", - "lt": "Nyderlandų Antilų guldenas", - "nl": "Antilliaanse gulden", - "oc": "Florin de las Antilhas Neerlandesas", - "pa": "ਨੀਦਰਲੈਂਡ ਐਂਟੀਲੀਆਈ ਗਿਲਡਰ", - "pap": "Florin Antiano", - "pl": "gulden Antyli Holenderskich", - "pt": "Florim das Antilhas Neerlandesas", - "ru": "нидерландский антильский гульден", - "sv": "Antillergulden", - "tr": "Hollanda Antilleri guldeni", - "uk": "Нідерландський антильський гульден", - "he": "גילדן אנטילי" - }, - "AOA": { - "af": "Kwanza", - "ar": "كوانزا أنغولي", - "bg": "Анголска кванза", - "ca": "kwanza", - "cs": "angolská kwanza", - "cy": "Kwanza", - "de": "Kwanza", - "en": "kwanza", - "eo": "angola kvanzo", - "es": "Kwanza angoleño", - "eu": "Angolar kwanza", - "fi": "Angolan kwanza", - "fr": "Kwanza", - "gl": "Kwanza", - "he": "קוואנזה", - "hr": "Angolska kvanza", - "hu": "angolai kwanza", - "id": "Kwanza Angola", - "it": "Kwanza angolano", - "ja": "クワンザ", - "ko": "앙골라 콴자", - "lt": "Kvanza", - "ml": "ക്വാൻസ", - "ms": "Kwanza Angola", - "nl": "Angolese kwanza", - "pa": "ਅੰਗੋਲਨ ਕਵਾਂਜ਼ਾ", - "pl": "Kwanza", - "pt": "Kwanza", - "ru": "ангольская кванза", - "si": "ක්වන්සා", - "sr": "анголска кванза", - "sv": "Kwanza", - "tr": "Kwanza", - "uk": "Ангольська кванза", - "vi": "Kwanza Angola", - "bn": "অ্যাঙ্গোলীয় কুয়াঞ্জা", - "oc": "Kwanza", - "ta": "அங்கோலா குவான்சா" - }, - "ARS": { - "ar": "بيزو أرجنتيني", - "bg": "Аржентинско песо", - "ca": "peso argentí", - "cs": "Argentinské peso", - "de": "argentinischer Peso", - "en": "Argentine convertible peso", - "eo": "argentina peso", - "es": "peso argentino convertible", - "et": "Argentina peeso", - "eu": "Argentinar peso", - "fi": "Argentiinan peso", - "fr": "peso argentin", - "gl": "Peso arxentino", - "he": "פסו ארגנטינאי", - "hr": "Argentinski pezo", - "hu": "argentin peso", - "id": "Peso Argentina", - "it": "peso argentino", - "ja": "アルゼンチン・ペソ", - "ko": "아르헨티나 페소", - "lt": "Argentinos pesas", - "ms": "Peso Argentina", - "nl": "Argentijnse peso", - "oc": "Peso", - "pa": "ਅਰਜਨਟੀਨੀ ਪੇਸੋ", - "pl": "Peso argentyńskie", - "pt": "peso argentino", - "ro": "Peso argentinian", - "ru": "аргентинское песо", - "sr": "аргентински пезос", - "sv": "Argentinsk peso", - "ta": "ஆர்ஜென்டின பீசோ", - "th": "เปโซอาร์เจนตินา", - "tr": "Arjantin pesosu", - "uk": "аргентинський песо", - "vi": "Peso Argentina", - "cy": "ars" - }, - "AUD": { - "af": "Australiese dollar", - "ar": "دولار أسترالي", - "bg": "Австралийски долар", - "ca": "dòlar australià", - "cs": "australský dolar", - "da": "australsk dollar", - "de": "Australischer Dollar", - "en": "Australian dollar", - "eo": "Aŭstralia dolaro", - "es": "dólar australiano", - "et": "Austraalia dollar", - "eu": "Australiar dolar", - "fi": "Australian dollari", - "fr": "dollar australien", - "gl": "Dólar australiano", - "he": "דולר אוסטרלי", - "hr": "Australski dolar", - "hu": "ausztrál dollár", - "id": "Dolar Australia", - "it": "dollaro australiano", - "ja": "オーストラリア・ドル", - "ko": "오스트레일리아 달러", - "lt": "Australijos doleris", - "lv": "Austrālijas dolārs", - "ms": "Dolar Australia", - "nl": "Australische dollar", - "oc": "Dolar australian", - "pa": "ਆਸਟ੍ਰੇਲੀਆਈ ਡਾਲਰ", - "pl": "Dolar australijski", - "pt": "Dólar australiano", - "ro": "dolar australian", - "ru": "австралийский доллар", - "sk": "Austrálsky dolár", - "sr": "аустралијски долар", - "sv": "Australisk dollar", - "ta": "அவுத்திரேலிய வெள்ளி", - "th": "ดอลลาร์ออสเตรเลีย", - "tr": "Avustralya doları", - "uk": "австралійський долар", - "vi": "Đô la Úc", - "sl": "avstralski dolar" - }, - "AWG": { - "ar": "فلورن أروبي", - "ca": "florí d'Aruba", - "cs": "Arubský florin", - "de": "Aruba-Florin", - "en": "Aruban florin", - "eo": "aruba guldeno", - "es": "florín arubeño", - "et": "Aruba floriin", - "eu": "Florin arubar", - "fi": "Aruban floriini", - "fr": "Florin arubais", - "gl": "Florín arubeño", - "he": "פלורין ארובי", - "hr": "Arupski gulden", - "hu": "arubai florin", - "id": "Florin Aruba", - "it": "Fiorino arubano", - "ja": "アルバ・フロリン", - "ko": "아루바 플로린", - "lt": "Arubos florinas", - "ms": "Florin Aruba", - "nl": "Arubaanse florin", - "pa": "ਅਰੂਬਾਈ ਫ਼ਲੋਰਿਨ", - "pap": "Florin", - "pl": "Florin arubański", - "pt": "Florim arubano", - "ro": "Florin arubez", - "ru": "арубанский флорин", - "sv": "Arubansk florin", - "tr": "Aruba florini", - "uk": "Арубський флорін", - "sr": "арупски флорин", - "ta": "அரூபா ஃபுளோரின்" - }, - "AZN": { - "af": "Azerbeidjanse manat", - "ar": "مانات أذربيجاني", - "bg": "Азербайджански манат", - "ca": "manat azerbaidjanès", - "cs": "Ázerbájdžánský manat", - "da": "Aserbajdsjanske manat", - "de": "Aserbaidschan-Manat", - "en": "Azerbaijani manat", - "eo": "azerbajĝana manato", - "es": "manat azerbaiyano", - "et": "Aserbaidžaani manat", - "eu": "Manat azerbaijandar", - "fi": "Azerbaidžanin manat", - "fr": "manat azerbaïdjanais", - "gl": "Manat acerbaixano", - "he": "מאנאט אזרבייג'ני", - "hr": "Azerbajdžanski manat", - "hu": "azeri manat", - "ia": "manat azeri", - "id": "Manat Azerbaijan", - "it": "Manat azero", - "ja": "アゼルバイジャン・マナト", - "ko": "아제르바이잔 마나트", - "lt": "Azerbaidžano manatas", - "lv": "Azerbaidžānas manats", - "ms": "Manat Azerbaijan", - "nl": "Azerbeidzjaanse manat", - "pa": "ਅਜ਼ਰਬਾਈਜਾਨੀ ਮਨਾਤ", - "pl": "Manat azerski", - "pt": "Manat azeri", - "ro": "Manat azer", - "ru": "азербайджанский манат", - "sk": "Azerbajdžanský manat", - "sl": "azerbajdžanski manat", - "sr": "азербејџански манат", - "sv": "Azerbajdzjansk manat", - "ta": "அசர்பைச்சானிய மனாத்து", - "tr": "Azerbaycan manatı", - "uk": "Азербайджанський манат", - "vi": "Manat Azerbaijan", - "cy": "Manat Aserbaijan", - "oc": "Manat" - }, - "BAM": { - "ar": "مارك بوسني", - "bg": "Конвертибилна марка", - "ca": "marc convertible", - "cs": "Konvertibilní marka", - "da": "Konvertibilna mark", - "de": "konvertible Mark", - "en": "Bosnia and Herzegovina convertible mark", - "eo": "konvertebla marko", - "es": "marco bosnioherzegovino", - "fi": "Bosnian ja Hertsegovinan vaihdettava markka", - "fr": "mark convertible de Bosnie-Herzégovine", - "gl": "Marco convertible", - "he": "מארק סחיר", - "hr": "Konvertibilna marka", - "hu": "bosnyák konvertibilis márka", - "id": "Mark Bosnia dan Herzegovina", - "it": "marco bosniaco", - "ja": "兌換マルク", - "ko": "보스니아 헤르체고비나 태환 마르카", - "lt": "Konvertuojamoji markė", - "lv": "Konvertējamā marka", - "nl": "Bosnische inwisselbare mark", - "pa": "ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ ਵਟਾਂਦਰਾਯੋਗ ਮਾਰਕ", - "pl": "Marka zamienna", - "pt": "marco conversível", - "ro": "Marcă bosniacă convertibilă", - "ru": "конвертируемая марка", - "sk": "Konvertibilná marka", - "sl": "konvertibilna marka Bosne in Hercegovine", - "sr": "конвертибилна марка", - "sv": "Konvertibilna marka", - "ta": "கன்வர்ட்டிபிள் மார்க்கு", - "tr": "Bosna-Hersek değiştirilebilir markı", - "uk": "Конвертована марка", - "cy": "mark cyfnewidiol (Bosnia)", - "ia": "mark convertibile de Bosnia-Herzegovina", - "oc": "Marka de Bòsnia e Ercegovina" - }, - "BBD": { - "ar": "دولار بربادوسي", - "bg": "Барбадоски долар", - "ca": "dòlar de Barbados", - "cs": "Barbadoský dolar", - "de": "Barbados-Dollar", - "en": "Barbadian dollar", - "eo": "barbada dolaro", - "es": "dólar de Barbados", - "eu": "Dolar barbadostar", - "fi": "Barbadoksen dollari", - "fr": "dollar barbadien", - "gl": "Dólar de Barbados", - "hr": "Barbadoski dolar", - "hu": "barbadosi dollár", - "id": "Dolar Barbados", - "it": "dollaro di Barbados", - "ja": "バルバドス・ドル", - "ko": "바베이도스 달러", - "lt": "Barbadoso doleris", - "nl": "Barbadiaanse dollar", - "pa": "ਬਾਰਬਾਡੋਸੀ ਡਾਲਰ", - "pl": "Dolar barbadoski", - "pt": "dólar barbadense", - "ru": "барбадосский доллар", - "sk": "Barbadoský dolár", - "sr": "барбадоски долар", - "sv": "Barbadisk dollar", - "tr": "Barbados doları", - "uk": "Барбадоський долар", - "vi": "Đô la Barbados", - "ta": "பார்படோஸ் டாலர்" - }, - "BDT": { - "ar": "تاكا بنغلاديشي", - "bg": "Бангладешка така", - "bn": "বাংলাদেশী টাকা", - "ca": "taka", - "cs": "Bangladéšská taka", - "de": "Taka", - "en": "Bangladeshi taka", - "eo": "bangladeŝa tako", - "es": "taka bangladesí", - "fi": "Bangladeshin taka", - "fr": "taka", - "hr": "Bangladeška taka", - "hu": "bangladesi taka", - "id": "Taka Bangladesh", - "it": "taka bengalese", - "ja": "タカ", - "ko": "방글라데시 타카", - "lt": "Bangladešo taka", - "nl": "Bengalese taka", - "oc": "Taka", - "pa": "ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ", - "pl": "Taka", - "pt": "taka", - "ru": "бангладешская така", - "sk": "Taka", - "sr": "бангладешка така", - "sv": "Taka", - "ta": "வங்காளதேச இட்டாக்கா", - "tr": "Taka", - "uk": "Бангладеська така", - "vi": "Taka", - "he": "טאקה" - }, - "BGN": { - "ar": "ليف بلغاري", - "bg": "български лев", - "ca": "lev", - "cs": "bulharský lev", - "da": "Lev", - "de": "Lew", - "en": "Bulgarian lev", - "eo": "bulgara levo", - "es": "lev búlgaro", - "et": "Leev", - "eu": "Bulgariar lev", - "fi": "Bulgarian leva", - "fr": "lev bulgare", - "gl": "Lev búlgaro", - "he": "לב", - "hr": "Bugarski lev", - "hu": "bolgár leva", - "id": "Lev Bulgaria", - "it": "lev bulgaro", - "ja": "レフ", - "ko": "불가리아 레프", - "lt": "Bulgarijos levas", - "lv": "Bulgārijas leva", - "ms": "Lev Bulgaria", - "nl": "Bulgaarse lev", - "oc": "Lev", - "pa": "ਬੁਲਗਾਰੀਆਈ ਲੇਵ", - "pl": "Lew", - "pt": "lev búlgaro", - "ro": "Leva", - "ru": "болгарский лев", - "sk": "Bulharský lev", - "sl": "bolgarski lev", - "sr": "бугарски лев", - "sv": "Lev", - "ta": "பல்கேரிய லெவ்", - "tr": "Lev", - "uk": "болгарський лев", - "vi": "Lev Bulgaria", - "ia": "lev bulgare", - "ml": "ബൾഗേറിയൻ ലെവ്" - }, - "BHD": { - "ar": "دينار بحريني", - "bg": "Бахрейнски динар", - "ca": "dinar de Bahrain", - "cs": "Bahrajnský dinár", - "de": "Bahrain-Dinar", - "en": "Bahraini dinar", - "eo": "barejna dinaro", - "es": "dinar bareiní", - "fi": "Bahrainin dinaari", - "fr": "dinar bahreïnien", - "he": "דינר בחרייני", - "hr": "Bahreinski dinar", - "hu": "bahreini dinár", - "id": "Dinar Bahrain", - "it": "dinaro del Bahrain", - "ja": "バーレーン・ディナール", - "ko": "바레인 디나르", - "lt": "Bahreino dinaras", - "ms": "Dinar Bahrain", - "nl": "Bahreinse dinar", - "pa": "ਬਹਿਰੀਨੀ ਦਿਨਾਰ", - "pl": "Dinar Bahrajnu", - "pt": "dinar bareinita", - "ru": "бахрейнский динар", - "sr": "бахреински динар", - "sv": "Bahrainsk dinar", - "tr": "Bahreyn dinarı", - "uk": "Бахрейнський динар", - "oc": "Dinar de Bahrayn", - "ta": "பஹ்ரேன் தினார்" - }, - "BIF": { - "ar": "فرنك بوروندي", - "bg": "Бурундийски франк", - "ca": "franc de Burundi", - "cs": "Burundský frank", - "de": "Burundi-Franc", - "en": "Burundian franc", - "eo": "burunda franko", - "es": "franco burundés", - "fi": "Burundin frangi", - "fr": "Franc burundais", - "hr": "Burundski franak", - "hu": "burundi frank", - "id": "Franc Burundi", - "it": "Franco del Burundi", - "ja": "ブルンジ・フラン", - "ko": "부룬디 프랑", - "lt": "Burundžio frankas", - "ms": "Franc Burundi", - "nl": "Burundese frank", - "pa": "ਬੁਰੂੰਡੀ ਫ਼੍ਰੈਂਕ", - "pl": "frank burundyjski", - "pt": "Franco do Burúndi", - "ru": "бурундийский франк", - "sr": "бурундски франак", - "sv": "Burundisk franc", - "ta": "புரூண்டி பிராங்க்", - "tr": "Burundi frangı", - "uk": "бурундійський франк", - "he": "פרנק בורונדי", - "ro": "franc burundez" - }, - "BMD": { - "af": "Bermudaanse dollar", - "ar": "دولار برمودي", - "ca": "dòlar de les Bermudes", - "cs": "Bermudský dolar", - "de": "Bermuda-Dollar", - "en": "Bermudian dollar", - "eo": "bermuda dolaro", - "es": "Dólar bermudeño", - "eu": "Dolar bermudar", - "fi": "Bermudan dollari", - "fr": "Dollar bermudien", - "hr": "Bermudski dolar", - "hu": "bermudai dollár", - "id": "Dolar Bermuda", - "it": "Dollaro di Bermuda", - "ja": "バミューダ・ドル", - "ko": "버뮤다 달러", - "lt": "Bermudos doleris", - "nl": "Bermuda-dollar", - "pa": "ਬਰਮੂਡਾਈ ਡਾਲਰ", - "pl": "Dolar bermudzki", - "pt": "Dólar bermudense", - "ru": "бермудский доллар", - "sr": "бермудски долар", - "sv": "Bermudisk dollar", - "tr": "Bermuda doları", - "uk": "Бермудський долар", - "vi": "Đô la Bermuda", - "he": "דולר ברמודה ", - "ta": "பெர்முடா டாலர்" - }, - "BND": { - "ar": "دولار بروني", - "bg": "Брунейски долар", - "bn": "ব্রুনাই ডলার", - "ca": "dòlar de Brunei", - "cs": "Brunejský dolar", - "de": "Brunei-Dollar", - "en": "Brunei dollar", - "eo": "bruneja dolaro", - "es": "dólar de Brunéi", - "eu": "Dolar bruneitar", - "fi": "Brunein dollari", - "fr": "dollar de Brunei", - "gl": "Dólar de Brunei", - "he": "דולר ברוניי", - "hr": "Brunejski dolar", - "hu": "brunei dollár", - "id": "Dolar Brunei Darussalam", - "it": "dollaro del Brunei", - "ja": "ブルネイ・ドル", - "ko": "브루나이 달러", - "lt": "Brunėjaus doleris", - "ml": "ബ്രൂണൈ ഡോളർ", - "ms": "Ringgit Brunei", - "nl": "Bruneise dollar", - "pa": "ਬਰੂਨਾਏ ਡਾਲਰ", - "pl": "Dolar Brunei", - "pt": "Dólar de Brunei", - "ru": "брунейский доллар", - "sr": "брунејски долар", - "sv": "Bruneisk dollar", - "ta": "புரூணை டாலர்", - "th": "ดอลลาร์บรูไน", - "tr": "Brunei doları", - "uk": "Брунейський долар", - "vi": "Đô la Brunei" - }, - "BOB": { - "ar": "بوليفاريو بوليفي", - "ca": "boliviano", - "cs": "Bolivijský boliviano", - "da": "Boliviano", - "de": "Boliviano", - "en": "boliviano", - "eo": "bolivia bolivjano", - "es": "boliviano", - "eu": "Bigarren boliviano", - "fi": "Bolivian boliviano", - "fr": "boliviano", - "gl": "Boliviano", - "he": "בוליביאנו", - "hr": "Bolivijski bolivijano", - "hu": "bolíviai boliviano", - "id": "Boliviano", - "it": "boliviano", - "ja": "ボリビアーノ", - "ko": "볼리비아 볼리비아노", - "lt": "Bolivianas", - "ms": "Boliviano", - "nl": "Boliviaanse boliviano", - "oc": "Boliviano", - "pa": "ਬੋਲੀਵੀਆਨੋ", - "pl": "boliviano", - "pt": "Boliviano", - "ru": "боливиано", - "sr": "боливијски боливијано", - "sv": "Boliviano", - "tr": "Boliviano", - "uk": "Болівіано", - "ta": "பொலிவியானோ" - }, - "BOV": { - "es": "Boliviano con mantenimiento de valor respecto al dólar estadounidense", - "en": "MVDOL" - }, - "BRL": { - "af": "Real", - "ar": "ريال برازيلي", - "bg": "Бразилски реал", - "ca": "real", - "cs": "Brazilský real", - "da": "brasiliansk real", - "de": "brasilianischer Real", - "en": "Brazilian real", - "eo": "brazila realo", - "es": "real brasileño", - "eu": "Brasildar real", - "fi": "Brasilian real", - "fr": "réal brésilien", - "gl": "Real brasileiro", - "he": "ריאל ברזילאי", - "hr": "Brazilski real", - "hu": "brazil real", - "id": "Real Brasil", - "it": "real brasiliano", - "ja": "レアル", - "ko": "브라질 헤알", - "lt": "Brazilijos realas", - "ms": "Real Brazil", - "nl": "Braziliaanse real", - "pa": "ਬ੍ਰਾਜ਼ੀਲੀ ਰਿਆਲ", - "pl": "Real brazylijski", - "pt": "real", - "ro": "Real", - "ru": "бразильский реал", - "sk": "Brazílsky real", - "sr": "бразилски реал", - "sv": "Real", - "ta": "பிரசிலியன் ரியால்", - "th": "เรอัลบราซิล", - "tr": "Brezilya reali", - "uk": "бразильський реал", - "vi": "Real Brasil", - "bn": "ব্রাজিলীয় রিয়েল", - "oc": "Real", - "sl": "brazilski real" - }, - "BSD": { - "ar": "دولار بهامي", - "bg": "Бахамски долар", - "ca": "dòlar de les Bahames", - "cs": "Bahamský dolar", - "de": "Bahama-Dollar", - "en": "Bahamian dollar", - "eo": "bahama dolaro", - "es": "dólar bahameño", - "eu": "Dolar bahamar", - "fi": "Bahaman dollari", - "fr": "dollar bahaméen", - "gl": "Dólar bahamés", - "hr": "Bahamski dolar", - "hu": "bahamai dollár", - "id": "Dolar Bahama", - "it": "dollaro delle Bahamas", - "ja": "バハマ・ドル", - "ko": "바하마 달러", - "lt": "Bahamų doleris", - "nl": "Bahamaanse dollar", - "oc": "Dolar de las Bahamas", - "pa": "ਬਹਾਮਾਸੀ ਡਾਲਰ", - "pl": "Dolar bahamski", - "pt": "dólar baamiano", - "ru": "багамский доллар", - "sk": "Bahamský dolár", - "sr": "бахамски долар", - "sv": "Bahamansk dollar", - "tr": "Bahama doları", - "uk": "Багамський долар", - "vi": "Đô la Bahamas", - "ta": "பஹ்மானிய டாலர்" - }, - "BTN": { - "af": "Bhoetanese ngultrum", - "ar": "نغولترم بوتاني", - "bg": "Бутански нгултрум", - "bn": "ভুটানি ঙুলট্রুম", - "ca": "Ngultrum", - "cs": "Bhútánský ngultrum", - "da": "Ngultrum", - "de": "Ngultrum", - "en": "ngultrum", - "eo": "butana ngultrumo", - "es": "ngultrum butanés", - "et": "Bhutani ngultrum", - "eu": "Ngultrum", - "fi": "Bhutanin ngultrum", - "fr": "ngultrum", - "gl": "Ngultrum", - "hr": "Butanski ngultrum", - "hu": "bhutáni ngultrum", - "id": "Ngultrum Bhutan", - "it": "Ngultrum del Bhutan", - "ja": "ニュルタム", - "ko": "부탄 눌트럼", - "lt": "Ngultrumas", - "ml": "ങൾട്രം", - "ms": "Ngultrum Bhutan", - "nl": "Bhutaanse ngultrum", - "pa": "ਭੂਟਾਨੀ ਙੁਲਤਰਮ", - "pl": "Ngultrum", - "pt": "ngultrum", - "ro": "Ngultrum", - "ru": "нгултрум", - "sk": "Ngultrum", - "sr": "бутански нгултрум", - "sv": "Ngultrum", - "ta": "பூட்டானின் இங்குல்ட்ரம்", - "th": "งุลตรัมภูฏาน", - "tr": "Ngultrum", - "uk": "Нгултрум", - "vi": "Ngultrum Bhutan", - "he": "נגולטורם", - "oc": "Ngultrum" - }, - "BWP": { - "af": "Botswana pula", - "ar": "بوتسوانا بولا", - "bg": "Ботсванска пула", - "ca": "pula", - "cs": "Botswanská pula", - "da": "Pula", - "de": "botswanischer Pula", - "en": "Botswana pula", - "eo": "bocvana pulao", - "es": "pula", - "et": "Botswana pula", - "eu": "Pula", - "fi": "Pula", - "fr": "pula", - "gl": "Pula", - "he": "פולה", - "hr": "Bocvanska pula", - "hu": "botswanai pula", - "id": "Pula Botswana", - "it": "pula del Botswana", - "ja": "プラ", - "ko": "보츠와나 풀라", - "lt": "Botsvanos pula", - "ml": "ബോട്സ്വാന പുല", - "ms": "Pula Botswana", - "nl": "Botswaanse pula", - "pl": "Pula", - "pt": "pula", - "ro": "Pula botswaniană", - "ru": "Ботсванская пула", - "sr": "боцванска пула", - "sv": "Pula", - "tr": "Botsvana pulası", - "uk": "ботсванська пула", - "oc": "Pula", - "ta": "போட்ஸ்வானா பூலா" - }, - "BYN": { - "ar": "روبل بلاروسي", - "bg": "Беларуска рубла", - "ca": "Ruble bielorús", - "cs": "Běloruský rubl", - "da": "Hviderussiske rubler", - "de": "Belarussischer Rubel", - "en": "Belarusian ruble", - "eo": "Belorusia rublo", - "es": "rublo bierlorruso", - "et": "Valgevene rubla", - "fi": "Valko-Venäjän rupla", - "fr": "Rouble biélorusse", - "gl": "Rublo belaruso", - "he": "רובל בלארוסי", - "hr": "Bjeloruski rubalj", - "hu": "belarusz rubel", - "id": "Rubel Belarus", - "it": "Rublo bielorusso", - "ja": "ベラルーシ・ルーブル", - "ko": "벨라루스 루블", - "lt": "Baltarusijos rublis", - "lv": "Baltkrievijas rublis", - "ms": "Rubel Belarus", - "nl": "Wit-Russische roebel", - "pa": "ਬੈਲਾਰੂਸੀ ਰੂਬਲ", - "pl": "Rubel białoruski", - "pt": "Rublo bielorrusso", - "ro": "Rublă belarusă", - "ru": "белорусский рубль", - "sk": "Bieloruský rubeľ", - "sl": "beloruski rubelj", - "sr": "Белоруска рубља", - "sv": "Belarusisk rubel", - "ta": "பெலருசிய ரூபிள்", - "tr": "Belarus rublesi", - "uk": "білоруський рубль", - "vi": "Rúp Belarus", - "cy": "rwbl Belarws" - }, - "BZD": { - "ar": "دولار بليزي", - "bg": "Белизийски долар", - "ca": "dòlar de Belize", - "cs": "Belizský dolar", - "de": "Belize-Dollar", - "en": "Belize dollar", - "eo": "beliza dolaro", - "es": "Dólar beliceño", - "eu": "Dolar belizetar", - "fi": "Belizen dollari", - "fr": "dollar bélizien", - "gl": "Dólar de Belize", - "he": "דולר בליזאי", - "hr": "Belizejski dolar", - "hu": "belize-i dollár", - "id": "Dolar Belize", - "it": "Dollaro del Belize", - "ja": "ベリーズ・ドル", - "ko": "벨리즈 달러", - "lt": "Belizo doleris", - "nl": "Belizaanse dollar", - "pa": "ਬੇਲੀਜ਼ੀ ਡਾਲਰ", - "pl": "Dolar Belize", - "pt": "Dólar de Belize", - "ru": "белизский доллар", - "sr": "белизејски долар", - "sv": "Belizisk dollar", - "tr": "Belize doları", - "uk": "Белізський долар", - "vi": "Đô la Belize", - "cy": "Doler (Belîs)", - "ta": "பெலலீசு டாலர்" - }, - "CAD": { - "af": "Kanadese Dollar", - "ar": "دولار كندي", - "bg": "канадски долар", - "bn": "কানাডীয় ডলার", - "ca": "dòlar canadenc", - "cs": "Kanadský dolar", - "da": "canadisk dollar", - "de": "kanadischer Dollar", - "en": "Canadian dollar", - "eo": "kanada dolaro", - "es": "dólar canadiense", - "et": "Kanada dollar", - "eu": "Kanadar dolar", - "fi": "Kanadan dollari", - "fr": "dollar canadien", - "gl": "Dólar canadense", - "he": "דולר קנדי", - "hr": "Kanadski dolar", - "hu": "kanadai dollár", - "ia": "Dollar canadian", - "id": "Dolar Kanada", - "it": "dollaro canadese", - "ja": "カナダドル", - "ko": "캐나다 달러", - "lt": "Kanados doleris", - "lv": "Kanādas dolārs", - "ms": "Dolar Kanada", - "nl": "Canadese dollar", - "pa": "ਕੈਨੇਡੀਆਈ ਡਾਲਰ", - "pl": "Dolar kanadyjski", - "pt": "dólar canadense", - "ro": "dolar canadian", - "ru": "канадский доллар", - "sk": "Kanadský dolár", - "sl": "kanadski dolar", - "sr": "канадски долар", - "sv": "kanadensisk dollar", - "ta": "கனடா டொலர்", - "th": "ดอลลาร์แคนาดา", - "tr": "Kanada doları", - "uk": "канадський долар", - "vi": "Đô la Canada", - "cy": "doler", - "oc": "Dolar canadian", - "pap": "dollar kanadiense" - }, - "CDF": { - "af": "Kongolese frank", - "ar": "فرنك كونغولي", - "bg": "Конгоански франк", - "ca": "franc congolès", - "cs": "Konžský frank", - "de": "Kongo-Franc", - "en": "Congolese franc", - "eo": "konga franko", - "es": "franco congoleño", - "fi": "Kongon frangi", - "fr": "franc congolais", - "gl": "Franco congolés", - "he": "פרנק קונגולזי", - "hr": "Kongoanski franak", - "hu": "kongói frank", - "id": "Franc Kongo", - "it": "franco congolese", - "ja": "コンゴ・フラン", - "ko": "콩고 프랑", - "lt": "Kongo frankas", - "nl": "Congolese frank", - "pl": "frank kongijski", - "pt": "franco congolês", - "ru": "конголезский франк", - "sk": "Konžský frank", - "sr": "конгоански франак", - "sv": "Kongolesisk franc", - "tr": "Kongo frangı", - "uk": "Конголезький франк", - "vi": "Franc Congo", - "cy": "ffranc y Congo", - "oc": "Franc congolés", - "sl": "kongovski frank" - }, - "CHF": { - "af": "Switserse frank", - "ar": "فرنك سويسري", - "bg": "швейцарски франк", - "bn": "সুইস ফ্রাংক", - "ca": "franc suís", - "cs": "švýcarský frank", - "da": "schweizisk franc", - "de": "Schweizer Franken", - "en": "Swiss franc", - "eo": "svisa franko", - "es": "franco suizo", - "et": "Šveitsi frank", - "eu": "Suitzar libera", - "fi": "Sveitsin frangi", - "fr": "franc suisse", - "gl": "Franco suízo", - "he": "פרנק שווייצרי", - "hr": "Švicarski franak", - "hu": "svájci frank", - "id": "Franc Swiss", - "it": "franco svizzero", - "ja": "スイス・フラン", - "ko": "스위스 프랑", - "lt": "Šveicarijos frankas", - "lv": "Šveices franks", - "ms": "Franc Swiss", - "nl": "Zwitserse frank", - "oc": "Franc soís", - "pa": "ਸਵਿੱਸ ਫ਼ਰਾਂਕ", - "pl": "frank szwajcarski", - "pt": "Franco suíço", - "ro": "Franc elvețian", - "ru": "швейцарский франк", - "sk": "Švajčiarsky frank", - "sl": "švicarski frank", - "sr": "швајцарски франак", - "sv": "schweizisk franc", - "ta": "சுவிசு பிராங்க்", - "th": "ฟรังก์สวิส", - "tr": "İsviçre frangı", - "uk": "швейцарський франк", - "vi": "Franc Thụy Sĩ", - "cy": "franc Swisaidd", - "ia": "franc switze", - "te": "స్విస్ ఫ్రాంక్" - }, - "CLF": { - "de": "Unidad de Fomento", - "en": "Unidad de Fomento", - "es": "Unidad de Fomento", - "fr": "Unidad de Fomento", - "pl": "Unidad de Fomento", - "ru": "Условная расчётная единица Чили", - "ja": "ウニダ・デ・フォメント" - }, - "CLP": { - "af": "Chileense Peso", - "ar": "بيزو تشيلي", - "bg": "Чилийско песо", - "ca": "peso xilè", - "cs": "Chilské peso", - "cy": "Peso Chile", - "de": "chilenischer Peso", - "en": "Chilean peso", - "eo": "ĉilia peso", - "es": "peso chileno", - "et": "Tšiili peeso", - "eu": "Peso txiletar", - "fi": "Chilen peso", - "fr": "peso chilien", - "gl": "Peso chileno", - "he": "פסו צ'יליאני", - "hr": "Čileanski pezo", - "hu": "chilei peso", - "id": "Peso Chili", - "it": "peso cileno", - "ja": "チリ・ペソ", - "ko": "칠레 페소", - "lt": "Čilės pesas", - "lv": "Čīles peso", - "ml": "ചിലിയൻ പെസോ", - "ms": "Peso Chile", - "nl": "Chileense peso", - "oc": "Peso de Chile", - "pa": "ਚਿਲੀਆਈ ਪੇਸੋ", - "pl": "Peso chilijskie", - "pt": "peso chileno", - "ro": "Peso chilian", - "ru": "чилийское песо", - "sl": "Čilenski peso", - "sr": "чилеански пезос", - "sv": "Chilensk peso", - "th": "เปโซชิลี", - "tr": "Şili pesosu", - "uk": "Чилійський песо", - "vi": "Peso Chile" - }, - "CNY": { - "af": "Renminbi", - "ar": "رنمينبي", - "bg": "китайски юан", - "bn": "রেন্মিন্বি", - "bo": "མི་དམངས་ཤོག་དངུལ", - "ca": "renminbi", - "cs": "čínský jüan", - "cy": "Renminbi", - "da": "Renminbi", - "de": "Renminbi", - "en": "renminbi", - "eo": "Renminbio", - "es": "yuan chino", - "et": "Renminbi", - "eu": "Renminbi", - "fi": "Renminbi", - "fr": "renminbi", - "gl": "Renminbi", - "he": "רנמינבי", - "hr": "Renminbi", - "hu": "renminbi", - "id": "Renminbi", - "it": "renminbi cinese", - "ja": "人民幣", - "ko": "런민비", - "lt": "Juanis", - "lv": "Juaņs", - "ms": "Renminbi", - "nl": "renminbi", - "oc": "Renminbi", - "pa": "ਰਨਮਿਨਬੀ", - "pl": "Renminbi", - "pt": "yuan", - "ro": "Yuan renminbi", - "ru": "китайский юань", - "sk": "Čínsky jüan", - "sl": "renminbi", - "sr": "ренминби", - "sv": "Renminbi", - "ta": "ரென்மின்பி", - "th": "เหรินหมินปี้", - "tr": "Renminbi", - "uk": "юань женьміньбі", - "vi": "nhân dân tệ", - "dv": "ރެންމިބީ" - }, - "COP": { - "ar": "بيزو كولومبي", - "bg": "Колумбийско песо", - "ca": "peso colombià", - "cs": "Kolumbijské peso", - "da": "Colombiansk peso", - "de": "kolumbianischer Peso", - "en": "Colombian peso", - "eo": "kolombia peso", - "es": "peso colombiano", - "et": "Colombia peeso", - "eu": "Peso kolonbiar", - "fi": "Kolumbian peso", - "fr": "peso colombien", - "gl": "Peso colombiano", - "he": "פסו קולומביאני", - "hr": "Kolumbijski pezo", - "hu": "kolumbiai peso", - "id": "Peso Kolombia", - "it": "peso colombiano", - "ja": "コロンビア・ペソ", - "ko": "콜롬비아 페소", - "lt": "Kolumbijos pesas", - "ms": "Peso Colombia", - "nl": "Colombiaanse peso", - "pa": "ਕੋਲੰਬੀਆਈ ਪੇਸੋ", - "pap": "Peso colombiano", - "pl": "Peso kolumbijskie", - "pt": "peso colombiano", - "ru": "колумбийское песо", - "sr": "колумбијски пезос", - "sv": "Colombiansk peso", - "tr": "Kolombiya pesosu", - "uk": "Колумбійський песо", - "vi": "Peso Colombia", - "oc": "Peso colombian", - "sl": "kolumbijski peso" - }, - "CRC": { - "af": "Costa Ricaanse colón", - "ar": "كولون كوستاريكي", - "bg": "Костарикански колон", - "ca": "colon costa-riqueny", - "cs": "Kostarický colón", - "de": "Costa-Rica-Colón", - "en": "Costa Rican colón", - "eo": "kostarika kolumbo", - "es": "colón costarricense", - "eu": "Colón costarricar", - "fi": "Costa Rican colón", - "fr": "colón", - "gl": "colón costarriqueño", - "hr": "Kostarikanski kolon", - "hu": "Costa Rica-i colón", - "id": "Colón Kosta Rika", - "it": "Colón costaricano", - "ja": "コスタリカ・コロン", - "ko": "코스타리카 콜론", - "lt": "Kosta Rikos kolonas", - "ms": "Colón Costa Rica", - "nl": "Costa Ricaanse colon", - "pa": "ਕੋਸਟਾ ਰੀਕਾਈ ਕੋਲੋਨ", - "pl": "Colon kostarykański", - "pt": "Colón costa-riquenho", - "ru": "костариканский колон", - "sr": "костарикански колон", - "sv": "Costaricansk colón", - "tr": "Kosta Rika colónu", - "uk": "Костариканський колон" - }, - "CUP": { - "ar": "بيزو كوبي", - "bg": "Кубинско песо", - "ca": "peso cubà", - "cs": "Kubánské peso", - "da": "Cubanske pesos", - "de": "kubanischer Peso", - "en": "Cuban peso", - "eo": "kuba peso", - "es": "peso cubano", - "fi": "Kuuban peso", - "fr": "peso cubain", - "he": "פסו קובני", - "hr": "Kubanski pezo", - "hu": "kubai peso", - "id": "Peso Kuba", - "it": "peso cubano", - "ja": "キューバ・ペソ", - "ko": "쿠바 페소", - "lt": "Kubos pesas", - "ms": "Peso Cuba", - "nl": "Cubaanse peso", - "pa": "ਕਿਊਬਾਈ ਪੇਸੋ", - "pl": "Peso kubańskie", - "pt": "peso cubano", - "ro": "Peso cubanez", - "ru": "кубинское песо", - "si": "කියුබාන් පේසෝ", - "sr": "кубански пезос", - "sv": "Kubansk peso", - "th": "เปโซคิวบา", - "tr": "Küba pesosu", - "uk": "Кубинський песо", - "vi": "Peso Cuba", - "cy": "peso (Ciwba)", - "sl": "kubanski peso" - }, - "CVE": { - "ar": "إيسكودو جزر الرأس الأخضر", - "bg": "Ескудо на Кабо Верде", - "ca": "escut de Cap Verd", - "cs": "Kapverdské escudo", - "da": "kapverdisk escudo", - "de": "Kap-Verde-Escudo", - "en": "Cape Verdean escudo", - "eo": "kaboverda eskudo", - "es": "escudo caboverdiano", - "fi": "Kap Verden escudo", - "fr": "escudo cap-verdien", - "hr": "Zelenortski eskudo", - "hu": "zöld-foki köztársasági escudo", - "id": "Escudo Tanjung Verde", - "it": "escudo capoverdiano", - "ja": "カーボベルデ・エスクード", - "ko": "카보베르데 이스쿠두", - "lt": "Žaliojo Kyšulio eskudas", - "nl": "Kaapverdische escudo", - "pl": "escudo Zielonego Przylądka", - "pt": "escudo cabo-verdiano", - "ru": "Эскудо Кабо-Верде", - "sr": "зеленортски ескудо", - "sv": "Kapverdisk escudo", - "tr": "Yeşil Burun Adaları eskudosu", - "uk": "Ескудо Кабо-Верде", - "vi": "Escudo Cabo Verde", - "he": "אשקודו כף ורדי", - "oc": "Escut de Cap Verd", - "sl": "zelenortski eskudo" - }, - "CZK": { - "ar": "كرونة تشيكية", - "bg": "крони", - "ca": "corona txeca", - "cs": "koruna česká", - "da": "tjekkiske koruna", - "de": "tschechische Krone", - "en": "Czech koruna", - "eo": "ĉeĥa krono", - "es": "corona checa", - "et": "Tšehhi kroon", - "eu": "Txekiar koroa", - "fi": "Tšekin koruna", - "fr": "couronne tchèque", - "gl": "Coroa checa", - "he": "קורונה צ'כית", - "hr": "Češka kruna", - "hu": "cseh korona", - "id": "Koruna Ceko", - "it": "corona ceca", - "ja": "チェコ・コルナ", - "ko": "체코 코루나", - "lt": "Čekijos krona", - "lv": "Čehijas krona", - "nl": "Tsjechische kroon", - "oc": "corona chèca", - "pa": "ਚੈੱਕ ਕੋਰੂਨਾ", - "pl": "Korona czeska", - "pt": "coroa checa", - "ro": "Coroană cehă", - "ru": "чешская крона", - "sk": "Česká koruna", - "sl": "češka krona", - "sr": "чешка круна", - "sv": "tjeckisk krona", - "ta": "செக் கொருனா", - "th": "โครูนาเช็ก", - "tr": "Çek korunası", - "uk": "чеська крона", - "vi": "Koruna Séc", - "bn": "চেক কোরুনা", - "cy": "Czech koruna", - "ia": "corona tchec" - }, - "DJF": { - "af": "Djiboeti frank", - "ar": "فرنك جيبوتي", - "bg": "Джибутски франк", - "ca": "franc de Djibouti", - "cs": "Džibutský frank", - "da": "Djiboutiske franc", - "de": "Dschibuti-Franc", - "en": "Djiboutian franc", - "eo": "ĝibutia franko", - "es": "franco yibutiano", - "fi": "Djiboutin frangi", - "fr": "franc Djibouti", - "hr": "Džibutski franak", - "hu": "dzsibuti frank", - "id": "Franc Jibuti", - "it": "franco gibutiano", - "ja": "ジブチ・フラン", - "ko": "지부티 프랑", - "lt": "Džibučio frankas", - "ms": "Franc Djibouti", - "nl": "Djiboutiaanse frank", - "pl": "frank Dżibuti", - "pt": "franco do Jibuti", - "ru": "Франк Джибути", - "sr": "џибутски франак", - "sv": "Djiboutisk franc", - "tr": "Cibuti frangı", - "uk": "Франк Джибуті", - "he": "פרנק ג'יבוטי" - }, - "DKK": { - "af": "Deense kroon", - "ar": "كرونة دنماركية", - "bg": "Датска крона", - "ca": "corona danesa", - "cs": "Dánská koruna", - "da": "dansk krone", - "de": "dänische Krone", - "en": "Danish krone", - "eo": "dana krono", - "es": "corona danesa", - "et": "Taani kroon", - "eu": "Daniar koroa", - "fi": "Tanskan kruunu", - "fr": "couronne danoise", - "gl": "Coroa dinamarquesa", - "he": "כתר דני", - "hr": "Danska kruna", - "hu": "dán korona", - "id": "Krona Denmark", - "it": "corona danese", - "ja": "デンマーク・クローネ", - "ko": "덴마크 크로네", - "lt": "Danijos krona", - "lv": "Dānijas krona", - "ms": "Krone Denmark", - "nl": "Deense kroon", - "oc": "Corona danesa", - "pa": "ਡੈੱਨਮਾਰਕੀ ਕਰੋਨ", - "pl": "korona duńska", - "pt": "coroa dinamarquesa", - "ro": "Coroană daneză", - "ru": "датская крона", - "sk": "Dánska koruna", - "sr": "данска круна", - "sv": "dansk krona", - "ta": "டானிய குரோன்", - "th": "โครเนอเดนมาร์ก", - "tr": "Danimarka kronu", - "uk": "данська крона", - "vi": "Krone Đan Mạch", - "cy": "Krone Danaidd", - "ia": "corona danese", - "sl": "danska krona" - }, - "DOP": { - "ar": "بيزو دومنيكاني", - "bg": "Доминиканско песо", - "ca": "peso dominicà", - "cs": "Dominikánské peso", - "de": "dominikanischer Peso", - "en": "Dominican peso", - "eo": "dominga peso", - "es": "peso dominicano", - "eu": "Peso dominikar", - "fi": "Dominikaanisen tasavallan peso", - "fr": "peso dominicain", - "he": "פסו דומיניקני", - "hr": "Dominikanski pezo", - "hu": "dominikai peso", - "id": "Peso Dominika", - "it": "peso dominicano", - "ja": "ドミニカ・ペソ", - "ko": "도미니카 페소", - "lt": "Dominikos pesas", - "nl": "Dominicaanse peso", - "pa": "ਡੋਮਿਨਿਕਾਈ ਪੇਸੋ", - "pl": "Peso dominikańskie", - "pt": "peso dominicano", - "ru": "доминиканское песо", - "sr": "доминикански пезос", - "sv": "Dominikansk peso", - "tr": "Dominik pesosu", - "uk": "Домініканський песо", - "cy": "Peso Dominica", - "ro": "peso dominican" - }, - "DZD": { - "ar": "دينار جزائري", - "bg": "Алжирски динар", - "ca": "dinar algerià", - "cs": "Alžírský dinár", - "cy": "Dinar Algeriaidd", - "de": "algerischer Dinar", - "en": "Algerian dinar", - "eo": "alĝeria dinaro", - "es": "dinar argelino", - "eu": "Aljeriar dinar", - "fi": "Algerian dinaari", - "fr": "dinar algérienne", - "gl": "Dinar alxeriano", - "he": "דינר אלג'ירי", - "hr": "Alžirski dinar", - "hu": "algériai dinár", - "id": "Dinar Aljazair", - "it": "dinaro algerino", - "ja": "アルジェリア・ディナール", - "ko": "알제리 디나르", - "lt": "Alžyro dinaras", - "ml": "അൾജീരിയൻ ദിനാർ", - "ms": "Dinar Algeria", - "nl": "Algerijnse dinar", - "pl": "dinar algierski", - "pt": "dinar argelino", - "ro": "Dinar algerian", - "ru": "алжирский динар", - "sr": "алжирски динар", - "sv": "Algerisk dinar", - "tr": "Cezayir dinarı", - "uk": "Алжирський динар", - "vi": "Dinar Algérie", - "sl": "alžirski dinar", - "ta": "அல்ஜீரிய தினார்" - }, - "EGP": { - "ar": "جنيه مصري", - "bg": "Египетска лира", - "bn": "মিশরীয় পাউন্ড", - "ca": "lliura egípcia", - "cs": "egyptská libra", - "de": "ägyptisches Pfund", - "en": "Egyptian pound", - "eo": "egipta pundo", - "es": "libra egipcia", - "et": "Egiptuse nael", - "eu": "Egiptoar libera", - "fi": "Egyptin punta", - "fr": "livre égyptienne", - "gl": "Libra exipcia", - "he": "לירה מצרית", - "hr": "Egipatska funta", - "hu": "egyiptomi font", - "id": "Pound Mesir", - "it": "sterlina egiziana", - "ja": "エジプト・ポンド", - "ko": "이집트 파운드", - "lt": "Egipto svaras", - "ms": "Paun Mesir", - "nl": "Egyptisch pond", - "pa": "ਮਿਸਰੀ ਪਾਊਂਡ", - "pl": "Funt egipski", - "pt": "libra egípcia", - "ro": "Liră egipteană", - "ru": "египетский фунт", - "sr": "египатска фунта", - "sv": "Egyptiskt pund", - "th": "ปอนด์อียิปต์", - "tr": "Mısır lirası", - "uk": "Єгипетський фунт", - "vi": "Bảng Ai Cập", - "cy": "punt yr Aifft", - "da": "egyptiske pund", - "oc": "Liura egipciana", - "sk": "Egyptská libra", - "sl": "egiptovski funt" - }, - "ERN": { - "ar": "ناكفا", - "ca": "nakfa", - "cs": "Eritrejská nakfa", - "da": "Nakfa", - "de": "eritreischer Nakfa", - "en": "nakfa", - "eo": "eritrea nakfo", - "es": "nakfa", - "fi": "Eritrean nakfa", - "fr": "nakfa érythréen", - "gl": "Nakfa", - "he": "נאקפה", - "hr": "Eritrejska nakfa", - "hu": "eritreai nakfa", - "id": "Nakfa Eritrea", - "it": "nacfa eritreo", - "ja": "ナクファ", - "ko": "에리트레아 낙파", - "lt": "Nakfa", - "ms": "Nakfa Eritrea", - "nl": "Eritrese nakfa", - "pl": "Nakfa", - "pt": "nakfa", - "ru": "эритрейская накфа", - "sr": "еритрејска накфа", - "sv": "Nakfa", - "tr": "Eritre nakfası", - "uk": "Еритрейська накфа" - }, - "ETB": { - "af": "Birr", - "ar": "بير إثيوبي", - "bg": "Етиопски бир", - "ca": "birr", - "cs": "Etiopský birr", - "da": "Etiopiske birr", - "de": "Äthiopischer Birr", - "en": "birr", - "eo": "etiopa birro", - "es": "Birr etíope", - "fi": "Etiopian birr", - "fr": "Birr", - "he": "ביר אתיופי", - "hr": "Etiopski bir", - "hu": "etióp birr", - "id": "Birr Etiopia", - "it": "birr etiope", - "ja": "ブル", - "ko": "에티오피아 비르", - "lt": "Etiopijos biras", - "ms": "Birr Habsyah", - "nl": "Ethiopische birr", - "pl": "Birr", - "pt": "Birr etíope", - "ru": "эфиопский быр", - "sr": "етиопски бир", - "sv": "Etiopisk Birr", - "tr": "Birr", - "uk": "Ефіопський бир" - }, - "EUR": { - "af": "Euro", - "ar": "يورو", - "bg": "евро", - "bn": "ইউরো", - "ca": "euro", - "cs": "euro", - "cy": "Ewro", - "da": "euro", - "de": "Euro", - "en": "euro", - "eo": "eŭro", - "es": "euro", - "et": "Euro", - "eu": "Euro", - "fi": "euro", - "fr": "euro", - "gl": "euro", - "he": "אירו", - "hr": "Euro", - "hu": "euró", - "ia": "Euro", - "id": "Euro", - "it": "euro", - "ja": "ユーロ", - "ko": "유로", - "lt": "Euras", - "lv": "eiro", - "ml": "യൂറോ", - "ms": "euro", - "nl": "euro", - "oc": "Èuro", - "pa": "ਯੂਰੋ", - "pap": "Euro", - "pl": "euro", - "pt": "euro", - "ro": "euro", - "ru": "евро", - "sk": "euro", - "sl": "evro", - "sr": "евро", - "sv": "euro", - "szl": "Ojro", - "ta": "ஐரோ", - "te": "యూరో", - "th": "ยูโร", - "tr": "Euro", - "uk": "євро", - "vi": "Euro" - }, - "FJD": { - "ar": "دولار فيجي", - "bg": "Фиджийски долар", - "ca": "dòlar fijià", - "cs": "Fidžijský dolar", - "de": "Fidschi-Dollar", - "en": "Fijian dollar", - "eo": "fiĝia dolaro", - "es": "dólar fiyiano", - "fi": "Fidžin dollari", - "fr": "dollar des Fidji", - "gl": "Dólar fidxiano", - "hr": "Fidžijski dolar", - "hu": "fidzsi dollár", - "id": "Dolar Fiji", - "it": "dollaro delle Figi", - "ja": "フィジー・ドル", - "ko": "피지 달러", - "lt": "Fidžio doleris", - "lv": "Fidži dolārs", - "ml": "ഫിജിയൻ ഡോളർ", - "ms": "Dolar Fiji", - "nl": "Fiji-dollar", - "pl": "Dolar Fidżi", - "pt": "dólar de Fiji", - "ro": "Dolar fijian", - "ru": "доллар Фиджи", - "sk": "Fidžijský dolár", - "sr": "фиџијски долар", - "sv": "Fijidollar", - "ta": "பிஜி டாலர்", - "tr": "Fiji doları", - "uk": "долар Фіджі", - "da": "Fijiansk dollar", - "he": "דולר פיג'י" - }, - "FKP": { - "ar": "جنيه جزر فوكلاند", - "ca": "lliura de les Malvines", - "cs": "falklandská libra", - "de": "Falkland-Pfund", - "en": "Falkland Islands pound", - "eo": "falklanda pundo", - "es": "libra malvinense", - "eu": "Libera falklandar", - "fi": "Falklandin punta", - "fr": "livre des Îles Malouines", - "he": "לירה שטרלינג של איי פוקלנד", - "hr": "Falklandska funta", - "hu": "Falkland-szigeteki font", - "id": "Pound Kepulauan Falkland", - "it": "sterlina delle Falkland", - "ja": "フォークランド諸島ポンド", - "ko": "포클랜드 제도 파운드", - "lt": "Folklando svaras", - "nl": "Falklandeilands pond", - "pa": "ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ ਪਾਊਂਡ", - "pl": "Funt falklandzki", - "pt": "libra das Malvinas", - "ro": "Liră din Insulele Falkland", - "ru": "фунт Фолклендских островов", - "sv": "Falklandspund", - "tr": "Falkland Adaları poundu", - "uk": "Фолклендський фунт" - }, - "GBP": { - "af": "pond sterling", - "ar": "جنيه إسترليني", - "bg": "британска лира", - "bn": "পাউন্ড স্টার্লিং", - "ca": "lliura esterlina", - "cs": "libra šterlinků", - "cy": "punt sterling", - "da": "britisk pund", - "de": "Pfund Sterling", - "en": "pound sterling", - "eo": "brita pundo", - "es": "libra esterlina", - "et": "Suurbritannia naelsterling", - "eu": "libera esterlina", - "fi": "Englannin punta", - "fr": "livre sterling", - "gl": "libra esterlina", - "he": "לירה שטרלינג", - "hr": "Britanska funta", - "hu": "font sterling", - "id": "pound sterling", - "it": "sterlina britannica", - "ja": "スターリング・ポンド", - "ko": "파운드 스털링", - "lt": "Svaras sterlingų", - "lv": "sterliņu mārciņa", - "ms": "paun sterling", - "nl": "pond sterling", - "oc": "liure esterlina", - "pa": "ਪਾਊਂਡ ਸਟਰਲਿੰਗ", - "pl": "funt szterling", - "pt": "libra esterlina", - "ro": "liră sterlină", - "ru": "фунт стерлингов", - "sk": "libra šterlingov", - "sl": "funt šterling", - "sr": "британска фунта", - "sv": "Brittiskt pund", - "ta": "பிரித்தானிய பவுண்டு", - "th": "ปอนด์สเตอร์ลิง", - "tr": "İngiliz sterlini", - "uk": "фунт стерлінгів", - "vi": "Bảng Anh", - "ia": "libra sterling" - }, - "GEL": { - "ar": "لاري جورجي", - "bg": "Грузинско лари", - "ca": "lari", - "cs": "Gruzínské lari", - "da": "Lari", - "de": "georgischer Lari", - "en": "Georgian lari", - "eo": "kartvela lario", - "es": "lari georgiano", - "et": "Lari", - "fi": "Georgian lari", - "fr": "lari", - "gl": "Lari (moeda)", - "he": "לארי גאורגי", - "hr": "Gruzijski lari", - "hu": "grúz lari", - "ia": "lari georgian", - "id": "Lari", - "it": "lari georgiano", - "ja": "ラリ", - "ko": "조지아 라리", - "lt": "Laris", - "lv": "Gruzijas lars", - "nl": "Georgische lari", - "pa": "ਜਾਰਜੀਆਈ ਲਾਰੀ", - "pl": "Lari", - "pt": "lari", - "ro": "Lari", - "ru": "грузинский лари", - "sk": "Gruzínske lari", - "sr": "грузијски лари", - "sv": "Georgiska lari", - "ta": "ஜார்ஜிய லாரி", - "tr": "Gürcü larisi", - "uk": "Ларі", - "vi": "Lari Gruzia", - "oc": "Lari", - "sl": "gruzijski lari" - }, - "GHS": { - "ar": "سيدي غاني", - "bg": "Ганайско кеди", - "ca": "cedi", - "cs": "Ghanský cedi", - "cy": "Cedi", - "da": "Cedi", - "de": "Cedi", - "en": "Ghana cedi", - "eo": "ganaa cedio", - "es": "cedi", - "fi": "Cedi", - "fr": "cedi", - "gl": "Cedi", - "hr": "Ganski cedi", - "hu": "ghánai cedi", - "id": "Cedi Ghana", - "it": "cedi ghanese", - "ja": "セディ", - "ko": "가나 세디", - "lt": "Sedis", - "ms": "Cedi Ghana", - "nl": "Ghanese cedi", - "pl": "Cedi", - "pt": "cedi", - "ru": "Ганский седи", - "sk": "Cedi", - "sr": "гански седи", - "sv": "Ghana Cedi", - "tr": "Cedi", - "uk": "Ганський седі", - "he": "סדי גאני", - "oc": "Cedi", - "sl": "ganski cedi" - }, - "GIP": { - "ar": "جنيه جبل طارق", - "bg": "Гибралтарска лира", - "ca": "lliura de Gibraltar", - "cs": "gibraltarská libra", - "da": "Gibraltar-pund", - "de": "Gibraltar-Pfund", - "en": "Gibraltar pound", - "eo": "ĝibraltara pundo", - "es": "libra gibraltareña", - "et": "Gibraltari nael", - "fi": "Gibraltarin punta", - "fr": "livre de Gibraltar", - "gl": "Libra de Xibraltar", - "hr": "Gibraltarska funta", - "hu": "gibraltári font", - "id": "Pound Gibraltar", - "it": "sterlina di Gibilterra", - "ja": "ジブラルタル・ポンド", - "ko": "지브롤터 파운드", - "lt": "Gibraltaro svaras", - "nl": "Gibraltarees pond", - "pa": "ਜਿਬਰਾਲਟਰ ਪਾਊਂਡ", - "pl": "Funt gibraltarski", - "pt": "libra de Gibraltar", - "ro": "Liră din Gibraltar", - "ru": "Гибралтарский фунт", - "sk": "Gibraltárska libra", - "sr": "гибралтарска фунта", - "sv": "Gibraltarpund", - "ta": "கிப்ரால்ட்டர் பவுண்டு", - "tr": "Cebelitarık sterlini", - "uk": "Гібралтарський фунт", - "vi": "Bảng Gibraltar", - "cy": "punt Gibraltar", - "he": "לירה גיברלטרית" - }, - "GMD": { - "af": "Dalasi", - "ar": "دالاسي غامبي", - "bg": "Гамбийско даласи", - "ca": "dalasi", - "cs": "Gambijský dalasi", - "de": "Dalasi", - "en": "dalasi", - "eo": "gambia dalasio", - "es": "dalasi", - "et": "Dalasi", - "eu": "Dalasi", - "fi": "Dalasi", - "fr": "Dalasi", - "hr": "Gambijski dalasi", - "hu": "gambiai dalasi", - "id": "Dalasi Gambia", - "it": "Dalasi gambese", - "ja": "ダラシ", - "ko": "감비아 달라시", - "lt": "Dalasis", - "lv": "Dalasi", - "ms": "Dalasi Gambia", - "nl": "Gambiaanse dalasi", - "oc": "Dalasi", - "pl": "Dalasi", - "pt": "Dalasi", - "ru": "гамбийский даласи", - "sr": "гамбијски даласи", - "sv": "Dalasi", - "tr": "Dalasi", - "uk": "Даласі", - "he": "דלסי", - "sl": "dalasi" - }, - "GNF": { - "ar": "فرنك غيني", - "bg": "Гвинейски франк", - "ca": "franc guineà", - "cs": "Guinejský frank", - "de": "Franc Guinéen", - "en": "Guinean franc", - "eo": "gvinea franko", - "es": "Franco guineano", - "fi": "Guinean frangi", - "fr": "franc guinéen", - "he": "פרנק גינאי", - "hr": "Gvinejski franak", - "hu": "guineai frank", - "id": "Franc Guinea", - "it": "Franco guineano", - "ja": "ギニア・フラン", - "ko": "기니 프랑", - "lt": "Gvinėjos frankas", - "ms": "Franc Guinea", - "nl": "Guineese frank", - "pl": "frank gwinejski", - "pt": "Franco da Guiné", - "ru": "Гвинейский франк", - "sr": "гвинејски франак", - "sv": "Guinesisk franc", - "tr": "Gine frangı", - "uk": "Гвінейський франк" - }, - "GTQ": { - "af": "Guatemalaanse quetzal", - "ar": "كتزال غواتيمالي", - "bg": "Гватемалски кецал", - "ca": "quetzal", - "cs": "Guatemalský quetzal", - "de": "guatemaltekischer Quetzal", - "en": "quetzal", - "eo": "gvatemala kecalo", - "es": "quetzal", - "eu": "Quetzal", - "fi": "Guatemalan quetzal", - "fr": "Quetzal", - "gl": "Quetzal", - "he": "קצאל", - "hr": "Gvatemalski kvecal", - "hu": "guatemalai quetzal", - "id": "Quetzal Guatemala", - "it": "Quetzal guatemalteco", - "ja": "ケツァル", - "ko": "과테말라 케찰", - "lt": "Gvatemalos kecalis", - "nl": "Guatemalteekse quetzal", - "oc": "Quetzal", - "pa": "ਗੁਆਤੇਮਾਲਾਈ ਕੇਤਸਾਲ", - "pl": "Quetzal", - "pt": "Quetzal", - "ru": "гватемальский кетсаль", - "sr": "гватемалски квецал", - "sv": "Quetzal", - "tr": "Guatemala quetzalı", - "uk": "Гватемальський кетсаль", - "cy": "Quetzal Gwatemala" - }, - "GYD": { - "ar": "دولار غوياني", - "bg": "Гаянски долар", - "ca": "dòlar de Guyana", - "cs": "Guyanský dolar", - "de": "Guyana-Dollar", - "en": "Guyanese dollar", - "eo": "gujana dolaro", - "es": "dólar guyanés", - "eu": "Dolar guyanar", - "fi": "Guyanan dollari", - "fr": "Dollar guyanien", - "gl": "Dólar güianés", - "hr": "Gvajanski dolar", - "hu": "guyanai dollár", - "id": "Dolar Guyana", - "it": "Dollaro della Guyana", - "ja": "ガイアナ・ドル", - "ko": "가이아나 달러", - "lt": "Gajanos doleris", - "ms": "Dolar Guyana", - "nl": "Guyaanse dollar", - "pa": "ਗੁਇਆਨਾਈ ਡਾਲਰ", - "pl": "dolar gujański", - "pt": "Dólar da Guiana", - "ro": "Dolar guyanez", - "ru": "гайанский доллар", - "sr": "гвајански долар", - "sv": "Guyansk dollar", - "tr": "Guyana doları", - "uk": "Гаянський долар", - "he": "דולר גיאני" - }, - "HKD": { - "af": "Hongkong-dollar", - "ar": "دولار هونغ كونغ", - "bg": "Хонконгски долар", - "ca": "dòlar de Hong Kong", - "cs": "hongkongský dolar", - "cy": "Doler Hong Kong", - "da": "Hongkong-dollar", - "de": "Hongkong-Dollar", - "en": "Hong Kong dollar", - "eo": "honkonga dolaro", - "es": "dólar de Hong Kong", - "et": "Hongkongi dollar", - "eu": "Dolar hongkongtar", - "fi": "Hongkongin dollari", - "fr": "dollar de Hong Kong", - "gl": "Dólar de Hong Kong", - "he": "דולר הונג קונגי", - "hr": "Honkonški dolar", - "hu": "hongkongi dollár", - "id": "Dolar Hong Kong", - "it": "dollaro di Hong Kong", - "ja": "香港ドル", - "ko": "홍콩 달러", - "lt": "Honkongo doleris", - "ml": "ഹോങ്കോങ്ങ് ഡോളർ", - "ms": "Dolar Hong Kong", - "nl": "Hongkongse dollar", - "pa": "ਹਾਂਗਕਾਂਗ ਡਾਲਰ", - "pl": "dolar Hongkongu", - "pt": "dólar de Hong Kong", - "ru": "гонконгский доллар", - "sk": "Hongkonský dolár", - "sr": "хонгконшки долар", - "sv": "Hongkongdollar", - "ta": "ஹொங்கொங் டொலர்", - "th": "ดอลลาร์ฮ่องกง", - "tr": "Hong Kong doları", - "uk": "гонконзький долар", - "vi": "đô la Hồng Kông", - "ro": "dolar din Hong Kong" - }, - "HNL": { - "af": "Hondurese lempira", - "ar": "لمبيرة هندوراسية", - "bg": "Хондураска лемпира", - "ca": "lempira", - "cs": "Honduraská lempira", - "de": "Lempira", - "en": "Honduran lempira", - "eo": "hondura lempiro", - "es": "lempira", - "eu": "Lempira", - "fi": "Hondurasin lempira", - "fr": "lempira", - "he": "למפירה", - "hr": "Honduraška lempira", - "hu": "hondurasi lempira", - "id": "Lempira Honduras", - "it": "lempira honduregna", - "ja": "レンピラ", - "ko": "온두라스 렘피라", - "lt": "Hondūro lempira", - "ms": "Lempira Honduras", - "nl": "Hondurese lempira", - "oc": "Lempira", - "pa": "ਹਾਂਡੂਰਾਸੀ ਲੈਂਪੀਰਾ", - "pl": "Lempira", - "pt": "lempira", - "ro": "Lempira", - "ru": "гондурасская лемпира", - "sr": "хондурашка лемпира", - "sv": "Lempira", - "tr": "Honduras lempirası", - "uk": "Гондураська лемпіра", - "cy": "Lempira Hondwraidd" - }, - "HTG": { - "ar": "جوردة هايتية", - "ca": "gourde", - "cs": "Haitský gourde", - "da": "Gourde", - "de": "Gourde", - "en": "Gourde", - "eo": "haitia gurdo", - "es": "gourde", - "eu": "Gourde", - "fi": "Haitin gourde", - "fr": "gourde", - "he": "גורד", - "hr": "Haićanski gourd", - "hu": "haiti gourde", - "id": "Gourde Haiti", - "it": "Gourde haitiano", - "ja": "グールド", - "ko": "아이티 구르드", - "lt": "Gurdas", - "ms": "Gourde Haiti", - "nl": "Haïtiaanse gourde", - "pa": "ਹੈਤੀਆਈ ਗੂਰਦ", - "pl": "Gourde", - "pt": "Gourde", - "ru": "гаитянский гурд", - "sr": "хаићански гурд", - "sv": "Gourde", - "tr": "Gourde", - "uk": "Гаїтянський гурд" - }, - "HUF": { - "af": "Hongaarse forint", - "ar": "فورنت مجري", - "bg": "Унгарски форинт", - "ca": "fòrint", - "cs": "maďarský forint", - "da": "Forint", - "de": "Forint", - "en": "forint", - "eo": "hungara forinto", - "es": "forinto húngaro", - "et": "Forint", - "eu": "Hungariar forint", - "fi": "Unkarin forintti", - "fr": "forint", - "gl": "Florín húngaro", - "he": "פורינט", - "hr": "Mađarska forinta", - "hu": "magyar forint", - "id": "Forint", - "it": "fiorino ungherese", - "ja": "フォリント", - "ko": "헝가리 포린트", - "lt": "Forintas", - "lv": "Ungārijas forints", - "ms": "Forint", - "nl": "Hongaarse forint", - "pa": "ਹੰਗਰੀਆਈ ਫ਼ੋਰਿੰਟ", - "pl": "forint", - "pt": "florim húngaro", - "ro": "Forint", - "ru": "венгерский форинт", - "sk": "Maďarský forint", - "sl": "madžarski forint", - "sr": "мађарска форинта", - "sv": "Forint", - "ta": "அங்கேரிய போரிண்ட்", - "th": "โฟรินต์ฮังการี", - "tr": "Macar forinti", - "uk": "угорський форинт", - "vi": "Forint", - "ia": "forint hungare" - }, - "IDR": { - "ar": "روبية إندونيسية", - "bg": "Индонезийска рупия", - "ca": "rupia indonèsia", - "cs": "Indonéská rupie", - "da": "Rupiah", - "de": "indonesische Rupiah", - "en": "rupiah", - "eo": "indonezia rupio", - "es": "rupia indonesia", - "eu": "Indonesiar errupia", - "fi": "Indonesian rupia", - "fr": "roupie indonésienne", - "hr": "Indonezijska rupija", - "hu": "indonéz rúpia", - "id": "Rupiah Indonesia", - "it": "rupia indonesiana", - "ja": "ルピア", - "ko": "인도네시아 루피아", - "lt": "Indonezijos rupija", - "ml": "റുപിയ", - "ms": "Rupiah Indonesia", - "nl": "Indonesische roepia", - "pa": "ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੂਪੀਆ", - "pl": "rupia indonezyjska", - "pt": "rupia indonésia", - "ru": "индонезийская рупия", - "sl": "Indonezijska rupija", - "sr": "индонежанска рупија", - "sv": "Rupiah", - "ta": "இந்தோனேசிய ரூபாய்", - "th": "รูปียะฮ์", - "tr": "Endonezya rupiahı", - "uk": "індонезійська рупія", - "vi": "Rupiah", - "he": "רופיה אינדונזית", - "lv": "Indonēzijas rūpija", - "oc": "ropia d'Indonesia" - }, - "ILS": { - "af": "Nuwe sjekel", - "ar": "شيكل إسرائيلي جديد", - "bg": "Израелски шекел", - "bn": "ইসরায়েলি শেকেল", - "ca": "nou xéquel", - "cs": "nový izraelský šekel", - "cy": "Sicl newydd Israel", - "da": "Ny Shekel", - "de": "Schekel", - "en": "new shekel", - "eo": "nova israela siklo", - "es": "nuevo séquel", - "et": "Iisraeli seekel", - "eu": "Shekel berri", - "fi": "Uusi Israelin sekeli", - "fr": "shekel", - "gl": "Novo sheqel", - "he": "שקל חדש", - "hr": "Izraelski novi šekel", - "hu": "izraeli új sékel", - "id": "Shekel baru Israel", - "it": "nuovo siclo israeliano", - "ja": "新シェケル", - "ko": "이스라엘 신 셰켈", - "lt": "Izraelio naujasis šekelis", - "lv": "Izraēlas šekelis", - "ml": "ഇസ്രയേലി പുതിയ ഷെക്കൽ", - "ms": "Sheqel Baru Israel", - "nl": "Israëlische sjekel", - "pa": "ਇਜ਼ਰਾਇਲੀ ਨਵਾਂ ਸ਼ੇਕਲ", - "pl": "Nowy izraelski szekel", - "pt": "novo shekel israelense", - "ro": "Shekel", - "ru": "новый израильский шекель", - "sk": "Nový izraelský šekel", - "sr": "нови израелски шекел", - "sv": "Shekel", - "ta": "புது இசுரேலிய சேக்கல்", - "tr": "Yeni İsrail Şekeli", - "uk": "ізраїльський новий шекель", - "oc": "shekel novèl", - "sl": "novi šekel" - }, - "INR": { - "af": "Indiese roepee", - "ar": "روبية هندية", - "bg": "Индийска рупия", - "bn": "ভারতীয় টাকা", - "ca": "rupia índia", - "cs": "Indická rupie", - "da": "indisk rupi", - "de": "Indische Rupie", - "en": "Indian rupee", - "eo": "barata rupio", - "es": "rupia india", - "et": "India ruupia", - "eu": "Indiar errupia", - "fi": "Intian rupia", - "fr": "roupie indienne", - "he": "רופי הודי", - "hr": "Indijska rupija", - "hu": "indiai rúpia", - "id": "Rupee India", - "it": "rupia indiana", - "ja": "インド・ルピー", - "ko": "인도 루피", - "lt": "Indijos rupija", - "lv": "Indijas rūpija", - "ml": "ഇന്ത്യൻ രൂപ", - "ms": "Rupee India", - "nl": "Indiase roepie", - "oc": "Ropia d'Índia", - "pa": "ਭਾਰਤੀ ਰੁਪਈਆ", - "pl": "Rupia indyjska", - "pt": "rupia indiana", - "ro": "Rupie indiană", - "ru": "индийская рупия", - "sk": "Indická rupia", - "sr": "индијска рупија", - "sv": "Indisk rupee", - "ta": "இந்திய ரூபாய்", - "te": "రూపాయి", - "th": "รูปีอินเดีย", - "tr": "Hindistan rupisi", - "uk": "індійська рупія", - "vi": "Rupee Ấn Độ", - "cy": "rupee Indiaidd", - "sl": "indijska rupija" - }, - "IQD": { - "ar": "دينار عراقي", - "bg": "Иракски динар", - "ca": "dinar iraquià", - "cs": "irácký dinár", - "da": "Irakiske dinarer", - "de": "irakischer Dinar", - "en": "Iraqi dinar", - "eo": "iraka dinaro", - "es": "dinar iraquí", - "fi": "Irakin dinaari", - "fr": "dinar irakien", - "he": "דינר עיראקי", - "hr": "Irački dinar", - "hu": "iraki dinár", - "id": "Dinar Irak", - "it": "dinaro iracheno", - "ja": "イラク・ディナール", - "ko": "이라크 디나르", - "lt": "Irako dinaras", - "ms": "Dinar Iraq", - "nl": "Iraakse dinar", - "pa": "ਇਰਾਕੀ ਦਿਨਾਰ", - "pl": "Dinar iracki", - "pt": "dinar iraquiano", - "ru": "иракский динар", - "sr": "ирачки динар", - "sv": "Irakisk dinar", - "th": "ดินาร์อิรัก", - "tr": "Irak dinarı", - "uk": "Іракський динар", - "sl": "iraški dinar", - "ta": "இராக்கிய தீனார்" - }, - "IRR": { - "ar": "ريال إيراني", - "bg": "Ирански риал", - "bn": "ইরানি রিয়াল", - "ca": "rial iranià", - "cs": "Íránský riál", - "da": "Rial", - "de": "iranischer Rial", - "en": "Iranian rial", - "eo": "irana rialo", - "es": "rial iraní", - "eu": "Irandar rial", - "fi": "Iranin rial", - "fr": "rial iranien", - "he": "ריאל איראני", - "hr": "Iranski rijal", - "hu": "iráni riál", - "id": "Rial Iran", - "it": "riyal iraniano", - "ja": "イラン・リヤル", - "ko": "이란 리알", - "lt": "Irano rialas", - "lv": "Irānas riāls", - "ms": "Rial Iran", - "nl": "Iraanse rial", - "pa": "ਇਰਾਨੀ ਰਿਆਲ", - "pl": "Rial irański", - "pt": "rial iraniano", - "ro": "Rial iranian", - "ru": "иранский риал", - "sk": "Iránsky rial", - "sr": "ирански ријал", - "sv": "Iransk rial", - "tr": "İran riyali", - "uk": "Іранський ріал", - "vi": "Rial Iran", - "cy": "rial Iranaidd", - "oc": "rial", - "sl": "iranski rial" - }, - "ISK": { - "ar": "كرونة آيسلندية", - "bg": "Исландска крона", - "bn": "আইসল্যান্ডীয় ক্রোনা", - "ca": "corona islandesa", - "cs": "Islandská koruna", - "da": "islandsk króna", - "de": "isländische Krone", - "en": "Icelandic króna", - "eo": "islanda krono", - "es": "corona islandesa", - "et": "Islandi kroon", - "eu": "Islandiar koroa", - "fi": "Islannin kruunu", - "fr": "couronne islandaise", - "gl": "Coroa islandesa", - "he": "קרונה איסלנדית", - "hr": "Islandska kruna", - "hu": "izlandi korona", - "id": "Króna Islandia", - "it": "corona islandese", - "ja": "アイスランド・クローナ", - "ko": "아이슬란드 크로나", - "lt": "Islandijos krona", - "nl": "IJslandse kroon", - "pa": "ਆਈਸਲੈਂਡੀ ਕਰੋਨਾ", - "pl": "Korona islandzka", - "pt": "coroa islandesa", - "ro": "Coroană islandeză", - "ru": "исландская крона", - "sk": "Islandská koruna", - "sl": "islandska krona", - "sr": "исландска круна", - "sv": "Isländsk krona", - "ta": "ஐஸ்லாந்திய குரோனா", - "tr": "İzlanda kronası", - "uk": "Ісландська крона", - "ia": "corona islandese" - }, - "JMD": { - "ar": "دولار جامايكي", - "bg": "Ямайски долар", - "ca": "dòlar jamaicà", - "cs": "Jamajský dolar", - "de": "Jamaika-Dollar", - "en": "Jamaican dollar", - "eo": "jamajka dolaro", - "es": "Dólar jamaiquino", - "eu": "Dolar jamaikar", - "fi": "Jamaikan dollari", - "fr": "Dollar jamaïcain", - "gl": "Dólar xamaicano", - "hr": "Jamajčanski dolar", - "hu": "jamaicai dollár", - "id": "Dolar Jamaika", - "it": "Dollaro giamaicano", - "ja": "ジャマイカ・ドル", - "ko": "자메이카 달러", - "lt": "Jamaikos doleris", - "nl": "Jamaicaanse dollar", - "pa": "ਜਮੈਕੀ ਡਾਲਰ", - "pl": "Dolar jamajski", - "pt": "Dólar jamaicano", - "ru": "ямайский доллар", - "sr": "јамајкански долар", - "sv": "Jamaicansk dollar", - "tr": "Jamaika doları", - "uk": "Ямайський долар", - "he": "דולר ג'מייקי" - }, - "JOD": { - "ar": "دينار أردني", - "bg": "Йордански динар", - "bn": "জর্ডানীয় দিনার", - "ca": "dinar jordà", - "cs": "Jordánský dinár", - "de": "jordanischer Dinar", - "en": "Jordanian dinar", - "eo": "jordania dinaro", - "es": "dinar jordano", - "et": "Jordaania dinaar", - "eu": "Jordaniako dinar", - "fi": "Jordanian dinaari", - "fr": "Dinar jordanien", - "he": "דינר ירדני", - "hr": "Jordanski dinar", - "hu": "jordán dinár", - "id": "Dinar Yordania", - "it": "dinaro giordano", - "ja": "ヨルダン・ディナール", - "ko": "요르단 디나르", - "lt": "Jordanijos dinaras", - "ms": "Dinar Jordan", - "nl": "Jordaanse dinar", - "pa": "ਜਾਰਡਨੀ ਦਿਨਾਰ", - "pl": "Dinar jordański", - "pt": "dinar jordano", - "ro": "Dinar iordanian", - "ru": "иорданский динар", - "sr": "јордански динар", - "sv": "Jordansk dinar", - "tr": "Ürdün dinarı", - "uk": "Йорданський динар", - "cy": "dinar (Iorddonen)", - "oc": "Dinar jordanian" - }, - "JPY": { - "af": "Jen", - "ar": "ين ياباني", - "bg": "японска йена", - "bn": "জাপানি ইয়েন", - "ca": "ien", - "cs": "japonský jen", - "cy": "Yen", - "da": "yen", - "de": "Yen", - "en": "yen", - "eo": "japana eno", - "es": "yen", - "et": "Jaapani jeen", - "eu": "Yen", - "fi": "Japanin jeni", - "fr": "yen", - "gl": "Ien", - "he": "ין יפני", - "hr": "Japanski jen", - "hu": "japán jen", - "id": "Yen", - "it": "yen", - "ja": "円", - "ko": "일본 엔", - "lt": "Jena", - "lv": "Japānas jena", - "ml": "ജാപ്പനീസ് യെൻ", - "ms": "Yen", - "nl": "Japanse yen", - "oc": "Yen", - "pa": "ਜਪਾਨੀ ਯੈੱਨ", - "pl": "jen", - "pt": "iene", - "ro": "yeni", - "ru": "японская иена", - "sk": "Jen", - "sl": "japonski jen", - "sr": "јапански јен", - "sv": "yen", - "ta": "யென்", - "th": "เยน", - "tr": "Japon yeni", - "uk": "єна", - "vi": "Yên Nhật" - }, - "KES": { - "ar": "شيلينغ كيني", - "bg": "Кенийски шилинг", - "ca": "xíling kenyà", - "cs": "keňský šilink", - "da": "kenyansk shilling", - "de": "Kenia-Schilling", - "en": "Kenyan shilling", - "eo": "kenja ŝilingo", - "es": "Chelín keniano", - "et": "Kenya šilling", - "fi": "Kenian šillinki", - "fr": "Shilling kényan", - "gl": "Xilin kenyano", - "he": "שילינג קנייתי", - "hr": "Kenijski šiling", - "hu": "kenyai shilling", - "id": "Shilling Kenya", - "it": "Scellino keniota", - "ja": "ケニア・シリング", - "ko": "케냐 실링", - "lt": "Kenijos šilingas", - "ms": "Shilling Kenya", - "nl": "Keniaanse shilling", - "pl": "Szyling kenijski", - "pt": "Xelim queniano", - "ru": "кенийский шиллинг", - "sr": "кенијски шилинг", - "sv": "Kenyansk shilling", - "tr": "Kenya şilini", - "uk": "кенійський шилінг", - "cy": "swllt Cenia" - }, - "KGS": { - "ar": "سوم قرغيزستاني", - "bg": "Киргизстански сом", - "ca": "som kirguís", - "cs": "Kyrgyzský som", - "de": "Som", - "en": "Kyrgyz som", - "eo": "kirgiza somo", - "es": "som kirguís", - "fi": "Kirgisian som", - "fr": "som", - "gl": "som kirguiz", - "hr": "Kirgistanski som", - "hu": "kirgiz szom", - "id": "som Kirgizstan", - "it": "som kirghizo", - "ja": "キルギス・ソム", - "ko": "키르기스스탄 솜", - "lt": "somas", - "nl": "Kirgizische som", - "pa": "ਕਿਰਗਿਜ਼ਸਤਾਨੀ ਸੋਮ", - "pl": "som", - "pt": "som", - "ro": "som kîrgîz", - "ru": "киргизский сом", - "sr": "киргиски сом", - "sv": "Kirgizistansk som", - "tr": "Kırgızistan somu", - "uk": "сом", - "sl": "kirgiški som" - }, - "KHR": { - "ar": "ريال كمبودي", - "bg": "Камбоджански риел", - "ca": "riel", - "cs": "Kambodžský riel", - "de": "Kambodschanischer Riel", - "en": "riel", - "eo": "kamboĝa rielo", - "es": "riel camboyano", - "eu": "Kanbodiar bigarren riel", - "fi": "Kambodžan riel", - "fr": "Riel", - "gl": "riel camboxano", - "hr": "Kambodžanski rijel", - "hu": "kambodzsai riel", - "id": "Riel Kamboja", - "it": "Riel cambogiano", - "ja": "リエル", - "ko": "캄보디아 리엘", - "lt": "Kambodžos rielis", - "ml": "കംബോഡിയൻ റീൽ", - "ms": "Riel", - "nl": "Cambodjaanse riel", - "pa": "ਕੰਬੋਡੀਆਈ ਰਿਆਲ", - "pl": "Riel", - "pt": "riel cambojano", - "ru": "камбоджийский риель", - "sr": "камбоџански ријел", - "sv": "Kambodjansk riel", - "th": "เรียลกัมพูชา", - "tr": "Riel", - "uk": "Камбоджійський рієль", - "vi": "Riel Campuchia", - "he": "ריאל קמבודי", - "oc": "riel", - "ta": "ரைல்" - }, - "KMF": { - "ar": "فرنك قمري", - "bg": "Коморски франк", - "ca": "franc de les Comores", - "cs": "Komorský frank", - "de": "Komoren-Franc", - "en": "Comorian franc", - "eo": "komora franko", - "es": "franco comorense", - "fi": "Komorien frangi", - "fr": "franc comorien", - "hr": "Komorski franak", - "hu": "comore-i frank", - "id": "Franc Komoro", - "it": "franco delle Comore", - "ja": "コモロ・フラン", - "ko": "코모로 프랑", - "lt": "Komorų frankas", - "ms": "Franc Comoros", - "nl": "Comorese frank", - "pl": "frank Komorów", - "pt": "Franco comoriano", - "ro": "Franc comorian", - "ru": "Франк Комор", - "sr": "коморски франак", - "sv": "Komoransk franc", - "tr": "Komor frangı", - "uk": "Коморський франк", - "he": "פרנק קומורואי" - }, - "KPW": { - "ar": "وون كوري شمالي", - "bg": "Севернокорейски вон", - "ca": "won nord-coreà", - "cs": "Severokorejský won", - "da": "nordkoreanske won", - "de": "nordkoreanischer Won", - "en": "North Korean won", - "eo": "nord-korea vono", - "es": "wŏn norcoreano", - "et": "Põhja-Korea vonn", - "fi": "Pohjois-Korean won", - "fr": "won nord-coréen", - "gl": "Won norcoreano", - "he": "וון צפון-קוריאני", - "hr": "Sjevernokorejski von", - "hu": "észak-koreai von", - "id": "Won Korea Utara", - "it": "won nordcoreano", - "ja": "朝鮮民主主義人民共和国ウォン", - "ko": "조선민주주의인민공화국 원", - "lt": "Šiaurės Korėjos vona", - "ml": "വോൺ", - "ms": "Won Korea Utara", - "nl": "Noord-Koreaanse won", - "pa": "ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੌਨ", - "pl": "Won północnokoreański", - "pt": "won norte-coreano", - "ro": "Won nord-coreean", - "ru": "вона КНДР", - "sr": "севернокорејски вон", - "sv": "Nordkoreansk won", - "th": "วอน", - "tr": "Kuzey Kore wonu", - "uk": "Північнокорейська вона", - "vi": "Won Cộng hòa Dân chủ Nhân dân Triều Tiên", - "sl": "severnokorejski von" - }, - "KRW": { - "af": "Suid-Koreaanse won", - "ar": "وون كوري جنوبي", - "bg": "Южнокорейски вон", - "ca": "won sud-coreà", - "cs": "jihokorejský won", - "da": "Sydkoreanske won", - "de": "südkoreanischer Won", - "en": "won", - "eo": "sud-korea vono", - "es": "won surcoreano", - "et": "Lõuna-Korea vonn", - "fi": "Etelä-Korean won", - "fr": "won sud-coréen", - "gl": "Won surcoreano", - "he": "וון דרום קוריאני", - "hr": "Južnokorejski von", - "hu": "dél-koreai von", - "id": "Won Korea Selatan", - "it": "won sudcoreano", - "ja": "大韓民国ウォン", - "ko": "원", - "lt": "Pietų Korėjos vonas", - "lv": "Dienvidkorejas vona", - "ms": "Won Korea Selatan", - "nl": "Zuid-Koreaanse won", - "pa": "ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੌਨ", - "pl": "Won południowokoreański", - "pt": "Won sul-coreano", - "ro": "Won sud-coreean", - "ru": "южнокорейская вона", - "sl": "južnokorejski von", - "sr": "јужнокорејски вон", - "sv": "Sydkoreansk won", - "th": "วอน", - "tr": "Güney Kore wonu", - "uk": "південнокорейська вона", - "vi": "Won Hàn Quốc", - "bn": "দক্ষিণ কোরীয় উয়ন", - "oc": "Won sud-corean" - }, - "KWD": { - "ar": "دينار كويتي", - "bg": "Кувейтски динар", - "bn": "কুয়েতি দিনার", - "ca": "dinar kuwaitià", - "cs": "Kuvajtský dinár", - "da": "Kuwaitiske dinarer", - "de": "Kuwait-Dinar", - "en": "Kuwaiti dinar", - "eo": "kuvajta dinaro", - "es": "dinar kuwaití", - "fi": "Kuwaitin dinaari", - "fr": "dinar koweïtien", - "he": "דינר כוויתי", - "hr": "Kuvajtski dinar", - "hu": "kuvaiti dinár", - "id": "Dinar Kuwait", - "it": "dinaro kuwaitiano", - "ja": "クウェート・ディナール", - "ko": "쿠웨이트 디나르", - "lt": "Kuveito dinaras", - "ml": "കുവൈറ്റി ദിനാർ", - "ms": "Dinar Kuwait", - "nl": "Koeweitse dinar", - "pa": "ਕੁਵੈਤੀ ਦਿਨਾਰ", - "pl": "Dinar kuwejcki", - "pt": "dinar kuwaitiano", - "ru": "кувейтский динар", - "sr": "кувајтски динар", - "sv": "Kuwaitisk dinar", - "ta": "குவைத் தினார்", - "tr": "Kuveyt dinarı", - "uk": "Кувейтський динар", - "vi": "Dinar Kuwait" - }, - "KYD": { - "ar": "دولار جزر كايمان", - "ca": "dòlar de les illes Caiman", - "cs": "Dolar Kajmanských ostrovů", - "de": "Kaiman-Dollar", - "en": "Cayman Islands dollar", - "eo": "kajmana dolaro", - "es": "Dólar de las Islas Caimán", - "eu": "Dolar kaimandar", - "fi": "Caymansaarten dollari", - "fr": "Dollar des îles Caïmans", - "hr": "Kajmanski dolar", - "hu": "kajmán-szigeteki dollár", - "id": "Dolar Kepulauan Cayman", - "it": "Dollaro delle Cayman", - "ja": "ケイマン諸島・ドル", - "ko": "케이맨 제도 달러", - "lt": "Kaimanų salų doleris", - "nl": "Kaaimaneilandse dollar", - "pa": "ਕੇਮਨ ਟਾਪੂ ਡਾਲਰ", - "pl": "Dolar kajmański", - "pt": "Dólar das Ilhas Cayman", - "ru": "доллар Каймановых островов", - "sr": "долар Кајманских Острва", - "sv": "Caymansk dollar", - "tr": "Cayman Adaları doları", - "uk": "Долар Кайманових островів", - "vi": "Đô la Quần đảo Cayman", - "he": "דולר קיימני", - "oc": "Dolar de las illas Caiman" - }, - "KZT": { - "ar": "تينغ كازاخستاني", - "bg": "Казахстанско тенге", - "ca": "tenge", - "cs": "Tenge", - "de": "Tenge", - "en": "Kazakhstani tenge", - "eo": "kazaĥa tengo", - "es": "tenge kazajo", - "eu": "Kazakhstani Tenge", - "fi": "Kazakstanin tenge", - "fr": "tenge kazakh", - "hr": "Kazahstanski tenge", - "hu": "kazah tenge", - "id": "tenge Kazakstan", - "it": "tenge kazako", - "ja": "テンゲ", - "ko": "카자흐스탄 텡게", - "lt": "Kazachijos tengė", - "lv": "Tenge", - "ms": "Tenge", - "nl": "Kazachse tenge", - "pa": "ਕਜ਼ਾਖ਼ਸਤਾਨੀ ਤਿਙੇ", - "pl": "Tenge", - "pt": "tenge", - "ro": "Tenge", - "ru": "казахстанский тенге", - "si": "කසකස්තාන ටෙන්ජි", - "sk": "Kazachstanský tenge", - "sl": "kazahstanski tenge", - "sr": "казахстански тенге", - "sv": "Kazakstansk Tenge", - "ta": "கசக்ஸ்தானிய டெங்கே", - "th": "เท็งเก", - "tr": "Tenge", - "uk": "Казахстанський тенге", - "vi": "Tenge Kazakhstan", - "cy": "tenge Casachstan", - "he": "טנגה", - "ia": "tenge kazakh", - "oc": "tenge" - }, - "LAK": { - "af": "Kip", - "ar": "كيب لاوي", - "bg": "Лаоски кип", - "ca": "kip", - "cs": "Laoský kip", - "cy": "Kip", - "de": "Kip", - "en": "Lao kip", - "eo": "laosa kipo", - "es": "kip laosiano", - "eu": "Laostar kip berria", - "fi": "Laosin kip", - "fr": "Kip laotien", - "hr": "laoski kip", - "hu": "laoszi kip", - "id": "Kip", - "it": "Kip laotiano", - "ja": "キープ", - "ko": "라오스 킵", - "lt": "Laoso kipas", - "ms": "Kip", - "nl": "Laotiaanse kip", - "pa": "ਲਾਓ ਕਿਪ", - "pl": "Kip", - "pt": "Kip", - "ru": "лаосский кип", - "sr": "лаоски кип", - "sv": "Laotisk Kip", - "th": "กีบ", - "tr": "Laos kipi", - "uk": "Лаоський кіп", - "vi": "Kíp Lào" - }, - "LBP": { - "ar": "ليرة لبنانية", - "bg": "Ливанска лира", - "ca": "lliura libanesa", - "cs": "libanonská libra", - "de": "libanesisches Pfund", - "en": "Lebanese pound", - "eo": "libana liro", - "es": "libra libanesa", - "fi": "Libanonin punta", - "fr": "livre libanaise", - "he": "לירה לבנונית", - "hr": "Libanonska funta", - "hu": "libanoni font", - "id": "Pound Lebanon", - "it": "lira libanese", - "ja": "レバノン・ポンド", - "ko": "레바논 파운드", - "lt": "Libano svaras", - "ms": "Paun Lubnan", - "nl": "Libanees pond", - "pa": "ਲਿਬਨਾਨੀ ਪਾਊਂਡ", - "pl": "Funt libański", - "pt": "libra libanesa", - "ru": "ливанский фунт", - "sl": "Libanonski funt", - "sr": "либанска фунта", - "sv": "Libanesiskt pund", - "tr": "Lübnan lirası", - "uk": "Ліванський фунт", - "cy": "punt Libanus", - "oc": "Liura libanesa" - }, - "LKR": { - "ar": "روبية سريلانكية", - "bg": "Шриланкийска рупия", - "bn": "শ্রীলঙ্কান রুপি", - "ca": "rupia de Sri Lanka", - "cs": "Srílanská rupie", - "da": "Sri Lanka rupee", - "de": "Sri-Lanka-Rupie", - "en": "Sri Lankan rupee", - "eo": "srilanka rupio", - "es": "rupia esrilanquesa", - "eu": "Errupia srilankar", - "fi": "Sri Lankan rupia", - "fr": "roupie srilankaise", - "gl": "Rupia de Sri Lanka", - "hr": "Šrilanska rupija", - "hu": "Srí Lanka-i rúpia", - "id": "Rupee Sri Lanka", - "it": "rupia singalese", - "ja": "スリランカ・ルピー", - "ko": "스리랑카 루피", - "lt": "Šri Lankos rupija", - "ml": "ശ്രീലങ്കൻ രൂപ", - "nl": "Sri Lankaanse roepie", - "pa": "ਸ੍ਰੀਲੰਕਾਈ ਰੁਪਈਆ", - "pl": "Rupia lankijska", - "pt": "rúpia do Sri Lanka", - "ru": "ланкийская рупия", - "si": "ශ්රී ලංකා රුපියල", - "sr": "шриланчанска рупија", - "sv": "Lankesisk rupie", - "ta": "இலங்கை ரூபாய்", - "tr": "Sri Lanka rupisi", - "uk": "ланкійська рупія", - "vi": "Rupee Sri Lanka", - "cy": "Rupee Sri Lanca", - "he": "רופי סרי לנקי", - "sl": "šrilanška rupija" - }, - "LRD": { - "ar": "دولار ليبيري", - "bg": "Либерийски долар", - "ca": "dòlar liberià", - "cs": "liberijský dolar", - "da": "Liberiansk dollar", - "de": "Liberianischer Dollar", - "en": "Liberian dollar", - "eo": "liberia dolaro", - "es": "dólar liberiano", - "fi": "Liberian dollari", - "fr": "dollar libérien", - "gl": "Dólar liberiano", - "he": "דולר ליברי", - "hr": "Liberijski dolar", - "hu": "libériai dollár", - "id": "Dolar Liberia", - "it": "Dollaro liberiano", - "ja": "リベリア・ドル", - "ko": "라이베리아 달러", - "lt": "Liberijos doleris", - "ms": "Dolar Liberia", - "nl": "Liberiaanse dollar", - "pl": "Dolar liberyjski", - "pt": "Dólar liberiano", - "ru": "Либерийский доллар", - "sr": "либеријски долар", - "sv": "Liberiansk dollar", - "tr": "Liberya doları", - "uk": "Ліберійський долар", - "oc": "Dolar liberian" - }, - "LSL": { - "ar": "لوتي ليسوتو", - "bg": "Лесото лоти", - "ca": "loti", - "cs": "Lesothský loti", - "cy": "Maloti", - "da": "Loti", - "de": "Lesothischer Loti", - "en": "Lesotho loti", - "eo": "lesota lotio", - "es": "Loti", - "fi": "Lesothon loti", - "fr": "Loti", - "gl": "Loti", - "hr": "Lesotski loti", - "hu": "lesothói loti", - "id": "Loti Lesotho", - "it": "Loti lesothiano", - "ja": "ロチ", - "ko": "레소토 로티", - "lt": "Loti", - "nl": "Lesothaanse loti", - "pl": "Loti", - "pt": "Loti", - "ru": "Лоти Лесото", - "sr": "лесотски лоти", - "sv": "Lesothisk Loti", - "tr": "Loti", - "uk": "Лоті", - "he": "לוטי" - }, - "LYD": { - "ar": "دينار ليبي", - "bg": "Либийски динар", - "ca": "dinar libi", - "cs": "Libyjský dinár", - "cy": "Dinar Libya", - "da": "Libyske dinarer", - "de": "libyscher Dinar", - "en": "Libyan dinar", - "eo": "libia dinaro", - "es": "dinar libio", - "fi": "Libyan dinaari", - "fr": "dinar libyen", - "he": "דינר לובי ", - "hr": "Libijski dinar", - "hu": "líbiai dinár", - "id": "Dinar Libya", - "it": "dinaro libico", - "ja": "リビア・ディナール", - "ko": "리비아 디나르", - "lt": "Libijos dinaras", - "ms": "Dinar Libya", - "nl": "Libische dinar", - "pl": "Dinar libijski", - "pt": "dinar líbio", - "ru": "ливийский динар", - "sr": "либијски динар", - "sv": "Libysk dinar", - "tr": "Libya dinarı", - "uk": "Лівійський динар", - "oc": "Dinar libian", - "sl": "libijski dinar" - }, - "MAD": { - "ar": "درهم مغربي", - "bg": "Марокански дирхам", - "ca": "dírham marroquí", - "cs": "Marocký dirham", - "cy": "Dirham Moroco", - "de": "Marokkanischer Dirham", - "en": "Moroccan dirham", - "eo": "maroka dirhamo", - "es": "dírham marroquí", - "eu": "Marokoar dirham", - "fi": "Marokon dirhami", - "fr": "Dirham marocain", - "gl": "Dirham", - "he": "דירהם מרוקני", - "hr": "Marokanski dirham", - "hu": "marokkói dirham", - "id": "Dirham Maroko", - "it": "dirham marocchino", - "ja": "モロッコ・ディルハム", - "ko": "모로코 디르함", - "lt": "Maroko dirhamas", - "ml": "മൊറോക്കൻ ദിർഹം", - "ms": "Dirham Maghribi", - "nl": "Marokkaanse dirham", - "pl": "dirham marokański", - "pt": "Dirham marroquino", - "ro": "Dirham marocan", - "ru": "марокканский дирхам", - "sr": "марокански дирхам", - "sv": "Marockansk dirham", - "tr": "Fas dirhemi", - "uk": "Марокканський дирхам", - "oc": "Dirham" - }, - "MDL": { - "ar": "ليو مولدوفي", - "bg": "Молдовска лея", - "ca": "leu moldau", - "cs": "moldavský lei", - "de": "moldauischer Leu", - "en": "Moldovan leu", - "eo": "moldava leo", - "es": "leu moldavo", - "et": "Moldova leu", - "fi": "Moldovan leu", - "fr": "leu moldave", - "he": "לאו מולדובני", - "hr": "moldavski lej", - "hu": "moldován lej", - "id": "Leu Moldova", - "it": "leu moldavo", - "ja": "モルドバ・レウ", - "ko": "몰도바 레우", - "lt": "Moldavijos lėja", - "lv": "Moldovas leja", - "nl": "Moldavische leu", - "pa": "ਮੋਲਦੋਵੀ ਲਿਊ", - "pl": "lej Mołdawii", - "pt": "leu moldávio", - "ro": "leu moldovenesc", - "ru": "молдавский лей", - "sk": "Moldavský lei", - "sl": "moldavski lej", - "sr": "молдавски леј", - "sv": "Moldavisk leu", - "ta": "மல்டோவிய லியு", - "tr": "Moldova leyi", - "uk": "молдовський лей", - "ia": "leu moldave", - "oc": "Leu moldau" - }, - "MGA": { - "af": "Malgassiese ariary", - "ar": "أرياري مدغشقري", - "ca": "ariary", - "cs": "Malgašský ariary", - "da": "Ariary", - "de": "Ariary", - "en": "Ariary", - "eo": "malagasa ariaro", - "es": "ariary", - "fi": "Madagaskarin ariary", - "fr": "ariary", - "he": "אריארי", - "hr": "Malgaški arijari", - "hu": "madagaszkári ariary", - "id": "Ariary Madagaskar", - "it": "ariary malgascio", - "ja": "マダガスカル・アリアリ", - "ko": "마다가스카르 아리아리", - "lt": "Madagaskaro ariaris", - "nl": "Malagassische ariary", - "pl": "Ariary", - "pt": "ariary malgaxe", - "ru": "малагасийский ариари", - "sr": "ариари", - "sv": "Madagaskisk ariary", - "tr": "Ariary", - "uk": "Малагасійський аріарі", - "oc": "Ariary" - }, - "MKD": { - "ar": "دينار مقدوني", - "bg": "македонски денар", - "ca": "denar", - "cs": "Makedonský denár", - "da": "Makedonske denarer", - "de": "mazedonischer Denar", - "en": "Macedonian denar", - "eo": "makedona denaro", - "es": "denar macedonio", - "et": "Makedoonia denaar", - "fi": "Makedonian denaari", - "fr": "denar macédonien", - "gl": "Dinar macedonio", - "he": "דינר מקדוני", - "hr": "makedonski denar", - "hu": "macedón dénár", - "id": "Denar Makedonia Utara", - "it": "Dinaro macedone", - "ja": "マケドニア・デナール", - "ko": "북마케도니아 데나르", - "lt": "Makedonijos denaras", - "lv": "Denars", - "ms": "Denar Macedonia", - "nl": "Noord-Macedonische denar", - "pa": "ਮਕਦੂਨੀਆਈ ਦਿਨਾਰ", - "pl": "denar", - "pt": "dinar macedónio", - "ro": "Denar macedonean", - "ru": "македонский денар", - "sk": "Macedónsky denár", - "sl": "Makedonski denar", - "sr": "македонски денар", - "sv": "Makedonisk denar", - "ta": "மாசிடோனிய தெனார்", - "th": "แดนาร์มาซิโดเนีย", - "tr": "Makedon denarı", - "uk": "Македонський денар", - "vi": "Denar Bắc Macedonia", - "cy": "denar (Macedonia)", - "ia": "denar macedone" - }, - "MMK": { - "af": "Mianmarese kyat", - "ar": "كيات ميانماري", - "bn": "মিয়ানমার ক্যত", - "ca": "kyat", - "cs": "Myanmarský kyat", - "de": "Kyat", - "en": "kyat", - "eo": "birma kjato", - "es": "Kyat birmano", - "fi": "Myanmarin kyat", - "fr": "Kyat", - "hr": "Mijanmarski kjat", - "hu": "mianmari kjap", - "id": "Kyat", - "it": "Kyat birmano", - "ja": "チャット", - "ko": "미얀마 짯", - "lt": "Kijatas", - "ml": "ബർമ്മീസ് ക്യാറ്റ്", - "nl": "Myanmarese kyat", - "pl": "Kiat", - "pt": "Quiate", - "ro": "Kyat", - "ru": "кьят", - "sr": "мјанмарски кјат", - "sv": "Burmesisk kyat", - "th": "จัต", - "tr": "Kyat", - "uk": "М'янмський к'ят", - "vi": "Kyat", - "oc": "Kyat" - }, - "MNT": { - "ar": "توغروغ منغولي", - "bg": "монголски тугрик", - "ca": "tögrög", - "cs": "Tugrik", - "da": "Tugrik", - "de": "Tögrög", - "en": "tugrik", - "eo": "mongola tugriko", - "es": "tugrik mongol", - "fi": "Mongolian tugrik", - "fr": "tugrik", - "gl": "Tugrik", - "he": "טוגרוג", - "hr": "Mongolski tugrik", - "hu": "mongol tugrik", - "id": "Tugrik", - "it": "tugrik mongolo", - "ja": "トゥグルグ", - "ko": "몽골 투그릭", - "lt": "Tugrikas", - "ms": "Tugrik", - "nl": "Mongoolse tugrik", - "pa": "ਮੰਗੋਲੀਆਈ ਤੋਗਰੋਗ", - "pl": "tugrik", - "pt": "tugrik", - "ru": "монгольский тугрик", - "sk": "Mongolský tugrik", - "sr": "монголски тугрик", - "sv": "Mongolisk Tögrög", - "th": "ทูกรีก", - "tr": "Tögrög", - "uk": "Монгольський тугрик", - "vi": "Tögrög", - "cy": "tögrög Mongolia", - "sl": "tugrik" - }, - "MOP": { - "ar": "باتاكا ماكاوية", - "ca": "pataca", - "cs": "Macajská pataca", - "de": "Macao-Pataca", - "en": "Macanese pataca", - "eo": "makaa patako", - "es": "pataca macaense", - "eu": "Pataca macautar", - "fi": "Macaon pataca", - "fr": "pataca", - "gl": "Pataca macaense", - "he": "פטקה", - "hr": "Makaonska pataka", - "hu": "makaói pataca", - "id": "Pataca Makau", - "it": "Pataca di Macao", - "ja": "マカオ・パタカ", - "ko": "마카오 파타카", - "lt": "Pataka", - "nl": "Macause pataca", - "pa": "ਮਕਾਉਈ ਪਤਾਕਾ", - "pl": "Pataca", - "pt": "Pataca", - "ru": "патака Макао", - "sv": "Macaoisk Pataca", - "tr": "Pataka", - "uk": "Аоминська патака", - "vi": "Pataca Macau", - "sr": "макаонска патака" - }, - "MRU": { - "ar": "أوقية موريتانية", - "bg": "Мавританска угия", - "ca": "ouguiya", - "cs": "Mauritánská ukíjá", - "da": "Ouguiya", - "de": "Ouguiya", - "en": "Mauritanian ouguiya", - "eo": "maŭritania uguijao", - "es": "uguiya", - "fi": "Mauritanian ouguiya", - "fr": "ouguiya", - "gl": "ouguiya", - "hr": "Mauretanska ouguja", - "hu": "mauritániai ouguiya", - "id": "Ouguiya", - "it": "Ouguiya mauritana", - "ja": "ウギア", - "ko": "모리타니 우기야", - "lt": "Mauritanijos ugija", - "lv": "Ugija", - "ms": "Ouguiya", - "nl": "Mauritaanse ouguiya", - "pl": "Ugija", - "pt": "Uguia", - "ru": "Мавританская угия", - "sr": "мауританска огија", - "sv": "Mauretansk ouguiya", - "tr": "Ugiya", - "uk": "Мавританська угія", - "oc": "Ouguiya" - }, - "MUR": { - "af": "Mauritiaanse roepee", - "ar": "روبي موريشي", - "ca": "rupia de Maurici", - "cs": "Mauricijská rupie", - "da": "Mauritiske rupee", - "de": "Mauritius-Rupie", - "en": "Mauritian rupee", - "eo": "maŭricia rupio", - "es": "rupia mauricia", - "eu": "Errupia mauriziar", - "fi": "Mauritiuksen rupia", - "fr": "roupie mauricienne", - "gl": "Rupia de Mauricio", - "hr": "Mauricijska rupija", - "hu": "mauritiusi rúpia", - "id": "Rupee Mauritus", - "it": "Rupia mauriziana", - "ja": "モーリシャス・ルピー", - "ko": "모리셔스 루피", - "lt": "Mauricijaus rupija", - "nl": "Mauritiaanse roepie", - "pl": "Rupia Mauritiusu", - "pt": "Rupia mauriciana", - "ru": "Маврикийская рупия", - "sr": "маурицијска рупија", - "sv": "Mauritisk rupie", - "tr": "Mauritius rupisi", - "uk": "Маврикійська рупія", - "he": "רופי מאוריציני", - "oc": "Ropia de Maurici" - }, - "MVR": { - "ar": "روفيه مالديفية", - "bg": "Малдивска рупия", - "bn": "মালদ্বীপীয় রুফিয়াহ", - "ca": "rupia de les Maldives", - "cs": "Maledivská rupie", - "da": "Rufiyaa", - "de": "Rufiyaa", - "dv": "ދިވެހި ރުފިޔާ", - "en": "Maldivian rufiyaa", - "eo": "maldiva rufijao", - "es": "rupia maldiva", - "eu": "Errupia maldivar", - "fi": "Malediivien rufiyaa", - "fr": "Rufiyaa", - "hr": "Maldivska rufija", - "hu": "maldív-szigeteki rúfia", - "id": "Rufiyaa", - "it": "rufiyaa delle Maldive", - "ja": "ルフィヤ", - "ko": "몰디브 루피야", - "lt": "Maldyvų rufija", - "ms": "Rufiyaa", - "nl": "Maldivische rufiyaa", - "pa": "ਮਾਲਦੀਵੀ ਰੁਫ਼ੀਆ", - "pl": "Rupia malediwska", - "pt": "Rupia maldívia", - "ru": "мальдивская руфия", - "sr": "малдивска руфија", - "sv": "Rufiyah", - "ta": "மாலத்தீவின் ருஃபியா", - "tr": "Rufiyaa", - "uk": "Мальдівська руфія", - "oc": "Rópia de las Maldivas" - }, - "MWK": { - "ar": "كواشا ملاوية", - "ca": "kwacha malawià", - "cs": "malawiská kwacha", - "de": "Malawi-Kwacha", - "en": "Malawian kwacha", - "eo": "malavia kvaĉo", - "es": "kwacha malauí", - "et": "Malawi kvatša", - "fi": "Malawin kwacha", - "fr": "kwacha malawien", - "gl": "Kwacha de Malawi", - "hr": "Malavijska kvača", - "hu": "malawi kwacha", - "id": "Kwacha Malawi", - "it": "Kwacha malawiano", - "ja": "マラウイ・クワチャ", - "ko": "말라위 콰차", - "lt": "Malavio kvača", - "ms": "Kwacha Malawi", - "nl": "Malawische kwacha", - "pl": "Kwacha malawijska", - "pt": "Kwacha do Maláui", - "ru": "малавийская квача", - "sr": "малавијска квача", - "sv": "Malawisk kwacha", - "tr": "Malavi kwachası", - "uk": "Малавійська квача" - }, - "MXN": { - "af": "Meksikaanse peso", - "ar": "بيزو مكسيكي", - "bg": "Мексиканско песо", - "ca": "peso mexicà", - "cs": "Mexické peso", - "de": "Mexikanischer Peso", - "en": "Mexican peso", - "eo": "meksika peso", - "es": "peso mexicano", - "eu": "Mexikar peso", - "fi": "Meksikon peso", - "fr": "peso mexicain", - "gl": "Peso mexicano", - "he": "פסו מקסיקני", - "hr": "Meksički pezo", - "hu": "mexikói peso", - "ia": "Peso mexican", - "id": "Peso Meksiko", - "it": "peso messicano", - "ja": "メキシコ・ペソ", - "ko": "멕시코 페소", - "lt": "Meksikos pesas", - "ms": "Peso Mexico", - "nl": "Mexicaanse peso", - "pa": "ਮੈਕਸੀਕੀ ਪੇਸੋ", - "pl": "Peso meksykańskie", - "pt": "peso mexicano", - "ro": "Peso mexican", - "ru": "мексиканское песо", - "sr": "мексички пезос", - "sv": "Mexikansk peso", - "ta": "மெக்சிகோ பெசோ", - "tr": "Meksika pesosu", - "uk": "мексиканський песо", - "vi": "Peso Mexico", - "cy": "peso (Mecsico)", - "et": "Mehhiko peeso", - "sl": "mehiški peso" - }, - "MXV": { - "en": "unidad de inversión", - "es": "Unidades de Inversión", - "de": "UNIDAD DE INVERSION", - "ja": "メキシコ投資単位" - }, - "MYR": { - "af": "Ringgit", - "ar": "رينغيت ماليزي", - "bg": "Малайзийски рингит", - "ca": "ringgit", - "cs": "Malajsijský ringgit", - "de": "Ringgit", - "en": "Malaysian ringgit", - "eo": "malajzia ringito", - "es": "ringgit", - "eu": "Ringgit", - "fi": "Malesian ringgit", - "fr": "ringgit", - "hr": "Malezijski ringit", - "hu": "maláj ringgit", - "id": "Ringgit", - "it": "ringgit malaysiano", - "ja": "リンギット", - "ko": "말레이시아 링깃", - "lt": "Malaizijos ringitas", - "ml": "റിങ്കിറ്റ്", - "ms": "Ringgit", - "nl": "Maleisische ringgit", - "pa": "ਮਲੇਸ਼ੀਆਈ ਰਿਙਿਤ", - "pl": "Ringgit", - "pt": "ringgit malaio", - "ro": "Ringgit", - "ru": "малайзийский ринггит", - "sr": "малезијски рингит", - "sv": "Malaysisk ringgit", - "ta": "மலேசிய ரிங்கிட்", - "th": "ริงกิต", - "tr": "Ringgit", - "uk": "малайзійський ринґіт", - "vi": "Ringgit", - "he": "רינגיט מלזי", - "sl": "malezijski ringgit" - }, - "MZN": { - "ar": "متكال موزمبيقي", - "ca": "metical", - "cs": "Mosambický metical", - "da": "Metical", - "de": "Metical", - "en": "Mozambican metical", - "eo": "mozambika metikalo", - "es": "Metical mozambiqueño", - "fi": "Mosambikin metical", - "fr": "Metical", - "gl": "Metical", - "hr": "Mozambijski metikal", - "hu": "mozambiki metical", - "id": "Metical", - "it": "Metical mozambicano", - "ja": "メティカル", - "ko": "모잠비크 메티칼", - "lt": "Metikalis", - "lv": "Metikals", - "ms": "Metical Mozambique", - "nl": "Mozambikaanse metical", - "pl": "Metical", - "pt": "Metical", - "ru": "мозамбикский метикал", - "sr": "мозамбички метикал", - "sv": "Moçambikisk Metical", - "tr": "Metical", - "uk": "Мозамбіцький метікал", - "cy": "Metical Mosambic", - "he": "מטיקל מוזמביני" - }, - "NAD": { - "af": "Namibiese Dollar", - "ar": "دولار ناميبي", - "bg": "Намибийски долар", - "ca": "dòlar namibià", - "cs": "Namibijský dolar", - "da": "Namibisk dollar", - "de": "Namibia-Dollar", - "en": "Namibian dollar", - "eo": "namibia dolaro", - "es": "Dólar namibio", - "fi": "Namibian dollari", - "fr": "Dollar namibien", - "gl": "Dólar namibio", - "he": "דולר נמיבי", - "hr": "Namibijski dolar", - "hu": "namíbiai dollár", - "id": "Dolar Namibia", - "it": "Dollaro namibiano", - "ja": "ナミビア・ドル", - "ko": "나미비아 달러", - "lt": "Namibijos doleris", - "nl": "Namibische dollar", - "oc": "Dolar namibian", - "pl": "Dolar namibijski", - "pt": "Dólar da Namíbia", - "ru": "доллар Намибии", - "sr": "намибијски долар", - "sv": "Namibisk dollar", - "tr": "Namibya doları", - "uk": "Намібійський долар", - "ms": "Dolar Namibia", - "sl": "namibijski dolar" - }, - "NGN": { - "af": "Nigeriese naira", - "ar": "نيرة نيجيرية", - "bg": "Нигерийска найра", - "ca": "naira", - "cs": "nigerijská naira", - "de": "Naira", - "en": "naira", - "eo": "niĝeria najro", - "es": "naira", - "fi": "Nigerian naira", - "fr": "Naira", - "gl": "Naira", - "he": "נאירה", - "hr": "Nigerijska naira", - "hu": "nigériai naira", - "id": "Naira Nigeria", - "it": "Naira nigeriana", - "ja": "ナイラ", - "ko": "나이지리아 나이라", - "lt": "Naira", - "ms": "Naira Nigeria", - "nl": "Nigeriaanse naira", - "pl": "Naira", - "pt": "Naira", - "ru": "нигерийская найра", - "sk": "Naira", - "sr": "нигеријска наира", - "sv": "Nigeriansk naira", - "th": "ไนรา", - "tr": "Nijerya nairası", - "uk": "нігерійська найра", - "oc": "Naira", - "sl": "naira" - }, - "NIO": { - "af": "Córdoba", - "ar": "كوردبا نيكاراغوا", - "bg": "Никарагуанска кордоба", - "ca": "córdoba", - "cs": "Nikaragujská córdoba", - "de": "Córdoba Oro", - "en": "Nicaraguan córdoba", - "eo": "nikaragva kordovo", - "es": "córdoba", - "eu": "Córdoba", - "fi": "Nicaraguan córdoba", - "fr": "Córdoba", - "gl": "Córdoba", - "he": "קורדובה", - "hr": "Nikaragvanska kordoba", - "hu": "nicaraguai córdoba", - "id": "Córdoba Nikaragua", - "it": "Córdoba nicaraguense", - "ja": "ニカラグア・コルドバ", - "ko": "니카라과 코르도바", - "lt": "Nikaragvos kordoba", - "nl": "Nicaraguaanse córdoba", - "pa": "ਨਿਕਾਰਾਗੁਆਈ ਕੋਰਦੋਬਾ", - "pl": "Cordoba oro", - "pt": "Córdoba (moeda)", - "ro": "Córdoba", - "ru": "никарагуанская кордоба", - "sr": "никарагванска кордоба", - "sv": "Nicaraguansk córdoba", - "tr": "Kordoba", - "uk": "Нікарагуанська кордоба", - "oc": "Córdoba (moneda)" - }, - "NOK": { - "af": "Noorse kroon", - "ar": "كرونة نروجية", - "bg": "норвежка крона", - "ca": "corona noruega", - "cs": "Norská koruna", - "da": "norsk krone", - "de": "norwegische Krone", - "en": "Norwegian krone", - "eo": "norvega krono", - "es": "corona noruega", - "et": "Norra kroon", - "eu": "Norvegiar koroa", - "fi": "Norjan kruunu", - "fr": "couronne norvégienne", - "gl": "Coroa norueguesa", - "he": "כתר נורווגי", - "hr": "Norveška kruna", - "hu": "norvég korona", - "id": "Krona Norwegia", - "it": "corona norvegese", - "ja": "ノルウェー・クローネ", - "ko": "노르웨이 크로네", - "lt": "Norvegijos krona", - "lv": "Norvēģijas krona", - "nl": "Noorse kroon", - "pa": "ਨਾਰਵੇਈ ਕਰੋਨਾ", - "pl": "Korona norweska", - "pt": "coroa norueguesa", - "ro": "Coroană norvegiană", - "ru": "норвежская крона", - "sk": "Nórska koruna", - "sl": "norveška krona", - "sr": "норвешка круна", - "sv": "norsk krona", - "ta": "நார்வே குரோனா", - "tr": "Norveç kronu", - "uk": "норвезька крона", - "vi": "Krone Na Uy", - "cy": "krone Norwy", - "ia": "corona norvegian", - "oc": "corona norvegiana" - }, - "NPR": { - "af": "Nepalese Rupee", - "ar": "روبي نيبالي", - "bg": "Непалска рупия", - "bn": "নেপালি রুপি", - "ca": "rupia nepalesa", - "cs": "Nepálská rupie", - "da": "Nepalesiske rupee", - "de": "Nepalesische Rupie", - "en": "Nepalese rupee", - "eo": "nepala rupio", - "es": "rupia nepalí", - "et": "Nepali ruupia", - "eu": "Errupia nepaldar", - "fi": "Nepalin rupia", - "fr": "roupie népalaise", - "gl": "Rupia nepalesa", - "he": "רופי נפאלי", - "hr": "Nepalska rupija", - "hu": "nepáli rúpia", - "id": "Rupee Nepal", - "it": "Rupia nepalese", - "ja": "ネパール・ルピー", - "ko": "네팔 루피", - "lt": "Nepalo rupija", - "ml": "നേപ്പാളി രൂപ", - "nl": "Nepalese roepie", - "pa": "ਨੇਪਾਲੀ ਰੁਪਈਆ", - "pl": "Rupia nepalska", - "pt": "Rupia nepalesa", - "ru": "непальская рупия", - "sr": "непалска рупија", - "sv": "Nepalesisk rupee", - "ta": "நேபாள ரூபாய்", - "th": "รูปีเนปาล", - "tr": "Nepal rupisi", - "uk": "Непальська рупія", - "vi": "Rupee Nepal", - "sl": "nepalska rupija" - }, - "NZD": { - "af": "Nieu-Seelandse dollar", - "ar": "دولار نيوزيلندي", - "bg": "Новозеландски долар", - "bn": "নিউজিল্যান্ড ডলার", - "ca": "dòlar neozelandès", - "cs": "Novozélandský dolar", - "da": "newzealandsk dollar", - "de": "Neuseeland-Dollar", - "en": "New Zealand dollar", - "eo": "nov-zelanda dolaro", - "es": "dólar neozelandés", - "eu": "Zeelandaberritar dolar", - "fi": "Uuden-Seelannin dollari", - "fr": "dollar néo-zélandais", - "gl": "Dólar neozelandés", - "he": "דולר ניו זילנדי", - "hr": "Novozelandski dolar", - "hu": "új-zélandi dollár", - "id": "Dolar Selandia Baru", - "it": "dollaro neozelandese", - "ja": "ニュージーランド・ドル", - "ko": "뉴질랜드 달러", - "lt": "Naujosios Zelandijos doleris", - "lv": "Jaunzēlandes dolārs", - "ms": "Dolar New Zealand", - "nl": "Nieuw-Zeelandse dollar", - "pl": "Dolar nowozelandzki", - "pt": "dólar neozelandês", - "ro": "Dolar neozeelandez", - "ru": "новозеландский доллар", - "sk": "Novozélandský dolár", - "sr": "новозеландски долар", - "sv": "Nyzeeländsk dollar", - "tr": "Yeni Zelanda doları", - "uk": "новозеландський долар", - "vi": "Đô la New Zealand", - "et": "Uus-Meremaa dollar", - "oc": "Dolar neozelandés", - "sl": "novozelandski dolar" - }, - "OMR": { - "ar": "ريال عُماني", - "bg": "Омански риял", - "ca": "rial omanita", - "cs": "Ománský rial", - "da": "Omansk rial", - "de": "Omanischer Rial", - "en": "Omani rial", - "eo": "omana rialo", - "es": "Rial omaní", - "fi": "Omanin rial", - "fr": "Rial omanais", - "he": "ריאל עומאני", - "hr": "Omanski rijal", - "hu": "ománi riál", - "id": "Riyal Oman", - "it": "Riyal dell'Oman", - "ja": "オマーン・リアル", - "ko": "오만 리알", - "lt": "Omano rialas", - "ms": "Rial Oman", - "nl": "Omaanse rial", - "pa": "ਓਮਾਨੀ ਰਿਆਲ", - "pl": "Rial omański", - "pt": "Rial omanense", - "ru": "оманский риал", - "sr": "омански ријал", - "sv": "Omansk rial", - "ta": "ஓமானி ரியால்", - "tr": "Umman riyali", - "uk": "Оманський ріал" - }, - "PAB": { - "ar": "بالبوا بنمي", - "bg": "Панамска балбоа", - "ca": "balboa", - "cs": "Panamská balboa", - "de": "Panamaischer Balboa", - "en": "Panamanian balboa", - "eo": "panama balboo", - "es": "balboa", - "eu": "Balboa", - "fi": "Panaman balboa", - "fr": "Balboa", - "gl": "Balboa", - "he": "בלבואה", - "hr": "Panamska balboa", - "hu": "panamai balboa", - "id": "Balboa Panama", - "it": "Balboa panamense", - "ja": "バルボア", - "ko": "파나마 발보아", - "lt": "Balboa", - "lv": "Panamas balboa", - "ms": "Balboa Panama", - "nl": "Panamese balboa", - "oc": "Balboa", - "pa": "ਪਨਾਮਾਈ ਬਾਲਬੋਆ", - "pl": "Balboa", - "pt": "Balboa", - "ru": "панамский бальбоа", - "sr": "панамска балбоа", - "sv": "Panamansk balboa", - "tr": "Panama balboası", - "uk": "Панамське бальбоа" - }, - "PEN": { - "ar": "سول بيروفي جديد", - "ca": "sol", - "cs": "Peruánský sol", - "da": "Nuevo sol", - "de": "Nuevo Sol", - "en": "Nuevo sol", - "eo": "perua nova suno", - "es": "sol", - "eu": "Sol", - "fi": "Perun nuevo sol", - "fr": "nouveau sol", - "gl": "Nuevo sol", - "he": "סול", - "hr": "Peruanski novi sol", - "hu": "perui új sol", - "id": "Nuevo Sol", - "it": "Nuevo Sol peruviano", - "ja": "ヌエボ・ソル", - "ko": "페루 솔", - "lt": "Naujasis solis", - "ms": "Nuevo Sol Peru", - "nl": "Peruviaanse sol", - "pa": "ਪੇਰੂਵੀ ਨਵਾਂ ਸੋਲ", - "pl": "Sol", - "pt": "Sol novo", - "ru": "перуанский новый соль", - "sr": "перуански нови сол", - "sv": "Nuevo sol", - "tr": "Nuevo Sol", - "uk": "Новий соль", - "vi": "Sol Peru", - "oc": "Nuevo Sol" - }, - "PGK": { - "ar": "كينا بابوا غينيا الجديدة", - "bg": "Кина на Папуа Нова Гвинея", - "ca": "kina", - "cs": "Papuánská kina", - "da": "Kina", - "de": "Kina", - "en": "kina", - "eo": "papuonovgvinea kinao", - "es": "kina", - "fi": "Papua-Uuden-Guinean kina", - "fr": "kina", - "gl": "Kina", - "hr": "Papuanska kina", - "hu": "pápua új-guineai kina", - "id": "Kina Papua Nugini", - "it": "Kina papuana", - "ja": "キナ", - "ko": "파푸아뉴기니 키나", - "lt": "Kina", - "ms": "Kina Papua New Guinea", - "nl": "Papoea-Nieuw-Guinese kina", - "pl": "Kina", - "pt": "Kina", - "ro": "Kina", - "ru": "Кина", - "sr": "папуанска кина", - "sv": "Papuansk Kina", - "tr": "Papua Yeni Gine kinası", - "uk": "Кіна", - "vi": "Kina Papua New Guinea", - "he": "קינה" - }, - "PHP": { - "ar": "بيسو فلبيني", - "bg": "Филипинско песо", - "ca": "peso filipí", - "cs": "Filipínské peso", - "de": "philippinischer Peso", - "en": "Philippine peso", - "eo": "filipina peso", - "es": "peso filipino", - "fi": "Filippiinien peso", - "fr": "peso philippin", - "he": "פסו פיליפיני", - "hr": "Filipinski pezo", - "hu": "Fülöp-szigeteki peso", - "id": "peso Filipina", - "it": "peso filippino", - "ja": "フィリピン・ペソ", - "ko": "필리핀 페소", - "lt": "Filipinų pesas", - "ms": "peso Filipina", - "nl": "Filipijnse peso", - "pa": "ਫ਼ਿਲਪੀਨੀ ਪੀਸੋ", - "pl": "Peso filipińskie", - "pt": "peso filipino", - "ru": "филиппинское песо", - "sk": "Filipínske peso", - "sr": "филипински пезо", - "sv": "Filippinsk peso", - "ta": "பிலிப்பைன் பெசோ", - "th": "เปโซฟิลิปปินส์", - "tr": "Filipinler pesosu", - "uk": "філіппінський песо", - "vi": "peso Philippines", - "oc": "Peso de las Filipinas", - "sl": "filipinski peso" - }, - "PKR": { - "ar": "روبية باكستانية", - "bg": "Пакистанска рупия", - "bn": "পাকিস্তানি রুপি", - "ca": "rupia pakistanesa", - "cs": "Pákistánská rupie", - "da": "Pakistanske rupee", - "de": "pakistanische Rupie", - "dv": "ޕާކިސްތާނީ ރުޕީ", - "en": "Pakistani rupee", - "eo": "pakistana rupio", - "es": "rupia pakistaní", - "eu": "Errupia pakistandar", - "fi": "Pakistanin rupia", - "fr": "roupie pakistanaise", - "hr": "Pakistanska rupija", - "hu": "pakisztáni rúpia", - "id": "Rupee Pakistan", - "it": "rupia pakistana", - "ja": "パキスタン・ルピー", - "ko": "파키스탄 루피", - "lt": "Pakistano rupija", - "ml": "പാക്കിസ്ഥാനി രൂപ", - "ms": "Rupee Pakistan", - "nl": "Pakistaanse roepie", - "oc": "Ropia de Paquistan", - "pa": "ਪਾਕਿਸਤਾਨੀ ਰੁਪਈਆ", - "pl": "rupia pakistańska", - "pt": "Rupia do Paquistão", - "ru": "пакистанская рупия", - "sr": "пакистанска рупија", - "sv": "Pakistansk rupee", - "ta": "பாக்கித்தானிய ரூபாய்", - "tr": "Pakistan rupisi", - "uk": "пакистанська рупія", - "vi": "Rupee Pakistan", - "he": "רופי פקיסטני ", - "sl": "pakistanska rupija" - }, - "PLN": { - "af": "Złoty", - "ar": "زلوتي بولندي", - "bg": "Полска злотаПолска злота", - "ca": "złoty", - "cs": "zlotý", - "da": "zloty", - "de": "Złoty", - "en": "złoty", - "eo": "pola zloto", - "es": "złoty", - "et": "Poola zlott", - "eu": "Złoty", - "fi": "Puolan złoty", - "fr": "złoty", - "gl": "Złoty", - "he": "זלוטי", - "hr": "Poljski zlot", - "hu": "lengyel złoty", - "id": "Złoty", - "it": "złoty polacco", - "ja": "ズウォティ", - "ko": "폴란드 즈워티", - "lt": "Zlotas", - "lv": "zlots", - "ms": "Zloty", - "nl": "Poolse złoty", - "pa": "ਪੋਲੈਂਡੀ ਜ਼ਵੋਤੀ", - "pl": "złoty", - "pt": "złoty", - "ro": "zlot polonez", - "ru": "польский злотый", - "sk": "Poľský zlotý", - "sr": "пољски злот", - "sv": "Złoty", - "ta": "ஸ்வாட்டெ", - "th": "ซวอตือ", - "tr": "Złoty", - "uk": "злотий", - "vi": "Złoty Ba Lan", - "ia": "zloty polonese", - "oc": "złoty", - "sl": "poljski zlot" - }, - "PLZ": { - "af": "Złoty", - "ar": "زلوتي بولندي", - "bg": "Полска злотаПолска злота", - "ca": "złoty", - "cs": "zlotý", - "da": "zloty", - "de": "Złoty", - "en": "złoty", - "eo": "pola zloto", - "es": "złoty", - "et": "Poola zlott", - "eu": "Złoty", - "fi": "Puolan złoty", - "fr": "złoty", - "gl": "Złoty", - "he": "זלוטי", - "hr": "Poljski zlot", - "hu": "lengyel złoty", - "id": "Złoty", - "it": "złoty polacco", - "ja": "ズウォティ", - "ko": "폴란드 즈워티", - "lt": "Zlotas", - "lv": "zlots", - "ms": "Zloty", - "nl": "Poolse złoty", - "pa": "ਪੋਲੈਂਡੀ ਜ਼ਵੋਤੀ", - "pl": "złoty", - "pt": "złoty", - "ro": "zlot polonez", - "ru": "польский злотый", - "sk": "Poľský zlotý", - "sr": "пољски злот", - "sv": "Złoty", - "ta": "ஸ்வாட்டெ", - "th": "ซวอตือ", - "tr": "Złoty", - "uk": "злотий", - "vi": "Złoty Ba Lan", - "ia": "zloty polonese", - "oc": "złoty", - "sl": "poljski zlot" - }, - "PYG": { - "ar": "غواراني باراغواي", - "ca": "guaraní", - "cs": "paraguayský guaraní", - "de": "Paraguayischer Guaraní", - "en": "Paraguayan guaraní", - "eo": "paragvaja gvaranio", - "es": "guaraní", - "eu": "Guarani", - "fi": "Paraguayn guaraní", - "fr": "Guaraní", - "gl": "Guaraní", - "hr": "Paragvajski gvarani", - "hu": "paraguayi guaraní", - "id": "Guaraní Paraguay", - "it": "guaraní paraguaiano", - "ja": "グアラニー", - "ko": "파라과이 과라니", - "lt": "Gvaranis", - "ms": "Guaraní Paraguay", - "nl": "Paraguayaanse guaraní", - "pa": "ਪੈਰਾਗੁਏਵੀ ਗੁਆਰਾਨੀ", - "pl": "Guarani", - "pt": "Guarani", - "ru": "парагвайский гуарани", - "sk": "Guarani", - "sr": "парагвајски гварани", - "sv": "Guarani", - "tr": "Paraguay guaranísi", - "uk": "Парагвайський гуарані", - "oc": "Guaraní" - }, - "QAR": { - "ar": "ريال قطري", - "bg": "Катарски риал", - "ca": "riyal de Qatar", - "cs": "Katarský rijál", - "de": "Katar-Riyal", - "en": "Qatari riyal", - "eo": "katara rialo", - "es": "riyal catarí", - "fi": "Qatarin rial", - "fr": "Riyal qatarien", - "he": "ריאל קטרי", - "hr": "Katarski rijal", - "hu": "katari riál", - "id": "Riyal Qatar", - "it": "riyal qatariota", - "ja": "カタール・リヤル", - "ko": "카타르 리얄", - "lt": "Kataro rialas", - "ms": "Riyal Qatar", - "nl": "Qatarese rial", - "pa": "ਕਤਰੀ ਰਿਆਲ", - "pl": "Rial Kataru", - "pt": "Rial catarense", - "ru": "катарский риал", - "sr": "катарски ријал", - "sv": "Qatarisk rial", - "ta": "கத்தாரி ரியால்", - "th": "ริยาลกาตาร์", - "tr": "Katar riyali", - "uk": "Катарський ріал", - "vi": "Riyal Qatar" - }, - "RON": { - "ar": "ليو روماني", - "bg": "Румънска лея", - "ca": "leu romanès", - "cs": "rumunský lei", - "da": "Leu", - "de": "rumänischer Leu", - "en": "Romanian Leu", - "eo": "rumana leo", - "es": "Leu rumano", - "et": "Rumeenia leu", - "fi": "Romanian leu", - "fr": "leu roumain", - "gl": "Leu romanés", - "he": "לֵיי רומני", - "hr": "Rumunjski lej", - "hu": "román lej", - "id": "Leu Rumania", - "it": "leu romeno", - "ja": "ルーマニア・レウ", - "ko": "루마니아 레우", - "lt": "Naujoji Rumunijos lėja", - "lv": "Rumānijas leja", - "nl": "Roemeense leu", - "oc": "Leu romanés", - "pa": "ਰੋਮਾਨੀਆਈ ਲਿਊ", - "pl": "Lej rumuński", - "pt": "leu romeno", - "ro": "leu românesc", - "ru": "румынский лей", - "sk": "Nový rumunský lei", - "sl": "romunski lej", - "sr": "румунски леј", - "sv": "Rumänsk leu", - "ta": "ரொமேனிய லியு", - "th": "เลวูโรมาเนีย", - "tr": "Rumen leyi", - "uk": "румунський лей", - "vi": "Leu România", - "ia": "leu romanian" - }, - "RSD": { - "ar": "دينار صربي", - "bg": "Сръбски динар", - "ca": "dinar serbi", - "cs": "Srbský dinár", - "da": "serbisk dinar", - "de": "serbischer Dinar", - "en": "Serbian dinar", - "eo": "serba dinaro", - "es": "dinar serbio", - "et": "Serbia dinaar", - "eu": "Serbiar dinar", - "fi": "Serbian dinaari", - "fr": "dinar serbe", - "gl": "Dinar serbio", - "he": "דינר סרבי", - "hr": "srpski dinar", - "hu": "szerb dinár", - "id": "Dinar Serbia", - "it": "dinaro serbo", - "ja": "セルビア・ディナール", - "ko": "세르비아 디나르", - "lt": "Serbijos dinaras", - "lv": "Serbijas dinārs", - "nl": "Servische dinar", - "pa": "ਸਰਬੀਆਈ ਦਿਨਾਰ", - "pl": "Dinar serbski", - "pt": "dinar sérvio", - "ro": "Dinar sârbesc", - "ru": "сербский динар", - "sk": "Srbský dinár", - "sl": "srbski dinar", - "sr": "српски динар", - "sv": "Serbisk dinar", - "ta": "செர்பிய தினார்", - "tr": "Sırp dinarı", - "uk": "сербський динар", - "cy": "dinar (Serbia)", - "ia": "dinar serbe" - }, - "RUB": { - "af": "Russiese roebel", - "ar": "روبل روسي", - "bg": "Руска рубла", - "bn": "রুশ রুবল", - "ca": "ruble rus", - "cs": "ruský rubl", - "cy": "Rŵbl Rwsiaidd", - "da": "russisk rubel", - "de": "russischer Rubel", - "dv": "ރަޝިޔަން ރޫބެލް", - "en": "Russian ruble", - "eo": "rusa rublo", - "es": "rublo ruso", - "et": "Venemaa rubla", - "eu": "Errusiar errublo", - "fi": "Venäjän rupla", - "fr": "rouble russe", - "gl": "Rublo ruso", - "he": "רובל רוסי", - "hr": "Ruska rublja", - "hu": "orosz rubel", - "id": "Rubel Rusia", - "it": "rublo russo", - "ja": "ロシア・ルーブル", - "ko": "러시아 루블", - "lt": "Rusijos rublis", - "lv": "Krievijas rublis", - "ms": "Rubel Rusia", - "nl": "Russische roebel", - "pa": "ਰੂਸੀ ਰੂਬਲ", - "pl": "rubel rosyjski", - "pt": "rublo russo", - "ro": "Rublă rusă", - "ru": "российский рубль", - "sk": "Ruský rubeľ", - "sr": "руска рубља", - "sv": "rysk rubel", - "szl": "Ruski rubel", - "ta": "உருசிய ரூபிள்", - "th": "รูเบิลรัสเซีย", - "tr": "Rus rublesi", - "uk": "російський рубль", - "vi": "Rúp Nga", - "ia": "rublo russe", - "sl": "ruski rubelj" - }, - "RWF": { - "ar": "فرنك رواندي", - "bg": "Руандийски франк", - "ca": "franc ruandès", - "cs": "Rwandský frank", - "da": "Rwandisk franc", - "de": "Ruanda-Franc", - "en": "Rwandan franc", - "eo": "ruanda franko", - "es": "franco ruandés", - "et": "Rwanda frank", - "fi": "Ruandan frangi", - "fr": "franc rwandais", - "gl": "Franco ruandés", - "he": "פרנק רואנדי", - "hr": "Ruandski franak", - "hu": "ruandai frank", - "id": "Franc Rwanda", - "it": "franco ruandese", - "ja": "ルワンダ・フラン", - "ko": "르완다 프랑", - "lt": "Ruandos frankas", - "nl": "Rwandese frank", - "pl": "frank rwandyjski", - "pt": "franco ruandês", - "ru": "руандийский франк", - "sr": "руандски франак", - "sv": "Rwandisk franc", - "tr": "Ruanda frangı", - "uk": "Руандійський франк" - }, - "SAR": { - "ar": "ريال سعودي", - "bg": "Саудитски риал", - "bn": "সৌদি রিয়াল", - "ca": "riyal saudita", - "cs": "saúdský rijál", - "de": "Saudi-Rial", - "en": "Saudi riyal", - "eo": "sauda rialo", - "es": "riyal saudí", - "et": "Saudi Araabia riaal", - "fi": "Saudi-Arabian rial", - "fr": "riyal saoudien", - "he": "ריאל סעודי", - "hr": "Saudijski rijal", - "hu": "szaúdi riál", - "id": "Riyal Saudi", - "it": "riyal saudita", - "ja": "サウジアラビア・リヤル", - "ko": "사우디아라비아 리얄", - "lt": "Saudo Arabijos rialas", - "ml": "സൗദി റിയാൽ", - "ms": "Riyal Saudi", - "nl": "Saoedi-Arabische riyal", - "pa": "ਸਾਊਦੀ ਰਿਆਲ", - "pl": "Rial saudyjski", - "pt": "Riyal", - "ro": "Rial saudit", - "ru": "саудовский риял", - "sr": "саудијски ријал", - "sv": "Saudiarabisk rial", - "ta": "சவூதி ரியால்", - "tr": "Suudi Arabistan riyali", - "uk": "саудівський ріал", - "vi": "Riyal Ả Rập Xê Út", - "oc": "rial saudian", - "sl": "saudski rial" - }, - "SBD": { - "ar": "دولار جزر سليمان", - "bg": "Соломоновски долар", - "ca": "dòlar de Salomó", - "cs": "Dolar Šalomounových ostrovů", - "da": "Salomondollar", - "de": "Salomonen-Dollar", - "en": "Solomon Islands dollar", - "eo": "salomona dolaro", - "es": "dólar de las Islas Salomón", - "fi": "Salomonsaarten dollari", - "fr": "dollar des îles Salomon", - "gl": "Dólar das Illas Salomón", - "he": "דולר איי שלמה", - "hr": "Salomonskootočni dolar", - "hu": "Salamon-szigeteki dollár", - "id": "Dolar Kepulauan Solomon", - "it": "dollaro delle Salomone", - "ja": "ソロモン諸島ドル", - "ko": "솔로몬 제도 달러", - "lt": "Saliamono salų doleris", - "nl": "Salomon-dollar", - "pl": "Dolar Wysp Salomona", - "pt": "Dólar das Ilhas Salomão", - "ro": "Dolar din Insulele Solomon", - "ru": "доллар Соломоновых Островов", - "sr": "соломонски долар", - "sv": "Salomondollar", - "tr": "Solomon Adaları doları", - "uk": "Долар Соломонових островів", - "oc": "dolar de las Illas Salamon" - }, - "SCR": { - "ar": "روبية سيشلية", - "bg": "Сейшелска рупия", - "ca": "rupia de les Seychelles", - "cs": "Seychelská rupie", - "da": "Seychellisk rupee", - "de": "Seychellen-Rupie", - "en": "Seychellois rupee", - "eo": "sejŝela rupio", - "es": "rupia seychelense", - "et": "Seišelli ruupia", - "eu": "Errupia seychelletar", - "fi": "Seychellien rupia", - "fr": "roupie seychelloise", - "hr": "Sejšelska rupija", - "hu": "seychelle-i rúpia", - "id": "rupee Seychelles", - "it": "rupia delle Seychelles", - "ja": "セーシェル・ルピー", - "ko": "세이셸 루피", - "lt": "Seišelių rupija", - "nl": "Seychelse roepie", - "pl": "Rupia seszelska", - "pt": "rupia das Seicheles", - "ru": "сейшельская рупия", - "sr": "сејшелска рупија", - "sv": "Seychellisk rupee", - "tr": "Seyşeller rupisi", - "uk": "Сейшельська рупія", - "ms": "rupee Seychelles", - "sl": "sejšelska rupija" - }, - "SDG": { - "ar": "جنيه سوداني", - "ca": "lliura sudanesa", - "cs": "súdánská libra", - "de": "sudanesisches Pfund", - "en": "Sudanese pound", - "eo": "sudana pundo", - "es": "libra sudanesa", - "fi": "Sudanin punta", - "fr": "livre soudanaise", - "hr": "Sudanska funta", - "hu": "szudáni font", - "id": "Pound Sudan", - "it": "sterlina sudanese", - "ja": "スーダン・ポンド", - "ko": "수단 파운드", - "lt": "Sudano svaras", - "lv": "Sudānas mārciņa", - "ms": "Paun Sudan", - "nl": "Soedanees pond", - "pl": "Funt sudański", - "pt": "Libra sudanesa", - "ro": "Liră sudaneză", - "ru": "суданский фунт", - "sr": "суданска фунта", - "sv": "Sudanesiskt pund", - "tr": "Sudan sterlini", - "uk": "Суданський фунт", - "bg": "Суданска лира", - "cy": "punt Swdan", - "da": "Sudansk pund", - "he": "לירה סודאנית" - }, - "SEK": { - "af": "Sweedse kroon", - "ar": "كرونة سويدية", - "bg": "Шведска крона", - "ca": "corona sueca", - "cs": "švédská koruna", - "da": "svensk krone", - "de": "schwedische Krone", - "en": "Swedish krona", - "eo": "sveda krono", - "es": "corona sueca", - "et": "Rootsi kroon", - "eu": "Suediar koroa", - "fi": "Ruotsin kruunu", - "fr": "couronne suédoise", - "gl": "Coroa sueca", - "he": "קרונה שוודית", - "hr": "Švedska kruna", - "hu": "svéd korona", - "id": "Krona Swedia", - "it": "corona svedese", - "ja": "スウェーデン・クローナ", - "ko": "스웨덴 크로나", - "lt": "Švedijos krona", - "lv": "Zviedrijas krona", - "ms": "Krona Sweden", - "nl": "Zweedse kroon", - "pa": "ਸਵੀਡਨੀ ਕਰੋਨਾ", - "pl": "Korona szwedzka", - "pt": "coroa sueca", - "ro": "Coroană suedeză", - "ru": "шведская крона", - "sk": "Švédska koruna", - "sl": "švedska krona", - "sr": "шведска круна", - "sv": "svensk krona", - "ta": "சுவீடிய குரோனா", - "th": "ครูนาสวีเดน", - "tr": "İsveç kronu", - "uk": "шведська крона", - "vi": "Krona Thụy Điển", - "cy": "krona", - "oc": "Corona" - }, - "SGD": { - "af": "Singapoer-dollar", - "ar": "دولار سنغافوري", - "bg": "Сингапурски долар", - "bn": "সিঙ্গাপুর ডলার", - "ca": "dòlar de Singapur", - "cs": "Singapurský dolar", - "da": "singaporeansk dollar", - "de": "Singapur-Dollar", - "en": "Singapore dollar", - "eo": "singapura dolaro", - "es": "dólar de Singapur", - "eu": "Dolar singapurtar", - "fi": "Singaporen dollari", - "fr": "dollar de Singapour", - "gl": "Dólar de Singapur", - "he": "דולר סינגפורי", - "hr": "Singapurski dolar", - "hu": "szingapúri dollár", - "id": "Dolar Singapura", - "it": "dollaro di Singapore", - "ja": "シンガポールドル", - "ko": "싱가포르 달러", - "lt": "Singapūro doleris", - "ml": "സിംഗപ്പൂർ ഡോളർ", - "ms": "Dolar Singapura", - "nl": "Singaporese dollar", - "pa": "ਸਿੰਘਾਪੁਰੀ ਡਾਲਰ", - "pl": "Dolar singapurski", - "pt": "dólar de Singapura", - "ru": "сингапурский доллар", - "si": "සිංගප්පූරු ඩොලරය", - "sr": "сингапурски долар", - "sv": "Singaporiansk dollar", - "ta": "சிங்கப்பூர் வெள்ளி", - "th": "ดอลลาร์สิงคโปร์", - "tr": "Singapur doları", - "uk": "сінгапурський долар", - "vi": "Đô la Singapore", - "oc": "Dolar de Singapor" - }, - "SHP": { - "ar": "جنيه سانت هيليني", - "ca": "lliura de Santa Helena", - "cs": "svatohelenská libra", - "de": "St.-Helena-Pfund", - "en": "Saint Helena pound", - "eo": "sankthelena pundo", - "es": "libra de Santa Elena", - "fi": "Saint Helenan punta", - "fr": "livre de Sainte-Hélène", - "hr": "Svetohelenska funta", - "hu": "Szent Ilona-i font", - "id": "Pound Saint Helena", - "it": "sterlina di Sant'Elena", - "ja": "セントヘレナ・ポンド", - "ko": "세인트헬레나 파운드", - "nl": "Sint-Heleens pond", - "pl": "Funt Świętej Heleny", - "pt": "libra de Santa Helena", - "ro": "Liră din Sfânta Elena", - "ru": "фунт Святой Елены", - "sv": "Sankthelenskt pund", - "tr": "Saint Helena sterlini", - "uk": "Фунт Святої Єлени" - }, - "SLE": { - "ar": "ليون سيراليوني", - "bg": "леоне на Сиера Леоне", - "ca": "leone", - "cs": "sierraleonský leone", - "de": "Sierra-leonischer Leone", - "en": "leone", - "eo": "sieraleona leono", - "es": "leone", - "fi": "Sierra Leonen leone", - "fr": "leone", - "gl": "leone", - "he": "ליאון", - "hr": "Sijeraleonski leone", - "hu": "Sierra Leone-i leone", - "id": "Leone", - "it": "leone sierraleonese", - "ja": "レオン", - "ko": "시에라리온 레온", - "lt": "leonė", - "ms": "leone", - "nl": "Sierra Leoonse leone", - "pl": "leone", - "pt": "leone", - "ro": "leone", - "ru": "леоне", - "sr": "сијералеонски леоне", - "sv": "Sierraleonsk Leone", - "tr": "Sierra Leone leonesi", - "uk": "леоне", - "oc": "leone", - "sl": "leone" - }, - "SLL": { - "ar": "ليون سيراليوني", - "bg": "леоне на Сиера Леоне", - "ca": "leone", - "cs": "sierraleonský leone", - "de": "Sierra-leonischer Leone", - "en": "leone", - "eo": "sieraleona leono", - "es": "leone", - "fi": "Sierra Leonen leone", - "fr": "leone", - "gl": "leone", - "he": "ליאון", - "hr": "Sijeraleonski leone", - "hu": "Sierra Leone-i leone", - "id": "Leone", - "it": "leone sierraleonese", - "ja": "レオン", - "ko": "시에라리온 레온", - "lt": "leonė", - "ms": "leone", - "nl": "Sierra Leoonse leone", - "pl": "leone", - "pt": "leone", - "ro": "leone", - "ru": "леоне", - "sr": "сијералеонски леоне", - "sv": "Sierraleonsk Leone", - "tr": "Sierra Leone leonesi", - "uk": "леоне", - "oc": "leone", - "sl": "leone" - }, - "SOS": { - "ar": "شلن صومالي", - "bg": "Сомалийски шилинг", - "ca": "xíling somali", - "cs": "Somálský šilink", - "da": "Somalisk shilling", - "de": "Somalia-Schilling", - "en": "Somali shilling", - "eo": "somalia ŝilingo", - "es": "chelín somalí", - "fi": "Somalian šillinki", - "fr": "shilling somalien", - "he": "שילינג סומלי", - "hr": "Somalijski šiling", - "hu": "szomáliai shilling", - "id": "Shilling Somalia", - "it": "scellino somalo", - "ja": "ソマリア・シリング", - "ko": "소말리아 실링", - "lt": "Somalio šilingas", - "ms": "Shilling Somalia", - "nl": "Somalische shilling", - "pl": "Szyling somalijski", - "pt": "xelim somaliano", - "ru": "сомалийский шиллинг", - "sr": "сомалијски шилинг", - "sv": "Somalisk shilling", - "tr": "Somali şilini", - "uk": "сомалійський шилінг", - "sl": "somalski šiling" - }, - "SRD": { - "ar": "دولار سورينامي", - "bg": "Суринамски долар", - "ca": "dòlar de Surinam", - "cs": "Surinamský dolar", - "de": "Suriname-Dollar", - "en": "Surinamese dollar", - "eo": "surinama dolaro", - "es": "Dólar surinamés", - "eu": "Dolar surinamdar", - "fi": "Surinamen dollari", - "fr": "Dollar du Surinam", - "gl": "Dólar surinamés", - "hr": "Surinamski dolar", - "hu": "suriname-i dollár", - "id": "Dolar Suriname", - "it": "Dollaro surinamese", - "ja": "スリナム・ドル", - "ko": "수리남 달러", - "lt": "Surinamo doleris", - "ms": "Dolar Suriname", - "nl": "Surinaamse dollar", - "pa": "ਸੂਰੀਨਾਮੀ ਡਾਲਰ", - "pl": "Dolar surinamski", - "pt": "Dólar do Suriname", - "ru": "суринамский доллар", - "sr": "суринамски долар", - "sv": "Surinamesisk dollar", - "tr": "Surinam doları", - "uk": "Суринамський долар" - }, - "SSP": { - "ar": "جنيه جنوب سوداني", - "bg": "Южносудански паунд", - "ca": "lliura sud-sudanesa", - "cs": "jihosúdánská libra", - "de": "südsudanesisches Pfund", - "en": "South Sudanese pound", - "es": "libra sursudanesa", - "et": "Lõuna-Sudaani nael", - "fi": "Etelä-Sudanin punta", - "fr": "livre sud-soudanaise", - "gl": "Libra sursudanesa", - "he": "לירה דרום סודאנית", - "hr": "Južnosudanska funta", - "hu": "dél-szudáni font", - "id": "Pound Sudan Selatan", - "it": "sterlina sudsudanese", - "ja": "南スーダン・ポンド", - "ko": "남수단 파운드", - "lt": "Pietų Sudano svaras", - "ms": "Paun Sudan Selatan", - "nl": "Zuid-Soedanees pond", - "pl": "Funt południowosudański", - "pt": "libra sul-sudanesa", - "ro": "Liră sud-sudaneză", - "ru": "южносуданский фунт", - "sk": "Juhosudánska libra", - "sr": "јужносуданска фунта", - "sv": "Sydsudanesiskt pund", - "th": "ปอนด์ซูดานใต้", - "tr": "Güney Sudan sterlini", - "uk": "Південносуданський фунт", - "vi": "Bảng Nam Sudan", - "eo": "sud-sudana pundo", - "oc": "liura sodanesa" - }, - "STN": { - "ar": "دوبرا ساو تومي وبرينسيب", - "ca": "dobra", - "cs": "Svatotomášská dobra", - "da": "Dobra", - "de": "São-toméischer Dobra", - "en": "São Tomé and Príncipe dobra", - "eo": "saotomea dobro", - "es": "dobra santotomense", - "fi": "São Tomén ja Príncipen dobra", - "fr": "dobra", - "gl": "Dobra", - "hr": "svetotomska dobra", - "hu": "São Tomé és Príncipe-i dobra", - "id": "Dobra", - "it": "dobra di São Tomé e Príncipe", - "ja": "ドブラ", - "ko": "상투메 프린시페 도브라", - "lt": "Dobra", - "ms": "Dobra São Tomé dan Príncipe", - "nl": "Santomese dobra", - "pl": "Dobra", - "pt": "dobra", - "ro": "Dobra", - "ru": "Добра Сан-Томе и Принсипи", - "sk": "Dobra", - "sr": "саотомска добра", - "sv": "Saotomeansk Dobra", - "tr": "São Tomé ve Príncipe dobrası", - "uk": "Добра Сан-Томе і Принсіпі", - "he": "דוברה", - "oc": "Dobra" - }, - "SYP": { - "ar": "ليرة سورية", - "bg": "Сирийска лира", - "bn": "সিরীয় পাউন্ড", - "ca": "lliura siriana", - "cs": "syrská libra", - "de": "syrische Lira", - "en": "Syrian pound", - "eo": "siria pundo", - "es": "Dolar sirio", - "fi": "Syyrian punta", - "fr": "livre syrienne", - "he": "לירה סורית", - "hr": "Sirijska funta", - "hu": "szír font", - "id": "Pound Suriah", - "it": "lira siriana", - "ja": "シリア・ポンド", - "ko": "시리아 파운드", - "lt": "Sirijos svaras", - "ms": "Paun Syria", - "nl": "Syrisch pond", - "pa": "ਸੀਰੀਆਈ ਪਾਊਂਡ", - "pl": "Funt syryjski", - "pt": "libra síria", - "ru": "сирийский фунт", - "sl": "sirski funt", - "sr": "сиријска фунта", - "sv": "Syriskt pund", - "tr": "Suriye lirası", - "uk": "Сирійський фунт" - }, - "SZL": { - "af": "Lilangeni", - "ar": "ليلانغيني سوازيلندي", - "bg": "Свази лилангени", - "ca": "lilangeni", - "cs": "svazijský lilangeni", - "da": "Lilangeni", - "de": "Lilangeni", - "en": "lilangeni", - "eo": "svazilanda lilangenio", - "es": "lilangeni", - "fi": "Lilangeni", - "fr": "lilangeni", - "gl": "Lilangeni", - "he": "לילנגני", - "hr": "Svazijski lilangeni", - "hu": "szváziföldi lilangeni", - "id": "Lilangeni Eswatini", - "it": "lilangeni dell'eSwatini", - "ja": "リランゲニ", - "ko": "에스와티니 릴랑게니", - "lt": "Lilangenis", - "nl": "Swazische lilangeni", - "pl": "Lilangeni", - "pt": "Lilangeni suázi", - "ru": "Свазилендский лилангени", - "sr": "свазилендски лилангени", - "sv": "Swazisk lilangeni", - "tr": "Lilangeni", - "uk": "Ліланджені", - "vi": "Lilangeni Swaziland", - "oc": "Lilangeni" - }, - "THB": { - "af": "Thaise baht", - "ar": "بات تايلاندي", - "bg": "Тайландски бат", - "bn": "থাই বাত", - "ca": "Baht", - "cs": "Thajský baht", - "cy": "Baht", - "da": "thailandsk baht", - "de": "Baht", - "en": "baht", - "eo": "tajlanda bahto", - "es": "baht tailandés", - "et": "Baat", - "eu": "Thailandiar baht", - "fi": "Baht", - "fr": "baht", - "gl": "Baht", - "he": "באט", - "hr": "Tajlandski baht", - "hu": "thai bát", - "id": "Baht", - "it": "baht thailandese", - "ja": "バーツ", - "ko": "태국 밧", - "lt": "Tailando batas", - "lv": "bats", - "ms": "Baht Thailand", - "nl": "Thaise baht", - "pa": "ਥਾਈ ਬਾਤ", - "pl": "bat", - "pt": "baht", - "ru": "тайский бат", - "sk": "Thajský baht", - "sr": "тајландски бат", - "sv": "Baht", - "ta": "தாய்லாந்தின் பாட்", - "th": "บาท", - "tr": "Baht", - "uk": "бат", - "vi": "Baht" - }, - "TJS": { - "af": "Somoni", - "ar": "ساماني طاجيكي", - "bg": "Таджикистански сомони", - "ca": "somoni", - "cs": "Tádžický somoni", - "cy": "Somoni", - "da": "Somoni", - "de": "Somoni", - "en": "Tajikistani somoni", - "eo": "taĝika somonio", - "es": "somoni tayiko", - "et": "Tadžikistani somoni", - "fi": "Tadžikistanin somoni", - "fr": "somoni", - "gl": "somoni", - "hr": "Tadžikistanski somoni", - "hu": "tádzsik szomoni", - "id": "Somoni", - "it": "somoni tagico", - "ja": "ソモニ", - "ko": "타지키스탄 소모니", - "lt": "Somonis", - "ms": "Somoni", - "nl": "Tadzjiekse somoni", - "pa": "ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ", - "pl": "Somoni", - "pt": "Somoni", - "ro": "Somoni tadjic", - "ru": "таджикский сомони", - "sr": "таџикистански сомони", - "sv": "Tadzjikistansk somoni", - "tr": "Somoni", - "uk": "Таджицький сомоні", - "he": "סומוני טג'קיסטני", - "sl": "tadžikistanski somoni" - }, - "TMT": { - "ar": "منات تركمانستاني", - "bg": "Туркменски манат", - "ca": "manat turcman", - "cs": "Turkmenský manat", - "de": "Turkmenistan-Manat", - "en": "Turkmenistan new manat", - "eo": "turkmena manato", - "es": "manat turkmeno", - "fi": "Turkmenistanin manat", - "fr": "Manat turkmène", - "gl": "Manat turcomán", - "hr": "Turkmenistanski manat", - "hu": "türkmén manat", - "id": "Manat Turkmenistan", - "it": "Manat turkmeno", - "ja": "トルクメニスタン・マナト", - "ko": "투르크메니스탄 마나트", - "lt": "Turkmėnijos manatas", - "ms": "Manat Turkmenistan", - "nl": "Turkmeense manat", - "pa": "ਤੁਰਕਮੇਨਿਸਤਾਨੀ ਮਨਦ", - "pl": "Manat turkmeński", - "pt": "Manate do Turcomenistão", - "ro": "Manat turkmen", - "ru": "туркменский манат", - "sk": "Turkménsky manat", - "sr": "туркменистански манат", - "sv": "Turkmenistansk manat", - "th": "มานัตเติร์กเมนิสถาน", - "tr": "Türkmenistan manatı", - "uk": "Туркменський манат", - "vi": "Manat Turkmenistan", - "he": "מנאט טורקמני חדש", - "oc": "manat turcmèn" - }, - "TND": { - "ar": "دينار تونسي", - "bg": "Тунизийски динар", - "ca": "dinar tunisià", - "cs": "tuniský dinár", - "cy": "Dinar Tunisiaidd", - "de": "tunesischer Dinar", - "en": "Tunisian dinar", - "eo": "tunizia dinaro", - "es": "dinar tunecino", - "et": "Tuneesia dinaar", - "fi": "Tunisian dinaari", - "fr": "dinar tunisien", - "he": "דינר תוניסאי", - "hr": "tuniski dinar", - "hu": "tunéziai dinár", - "id": "Dinar Tunisia", - "it": "dinaro tunisino", - "ja": "チュニジア・ディナール", - "ko": "튀니지 디나르", - "lt": "Tuniso dinaras", - "ms": "Dinar Tunisia", - "nl": "tunesische dinar", - "pl": "Dinar tunezyjski", - "pt": "dinar tunisiano", - "ru": "тунисский динар", - "sl": "Tunizijski dinar", - "sr": "туниски динар", - "sv": "Tunisisk dinar", - "tr": "Tunus dinarı", - "uk": "Туніський динар" - }, - "TOP": { - "af": "Paʻanga", - "ar": "بانجا تونجي", - "ca": "pa‘anga", - "cs": "Tonžská paʻanga", - "de": "Paʻanga", - "en": "Tongan paʻanga", - "eo": "tonga paangao", - "es": "pa'anga", - "fi": "Tongan paʻanga", - "fr": "pa’anga", - "gl": "Paʻanga", - "he": "פאנגה טונגאית", - "hr": "Tongaška pa’anga", - "hu": "tongai paʻanga", - "id": "Pa'anga", - "it": "pa'anga tongano", - "ja": "パ・アンガ", - "ko": "통가 팡가", - "lt": "Tongos paanga", - "ms": "Paʻanga", - "nl": "Tongaanse pa'anga", - "pl": "Pa'anga", - "pt": "pa'anga", - "ru": "тонганская паанга", - "sr": "тонганска панга", - "sv": "Tongansk pa'anga", - "th": "ปาอางา", - "tr": "Pa'anga", - "uk": "Тонганська паанга", - "vi": "Paʻanga Tonga" - }, - "TRY": { - "af": "Turkse lira", - "ar": "ليرة تركية", - "bg": "Турска лира", - "bn": "তুর্কি লিরা", - "ca": "lira turca", - "cs": "turecká lira", - "cy": "Lira Twrcaidd", - "da": "tyrkisk lira", - "de": "türkische Lira", - "en": "Turkish lira", - "eo": "turka liro", - "es": "lira turca", - "et": "Türgi liir", - "eu": "Turkiar lira", - "fi": "Turkin liira", - "fr": "livre turque", - "gl": "Lira turca", - "he": "לירה טורקית", - "hr": "Turska lira", - "hu": "török líra", - "id": "Lira Turki", - "it": "lira turca", - "ja": "トルコ・リラ", - "ko": "터키 리라", - "lt": "Turkijos lira", - "lv": "Turcijas lira", - "ms": "Lira Turki", - "nl": "Turkse lira", - "pa": "ਤੁਰਕੀ ਲੀਰਾ", - "pl": "lira turecka", - "pt": "lira turca", - "ro": "Liră turcească", - "ru": "турецкая лира", - "sk": "Turecká líra", - "sr": "турска лира", - "sv": "Turkisk lira", - "ta": "துருக்கிய லிரா", - "th": "ลีราใหม่ตุรกี", - "tr": "Türk lirası", - "uk": "Турецька ліра", - "vi": "Lira Thổ Nhĩ Kỳ", - "ia": "lira turc", - "oc": "lira turca", - "sl": "turška lira" - }, - "TTD": { - "ar": "دولار ترينيداد وتوباغو", - "bg": "Тринидадски и тобагски долар", - "ca": "dòlar de Trinitat i Tobago", - "cs": "Dolar Trinidadu a Tobaga", - "de": "Trinidad-und-Tobago-Dollar", - "en": "Trinidad and Tobago dollar", - "eo": "trinidada dolaro", - "es": "dólar trinitense", - "et": "Trinidadi ja Tobago dollar", - "eu": "Trinidad eta Tobagoko dolar", - "fi": "Trinidad ja Tobagon dollari", - "fr": "Dollar de Trinité-et-Tobago", - "gl": "Dólar de Trinidad e Tobago", - "hr": "Trinidadtobaški dolar", - "hu": "Trinidad és Tobagó-i dollár", - "id": "Dolar Trinidad dan Tobago", - "it": "Dollaro di Trinidad e Tobago", - "ja": "トリニダード・トバゴ・ドル", - "ko": "트리니다드 토바고 달러", - "lt": "Trinidado ir Tobago doleris", - "lv": "Trinidādas un Tobāgo dolārs", - "nl": "Trinidad en Tobagodollar", - "pa": "ਤ੍ਰਿਨੀਦਾਦ ਅਤੇ ਤੋਬਾਗੋ ਡਾਲਰ", - "pl": "Dolar Trynidadu i Tobago", - "pt": "Dólar de Trinidad e Tobago", - "ru": "доллар Тринидада и Тобаго", - "sr": "долар Тринидада и Тобага", - "sv": "Trinidaddollar", - "tr": "Trinidad ve Tobago doları", - "uk": "Долар Тринідаду та Тобаго", - "sk": "Trinidadsko-tobažský dolár" - }, - "TWD": { - "af": "Nuwe Taiwannese dollar", - "ar": "دولار تايواني جديد", - "bg": "Нов тайвански долар", - "ca": "nou dòlar de Taiwan", - "cs": "Tchajwanský dolar", - "de": "Neuer Taiwan-Dollar", - "en": "New Taiwan dollar", - "eo": "nova tajvana dolaro", - "es": "nuevo dólar taiwanés", - "et": "Uus Taiwani dollar", - "fi": "Uusi Taiwanin dollari", - "fr": "nouveau dollar de Taïwan", - "hr": "Novotajvanski dolar", - "hu": "tajvani új dollár", - "id": "Dolar Baru Taiwan", - "it": "Dollaro taiwanese", - "ja": "新台湾ドル", - "ko": "신 타이완 달러", - "lt": "Naujasis Taivano doleris", - "lv": "Jaunais Taivānas dolārs", - "ms": "Dolar Baru Taiwan", - "nl": "Taiwanese dollar", - "pa": "ਨਵਾਂ ਤਾਇਵਾਨੀ ਡਾਲਰ", - "pl": "Dolar tajwański", - "pt": "novo dólar taiwanês", - "ru": "новый тайваньский доллар", - "sr": "нови тајвански долар", - "sv": "Taiwanesisk dollar", - "th": "ดอลลาร์ไต้หวันใหม่", - "tr": "Yeni Tayvan doları", - "uk": "новий тайванський долар", - "vi": "Tân Đài tệ", - "cy": "Doler Newydd Taiwan", - "he": "דולר טאיוואני חדש", - "sl": "novi tajvanski dolar" - }, - "TZS": { - "ar": "شيلينغ تانزاني", - "bg": "Танзанийски шилинг", - "ca": "xíling tanzà", - "cs": "Tanzanský šilink", - "cy": "Swllt Tanzania", - "de": "Tansania-Schilling", - "en": "Tanzanian shilling", - "eo": "tanzania ŝilingo", - "es": "chelín tanzano", - "fi": "Tansanian šillinki", - "fr": "shilling tanzanien", - "he": "שילינג טנזני", - "hr": "Tanzanijski šiling", - "hu": "tanzániai shilling", - "id": "Shilling Tanzania", - "it": "scellino tanzaniano", - "ja": "タンザニア・シリング", - "ko": "탄자니아 실링", - "lt": "Tanzanijos šilingas", - "ms": "Shilling Tanzania", - "nl": "Tanzaniaanse shilling", - "pl": "Szyling tanzański", - "pt": "xelim tanzaniano", - "ru": "танзанийский шиллинг", - "sk": "Tanzánijský šiling", - "sr": "танзанијски шилинг", - "sv": "Tanzanisk shilling", - "tr": "Tanzanya şilini", - "uk": "танзанійський шилінг" - }, - "UAH": { - "ar": "هريفنا أوكرانية", - "bg": "Украинска гривна", - "ca": "hrívnia", - "cs": "ukrajinská hřivna", - "da": "hryvnia", - "de": "Hrywnja", - "en": "Hryvnia", - "eo": "ukraina hrivno", - "es": "grivna", - "et": "Ukraina grivna", - "fi": "Ukrainan hryvnia", - "fr": "hryvnia", - "gl": "Hrivna", - "he": "הריבניה", - "hr": "Grivnja", - "hu": "ukrán hrivnya", - "id": "Hryvnia Ukraina", - "it": "grivnia ucraina", - "ja": "フリヴニャ", - "ko": "우크라이나 흐리우냐", - "lt": "Grivina", - "lv": "Ukrainas hrivna", - "ms": "Hryvnia", - "nl": "Oekraïense hryvnja", - "oc": "Hryvnia", - "pa": "ਯੂਕਰੇਨੀ ਹਰੀਵਨਾ", - "pl": "hrywna", - "pt": "hryvnia", - "ro": "Grivnă", - "ru": "украинская гривна", - "sk": "Ukrajinská hrivna", - "sl": "ukrajinska grivna", - "sr": "украјинска хривња", - "sv": "Hryvnja", - "ta": "ஹிருன்யா", - "th": "ฮรึวญา", - "tr": "Grivna", - "uk": "гривня", - "vi": "Hryvnia Ukraina", - "eu": "hryvnia", - "ia": "hryvnja ukrainian" - }, - "UGX": { - "af": "Ugandiese shilling", - "ar": "شيلينغ أوغندي", - "bg": "Угандийски шилинг", - "ca": "xíling ugandès", - "cs": "Ugandský šilink", - "de": "Uganda-Schilling", - "en": "Ugandan shilling", - "eo": "uganda ŝilingo", - "es": "chelín ugandés", - "fi": "Ugandan šillinki", - "fr": "shilling ougandais", - "he": "שילינג אוגנדי", - "hr": "Ugandski šiling", - "hu": "ugandai shilling", - "id": "Shilling Uganda", - "it": "scellino ugandese", - "ja": "ウガンダ・シリング", - "ko": "우간다 실링", - "lt": "Ugandos šilingas", - "nl": "Oegandese shilling", - "oc": "Shilling ogandés", - "pl": "Szyling ugandyjski", - "pt": "xelim Ugandês", - "ru": "угандийский шиллинг", - "sk": "Ugandský šiling", - "sr": "угандски шилинг", - "sv": "Ugandisk shilling", - "tr": "Uganda şilini", - "uk": "угандійський шилінг" - }, - "USD": { - "af": "Amerikaanse dollar", - "ar": "دولار أمريكي", - "bg": "щатски долар", - "bn": "মার্কিন ডলার", - "ca": "dòlar dels Estats Units", - "cs": "americký dolar", - "cy": "$ (UDA)", - "da": "amerikansk dollar", - "de": "US-Dollar", - "en": "United States dollar", - "eo": "usona dolaro", - "es": "dólar estadounidense", - "et": "USA dollar", - "eu": "Estatubatuar dolar", - "fi": "Yhdysvaltain dollari", - "fr": "dollar américain", - "gl": "dólar estadounidense", - "he": "דולר אמריקאי", - "hr": "Američki dolar", - "hu": "amerikai dollár", - "ia": "dollar statounitese", - "id": "Dolar Amerika Serikat", - "it": "dollaro statunitense", - "ja": "アメリカ合衆国ドル", - "ko": "미국 달러", - "lt": "Jungtinių Valstijų doleris", - "lv": "ASV dolārs", - "ml": "യുണൈറ്റഡ് സ്റ്റേറ്റ്സ് ഡോളർ", - "ms": "Dolar Amerika Syarikat", - "nl": "US dollar", - "oc": "dolar american", - "pa": "ਸੰਯੁਕਤ ਰਾਜ ਡਾਲਰ", - "pap": "Dollar merikano", - "pl": "dolar amerykański", - "pt": "dólar americano", - "ro": "dolar american", - "ru": "доллар США", - "si": "එක්සත් ජනපද ඩොලර්", - "sk": "americký dolár", - "sl": "ameriški dolar", - "sr": "амерички долар", - "sv": "amerikansk dollar", - "szl": "Dolar amerikański", - "ta": "அமெரிக்க டாலர்", - "te": "యునైటెడ్ స్టేట్స్ డాలర్", - "th": "ดอลลาร์สหรัฐ", - "tr": "Amerikan doları", - "uk": "Долар США", - "vi": "đô la Mỹ" - }, - "UYU": { - "af": "Uruguaanse Peso", - "ar": "بيزو أوروغواني", - "bg": "Уругвайско песо", - "cs": "Uruguayské peso", - "de": "uruguayischer Peso", - "en": "Uruguayan peso", - "eo": "urugvaja peso", - "es": "peso uruguayo", - "eu": "Peso uruguaitar", - "fi": "Uruguayn peso", - "fr": "peso uruguayen", - "gl": "Peso uruguaio", - "he": "פסו של אורוגוואי", - "hr": "Urugvajski pezo", - "hu": "uruguayi peso", - "id": "Peso Uruguay", - "it": "peso uruguaiano", - "ja": "ウルグアイ・ペソ", - "ko": "우루과이 페소", - "lt": "Urugvajaus pesas", - "ms": "Peso Uruguay", - "nl": "Uruguayaanse peso", - "pa": "ਉਰੂਗੁਏਵੀ ਪੇਸੋ", - "pl": "Peso urugwajskie", - "pt": "peso uruguaio", - "ru": "уругвайское песо", - "sr": "уругвајски пезос", - "sv": "Uruguayansk peso", - "tr": "Uruguay pesosu", - "uk": "Уругвайський песо", - "ca": "peso uruguaià", - "oc": "Peso uruguaian" - }, - "UZS": { - "ar": "سوم أوزبكستاني", - "bg": "Узбекистански сом", - "ca": "som uzbek", - "cs": "Uzbecký sum", - "de": "Soʻm", - "en": "Uzbekistani som", - "eo": "uzbeka somo", - "es": "som", - "fi": "Uzbekistanin som", - "fr": "Sum", - "he": "סום אוזבקי", - "hr": "Uzbekistanski som", - "hu": "üzbég szom", - "id": "Som Uzbekistan", - "it": "Som uzbeco", - "ja": "スム", - "ko": "우즈베키스탄 숨", - "lt": "Uzbekijos sumas", - "nl": "Oezbeekse sum", - "pa": "ਉਜ਼ਬੇਕਿਸਤਾਨੀ ਸੋਮ", - "pl": "Sum", - "pt": "som usbeque", - "ro": "Som uzbec", - "ru": "узбекский сум", - "sr": "узбекистански сом", - "sv": "Uzbekistansk som", - "tr": "Özbekistan somu", - "uk": "Узбецький сом" - }, - "VED": { - "en": "sovereign bolivar", - "es": "bolívar soberano", - "fr": "Bolivar souverain", - "hu": "venezuelai bolívar", - "ja": "ボリバル・ソベラノ", - "pt": "Bolívar soberano", - "ru": "Суверенный боливар", - "uk": "Суверенний Болівар", - "ar": "بوليفار السيادي" - }, - "VES": { - "en": "sovereign bolivar", - "es": "bolívar soberano", - "fr": "Bolivar souverain", - "hu": "venezuelai bolívar", - "ja": "ボリバル・ソベラノ", - "pt": "Bolívar soberano", - "ru": "Суверенный боливар", - "uk": "Суверенний Болівар", - "ar": "بوليفار السيادي" - }, - "VND": { - "ar": "دونغ فيتنامي", - "bg": "виетнамски донг", - "ca": "dong", - "cs": "Vietnamský dong", - "da": "Dong", - "de": "vietnamesischer Đồng", - "en": "Vietnamese đồng", - "eo": "vjetnama dongo", - "es": "đồng vietnamita", - "eu": "Vietnamdar dong", - "fi": "Vietnamin đồng", - "fr": "dong", - "gl": "Dong vietnamita", - "hr": "Vijetnamski dong", - "hu": "vietnámi đồng", - "id": "Đồng Vietnam", - "it": "Đồng vietnamita", - "ja": "ドン", - "ko": "베트남 동", - "lt": "Vietnamo dongas", - "nl": "Vietnamese dong", - "pa": "ਵੀਅਤਨਾਮੀ ਦੋਙ", - "pl": "Dong", - "pt": "dong", - "ru": "вьетнамский донг", - "sk": "Dong", - "sr": "вијетнамски донг", - "sv": "Vietnamesisk dong", - "th": "ด่ง", - "tr": "Đồng", - "uk": "в'єтнамський донг", - "vi": "Việt Nam Đồng", - "he": "דונג וייטנאמי ", - "oc": "Dong" - }, - "VUV": { - "ar": "فاتو فانواتي", - "bg": "Вату", - "ca": "vatu", - "cs": "Vanuatský vatu", - "de": "Vatu", - "en": "Vanuatu vatus", - "eo": "vanuatua vatuo", - "es": "vatu", - "fi": "Vanuatun vatu", - "fr": "Vatu", - "gl": "Vatu", - "he": "ואטו", - "hr": "Vanuatski vatu", - "hu": "vanuatui vatu", - "id": "Vatu Vanuatu", - "it": "Vatu di Vanuatu", - "ja": "バツ", - "ko": "바누아투 바투", - "lt": "Vatu", - "nl": "Vanuatuaanse vatu", - "pl": "Vatu", - "pt": "Vatu", - "ro": "Vatu", - "ru": "вату", - "sr": "вануатски вату", - "sv": "Vanuatisk vatu", - "tr": "Vatu", - "uk": "Вануатський вату", - "vi": "Vatu Vanuatu", - "sk": "Vanuatský vatu" - }, - "WST": { - "ar": "تالا ساموي", - "ca": "tala", - "cs": "Samojská tala", - "de": "samoanischer Tala", - "en": "Samoan Tālā", - "eo": "samoa talao", - "es": "tālā", - "et": "Samoa tala", - "fi": "Samoan tala", - "fr": "tala", - "gl": "Tala samoana", - "hr": "Samoanska tala", - "hu": "szamoai tala", - "id": "Tālā Samoa", - "it": "tala samoano", - "ja": "タラ", - "ko": "사모아 탈라", - "lt": "Tala", - "nl": "Samoaanse tala", - "pl": "Tala", - "pt": "tala", - "ro": "Tala samoan", - "ru": "самоанская тала", - "sk": "Tala", - "sr": "самоанска тала", - "sv": "Samoansk Tala", - "uk": "Самоанська тала", - "he": "טלה", - "oc": "Tala" - }, - "XAF": { - "ar": "فرنك وسط إفريقي", - "bg": "Централноафрикански CFA франк", - "ca": "franc CFA de l'Àfrica Central", - "cs": "Středoafrický frank", - "de": "CFA-Franc BEAC", - "en": "Central African CFA franc", - "es": "franco CFA de África Central", - "fr": "franc CFA d'Afrique centrale", - "hr": "Srednjoafrički CFA franak", - "id": "Franc CFA Afrika Tengah", - "ja": "中部アフリカCFAフラン", - "ko": "중앙아프리카 CFA 프랑", - "lv": "Centrālāfrikas CFA franks", - "ms": "Franc CFA Afrika Tengah", - "oc": "Franc CFA d'Africa Centrala", - "pt": "franco", - "ro": "Franc CFA BEAC", - "ru": "франк КФА BEAC", - "sk": "Stredoafrický frank", - "tr": "Orta Afrika CFA frangı", - "uk": "центральноафриканський франк", - "vi": "CFA franc Trung Phi", - "cy": "Ffranc Canol Affrica (CFA)", - "eo": "centr-afrika franko", - "fi": "Keski-Afrikan CFA-frangi", - "he": "פרנק CFA מרכז אפריקני", - "ia": "CFA", - "it": "franco CFA dell'Africa centrale", - "nl": "Central African CFA franc", - "sl": "srednjeafriški CFA frank", - "sv": "Centralafrikansk CFA Franc", - "ta": "மத்திய ஆப்பிரிக்க சி.எஃப்.ஏ பிராங்க்" - }, - "XAG": { - "cs": "Investiční stříbro", - "de": "Silberpreis", - "en": "silver as an investment", - "es": "La plata como inversión", - "ms": "Perak sebagai pelaburan", - "sv": "Silver som investering", - "vi": "Bạc như một khoản đầu tư", - "fr": "argent d'investissement", - "ja": "投資対象としての銀", - "ru": "серебро как инвестиция" - }, - "XAU": { - "ar": "استثمار الذهب", - "cs": "Investiční zlato", - "de": "Gold als Kapitalanlage", - "en": "gold as an investment", - "fi": "Kultaan sijoittaminen", - "fr": "or d'investissement", - "hu": "befektetési arany", - "ja": "金投資", - "ko": "금 투자", - "lv": "Zelts kā investīcija", - "ml": "സ്വർണവും സാമ്പത്തിക ശാസ്ത്രവും", - "ms": "Emas sebagai pelaburan", - "sr": "Investiciono zlato", - "sv": "Investeringsguld", - "vi": "Kênh đầu tư vàng", - "ru": "золото как инвестиция" - }, - "XCD": { - "ar": "دولار شرق الكاريبي", - "bg": "Източнокарибски долар", - "ca": "dòlar del Carib Oriental", - "cs": "Východokaribský dolar", - "cy": "Doler Dwyrain y Caribî", - "de": "Ostkaribischer Dollar", - "en": "Eastern Caribbean dollar", - "eo": "orientkaribia dolaro", - "es": "dólar del Caribe Oriental", - "eu": "Ekialdeko Karibeko dolar", - "fi": "Itä-Karibian dollari", - "fr": "dollar des Caraïbes orientales", - "gl": "Dólar Caribe-Leste", - "he": "דולר מזרח קריבי", - "hr": "Istočnokaripski dolar", - "hu": "kelet-karibi dollár", - "id": "Dolar Karibia Timur", - "it": "dollaro dei Caraibi Orientali", - "ja": "東カリブ・ドル", - "ko": "동카리브 달러", - "lt": "Rytų Karibų doleris", - "lv": "Austrumkarību dolārs", - "ms": "Dolar Caribbean Timur", - "nl": "Oost-Caribische dollar", - "pa": "ਪੂਰਬੀ ਕੈਰੀਬੀਆਈ ਡਾਲਰ", - "pl": "Dolar wschodniokaraibski", - "pt": "Dólar do Caribe Oriental", - "ru": "восточно-карибский доллар", - "sl": "Vzhodnokaribski dolar", - "sr": "источнокарипски долар", - "sv": "Östkaribisk dollar", - "tr": "Doğu Karayip doları", - "uk": "Східно-карибський долар", - "vi": "Đô la Đông Caribe", - "oc": "Dolar de las Caribas Orientalas", - "ta": "கிழக்குக் கரிபியன் டாலர்" - }, - "XDR": { - "ar": "حقوق السحب الخاصة", - "bg": "Специални права на тираж", - "ca": "drets especials de gir", - "cs": "Zvláštní práva čerpání", - "de": "Sonderziehungsrecht", - "en": "special drawing rights", - "eo": "specialaj rajtoj de enspezo", - "es": "Derechos Especiales de Giro", - "fi": "Erityisnosto-oikeus", - "fr": "droits de tirage spéciaux", - "hr": "Posebna prava vučenja", - "hu": "SDR", - "id": "Hak penarikan khusus", - "it": "diritti speciali di prelievo", - "ja": "特別引出権", - "ko": "특별인출권", - "lt": "Specialiosios skolinimosi teisės", - "lv": "Speciālās aizņēmuma tiesības", - "nl": "speciale trekkingsrechten", - "oc": "Drechs de tiratge Especials", - "pl": "Specjalne prawa ciągnienia", - "pt": "direitos especiais de saque", - "ro": "Drepturi speciale de tragere", - "ru": "специальные права заимствования", - "sk": "Zvláštne práva čerpania", - "sl": "posebne pravice črpanja", - "sv": "Särskilda dragningsrätter", - "th": "สิทธิพิเศษถอนเงิน", - "tr": "Özel çekme hakları", - "uk": "Спеціальні права запозичення", - "vi": "Quyền rút vốn đặc biệt", - "eu": "igorpen eskubide bereziak", - "ta": "Special drawings right" - }, - "XOF": { - "ar": "فرنك غرب أفريقي", - "bg": "Западноафрикански CFA франк", - "ca": "franc CFA de l'Àfrica Occidental", - "de": "CFA-Franc BCEAO", - "en": "West African CFA franc", - "es": "franco CFA de África Occidental", - "fr": "franc CFA", - "hr": "Zapadnoafrički CFA franak", - "id": "Franc CFA Afrika Barat", - "ja": "西アフリカCFAフラン", - "ko": "서아프리카 CFA 프랑", - "ms": "Franc CFA Afrika Barat", - "oc": "Franc CFA d'Africa Occidentala", - "pt": "franco CFA da África Ocidental", - "ro": "Franc CFA BCEAO", - "ru": "франк КФА BCEAO", - "sk": "Západoafrický frank", - "tr": "Batı Afrika CFA frangı", - "uk": "західноафриканський франк", - "vi": "CFA franc Tây Phi", - "cs": "západoafrický CFA frank", - "cy": "franc CFA Gorllein ffrica", - "eo": "okcident-afrika franko", - "he": "פרנק CFA מערב אפריקני", - "it": "franco CFA UEMOA", - "nl": "West African CFA franc", - "pl": "frank CFA", - "sl": "zahodnoafriški CFA frank", - "sv": "CFA Franc", - "ta": "மேற்கு ஆபிரிக்க சி.எஃப்.ஏ பிராங்க்" - }, - "XPD": { - "de": "Palladiumpreis", - "en": "palladium as an investment", - "ru": "палладий как инвестиция", - "sl": "paladij kot investicija" - }, - "XPF": { - "ar": "فرنك س ف ب", - "ca": "franc CFP", - "cs": "CFP frank", - "da": "CFP-franc", - "de": "CFP-Franc", - "en": "CFP Franc", - "eo": "pacifika franko", - "es": "Franco CFP", - "eu": "CFP libera", - "fi": "CFP-frangi", - "fr": "franc Pacifique", - "gl": "Franco CFP", - "hr": "CFP franak", - "hu": "csendes-óceáni valutaközösségi frank", - "id": "Franc CFP", - "it": "Franco CFP", - "ja": "CFPフラン", - "ko": "CFP 프랑", - "lt": "CFP frankas", - "ms": "Franc CFP", - "nl": "CFP-frank", - "pl": "Frank CFP", - "pt": "Franco CFP", - "ro": "Franc CFP", - "ru": "французский тихоокеанский франк", - "sk": "CFP frank", - "sv": "CFP-franc", - "tr": "CFP frangı", - "uk": "Французький тихоокеанський франк", - "vi": "Franc CFP", - "he": "פרנק צרפתי", - "oc": "Franc CFP", - "sr": "француски тихоокеански франак" - }, - "XPT": { - "de": "Platinpreis", - "en": "platinum as an investment", - "fr": "platine", - "ru": "платина" - }, - "XSU": { - "de": "SUCRE", - "en": "SUCRE", - "es": "SUCRE", - "eu": "SUCRE", - "fi": "Sucre", - "fr": "sucre", - "hu": "SUCRE", - "it": "Sistema unificato di compensazione regionale", - "ja": "域内統一決済システム", - "ko": "수크레", - "pl": "SUCRE", - "pt": "SUCRE", - "ru": "Сукре", - "tr": "SUCRE", - "uk": "Сукре", - "nl": "SUCRE" - }, - "XUA": { - "en": "ADB Unit of Account" - }, - "YER": { - "ar": "ريال يمني", - "bg": "Йеменски риал", - "ca": "rial iemenita", - "cs": "Jemenský rijál", - "de": "Jemen-Rial", - "en": "Yemeni rial", - "eo": "jemena rialo", - "es": "rial yemení", - "fi": "Jemenin rial", - "fr": "rial yéménite", - "gl": "Rial iemení", - "he": "ריאל תימני", - "hr": "Jemenski rijal", - "hu": "jemeni riál", - "id": "Rial Yaman", - "it": "riyal yemenita", - "ja": "イエメン・リアル", - "ko": "예멘 리알", - "lt": "Jemeno rialas", - "ms": "Rial Yaman", - "nl": "Jemenitische rial", - "pa": "ਯਮਨੀ ਰਿਆਲ", - "pl": "Rial jemeński", - "pt": "Rial iemenita", - "ru": "йеменский риал", - "sk": "Jemenský rial", - "sr": "јеменски ријал", - "sv": "Jemenitisk rial", - "tr": "Yemen riyali", - "uk": "Єменський ріал", - "oc": "Rial de Iemèn" - }, - "ZAR": { - "af": "Suid-Afrikaanse Rand", - "ar": "راند جنوب إفريقي", - "bg": "Южноафрикански ранд", - "ca": "rand", - "cs": "Jihoafrický rand", - "da": "Rand", - "de": "südafrikanischer Rand", - "en": "rand", - "eo": "sudafrika rando", - "es": "rand sudafricano", - "eu": "Hegoafrikar rand", - "fi": "Etelä-Afrikan randi", - "fr": "rand", - "gl": "Rand surafricano", - "he": "ראנד דרום אפריקאי", - "hr": "Južnoafrički rand", - "hu": "dél-afrikai rand", - "id": "Rand Afrika Selatan", - "it": "rand sudafricano", - "ja": "ランド", - "ko": "남아프리카 공화국 랜드", - "lt": "Randas", - "ml": "സൗത്ത് ആഫ്രിക്കൻ റാൻഡ്", - "ms": "Rand", - "nl": "Zuid-Afrikaanse rand", - "oc": "Rand sudafrican", - "pl": "Rand", - "pt": "rand", - "ro": "Rand sud-african", - "ru": "южноафриканский рэнд", - "sk": "Rand", - "sr": "јужноафрички ранд", - "sv": "Rand", - "tr": "Güney Afrika randı", - "uk": "Ранд", - "cy": "Rand De Affrica", - "sl": "južnoafriški rand" - }, - "ZMW": { - "ar": "كواشا زامبية", - "ca": "kwacha zambià", - "cs": "Zambijská kwacha", - "da": "Zambianske kwacha", - "de": "sambischer Kwacha", - "en": "Zambian Kwacha", - "eo": "zambia kvaĉo", - "es": "kwacha zambiano", - "et": "Sambia kvatša", - "fi": "Sambian kwacha", - "fr": "kwacha zambien", - "gl": "Kwacha zambiano", - "he": "קוואצ'ה זמבי", - "hr": "Zambijska kvača", - "hu": "zambiai kwacha", - "id": "Kwacha Zambia", - "it": "kwacha zambiano", - "ja": "ザンビア・クワチャ", - "ko": "잠비아 콰차", - "lt": "Zambijos kvača", - "nl": "Zambiaanse kwacha", - "pl": "Kwacha zambijska", - "pt": "kwacha zambiano", - "ru": "замбийская квача", - "sr": "замбијска квача", - "sv": "Zambisk kwacha", - "tr": "Zambiya kwachası", - "uk": "Замбійська квача", - "oc": "Kwacha zambian" - }, - "ZWL": { - "en": "Zimbabwean dollar", - "es": "Dólar RTGS", - "fr": "Real Time Gross Settlement dollar", - "it": "dollaro RTGS", - "ja": "RTGSドル", - "ko": "RTGS 달러", - "pt": "Dólar do Zimbábue (2019–presente)", - "eo": "Zimbabva dolaro" - }, - "CHE": { - "en": "WIR Euro" - }, - "CHW": { - "de": "WIR Franken", - "en": "WIR franc" - }, - "COU": { - "en": "Unidad de Valor Real", - "es": "Unidad de Valor Real", - "fr": "Unidad de Valor Real colombienne" - }, - "USN": { - "en": "US Dollar (Next day)" - }, - "UYI": { - "en": "Uruguay peso en Unidades Indexadas" - }, - "UYW": { - "en": "Unidad Previsional" - }, - "XBA": { - "en": "EURCO" - }, - "XBB": { - "en": "EMU-6 Bond markets Unit European Monetary Unit" - }, - "XBC": { - "en": "Bond markets Unit European Unit of Account 9" - }, - "XBD": { - "en": "Bond Markets Unit European Unit of Account 17" - }, - "XTS": { - "en": "ISO 4217 test code" - }, - "XXX": { - "en": "ISO 4217 test code" - } - } -} \ No newline at end of file diff --git a/searx/data/engine_descriptions.json b/searx/data/engine_descriptions.json deleted file mode 100644 index 1fca03b24..000000000 --- a/searx/data/engine_descriptions.json +++ /dev/null @@ -1,7589 +0,0 @@ -{ - "dv":{ - "wikipedia":"ވިކިޕީޑިޔާ އަކީ ތަފާތު ބަސްބަހުން ތައްޔާރުކުރެވޭ ފަސޭހަ ކަމާއެކު މައުލޫމާތު ފޯރުކޮށްދިނުމަށް ތައްޔާކުރެވެމުންދާ އޮންލައިން ދާނެޝްނާމާއެކެވެ. ނުވަތަ އެންސައިކްލޮޕީޑިޔާއެކެވެ. މި ދާނެޝްނާމާ ހިންގަނީ އެމެރިކާގައި އުފެދިފައިވާ ނޮން-ޕްރޮފިޓް ވިކިމީޑިޔާ ފައުންޑޭޝަން ކިޔާ ޖަމާޢަތަކުންނެވެ. ވިކިޕީޑިޔާ އިފްތިތާޙުކުރެވުނީ 2001 ވަނަ އަހަރު ޖިމީ ވޭލްސް އަދި ލެރީ ސެންގަރ ގުޅިގެންނެވެ. މިއަދު ވިކިޕީޑިޔާ އަކީ އިންޓަނެޓްގައިވާ އެންމެ ބޮޑު، އަދި އެންމެ ހަލުވިކަމާއެކު ކުރިއަރަމުން އަންނަ، އެންމެ މަޝްހޫރު ރިފަރެންސް އެވެ. ވިކިޕީޑިޔާ އަކީ އިންސާނުން ބޭނުންވާނެ ހުރިހާ މަޢުލޫމާތެއް ފަސޭހަކަމާއެކު ފޯރުކޮށްދިނުމަށް މަސައްކަތްކުރަމުންދާ މަޝްރޫއެކެވެ.", - "gentoo":[ - "gentoo:ru", - "ref" - ] - }, - "oc":{ - "artic":"L'Institut d'Art de Chicago qu'ei lo principau musèu d'aquesta ciutat e qu'amassa ua de las principaus colleccion d'art deus Estats Units. Aquesta colleccion qu'ei pro eclectica dab òbras de tot los continent e de totas las tempsadas mes qu'ei particularament rica en pintura impresionistas francesas, en mèstes americans deu sègle XX e mei generalament en mèstes europèus e academics.", - "wikipedia":"Wikipèdia ei ua basa de donades dreçada sus Internet e eth projècte cooperatiu que s'encargue d'aumplir-la en tot crear ua enciclopèdia liura e multilingüa. Des deth començament, ei emparada pera Fondacion Wikimèdia, ua associacion sense anim de lucre qu'amie endeuant d'autri projèctes coma eth wikinòves, eth wikispècies, o eth wikiccionari. Eth sòn objectiu ei amassar tot eth coneishement universau e méter-lo ar avitalh de toti. Malurosament, pas toti pòden accedir ad aguest coneishement, pr'amor qu'ena planeta i a fòrça persones damb pògui recorsi e non a an eth benastre de dispausar d'un ordenador damb accès a Internet. Ath delà, fòrça govèrns an blocat er accès ara Wikipèdia.", - "wikidata":"Wikidata es un sit web que ten per ambicion de conservar totas las informacions dels diferents sites de Wikipèdia.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Google search es un motor de recèrca de la societat americana Google, Inc., es tanben lo mai utilizat sul web. Google recep de miliards de requestas cada jorn. Google foguèt desvolopat per Larry Page e Sergey Brin en 1997.", - "google news":"Pel motor de recèrca, vejatz Google", - "google play apps":"Google Play es una botiga de logicial internacional en linha desvolopada per Google pels dispositius de Android. Foguèt lançada en octobre de 2008. En octobre de 2012, i aviá gaireben 700,000 aplicacions disponiblas per Android, e lo nombre d'aplicacions descargadas èra de 25 mil milions.", - "google play movies":[ - "google play apps:oc", - "ref" - ], - "library of congress":"La Bibliotèca dau Congrès es la biliotèca de recèrca dau Congrès deis Estats Units. De facto, assegura tanben lo ròtle de bibliotèca nacionala deis Estats Units. Fondada en 1800, es devesida en plusors partidas que son situadas dins la capitala e en Virgínia. En 2023, èra la bibliotèca pus importanta dau mond en nombre de referéncias.", - "openstreetmap":"OpenStreetMap (OSM) es un sit web e un projècte de cartografia liure del mond.", - "youtube":"YouTube es un sit de publicacion e de partatge de vidèos. Foguèt creat en febrièr de 2005 per tres ancians emplegats de la firma PayPal. Foguèt aquesit per Google Inc. en octobre de 2006 per 1.650 milions de dolars.", - "wikibooks":"Wikibooks es un projècte de la Wikimedia Foundation de bibliotèca de libres pedagogics en occitan liurament distribusibles. Es sonat tanben Wikilibres en occitan.", - "wikinews":"Wikinews es un projècte de la Wikimedia Foundation visant a establir una font d'informacions liura resumissent d'actualitats e seguissent un punt de vista neutra. Son contengut es liurament distribuible segon los tèrmes de la licéncia Creative Commons Attribution 2.5. Lo nom del projècte a per originas la tecnologia utilizada e lo tèrme anglés « news », que se traduch per « actualitats » o « informacions ». Son foncionament es basat sul jornalisme ciutadan.", - "wiktionary":"Lo wikiccionari es un projècte de la Wikimedia Foundation de diccionari liure, a gratís e escrich amb la collaboracion de totes. La version occitana a començat lo 14 d'abril de 2005. Lo nom anglés es Wiktionary.", - "wikicommons.images":"Per l'ajuda sus l'utilizacion de Wikimedia Commons, veire Wikipèdia:Wikimedia Commons." - }, - "szl":{ - "wikipedia":"Wikipedyjŏ to je miyndzynŏrodowŏ a wielogŏdkowŏ internetowŏ yncyklopedyjŏ, co fōnguje podle prawidła ôdewrzōnyj treści. Fōnguje na softwarze MediaWiki ôd Wikimedia Foundation, wywodzōnce sie ôd kōncepcyje WikiWikiWeb, dozwolajōnce edycyjõ kożdymu używŏczowi wchodzōncymu na zajtã a aktywnõ aktualizacyjõ ônyj treści. Ausdruk Wikipedyjŏ to je neologizm, zrobiōny skuplowaniym ausdrukōw wiki i yncyklopedyjŏ. Szlagwortym ôd Wikipedyje je „Swobodnŏ yncyklopedyjŏ, co jōm kożdy może edytować”.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Sznuparka Google - necowo sznuparka zbajstlowano bez hamerikůńsko firma Google Inc.. Ji cwekym je skatalogowańy wszyjskich mogebnych danych a pokozywańy jich bez hilfa interneca.", - "youtube":"YouTube - hamerikański internecowy wideoportal założůny we lutym 2005 roku. Uod 2006 mo zic we San Bruno we Kaliforńiji i je zależny uod Google LLC. Youtube pozwalo na darmowe wćepywańe, uobźyrańe a komyntowańe filmůw. We roku 2019 portal tyn doł zarobek 15 miljardůw dolarůw, srogo tajla z tego generujům wrażůne sam reklamy." - }, - "pap":{ - "wikipedia":"Wikipedia ta un ensiklopedia multilingual riba internet. E nomber ta un kombinashon di wiki i ensiklopedia. E ta skirbi dor di voluntarionan uzando software pa páginanan di wiki, loke ta hasi posibel pa artíkulonan sea añadi of kambiá dor di kasi tur hende. Na 2022 Wikipedia a klasifiká komo e di sinku wèpsait mas popular na mundu.", - "currency":"DuckDuckGo ta un mashin di buskeda cu ta uza informacion for di crowdsourcing cu e meta pa hisa e resultadonan tradicional y mehora e relevancia. E filosofia di e mashin di buskeda ta enfatisa privacidad y no ta warda informacion di e uzadonan. E compania internet ta funda pa Gabriel Weinberg y ta estableci na Pauli, Pennsylvania, Merca.", - "ddg definitions":[ - "currency:pap", - "ref" - ], - "wikidata":"Wikidata ta un proyekto di Fundashon Wikimedia bou di kual ta hasi disponibel un database komun basá riba teknologia RDF i ku ta wordu uza pa duna sosten na Wikipedia. E proyekto a wordu inisiá na 2012 dor di Wikimedia Alemania. Wikidata ta dirigi riba transferensia di konosimentu igual ku otro proyektonan di Fundashon Wikimedia.", - "duckduckgo":[ - "currency:pap", - "ref" - ], - "duckduckgo images":[ - "currency:pap", - "ref" - ], - "duckduckgo videos":[ - "currency:pap", - "ref" - ], - "duckduckgo news":[ - "currency:pap", - "ref" - ], - "duckduckgo weather":[ - "currency:pap", - "ref" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Google Inc ta un compania publico mulinacional cu ta inverti den mashin di busca, cloud computing y haci propaganda di tecnologia funda door Larry Page y Sergey Brin. Den e compania aki ta traha 19.835 trahado fultempo. E oficina principal asina yama Googleplex ta situa na Mountain View, California. For di 19 di augustus 2004 e compania ta den e beursnan.", - "youtube":"Youtube ta un plataforma merikano riba internet, di estilo video share, riba kua usuarionan por upload, komparti i wak video. E servisio aki a wordu krea pa tres eks-trahado di e kompania Paypal na febrüari 2005.", - "wikicommons.images":"Wikimedia Commons ta un proyekto di Fundashon Wikimedia, kreá dia 7 di sèptèmber 2005 ku e meta di sirbi komo archivo pa imagen i otro tipo di multimedia prosedente di e sobrá proyektonan di e fundashon. Tur file den archivo mester ta den dominio publiko òf poni na disposishon bou di lisensia liber. Aktualmente tin mas di 70 mion file multimedia ku ta wordu warda gratis." - }, - "nl-BE":{ - "9gag":"9GAG is een Hongkongse humoristische website die van start ging in 2008 en gehost wordt in de Verenigde Staten. De website is het meest bekend door het terugkerende gebruik van internetmemes. Men denkt dat 9GAG zijn naam dankt aan de paginaverdeling die de website voorheen gebruikte. Er waren namelijk 9 gags per pagina, tegenwoordig is dit niet meer het geval. De CEO en oprichter van 9gag weigerde tijdens een interview in 2012 echter een verklaring te geven over de oorsprong of betekenis van de naam.", - "apple app store":"De Apple App Store is een app store voor applicaties die ontwikkeld zijn voor het mobiele besturingssysteem iOS van Apple. De dienst staat gebruikers toe om applicaties te downloaden die ontwikkeld zijn met de iOS SDK. De applicaties kunnen direct op een iOS-apparaat worden geïnstalleerd of via een computer met iTunes.", - "artic":"Het Art Institute of Chicago (AIC) is een museum voor beeldende kunsten aan 111 South Michigan Avenue in Grant Park, Chicago (Illinois).", - "arxiv":"arXiv is een verzameling van elektronische vooruitgaven van wetenschappelijke artikelen in de wiskunde, natuurkunde, sterrenkunde, informatica, mathematische biologie, statistiek en mathematische economie, die online geraadpleegd kunnen worden. In bepaalde deelgebieden van de wis- en natuurkunde kunnen bijna alle wetenschappelijke artikelen op arXiv gevonden worden. arXiv is opgericht op 14 augustus 1991 en passeerde de grens van een half miljoen artikelen op 3 oktober 2008. In 2012 werden er meer dan 7000 artikelen per maand op arXiv geplaatst.", - "bandcamp":"Bandcamp is een Amerikaanse onderneming gestart in 2007 door Ethan Diamond en Shawn Grunberger, samen met programmeurs Joe Holt en Neal Tucker. In 2008 heeft het bedrijf een online muziekwinkel geopend en een platform voor artiestpromotie, gericht op onafhankelijke artiesten. In 2013 kwam daar een app bij.", - "wikipedia":"Wikipedia is een meertalige internetencyclopedie, die door vrijwillige auteurs wordt geschreven. Wikipedia wordt gepubliceerd onder een vrije licentie, waardoor de inhoud elders te gebruiken is. De website is eigendom van de Amerikaanse Wikimedia Foundation. Het is het oudste en bekendste project van deze organisatie.", - "bing":"Bing, codenaam Kumo, is een zoekmachine van Microsoft, die op 3 juni 2009 werd gelanceerd. Het is de op een na grootste zoekmachine op het internet na Google. Bing heeft in 2019 een wereldwijd marktaandeel van ongeveer 2,8%, en haalde in februari 2023 gemiddeld 100 miljoen actieve gebruikers per dag. Het programma is vooral populair in de Verenigde Staten en in India. Op 15 november 2011 werd de bètatag ervan verwijderd.", - "bing images":[ - "bing:nl-BE", - "ref" - ], - "bitbucket":[ - "virtual hosting van Atlassian", - "wikidata" - ], - "crossref":"CrossRef is een samenwerking tussen uitgevers om de standaardisatie van digitale objecten online mogelijk te maken.", - "currency":"DuckDuckGo is een zoekmachine die informatie van veelbezochte sites zoals Wikipedia gebruikt om traditionele internet-zoekresultaten te verbeteren. De zoekmachine beoogt een betere privacy voor gebruikers te geven en poogt vooringenomenheid te voorkomen. Er wordt niet gekeken naar het zoekgedrag van de gebruiker. Elke gebruiker krijgt dezelfde zoekresultaten te zien voor dezelfde zoekopdracht.", - "deezer":"Deezer is een web-streaming service voor muziek. De dienst laat gebruikers onbeperkt luisteren naar nummers van muzieklabels zoals Sony Music Entertainment, Universal Music Group, en Warner Music Group. Deezer is beschikbaar in browsers, op Android, BlackBerry, iOS, Windows Phone en Symbian. Naast afspeelmogelijkheden in browsers zijn er met Deezer ook mogelijkheden tot afspelen via streaming speakers zoals onder andere die van HEOS by Denon. Ook is er een Windows 8 en een Windows 10 desktop app. Deezer kan ook als app worden geïnstalleerd op een telefoon of tablet. Men kan zelf afspeellijsten samenstellen. Via de pc kan men mp3's toevoegen voor de eigen afspeellijsten, via de telefoon of tablet is deze functie niet beschikbaar. Sinds 2020 is Deezer een geheel betaalde dienst. Voorheen kon men de dienst gebruiken, zonder reclame (betaald), of met reclame, mits men de reclame toeliet. Aangezien veel gebruikers dit omzeilden, kon men medio 2020 ineens nog maar 30 seconden van een muzieknummer luisteren en moest men een betaald abonnement afnemen, om alles weer te kunnen luisteren. De prijs is in 2023 10,95 euro per maand en kan men onbeperkt muziek luisteren en afspeellijsten maken.", - "deviantart":"DeviantArt is een Engelstalige internet-community waar gebruikers zelfgemaakte kunstwerken tentoonstellen. De website ging van start op 7 augustus 2000 op initiatief van Scott Jarkoff, Matthew Stephens en Angelo Sotira. Het bedrijf DeviantArt, Inc. is in Hollywood gevestigd.", - "ddg definitions":[ - "currency:nl-BE", - "ref" - ], - "wikidata":"Wikidata is een project van de Wikimedia Foundation dat een centrale gegevensopslag biedt voor de verschillende Wikipedia taalversies. Het project werd in 2012 door Wikimedia Duitsland gestart. Wikidata is net zoals de andere projecten van de Wikimedia Foundation gericht op kennisoverdracht.", - "duckduckgo":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo images":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo videos":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo news":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo weather":[ - "currency:nl-BE", - "ref" - ], - "apple maps":"Apple Kaarten is een online kaartendienst van het Amerikaanse bedrijf Apple. Het is de standaardkaartendienst van de besturingssystemen iOS, macOS en watchOS en beschikt onder andere over stapsgewijze navigatie, navigatie met het openbaar vervoer en verkeersinformatie. Ook zijn op een aantal locaties — vooral grote steden — zogenaamde \"Flyovers\" beschikbaar, waarbij die locatie vanuit verschillende perspectieven fotorealistisch wordt getoond.", - "emojipedia":"Emojipedia is een online naslagwerk voor emoji dat de betekenis en het gemeenschappelijk gebruik van emoji-tekens in de Unicode-Standaard documenteert. De site werd in 2013 opgestart door de Australiër Jeremy Burge.", - "tineye":"TinEye is een zoekmachine voor afbeeldingen. TinEye is eigendom van het Canadese bedrijf Idée, Inc.. Met de webapplicatie TinEye kunnen gebruikers naar afbeeldingen zoeken. Afbeeldingen kunnen geüpload worden op de website van TinEye of door een URL in te voeren naar een bestaande afbeelding.", - "etymonline":[ - "Online Engels etymologisch woordenboek", - "wikidata" - ], - "fdroid":"F-Droid is een appstore en repo voor Android, die een vergelijkbare functie heeft als de Google Play Store. De hoofdrepository, gehost door het project, bevat alleen openbron-software. Applicaties kunnen worden bekeken, gedownload en geïnstalleerd vanaf de F-Droid-website of de client-app zonder dat u zich voor een account hoeft te registreren. 'Anti-functies' zoals reclame, het volgen van gebruikers of de afhankelijkheid van niet-vrije software worden gemarkeerd in app-beschrijvingen.", - "flickr":"Flickr is een website voor het delen van foto's en videofragmenten met een internetgemeenschap. Net als Delicious wordt het gezien als een Web 2.0-applicatie die tagging (trefwoorden) gebruikt om een niet-hiërarchische classificering mogelijk te maken (folksonomie).", - "free software directory":"De Free Software Directory is een website opgericht door de Free Software Foundation (FSF) en de UNESCO. Het biedt een overzicht van vrije software, met name software voor vrije besturingssystemen, zoals Linux en BSD. Voordat besloten wordt tot de opname van een programma in de Free Software Directory, wordt nagegaan of de aangeduide licentie wel degelijk de juiste licentie is.", - "genius":"Genius is een online kennisbank. De website biedt gebruikers de mogelijkheid om liedteksten, nieuwsberichten, belangrijke documenten, poëzie, en andere vormen van tekst van toelichtingen te voorzien.", - "gitlab":"GitLab is een online DevOps-tool. Het wordt door diverse grote technologiebedrijven gebruikt, waaronder NASA, Alibaba, CERN, GNOME en SpaceX. De software is geschreven door Dmitriy Zaporozhets en Valery Sizov, oorspronkelijk in Ruby. Het bevat onder andere een git-repository, wiki, ticketvolgsysteem en softwareontwikkelstraat.", - "github":"GitHub is een online platform voor softwareontwikkeling en versiebeheer. GitHub is gebouwd rond het versiebeheersysteem Git, en biedt daardoor alle mogelijkheden van Git voor het beheren van versies en broncode. Het beschikt onder ander over toegangscontrole en verschillende samenwerkingsfuncties, zoals een issue tracker, een forum voor het aanvragen van functies, takenlijsten en wiki's voor ieder project. Het hoofdkantoor is gevestigd in Californië en is sinds 2018 een dochteronderneming van Microsoft.", - "google":"Google Zoeken, ook wel Google Search of gewoon Google genoemd, is een zoekmachine van Google LLC voor documenten op het wereldwijde web, opgericht in 1997 door twee promovendi aan de Stanford-universiteit, Larry Page en Sergey Brin. Page en Brin hadden twee jaar gewerkt aan een geavanceerde methode voor het vinden van informatie op het internet. Al snel verdrong Google AltaVista en werd het 's werelds populairste zoekmachine.", - "google images":"Google Images is een dienst van Google waarmee afbeeldingen gezocht kunnen worden op het internet. De dienst bestaat sinds december 2001, na een grote vraag naar een groene Versacejurk van Jennifer Lopez.", - "google news":"Google News is een dienst van Google Inc. om nieuwsbronnen te doorzoeken. De dienst neemt de titels, eerste alinea's en mogelijk een afbeelding van de artikelen van kranten, politieke partijen en organisaties over. De Amerikaanse versie biedt inmiddels ook zelf volledige nieuwsberichten. De verhalen komen van de persbureaus AP, AFP, The Press Association en The Canadian Press.", - "google videos":"Google Videos, voorheen Google Video, is een webgebaseerde zoekmachine voor video- en filmbestanden. De dienst werd in juni 2005 gelanceerd door Google Inc. Met deze zoekmachine werd het mogelijk gemaakt om film- en videobeelden in een webbrowser te zoeken en te bekijken. Het werd ook mogelijk kosteloos eigen videobeelden op Google Videos te publiceren door middel van de Google Video Uploader, of vanuit de browser. Voor het afspelen van video's in de browser was het geïnstalleerd hebben van Adobe Flash noodzakelijk.", - "google scholar":"Google Scholar is een gratis toegankelijke internet-zoekmachine die de volledige tekst of metadata van wetenschappelijke literatuur indexeert in een scala aan publicatie-indelingen en disciplines. De Google Scholar-index, die in november 2004 als bètaversie werd uitgebracht, bevat de meeste door vakgenoten beoordeelde online academische boeken en tijdschriften, conferentiedocumenten, scripties en proefschriften, preprints, samenvattingen, technische rapporten en andere wetenschappelijke literatuur, waaronder rechterlijke adviezen en patenten. Hoewel Google niet de omvang van de Google Scholar-database publiceert, schatten scientometrische onderzoekers dat deze ongeveer 389 miljoen documenten bevat, inclusief artikelen, citaten en patenten, waardoor het in januari 2018 's werelds grootste academische zoekmachine is. Eerder werd de omvang geschat op 160 miljoen documenten vanaf mei 2014. Een eerdere statistische schatting gepubliceerd in PLOS ONE met behulp van een Mark and recapture-methode schatte ongeveer 80-90% dekking van alle in het Engels gepubliceerde artikelen met een schatting van 100 miljoen. Deze schatting bepaalde ook hoeveel documenten vrij beschikbaar waren op het internet.", - "google play apps":"Google Play, voorheen Android Market, is de applicatie en website waarmee apps kunnen worden geïnstalleerd op mobiele telefoons die draaien op Android. Het is de Android-tegenhanger van App Store van Apple. Google Play wordt beheerd door Google. Om apps te kunnen downloaden en/of installeren is een Google-account noodzakelijk. Tijdens het aanmaken van een Google-account moet een e-mailadres opgegeven worden.", - "google play movies":[ - "google play apps:nl-BE", - "ref" - ], - "hoogle":"Haskell is een functionele programmeertaal vernoemd naar de wiskundige Haskell Brooks Curry.", - "imdb":"De Internet Movie Database (IMDb) is een online databank met films, televisieseries, acteurs en videogames. IMDb werd in 1990 opgericht door Col Needham en is sinds 1998 in handen van Amazon.com.", - "kickass":"KickassTorrents is een website die BitTorrent-bestanden en magneetlinks indexeert. Volgens Alexa behoorde de website in november 2014 tot de meest bezochte websites ter wereld.", - "library genesis":"Library Genesis of LibGen is een schaduwbibliotheek voor artikels en boeken over verschillende onderwerpen. Library Genesis maakt de gratis toegang mogelijk tot inhoud waar anders voor betaald moet worden of nog niet is gedigitaliseerd. Het bevat onder meer PDF's met inhoud van de ScienceDirect-webportal van Elsevier.", - "library of congress":"De Library of Congress in Washington is de nationale bibliotheek van de Verenigde Staten en een van de belangrijkste bibliotheken ter wereld. Formeel is de Library of Congress een agentschap van het Amerikaans Congres.", - "mastodon users":"Mastodon is sinds 2016 opensourcesoftware om zelf een online sociaal netwerk te hosten. Het maakt gebruik van de ActivityPub-standaard, waardoor het naadloos met andere gelijksoortige sites kan communiceren. Het gehele netwerk van deze sites vormt samen een decentraal sociaal netwerk, dat ook wel de Fediverse genoemd wordt.", - "mastodon hashtags":[ - "mastodon users:nl-BE", - "ref" - ], - "metacpan":"De Comprehensive Perl Archive Network (CPAN) is een verzameling Perl-software, in de vorm van modules en documentatie die niet in de standaard Perl-distributie is opgenomen.", - "mixcloud":"Mixcloud is een online audioplatform voor het streamen van muziek. Met behulp van Mixcloud kunnen radioprogramma's, mixen van dj's en podcasts gedistribueerd en beluisterd worden.", - "npm":"npm is een pakketbeheerder voor de programmeertaal JavaScript.", - "openairedatasets":[ - "een netwerk van Open Access repositories, archieven en tijdschriften die Open Access beleid ondersteunen", - "wikidata" - ], - "openairepublications":[ - "openairedatasets:nl-BE", - "ref" - ], - "openstreetmap":"OpenStreetMap (OSM) is een project dat als doel heeft om vrij beschikbare en bewerkbare geografische gegevens te verzamelen, zodat daaruit landkaarten en andere diensten kunnen gemaakt worden. Eenieder die zich inschrijft, kan eraan meewerken. Het invoeren en aanpassen van de geografische data steunt volledig op vrijwilligers. Het is mede opgericht uit onvrede met de hoge kosten die commerciële kaartbedrijven vragen voor hun producten. Al meer dan 20 miljoen kilometer wegen, fiets- en voetpaden zijn in kaart gebracht door middel van het overnemen van gegevens van luchtfoto's en het zelf op pad gaan met een GPS-apparaat. In mei 2023 waren elke dag gemiddeld zo'n 6000 vrijwilligers actief aan het bijdragen.", - "pinterest":"Pinterest is een sociaalnetwerksite.", - "piratebay":"The Pirate Bay is een website die torrentlinks indexeert. Volgens Alexa stond de website in maart 2013 op plaats 73 van de meest bezochte websites ter wereld. In december 2014 ging de Pirate Bay een paar maanden offline nadat de Zweedse politie tijdens een inval een groot aantal servers van de website in beslag nam.", - "reddit":"Reddit is een Amerikaanse sociale nieuwswebsite. Advance Magazine Publishers Inc. heeft hierin een meerderheidsbelang.", - "soundcloud":"SoundCloud is een online audioplatform dat geluidsproducenten de mogelijkheid geeft hun origineel gecreëerde geluiden te uploaden, op te nemen, promoten en delen.", - "stackoverflow":"Stack Exchange is een netwerk van websites waar mensen vragen kunnen stellen en beantwoorden over verschillende onderwerpen. Stack Exchange is onderverdeeld in verschillende websites, die elk een aparte categorie behandelen. Deze categorieën zijn voornamelijk gericht op de ict en het programmeren.", - "askubuntu":[ - "stackoverflow:nl-BE", - "ref" - ], - "superuser":[ - "stackoverflow:nl-BE", - "ref" - ], - "startpage":"Startpage is een zoekmachine gevestigd in Nederland en eigendom van de Nederlandse vennootschap Startpage B.V. in Den Haag De zoekmachine heeft de privacy van de gebruiker hoog in haar vaandel staan.", - "tagesschau":"Tagesschau is het journaal van de ARD-omroepen dat wordt uitgezonden op Das Erste. De eerste uitzending was op 26 december 1952 te zien bij de NWDR.", - "youtube":"YouTube is een website van YouTube LLC, een dochteronderneming van Google LLC. Het is een website waar gebruikers kosteloos video's kunnen publiceren en voorzien van advertenties kunnen bekijken. YouTube is na Google.com de meest bezochte website ter wereld. Per dag worden er ongeveer 300.000 nieuwe video's geplaatst (2016).", - "dailymotion":"Dailymotion is een website waarop kosteloos video's geplaatst en bekeken kunnen worden. Het motto van de website is Share Your Videos.", - "vimeo":"Vimeo is een videowebsite waar gebruikers video's kunnen uploaden, delen en bekijken. Voor het uploaden moet men houder zijn van de rechten van het beeldmateriaal en alle andere inhoud.", - "wikibooks":"Wikibooks is een kennisproject van de Wikimedia Foundation en is bedoeld als een verzameling vrije (gratis) studieboeken.", - "wikinews":"Wikinieuws, in het Engels en veel andere talen Wikinews genoemd, is een nieuwsbron van vrije informatie, in de vorm van een wiki waarin iedereen nieuwsartikelen kan publiceren over een breed scala van onderwerpen. Het is een project van de Wikimedia Foundation en werd formeel gestart in november 2004.", - "wikiquote":"Wikiquote is een van de deelprojecten van de Wikimedia Foundation. Het doel van Wikiquote is het verzamelen van citaten van en over bekende personen. Daarnaast zijn er aparte pagina's voor citaten over een bepaald thema, zoals films, series, fictieve personages, boeken en meer algemene zaken zoals het weer. Ook is er ruimte voor het verzamelen van spreekwoorden in een bepaalde taal.", - "wikisource":"Wikisource is een project van de Wikimedia Foundation dat zich richt op het verzamelen van bronmateriaal. Het project heeft hiermee als doel om een vrij wikiwikicompendium van primaire bronnen in elke taal te worden en om vertalingen van deze bronteksten te creëren. Alle teksten die op Wikisource worden gepubliceerd, dienen onder een vrije licentie te staan of bij het publiek domein te horen.", - "wikispecies":"Wikispecies is een project van Wikimedia, dat op 13 september 2004 van start is gegaan. De bedoeling is om een taxonomisch overzicht te bieden van zo veel mogelijk levende wezens. De definitie is dan ook \"de vrije soortenlijst die iedereen kan bewerken\". Er staan geen lopende teksten over soorten in: Wikispecies is geen encyclopedie, maar biedt een classificatie met literatuurverwijzingen. Als Wikispecies in die zin origineel onderzoek publiceert, wijkt het af van Wikipedia waar dat niet is toegestaan. Over en weer verwijzen Wikispecies en Wikipedia naar elkaar. Bij de oprichting in 2004 is bepaald dat Wikispecies geen afsplitsing van Wikipedia mag zijn. Het motto is: \"Wikispecies is free. Because life is public domain!\" Het plan is om Wikispecies na voltooiing op te nemen in Wikidata. Nieuwe afbeeldingen moeten worden opgeladen naar Wikimedia Commons, van waaruit ze zo nodig en spaarzaam aan een Wikispecies-artikel kunnen worden toegevoegd. Als voorbeeldartikel noemt Wikispecies Panthera tigris: een classificatie met bronnen en een afbeelding. Anders dan op Wikipedia mogen de medewerkers aan Wikispecies op hun gebruikerspagina's hun wetenschappelijk curriculum vitae of publicatielijst geven.", - "wiktionary":"Wiktionary is een project van de Wikimedia Foundation om een gratis meertalig woordenboek van alle woorden in alle talen te maken.", - "wikiversity":"Wikiversity is een project van de Wikimedia Foundation. Het project biedt gratis leermateriaal aan.", - "wikivoyage":"Wikivoyage is een project van de Wikimedia Foundation in de vorm van een vrije reisgids op internet. Het project omvat bestemmingen, reisgerelateerde onderwerpen en taalgidsen geschreven door onbetaalde vrijwilligers.", - "wikicommons.images":"Wikimedia Commons is een meertalige interactieve website van de Wikimedia Foundation, gekoppeld aan een database die is ingericht als centrale opslag van afbeeldingen, geluids-, video- en andere bestanden. De bestanden kunnen worden gebruikt in alle Wikimediaprojecten, waaronder Wikipedia, Wiktionary, en Wikinews in alle taal-edities. Iedereen kan ook zonder kosten bestanden voor eigen gebruik uit de database downloaden. Het project is sinds 7 september 2004 actief en huisvest inmiddels meer dan 94 miljoen bestanden. Commons is een Engelse term voor zaken die gemeenschappelijk of publiek goed zijn en betekent onder meer meent in het Nederlands.", - "wolframalpha":"Wolfram|Alpha is een antwoordmachine op het web, die niet zoekt naar pagina's zoals een zoekmachine doet, maar naar antwoorden op vragen, dat doet hij door te zoeken in een database van informatie. Om de antwoorden te berekenen maakt het gebruik van de software Mathematica. In maart 2009 is de antwoordmachine aangekondigd door de Britse natuurkundige Stephen Wolfram. De website is voor het publiek geopend op 15 mei 2009 en is officieel geopend op 18 mei 2009.", - "seznam":[ - "bedrijf uit Tsjechië", - "wikidata" - ], - "rumble":"Rumble is een Canadees bedrijf en videoplatform dat werd opgericht door Chris Pavlovski in 2013. Daarnaast biedt het bedrijf ook webhosting en clouddiensten aan. Het internationale hoofdkantoor is gelegen in Toronto, Ontario, en het Amerikaanse hoofdkantoor in Longboat Key, Florida.", - "brave":"Brave is een opensource-webbrowser van Brave Software Inc. Brave is beschikbaar voor Microsoft Windows, macOS, iOS, Linux en Android. De op Chromium gebaseerde browser blokkeert automatisch trackers en advertenties, waarmee er een grote focus op privacy ligt.", - "brave.images":[ - "brave:nl-BE", - "ref" - ], - "brave.videos":[ - "brave:nl-BE", - "ref" - ], - "brave.news":[ - "brave:nl-BE", - "ref" - ] - }, - "zh-HK":{ - "apple app store":"App Store是蘋果公司為其iPhone、iPod Touch以及iPad等產品建立和維護的数字化移动應用程序發行平台,允許使用者從iTunes Store瀏覽和下載一些由iOS SDK或者Mac SDK開發的應用程序。根據應用程序發行的不同情況,使用者可以付費或者免費下載。應用程序可以直接下載到iOS裝置,至iTunes版本12.7以前也可以透過macOS或者Windows平台下的iTunes下載到電腦中再同步至iOS裝置。其中包含遊戲、日程管理、詞典、圖庫及許多實用的軟件。透過蘋果公司全球軟件開發者年會2012发布的iOS 6第一次改变了商店的用户界面及购物体验,更新程序不需要密码,购买程序无须回到主畫面,新下载的應用程式皆附有“New”标签。2017年发布iOS11时苹果第二次改变了商店的用户界面。", - "artic":"芝加哥藝術博物館(英語:),是一座位於美國伊利諾州芝加哥的美術館,於1879年成立,是世界上最古老、規模最大的藝術博物館之一。該博物館因其策展與展示大量藝術家的作品而受到歡迎,每年共有約150萬人參觀。該博物館的收藏由11個策展部門管理,並保存了喬治·秀拉的《大碗岛的星期天下午》、巴勃羅·畢卡索的《老吉他手》 、愛德華·霍普的《夜遊者》和格兰特·伍德的《美国哥特式》等名作,博物館永久收藏近300,000件藝術品,每年舉辦30多個特展。", - "arxiv":"arXiv 是一個收集物理學、數學、計算機科學、生物學與數理經濟學的論文預印本的網站,成立于1991年8月14日。截至2008年10月,arXiv.org已收集超過50萬篇預印本;至2014年底,藏量達到1百萬篇。截至2016年10月,每月提交量超過10,000篇。", - "bandcamp":"Bandcamp是一家美国線上音乐公司, 由前Oddpost联合创始人Ethan Diamond与程序员Shawn Grunberger、Joe Holt和Neal Tucker于2008年创立,总部位于加利福尼亚。", - "wikipedia":"維基百科 是维基媒体基金会运营的一个多语言的線上百科全書,并以创建和维护作为开放式协同合作项目,特点是自由內容、自由编辑、自由版权。目前是全球網絡上最大且最受大眾歡迎的参考工具书,名列全球二十大最受歡迎的網站,其在搜尋引擎中排名亦較為靠前。維基百科目前由非營利組織維基媒體基金會負責營運。Wikipedia是混成詞,分别取自於網站核心技術「Wiki」以及英文中百科全書之意的「encyclopedia」。截至2023年7月,所有語言的维基百科有超过6100万篇條目,每月超过1500万次编辑(平均每秒约5.8次编辑),每月有超過20億個獨立設備訪問各個語言的維基百科網站。", - "bing":"是一款由微软公司推出的網路搜尋引擎。该服务起源于微软以前的搜索引擎:MSN Search,Windows Live Search和后来的Live Search。Bing提供各种搜索服务,包括Web、视频、图像、学术、词典、新闻、地图、旅游等搜索产品,以及翻译和人工智能产品Bing Chat。", - "bing images":[ - "bing:zh-HK", - "ref" - ], - "crossref":"Crossref (曾用名CrossRef)是國際DOI基金會 旗下的一個DOI注册机构,它的成員來自2,000個不同的出版商。Crossref由Publishers International Linking Association Inc.負責运营。該機構于2000年初成立。", - "deezer":"Deezer是一家法国在线音乐流媒体服务提供商。它允许用户在各种设备上在线或离线收听来自包括环球音乐集团、索尼音乐和华纳音乐集团在內的各家唱片公司的音乐。2007年,Deezer创建于法国巴黎,截至2019年1月,Deezer拥有5600万首授权曲目,拥有超过3万个电台频道,月活跃用户達1400万,付费用户為700万。该服务适用于Web、Android、IOS、Windows Mobile、BlackBerry OS、Microsoft Windows和MacOS。", - "etymonline":"在线词源词典(英語:)是一部免费的在线词典,由道格拉斯·哈珀 编写,描述了英语单词的词源。", - "fdroid":"是一个Android应用程序的软件资源库(或应用商店);其功能类似于Google Play商店,但只包含自由及开放源代码软件。应用可从F-Droid网站或直接从F-Droid客户端应用浏览及安装,F-Droid客户端应用会自动更新其应用。F-Droid不要求用户注册账号。如果应用包含广告、用户分析器,追踪器或倚赖非自由软件,会被标记存在「负功能」(antifeatures)。运行F-Droid的服务器也均使用自由及开放源代码软件,从而允许任何人创建自己的软件库。", - "flickr":"Flickr為一家提供圖片分享的網路相簿,是Web 2.0的最佳利用例子之一。", - "free software directory":"自由软件目录是一个自由软件基金会(FSF)和联合国教育、科学及文化组织( UNESCO )的项目。自由软件目录包含自由操作系统下运行的有用自由软件。", - "genius":"Genius 是一家北美数字媒体公司,於2009年8月由湯姆·雷曼、伊兰·泽科里和马胡德·莫哈代姆建立。該網站允許使用者對歌曲歌词、新闻故事、诗歌和文件等提供注釋和解释。", - "github":"GitHub是一个在线软件源代码托管服务平台,使用Git作为版本控制软件,由开发者Chris Wanstrath、P. J. Hyett和汤姆·普雷斯顿·沃纳使用Ruby on Rails编写而成。在2018年,GitHub被微软公司收购。", - "google images":"Google图片搜索是Google公司於2001年7月推出的图片搜索服務。Google Chrome及Firefox提供擴充功能搜索網絡圖像。", - "google news":"Google新闻(英語:)是Google开发的一款Web新闻聚合器,由Google首席工程師克里希纳·巴拉特 創造與領導開發。", - "google videos":"Google影片 是由Google提供的一项視訊共享和搜索服务。与YouTube类似,「Google影片」向用户提供必要的HTML代码,允许用户将选定的視訊嵌入到其它的网站的页面中。这种方法可以使用户在网站中嵌入大量的視訊而无需考虑頻寬和儲存容量限制的问题。在2006年10月9日,Google收购了前競争对手YouTube,并在2007年6月13日发表声明,「Google影片」的搜索结果将包含由网络蜘蛛在其它托管服务、YouTube和用户上传中抓取的内容。", - "google play apps":"又稱Play 商店,前身为Android Market。是由Google为Android作業系統所開發的流動應用程式數位發行平台,同时也是数字娱乐品牌。它作為Android作業系統的官方應用商店,允許用戶瀏覽和下載使用Android SDK開發並透過Google發布的應用程式。 Google Play也是數位媒體商店,提供音樂,雜誌,書籍,電影和電視節目。它之前提供了Google硬件裝置,直到2015年3月11日推出一個單獨的線上硬件零售商Google Store。", - "google play movies":[ - "google play apps:zh-HK", - "ref" - ], - "hackernews":"Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由保罗·格雷厄姆的创业孵化器 Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 未登入訪客没有贊成或反对一条提交新闻的选项,不过还是可以被有足够 Karma 的用户投贊成或反对票。简而言之,Hacker News 允许提交任何可以被理解为“任何满足人们求知欲”的新闻。", - "hoogle":"Haskell 是一种标准化的,通用的纯函數式編程語言,有惰性求值和强静态类型。它的命名源自美国逻辑学家哈斯凱爾·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是頭等物件”。作为一门函數程式語言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母「λ」(Lambda)作为自己的标志。Haskell具有“证明即程序、命题为类型”的特征。", - "imdb":"網路電影資料庫 是一个关于电影演员、电影、电视节目、电视藝人、电子游戏和電影製作小組的在线数据库。IMDb開辦於1990年10月17日,從1998年開始成為亚马逊公司旗下的网站,在2020年10月17日時,IMDb慶祝了他們30週年的紀念。", - "ina":"国家视听研究院 是法国的一个公立工商业机构,总部位于马恩河畔布里,负责存档视听作品,并为所有观众、专业人士、公司或个人制作、编辑、出版、营销和分发视听内容和多媒体。", - "library genesis":"創世紀圖書館 是一個影子圖書館,用戶可在此一網站上分享下載学术期刊文章、学术書籍、一般書籍、雜誌、漫畫。此一網站為用戶提供擋在付費牆背後,亦或官方沒釋出電子版本的資料。創世紀圖書館形容自身為「資訊整合連結」網站,為「互聯網上所收集及用戶上載的」資源提供可供查找的資料庫。", - "z-library":"Z-Library 是一個影子圖書館和开放获取檔案分享計劃,用戶可在此一網站上下載期刊文章以及各種類型的書籍。根據Z-Library的說法,截至2022年6月12日,其共收錄了10,456,034本書和84,837,646篇文章。Z-Library在其電子書搜尋頁面上宣稱自己是「全球最大的數字圖書館」,並在文章搜尋頁面上稱自身是「全球最大的科學文章儲存庫」。它原是创世纪图书馆的镜像网站,並從該图书馆獲得大部分館藏。但它的一些館藏由用戶自行上載,並且不為创世纪图书馆所收藏。該平台公開網域已於2022年11月3日遭到美國政府封鎖。2023年2月11日,用戶可以再次訪問Z-Library。", - "metacpan":"CPAN 中譯為“Perl綜合典藏網”,“Perl综合档案网”或者“Perl程序库”。它包含了極多用Perl寫成的軟體和其文件。", - "npm":"npm 是Node.js預設的、用JavaScript編寫的軟體套件管理系統。", - "openstreetmap":"開放街圖 是一個建構自由內容之網上地圖協作計劃,目標是創造一個內容自由且能讓所有人編輯的世界地圖,並且讓一般的行動裝置有方便的導航方案。", - "piratebay":"海盜灣 是一個專門儲存、分類及搜尋Bittorrent种子文件及磁力連結的網站,由瑞典的民間反版權組織海盜署於2003年成立,支持35种语言。", - "pubmed":"MEDLINE、Medical Literature Analysis and Retrieval System Online、MEDLARS Online,是生命科學和生物醫學信息的書目數據庫。涵蓋醫學、護理、藥學、牙科、獸醫學、衛生保健。還涵蓋生物學和生物化學以及分子進化等領域的大部分文獻。", - "pypi":"PyPI 是Python的正式第三方 軟體套件的軟件存儲庫,它类似于CPAN(Perl的存储库)。一些软件包管理器例如pip,就是默认從PyPI下載软件包。用戶通过PyPI可以下載超过235,000个Python软件包。", - "reddit":"() 是一个娱乐、社交及新聞网站,注册用户可以将文字或連結在網站上發布,使它基本上成為了一個電子佈告欄系統。注册用户可以对这些帖子进行投票,结果将被用来进行排名和决定它在首页或子页的位置。網站上的內容分類被稱為「subreddit」。subreddit的內容包括新聞、電子遊戲、電影、音樂、書籍、健身、食物和圖片分享等。", - "stackoverflow":"Stack Exchange是一系列问答网站,每一个网站包含不同领域的问题。这些网站参考Stack Overflow,一个关于程序设计的问答网站,也是Stack Exchange的第一个成员。如同Stack Overflow,这些网站使用声望奖励系统,用户对问题和答案进行投票,并影响用户声望。声望系统使这些网站可以自我控制。", - "askubuntu":[ - "stackoverflow:zh-HK", - "ref" - ], - "superuser":[ - "stackoverflow:zh-HK", - "ref" - ], - "semantic scholar":"语义学者 是具有人工智能功能的学术出版网络搜索引擎,由艾伦AI研究所开发,并于2015年11月发布。它能利用自然语言处理技術为学术论文提供摘要。与Google学术搜索和PubMed相比,语义学者提供的結果盡量凸顯出论文中最重要和最有影响力的元素。", - "startpage":"Startpage為一荷蘭公司Startpage B.V.所推出的搜尋引擎服務,其前身為元搜尋引擎Ixquick,Startpage當時Ixquick旗下之服務,兩者於2016年改為合併並改為現名。Startpage以強調對使用者隱私的保護聞名。", - "unsplash":"Unsplash是一个免费的照片共享网站。攝影師可以将照片上传到Unsplash,照片编辑者们会对用户上传的照片进行整理。Unsplash使用了较为自由的著作權许可条款,这让Unsplash成为了互联网上最大的摄影照片供应商之一,其网站上的照片经常在文章配图中出现。截止至2020年4月,该网站拥有超过18万名摄影师,图库中储存了超过160万张照片。Unsplash被《福布斯》、《企业家杂志》、CNET和The Next Web评为全球领先的摄影网站之一。", - "dailymotion":"Dailymotion 是一家視訊分享網站,總部位於法國巴黎十七區。它的域名在YouTube之後一個月注冊。Dailymotion最广为人知的特点之一就是其提供支援开放格式ogg的視訊。和同類型的其他Flash視訊分享網站相比,Dailymotion以其短片具有高清晰畫質而聞名。到2008年1月,每天上傳到該站的短片大約是16,000,網頁瀏覽次數平均一天超過2600萬次。2008年1月,Dailymotion的Alexa全球網站排名為38。母公司為威望迪。", - "wikibooks":"維基教科書(英語:)是維基媒體的一項計劃,於2003年7月10日開放。 此計劃收集自由的教科書,並讓用戶自己編輯教科書——任何人都可以進入“編輯”頁面修改任何一本教科書。", - "wikinews":"維基新聞 是由一群志願者、即民間記者運營的網絡媒體。同時是一個自由內容的維基,屬維基媒體計劃項目,由維基媒體基金會負責運營。維基新聞通過協作新聞學的工作模式去運行,同時亦努力通過中性的觀點報導新聞,包括原創一手獨家報道和採訪。", - "wiktionary":"维基词典(英語:),粵文版作維基字典,是维基百科的姊妹工程,旨在创建基于所有语言的自由词典。该项目于2002年12月12日启动,发起人是维基人Daniel Alston。", - "wikivoyage":"维基导游(英語:)是基于Wiki系统,由志愿者撰写的免费互联网旅游指南。项目于2006年9月由德国的同名组织Wikivoyage e.V.发起,于2006年12月10日上线,2012年8月加入维基媒体基金会。项目内容使用知识共享署名-相同方式共享协议授权,因此可供其他用户自由地用作商业用途。同时访客可以免费访问任何内容,并可以自由下载离线版本。对此类计划有害的商业性影响,例如来自旅游业的影响,被排斥于计划之外。", - "wikicommons.images":"維基共享資源 是存放自由開放的圖片、聲音及其他多媒體檔案的地方,是维基媒体基金會的計劃。上載維基共享資源的檔案可在其他維基計劃中使用,包括維基百科、維基教科書、維基新聞等。截至2023年4月,維基共享資源擁有超過9200万個免費使用的多媒體檔案,由註冊志願者管理和編輯。", - "wolframalpha":",是由 Wolfram Research 公司推出的一款在线自动问答系统。其特色是可以直接向用户返回答案,而不是像传统搜索引擎一样提供一系列可能含有用户所需答案的相关网页。", - "naver":"NAVER(韓語:)是Naver公司旗下韩国著名入口/搜索引擎网站,其Logo为一顶草帽,于1999年6月正式投入使用。它使用獨有的搜尋引擎,並且在韓文搜尋服務中獨佔鰲頭。除了搜尋之外也提供入口網站的許多服務,例如新聞、電子信箱、電子地圖服務(含街景地圖)等。在Alexa排名上是韓國國內第一大的入口網站。 据ComScore统计,Naver在2007年8月收到二十亿次搜索,占70%以上的韩国搜索查询,它是世界上排名第十五的网民最常用的搜索引擎,超过25万韩国人选择Naver作为浏览器起始页。", - "rubygems":"RubyGems是Ruby的一个包管理器,提供了分发Ruby程序和函式庫的标准格式“gem”,旨在方便地管理gem安装的工具,以及用于分发gem的服务器。这类似于Python的pip。RubyGems大约创建于2003年11月,从Ruby 1.9版起成为Ruby标准库的一部分。", - "rumble":"Rumble是加拿大的,讓使用者投稿、觀看、分享及評論,由科技企業家克里斯·帕夫洛夫斯基 於2013年創立。自2020年7月以來,Rumble的月度用戶數經歷了快速增長,從160萬月度用戶增加到2021年第一季度末的3190萬。", - "goo":"Goo是一个日本的网络搜索引擎(技術由Google搜索提供)和门户网站,該網站會抓取和索引其他日语网站並呈現給用戶。Goo由日本NTT Communications的子公司NTT Resonant运营。" - }, - "af":{ - "arxiv":"arXiv is ’n versameling elektroniese vooruitgawes van wetenskaplike artikels in die wiskunde, fisika, sterrekunde, informatika, matematiese biologie, statistiek en matematiese ekonomie wat aanlyn geraadpleeg kan word. In bepaalde gebiede van die wiskunde en fisika kan byna alle wetenskaplike artikels op arXiv gevind word. arXiv is op 14 Augustus 1991 begin en het op 3 Oktober 2008 reeds die grens van ’n halfmiljoen artikels verbygesteek.", - "wikipedia":"Wikipedia is 'n veeltalige \"kopielinkse\" ensiklopedie ontwerp om deur enigiemand gelees, verbeter en uitgebrei te word. Dit berus op samewerkende verandering en onderhoud deur duisende gebruikers deur middel van wiki-sagteware, en word verskaf en ondersteun deur die nie-winsgewende Wikimedia-stigting. Waarnemers beskou die tweeledige bestuur, waarin 'n informele gemeenskap van aktiewe gebruikers die gesag oor 'n globale digitale projek met 'n stigting deel en sodoende formele met informele organisasiestrukture verbind word, as 'n eksperiment wat steeds aan die gang is.", - "bing":"Microsoft Bing is die websoekenjin wat deur die Amerikaanse maatskappy Microsoft besit en bedryf word. Die diens het sy oorsprong in Microsoft se vorige soekenjins: Live Search, Windows Live Search en later Live Search. Bing bied 'n verskeidenheid soekdienste, insluitend web-, video-, beeld- en kaartsoekprodukte. Dit is ontwikkel met behulp van ASP.NET.", - "bing images":[ - "bing:af", - "ref" - ], - "bing videos":[ - "Intelligente soektog van Bing maak dit makliker om vinnig te kry waarna jy soek en beloon jou.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo is ’n soekenjin op die Internet. Een van hulle grootste trekpleisters is dat hulle meer privaatheidsbewus is en nie op gebruikers spioeneer nie. Die gebruiker se gedrag en profiel beïnvloed dus nie die resultate nie. As gevolg hiervan sal elke gebruiker presies dieselfde resultate vir dieselfde soektog kry.", - "ddg definitions":[ - "currency:af", - "ref" - ], - "wikidata":"Wikidata is 'n projek van die Wikimedia-stigting wat 'n ​​gesamentlik bewerkbare databasis ter ondersteuning van Wikipedia daarstel. Die projek is deur Wikimedia Duitsland begin en bied 'n gemeenskaplike bron van bepaalde tipes data, soos interwiki-skakels en geboortedata, wat in artikels op Wikipedia en elders gebruik kan word. Dit kan met Wikimedia Commons vergelyk word, maar voorsien data instede van media-lêers aan al Wikipedia se projekte.", - "duckduckgo":[ - "currency:af", - "ref" - ], - "duckduckgo images":[ - "currency:af", - "ref" - ], - "duckduckgo videos":[ - "currency:af", - "ref" - ], - "duckduckgo news":[ - "currency:af", - "ref" - ], - "duckduckgo weather":[ - "currency:af", - "ref" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Die Google-soekenjin is ’n soekenjin wat deur Google besit en bedryf word. Dit kan gebruik word om trefwoorde (teks) op webblaaie te soek. Dit is op 15 September 1997 bekendgestel en het sedertdien die mees gebruikte soekenjin op die wêreldwye web geword. Die woord Google het mettertyd sinoniem met internetsoektogte geword en is sedert 2006 selfs as ’n werkwoord in die Oxford-woordeboek opgeneem. Dit kan ook in Afrikaans as ’n werkwoord gebruik word en wel met ’n kleinletter-g.", - "google images":[ - "Google Images. Die omvattendste prentesoektog op die web.", - "https://images.google.com" - ], - "hackernews":"Hacker News is 'n sosiale nuus webwerf wat fokus op rekenaarwetenskap en entrepreneurskap. Dit word gelei deur Paul Graham se belegging fonds en opstart broeikas, Y Combinator. In die algemeen, is inhoud wat ingedien kan word, gedefinieer as \"enigiets wat jou intellektuele nuuskierigheid bevredig\".", - "imdb":"Die Internet-rolprentdatabasis is 'n aanlyn databasis met rolprente, televisiereekse, akteurs en rekenaarspeletjies. IMDb behoort sedert 1998 aan Amazon.com.", - "library genesis":"Library Genesis of LibGen is 'n soektog vir artikels en boeke oor verskeie onderwerpe, wat toegang bied aan inhoud wat anders agter 'n betaalmuur is, of andersins nie digitaal beskikbaar is nie. Onder andere, dra dit PDFs van Elsevier se ScienceDirect web-portaal.", - "library of congress":"Die Biblioteek van die VSA-kongres in Washington, D.C. is die nasionale biblioteek van die Verenigde State en een van die belangrikste biblioteke ter wêreld. Die Library of Congress is formeel 'n agentskap van die Amerikaanse Kongres.", - "openstreetmap":"OpenStreetMap (OSM) is 'n \"kopielinkse\" digitale padkaart wat ontwerp is om deur enigiemand gewysig te kan word. Die kaart word geskep uit data wat opgeneem word deur GPS-ontvangers, lugfoto's en ander gratis bronne. Die kaart kan dan geprojekteer word in 'n geografiese koördinatestelsel, gebruik word vir roete beplanning of gebruik word vir geografiese soektogte.", - "soundcloud":"SoundCloud is 'n aanlynklankverspreidingsplatform wat in Berlyn, Duitsland gebaseer is en wat gebruikers in staat stel om klank op te laai, op te neem, te bemark, en te deel. SoundCloud is in Augustus 2007 deur Alexander Ljung en Eric Wahlforss gestig.", - "semantic scholar":"Semantic Scholar is ’n soekenjin, wat kunsmatige intelligensie gebruik, vir akademiese publikasies. Dit is in November 2015 deur die Allen Institute for Artificial Intelligence begin.", - "youtube":"YouTube is 'n webwerf wat gebruikers in staat stel om video's op te laai, koers, kommentaar, deel, en na ander opgelaaide video's te kyk. Die webwerf behels films, musiek videos, nuus, opvoedkundige programme, sowel as video blogs, skyfievertonings, humoristiese video's, en nog baie meer te kyk. YouTube is tans die grootste video webwerf op die Internet.", - "vimeo":"Vimeo is 'n video-deel webwerf waar gebruikers videos kan oplaai, deel en kyk. Dit was die eerste videodeelwebblad wat hoëdefinisievideo ondersteun het.", - "wikibooks":"Wikibooks is 'n sustersprojek van Wikipedia en is een van die Wikimedia Stigting se webwerwe. Die wikibooks werf is op 10 Julie 2003 van stapel gestuur. Die projek maak 'n versameling van vrye teksboeke wat in samewerkingsverband geskryf word op die Internet beskikbaar. Die werf is net soos Wikipedia 'n wiki, en enge persoon kan dus die inhoud opdateer of nuwe artikels skep.", - "wikinews":"Wikinews is 'n projek van die Wikimedia Stigting wat poog om vrye inhoud nuus beskikbaar te stel. Die missie van Wikinews is om 'n \"diverse omgewing te skep waar burger-joernaliste onafhanklik nuusgebeure kan opteken\". Die webwerf is in November 2004 begin.", - "wikiquote":"Wikiquote is 'n susterprojek van Wikipedia, en gebruik dieselfde MediaWiki-sagteware. Dit is een van 'n familie van wiki-gebaseerde projekte wat deur die Wikimedia-stigting bedryf word. Wikiquote is gebaseer op 'n idee van Daniel Alston wat deur Brion Vibber geïmplementeer is. Die doel van die projek is om 'n groot verwysingwerk te skep, bestaande uit aanhalings van mense, boeke en gesegdes, en om verdere inligting oor hulle weer te gee.", - "wikisource":"Wikisource of Wikibronne is 'n projek van die Wikimedia Stigting wat ten doel het om 'n vrye wiki met bronverwysings daar te stel wat in ander projekte aangehaal kan word.", - "wikispecies":"Wikispecies is 'n projek van die Wikimedia-stigting wat op 13 September 2004 geloods is. Die doel van die webwerf is om 'n wetenskaplike klassifikasie en beskrywing van plante, diere en ander organismes beskikbaar te stel. Omrede Wikipedia volgens beleid nie oorspronklike navorsing toelaat nie, kan sulke inligting nie hier gepubliseer word nie.", - "wiktionary":"WikiWoordeboek is 'n susterprojek van Wikipedia wat streef om 'n vrye meertalige wiki-woordeboek te skep. Die woordeboek bevat 'n lys van woorde met omskrywings, etimologieë, uitsprake en aanhalings.", - "wikiversity":"Wikiversity is 'n projek van die Wikimedia Stigting wat gratis leermateriaal aan besoekers beskikbaar stel.", - "wikivoyage":"Wikivoyage is 'n vrye reisgids op die Internet met bestemmings, onderwerpe en taalgidse wat deur onbetaalde outeurs geskryf is. Die naam van die webtuiste is 'n samevoeging van die woorde \"wiki\", 'n sagtewareprogram wat mense toelaat om teks te publiseer en te wysig, en \"voyage\", die Franse en Engelse woord vir reis. Die inhoud word, net soos Wikipedia, onder die Creative Commons Erkenning-InsgelyksDeel-lisensie gepubliseer.", - "wikicommons.images":"Die Wikimedia Commons is 'n versameling vrye beelde, opnames en ander multimedialêers. Dit is 'n projek van die Wikimedia-stigting. Lêers wat by hierdie versameling opgelaai word kan deur al die ander Wikimediaprojekte gebruik word, insluitende Wikipedia, Wikibooks en Wikinews." - }, - "ar":{ - "9gag":"9جاج ‏ هو موقع صور قائم على مواقع الإعلام الاجتماعي ويتمحور حول الصور التي يرفعها المستخدمون والصور الهزلية، يزور الموقع شهريا مليارا زائر كما في شهر ديسمبر 2011 حسب موسس الموقع راي تشان. ويعرف الموقع بشكل رئيسي باستخدام ميم إنترنت.", - "apple app store":"متجر التطبيقات ‏ هي خدمة أنتجت لجهازي آي فون وآي بود تاتش وآي باد. صممته وتملكه شركة أبل والتي تمكن المستخدمين من تحميل التطبيقات المختلفة من خلال البرنامج نفسه على الجهاز دون الحاجة لبرنامج آي تيونز ستور بعد تحديث نظام التشغيل iOS 10. بلغ متوسط القيمة التقديرية لحجم المتجر 6 مليارات و200 مليون في عام 2010.", - "artic":[ - "متحف فني", - "wikidata" - ], - "arxiv":"أرخايف ‏ بحيث تُنطق في النهاية «أركايف» أو «أرخايف». أرخايف هو أرشيف لمسودات أوراق علمية إلكترونية مكتوبة في مجالات الفيزياء، الرياضيات، الفلك، علم الحاسوب، والإحصاء التي يمكن الوصول إليها عبر الإنترنت. هذه الأرشيفات موجودة على موقع arXiv.org.", - "wikipedia":"ويكيبيديا والكلمة مشتقة من مقطعين: ويكي wiki وتعني بلغة هاواي \"بالغ السرعة\"، والثاني بيديا pedia ومشتق من كلمة موسوعة encyclopedia، ويكيبيديا هي موسوعة متعددة اللغات، مبنية على الويب، ذات محتوى حر، تشغلها مؤسسة ويكيميديا، التي هي منظمة غير ربحية. ويكيبيديا هي موسوعة يمكن لأي مستخدم تعديل وتحرير وإنشاء مقالات جديدة فيها.", - "bilibili":"بيليبيلي هو موقع ويب من نوع خدمة استضافة فيديو وتطبيق محمول أنشئ في 26 يونيو 2009، يقع مقره الرئيسي في الصين، وهو متوفر باللغة الصينية.", - "bing":"مايكروسوفت بينغ ‏ واختصارًا وهو الاسم السابق: بينغ ‏ ؛ هو محرك بحث أعلن عنه تحت اسم ، طور تحت اسم بالعربية: كومو وإنجليزية: kumo, هو محرك بحث في ويب لشركة مايكروسوفت، صمم لمنافسة رواد هذا المجال جوجل وياهو!، تم الإفصاح عنه من قبل ستيف بالمر الرئيس التنفيذي السابق في مايكروسوفت في 28 مايو 2009 في مؤتمر All Things D في سان دييغو، بينغ هو بديل لايف سيرش Live Search، بدأ عمله بالكامل في 3 يونيو 2009.", - "bing images":[ - "bing:ar", - "ref" - ], - "bing news":[ - "أخبار من مصادر عالمية وإقليمية ومحلية يتم تنظيمها لتقديم تغطية إخبارية شاملة تتضمن أخبار الرياضة والفن والأعمال والسياسية والطقس وأكثر من ذلك.", - "https://www.bing.com/news" - ], - "bing videos":[ - "يُسهّل البحث الذكي من Bing من العثور بسرعة على ما تبحث عنه كما يمنحك مكافآت.", - "https://www.bing.com/videos" - ], - "bitbucket":[ - "خدمة استضافة على شبكة الإنترنت لمشاريع تطوير البرمجيات", - "wikidata" - ], - "currency":"دك دك جو أو داك داك غو ‏ هو محرك بحث على الإنترنت يركز على حماية خصوصية الباحثين وتجنب فقاعة التصفية لنتائج البحث المخصصة. يميز DuckDuckGo نفسه عن محركات البحث الأخرى من خلال عدم تحديد سمات مستخدميه وإظهار نفس نتائج البحث لجميع المستخدمين لمصطلح بحث معين.", - "deezer":"ديزر ‏ وهي منصة إلكترونية تقدم خدمة بث الموسيقى. وتتيح للمستخدمين الاستماع إلى الموسيقى من شركات إنتاج موسيقية، مثل: سوني للترفيه الموسيقي، ومجموعة يونيفرسال ميوزيك، ووارنر ميوزيك على مختلف الأجهزة سواء باستخدام الإنترنت أو من دون اتصال. تم إنشاء المنصّة في باريس، فرنسا، لدى دييزر حاليا 56 مليون ملف صوتي في المكتبة، مع أكثر من 60,000 قناة راديو، و18 مليون مستخدم نشط شهريا، منهم 7 ملايين مشترك اشتراك مدفوع منذ 3 أبريل 2020. الخدمة متاحة على شبكة الإنترنت، ونظام اندرويد، ونظام آي أو اس، وويندوز موبايل، ونظام التشغيل بلاك بيري، وويندوز، وماك.", - "deviantart":"ديڤينت‌آرت ‏ هو هو مجتمع فن أمريكي يتناول الأعمال الفنية، والتصوير الفيديوي والفوتوغرافي. أطلق في 7 أغسطس، 2000، من قبل انجيلو سوتيرا، سكوت جاركوف، ماثيو ستيفنز، وآخرين. تنظم الأعمال الفنية بحسب تصنيفات، وتشمل التصنيفات، التصوير الفوتوغرافي، والفن الرقمي، والفن التقليدي، والأدب، وفلاش، وصناعة الإفلام أو تصوير الأفلام، والأغلفة للتطبيقات، وأدوات تخصيص نظام التشغيل وغيرها، بالإضافة إلى المواد القابلة للتنزيل مثل الدورات التعليمية، والصور الفوتوغرافية. بالإضافة إلى مزايا إضافية مثل المجلات، والاستفتاءات، والمجموعات، ووملفات الأعمال الفنية.", - "ddg definitions":[ - "currency:ar", - "ref" - ], - "wikidata":"ويكي بيانات مشروع يهدف لإنشاء قاعدة بيانات حرة للمعلومات عن العالم يمكن للإنسان والآلة قراءتها وتعديلها على حد سواء. إذ ستزود ببيانات بجميع لغات مشاريع ويكيميديا، وتتيح الوصول المركزي إلى البيانات مثلما يعمل مشروع ويكيميديا كومنز للملفات. المشروع تشغله وتستضيفه مؤسسة ويكيميديا وهو أحد المشاريع الشقيقة لويكيبيديا الموسوعة الحرة. أنشئ المشروع بتمويل من التبرعات المقدمة من معهد ألين للذكاء الاصطناعي، ومؤسسة غوردون وبيتي موور، وشركة غوغل، تصل إلى إجمالي 1.3 مليون دولار.", - "duckduckgo":[ - "currency:ar", - "ref" - ], - "duckduckgo images":[ - "currency:ar", - "ref" - ], - "duckduckgo videos":[ - "currency:ar", - "ref" - ], - "duckduckgo news":[ - "currency:ar", - "ref" - ], - "duckduckgo weather":[ - "currency:ar", - "ref" - ], - "apple maps":"خرائط أبل ‏ هي خدمة خرائط ويب طورتها شركة أبل وهو نظام الخرائط الافتراضي الخاص بالأجهزة المستخدمة لأنظمة آي أو إس وماك أوس وووتش أو إس. توفر الخدمة معلومات الاتجاهات والزمن التقديري لوصول السيارات والمشاة وملاحة النقل العام. كما تُقدم خرائط أبل ميزة خاصة تُمكن المستخدم من استكشاف بعض المراكز الحضرية المكتظة بالسكان وغيرها من الأماكن الهامة بمشاهد ثلاثية الأبعاد تُظهر الأبنية.", - "emojipedia":"إيموجي بيديا ‏ هو موقع على الإنترنت مختص بمراجع الإيموجي، قام بإنشائه متخصص الإيموجي جيرمي بورج في 2013.", - "tineye":"تِن آي ‏ هو محرك البحث للصور وهي خدمة أنشأتها شركة ‏ مقرها في تورونتو كندا. حيث يقوم المستخدم بإرسال الصورة الي الموقع لكي يقوم محرك بالبحث عن مصدرها.", - "etymonline":"قاموس علم اشتقاق الألفاظ هو قاموس حر على الانترنت يصف أصول الكلمات باللغة الإنجليزية.", - "fdroid":"إف-درويد ‏ هو مستودع برامج أو «متجر تطبيقات» لتطبيقات الأندرويد، مماثل ومشابه ل جوجل بلاي ستور . المستودع الرئيسي مستضاف من طرف مشروع يحتوي فقط على تطبيقات ذات برامج حرة أو مفتوحة المصدر. التطبيقات يمكن تصفحها وتحميلها من الموقع الرسمي ل إف-درويد بدون حاجة المستخدم إلى تسجيل أو فتح حساب. «مضاد الميزات» على غرار الإعلانات تستعمل التتبع أو أنها تعتمد على برامج غير حرة ويتم ذكر هذا في الوصف. يقدم الموقع أيضا مصدر الكود للتطبيقات ، حيث أن مضيفي البرامج يستعملون خادم ف-درويد، وبالتالي يسمحون لأي شخص من المجموعة في أن يصبح ملك تطبيق معين في المستودع.", - "flickr":"فليكر ‏ هي خدمة استضافة الصور والفيديو بالإضافة إلى كونها مجتمعًا عبر الإنترنت. تأسَّست فليكر من قِبل لوديكورب ‏ عام 2004 وأصبحت منصّة شائعة للمصورين الهواة والمحترفين لاستضافة صور عاليّة الدقة. تغيّرت ملكية فليكر عدة مرات إلى أن امتلكتها سموج موج ‏ منذ العشرين من نيسان/أبريل 2018.", - "free software directory":"دليل البرمجيات الحرة (FSD) هو مشروع تابع لمؤسسة البرمجيات الحرة (FSF). يقوم بفهرسة البرامج المجانية التي تعمل في ظل أنظمة التشغيل الحرة - خاصة جنو و لينكس. غالبًا ما تكون المشاريع المفهرسة قادرة على العمل في العديد من أنظمة التشغيل الأخرى. كان المشروع في السابق بالاشتراك مع اليونسكو.", - "genius":"جينيس (بالإنجليزية:Genius) كان اسمها سابقاً راب جينيس وهي شركة أمريكية للإعلام الرقمي, أسس الموقع في آب 2009 من قبل توم ليهمان، إيلان زيخوري، ومهبود موغادام، والموقع يتيح للمستخدمين تقديم شروح وتفسير كلمات الأغاني، وقصص إخبارية، ومصادر، ووثائق.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"غيت لاب ‏ في الأصل كان يشير المصطلح إلى مدير مستودع حر. اليوم هذا الاسم قد يشير إلى:GitLab CE: برنامج مبني على الويب لإدارة مستودع غيت وويكي وميزات تتبع الأخطاء، يستخدم ترخيص مفتوح المصدر. GitLab EE: برنامج يعتمد على GitLab CE مع أكواد إضافية غير حرة. يستخدم رخصة تجارية. GitLab.com: موقع الويب الذي يعمل ببرنامج GitLab EE، يقدم عروض استضافة حسابات مماثلة لموقع غيت هاب. GitLab B. V.: الشركة. GitLab Inc.: الاسم الجديد للشركة.", - "github":"غيت هاب ‏ هي شركة تابعة لمايكروسوفت توفر استضافة لتطوير البرامج والتحكم في الإصدار باستخدام غيت. توفر الشركة وظائف التحكم في الإصدار الموزع وإدارة كود المصدر (SCM) لـ «غيت»، بالإضافة إلى ميزاته الخاصة. يوفر النظام التحكم في الوصول والعديد من ميزات التعاون مثل تتبع الأخطاء وطلبات الميزات البرمجية وإدارة المهام والتركيب المتواصل ومواقع ويكي لكل مشروع غيت هاب. يقع مقرها الرئيسي في كاليفورنيا، وهي شركة تابعة لشركة مايكروسوفت منذ عام 2018.", - "google":"بحث جوجل ‏ أو جوجل ‏، هو محرك بحث صممته شركة جوجل. وهو محرك البحث الأكثر استخدامًا على شبكة الويب العالمية عبر جميع الأنظمة الأساسية، مع حصة سوقية تبلغ 92.16٪ اعتبارًا من ديسمبر 2020، ويتعامل مع أكثر من 5.4 مليار عملية بحث يوميًا.", - "google images":"صور جوجل ‏: هو محرك بحث مصمم خصيصاً للبحث عن الصور، بلغ عدد الصور التي تحتويه 10 مليارات صورة، بينما يبلغ عدد متصفحيه مليار مستخدم يومياً. أطلقت هذه الخدمة منذ يوليو 2001.", - "google news":"أخبار جوجل ‏ هو برنامج مبني على الويب، تقدمه شركة جوجل. البرنامج عبارة عن مجمع أخبار. يستخدم البرنامج خوارزمية Storyrank التي يمكن القول أنها الخوارزمية الشقيقة لخوارزمية Pagerank التي جعلت باحوث جوجل من أفضل محركات البحث على الإنترنت. تم تطوير الخوارزمية بواسطة كاريشنا باهارات في العام 2001. تم تقديم أخبار جوجل كنسخة بيتا في أبريل 2002. خرج البرنامج من مرحلة البيتا في 23 يناير 2006. هناك عدة نسخ من البرنامج مخصصة ل 20 إقليما في العالم تستخدم 12 لغة. اللغات المتاحة حالياً هي: العربية، العبرية، الصينية ، اليبانية، الكورية، الفرنسية، الألمانية، الإسبانية، الإنجليزية، الإيطالية، البرتغالية، الهولندية، النرويجية، والسويدية.", - "google videos":"جوجل فيديو هو موقع فيديو مجاني، وكذلك محرك بحث للفيديو من غوغل. غوغل فيديو يسمح للفيديو أن يكون جزءًا لا يتجزأ من مواقع أخرى بعيدة ويوفر ما يلزم من كود HTML ويسمح كذلك للمواقع باستضافة كميات كبيرة من الفيديو عن بعد على جوجل فيديو دون الوقوع في عرض النطاق الترددي. بعض أشرطة الفيديو معروضة أيضاً للبيع من خلال متجر غوغل فيديو.", - "google scholar":"جوجل سكولار أو الباحث العلمي الخاص بجوجل ‏ هو محرك بحث خاص بالمؤلفات العلمية والأكاديمية التي يحتاج إليها الباحثون والدارسون. من مكان واحد، يمكنك البحث عبر العديد من المجالات العلمية ومصادر المعلومات: أبحاث معتمدة ورسائل علمية وكتب وملخصات ومقالات من ناشرين أكاديميين وجمعيات متخصصة ومراكز جمع المعلومات قبل طباعتها والجامعات وغير ذلك من مؤسسات البحث العلمي. يساعدك الباحث العلمي من جوجل على التعرف على أكثر الأبحاث العلمية صلة بمجال بحثك في عالم البحث العلمي.", - "google play apps":"جوجل بلاي ‏ وسابقًا سوق أندرويد ‏ هي خدمة توزيع رقمية يتم تشغيلها وتطويرها بواسطة جوجل، وهو بمثابة متجر التطبيقات الرسميّ للأجهزة المُعتمدة التي تعمل على نظام التشغيل أندرويد، ممَّا يسمح للمستخدمين بتصفح وتنزيل التطبيقات التي تمَّ تطويرها بِاستخدام مجموعة تطوير برامج أندرويد (SDK) ونشرها عبر جوجل. يُعد جوجل بلاي أيضًا بمثابة متجر وسائط رقمية، حيثُ يعرضُ المُوسيقى، والكتب، والأفلام، والبرامج التلفزيونية. عرض المتجر سابقًا أجهزة جوجل للشراء حتّى طُرح متجر تجزئة منفصل للأجهزة عبر الإنترنت والمسمى متجر جوجل وذلك في 11 مارس 2015. عرض المتجر أيضًا منشورات إخباريَّة ومجلات قبل تجديد أخبار جوجل في 15 مايو 2018. عرض المتجر أيضاً المُوسيقى والبودكاست كجزء من موسيقى جوجل بلاي حتّى ديسمبر 2020 عندما تمَّ استبدال الخدمة بيوتيوب ميوزيك وجوجل بودكاست.", - "google play movies":[ - "google play apps:ar", - "ref" - ], - "hackernews":"أخبار الهاكر ‏ هو موقع إخباري اجتماعي يركز على علوم الكمبيوتر وريادة الأعمال. يدار من قبل صندوق الاستثمار وحاضنة الشركات الناشئة Y Combinator الخاصة بـ بول غراهام. بشكل عام يتم تعريف المحتوى الذي يمكن تقديمه على أنه «أي شيء يرضي فضول الفرد الفكري».", - "hoogle":"هاسكل هي لغة برمجة مطابقة للمعايير، للأغراض العامة، وهي لغة وظيفية إلى حد كبير، دون دلالات ألفاظ ملزمة وبكتابة ثابتة وقوية. وقد سُميت بـ هاسكل علي اسم عالم المنطق «هاسكل كوري». وفي اللغة هاسكل، «تمثل الوظيفة مواطن من الدرجة الأولى» من لغة البرمجة. ولكونها لغة برمجة وظيفية فإن بنية التحكم الرئيسية هي الوظيفة. وترجع أصول اللغة إلى ملاحظات هاسكل كوري وأتباعه من المفكرين، بأن «الإثبات هو برنامج؛ والمعادلة التي يثبتها هي نوع للبرنامج».", - "imdb":"قاعدة بيانات الأفلام على الإنترنت وتُعرف اختصارًا بـ آي إم دي بي ‏ هي قاعدة بيانات عبر الإنترنت للمعلومات المتعلقة بالأفلام والبرامج التلفزيونية ومقاطع الفيديو المنزلية وألعاب الفيديو والمحتوى المتدفق عبر الإنترنت - بما في ذلك الممثلون وطاقم الإنتاج والسير الذاتية الشخصية وملخصات الحبكة، التقييمات وآراء المعجبين وكذا المراجعات النقدية. كان موقع قاعدة بيانات الأفلام على الإنترنت في الأصل موقع ويب يُديره المعجبون إلى أن سيطرت عليهِ شركة آي إم دي بي دوت كوم إنكوايرر ‏ وهي شركةٌ تابعةٌ لشركة أمازون. بدأ الموقع كقاعدة بيانات أفلام على مجموعة يوزنت ‏ على المسار ريك دوت آرتس دوت موفيز ‏ في عام 1990 وانتقلَ إلى الويب في عام 1993.", - "imgur":"إمجور هو مجتمع إلكتروني عبر الإنترنت يقدم خدمات الاستضافة للصور والمشاركة والاستمتاع بأشهر الصور المنتشرة عبر الإنترنت من جميع دول العالم. أسسه آلان شاف ويستخدم البرنامج حاليًا ملايين المتصفحين بشكل يومي.", - "kickass":"كيك اس تورنت ‏ هو موقع على شبكة الانترنت، تأسس في عام 2008، يوفر ملفات وروابط تورنت لتسهيل تبادل الملفات الند للند باستخدام بروتوكول بت تورنت. وتوقف الموقع عن الخدمة في 20 يوليوز عام 2016، بعد أن تم الحجز على اسم نطاقه من قبل حكومة الولايات المتحدة. وأغلقت خوادم بروكسي الموقع من طرف موظفيه في نفس الوقت.", - "library genesis":"مكتبة التكوين ‏ وتُدعى اختصارًا LibGen هي محرك بحث للمقالات والكتب حول مواضيع مختلفة، والتي تتيح الوصول المجاني إلى المحتوى الذي يتم توصيله بطريقة أخرى أو عدم ترقيمه في مكان آخر. من بين أمور أخرى، تتضمن ملفات بي دي اف محتوى من بوابة إلزيفير المعروفة باسم سيانس دايركت", - "z-library":"مكتبة-زد ‏ هو مشروعshadow library لمشاركه الملفات للوصول إلى مقالات العلميه والنصوص الادبيه وكتب المصالح العامه. ونشآت كمرآه لLibrary Genesis،و اغلبيه كتبها من Library Genesis.", - "library of congress":"مكتبة الكونغرس ‏ تعرف اختصاراً LOC هي مكتبة الأبحاث والتي تخص رسمياً كونغرس الولايات المتحدة وهي المكتبة الوطنية للولايات المتحدة بحكم الأمر الواقع.وهي أقدم مؤسسة ثقافية اتحادية في الولايات المتحدة. تقع المكتبة في ثلاثة مبان في كابيتول هيل في واشنطن دي سي.كما أنها تحتفظ بالمركز الوطني للمحافظة على السمعيات والبصريات في كولبيبر بولاية فيرجينيا. يشرف أمين مكتبة الكونغرس على وظائف المكتبة، ويحافظ مهندس مبنى الكابيتول على مبانيها. تعد مكتبة الكونجرس من أكبر المكتبات في العالم. «مجموعاتها عالمية ولا تقتصر على الموضوع أو التنسيق أو الحدود الوطنية، وتتضمن مواد بحثية من جميع أنحاء العالم وبأكثر من 450 لغة.»", - "mastodon users":"ماستودون هو برنامج حُر ومفتوح المصدر لتشغيل خدمات الشبكات الاجتماعية ذاتية الاستضافة. يوفر ميزات التدوينات المصغرة المشابهة لخدمة تويتر، يتم تقديم ماستودون من قبل عدد كبير من عقد ماستودون التي يتم تشغيلها بشكل مستقل ، لكل منها قواعد السلوك الخاصة بها، شروط الخدمة ، خيارات الخصوصية وسياسات الإشراف.", - "mastodon hashtags":[ - "mastodon users:ar", - "ref" - ], - "metacpan":"شبكة أرشيف بريل الشاملة (CPAN) تعد مستودعاً لأكثر من 250000 وحدة برمجية وتحتوي على 39000 وثيقة مصاحبة والتوزيع مكتوبة فيها باللغة بيرل البرمجية بواسطة أكثر من12000 مساهم. كما أن سي بي اي إن تشير إلى شبكة الأرشيف أو برنامج بريل الذي يعمل كواجهة للشبكة وكمثبت برنامج ألي كما أن معظم البرامج الموجودة على سي بي اي إن هي برامج مجانية ومفتوحة المصدر.", - "npm":"مدير حزمة العقدة ‏ هو نظام إدارة الحزم الأكثر شعبية للغة البرمجة جافا سكريبت، وهو مدير الحزم الافتراضي لبيئة تشغيل جافا سكريبت Node.js. وهو يتألف من واجهة سطر الأوامر وقاعدة بيانات على الإنترنت، تدعى سجل مدير حزمة العقدة. يتم الوصول إلى السجل عن طريق العميل. الحزم المتوفرة يمكن تصفحها والبحث عنها على موقع مدير حزمة العقدة.", - "openstreetmap":"خريطة الشارع المفتوحة ‏ مشروع تعاوني يهدف إلى إنشاء خرائط منشورة برخصة حرة. تُرسم الخرائط بطريق جمع البيانات الجغرافية بالمسح الأرضي باستخدام مستقبلات نظام التموضع العالمي المحمولة، وكذلك بالاستعانة بمصادر حرة أخرى. يمكن للمستخدمين تحرير المسارات والطرق وتحديثها من خلال وسائل التحرير المتاحة.", - "pinterest":"بنترست ‏ هي شبكة اجتماعية أمريكية لنشر الصور و الفيديوهات، أُطلقت عام 2010. مبدأ عمل بنترست مختلف قليلاً عن وسائل التواصل الاجتماعي الأخرى. فكل مشترك في بنترست بإمكانه عمل لوحة حائط \"Board\" أو عدة لوحات حائط افتراضية. ثم يقوم المشترك بعد ذلك بتدبيس \"Pin\" أو تعليق صوراً أو مقاطع فيديو يجدها مثيرة لاهتمامه ويرغب بالاحتفاظ بها في أحد لوحات الحائط الخاصة به. وتكون الصور ومقاطع الفيديو مأخوذة من عدة مواقع في الإنترنت ولذلك يكون دوماً هناك رابط إلكتروني يشير إلى مصدر الصورة. في حال ضغط أحد المستخدمين على الصورة، يأخذه الرابط للموقع الذي أُخِذت منه الصورة. وإذا أُعجب مستخدم آخر بالصور أو الفيديوهات التي قمت بتعليقها بإمكانه تدبيس نفس الصورة أو الفيديو في لوحة الحائط الخاصة به وتسمى هذه العملية بإعادة التدبيس أو إعادة التعليق \"Repin\". وبإمكان أي شخص الاطلاع على هذا الموقع والبحث عن الصور فيه ولكن يشترط التسجيل فيه. إذا أراد المستخدم مشاركة الصور أو إبداء الإعجاب ببعضها أو التعليق عليها. تم تأسيس الموقع من قبل بن سيلبرمان، بول سيارا وإيفان شارب. وتتم إدارة الموقع من قبل مختبرات كولد برو أمّا تمويله فهو من قِبَل مجموعة صغيرة من رجال الأعمال والمخترعين.", - "piratebay":"ذا بايرت بي ‏ ، وهو موقع سويدي يقوم بفهرسه ملفات التورنت torrent. وصل تصنيفه في يناير 2010 للمرتبة 99 ضمن تصنيف ألكسا ضمن أكثر المواقع زيارةً عالميًا. في 10 لشهر ديسمبر سنه 2014 تم حظر الموقع، وذلك بعد مداهمة الشرطة السويدية لخوادم الموقع وفي الأول من فبراير 2015 عاد الموقع للعمل بستة نطاقات جديدة.", - "pubmed":"مدلاين ‏ هي قاعدة بيانات ببليوغرافية في علوم الحياة والعلوم الحيوية الطبية. تحتوي على معلومات ببليوغرافية حول المجلات الأكاديمية في علوم الطب والتمريض والصيدلة وطب الأسنان والطب البيطري والرعاية الصحية. كما يحتوي مدلاين على مواضيع في علم الأحياء والكيمياء الحيوية وكذلك مجالات التطور الجزيئي والطب الحيوي.", - "reddit":"ريديت ‏ هو مجتمع إخباري على الإنترنت، إلا أنه يعتبر من مواقع مشاركة الروابط ومناقشتها حتى بات يشبه المنتديات، يعرف ريديت بالصفحة الرئيسية للإنترنت.", - "soundcloud":"ساوند كلاود هو موقع ويب للموسيقى والصوتيات يمكن لأي شخص من خلاله إنشاء الأصوات ومشاركتها. يتيح ساوند كلاود تسجيل الأصوات وتحميلها بسهولة، ومشاركة الصوت في إطار خاص مع أصدقائهم أو بشكل عام على المدونات ومواقع الويب والشبكات الاجتماعية، يزور الموقع حوالي 175 مليون شخص كل شهر، كما انه متوفر كتطبيق للهواتف الذكية.", - "stackoverflow":"ستاك إكستشينج ‏ هي شبكة من مواقع الأسئلة والأجوبة التي يهتم كل منها باختصاص معين، ويقوم المستخدمون فيها بطرح الأسئلة، الإجابة عليها، وتقييم الأسئلة والأجوبة بشكل تعاوني غير مركزي.", - "askubuntu":[ - "stackoverflow:ar", - "ref" - ], - "superuser":[ - "stackoverflow:ar", - "ref" - ], - "semantic scholar":"سيمانتك سكولر هو مشروعٌ طُور في معهد ألن للذكاء الاصطناعي، وصدر للجمهور في نوفمبر 2015، وهو مصممٌ ليكون محرك بحث مدعومًا بالذكاء الاصطناعي للمنشورات الأكاديمية. يستخدم المشروع مزيجًا من التعلم الآلي ومعالجة اللغة الطبيعية والرؤية الآلية لإضافة طبقة من التحليل الدلالي إلى الأساليب التقليدية لتحليل الاقتباس واستخراج الأشكال والكيانات والأماكن ذات الصلة من الأوراق. مقارنةً مع جوجل سكولار وببمد، فإنَّ سيمانتك سكولر مصممٌ لإبراز أهم الأوراق والأكثر تأثيرًا، وتحديد الروابط بينهما.", - "tagesschau":[ - "برنامج أخبار ألماني", - "wikidata" - ], - "yahoo news":"ياهو! نيوز بالإنجليزية موقع أخباري تابع لشركة ياهو الأمريكية تقوم بجمع الأخبار من جميع الوكلات والصحف ووضعها في الموقع.", - "youtube":"يوتيوب ‏ هو موقع ويب يسمح لمستخدميه برفع التسجيلات المرئية مجانًا ومشاهدتها عبر البث الحي ومشاركتها والتعليق عليها وغير ذلك. أسسه في 14 فبراير سنة 2005م ثلاث موظفين سابقين من شركة باي بال هم تشاد هيرلي وستيف تشين وجاود كريم، في مدينة سان برونو، وكان يستخدم تقنية برنامج أدوبي فلاش لعرض المقاطع المتحركة، أما الآن فيعتمد تقنية إتش تي إم إل 5. ومحتوى الموقع يتنوع بين مقاطع الأفلام، والتلفاز، والموسيقى، وكذلك الفيديو المنتج من قبل الهواة، وغيرها. وهو حاليًا مزود بأكثر من ألفي موظف. وفي أكتوبر 2006 أعلنت شركة Google التوصل لاتفاقية لشراء الموقع مقابل 1.65 مليار دولار أمريكي، أي ما يعادل 1.31 مليار يورو. ويعتبر الموقع من مواقع ويب 2.0.", - "dailymotion":"ديلي موشن (Dailymotion) هو موقع ويب شهير متخصص بمشاركة الفيديو، يعتبر منافس ليوتويب، يسمح للمستخدمين برفع ومشاهدة ومشاركة مقاطع الفيديو بشكل مجاني. في نوفمبر 2012 احتل الموقع المرتبة 31 لأكثر المواقع زيارة في العالم بحجم زائرين يصل إلى 116 مليون زائر في الشهر.", - "vimeo":"فيميو ‏ هو موقع يتيح للمستخدم رفع ملفات الفيديو ومشاركتها أو حتى استخدامها في مواقع التواصل الاجتماعي، أَسَّس الموقع زاك كلاين وجيك لودويك في نوفمبر 2004.", - "wikibooks":"ويكي الكتب ‏ هو مشروع شقيق لويكيبيديا وجزء من مشاريع مؤسسة ويكيميديا. وهو ويكي للكتب تستضيفه مؤسسة ويكيميديا لإيجاد كتب ومراجع للاستخدام المجاني الحر يمكن لأي شخص التعديل والإسهام فيها تحت بنود رخصة جنو للوثائق الحرة؛ بدأ المشروع في 10 يوليو 2003 وكان باللغة الإنجليزية فقط، ثم توسع ليشمل إصدارات بلغات أخرى في يوليو 2004، وبدأت النسخة العربية في 12 سبتمبر 2004. واعتبارًا من يناير 2021 أصبح هناك إصدارات من ويكي الكتب بـ76 لغة، تحتوي على 286482 مقالة، وتضم 1490 محررًا نشطًا.", - "wikinews":"ويكي الأخبار أحد مشاريع مؤسسة ويكيميديا، بدأ في 8 نوفمبر 2004، وبدأت النسخة العربية منه في 12 ديسمبر 2005، يهدف المشروع إلى كتابة محتوى إخباري محايد؛ في سبتمبر 2005 أصبح محتوى المشروع متوفرا تحت رخصة التشارك الإبداعي.", - "wikiquote":"ويكي الاقتباس هو أحد مشاريع مؤسسة ويكيميديا؛ مبني بالأساس على فكرة دانييل الستون التي سرعان ما قام بتنفيذها بريون فيبر. يهدف المشروع إلى تجميع الاقتباسات والأقوال المأثورة، بدأ المشروع في 10 يوليو 2003 وبدأت النسخة العربية في 30 سبتمبر 2004 وهي أيضا تستخدم برنامج ميدياويكي لإدارة المحتوى.", - "wikisource":"ويكي مصدر هي مكتبة رقمية متصلة بالشبكة العنكبوتية مفتوحة للجميع، ويمكن تحميلها على شكل ملف pdf.في هذا المشروع العربي تضم 79٬518 صفحة حتى تاريخ 2020 من الرسائل الأدبية، والكتب والنصوص الدينية والتراثية والتاريخية، والشعر. بدأت ويكي مصدر في نوفمبر 2003 كمجموعة للنصوص الحرة الداعمة لمقالات ويكيبيديا المشروع الأساسي لمؤسسة ويكيميديا. سميت في أول الأمر مشروع سورس بيرغ كمحاولة لنحت اسم مما يعرف باسم مشروع غوتنبرغ، ثمّ تغيّر اسم المشروع في 6 ديسمبر 2003 إلى ويكي المصدر. وهو مشروع مؤسسة ويكيميديا لجمع وتخزين نصوص الملكية العامة المنشورة سابقًا أو النصوص الحرة التي نفدت حقوق طبعها أو المترجمة ومتوفرة بعدة لغات. انتقل المشروع إلى عنوان موقعه الدائم في 23 يوليو 2004.", - "wikispecies":"ويكي أنواع هو أحد مشاريع مؤسسة ويكيميديا، وهو يهدف إلى إنشاء دليل بكل أنواع الكائنات. بدأ المشروع في 13 سبتمبر 2004.", - "wiktionary":"ويكاموس هو مشروع مُتعدد اللغات، أحد مشاريع مؤسسة ويكيميديا على شبكة الإنترنت يهدف إلى إيجاد قاموس حر بلغة الويكي لكل اللغات. يتم تحريرها بشكل تعاوني عن طريق ويكي، وهو متاح في 172 لغة من بينها العربية. مُعظم مفردات اللغة في ويكاموس توفر تعريفات وترجمات للكلمات إلى لغات عديدة، وبعض المفردات متصلة بمعلومات إضافية موجودة عادة في المكنز أو المعجم اللغوي، كما تضم مرادفات الكلمة.", - "wikiversity":"ويكي الجامعة هو أحد مشاريع مؤسسة ويكيميديا، يهدف إلى دعم التعليم الحر واستضافة مواد تعليمية مجانية. المشروع بدأ في 15 أغسطس 2006؛ وبدأت النسخة العربية منه في 12 يوليو 2011.", - "wikivoyage":"ويكي الرحلات ‏ هي دليل سياحي على شبكة الإنترنت، كتب بطريقة تشاركية من عدد من الكتاب المتطوعين، ومحتواه هو تحت رخصة حرة.", - "wikicommons.images":"ويكيميديا كومنز أو ويكي كومنز ‏ هو أحد مشاريع مؤسسة ويكيميديا هو مخزن الوسائط المتعددة مفتوحة المصدر مثل الصور وملفات الصوت وملفات الوسائط المتعددة الأخرى بحيث يمكن استخدامها في أي مشروع من مشاريع ويكيميديا. وفي أي لغة من لغات ويكيبيديا، أو تحميلها للاستخدام خارج ويكيميديا.", - "wolframalpha":"ولفرام ألفا ‏، هو محرك بحث أطلق عند الساعة الثالثة من صباح 16 مايو 2009. على خلاف محركات البحث التقليدية، فإن ولفرام يقوم بالإجابة عن الأسئلة التي تطرح عليه في حين تقوم البواحيث التقليدية بمجرد عرض قائمة من مواقع الإنترنت ذات العلاقة بالكلمات المفتاحية التي يتم البحث عبرها.", - "1337x":"1337x هو موقع ويب يوفر دليلًا لملفات التورنت وروابط التورنت المستخدمة لمشاركة الملفات من نظير إلى نظير من خلال بروتوكول بت تورنت. وفقًا لمدونة أخبار تورنت فريك، فإن 1337x هو ثالث أشهر مواقع التورنت اعتبارًا من عام 2021.", - "seznam":[ - "شركة تشيكية", - "wikidata" - ], - "naver":"نافير هي منصة كورية جنوبية على الإنترنت تديرها شركة نافير. ظهرت لأول مرة في عام 1999 كأول بوابة ويب في كوريا الجنوبية لتطوير واستخدام محرك البحث الخاص بها. كما كانت أول مشغل في العالم يقدم ميزة البحث الشامل، والتي تجمع نتائج البحث من مختلف الفئات وتقدمها في صفحة واحدة. أضافت نافير منذ ذلك الحين العديد من الخدمات الجديدة التي تتراوح من الميزات الأساسية مثل البريد الإلكتروني والأخبار إلى أول منصة للأسئلة والأجوبة عبر الإنترنت في العالم يعرف ب«نولج ان».", - "yacy":"ياسي ‏ – هو محرك بحثي موزع يستخدم بالمجان، مبني علي مبادئ شبكة النظير للنظير. محتوى المحرك عبار عن برنامج مكتوب بلغة الجافا موزع على العديد من الحواسب الالية في شهر سبتمبر 2006 وكان يسمى ب «نظراء الياسي» كل نظير بمفرده يبحث في شبكة الإنترنت، يحلل ويسجل الصفحات التي وجدت ويخزن التسجيلات في قاعدة بيانات مشتركة بين الاخرون طبقا لمبادئ شبكة النظير للنظير. هو محرك بحث لأي شخص ويمكنه بناء مدخل بحثي لشبكته الداخلية ومساعدته في البحث على الإنترنت العام.", - "yacy images":[ - "yacy:ar", - "ref" - ], - "rumble":"رامبل ‏ هو موقع صناعة محتويات فيديو كندي. تم تأسيسه في سنة 2013 من قبل كريس بافلوفسكي. بدأ كموقع لنشر فيديوهات عن الحيوانات الأليفة والأطفال الرضع وثم زادت شهرته ليكون منصة بديلة للمحافظين واليمينيين عن يوتيوب. في يوم 11 يناير 2021 رفع الموقع دعوى ضد غوغل بتهمة التلاعب بنتائج البحث عن الموقع واخفائه وطالب بتعويض ملياري دولار على ذلك. يدير الموقع حالياً دان بونجينو.", - "wttr.in":[ - "Boydton, Virginia, United States تقرير حالة ألطقس", - "https://wttr.in" - ], - "yummly":[ - "تطبيق محمول", - "wikidata" - ], - "brave":"بريف ‏ وتعني شجاع هو متصفح ويب مفتوح المصدر مبني على كروميوم، يعمل المتصفح على نظم تشغيل مايكروسوفت ويندوز وماك أو إس وجنو/لينكس، وكذلك يعمل على نظامي آي أو إس وأندرويد. ترأس بريندان أيخ، منشئ جافاسكربت وأحد مؤسسي مؤسسة موزيلا، مشروع تطوير هذا المتصفح.", - "brave.images":[ - "brave:ar", - "ref" - ], - "brave.videos":[ - "brave:ar", - "ref" - ], - "brave.news":[ - "brave:ar", - "ref" - ] - }, - "bg":{ - "9gag":"9gag е Хонгконгски Интернет сайт, базиран на смешни снимки. Уебсайтът е създаден през 2008 година. Сайтът достига 1 млрд. преглеждания на месец през декември 2011.", - "apple app store":"App Store е Интернет магазин – платформа за цифрова дистрибуция на мобилни приложения на базата на iOS, разработена и поддържана от компанията Apple.", - "arxiv":"arXiv е Интернет архив със свободен достъп за статии от областта на физиката, математиката, компютърните науки и биологията.", - "bandcamp":"Бандкамп (Bandcamp) е американска интернет музикална компания, основана през 2008 г. от съоснователя на Одпост Итън Даймънд и програмистите Шон Грънбъргър, Джо Холт и Нийл Тъкър, със седалище в Оукланд, Калифорния, САЩ.", - "wikipedia":"Уикипедия е многоезична, уеб базирана енциклопедия със свободно съдържание. Тя е динамичен продукт на сътрудничещи си доброволци от цял свят, позволяваща на всеки човек с достъп до интернет да участва в редактирането ѝ. Проектът започва на 15 януари 2001 г. като допълнение към Нюпедия, която се съставя от експерти. Към 2020 г. Уикипедия се управлява от Фондация „Уикимедия“, организация с нестопанска цел. В Уикипедия има над 40 милиона статии, включително над 250 000 в българоезичната ѝ версия, създадени от над 100 000 доброволци. През годините на своето съществуване Уикипедия завоюва голяма популярност, насърчавайки зараждането на други сродни проекти като Уикиречник, Уикикниги и други.", - "bing":"Microsoft Bing е онлайн търсачка на Microsoft.", - "bing images":[ - "bing:bg", - "ref" - ], - "bing news":[ - "Новини от международни, национални и местни източници на новини, организирани така, че да ви предоставят задълбочено информационно покритие от света на спорта, забавленията, бизнеса, политиката, времето и още много други.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Интелигентното търсене на Bing ви помага бързо да намирате това, което търсите, и ви предоставя награди.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo е интернет търсачка, която акцентира върху поверителността на потребителите.", - "deviantart":"deviantArt е онлайн общност, в която се качват различни видове „произведения на изкуството“, направени от потребителите. Отворен е на 7 август, 2000 от Скот Джаркоф, Матю Стивънс, Анджело Сотира и други. Дружеството на deviantArt се намира в Холивуд, Лос Анджелис, Съединени щати.", - "ddg definitions":[ - "currency:bg", - "ref" - ], - "wikidata":"Уикиданни е уики проект – база знания създадена от Фондация Уикимедия. Съдържанието е свободно и подобно на повечето проекти на фондацията е достъпно под лицензи „Криейтив Комънс – Признание – Споделяне на споделеното“ (CC-BY-SA) и обществено достояние (CC0).", - "duckduckgo":[ - "currency:bg", - "ref" - ], - "duckduckgo images":[ - "currency:bg", - "ref" - ], - "duckduckgo videos":[ - "currency:bg", - "ref" - ], - "duckduckgo news":[ - "currency:bg", - "ref" - ], - "duckduckgo weather":[ - "currency:bg", - "ref" - ], - "fdroid":[ - "каталог с приложения за Андроид със свободен код", - "wikidata" - ], - "flickr":[ - "американски уебсайт", - "wikidata" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub e уеб базирана услуга за разполагане на софтуерни проекти и техни съвместни разработки върху отдалечен интернет сървър в т.нар. хранилище. Базира се на Git системите за контрол и управление на версиите. Услугата може да бъде както платена за частни проекти, така и безплатна за т.нар. проекти с общодостъпен код, като и в двата случая потребителите могат да ползват всички възможности на услугата. Към май 2011 г. GitHub се счита за най-популярния сайт за разполагане на съвместни проекти с общодостъпен или наречен още отворен код.", - "google":"Гугъл търсачката е интернет търсачка, притежание на едноименната компания Гугъл.", - "google images":[ - "Google Изображения. Най-резултатното търсене на изображения в мрежата.", - "https://images.google.com" - ], - "google news":[ - "Изчерпателни и актуални новинарски материали, обобщени от източници по целия свят от Google Новини.", - "https://news.google.com" - ], - "google scholar":"Google Наука е специализирана търсачка на научна литература: рецензирани публикации, научни разработки, книги, резюмета и статии от академични издателства, професионални общности, архиви с работни статии, университети и други научни организации.", - "google play apps":"Google Play, първоначално Android Market, е онлайн магазин за софтуер, разработен от Google. Tой служи като официален магазин за приложения за операционната система Android, позволявайки на потребителите да преглеждат и свалят приложения, разработени под Android и публикувани през Google. Google Play също така служи като дигитален магазин, който предлага музика, списания, книги, филми и тв сериали. Потребителите също така може и да закупуват хардуерни устройства през услугата, като Chromebook, Google Nexus-брандирани телефони, Chromecast и аксесоари.", - "google play movies":[ - "google play apps:bg", - "ref" - ], - "hoogle":"Haskell (Ха̀скъл) е функционален език за програмиране. В частност, той е полиморфично статично-типизиран, „мързелив“, чисто функционален език, доста различен от повечето езици за програмиране. Името му е в чест на логика Хаскел Къри, чийто труд в областта на математическата логика е в основата на създаването на функционалните езици. Haskell е базиран на ламбда смятане, следователно ламбда се използва за негово лого. Поради близостта си с математиката и богатството от математически библиотеки езикът е широко използван за решаване на кратки математически задачи.", - "imdb":"Internet Movie Database е онлайн база от данни с информация за актьори, филми, телевизионни предавания, телевизионни звезди, видеоигри и технически персонал (кинаджии).", - "z-library":"Z-Library е уебсайт за незаконно споделяне на електронни книги.", - "library of congress":"Библиотеката на Конгреса е фактически национална библиотека на Съединените щати. Тя е най-старото федерално културно учреждение в САЩ.", - "openstreetmap":"„Оупън Стрийт Мап“, съкратено ОСМ, е сътруднически проект за създаване на свободна и редактируема карта на света.", - "pinterest":"Pinterest е социален сайт за споделяне на снимки от типа табло за обяви. Услугата позволява на потребителите да споделят и управляват тематични изображения. Мисията на сайта е да свърже всички хора по света чрез интересни неща. Pinterest се управлява от компанията Cold Brew Labs и екипа ѝ, базиран в Пало Алто, Калифорния. Основател на сайта е Ben Silbermann от Западен Де Мойн, Айова.", - "piratebay":"The Pirate Bay е известен шведски уеб сайт, най-големият BitTorrent тракер в света, позволяващ надежден трансфер на големи файлове, с повече от 22 млн. потребители. Той също служи като индекс за торент файлове.", - "qwant":"Qwant е интернет търсачка, която акцентира върху поверителността.", - "qwant news":[ - "qwant:bg", - "ref" - ], - "qwant images":[ - "qwant:bg", - "ref" - ], - "qwant videos":[ - "qwant:bg", - "ref" - ], - "reddit":"Reddit е социален агрегатор на новини (SNA) и социално-медийна онлайн платформа, изградена от отделни общности, наречени „subreddits“, чиито потребители могат да споделят снимки, изображения, видео, линкове и текстове по определена тема, да участват в дискусии и да гласуват за публикуваното съдържание. Насочеността и правилата на поведение във всяка общност в Reddit се определят от нейните потребители, а някои от тях участват и в прилагането им в качеството на модератори на съдържанието. Reddit поддържа прогресивно уеб приложение (PWA) и има мобилни версии за iOS и Android.", - "soundcloud":"„Саундклауд“ е онлайн платформа за разпространение на аудио и музика, базирана в Берлин, Германия, която позволява на потребителите да качват и споделят звукови файлове.", - "stackoverflow":"Stack Exchange е мрежа от сайтове за въпроси и отговори по различни тематики в различни сфери, като всеки сайт покрива определена тематика. В тези сайтове потребителите се ползват с ограничение/възнаграждаване на техните онлайн действия в зависимост от активността им онлайн и „репутацията“, която получават в тези сайтове като резултат от тяхната онлайн активност. Тези сайтове са моделирани по примера на популярния сайт Stack Overflow, интернет форум за компютърно програмиране и въпроси по тази тематика, като това е оригиналният начален сайт в тази мрежа. Идеята на системата с онлайн репутацията е сайтовете да са само-модериращи се.", - "askubuntu":[ - "stackoverflow:bg", - "ref" - ], - "superuser":[ - "stackoverflow:bg", - "ref" - ], - "youtube":"Ютюб е видео хостинг услуга, притежавана от Google Inc. Тя предоставя уебсайт за видеосподеляне, на който потребителите могат да качват, споделят и гледат видеоклипове. След нова актуализация е предоставена възможността за споделяне на снимки, както и „истории“, видими за 12-часов период.", - "wikibooks":"Уикикниги (Wikibooks), в миналото наричан „Wikimedia Free Textbook Project“ и „Wikimedia-Textbooks“ (Уикимедия-учебници), е сроден на Уикипедия проект и част от Фондация Уикимедия. Проектът стартира на 10 юли, 2003 г.", - "wikinews":"Уикиновини (Wikinews) е новинарски сайт, базиран на уики-технологията, и един от проектите на Фондация Уикимедия. Подобно на останалите проекти на Фондацията, сайтът се поддържа от доброволци. Общността на тези доброволци, както и принципите на работа обаче са различни от тези на Уикипедия. Проектът стартира на 26 октомври 2004 г.", - "wikiquote":"Уикицитат е сестрински проект на Уикипедия, използващ същия софтуер – МедияУики. Той е един от семейство проекти на Фондация Уикимедия базирани на уики. Целта на проекта е колективно да се създаде голяма колекция от цитати на известни хора, цитати от книги и пословици и да даде повече информация за тях.", - "wikisource":"Уикиизточник – Свободната библиотека е проект на Уикимедия, който цели да изгради свободна уикибиблиотека от оригинални текстове-извори. Проектът стартира през 2003 година.", - "wikispecies":"Уикивидове е проект на Фондация Уикимедия. Неговата цел е да създаде изчерпателен каталог със свободно съдържание на видовете и да се управлява по-скоро от учени, отколкото от масовата публика. Джими Уейлс, основателя на Фондация Уикимедия, твърди, че редакторите не е нужно да представят диплома, но техните кандидатури ще трябва да минават одобрението на технически лица. Уикивидове се предлага под Лиценз за свободна документация на ГНУ и Creative Commons licenses.", - "wiktionary":"Уикиречник е многоезичен, уеб-базиран проект, стремящ се да създаде свободен по своето съдържание речник на над 150 езика. За разлика от традиционните речници, Уикиречникът се изгражда съвместно на доброволни начала посредством МедияУики, който позволява речниковите записи да се променят практически от всеки човек с достъп до Интернет.", - "wikiversity":"Уикиверситет е проект на фондация Уикимедия, който има за цел да направи достъпни учебни материали и упражнения, както и да съхранява и развива оригинални изследвания. Бета фазата на проекта Уикиверситет започва официално на 15 август 2006 г. с англоезичния Уикиверситет. За момента има единадесет Уикиверситета на различни езици – английски, френски, немски, италиански, испански, руски, чешки, гръцки, финландски, японски и португалски, а нови езици се развиват в Уикиверситет Бета – многоезичен портал, където се намира и българският проект за Уикиверситет.", - "wikivoyage":"„Уикипътешественик“ е отворен многоезичен проект, посветен на туризма и създаването на свободно редактируем пътеводител. „Уикипътешественик“ е наречен „Уикипедия на пътеводителите“.", - "wikicommons.images":"Общомедия е проект на Фондация Уикимедия, представляващ хранилище на свободни картинки, звукови и други файлове. Файловете, качени в Общомедия, могат да бъдат използвани и от много други проекти на сървърите на Уикимедия, включително Уикипедиите, Уикикниги, Уикиновини и др. Синтаксисът за включване на файловете не се различава от този за локалните файлове. Ако съществува едноименен файл в локалния проект, се показва той, иначе се търси в Общомедия.", - "wolframalpha":"WolframAlpha е отговаряща машина, разработена от компанията Wolfram Research, чийто основател и главен изпълнителен директор е Стивън Волфрам.", - "dictzone":[ - "Онлайн речници: английски, испански, немски, френски, италиански, унгарски... Изберете любимия си речник!", - "https://dictzone.com/" - ], - "1337x":"1337x е уебсайт за споделяне на файлове чрез метода peer-to-peer посредством протокола BitTorrent. Към 2022 г. това е третият най-популярен торент тракер. Създаден е през 2007 г. С нарастващата му популярност десетки търсачки го премахват от резултатите си. Поради естеството на услугата, която предоставя, не са рядкост и правните действия към уебсайта, както и временните прекъсвания на функционалността.", - "rumble":"Rumble е канадска алт-тех видео платформа. Сайтът е основан от Крис Павловски, технологичен предприемач.", - "wttr.in":[ - "Прогноза за времето в: Boydton, Virginia, United States", - "https://wttr.in" - ] - }, - "bn":{ - "annas archive":"অ্যানাজ আর্কাইভ হল একটি অলাভজনক অনলাইন ছায়া গ্রন্থাগার মেটাসার্চ ইঞ্জিন যা বিভিন্ন বই সংস্থান করে এবং অন্যদেরকে তা সংরক্ষণের জন্য উন্মুক্ত করে দেয়। বেনামী আর্কাইভিস্টদের একটি দল এই গ্রন্থাগারটি তৈরি করেছেন। ২০২২ সালের নভেম্বরে জেড-লাইব্রেরি বন্ধ করার জন্য দ্য পাবলিশার্স অ্যাসোসিয়েশন এবং অথরস গিল্ডের আনুষ্ঠানিক সহায়তায় আইন প্রয়োগকারী প্রচেষ্টার বিপরীতে প্রত্যক্ষ প্রতিক্রিয়া হিসাবে অ্যানাজ আর্কাইভ শুরু করা হয়।", - "apple app store":"অ্যাপ স্টোর একটি অ্যাপ স্টোর প্ল্যাটফর্ম যা অ্যাপল ইনক দ্বারা মোবাইল অ্যাপ্লিকেশন এর আইওএস এবং [[আইপ্যাডএস)] এর জন্য তৈরি এবং রক্ষণাবেক্ষণ করা হয় ]] অপারেটিং সিস্টেম। স্টোর ব্যবহারকারীদের অ্যাপলের আইওএস সফটওয়্যার ডেভলপমেন্ট কিট এর সাহায্যে উন্নত অ্যাপ্লিকেশনগুলি ব্রাউজ এবং ডাউনলোড করতে দেয়। অ্যাপ্লিকেশনগুলি আইফোন স্মার্টফোন, আইপড টাচ হ্যান্ডহেল্ড কম্পিউটার, বা আইপ্যাড ট্যাবলেট কম্পিউটারে ডাউনলোড করা যেতে পারে এবং কিছুগুলি অ্যাপল ওয়াচ স্মার্টওয়াচ বা চতুর্থ- প্রজন্ম বা নতুন অ্যাপল টিভি এর আইফোন অ্যাপ্লিকেশনগুলির এক্সটেনশন হিসাবে।", - "arxiv":"arXiv হল সংশোধনের পর প্রকাশনার জন্য অনুমোদিত ইলেকট্রনিক প্রাক মুদ্রণের একটি সংগ্রহস্থল, যেটি গণিত, পদার্থবিজ্ঞান, জ্যোতির্বিজ্ঞান, কম্পিউটার বিজ্ঞান, পরিমাণগত জীববিদ্যা, পরিসংখ্যান এবং পরিমাণগত অর্থব্যবস্থা বিভাগের বৈজ্ঞানিক কাগজপত্র নিয়ে গঠিত। এগুলিতে অনলাইনের মাধ্যমে প্রবেশ করা যায়।", - "wikipedia":"উইকিপিডিয়া হলো সম্মিলিতভাবে সম্পাদিত, বহুভাষিক, মুক্ত প্রবেশাধিকার, মুক্ত বিষয়বস্তু সংযুক্ত অনলাইন বিশ্বকোষ যা উইকিপিডিয়ান বলে পরিচিত স্বেচ্ছাসেবকদের একটি সম্প্রদায় কর্তৃক লিখিত এবং রক্ষণাবেক্ষণকৃত। স্বেচ্ছাসেবকরা উন্মুক্ত সহযোগিতার মাধ্যমে এবং মিডিয়াউইকি নামে একটি উইকি -ভিত্তিক সম্পাদনা ব্যবস্থা ব্যবহার করে। এটি ধারাবাহিকভাবে সিমিলারওয়েব এবং পূর্বে আলেক্সা কর্তৃক র‍্যাঙ্ককৃত ১০টি জনপ্রিয় ওয়েবসাইটগুলির মধ্যে একটি; ২০২৩-এর হিসাব অনুযায়ী উইকিপিডিয়া বিশ্বের ৫ তম জনপ্রিয় সাইট হিসেবে স্থান পেয়েছে। ফেব্রুয়ারি ২০১৪ সালে, দ্য নিউ ইয়র্ক টাইমস জানায় উইকিপিডিয়া সমস্ত ওয়েবসাইটের মধ্যে বিশ্বব্যাপী পঞ্চম স্থানে অবস্থান করছে, \"মাসিক প্রায় ১৮ বিলিয়ন পৃষ্ঠা প্রদর্শন এবং প্রায় ৫০০ মিলিয়ন স্বতন্ত্র পরিদর্শক রয়েছে। উইকিপিডিয়ায় ইয়াহু, ফেসবুক, মাইক্রোসফট এবং গুগলের পথানুসরণ করে, সর্বাধিক ১.২ বিলিয়ন স্বতন্ত্র পরিদর্শক রয়েছে।\"", - "bing":"বিং মাইক্রোসফট কর্তৃক নিয়ন্ত্রিত একটি ওয়েব অনুসন্ধান ইঞ্জিন । বিং বিভিন্ন ধরনের অনুসন্ধান সেবা প্রদান করে যেমন - ওয়েব, ভিডিও, চিত্র এবং মানচিত্র ইত্যাদি অনুসন্ধান সরবরাহ করে। এটি এএসপি ডট নেট ব্যবহার করে তৈরি করা।", - "bing images":[ - "bing:bn", - "ref" - ], - "bing news":[ - "আপনাকে ক্রীড়া, বিনোদন, ব্যবসা, রাজনীতি, আবহাওয়া ইত্যাদি সংক্রান্ত সংবাদের বিস্তারিত কভারেজ প্রদান করার জন্য বিশ্ব, জাতীয় এবং স্থানীয় সংবাদের উৎসগুলি থেকে প্রাপ্ত সংবাদকে সংগঠিত করা হয়।", - "https://www.bing.com/news" - ], - "bitbucket":"বিটবাকেট হল একটি গিট - ভিত্তিক সোর্স কোড রিপোজিটরি হোস্টিং পরিষেবা যা আটলাসিয়ানের মালিকানাধীন । গিটহাব এবং গিটল্যাব এর প্রতিদ্বন্দ্বী । Bitbucket সীমাহীন সংখ্যক ব্যক্তিগত সংগ্রহস্থল সহ বাণিজ্যিক পরিকল্পনা এবং বিনামূল্যে অ্যাকাউন্ট উভয়ই অফার করে।", - "crossref":"Crossref আন্তর্জাতিক DOI ফাউন্ডেশনের একটি অফিসিয়াল ডিজিটাল অবজেক্ট আইডেন্টিফায়ার (DOI) নিবন্ধন সংস্থা। এটি পাবলিশার্স ইন্টারন্যাশনাল লিঙ্কিং অ্যাসোসিয়েশন ইনক দ্বারা পরিচালিত হয়। (PILA) এবং অনলাইন একাডেমিক জার্নালে ক্রমাগত ক্রস-প্রকাশক উদ্ধৃতি লিঙ্কিং সক্ষম করার জন্য প্রকাশকদের মধ্যে একটি সহযোগিতামূলক প্রচেষ্টা হিসাবে ২০০০ সালের প্রথম দিকে চালু করা হয়েছিল। আগস্ট ২০২২-এ, ক্রসরেফ তালিকা করে যে ৬০ মিলিয়নেরও বেশি জার্নাল স্টাডিজগুলিকে দেখার এবং পুনঃব্যবহারের জন্য বিনামূল্যে করা হয়েছিল, এবং তারা সূচকে তাদের রেফারেন্স ডেটা যোগ করার জন্য অন্যান্য প্রকাশকদের কাছে সর্বজনীনভাবে একটি চ্যালেঞ্জ তৈরি করেছিল।", - "currency":"ডাকডাকগো, একটি ইন্টারনেট অনুসন্ধান ইঞ্জিন যেটা অনুসন্ধানকারীর ইন্টারনেট গোপনীয়তা এবং ব্যক্তিবিশেষায়িত ফলাফল বর্জনের উপর গুরুত্বারোপ করে। ডাকডাকগো অন্য সার্চ ইঞ্জিনগুলো থেকে নিজেকে স্বকীয় রাখে ব্যবহারকারীদের তথ্য সংগ্রহ না করে এবং একটি নির্দিষ্ট সার্চ টার্মের জন্যে ঢালাওভাবে সমস্ত ব্যবহারকারীর জন্যে একই ফলাফল সরবরাহ করে। এছাড়াও ৪০০ ক্রাউডসোর্স সাইট(যেমন- উইকিপিডিয়া) এবং অন্যান্য সার্চ ইঞ্জিন(যেমন- বিং, ইয়াহু!, ইয়ানডেক্স) থেকে ফলাফল সংগ্রহ করে সবচেয়ে বেশি না বরং সবচেয়ে যৌক্তিক ফলাফল প্রদানের জন্যেও এর খ্যাতি রয়েছে।", - "deviantart":"দেভিয়ান্তর্ট হল একটি আমেরিকান অনলাইন শিল্প সম্প্রদায় যেটিতে শিল্পকর্ম, ভিডিওগ্রাফি এবং ফটোগ্রাফি রয়েছে, যা ৭ আগস্ট ২০০০-এ অ্যাঞ্জেলো দ্বারা চালু হয়েছিল সোটিরা, স্কট জার্কফ এবং ম্যাথিউ স্টিফেনস অন্যদের মধ্যে।", - "ddg definitions":[ - "currency:bn", - "ref" - ], - "wikidata":"উইকিউপাত্ত বা উইকিডাটা উইকিমিডিয়া ফাউন্ডেশন দ্বারা পরিচালিত একটি সমন্বিত সহযোগিতায় সম্পাদিত জ্ঞান ভাণ্ডার। প্রাথমিকভাবে এর উদ্দেশ্য উইকিমিডিয়া প্রকল্প, যেমন উইকিপিডিয়া এবং অন্যান্য পাবলিক ডোমেইন লাইসেন্সের আওতাধীন তথ্যসমূহের জন্য একটি সাধারণ উৎস প্রদান করা। এটি উইকিমিডিয়া কমন্সের অনুরূপ যে কোন উইকিমিডিয়া প্রকল্পে সকল মিডিয়া ফাইল এবং এর ব্যবহারের অনুমতি প্রদান করে।", - "duckduckgo":[ - "currency:bn", - "ref" - ], - "duckduckgo images":[ - "currency:bn", - "ref" - ], - "duckduckgo videos":[ - "currency:bn", - "ref" - ], - "duckduckgo news":[ - "currency:bn", - "ref" - ], - "duckduckgo weather":[ - "currency:bn", - "ref" - ], - "flickr":"ফ্লিকার একটি চিত্র হোস্টিং ও ভিডিও হোস্টিং পরিষেবা ওয়েবসাইট এবং ওয়েব পরিষেবা সমষ্টি যা লুডিকর্প কোম্পানি কর্তৃক ২০০৪ সালে এটি তৈরি করা হয় এবং মার্চ ২০, ২০০৫ সালে ইয়াহু কর্তৃক ক্রয়কৃত। পাশাপাশি ব্যক্তিগত আলোকচিত্র প্রচার এবং সংস্থাপন করার জন্যে ব্যবহারকারীদের নিকট এটি জনপ্রিয় ওয়েবসাইট এবং কার্যকরী অনলাইন সম্প্রদায়, যা ব্লগ ও সামাজিক মাধ্যমে আলোকচিত্র প্রচার এবং সংস্থাপনের জন্য আলোকচিত্র গবেষক ও ব্লগারদের দ্বারা ব্যাপকভাবে ব্যবহৃত হয়।", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub, Inc. এটি একটি ইন্টারনেট হোস্টিং পরিষেবা যা গিট ব্যবহার করে সফ্টওয়্যার উন্নয়ন এবং সংস্করণ নিয়ন্ত্রণ করা হয়। এটি গিট প্লাস অ্যাক্সেস কন্ট্রোল,যা বাগ ট্র্যাকিং, সফ্টওয়্যারের বৈশিষ্ট্য অনুরোধ, টাস্ক ম্যানেজমেন্ট, ক্রমাগত ইন্টিগ্রেশন এবং প্রতিটি প্রকল্পের জন্য উইকির বিতরণ করা সংস্করণ নিয়ন্ত্রণ সরবরাহ করে থাকে। ক্যালিফোর্নিয়ায় সদর দফতরে, এটি ২০১৮ সাল থেকে মাইক্রোসফ্টের একটি সহায়ক প্রতিষ্ঠান।", - "google":"গুগল অনুসন্ধান ওয়েবের বৃহত্তম অনুসন্ধান ইঞ্জিন। গুগলের লক্ষ্য \"বিশ্বের যাবতীয় তথ্য সুবিন্যস্ত করা এবং সেগুলো সর্বসাধারণের জন্য উপযোগী করে প্রকাশ করা।\" এটি সর্ববৃহৎ অনুসন্ধান ইঞ্জিন। গুগল প্রতিদিন তার বিভিন্ন সেবার মাধ্যমে প্রায় ৫.৪ বিলিয়ন বা ৫০০ কোটিরও বেশি অনুসন্ধানের অনুরোধ গ্রহণ করে।", - "google images":[ - "Google ছবি সার্চ৷ ওয়েবে সর্বাধিক বিস্তৃত ছবি সার্চ৷", - "https://images.google.com" - ], - "google news":"গুগল নিউজ, গুগল ইনকর্পোরেটেড দ্বারা উপলব্ধ এবং পরিচালিত একটি নিউজ অ্যাগ্রিগেটর যা হাজার হাজার খবর অথবা নিউজ বিভিন্ন পাবলিকেশনসের থেকে নিয়ে প্রতি মুহূর্তে হালনাগাদ করে একটি নির্দিষ্ট অ্যালগরিদম অনুসারে।", - "google scholar":"গুগল স্কলার একটি মুক্তভাবে প্রবেশযোগ্য ওয়েব অনুসন্ধান ইঞ্জিন যা প্রকাশনা বিন্যাস এবং শাখাসমূহের একটি অ্যারে জুড়ে পাণ্ডিত্যপূর্ণ সাহিত্যের সম্পূর্ণ পাঠ্য বা মেটাডেটা নির্ঘণ্ট তৈরি করে। ২০০৪ সালের নভেম্বরে বিটা সংস্করণ মুক্তির পর, গুগল স্কলার ইনডেক্সে বেশিরভাগ পিয়ার-পর্যালোচিত অনলাইন শিক্ষায়তনিক জার্নাল ও বই, সম্মেলন পত্র, থিসিস ও তত্ত্বালোচনা এবং গবেষণামূলক প্রাকমুদ্রণ, সারাংশ, প্রযুক্তিগত প্রতিবেদন এবং আইনি মতামত ও কৃতিস্বত্ব সহ অন্যান্য পাণ্ডিত্যপূর্ণ সাহিত্যের অন্তর্ভুক্তি রয়েছে। গুগল কর্তৃক গুগল স্কলার ডাটাবেসের আকার প্রকাশ না করলেও, সাইন্টোম্যাট্রিক গবেষকরা অনুমান করেছেন যে জানুয়ারি ২০১৮ অনুযায়ী, এটি নিবন্ধ, উদ্ধৃতি ও কৃতিস্বত্ব সহ প্রায় ৩৮৯ মিলিয়ন নথি সমৃদ্ধ বিশ্বের বৃহত্তম শিক্ষায়তনিক অনুসন্ধান ইঞ্জিন। পূর্বে, মে ২০১৪ সালের হিসাবে এর আকার ছিল আনুমানিক ১৬০ মিলিয়ন। চিহ্নিত করুন ও প্রতিগ্রহণ পদ্ধতি ব্যবহার করে প্লস ওয়ান-এ প্রকাশিত পূর্বের পরিসংখ্যানের প্রাক্কলনটি আনুমানিক ১০০ মিলিয়ন হিসাবে ইন্টারনেটে ইংরেজিতে প্রকাশিত সমস্ত নিবন্ধের প্রায় ৮০-৯০ শতাংশ কভারেজ বিবেচনা করা হয়। এই অনুমানের মাধ্যমে এছাড়াও নির্ধারণ করা হয়েছিল যে ওয়েবে কতগুলি নথি বিনামূল্যে পাওয়া যায়।", - "google play apps":"গুগল প্লে হলো গুগল পরিচালিত এবং উন্নতয়নকৃত একটি ডিজিটাল বিতরণ পরিসেবা। এটি অ্যান্ড্রয়েড অপারেটিং সিস্টেমে চলমান শংসাপত্রপ্রাপ্ত ডিভাইসের অফিসিয়াল অ্যাপ স্টোর হিসেবে কাজ করে, যা ব্যবহারকারীদের অ্যান্ড্রয়েড সফটওয়্যার উন্নয়ন কিট (এসডিকে) দিয়ে তৈরি এবং গুগলের মাধ্যমে প্রকাশিত অ্যাপ্লিকেশনগুলি ব্রাউজ এবং ডাউনলোড করার সুবিধা প্রদান করে। গুগল প্লে একটি ডিজিটাল মিডিয়া স্টোর হিসেবে কাজ করে, যা সঙ্গীত, বই, চলচ্চিত্র এবং টেলিভিশন অনুষ্ঠান সরবরাহ করে। ২০১৫ সালের ১১ মার্চে গুগল স্টোরের চালু হওয়ার আগ পর্যন্ত গুগল হার্ডওয়্যার ডিভাইসগুলি একটি পৃথক অনলাইন হার্ডওয়্যার খুচরা বিক্রেতা হিসেবে সেবা প্রদান করতো। ২০১৮ সালের ১৫ মে গুগল নিউজ চালুর আগ পর্যন্ত সংবাদ প্রকাশনা এবং সাময়িকী সরবরাহ করা হত এবং ২০২০ সালের অক্টোবরের আগ পর্যন্ত এটি সঙ্গীত সরবরাহ করতো যা পরবর্তীতে ইউটিউব মিউজিক হিসেবে প্রতিস্থাপন করা হয়েছিল।", - "google play movies":[ - "google play apps:bn", - "ref" - ], - "hoogle":"হ্যাশকেল হল নন-স্ট্রিকট সিমেনটিকস এবং স্ট্রং স্ট্যাটিক টাইপিংয়ের সুবিধা সংবলিত একটি প্রমিত,বিভিন্ন ধরনের অ্যাপ্লিকেশান নির্মাণের জন্য ব্যবহারোপযোগী, বিশুদ্ধ ফাংশনাল প্রোগ্রামিং ভাষা। নৈয়ায়িক হ্যাশকেল কারি এর নামে এটির নামকরণ করা হয়েছে। হ্যাশকেলের সর্বশেষ প্রকাশিত সংস্করণ হল হ্যাশকেল ২০১০। মে ,২০১৬তে,একদল প্রোগ্রামার হ্যাশকেলের পরবর্তী ভার্সন হ্যাশকেল ২০২০ প্রকাশের জন্য কাজ শুরু করেছে।", - "imdb":"ইন্টারনেট মুভি ডাটাবেজ একটি অনলাইন ভিত্তিক ডাটাবেজ যেখানে চলচ্চিত্র, টেলিভিশন অনুষ্ঠান এবং ভিডিও গেমের, অভিনেতা-অভিনেত্রী, কলাকুশলী, কাল্পনিক চরিত্র, জীবনী, কাহিনী সংক্ষেপ, বিভিন্ন তথ্য এবং পর্যালোচনা সংরক্ষিত আছে। এ সাইটে মুুুভি রেটিংস দেয়া হয় মানুষের দ্বারা। সাইটটি অ্যামাজন ডট কমের অঙ্গসংস্থা আইএমডিবি ডট কম ইনকর্পোরেটেড দ্বারা পরিচালিত।", - "library genesis":"লাইব্রেরি জেনেসিস (লিবজেন) হলো একটি নথি আদান-প্রদান ভিত্তিক ছায়া গ্রন্থাগার ওয়েবসাইট যা শিক্ষায়তনিক সাময়িকীর নিবন্ধ, শিক্ষায়তনিক ও সাধারণ আগ্রহের বই, ছবি, কমিক, অডিওবই এবং ম্যাগাজিনের জন্য নিবেদিত। সাইটটি এগুলো বিনামূল্যে পেতে সহায়তা করে যা অন্যথায় ক্রয়-দেয়াল বা অন্য কোথাও ডিজিটাইজ করা হয়নি এমন অবস্থায় বিদ্যমান। লিবজেন নিজেকে \"লিঙ্ক সংগ্রাহক\" হিসাবে বর্ণনা করে, \"সর্বজনীনভাবে উপলব্ধ পাবলিক ইন্টারনেট রিসোর্স থেকে সংগ্রহ করা\" আইটেমগুলির একটি অনুসন্ধানযোগ্য ডাটাবেস এবং সেইসাথে \"ব্যবহারকারীদের থেকে\" আপলোড করা নথিগুলো প্রদান করে।", - "library of congress":"লাইব্রেরি অব কংগ্রেস (এলসি) আনুষ্ঠানিকভাবে মার্কিন যুক্তরাষ্ট্রের কংগ্রেসকে পরিষেবা পরিবেশনকারী গবেষণা গ্রন্থাগার এবং এটি কার্যত যুক্তরাষ্ট্রের জাতীয় গ্রন্থাগার। এটি যুক্তরাষ্ট্রের প্রাচীনতম যুক্তরাষ্ট্রীয় সাংস্কৃতিক প্রতিষ্ঠান। গ্রন্থাগারটি ওয়াশিংটন ডিসি-এর ক্যাপিটল হিলের তিনটি ভবনে স্থাপিত হয়েছে; এটি ভার্জিনিয়ার কুল্প্পারে একটি সংরক্ষণ কেন্দ্রও বজায় রাখে। গ্রন্থাগারের কার্যকলাপসমূহ কংগ্রেসের গ্রন্থাগারিক দ্বারা তদারকি করা হয় এবং এর ভবনসমূহ আর্চিটেক্ট অব দ্য ক্যাপিটল দ্বারা পরিচালিত হয়। লাইব্রেরি অব কংগ্রেস বিশ্বের বৃহত্তম গ্রন্থাগারসমূহের মধ্যে একটি। এর \"সংগ্রহগুলি সর্বজনীন, বিষয়, বিন্যাস বা জাতীয় সীমানা দ্বারা সীমাবদ্ধ নয় এবং গ্রন্থাগারটি বিশ্বের সমস্ত অঞ্চল থেকে ও ৪৫০ টিরও বেশি ভাষায় গবেষণা উপকরণ অন্তর্ভুক্ত করে।\"", - "npm":"এনপিএম জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষার জন্য একটি প্যাকেজ ম্যানেজার । এটি জাভাস্ক্রিপ্ট রানটাইম এনভায়রনমেন্ট নোড.জেএস এর ডিফল্ট প্যাকেজ ম্যানেজার, এটি কমান্ড লাইন ক্লায়েন্ট গঠিত, যাকে এনপিএম বলা হয়। এটি সাধারনত একটি পাবলিক অনলাইন ডাটাবেস এবং অর্থ প্রদান সাপেক্ষে এটি প্রাইভেট প্যাকেজের সুযোগ দিয়ে থাকে, যাকে এনপিএম রেজিস্ট্রি বলা হয়। রেজিস্ট্রি ক্লায়েন্টের মাধ্যমে অ্যাক্সেস করা যায় এবং উপলভ্য প্যাকেজগুলি এনএমপি ওয়েবসাইটের মাধ্যমে ব্রাউজ এবং অনুসন্ধান করা যায়। প্যাকেজ ম্যানেজার এবং রেজিস্ট্রি এনপিএম, ইনক দ্বারা পরিচালিত হয়।", - "openstreetmap":"ওপেনস্ট্রিটম্যাপ (ওএসএম) হল মুক্ত লাইসেন্সে বিশ্বের সম্পাদনাযোগ্য মানচিত্র তৈরির একটি প্রকল্প। যুক্তরাজ্যে স্টিভ কস্ট ২০০৪ সালে প্রকল্পটি শুরু করেন। ইন্টারনেটের মাধ্যমে অবদানকারীদের অবদানে ওপেনস্ট্রিটম্যাপ সমৃদ্ধ হচ্ছে। মানচিত্রটির উপাত্ত ওপেন ডেটাবেস লাইসেন্সে প্রকাশিত। প্রকল্পটি ইংল্যান্ড ও ওয়েলস-এ নিবন্ধিত একটি অলাভজনক সংস্থা ওপেনস্ট্রীটম্যাপ ফাউন্ডেশন কর্তৃক পরিচালিত হয়।", - "pinterest":"পিন্টারেস্ট একটি ওয়েব এবং মোবাইল অ্যাপ্লিকেশন কোম্পানি, যা ফটো শেয়ারিং ওয়েবসাইট হিসেবে কাজ করে থাকে। এটি ব্যবহারের জন্য নিবন্ধন করার প্রয়োজন পড়ে। সাইটটি পল শিয়ারা, ইভান শার্প এবং বেন সিলবারমান কর্তৃক প্রতিষ্ঠিত। এটি ব্যবসায়ী ও উদ্যোক্তাদের মধ্যে একটি ক্ষুদ্র দলের অর্থায়নে কোল্ড ব্রিউ ল্যাবস কর্তৃক পরিচালিত।", - "piratebay":"দি পাইরেট বে অনলাইন বিনোদন এবং সফটওয়্যারের টরেন্ট সাইট । ২০০৩ সালে সুইডিশ থিংক ট্যাঙ্ক পাইরাটবায়রান প্রতিষ্ঠিত, পাইরেট বে দর্শকদের বিনোদন এবং সফটওয়্যারের ম্যাগনেট লিঙ্কগুলি এবং টরেন্ট ফাইলগুলি অনুসন্ধান করতে, ডাউনলোড করতে এবং লিঙ্ক দ্বারা অবদান রাখতে সহায়তা করে, যা বিটটোরেন্ট বা ইউটরেন্ট প্রোটোকলের ব্যবহারকারীদের মধ্যে পিয়ার-টু-পিয়ার ফাইল শেয়ার করার সুযোগ করে দিয়েছে।", - "reddit":"রেডিট একটি আমেরিকান সামাজিক সংবাদ সমষ্টি, বিষয়বস্তুর গুণগত মান নির্ণয় এবং আলোচনার ওয়েবসাইট। নিবন্ধিত ব্যবহারকারীরা ওয়েবসাইটে বিষয়বস্তু জমা দেয় যেমন সংযোগ, লিখিত পোস্ট, ছবি এবং ভিডিও, যার উপরে অন্য সদস্যরা ভোট প্রদান করে। পোস্টগুলি বিষয় অনুসারে ব্যবহারকারী দ্বারা তৈরি করা বোর্ডগুলিতে আয়োজিত থাকে যাদেরকে \"সম্প্রদায়\" বা \"সাবরেডিটস\" বলা হয়। যেসব পোস্টে অধিক আপভোট পড়ে তারা সাবরেডিটের শীর্ষে প্রদর্শিত হয় এবং যদি তারা পর্যাপ্ত আপভোট পায় তাহলে শেষ পর্যন্ত সাইটের প্রথম পৃষ্ঠায় চলে আসে। রেডিট প্রশাসকরা সম্প্রদায়গুলিকে নিয়ন্ত্রণ করে। রক্ষণাবেক্ষণের কাজ সম্প্রদায়-নির্দিষ্ট মডারেটরদের দ্বারাও পরিচালিত হয়, যারা রেডিট কর্মচারী নন।", - "soundcloud":"সাউন্ডক্লাউড হল জার্মানির রাজধানী বার্লিন-এ স্থাপিত একটি অনলাইন অডিও বণ্টন ভিত্তিক প্রচারের মাধ্যম, যেটি ব্যবহারকারীকে তার নিজেস্ব তৈরীকৃত শব্দ বা সঙ্গীত আপলোড, রেকর্ড, এর উন্নীতকরণ এবং সবার উদ্দেশ্যে তা প্রচারের অধিকার প্রদান করে।", - "semantic scholar":"সিম্যান্টিক স্কলার হলো কৃত্রিম বুদ্ধিমত্তা-চালিত গবেষণার সরঞ্জাম। \"অ্যালেন ইনস্টিটিউট ফর এআই\" সাহিত্যের বৈজ্ঞানিক গবেষণার জন্য এটি তৈরি করেছে। ২০১৫ সালের নভেম্বরে এটি সর্বজনীনভাবে প্রকাশিত হয়। এটি পাণ্ডিত্যপূর্ণ কাগজপত্রের সারাংশ প্রদানের জন্য স্বাভাবিক ভাষা প্রক্রিয়াকরণে অগ্রগতি ব্যবহার করে। সিম্যান্টিক স্কলার টিম সক্রিয়ভাবে স্বাভাবিক ভাষা প্রক্রিয়াজাতকরণ, যন্ত্রীয় শিখন, মানব-কম্পিউটার মিথস্ক্রিয়া এবং তথ্য পুনরুদ্ধারে কৃত্রিম-বুদ্ধিমত্তার ব্যবহার নিয়ে গবেষণা করছে।", - "startpage":"স্টার্টপেজ হল গোপনীয়তা নির্ভর সার্চ ইঞ্জিন। এটি আগে মেটাসার্চ এবং আইএক্সকুইক নামে ভিন্ন দুটি সার্চ ইঞ্জিন ছিল। ২০১৬ সালে দুটি কোম্পানি একীভূত হয়। পূর্বে এটি আইএক্স কুইক অনুসন্ধান ইঞ্জিন নামে পরিচিত ছিলো।", - "youtube":"ইউটিউব হলো সান ব্রুনো, ক্যালিফোর্নিয়া ভিত্তিক একটি বৈশ্বিক অনলাইন ভিডিও প্ল্যাটফর্ম সেবার সাইট এবং সামাজিক যোগাযোগ মাধ্যম, যা ২০০৫ সালের ফেব্রুয়ারিতে প্রকাশিত হয়। ইউটিউব বর্তমানে গুরুত্বপূর্ণ একটি প্ল্যাটফর্ম। ২০০৬ সালের অক্টোবরে, গুগল সাইটটিকে ১.৬৫ বিলিয়ন মার্কিন ডলারের বিনিময়ে ক্রয় করে নেয়। ইউটিউব বর্তমানে গুগলের অন্যতম অধীনস্থ প্রতিষ্ঠান হিসেবে পরিচালিত হচ্ছে।", - "wikibooks":"উইকিবই হল উইকি-ভিত্তিক পরিবারের একটি উইকিমিডিয়া প্রকল্প যা মিডিয়াউইকি সফটওয়্যারের মাধ্যমে চালিত এবং উইকিমিডিয়া ফাউন্ডেশন কর্তৃক হোস্টকৃত। এটি একটি প্রকল্প, যেখানে বিভিন্ন প্রকার পাঠ্যপুস্তক পঠনযোগ্য আকারে সংরক্ষণ করা হয়।", - "wikinews":"উইকিনিউজ বা উইকিসংবাদ হল উইকি মুক্ত বিষয়বস্তুর আলোকে পরিচালিত সংবাদ বিষয়ক ওয়েবসাইট এবং উইকিমিডিয়া ফাউন্ডেশনের একটি প্রকল্প যা বিশ্বব্যাপী সহযোগিতামুলক সাংবাদিকতার মাধ্যমে কাজ করে থাকে। উইকিপিডিয়ার সহ-প্রতিষ্ঠাতা জিমি ওয়েলস উইকিপিডিয়া থেকে উইকিসংবাদ আলাদা করার প্রসঙ্গে বলেন, \"উইকিসংবাদে, প্রতিটি গল্প বিশ্বকোষীয় নিবন্ধ থেকে ভিন্ন আঙ্গিকে মুলতঃ একটি সংবাদ হিসেবে লেখা হবে।\" উইকিসংবাদ নিরপেক্ষ দৃষ্টিভঙ্গি নীতি অনুসরণের মাধ্যমে সাংবাদিকতায় বস্তুনিষ্ঠতার ধারণা প্রতিষ্ঠা করে যা অন্যান্য নাগরিক সাংবাদিকতা চর্চার ওয়েবসাইট যেমন, ইন্ডেমিডিয়া ও ওহমাইনিউজ থেকে ভিন্নতর।", - "wikiquote":"উইকিউক্তি উইকি-ভিত্তিক পরিবারের একটি প্রকল্প যা মিডিয়াউইকি সফটওয়্যারের মাধ্যমে চালিত এবং উইকিমিডিয়া ফাউন্ডেশন কর্তৃক পরিচালিত। এটি ড্যানিয়েল অ্যালস্টনের ধারণার উপর ভিত্তি করে এবং ব্রিয়ন ভিবের কর্তৃক বাস্তবায়িত। উইকিউক্তি পাতাসমূহ উইকিপিডিয়ার উল্লেখযোগ্য ব্যক্তিত্ব সম্পর্কে নিবন্ধে ক্রস-সংযুক্ত করা হয়।", - "wikisource":"উইকিসংকলন একটি উইকিমিডিয়া প্রকল্প যার উদ্দেশ্য লেখার ভাণ্ডার বা সংকলন তৈরি করা, যাতে যেকোন ভাষার অনুবাদ এবং অন্যান্য সম্পর্কিত বিষয়াদি থাকবে।", - "wikispecies":"উইকিপ্রজাতি একটি উইকি-ভিত্তিক অনলাইন প্রকল্প যা উইকিমিডিয়া ফাউন্ডেশন দ্বারা সমর্থিত। এটি একটি প্রজাতির উন্মুক্ত ডাইরেক্টরি। এর উদ্দেশ্য হ'ল সমস্ত প্রজাতির একটি বিস্তৃত তালিকা তৈরি করা; প্রকল্পটি সাধারণ জনগণের চেয়ে বিজ্ঞানীদের দিকে পরিচালিত। জিমি ওয়েলস বলেছিলেন যে সম্পাদকদের তাদের ডিগ্রি ফ্যাক্স করার প্রয়োজন নেই, তবে সেই উপস্থাপনগুলিকে প্রযুক্তিগত শ্রোতার সাথে মাস্টার পাস করতে হবে উইকিপ্রজাতি, জিএনইউ ফ্রি ডকুমেন্টেশন লাইসেন্স আছে এবং সিসি বি-ওয়াই-এসএ ৩.০ এর অধীনে উপলব্ধ।", - "wiktionary":"উইকিঅভিধান বা উইকশনারি উন্মুক্ত অভিধান তৈরির একটি বহুভাষিক, ওয়েব-ভিত্তিক প্রকল্প, যা ১৫১ টি ভাষায় রয়েছে। অন্যান্য আদর্শ অভিধানের মত করে এটি করা হয়নি, এটি করা হয়েছে স্বেচ্ছাসেবকদের সহযোগীতায় উইকি সফটওয়্যার ব্যবহার করে, যেখানে ইন্টারনেটে এ ওয়েব সাইট ব্যবহার করে এমন প্রায় সবাইকে তা পরিবর্তন করার সুযোগ করে দেয়। এর সহপ্রকল্প উইকিপিডিয়ার মত উইকিঅভিধানও উইকিমিডিয়া ফাউন্ডেশন দ্বারা পরিচালিত হয়।", - "wikiversity":"উইকিবিশ্ববিদ্যালয় হল উইকিমিডিয়া ফাউন্ডেশনের একটি প্রকল্প যা শিক্ষার সম্প্রদায়, তাদের শিক্ষার উপকরণ এবং ফলস্বরূপ ক্রিয়াকলাপকে সমর্থন করে। এটি উইকিপিডিয়া থেকে আলাদা যে এটি একটি এনসাইক্লোপিডিয়ার পরিবর্তে শিক্ষার উত্সাহের জন্য টিউটোরিয়াল এবং অন্যান্য উপকরণ সরবরাহ করে; উইকিপিডিয়ার মতো, এটি অনেক ভাষায় পাওয়া যায়।", - "wikivoyage":"উইকিভ্রমণ হল স্বেচ্ছাসেবক লেখকদের দ্বারা লিখিত ভ্রমণের গন্তব্য ও বিষয়গুলোর জন্য একটি বিনামূল্যের ওয়েবভিত্তিক ভ্রমণ নির্দেশিকা। এটি উইকিপিডিয়ার একটি সহপ্রকল্প এবং অলাভজনক উইকিমিডিয়া ফাউন্ডেশন দ্বারা সমর্থিত ও হোস্ট করা হয়। উইকিভ্রমণকে \"ভ্রমণ নির্দেশনার উইকিপিডিয়া\" বলা হয়েছে।", - "wikicommons.images":"উইকিমিডিয়া কমন্স হলো ছবি, শব্দ, ভিডিও ও অন্যান্য মিডিয়ার একটি উন্মুক্ত মিডিয়া ভাণ্ডার যা বিনামূল্যে ব্যবহারযোগ্য। এটি উইকিমিডিয়া ফাউন্ডেশনের একটি প্রকল্প।", - "1337x":"১৩৩৭এক্স হল একটি ওয়েবসাইট যা বিটটরেন্ট প্রোটোকলের মাধ্যমে পিয়ার-টু-পিয়ার ফাইল আদান প্রদানের জন্য ব্যবহৃত টরেন্ট ফাইল এবং ম্যাগনেট লিঙ্কগুলির একটি ডিরেক্টরি প্রদান করে। টরেন্টফ্রিক নিউজ ব্লগ অনুসারে, ১৩৩৭এক্স ২০২১ সালের হিসাবে তৃতীয় সর্বাধিক জনপ্রিয় টরেন্ট ওয়েবসাইট।", - "naver":"নেইভার একটি দক্ষিণ কোরীয় ইন্টারনেট ভিত্তিমঞ্চ। কোরিয়ার নেইভার কর্পোরেশন এটির পরিচালক। ১৯৯৯ সালে দক্ষিণ কোরিয়ার স্ব-উদ্ভাবিত অনুসন্ধান ইঞ্জিন ব্যবহারকারী প্রথম আন্তর্জাল প্রবেশদ্বার হিসেবে এটি যাত্রা শুরু করে। এটি ছিল বিশ্বের প্রথম পূর্ণাঙ্গ অনুসন্ধান সুবিধা প্রদানকারী ওয়েবসাইট, যেখানে বিভিন্ন শ্রেণীর অনুসন্ধান ফলাফল সংকলিত একটিমাত্র ফলাফল পাতায় সেগুলিকে প্রকাশ করা হত। এরপর নেইভার আরও বেশ কিছু নতুন সেবা যোগ করেছে, যাদের মধ্যে বৈদ্যুতিন ডাক (ই-মেইল) ও সংবাদের মতো প্রাথমিক সুবিধাগুলি থেকে শুরু করে বিশ্বের প্রথম ইন্টারনেটভিত্তিক প্রশ্নোত্তর ভিত্তিমঞ্চ \"নলেজ ইন\" অন্তর্ভুক্ত।", - "wttr.in":[ - "আবহাওয়া সঙ্ক্রান্ত তথ্য Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"ব্রেভ ক্রোমিয়াম ওয়েব ব্রাউজার ভিত্তিক একটি ফ্রি ও ওপেন সোর্স ওয়েব ব্রাউজার। ব্রাউজারটি বিজ্ঞাপন ও ওয়েবসাইট ট্র্যাকার ব্লক করে। কোম্পানিটি ব্রাউজারটির ভবিষ্যৎ সংস্করণে ব্যবহারের জন্য অর্থ ব্যবসায় মডেল পরিগ্রহণের প্রস্তাব দিয়েছে।", - "brave.images":[ - "brave:bn", - "ref" - ], - "brave.videos":[ - "brave:bn", - "ref" - ], - "brave.news":[ - "brave:bn", - "ref" - ] - }, - "bo":{ - "wikipedia":"ཆམ་ཚང་པདྨ་ལྷུན་གྲུབ་ཀྱི་ལོ་རྒྱུས་སྙིང་བསྡུས། ཆམ་ཚང་པདྨ་ལྷུན་གྲུབ", - "fdroid":[ - "ཨེཕ་རོཌ་ནི་འགྲིག་བཅུག་བྱེད་ཐུབ་པའི་ ཕོས་(རིན་མེད་དང་ཕྱི་གསལ་ནང་གསལ་གྱི་ཨང་རྟགས་མཉེན་ཆས་) དང་ཨེན་ཀྲོཌ་བབས་སྟེགས་ཆེད་དུ་བཟོས་པའི་མཉེན་ཆས་ཤིག་རེད། མཉེན་ཆས་འདིས་ཁྱེད་རང་གི་ཡོ་བྱད་སྒང་ལ་ལྟ་བ་དང་། འགྲིག་བཅུག གསར་བསྒྱུར་བྱེད་དགོས་པ་རྣམས་རྗེས་དེད་གཏོང་བ་སོགས་དཀའ་ཚེགས་མེད་པའི་ཐོག་ནས་བྱེད་ཐུབ།", - "https://f-droid.org/" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "youtube":"ཡུ་ཊོབ་(YouTube)ནི་ཨ་རིའི་དྲ་ཚིགས་ཤིག་ཡིན་པ་དང་མིག་སྔར་གོ་ལ་ཧྲིལ་པོའི་བརྙན་ལམ་བཙལ་འཚོལ་དང་མཉམ་སྤྱོད་སྟེགས་བུ་ཆེ་ཤོས་དེ་རེད། བཀོལ་མཁན་གྱིས་ཡུ་ཊོབ་ཐོག་ནས་བརྙན་ལམ་ཁྱབ་བསྒྲགས་དང་མཉམ་སྤྱོད་བྱེད་ཆོག ཀུང་སི་ནི་༢༠༠༥ལོའི་ཟླ་༢པའི་ཚེས་༡༤ཉིན་བཙུགས་པ་རེད།" - }, - "ca":{ - "annas archive":"L'Arxiu de l'Anna és un metacercador de biblioteca a l'ombra sense ànim de lucre que ofereix accés a una varietat de recursos sobre llibres, creats per un equip d'arxivers anònims .), i es va llançar en resposta directa als esforços de les autoritats, amb l'assistència legal de l'Associació d'Editors i el Gremi d'Autors, per tancar el lloc web de la Z-Library el novembre de 2022.", - "apple app store":"L'Apple App Store és una plataforma d'aplicacions de distribució digital per iOS desenvolupat i mantingut per Apple Inc El servei permet als usuaris navegar i descarregar aplicacions des de la botiga iTunes Store que s'han desenvolupat amb l'SDK de iOS publicada per Apple Inc", - "artic":"L'Institut d'Art de Chicago, oficialment i en anglès Art Institute of Chicago és un museu i escola d'art situat a Grant Park, al voltant de la costa del llac Michigan a la ciutat de Chicago. És un dels museus d'art més importants del món i segurament es compta entre els tres principals dels Estats Units, juntament amb el Metropolitan Museum de Nova York i el Museu de Belles Arts de Boston. Va ser fundat en 1879, sent George Armour el seu primer president. El 1893 el museu es va traslladar a un edifici d'estil renaixentista dissenyat per l'estudi d'arquitectura de Boston de Shepley, Rutan i Coolidge. L'edifici va ser construït inicialment per a l'World Columbian Exposition de 1893.", - "arxiv":"arΧiv és un repositori de prepublicacions d'articles científics en format digital en els camps de les matemàtiques, física, informàtica i biologia que poden ser obtinguts lliurement a través d'Internet. En molts de camps de les matemàtiques i la física, gairebé tots els articles científics es poden trobar a arXiv. L'octubre del 2008, arXiv.org ultrapassà el mig milió de publicacions electròniques, amb uns 5.000 articles nous afegits cada mes.", - "bandcamp":"Bandcamp és una botiga online de música i una plataforma de promoció per a artistes independents nascuda el setembre de 2008, que va guanyar atenció el juliol de 2010 quan Amanda Palmer va decidir deixar de banda les discogràfiques per començar a vendre discos a través de Bandcamp i promocionant-se amb Twitter.", - "wikipedia":"La Viquipèdia és una enciclopèdia lliure mantinguda per la Fundació Wikimedia, una organització sense ànim de lucre. Va ser creada el gener del 2001 per Jimmy Wales i Larry Sanger, i actualment és l'obra de referència més gran i popular a Internet. Els seus articles han estat escrits col·laborativament per usuaris d'arreu del món, i la majoria poden ser editats per qualsevol persona que pugui accedir a la web.", - "bilibili":"Bilibili, és un lloc web xinés d'allotjament de vídeos amb seu a Xangai. Cobreix la temàtica d'animació, còmics i jocs (ACG), on els usuaris poden enviar, vore i afegir comentaris superposats als vídeos. Bilibili utilitza Adobe Flash o HTML5 per a reproduir els vídeos enviats per l'usuari i allotjats per ell mateix o per fonts de tercers, amb un sistema de comentaris de desplaçament danmu. Des de mitjans de la dècada del 2010, Bilibili va començar a expandir-se a un públic més ampli des del seu nínxol de mercat original centrat en l'animació i els jocs, i s'ha convertit en una de les principals plataformes de transmissió de vídeo baix demanda de la Xina, programant reeixits documentals, espectacles de varietats i altres programes originals.", - "bing":"Microsoft Bing és un motor de cerca de Microsoft. El servei té els seus orígens en els anteriors motors de cerca de Microsoft: MSN Search, Windows Live Search i Live Search. Bing ofereix una varietat de serveis, entre els quals es troba la cerca de webs, vídeos, imatges i mapes interactius. Empra el llenguatge de programació ASP.NET i segueix els principis de disseny Modern UI.", - "bing images":[ - "bing:ca", - "ref" - ], - "bing news":[ - "Les notícies de fonts mundials, nacionals i locals, organitzades per donar-vos una cobertura informativa a fons sobre esports, entreteniment, economia, política, el temps i molt més.", - "https://www.bing.com/news" - ], - "bing videos":[ - "La cerca intel·ligent del Bing t'ajuda a trobar el que cerques més ràpidament i et recompensa.", - "https://www.bing.com/videos" - ], - "crossref":"Crossref és una agència que publica un registre d'objectes digitals (DOI) de la fundació Internacional DOI Foundation. L'agència Crossref està dirigida per l'associació d'editorials Publishers International Linking Association (PILA). És una iniciativa cooperativa sense ànim de llucre, llançada a principi de l'any 2000. Ha de permettre als editors de crear un enllaç permanent de les citacions entre les revistes científiques en línia.", - "currency":"DuckDuckGo (DDG) és un motor de cerca que posa l'èmfasi en la protecció de la privacitat. Se'l sol presentar com a l'alternativa a Google Search. L'empresa té la seu a Paoli, Pennsilvània (EUA), i té 20 treballadors. Els servidors eren allotjats inicialment al soterrani de Gabriel Weinberg, el fundador, i ara estan allotjats per Amazon.", - "deviantart":"DeviantArt és una comunitat en línia. El lloc web va ser llançat el 7 d'agost de 2000 per Angelo Sotira, Scott Jarkoff, Matthew Stephens i altres. S'organitza en: art digital, art tradicional, fotografia, objectes manufacturats, cinema i animació, històries breus, Flash, disseny i icones, customització, còmics i dibuixos animats, manga i anime, fan art, projectes de la comunitat i esbossos.", - "ddg definitions":[ - "currency:ca", - "ref" - ], - "wikidata":"Wikidata és una base de dades editada de manera col·laborativa, part de la Fundació Wikimedia, amb l'objectiu de proporcionar una font comuna per a certs tipus de dades, com dates de naixement, que poden ser usats per projectes Wikimedia com Viquipèdia. Això és similar a la manera com Wikimedia Commons proporciona emmagatzematge per a fitxers multimèdia i accés a aquests fitxers en tots els projectes Wikimedia.", - "duckduckgo":[ - "currency:ca", - "ref" - ], - "duckduckgo images":[ - "currency:ca", - "ref" - ], - "duckduckgo videos":[ - "currency:ca", - "ref" - ], - "duckduckgo news":[ - "currency:ca", - "ref" - ], - "duckduckgo weather":[ - "currency:ca", - "ref" - ], - "apple maps":"Apple Maps és un servei de mapes proporcionat per Apple Inc als dispositius amb iOS, incloent l'iPhone i l'iPad. Va ser introduït al setembre de 2012 en tots els dispositius nous i amb totes les actualitzacions del sistema com a reemplaçament del Google Maps.", - "emojipedia":"Emojipedia és un lloc web de referència d'⁣emojis que documenta el significat i l'ús comú dels caràcters emoji a l'⁣estàndard Unicode. Més comunament descrit com una enciclopèdia d'emojis o diccionari d'emojis, Emojipedia també publica articles i proporciona eines per fer el seguiment de nous caràcters emoji, canvis de disseny i tendències d'ús. És propietat de Zedge des del 2021.", - "etymonline":"L'Online Etymology Dictionary és un diccionari en línia en el qual es descriu l'etimologia de les paraules en llengua anglesa. El seu acrònim, OED, coincideix amb l'acrònim que s'empra sovint per referir-se a l'Oxford English Dictionary. Douglas Harper va crear el diccionari etimològic per guardar així la història i evolució de més de 30.000 paraules, incloent-hi argot i llenguatge tècnic. L'Online Etymology Dictionary ha estat referenciat per la biblioteca de la Universitat d'Ohio com una font d'informació etimològica rellevant i fou citat al Chicago Tribune com \"una de les millors fonts per trobar la paraula justa\". També és citat en nombrosos articles com a font per explicar la història i evolució de les paraules.", - "fdroid":"F-Droid és un repositori de programari per al sistema operatiu Android, similar a la Google Play Store. El repositori principal, allotjat pel projecte, només conté aplicacions de programari lliure. Les aplicacions es poden explorar i instal·lar des del lloc web de F-Droid o l'aplicació del client sense necessitat de crear un compte. Les \"anti-característiques\" com ara la publicitat, el seguiment de l'usuari o la dependència del programari no lliure es marquen a les descripcions de l'aplicació. El lloc web també ofereix el codi font de les aplicacions que allotja, així com del programari que executa el servidor F-Droid, permetent que qualsevol pugui configurar el seu propi dipòsit d'aplicacions.", - "flickr":"Flickr és un lloc web gratuït que funciona com a xarxa social, i que permet emmagatzemar, ordenar, buscar, vendre i compartir fotografies i vídeos en línia. Va ser desenvolupat per Ludicorp el 2004, una empresa fundada el 2002 a Vancouver (Canadà). El març del 2005, Flickr i Ludicorp foren comprades per Yahoo! Actualment Flickr compta amb una important comunitat d'usuaris que comparteix fotografies i vídeos de creació pròpia.", - "free software directory":[ - "directori de programari lliure de la Free Software Foundation", - "wikidata" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab és una plataforma per a la col·laboració en la programació de codi obert que utilitza el sistema de control de versions Git. El 2011 Dmitriy Zaporozhets el va desenvolupar. El 2017 va patir un problema de recuperació d'emergència.", - "github":"GitHub és un servei de hosting de repositoris Git, el qual ofereix tota la funcionalitat de Git de control de revisió distribuït i administració de codi de la font (SCM) així com afegint les seves característiques pròpies. A diferència de Git, el qual és estrictament una eina de línia d'ordres, GitHub proporciona una interfície gràfica basada en web i escriptori així com integració del mòbil. També proporciona control d'accés i diverses característiques de col·laboració com bug tracking, administració de tasques, i wikis per cada projecte.", - "google":"El Cercador Google és un cercador web desenvolupat per Google. És el motor de cerca més utilitzat a la World Wide Web a totes les plataformes, amb un 92,62% de quota de mercat a juny de 2019, i processant més de 5.400 milions de cerques cada dia.", - "google images":"Google Imatges és una especialització del cercador principal, Google Search, per imatges. El seu mecanisme de recuperació consisteix en una consulta amb text i una funció d'ordenament segons la retroalimentació aportada pels usuaris al clicar els resultats i a partir d'aquestes imatges associar-les a la consulta textual i recuperar en la següent iteració calculant la distància entre la imatge seleccionada per l'usuari i les imatges contingudes en la base de dades. Permet filtrar resultats per mida, formats, per coloració, per color i per últim, per imatges similars.", - "google news":"Google News és un agregador i cercador de notícies automatitzat que rastreja de forma constant la informació dels principals mitjans de comunicació en línia. També rep el nom de Google Notícies, malgrat que tant la llengua catalana i tots els mitjans existents en català hi són omesos de la interfície d'usuari i del motor de cerca.", - "google videos":"Google Video és un servei de Google que permet cercar i veure vídeos des del navegador web. Va néixer per a competir amb YouTube, per això inicialment també s'hi podien pujar vídeos, però la compra de Google d'aquest servei, el 10 d'octubre de 2006, ha fet que es suprimís.", - "google scholar":"Google Acadèmic és un motor de cerca de Google que indexa el text complet o les metadades de literatura científico-acadèmica de gran quantitat de formats i disciplines. Entre els resultats que ofereix podem trobar citacions, enllaços a llibres, articles de revistes científiques, comunicacions i ponències a congressos, informes científico-tècnics, tesis i dissertacions, resums, informes tècnics i altra literatura acadèmica, incloent-hi patents. Google no publica el gruix de la base de dades de Google Acadèmic, i s'ha calculat que aquesta contenia vora 160 milions de documents el maig 2014.", - "google play apps":"Google Play és una plataforma de distribució digital d'aplicacions mòbils per als dispositius amb sistema operatiu Android, així com una botiga en línia desenvolupada i operada per Google LLC. Aquesta plataforma permet als usuaris navegar i descarregar aplicacions, jocs, música, llibres i pel·lícules.", - "google play movies":[ - "google play apps:ca", - "ref" - ], - "hoogle":"Haskell és un llenguatge de programació funcional estandarditzat de semàntica no estricta i avaluació tardana de les expressions en el moment que se'n demana el valor i pren el nom del matemàtic Haskell Curry.", - "imdb":"La IMDb, Internet Movie Database és una base de dades en línia amb informació sobre actors, pel·lícules, programes de televisió i videojocs. Fundada el 17 d'octubre de 1990, és propietat d'Amazon des de 1998. Inclou ressenyes, votacions populars i comentaris dels usuaris, per tal d'orientar els gustos cinèfils dels visitants o recopilar dades sobre el món audiovisual.", - "imgur":"Imgur és un servei d'allotjament d'imatges en línia fundada per Alan Schaaf el 2009 a Ohio, Estats Units, qui la va crear com a regal per a la comunitat en línia Reddit. Imgur actualment és de les majors webs de contingut d'imatges a internet, comissariada en temps real per una comunitat d'usuaris través de comentaris i vots. Ofereix allotjament gratuït d'imatges a milions d'usuaris cada dia. comunitat social basada en votacions dels comentaris i imatges. Les millors imatges són millor puntuades de manera que apareixen a la pàgina principal.", - "library genesis":"Library Genesis o LibGen és un motor de cerca que permet el lliure accés a continguts que, d'altra manera, són de pagament o no digitalitzats en altres llocs, generalment articles científics o llibres acadèmics, i en menor proporció de ficció. Posseeix contingut lliure en formats PDF, EPUB, MOBI, DJVU, etc. accessible en portals de nombroses editorials acadèmiques com Oxford University Press, Cambridge University Press, ScienceDirect d'Elsevier, Springer, etc.", - "library of congress":"La Biblioteca del Congrés dels Estats Units, situada a Washington DC, és la biblioteca nacional del país i arxiu administratiu del Congrés. Va ser fundada pel president John Adams el 24 d'abril de l'any 1800, al mateix temps que es traslladava la seu del govern des de Filadèlfia a Washington, i es troba distribuïda en tres edificis: l'Edifici Thomas Jefferson, l'Edifici John Adams i l'Edifici James Madison. És una de les biblioteques més grans del món amb més de 138 milions de documents, dels quals més de deu milions són en llengua catalana.", - "mastodon users":"Mastodon és un servei de xarxa social lliure i descentralitzada de microblogging, similar a Twitter, creat l'octubre de 2016 sota el domini principal mastodon.social.", - "mastodon hashtags":[ - "mastodon users:ca", - "ref" - ], - "metacpan":"CPAN és l'acrònim de Comprehensive Perl Archive Network. És un enorme arxiu de programari escrit en Perl, així com de documentació sobre el mateix. Té presència en la Web a través del seu lloc www.cpan.org i els seus 267 rèpliques distribuïdes arreu del món.", - "openstreetmap":"OpenStreetMap és un projecte col·laboratiu per crear mapes de contingut lliure usant dades obtingudes mitjançant dispositius GPS mòbils, ortofotografies i altres fonts de dades. Les dades dels mapes (coordenades) i les imatges obtingudes amb elles es lliuren sota la llicència Open Database License.", - "pinterest":"Pinterest és una xarxa social que permet trobar, filtrar, organitzar i compartir imatges i vídeos que hi ha a Internet. Els usuaris poden crear i organitzar per temes col·leccions d'imatges, esdeveniments, interessos, aficions, etc. Tots aquests continguts es distribueixen en forma del que s'anomenen pinboards, que visualment són com taulers d'anuncis. D'aquesta manera, Pinterest és una plataforma molt visual que et permet recopilar en un mateix espai tots els teus interessos. A més a més, els usuaris poden seguir pinboards d'altres persones que comparteixin els mateixos gustos per tal de buscar inspiració i descobrir coses noves del seu camp d'interès. L'objectiu principal de Pinterest és unir a persones de tot el món a través d'aquelles coses que troben interessants. El mateix nom ho diu: Pinterest = Pin + interest, “enganxa els teus interessos”.", - "piratebay":"The Pirate Bay (TPB) és un directori de torrents suec que data del novembre de 2003. The Pirate Bay serveix com a motor de cerca i, alhora, de rastrejador amb el qual es pot cercar qualsevol tipus de contingut multimèdia.", - "pubmed":"MEDLINE és una base de dades bibliogràfica de ciències de la vida i d'informació biomèdica. Inclou la informació bibliogràfica d'articles de revistes acadèmiques que cobreixen medicina, infermeria, farmàcia, odontologia, veterinària i assistència sanitària, salut pública. MEDLINE també cobreix gran part de literatura en biologia i bioquímica, així com camps com ara l'evolució molecular. El percentatge de cobertura de cada àrea correspon en un 80% a Medicina, un 7% a Infermeria, un 8% a Odontologia i a altres matèries un 5%.", - "qwant":"Qwant és un motor de cerca francès, llançat el febrer de 2013 i operat des de París. És un dels pocs cercadors de la UE. Afirma que no utilitza el seguiment dels usuaris ni personalitza els resultats de la cerca per evitar atrapar els usuaris en una bombolla filtre.", - "qwant news":[ - "qwant:ca", - "ref" - ], - "qwant images":[ - "qwant:ca", - "ref" - ], - "qwant videos":[ - "qwant:ca", - "ref" - ], - "reddit":"Reddit és un lloc web de marcadors socials i agregador de notícies on els usuaris poden compartir enllaços a continguts web. El contingut s'organitza en comunitats anomenades «subreddits» que són creats i moderats pels mateixos usuaris. Aquestes comunitats cobreixen una gran varietat de temàtiques com ara notícies, ciència, pel·lícules, videojocs, música, gastronomia... Les contribucions a cada «subreddit» poden ser votades positivament o negativament pels usuaris de la comunitat per tal que aquestes apareguin més o menys destacades.", - "soundcloud":"SoundCloud és una plataforma de distribució d'àudio en línia on els usuaris poden col·laborar, promocionar i distribuir els seus projectes musicals.", - "stackoverflow":"Stack Exchange és una xarxa de llocs web de preguntes i respostes (Q&A) sobre temes en diversos camps, cada lloc tracta un tema específic, on les preguntes, les respostes i els usuaris estan subjectes a un procés d'adjudicació de reputació. El sistema de reputació permet que els llocs siguin automoderats. A partir del març de 2023, els tres llocs més visualitzats de la xarxa són Stack Overflow, Unix i Linux i Matemàtiques.", - "askubuntu":[ - "stackoverflow:ca", - "ref" - ], - "superuser":[ - "stackoverflow:ca", - "ref" - ], - "semantic scholar":"Semantic Scholar és un motor de cerca recolzat per un sistema de intel·ligència artificial dedicat a treballar amb publicacions acadèmiques. Desenvolupat a l'Allen Institute for Artificial Intelligence, es va llançar al públic el novembre de 2015.Utilitza avenços recents en el processament del llenguatge natural per proporcionar resums d'articles acadèmics.", - "startpage":"Ixquick és un metacercador web fundat per David Bodnick el 1998. Els seus servidors es troben a Nova York i als Països Baixos. Des de l'any 2000 forma part de l'empresa Surfboard Holding BV.", - "unsplash":"Unsplash és una pàgina web dedicada a compartir fotografia de stock sota llicència pròpia d'Unsplash. L'any 2021 fou adquirida per Getty Imatges. Les peticiones de la pàgina web s'eleven a 207.000 aportacions de fotògrafs i genera més de 17 bilions d'impressions de fotos per mes en la seva biblioteca que conté a una mida total de més de 2 milions de fotos. Unsplash ha estat citada com una de les pàgines web de fotografia davantera del món per Forbes, Entrepreneur Magazine, CNET, Medium i The Next Web.", - "yahoo news":"Yahoo! Inc. és una empresa global de mitjans amb seu als Estats Units d'Amèrica que té per missió: \"ser el servei global d'Internet més essencial per a consumidors i negocis\". Posseeix un portal d'Internet, un directori Web i una sèrie de serveis, incloent-hi el popular correu electrònic Yahoo!. Fou fundada el gener de 1994 per dos estudiants de postgrau de la Universitat de Stanford, Jerry Yang i David Filo. Yahoo! es va constituir com empresa el 2 de març de 1995 i va començar a cotitzar a borsa el 12 d'abril de 1996. L'empresa té la seu corporativa a Sunnyvale, Califòrnia, Estats Units.", - "youtube":"YouTube és un lloc web en el qual els usuaris poden penjar i compartir vídeos. Va ser creat per tres extreballadors de PayPal el febrer de 2005. Va ser adquirit per Google Inc. l'octubre de 2006, a canvi de 1.650 milions de dòlars, i ara opera com una de les seves filials. Ara YouTube és molt vist a tot el món i cada minut s'hi pengen 300 hores de vídeo. El primer vídeo es va penjar el 23 d'abril de 2005 \"Me at the Zoo\", on es mostra el cofundador Jawed Karim al Zoològic de San Diego.", - "dailymotion":"Dailymotion és un lloc web que dona un servei d'allotjament de vídeos a Internet. Té la seu a París, Illa de França (França). El seu nom de domini va ser registrat un mes després que YouTube, tot i que el lloc web va ser obert un mes abans. D'acord amb Comscore, Dailymotion és el segon lloc web pel que fa a tràfic d'Internet després de YouTube. A data d'octubre de 2010, el web rebia més de 72 milions de visitants únics mensuals i era un dels 50 llocs web més visitats de la xarxa.", - "vimeo":"Vimeo és una xarxa social d'Internet basada en vídeos, llançada el novembre del 2004 per la companyia InterActiveCorp (IAC). El web permet compartir i emmagatzemar vídeos digitals perquè els usuaris comentin a la pàgina de cadascun d'ells. Els usuaris han d'estar-hi registrats per poder carregar vídeos, crear el seu perfil, carregar els avatars, comentar i crear llistes de preferits.", - "wikibooks":"Viquillibres és un projecte de la Fundació Wikimedia, creat el 10 de juliol del 2003.", - "wikinews":"Viquinotícies és un projecte sobre el programari Mediawiki que té com a finalitat informar de notícies. El seu contingut és lliure.", - "wikiquote":"Viquidites és un projecte de la Fundació Wikimedia sobre el programari MediaWiki. Basat en una idea de Daniel Alston i implementat per Brion Vibber, la finalitat del projecte és de produir conjuntament un recull de dites i frases de persones i llibres, i donar detalls d'aquests. Tot i que hi ha moltes col·leccions de dites i frases a Internet, Viquidites és distingit per estar d'entre els pocs en què els visitants poden contribuir en el projecte. Inicialment, el projecte va ser creat en anglès, però a partir del juliol del 2004 se'n van anar afegint en altres llengües, i, concretament, el 23 d'agost del 2004 es va obrir la versió en català. El primer article creat a Viquidites fou Groucho Marx el 24 d'agost de 2004.", - "wikisource":"Viquitexts és una biblioteca digital en un wiki de texts originals lliures mantinguda per la Fundació Wikimedia, una organització sense ànim de lucre. El seu objectiu és albergar tota mena de texts lliures, en molts idiomes, i traduccions.", - "wikispecies":"Viquiespècies és un projecte de la fundació Wikimedia que aspira a fer una recopilació de tots els éssers vius coneguts. Al contrari de la majoria de projectes de la fundació, Viquiespècies no té diferents pàgines depenent de l'idioma usat, i tots els articles estan en un espai comú. Els noms dels articles estan en llatí i assenyalen els noms vulgars en totes les altres llengües.", - "wiktionary":"El Viccionari és un projecte col·laboratiu per produir un diccionari multilingüe lliure, amb significats, etimologies i pronunciacions, en totes aquelles llengües en què sigui possible. El Viccionari és l'acompanyant lèxic al contingut obert de l'enciclopèdia Viquipèdia.", - "wikiversity":"Wikiversity és un projecte col·laboratiu per produir material per aprendre multilingüe lliure de la fundació Wikimedia i sobre programari Mediawiki.", - "wikivoyage":"Viquiviatges és un projecte per crear una guia turística lliure, basada en la tecnologia wiki. Es desenvolupa de manera col·laborativa per viquiviatgers de tot el món. Viquiviatges es construeix amb l'esperit de compartir el coneixement que fa que viatjar sigui tan agradable.", - "wikicommons.images":"Wikimedia Commons és un magatzem de contingut multimèdia lliure incloent imatges, àudio i vídeo. Els arxius que els usuaris inclouen poden fer-se servir en altres projectes de la Fundació Wikimedia i arreu, sempre que es compleixin les llicències corresponents.", - "wolframalpha":"WolframAlpha ( WUULf-rəm-) és un motor de respostes desenvolupat per Wolfram Research. Respon a les consultes de fets calculant respostes a partir de dades d'origen extern.", - "mojeek":"Mojeek és un motor de cerca amb seu al Regne Unit basat en rastrejadors que proporciona resultats de cerca independents utilitzant el seu propi índex de pàgines web, creat mitjançant l'aranya web, en lloc d'utilitzar resultats d'altres motors de cerca.", - "naver":[ - "portal web sud-coreà", - "wikidata" - ], - "peertube":"PeerTube és una plataforma de vídeo federada i descentralitzada de codi obert, alimentada per ActivityPub i WebTorrent, que utilitza tecnologia peer-to-peer per reduir la càrrega en servidors individuals quan es visualitzen vídeos.", - "yacy":"Yacy és un cercador lliure que fa servir una xarxa peer-to-peer com a infraestructura.", - "yacy images":[ - "yacy:ca", - "ref" - ], - "wttr.in":[ - "Informe del temps per a: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave és un navegador web de codi obert basat en Chromium, creat per la companyia Brave Software l'any 2016, fundada pel cofundador del Projecte Mozilla i creador de JavaScript, Brendan Eich. Està disponible en català.", - "brave.images":[ - "brave:ca", - "ref" - ], - "brave.videos":[ - "brave:ca", - "ref" - ], - "brave.news":[ - "brave:ca", - "ref" - ] - }, - "cs":{ - "9gag":"9GAG je sociální médium, založené na principu uživatelského nahrávání obrázků či videí. Tato média mívají nejčastěji zábavnou tematiku, obrázky se řadí většinou mezi tzv. „internetové memy“.", - "apple app store":"App Store je obchod s aplikacemi a online distribuční služba pro zařízení s mobilní operačním systémem iOS, iPadOS, pro počítač s macOS je určen Mac App Store. Je provozován společností Apple, která ho zprovoznila 10. července 2008 po jeho prezentaci u příležitost představení iPhonu 2. generace. Už za prvních 24 hodin bylo z App Store staženo více než 1 milion aplikací. App Store je jediný povolený způsob, jak do mobilních zařízení Apple nahrát aplikace třetích stran, které musí nejdříve projít schvalovacím procesem Applu. To lze obejít jen prolomením ochrany, tzv. jailbreakem, a použít pak např. distribuční platformu Cydia.", - "artic":"Institut umění v Chicagu, je muzeum výtvarného umění, které se nachází v Chicagu, ve státě Illinois, v Grant Parku na South Michigan Avenue 111. Svou rozlohou jeden milion čtverečních stop je druhým největším muzeem umění ve Spojených státech, hned za Metropolitan Museum of Art v New Yorku.", - "arxiv":"arXiv je elektronický archiv preprintů vědeckých prací z oblasti matematiky, fyziky, informatiky a biologie, který je volně dostupný na internetu. V některých oblastech matematiky a fyziky jsou téměř všechny práce umístěny na arXivu.[zdroj?] Průměrně do tohoto archivu přibývá každý měsíc kolem čtyř tisíc nových prací.", - "bandcamp":[ - "americká firma", - "wikidata" - ], - "wikipedia":"Wikipedie je mnohojazyčná online encyklopedie vytvořená a udržovaná jako projekt otevřené spolupráce se svobodným (otevřeným) obsahem, na jejíž tvorbě spolupracují dobrovolní přispěvatelé z celého světa. Využívá wiki redakční systém a je to největší a nejoblíbenější všeobecné referenční dílo na World Wide Webu; podle hodnocení služby Alexa Internet z června 2019 je jednou z nejpopulárnějších webových stránek vůbec. Obsahuje výhradně bezplatný obsah a neobsahuje jakékoliv komerční reklamy. Wikipedie je vlastněna a podporována, stejně jako další vzájemně propojené projekty, nadací Wikimedia Foundation, neziskovou organizací, která je financována především prostřednictvím darů.", - "bing":"Microsoft Bing, zkráceně Bing s krycím jménem Kumo, je internetový vyhledávač provozovaný společností Microsoft. Podle firem StatCounter a CNBC, které se zabývají analýzou webových stránek, je v současnosti druhým největším vyhledávačem na internetu po vyhledávači společnosti Google. Je napsán v jazyce ASP.NET.", - "bing images":[ - "bing:cs", - "ref" - ], - "bing news":[ - "Zpravodajství ze světa a mezinárodní a místní zdroje zpráv uspořádané tak, aby vám poskytly podrobné informace o novinkách o sportu, zábavě, podnikání, politice, počasí a dalších tématech.", - "https://www.bing.com/news" - ], - "bing videos":[ - "S inteligentním vyhledáváním od Bingu najdete, co hledáte, snadno a rychle a ještě získáte odměnu.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket je webová služba podporující vývoj softwaru při používání verzovacích nástrojů Git a Mercurial. Bitbucket nabízí bezplatný hosting pro open-source projekty a menší týmy do 5 lidí. Dále nabízí komerční programy, které po zaplacení měsíčního poplatku umožňují ukládat soukromé repositáře.", - "currency":"DuckDuckGo (DDG) je webový vyhledávač, který klade důraz na soukromí uživatelů, úmyslně nevytváří efekt tzv. filtrovací bubliny a nijak neprofituje prodejem osobních informací uživatelů.", - "deviantart":"DeviantArt je online umělecká komunita. Poprvé byla spuštěna 7. srpna 2000 díky práci Scotta Jarkoffa, Matthewa Stephense a Angela Sotiry, který je nyní CEO.", - "ddg definitions":[ - "currency:cs", - "ref" - ], - "wikidata":"Wikidata jsou projekt kolektivně editované databáze informací dostupných pod svobodnou licencí. Provozuje jej nadace Wikimedia a je úzce provázaný s Wikipedií a dalšími projekty této nadace. Projekt původně iniciovala německá pobočka nadace Wikimedia Deutschland. Wikidata mají realizovat společné úložiště databázových údajů, například dat narození, které pak mohou být používány jinými projekty. Je to první nový projekt nadace od roku 2006, kdy byla otevřena Wikiverzita.", - "duckduckgo":[ - "currency:cs", - "ref" - ], - "duckduckgo images":[ - "currency:cs", - "ref" - ], - "duckduckgo videos":[ - "currency:cs", - "ref" - ], - "duckduckgo news":[ - "currency:cs", - "ref" - ], - "duckduckgo weather":[ - "currency:cs", - "ref" - ], - "apple maps":"Apple Mapy je webová mapová služba poskytovaná společností Apple Inc. Apple Mapy se dají používat na zařízeních s operačním systémem iOS, macOS, iPadOS a watchOS. Apple Mapy byly uvedeny 11. června 2012 na Apple Worldwide Developers Conference (WWDC). V provozu jsou od 19. září 2012. Hlavním poskytovatelem mapových dat je společnost TomTom.", - "fdroid":"F-Droid je softwarový repozitář pro operační systém Android, stejně jako Google Play. Hlavní repozitář, poskytovaný vývojáři, obsahuje jen svobodný software. Aplikace mohou být prohledávány a instalovány na webu F-Droidu nebo pomocí klientské aplikace bez nutnosti registrace. „Anti-vlastnosti“ jako reklamy, sledování uživatelů, nebo závislost na nesvobodném softwaru jsou označeny v popisu aplikací. Webové stránky nabízejí také zdrojový kód aplikací které hostí i softwaru který pohání server, což umožňuje komukoliv vytvořit si vlastní repozitář.", - "flickr":"Flickr je komunitní web pro sdílení fotografií. Byl také jedním z prvních serverů Web 2.0, který umožňoval používat štítky (tagy). Uživatelé mohou také své fotografie umístit do mapy. V září 2010 bylo oznámeno, že Flickr sdílí více než 5 miliard obrázků.", - "free software directory":"Free Software Directory je projektem Free Software Foundation (FSF). Projekt katalogizuje užitečný svobodný software, který běží na svobodných operačních systémech - jmenovitě na operačním systému GNU a jeho variantách GNU/Linux.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab je webový Git repozitář s wiki a podporou sledování chyb. GitLab hostuje účty podobně jako GitHub, ale také umožňuje, aby byl jejich software použit na serveru třetích stran. Je dostupný jako balíček Omnibus.", - "github":"GitHub je webová služba podporující vývoj softwaru za pomoci verzovacího nástroje Git. GitHub nabízí bezplatný Webhosting pro open source projekty. Od 7. ledna 2019 je možné ukládat bezplatně i soukromé repositáře. Projekt byl spuštěn v roce 2008, zakladatelé byli Tom Preston-Werner, Chris Wanstrath a PJ Hyett.", - "google":"Vyhledávání Google je v současnosti nejpoužívanější internetový vyhledávač, který vlastní společnost Google.", - "google images":"Obrázky Google je vyhledávací služba, pomocí které Google umožňuje uživatelům vyhledávat na internetu obrázky. Byla zveřejněna v roce 2001 a existuje ve všech jazykových verzích, v nichž existuje samotný vyhledávač. Klíčová slova při hledání obrázků jsou založena na názvu souboru, slovech, která na daný obrázek odkazují a textu, který je na dané stránce u obrázku. Na stránce s výsledky vyhledávání jsou zobrazeny miniatury obrázků. Po kliknutí na některou z nich je obrázek zobrazen nahoře a o něco níže je zobrazen obsah stránky, na níž se obrázek nachází. Díky tomu můžeme snadno zjistit, z jaké stránky obrázek pochází.", - "google news":"Zprávy Google je webová stránka a mobilní aplikace vyvinutá společností Google. Zprávy Google nepřetržitě vyhledávají aktuální články od tisíců vydavatelů a nabízejí je uživatelům k přečtení. Zprávy Google jsou k dispozici na platformě Android, iOS a na webu. Betaverze byla spuštěna v září 2002, oficiální stabilní verze byla vydána v lednu 2006. Google Zprávy byly zpracovány na návrh Inda Krishny Bharata.", - "google videos":"Google Video byl internetový server pro sdílení filmových souborů. Tuto službu provozovala společnost Google. Portál obsahoval videa zdarma i placená.[zdroj?]", - "google scholar":"Google Scholar je volně přístupný webový vyhledávač, spadající pod společnost Google, který indexuje plné texty nebo metadata z odborné literatury přes řadu formátů a oborů. Byl poprvé vydán v beta verzi v listopadu 2004, index služby Google Scholar zahrnuje většinu recenzované online dostupné akademické časopisy, knihy, konferenční příspěvky, diplomové práce a disertace, preprintů, abstrakt, technických zpráv, a jiné odborné literatury, včetně patentů. Výzkumníci odhadují, že v květnu 2014 obsahoval zhruba 160 milionů dokumentů a dřívější statistický odhad zveřejněný v PLOS ONE odhaduje že přibližně 80-90% všech článků bylo publikovaných v angličtině.", - "google play apps":"Google Play je online distribuční služba firmy Google, která vznikla 22. října 2008 jako Android Market. V současné době Google Play poskytuje několik druhů digitálního obsahu, ke kterému je možné přistupovat z počítače nebo z mobilního telefonu vybaveného operačním systémem Android nebo prostřednictvím Android TV.", - "google play movies":[ - "google play apps:cs", - "ref" - ], - "hoogle":"Haskell je standardizovaný funkcionální programovací jazyk používající líné vyhodnocování, pojmenovaný na počest logika Haskella Curryho. Jazyk se rychle vyvíjí, především díky svým implementacím Hugs a GHC.", - "imdb":"Internet Movie Database (IMDb) je on-line databáze informací o filmech, televizních pořadech, hercích, herečkách, režisérech a všem ostatním, co s filmovou tvorbou souvisí.", - "library genesis":"Library Genesis je internetová knihovna poskytující knihy, akademické články, komiksy, audioknihy, časopisy a další obsah, který by byl jinak přístupný jen placeně, nebo vůbec ne.", - "library of congress":"Knihovna Kongresu je národní knihovna Spojených států amerických a vědeckovýzkumné středisko Kongresu spojených států. Sídlí ve Washingtonu, D. C. S počtem 155 miliónů knihovních jednotek jde o největší knihovnu na světě.", - "mastodon users":"Mastodon je sociální síť podobná Twitteru. Na rozdíl od většiny sociálních sítí je Mastodon open source a každý si může založit svoji vlastní instanci. Každá instance má vlastní podmínky užívání, ochrany soukromí a pravidel pro příspěvky; zároveň je propojená s ostatními instancemi, a je tedy možné se na ně připojit pomocí jednoho účtu.", - "mastodon hashtags":[ - "mastodon users:cs", - "ref" - ], - "metacpan":"CPAN je softwarový repozitář obsahující jednak moduly pro programovací jazyk Perl a jednak aplikace napsané v tomto jazyce. První myšlenky k jeho zřízení se objevily už v roce 1993 inspirované repozitářem CTAN typografického systému TeX, ale do provozu byl oficiálně uveden až v roce 1995. Jméno CPAN nese kromě samotného repozitáře i perlový program, který slouží k stažení a instalaci modulů. Kromě toho je možné do repozitáře přistupovat i přes webové rozhraní, kde je například možné i bez instalace číst dokumentaci patřičného modulu generovanou ze standardního formátu POD.", - "npm":"npm je správce balíčků pro JavaScript, výchozí správce balíčků pro prostředí Node.js.", - "openstreetmap":"OpenStreetMap je projekt, jehož cílem je tvorba volně dostupných geografických dat a následně jejich vizualizace do podoby topografických map. Pro tvorbu geodat se jako podklad využívá záznamů z přijímačů globálního družicového polohového systému nebo jiné zpravidla digitalizované mapy, která jsou licenčně kompatibilní. Projekt byl založen v roce 2004 a využívá kolektivní spolupráce spolu s koncepcí Otevřeného software. Data jsou poskytována pod licencí Open Database License. OpenStreetMap byl inspirován projekty jako je například Wikipedie, umožňuje jednoduchou editaci dat, uchovává kompletní historii provedených změn, výsledky práce jsou dostupné veřejnosti.", - "pinterest":"Pinterest je webová stránka, která svým uživatelům umožňuje zdarma vytvářet tematické kolekce obrázků či fotografií, které najdou online nebo je nahrají z vlastního počítače. Jedná se tedy o službu, která umožňuje online bookmarking (záložkování) obrázků. Takto vytvořené kolekce mohou procházet ostatní uživatelé a jednotlivé obrázky z nich komentovat, označovat tlačítkem „Like“ nebo si je rovnou přidat do své vlastní online nástěnky. Zároveň se jedná o sociální síť, jelikož všichni uživatelé spolu mohou interagovat, komunikovat a vytvářet obsah společně. Používání Pinterestu je zcela zdarma, neexistuje ani žádná placená verze.", - "piratebay":"The Pirate Bay je švédská webová stránka, která indexuje digitální obsah zábavních médií a softwaru. Jde o největší světovou databázi torrentových souborů a 93. nejpopulárnější webovou stránku dle serveru Alexa.com[kdy?]. Stránky jsou primárně financovány z reklamy, která se zobrazuje při vyhledávání. Prvně spuštěn byl server v listopadu 2003 Anti-copyrightovou společností Piratbyrån, avšak v posledních pěti letech[kdy?] byl provozován jednotlivci.", - "pypi":"Python Package Index je oficiální softwarový repozitář pro Python, podobný například CPANu pro Perl. Využít jej lze například pomocí správce balíčků zvaného pip, který má PyPI jako přednastavený repozitář. K lednu 2020 obsahoval přes 211 tisíc balíčků. K balíčkům obsahuje i metadata, podle kterých je možno vyhledávat. Například je možno při hledání specifikovat, že má být balíček kompatibilní s POSIXem, nebo že má mít svobodnou softwarovou licenci.", - "qwant":"Qwant je proprietární webový vyhledávač provozovaný francouzskou společností Qwant. Jeho provozovatelé tvrdí, že nesledují uživatele a nepersonalizují výsledky vyhledávání, takže uživatelé nejsou v rámci vyhledávání uzavřeni ve své sociální bublině. Je tak považován za vyhledávač ctící soukromí uživatelů.", - "qwant news":[ - "qwant:cs", - "ref" - ], - "qwant images":[ - "qwant:cs", - "ref" - ], - "qwant videos":[ - "qwant:cs", - "ref" - ], - "reddit":"Reddit je otevřenou internetovou sociální sítí, založenou na principu předkládání obsahu uživateli a jeho následného hodnocení pomocí hlasování. Název serveru je anglickou slovní hříčkou ze slovního spojení „I read it“. Reddit má celosvětovou komunitu čítající každý měsíc více než 540 milionů jedinečných uživatelů z více než dvou set zemí.", - "soundcloud":"SoundCloud je internetová stránka pro online distribuci hudby. Je často využívána méně známými interprety ke sdílení jejich tvorby. Například Sonic Youth využila odkazy na SoundCloud z Twitteru ke streamování jejich posledního alba. Moby zde zveřejňuje své nejnovější singly. A když se Beck rozhodl skončit se svými zastaralými webovými stránkami a chtěl jednoduché stránky založené na vysoce kvalitním obsahu, také přešel k SoundCloudu. Ve 3. čtvrtletí roku 2020 vykázal SoundCloud své vůbec první ziskové čtvrtletí s dvouciferným nárůstem tržeb a podstatně sníženými provozními ztrátami.", - "stackoverflow":"Stack Exchange je mezinárodní síť komunitních Q&A webových stránek vlastněná společností Stack Exchange, Inc se sídlem v New Yorku. V současné době síť tvoří více než 170 webových stránek zabývajících se různými tématy, včetně počítačového programování, matematiky, grafického designu, hudby, vaření a mnoha dalších.", - "askubuntu":[ - "stackoverflow:cs", - "ref" - ], - "superuser":[ - "stackoverflow:cs", - "ref" - ], - "semantic scholar":"Semantic Scholar je vyhledávač akademických publikací na bázi umělé inteligence vyvinutý v Allen Institute for AI, který byl uvolněn k veřejnému použití v listopadu 2015. Používá pokroky ve zpracování přirozeného jazyka k poskytování shrnutí obsahu výukových odborných článků. Tým provozující Semantic Scholar aktivně zkoumá použití umělé inteligence pro zpracování přirozeného jazyka, strojové učení, interakci mezi člověkem a počítačem a získávání informací.", - "startpage":"Startpage.com je webový vyhledávač, který jako svoji hlavní přednost prezentuje zachování soukromí uživatelů. Dříve byl známý jako metavyhledávací systém Ixquick, Startpage v té době byla jiná služba. Obě stránky byly sloučeny v roce 2016.", - "youtube":"YouTube [ju:tu:b] je největší internetový server pro sdílení videosouborů. Založili jej v únoru 2005 zaměstnanci PayPalu Chad Hurley, Steve Chen a Jawed Karim. Nynějším generálním ředitelem společnosti je od února 2023 Neal Mohan. V listopadu 2006 byl zakoupen společností Google za 1,65 miliardy dolarů. Google nyní provozuje tuto stránku jako dceřinou společnost, uživatelské účty mezi těmito společnostmi jsou propojené.", - "vimeo":"Vimeo je webový projekt určený pro sdílení audiovizuální tvorby. Nacházejí se zde převážně díla autorská a umělecká. Vimeo je primárně určen filmovým nadšencům a experimentátorům, kteří se mohou zaregistrovat a sdílet názory a postřehy s ostatními. Charakter Vimea je zcela odlišný od charakteru YouTube, Vimeo je zaměřeno na uměleckou komunitu, kdežto YouTube směřuje k zájmům masové společnosti.", - "wikibooks":"Wikiknihy je sesterský projekt Wikipedie, obsahující volně šiřitelné učebnice všeho druhu, manuály a podobné texty. Projekt byl založen 10. července 2003, původně v angličtině. Česká verze vznikla v druhé polovině roku 2004.", - "wikinews":"Wikizprávy jsou projektem otevřeného zpravodajského serveru na bázi wiki, který provozuje nadace Wikimedia. Wikizprávy umožňují komukoli přispívat zprávami z různých oblastí a jejich cílem, uvedeným na hlavní straně, je „vytvořit různorodé prostředí, kde místní novináři mohou nezávisle referovat o rozmanitých aktualitách“.", - "wikiquote":"Wikicitáty jsou sesterský projekt Wikipedie, obsahující sbírku citátů a přísloví. Projekt byl spuštěn 27. června 2003, původně v angličtině. Česká mutace vznikla 21. srpna 2004.", - "wikisource":"Wikizdroje jsou jeden z wiki projektů nadace Wikimedia, který se zabývá uchováváním volně dostupných dokumentů, jak primárních zdrojů v libovolném jazyce, tak i jejich překladů. Projekt se původně měl nazývat Sourceberg, ale 6. prosince 2003 byl podle výsledků hlasování pojmenován Wikisource.", - "wikispecies":"Wikidruhy je on-line projekt založený na principu wiki a podporovaný prostřednictvím Nadace Wikimedia. Jeho cílem je vytvoření souhrnného volně přístupného katalogu všech přírodních druhů tj. živočichů, rostlin, hub, bakterií a jednobuněčných organismů. Projekt též obsahuje tematická hesla o taxonomických autoritách a jejich díle.", - "wiktionary":"Wikislovník je sesterský internetový projekt Wikipedie, který má za cíl vytvořit svobodný wiki mnohojazyčný slovník ve všech a o všech jazycích s definicemi, výslovností, překlady, etymologií a dalšími slovníkovými sekcemi. Vychází z myšlenky Daniela Alstona a byl spuštěn 12. prosince 2002.", - "wikiversity":"Wikiverzita je projekt nadace Wikimedia Foundation nabízející volně dostupné e-learningové vzdělávání formou výukových jednotek a materiálů, které mohou nabývat podobu projektů, kurzů, hodin apod.", - "wikivoyage":"Wikicesty je web založený na softwaru MediaWiki, v rámci kterého vzniká cestovní průvodce psaný dobrovolníky. Jeho obsah je k disposici pod copyleftovou licencí Creative Commons Uveďte autora-Zachovejte licenci. Od ledna 2013 patří mezi projekty nadace Wikimedia.", - "wikicommons.images":"Wikimedia Commons je projekt nadace Wikimedia, který slouží jako organizované centrální úložiště licenčně volných fotografií, videa, ilustrací, zvuků a dalšího multimediálního obsahu. Tyto soubory jsou zároveň přístupné ze všech projektů Wikimedia Foundation ze všech jazykových verzí. Projekt byl navržen Erikem Möllerem v březnu 2004 a spuštěn 7. září 2004. Editační a uživatelské prostředí Commons je téměř shodné jako editační prostředí Wikipedie, rovněž se používá stejný princip a podobný systém kategorizace obsahu a podobný způsob samosprávného rozhodování. Projekt Commons nemá více jazykových verzí, základním jazykem projektu Commons je angličtina, která je preferována zejména pro pojmenovávání kategorií, názvy obrázků a projektové diskuse však mohou být ve kterémkoliv jazyce podle potřeby. S tematickými kategoriemi a články jazykových verzí projektu Wikipedie jsou tematické kategorie projektu Commons částečně propojeny lokálními mezijazykovými odkazy nebo prostřednictvím tematických položek projektu Wikidata.", - "wolframalpha":"Wolfram Alpha je odpovídací stroj, vytvořený firmou Wolfram Research. Jde o službu, která se snaží přímo odpovídat na dotazy uživatele, na rozdíl od vyhledávacích služeb, které poskytnou pouze seznam stránek, pravděpodobně obsahujících odpověď. Wolfram Alpha je vytvořen na základě výpočetního softwaru Mathematica, který je využíván pro řešení algebraických úloh, numerických a statistických výpočtů, ale i vizualizaci výsledků. Odpověď na dotaz se zobrazí v člověku čitelné a přehledné formě. Často je přiložen i postup vedoucí k výsledku.", - "dictzone":[ - "Online slovníky: angličtina, němčina, maďarština... Vyberte si svůj oblíbený slovník!", - "https://dictzone.com/" - ], - "1337x":"1337x je webová stránka, která poskytuje adresář torrentových souborů a magnetických odkazů používaných pro sdílení souborů peer-to-peer prostřednictvím protokolu BitTorrent. Podle zpravodajského blogu TorrentFreak je 1337x třetí nejpopoulárnější internetovou stránkou svého typu od roku 2021.", - "seznam":"Seznam.cz je český internetový portál a vyhledávač. Byl založen roku 1996 Ivem Lukačovičem a posléze se stal jedním z prvních českých internetových katalogů a vyhledávačů v České republice. Má sídlo v Praze na Smíchově, další kanceláře také v Brně, Ostravě, Plzni, Olomouci, Hradci Králové, Českých Budějovicích a Liberci. Vyhledávač a katalog firem postupně od roku 1998 doplňovaly další služby, k začátku roku 2013 firma provozovala více než 25 různých služeb a přidružených značek. Mezi nejznámější patří Email.cz, Firmy.cz, Mapy.cz, Sklik, Sreality.cz, Sauto.cz, Televize Seznam, Novinky.cz, Seznam Zprávy a další. Návštěvnost služeb Seznam.cz v českém internetu byla k roku 2014 přes 6,75 milionu unikátních návštěvníků měsíčně. Mezi nejnavštěvovanější služby patří podle údajů NetMonitoru Seznam.cz Homepage a Seznam.cz Email.[kdy?]", - "naver":"Naver je jihokorejská online platforma provozovaná společností Naver Corporation. Debutoval v roce 1999 jako první webový portál v Jižní Koreji. Byl také prvním operátorem na světě, který zavedl funkci komplexního vyhledávání, která sestavuje výsledky vyhledávání z různých kategorií a prezentuje je na jediné stránce. Naver od té doby přidal množství nových služeb, od základních funkcí, jako je e-mail a zprávy, až po světově první online platformu otázek a odpovědí Knowledge iN.", - "peertube":"PeerTube je webová platforma pro hostování souborů, která je decentralizovaná a je svobodným softwarem pod licencí AGPL. Je postavena na protokolu Activity Pub a javascriptovém klientu WebTorrent, který umí používat technologii BitTorrent pro P2P stahování datových proudů pomocí webového prohlížeče.", - "yacy":[ - "distribuovaný vyhledávač", - "wikidata" - ], - "yacy images":[ - "yacy:cs", - "ref" - ], - "wttr.in":[ - "Předpověď počasí pro: Boydton, Virginia, United States", - "https://wttr.in" - ], - "yummly":[ - "bandcamp:cs", - "ref" - ], - "brave":"Brave je svobodný a otevřený webový prohlížeč vyvíjený společností Brave Software, založený na webovém prohlížeči Chromium. Brave je prohlížeč zaměřený na ochranu soukromí, výchozí nastavení je automatické blokování online reklamy a sledovačů webových stránek. Je dostupný pro řadu operační systémů, např. Microsoft Windows, macOS, Linux, Android či iOS. Přednastaveným webovým vyhledávačem se postupně stává Brave Search od stejné společnosti, ale v některým zemích a dříve jím byl i DuckDuckGo a Qwant.", - "brave.images":[ - "brave:cs", - "ref" - ], - "brave.videos":[ - "brave:cs", - "ref" - ], - "brave.news":[ - "brave:cs", - "ref" - ] - }, - "cy":{ - "artic":[ - "amgueddfa gelf ac ysgol yn Chicago", - "wikidata" - ], - "wikipedia":"Gwyddoniadur rhyngwladol, amlieithog a reolir gan y Wikimedia Foundation yw Wicipedia. Dechreuodd y fersiwn Saesneg ar 15 Ionawr 2001, ac yn ystod y pum mlynedd ddilynol, dechreuwyd fersiynau mewn dros 200 iaith arall. Ar ddiwedd 2001, roedd dros 20,000 erthygl yn y fersiwn Saesneg a 18 o wahanol ieithoedd. Erbyn Mehefin 2010, roedd 3.3 miliwn erthygl.", - "bing images":[ - "Gweld y crynodeb wedi'i deilwra ar gyfer eich diddordebau", - "https://www.bing.com/images" - ], - "bing news":[ - "Newyddion o ffynonellau newyddion byd, cenedlaethol a lleol, wedi eu trefnu i drafod newyddion chwaraeon, adloniant, busnes, gwleidyddiaeth, tywydd a mwy mewn manylder.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Mae chwilio deallus gan Bing yn ei gwneud yn haws i chi canfod yr hyn rydych chi'n chwilio amdano ac yn eich gwobrwyo.", - "https://www.bing.com/videos" - ], - "wikidata":"Prosiect cydweithredol, byd-eang ydy Wicidata gan gymuned Wicimedia ; fe'i bwriedir i ganoli data ar gyfer prosiectau megis Wicipedia, fel a wneir gyda Comin Wicimedia. Mae'r cynnwys, fel gyda gweddill y teulu \"Wici\" wedi'i drwyddedu ar ffurf cynnwys rhydd, agored tebyg i'r CC-BY-SA a ddefnyddir ar y wici hwn.", - "flickr":"Gwefan sy'n cynnal lluniau a fideos gan gymuned ar y we yw Flickr.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google images":[ - "Lluniau Google.Y chwiliad lluniau mwya cynhwysfawr ar y we.", - "https://images.google.com" - ], - "google play apps":"Mae Google Play yn blatfform dosbarthu digidol ar gyfer cymwysiadau symudol ar gyfer dyfeisiau sy'n rhedeg system weithredu Android, yn ogystal â siop ar-lein a ddatblygwyd ac a weithredir gan Google LLC. Mae'r platfform hwn yn caniatáu i ddefnyddwyr bori a lawrlwytho cymwysiadau, gemau, cerddoriaeth, llyfrau a ffilmiau.", - "google play movies":[ - "google play apps:cy", - "ref" - ], - "imdb":"Cronfa ddata ar-lein o ffilmiau, rhaglenni teledu, a gemau fideos yw'r Internet Movie Database (IMDb). Cafodd ei greu gan Col Needham ym 1990.", - "ina":[ - "amgueddfa yn Ffrainc", - "wikidata" - ], - "library of congress":"Llyfrgell ymchwil Cyngres yr Unol Daleithiau yw Llyfrgell y Gyngres. Y llyfrgell yw'r sefydliad ffederal hynaf yn yr Unol Daleithiau. Fe'i lleolir mewn tri adeilad yn Washington, D.C., a dyma'r llyfrgell fwyaf yn y byd yn ôl gofod silff ac mae'n dal y nifer fwyaf o lyfrau.", - "mastodon users":"Mae Mastodon yn feddalwedd cod agored am ddim ar gyfer gwasanaethau rhwydweithio cymdeithasol hunangynhaliol. Mae ganddo nodweddion meicroblogio, a gynigir gan nifer fawr o nodau annibynnol, pob un â'i god ymddygiad ei hun, telerau gwasanaeth, polisi preifatrwydd, opsiynau preifatrwydd, a pholisïau cymedroli.", - "mastodon hashtags":[ - "mastodon users:cy", - "ref" - ], - "reddit":"Gwefan newyddion cymdeithasol yw reddit. Mae defnyddwyr yn postio dolenni at gynnwys ar y rhyngrwyd neu yn postio hunan-byst gyda thestun gwreiddiol ganddynt. Gall defnyddwyr eraill yna \"uwchbleidleisio\" neu \"lawrbleidleisio'r\" pyst, ac mae'r pyst sydd mwyaf poblogaidd yn dangos ar hafan y wefan. Yn ogystal, gall defnyddwyr drafod y pyst ac ymateb i byst ei gilydd, gan ffurfio cymuned ar-lein. Gall defnyddwyr reddit greu adrannau eu hunain o'r wefan o'r enw \"is-redditau\" sy'n canolbwyntio ar bynciau penodol.", - "soundcloud":"Mae SoundCloud yn blatfform dosbarthu sain ar-lein lle gall defnyddwyr gydweithio, hyrwyddo a dosbarthu eu prosiectau cerddoriaeth.", - "startpage":"Peiriant metachwilio yw Ixquick, sy'n gweithio trwy harnesu sawl peiriant chwilio arall ar y rhyngrwyd. Lleolir Ixquick yn Ninas Efrog Newydd, UDA a'r Iseldiroedd ac mae wedi cyflenwi 120 miliwn o chwiliadau gwe ers 2004. Sefydlwyd Ixquick gan David Bodnick yn 1998, yn Efrog Newydd. Ers 2000 mae'n perthyn i gwmni Iseldiraidd, sef Surfboard Holding BV.", - "tagesschau":"Mae Tagesschau yn rhaglen newyddion teledu Almaeneg, rhyngwladol, a gynhyrchir gan Norddeutscher Rundfunk (NDR) ers 1952.", - "youtube":"Cwmni cynnal a rhannu fideos ar-lein ydy YouTube a grëwyd gan dri cynweithwyr cwmni bancio digidol PayPal yn Chwefror 2005. Gall defnyddwyr uwchlwytho a lawrlwytho fideos. Yn San Bruno, California, y lleolwyd pencadlys y cwmni a defnyddia Adobe Flash Video a thechnoleg HTML5 i arddangos ystod eang iawn o fideos a gynhyrchwyd gan y defnyddwyr neu wylwyr gan gynnwys clipiau byr, tameidiau o raglenni teledu a cherddoriaeth yn ogystal â ffilmiau a chlipiau amtaur a blogiau fideo.", - "wikibooks":"Gwefan wici ac un o brosiectau Sefydliad Wicifryngau yw Wicilyfrau gyda'r nod o greu casgliad rhydd ac am ddim o werslyfrau.", - "wikisource":"Prosiect Wicifryngau yw Wicidestun, sy'n ceisio adeiladu ystorfa testunau gwreiddiol sy'n eiddo cyhoeddus neu o dan termau'r Drwydded Dogfennaeth Rhydd GNU (\"GFDL\"). Mae'r safle yn rhan o'r Sefydliad Wicifryngau.", - "wikispecies":"Prosiect gan Sefydliad Wicimedia yw Wicirywogaeth (Wikispecies) a lansiwyd ar 5 Medi 2004. Mae'n brosiect amlieithog, ac yn debycach i Comin Wicimedia nag i Wicipedia o ran ffurf.", - "wiktionary":"Un o brosiectau Sefydliad Wicifryngau gyda'r nod o greu geiriadur wici rhydd ym mhob iaith yw Wiciadur sy'n eiriadur Cymraeg - Saesneg. Erbyn Medi 2012 roedd gan y Wiciadur dros 17,000 o gofnodion mewn 65 o ieithoedd gwahanol. Gyda'r Wiciadur Cymraeg, darperir diffiniadau o ystyron geiriau ac ymadroddion Cymraeg eu hiaith tra bod cyfieithiadau o eiriau mewn ieithoedd eraill yn cael eu darparu.", - "wikicommons.images":"Ystorfa rydd o ddelweddau, ffeiliau sain ac amlgyfrwng eraill yw Comin Wikimedia. Un o brosiectau Sefydliad Wicimedia yw hi, a gellir gweld prosiectau eraill Sefydliad Wikimedia, e.e. Wicipedia, Wiciadur a Wicilyfrau, yn defnyddio ffeiliau sydd wedi cael eu huwchlwytho i'r ystorfa fel ffeiliau lleol.", - "wttr.in":[ - "Adroddiad tywydd ar gyfer: Boydton, Virginia, United States", - "https://wttr.in" - ] - }, - "da":{ - "9gag":"9GAG er et websted, hvor brugerne poster underholdende billeder af ofte humoristisk karakter. Hyppigt forekommende indhold er memes, dvs. internet-populære koncepter. På 9GAG kan der forekomme stødende ord, slang eller visuelle udtryk. Friheden på 9gag er at alt i sin forstand er tilladt at dele, indenfor rimelighedens grænser.", - "apple app store":"App Store er en virtuel butik udviklet af Apple Inc. til distribution af applikationer til henholdsvis iPhone, iPod Touch og iPad. App Store er tilgængelig via iTunes eller \"App Store\"-applikationen, som er at finde på alle håndholdte Apple-apparater med iPhone OS 2.0 eller nyere.", - "artic":"Art Institute of Chicago er et af de ældste og største kunstmuseer i USA. Det blev grundlagt i 1879 og ligger i Grant Park i Chicago, Illinois. Museet besøges årligt af mere end 1,5 millioner mennesker. Samlingen, der er opdelt i 11 afdelinger, er meget omfattende og rummer blandt andet ikoniske værker som Georges Seurats En søndag eftermiddag på Île de la Grande Jatte, Edward Hoppers Nighthawks og Grant Woods American Gothic. Den permanente samling består af næsten 300.000 værker, hvortil kommer mere end 30 specialudstillinger om året, som belyser særlige aspekter af samlingen og præsenterer banebrydende kuratorisk og videnskabelig forskning.", - "arxiv":"arXiv er en hjemmeside for fortryk af videnskabelige artikler med fokus på fysik.", - "wikipedia":"Wikipedia er en internetencyklopædi, der forekommer i flere sprogversioner, udelukkende med frit indhold og ingen reklamer, baseret på et åbent samarbejde igennem en model, hvor brugere kan redigere ved hjælp af internet-baserede applikationer som webbrowsere, kaldet wiki. Det er det største og mest populære generelle referenceværk på internettet, og i april 2019 var det blandt de mest populære hjemmesider ifølge Alexa rangeringsystem. Wikipedia ejes og drives af Wikimedia Foundation, en almennyttig organisation der drives ved hjælp af donationer for at kunne være uafhængig.", - "bing":"Microsoft Bing er den nuværende (2016) søgemaskine til internettet fra Microsoft.", - "bing images":[ - "bing:da", - "ref" - ], - "bing news":[ - "Nyheder fra hele verden, nationale og lokale nyhedskilder – med henblik på at give dig en tilbundsgående nyhedsdækning inden for sport, underholdning, forretning, politik, vejret og meget andet.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Med intelligent søgning med Bing kan du nemmere og hurtigere finde, hvad du leder efter, og du modtager også belønninger.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo er en onlinesøgemaskine, som lægger vægt på ikke at gemme oplysninger og accepterer brugerens privatsfære.", - "deviantart":"DeviantArt er en amerikansk online fællesskab tilgængeligt for hele verden, der fremviser brugerfremstillet kunst. Siden blev lanceret den 7. august 2000 af Scott Jarkoff, Matthew Stephens, Angelo Sotira og andre. DeviantArt, Inc. har hovedkvarter i Hollywood-området af Los Angeles, Californien, USA.", - "ddg definitions":[ - "currency:da", - "ref" - ], - "wikidata":"Wikidata er en kollektivt redigeret flersproget vidensbase drevet af Wikimedia-stiftelsen. Det er et fælles lager for åbne data, som Wikimedia-projekter så som Wikipedia og i øvrigt hvem som helst, kan anvende under CC0 Public domain licensen. På samme måde som Wikimedia Commons tillader fælles lagring og adgang til filer for alle Wikimedia-projekter, således er også wikidata-registrene alment tilgængelige.", - "duckduckgo":[ - "currency:da", - "ref" - ], - "duckduckgo images":[ - "currency:da", - "ref" - ], - "duckduckgo videos":[ - "currency:da", - "ref" - ], - "duckduckgo news":[ - "currency:da", - "ref" - ], - "duckduckgo weather":[ - "currency:da", - "ref" - ], - "etymonline":"Online Etymology Dictionary er en ordbog der beskriver det etymologiske ophav af engelske ord.", - "flickr":"Flickr er et foto-delings-website, hvor private brugere kan uploade digitale fotografier. Det fungerer dels som et online fotoalbum, dels som et community. Populariteten er stadigt stigende, og der er i øjeblikket lagt over 4 milliarder billeder ind på Flickr. [kilde mangler]", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Google eller Google Search, på dansk Google-søgning, er en søgemaskine på internettet. Den ejes af Google Inc. og er i dag den største søgemaskine på internettet.", - "google images":[ - "Google Billeder. Den mest omfattende billedsøgning på nettet.", - "https://images.google.com" - ], - "google news":[ - "Omfattende og oppdatert nyhetsdekning, samlet inn av Google News fra nyhetskilder i hele verden.", - "https://news.google.com" - ], - "google videos":"Google Video var websted, hvor man kunne se og uploade videoer. Tjenesten konkurrerede tidligere med YouTube. Tjenesten blev nedlagt i 2012.", - "google scholar":"Google Scholar er et søgeværktøj til at finde videnskabelig litteratur. Man kan søge blandt fagområder og i kilder så som: afhandlinger, specialer, bøger, uddrag og artikler anmeldt af fagfolk fra akademiske forlag, faglige sammenslutninger, dokumentdatabaser, universiteter og andre videnskabelige organisationer.", - "google play apps":"Google Play – tidligere Android Market – er en applikation, der er udviklet af Google til systemet Android. Det giver brugeren mulighed for at finde og downloade applikationer fra tredjepartsudviklere.", - "google play movies":[ - "google play apps:da", - "ref" - ], - "hoogle":"Haskell er navnet på et rent funktionsprogrammeringssprog med en ikke-striks (\"doven\") semantik og stærke, statiske typer. Det er opkaldt efter logikeren Haskell Curry.", - "imdb":"Internet Movie Database, The Internet Movie Database eller forkortet IMDb, er verdens største online filmdatabase med information om stort set alt TV og film relateret.", - "library of congress":"Library of Congress er USAs faktiske nationalbibliotek og fagbibliotek for USAs lovgivende forsamling, Kongressen. Biblioteket er beliggende i Washington, DC, umiddelbart syd for højesteretsbygningen og ret sydøst for kongresbygningen. Samlingerne omfatter mere end 30 millioner katalogiserede bøger og andet trykt materiale på over 470 sprog, mere end 58 millioner manuskripter og en mængde aviser, film, kort og lydoptagelser. Biblioteket favner vidt: Alt udgivet i USA skal i princippet være der, men man finder også f.eks. nyere norsk kriminallitteratur.", - "mastodon users":"Mastodon er en gratis og open source software til at køre mikro-blogs-funktioner der ligner Twitters. Softwaren bruges af en række uafhængige computerknudepunkter (noder), kaldet \"instanser\". Hver Mastodon-bruger er medlem af en specifik instans, og disse kan derefter kobles sammen for at give brugere fra forskellige instanser mulighed for at kommunikere med hinanden.", - "mastodon hashtags":[ - "mastodon users:da", - "ref" - ], - "mixcloud":"Mixcloud er en britisk online musik streamingtjeneste, der giver mulighed for at lytte og distributere radioprogrammer, DJ mixes og podcasts, som er delt af deres registrerede brugere. Mixcloud blev oprindeligt kun finansieret af deres grundlæggere og er fortsat udelukkende ejet af deres eget team.", - "openstreetmap":"OpenStreetMap (OSM) (engelsk for åbent vejkort) er et kollaborativt projekt, der har til formål at producere et frit redigerbart kort over verden. OSM's oprindelse og vækst har været motiveret af begrænsninger på anvendelsen eller tilgængeligheden af kort-information over store dele af verden tillige med fremkomsten af billige bærbare satellit navigationsapparater. OSM anses for at være et prominent eksempel på Volunteered geographic information (en)", - "pinterest":"Pinterest er et socialt netværk med fokus på deling af fotos. Brugeren deler og kommenterer fotos, der ligger inden for dennes interesse, og skaber således en social identitet via sine interesser, som inddeles i forskellige boards. Brugerne kan vælge at følge hinanden på kryds og tværs, og man kan nøjes med kun at følge de boards hos en anden bruger, der har ens interesse. Synes en bruger tilstrækkeligt godt om et foto, som denne møder på sin vej, kan funktionen ’repinning’ benyttes. Dernæst indsættes billedet på et board efter eget ønske, og brugerens followers vil blive præsenteret for det ved næste login.", - "piratebay":"The Pirate Bay er verdens største Bittorrent-indeks. Den blev grundlagt af Gottfrid \"anakata\" Svartholm og Fredrik \"TiAMO\" Neij i slutningen af 2003, som en del af den svenske organisation Piratbyrån, men har siden oktober 2004 været en separat organisation. Trackeren fik for alvor vind i sejlene, da den slovenske hjemmeside Suprnova.org lukkede i slutningen af 2004. Suprnova havde været et af de største piratsites i verden, og The Pirate Bay overtog nu millioner af \"hjemløse\" pirater.", - "reddit":"Reddit er en social nyheds- og underholdningshjemmeside, hvor registrerede brugere indsender indhold i form af links eller tekst. Brugere stemmer derefter hver indgivelse \"op\" eller \"ned\" for at rangere stillingen og bestemme positionen på webstedets sider. Indholdsgallerier er organiseret af interesseområder ved navn \"subreddits\", blandt andet har Danmark sit eget subreddit.", - "soundcloud":"SoundCloud er en lyd- og musikdelingsside, som blev oprettet i 2007. I juli 2013 havde den 40 mio. brugere og 200 mio. lyttere.", - "semantic scholar":"Semantic Scholar er en forskningsdatabase udviklet af Allen Institute for AI og offentliggjort november 2015. Den bruger sprogteknologi til at give resuméer til videnskabelige artikler. Semantic Scholar forsker i brugen af kunstig intelligens i sprogteknologi, maskinlæring, menneske-computer-interaktion og informationssøgning.", - "youtube":"YouTube er en online video platform og socialt medie med hovedsæde i San Bruno i Californien, USA. Tjenesten blev udviklet af de tidligere PayPal-medarbejdere Steve Chen, Chad Hurley og Jawed Karim og åbnede den 14. februar 2005. Tjenesten blev i november 2006 købt af Google for 1,65 mia. $.", - "vimeo":"Vimeo er en videodelings-hjemmeside, hvor brugeren kan uploade, dele og se videoer. Det var den første videodelingsside, som understøttede high-definition video. Vimeo blev grundlagt i november 2004 af Jake Lodwick og Zach Klein. Siden fokuserer på kortfilm og film solgt via video on demand.", - "wikibooks":"Wikibooks er et søsterprojekt til Wikipedia, ejet og vedligeholdt af Wikimedia Foundation. Wikibooks fungerer grundlæggende på samme måde som Wikipedia, men i modsætning til at opbygge en encyklopædi, opbygger man i fællesskab lærebøger, manualer, introduktioner, guider m.m. Disse kaldes også åbne lærebøger og adskiller sig fra traditionelle lærebøger på følgende måde:De er normalt gratis De udgives kun som digitale ressourcer og skal ikke trykkes. De er dynamiske og kan løbende udvides eller ændres. De kan sættes sammen af individuelle bidrag.", - "wikinews":"Wikinews er en brugerdrevet nyhedskilde, som alle kan skrive artikler til. Ifølge projektets manifest er Wikinews' mål \"at fremme idéen om borgerjournalisten, fordi vi tror på, at alle kan give et værdifuldt bidrag til det store billede af, hvad der foregår i verden omkring os.\" Wikinews er et projekt under Wikimedia Foundation, og sitets artikler er frit indhold.", - "wikiquote":"Wikiquote er en online citatsamling med åbent indhold, citatsamlingen er oprettet i samarbejde mellem brugerne. Wikiquote styres af Wikimedia, en non-profit fond oprettet specielt til formålet.Den Danske Wikiquote Den Engelsksprogede Wikiquote", - "wikisource":"Wikisource er et af Wikipedias søsterprojekter, og sigter på at tilbyde et wikibaseret bibliotek med kildetekster til fri brug.", - "wikispecies":"Wikispecies er et af Wikipedias søsterprojekter og anvender den samme MediaWiki-software som Wikipedia. Wikispecies er nært beslægtet med de andre wiki-baserede projekter, der drives af Wikimedia Foundation.", - "wiktionary":"Wiktionary er en ordbog med åbent indhold fra Wikimedia Foundation. Den engelsksprogede version blev etableret i december 2002 og rummer mere end 3.500.000 artikler.", - "wikiversity":"Wikiversity er et projekt etableret af Wikimedia Foundation, der ønsker af skabe et frit universitet ved hjælp af wikiteknik. Projektet er flersprogligt og omfatter foreløbig 17 sprog, dog ikke dansk.", - "wikivoyage":"Wikivoyage er en fri webbaseret rejseguide for både rejsedestinationer og emner relateret til rejser, der er skrevet af frivillige forfattere.", - "wikicommons.images":"Wikimedia Commons er en central database til frie mediefiler, især billeder, videoklip og musik. Det er et Wikimedia-projekt, som blev sat i gang den 7. september 2004 og som pr. oktober 2014 har over 23 mio. filer, der er blevet uploadet og bliver vedligeholdt af frivillige. Databasen og dens filer kan bruges af alle, men de har en særlig status i forhold til de andre Wikimedia-projekter – herunder Wikipedia – da Commons-billeder kan flettes direkte ind i bl.a. Wikipedia-artikler som om de lå lokalt.", - "wolframalpha":"Wolfram Alpha er en beregningsmæssig vidensmotor eller svarmaskine udviklet af Wolfram Research. Det er en online søgemaskine som kan svare på faktuelle forespørgsler direkte ved at behandle disse vha. eksterne kilder. Dermed undlader Wolfram Alpha at oplyse en liste med links, som en normal søgemaskine måske ville.", - "dictzone":[ - "Online ordbøger: engelsk, spansk, tysk, fransk, italiensk, ungarsk... Vælg din yndlingsordbog!", - "https://dictzone.com/" - ], - "rumble":"Rumble er en online videoplatform, webhosting- og cloud-servicevirksomhed med hovedkvarter i Toronto, Ontario, med dets amerikanske hovedkvarter i Longboat Key, Florida. Selskabet blev grundlagt i oktober 2013 af den canadisk teknologiiværksætter Chris Pavlovski. Videoplatformen kan sammenlignes med – og er derfor også direkte konkurrent til – YouTube, mens selskabets cloud-serviceforretning bl.a. står for webhostingen af Truth Social." - }, - "de":{ - "9gag":"9GAG ist eine englischsprachige Online-Plattform, auf der Bilder, GIF-Animationen und Videos von Nutzern geteilt, kommentiert und bewertet werden. Bei einem Großteil der Postings handelt es sich um humoristische Inhalte wie Internet-Memes oder Rage Comics. Teilweise wird 9GAG aufgrund fehlender Quellenangaben bei den Beiträgen kritisiert.", - "annas archive":[ - "Suchmaschine für Schattenbibliotheken", - "wikidata" - ], - "apple app store":"Der App Store ist eine digitale Vertriebsplattform für Anwendungssoftware vom US-amerikanischen Unternehmen Apple. Die Plattform wurde 2008 eingeführt und bietet Mobile Apps für iOS-Geräte und Software für tvOS und watchOS.", - "artic":"Das Art Institute of Chicago ist ein 1866 gegründetes Kunstmuseum, verbunden mit der seit 1866 tätigen Kunsthochschule, 1882 umbenannt in School of the Art Institute of Chicago (SAIC) in Chicago, Illinois, (USA).", - "arxiv":"arXiv.org ist ein Dokumentenserver für Preprints aus den Bereichen Physik, Mathematik, Informatik, Statistik, Finanzmathematik und Biologie. Ausgesprochen wird arXiv als „archive“ (englisch), wobei das X für das griechische χ steht.", - "bandcamp":"Bandcamp ist ein Online-Musikdienst und eine Plattform zur Promotion, die sich insbesondere an unabhängige Künstler richtet. Künstler bei Bandcamp besitzen eine veränderbare Microsite mit den Alben, die sie hochladen. Viele Titel können kostenfrei auf der Internetseite abgespielt werden. Künstler können festlegen, ob Musikdownloads kostenlos oder kostenpflichtig möglich oder an die Angabe einer E-Mail-Adresse gekoppelt sind. Bandcamp nimmt einen Anteil von 15 % an den Verkäufen auf der Website, wobei der Anteil nach der Einnahme von mehr als 5.000 US-Dollar durch Verkäufe auf 10 % sinkt. Die Teilnahme bei Bandcamp ist kostenlos.", - "wikipedia":"Wikipedia [ˌvɪkiˈpeːdia] ist ein gemeinnütziges Projekt zur Erstellung einer freien Enzyklopädie auf Basis des sogenannten Wiki-Prinzips.", - "bilibili":"Bilibili ist eine Video-Sharing-Website, die sich mit Zeichentrickfilmen, Comic und Spielen in China beschäftigt. Benutzer können Kommentar-Untertitel für Videos einreichen, anzeigen und hinzufügen. Bilibili verwendet einen Adobe-Flash- oder HTML5-Player, der manuell umgeschaltet werden kann, um vom Benutzer übermittelte Videos wiederzugeben, die entweder von ihm selbst oder bei Drittanbieter-Quellen gehostet werden, mit einem Echtzeituntertitelsystem für interaktive Wiedergabe.", - "bing":"Microsoft Bing ist eine Internet-Suchmaschine von Microsoft und der Nachfolger von Live Search. Bing wurde im Juni 2009 im Beta-Stadium in Betrieb genommen, welches sie am 27. Januar 2012 verließ.", - "bing images":[ - "bing:de", - "ref" - ], - "bing news":[ - "News aus aller Welt, landesweiten und örtlichen Quellen informieren Sie übersichtlich und ausführlich über Sportereignisse, Unterhaltung, Wirtschaft, Politik, Wetter und vieles mehr.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Mit der intelligenten Bing-Suche können Sie die gewünschten Informationen schneller und einfacher finden und dabei Punkte sammeln.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket ist ein webbasierter Onlinedienst zur Versionsverwaltung für Software-Entwicklungsprojekte. Der Dienst wurde ursprünglich als reines Mercurial-System entwickelt, jedoch am 3. Oktober 2011 um Unterstützung für Git erweitert. Bitbucket wurde 2007 durch den Dänen Jesper Nøhr entwickelt und 2010 von Atlassian gekauft. Seit dem 1. Juli 2020 wird Mercurial nicht mehr unterstützt.", - "ccc-tv":[ - "Video Streaming Portal des Chaos Computer Clubs", - "wikidata" - ], - "chefkoch":[ - "350.000 Back- und Kochrezepte zum Nachkochen - inkl. Videos, Artikel und Kochbuch. Inspiriere dich bei Chefkoch! Rezepte ✓einfach ✓lecker ✓kostenlos.", - "https://www.chefkoch.de" - ], - "crossref":"Crossref wurde im Jahr 2000 als mitgliederbasierte Non-Profit-Organisation Publishers International Linking Association Inc. (PILA) gegründet. Ziel dieser Kooperation der Verlagswelt war es, das Problem der Verlinkung zwischen Fachartikeln unterschiedlicher Verlage – der Verlinkung vom zitierenden Artikel zum zitierten Artikel – zu lösen. Statt bilateraler Vereinbarungen zwischen Verlagen sollte Crossref einen Service bereitstellen, der es ermöglichte, über Persistent Identifier auf Inhalte anderer Verlage zu verlinken.", - "curlie":"Das Open Directory Project (ODP), auch bekannt als dmoz, war das größte von Menschen gepflegte Webverzeichnis des World Wide Web. Die Inhalte des Projekts sind frei und wurden von ehrenamtlichen Redakteuren, den so genannten Editoren, bearbeitet und aktualisiert.", - "currency":"DuckDuckGo (DDG) ist eine Internet-Suchmaschine, die keine persönlichen Informationen sammelt.", - "deezer":"Deezer ist ein internationaler Musikstreaming-Dienst, der im August 2007 in Frankreich gegründet wurde. Deezer ist in mehr als 180 Ländern verfügbar und streamt einen Katalog von über 90 Millionen Titeln mit einer Bitrate von bis zu 320 kbit/s und – mit Deezer HiFi – 1411 kbit/s. Neben Musik haben Nutzer auch Zugriff auf Hörbücher, Hörspiele und Podcasts. Deezer finanziert sich teilweise aus Werbung und hat rund 16 Millionen aktive Nutzer.", - "deviantart":"DeviantArt ist ein kommerzieller Onlinedienst mit zahlreichen Elementen einer Internetgemeinschaft, der registrierten Nutzern die Möglichkeit bietet, eigene Werke aus den Bereichen Fotografie, Grafik oder Illustration zu veröffentlichen. Zahlreiche dieser Werke können im integrierten Shop angeboten und von anderen Nutzern in gedruckter Form bestellt werden, wozu keine kostenpflichtige Mitgliedschaft notwendig ist.", - "ddg definitions":[ - "currency:de", - "ref" - ], - "docker hub":"Docker ist eine freie Software zur Isolierung von Anwendungen mit Hilfe von Containervirtualisierung.", - "erowid":"Erowid ist eine Nichtregierungsorganisation, die im Oktober 1995 gegründet wurde. Die englischsprachige Website von Erowid ist eine Online-Datenbank mit Informationen zu psychoaktiven Substanzen und verwandten Themen und hat täglich im Durchschnitt über 41.000 Besucher. Erowid wird seit 1. Januar 2008 vom offiziell als Non-Profit-Organisation anerkannten „Erowid Center“ betrieben. Die Organisation hat ihren Sitz im Norden des US-Bundesstaats Kalifornien, die Server stehen in San Francisco. Erowid finanziert sich ausschließlich über Spenden. Banner oder sonstige Werbung gibt es nicht auf der Website.", - "wikidata":"Wikidata ist eine frei bearbeitbare Wissensdatenbank, die unter anderem das Ziel hat, Wikipedia zu unterstützen. Das Projekt wurde von Wikimedia Deutschland gestartet und stellt als gemeinsame Quelle bestimmte Datentypen für Wikimedia-Projekte bereit, zum Beispiel Geburtsdaten oder sonstige allgemeingültige Daten, die in allen Artikeln der Wikimedia-Projekte verwendet werden können.", - "duckduckgo":[ - "currency:de", - "ref" - ], - "duckduckgo images":[ - "currency:de", - "ref" - ], - "duckduckgo videos":[ - "currency:de", - "ref" - ], - "duckduckgo news":[ - "currency:de", - "ref" - ], - "duckduckgo weather":[ - "currency:de", - "ref" - ], - "apple maps":"Apple Karten ist ein Kartendienst von Apple, der im September 2012 mit dem hauseigenen Betriebssystem iOS 6 gestartet wurde. Die iOS-eigene Anwendung Karten ist die lokalisierte Anwendung für den Kartendienst auf dem iPhone, iPad und iPod touch. Seit OS X Mavericks ist die Anwendung Karten auch auf dem Mac vorinstalliert.", - "emojipedia":"Die Emojipedia ist ein englischsprachiges Online-Nachschlagewerk für Emojis. Sie wurde am 14. Juli 2013 vom australischen Emoji-Experten Jeremy Burge gegründet und ist die führende Ressource zu Emojis im Internet.", - "tineye":"Idée Inc. ist ein als Aktiengesellschaft eingetragenes Unternehmen aus Toronto, das Bildidentifizierungs- und Suchsoftware entwickelt und anbietet. Das Unternehmen gilt als einer der Pioniere in der Bildüberwachungsindustrie.", - "fdroid":"F-Droid ist ein alternativer App Store für das mobile Betriebssystem Android. Die Besonderheit von F-Droid besteht darin, dass im offiziellen und standardmäßig aktivierten Repository ausschließlich freie Software angeboten wird, üblicherweise nach GNU GPL oder Apache-Lizenz. Der Quellcode jeder App im F-Droid-Repositorium steht nicht nur dem Endnutzer zur Einsichtnahme und Modifikation zur Verfügung, sondern es wird auch garantiert, dass die heruntergeladene apk-Datei vom F-Droid-Server aus diesen Quellen generiert wurde. Entsprechend ist diese Datei auch von F-Droid signiert und nicht wie üblich vom ursprünglichen Entwickler. Dieses Konzept soll für Transparenz und Sicherheit sorgen.", - "flickr":"Flickr ist ein kommerzieller Onlinedienst mit Community-Elementen, der es Benutzern erlaubt, digitale und digitalisierte Bilder sowie kurze Videos von maximal zehn Minuten Dauer mit Kommentaren und Notizen auf die Website zu laden und so anderen Nutzern zugänglich zu machen. Neben dem herkömmlichen Hochladen über die Website können die Bilder auch per E-Mail oder vom Mobiltelefon aus übertragen und später von anderen Webauftritten aus verlinkt werden.", - "free software directory":[ - "Verzeichnis freier Software als Projekt der Free Software Foundation", - "wikidata" - ], - "genius":"Genius ist eine Online-Wissensdatenbank. Die Seite ermöglicht es Benutzern, Anmerkungen und Interpretationen zu Songtexten, aber auch News, Poesie, politischen Reden und anderen Textformen zu erstellen. Bei der Gründung 2009 lag der Fokus auf Rap-Musik. 2014 vergrößerte sich die Seite und ermöglichte es, Anmerkungen auf anderen Websites einzubetten. Im selben Jahr wurde eine iPhone-App veröffentlicht. Im Juli 2014 änderte die Seite ihren Namen von Rap Genius zu Genius.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab ist eine Onlinedienst zur Softwareentwicklung und Versionsverwaltung für Softwareprojekte auf Git-Basis. GitLab bietet ein Issue-Tracking-System mit Kanban-Board, ein System für Continuous Integration und Continuous Delivery (CI/CD), ein Wiki, eine Container-Registry, einen Sicherheitsscanner für Container und Sourcecode sowie Multi-Cluster-Verwaltung und -Überwachung. GitLab ist in Produkte für Entwickler, wie zum Beispiel AWS oder Google Cloud, integrierbar und über eine API fernsteuerbar. GitLab ist in den Programmiersprachen Ruby und Go geschrieben.", - "github":"GitHub ist ein Onlinedienst zur Softwareentwicklung und Versionsverwaltung für Softwareprojekte auf Git-Basis. Das Unternehmen GitHub, Inc. hat seinen Sitz in San Francisco in den USA. Seit dem 26. Dezember 2018 gehört das Unternehmen zu Microsoft.", - "google":"Google ist eine Internet-Suchmaschine des US-amerikanischen Unternehmens Google LLC. Mit mehr als 3 Milliarden Suchanfragen pro Tag hat Google einen Anteil von über 92 % am globalen Suchmaschinenmarkt und ist die meistbesuchte Website der Welt.", - "google images":[ - "Google Bilder, die umfassendste Bildersuche im Web", - "https://images.google.com" - ], - "google news":"Google News ist eine Nachrichtensuchmaschine und automatisch erstellte Nachrichten-Website des US-amerikanischen Unternehmens Google LLC.", - "google scholar":"Google Scholar ist eine Suchmaschine des Unternehmens Google LLC und dient der allgemeinen Literaturrecherche wissenschaftlicher Dokumente. Dazu zählen sowohl kostenlose Dokumente aus dem freien Internet als auch kostenpflichtige Angebote. Zumeist werden als Treffer Volltexte oder zumindest bibliographische Nachweise angezeigt. Google Scholar analysiert und extrahiert die in den Volltexten enthaltenen Zitate und erstellt daraus eine Zitationsanalyse. Darüber hinaus können die bibliographischen Angaben dieser Zitate über den Suchdienst recherchiert werden. Im Januar 2018 wurde der Umfang von Google Scholar auf ca. 389 Millionen Dokumente geschätzt. Damit ist Google Scholar derzeit die weltweit größte akademische Suchmaschine.", - "google play apps":"Google Play ist ein App Store des US-amerikanischen Unternehmens Google, der Mobile Apps, Handyspiele, E-Books, Hörbücher, Filme und Fernsehserien anbietet. Google Play wurde am 28. August 2008 als Android Market angekündigt und am 22. Oktober 2008 für die Nutzung zur Verfügung gestellt. Früher gehörten zum Angebot auch Musik und digitale Zeitschriften.", - "google play movies":[ - "google play apps:de", - "ref" - ], - "hackernews":"Hacker News, abgekürzt auch HN ist eine Social-News-Website, die vornehmlich Programmierer, Existenzgründer und Unternehmer anspricht. Der Inhalt der Nachrichten stammt meist aus dem Bereich der Informatik und der Existenzgründung. Die Seite wird von Paul Grahams Investmentfirma Y Combinator betreut. Die Inhalte können jedoch auch aus anderen Themengebieten stammen. Es gilt der Leitsatz, dass jeder Inhalt erwünscht ist, der die intellektuelle Neugier befriedigt.", - "hoogle":"Haskell ist eine rein funktionale Programmiersprache, benannt nach dem US-amerikanischen Mathematiker Haskell Brooks Curry, dessen Arbeiten zur mathematischen Logik eine Grundlage funktionaler Programmiersprachen bilden. Haskell basiert auf dem Lambda-Kalkül, weshalb auch der griechische Buchstabe Lambda als Logo verwendet wird. Die wichtigste Implementierung ist der Glasgow Haskell Compiler (GHC).", - "imdb":"Die Internet Movie Database ist eine US-amerikanische Datenbank zu Filmen, Fernsehserien, Videoproduktionen und Computerspielen sowie über Personen, die daran mitgewirkt haben. Im Juni 2022 gab es zu über elf Millionen Titeln Einträge. Diese verteilen sich unter anderem auf Einträge zu 613.000 verschiedenen Spielfilmproduktionen, über 260.000 Videofilmen, über 136.000 TV-Filmen, 227.000 TV-Serien, fast 6,8 Millionen Serienepisoden und mehr als 1,9 Millionen Einträge zu Podcast-Episoden. Zudem sind über 11,7 Millionen Film- und Fernsehschaffende aufgeführt. Betrieben wird die Datenbank seit 1998 von Amazon.", - "imgur":"Imgur ist ein kostenloser Filehosting-Dienst für Bilder sowie eine kommentargetriebene Gemeinschaft. Die Seite wird durch Einnahmen aus Werbung und Merchandise unterhalten.", - "ina":"Das Institut national de l’audiovisuel (INA) ist ein öffentlich-rechtliches französisches Unternehmen. Das INA war das erste digitalisierte Archiv Europas. Sein Auftrag ist es, alle französischen Rundfunk- und Fernsehproduktionen zu sammeln, zu bewahren und öffentlich zugänglich zu machen, in etwa vergleichbar dem Auftrag der Bibliothèque nationale de France (BnF), geschriebene und gedruckte Dokumente aller Art zu archivieren. Die Sammlungen des INA sind über seine Website für die Öffentlichkeit teilweise kostenlos zugänglich, der Rest unterliegt urheberrechtlichen Beschränkungen.", - "jisho":[ - "Japanisch-Englisch Wörterbuch", - "wikidata" - ], - "kickass":"KickassTorrents, auch KAT, war ein Webverzeichnis für BitTorrent und Magnet-Links, bei welchem Nutzer Torrent-Dateien herunterladen und hinzufügen konnten, um einen Peer-to-Peer-Datenaustausch zu ermöglichen. Die Seite war von November 2014, wo sie die schwedische Website The Pirate Bay überholte, bis zu ihrer Sperrung im Juli 2016 der weltweit beliebteste BitTorrent-Indizierer und zudem eine der meistbesuchten Websites der Welt.", - "library genesis":"Library Genesis oder LibGen ist eine Schattenbibliothek und Suchmaschine für Bücher und wissenschaftliche Aufsätze. Das Projekt gewährt auf seiner Website einen kostenlosen Zugang zu urheberrechtlich geschützter Literatur, die sonst nur hinter Bezahlschranken online verfügbar ist, und bietet diese zum Download an. Unter anderem bezieht Library Genesis PDFs von Elseviers Online-Datenbank ScienceDirect. Die Rechtmäßigkeit des Dienstes, der sich – ebenso wie das ähnliche Projekt Sci-Hub – zunehmend rechtlichen Streitigkeiten ausgesetzt sieht, ist umstritten.", - "z-library":"Z-Library, kurz z-lib, ist eine sogenannte Schattenbibliothek, die freien Zugang zu üblicherweise kostenpflichtigen Büchern und wissenschaftlichen Zeitschriften ermöglicht. Nach eigenen Angaben stehen mehr als 90 Millionen Dokumente online zum Abruf zur Verfügung. Diese können heruntergeladen oder per Volltextrecherche durchsucht werden. Nach Betreiberangaben nutzen über 600.000 Studenten und Lehrer weltweit den Dienst, besonders beliebt sei er in Schwellenländern. In Europa fänden sich die meisten Nutzer in Großbritannien.", - "library of congress":"Die Library of Congress ist die öffentlich zugängliche Forschungsbibliothek des Kongresses der Vereinigten Staaten. Sie befindet sich, auf mehrere Gebäude verteilt, in Washington, D.C. Die LoC ist beim Medienbestand die zweitgrößte, beim Bücherbestand die größte Bibliothek der Welt und insgesamt eine der bedeutendsten.", - "mastodon users":"Mastodon ist ein verteilter Mikroblogging-Dienst, der seit 2016 von Eugen Rochko und der von ihm in Jena gegründeten und in Berlin ansässigen Mastodon gGmbH entwickelt wird. Im Gegensatz zu großen vergleichbaren Diensten wie Twitter ist Mastodon als dezentrales Netzwerk konzipiert, das nicht auf einer Plattform basiert: Verschiedene Server, von Privatpersonen, Vereinen oder sonstigen Stellen eigenverantwortlich betrieben, können miteinander interagieren. Seit März 2023 sind über 10 Millionen Nutzer im Mastodon-Netzwerk registriert.", - "mastodon hashtags":[ - "mastodon users:de", - "ref" - ], - "metacpan":"CPAN ist ein weltweit gespiegeltes Online-Repository für Perl-Module, -Anwendungen und -Dokumentationen, das am 25. Oktober 1995 in Anlehnung an die TeX-Library CTAN ins Leben gerufen wurde und sich schnell zum De-facto-Standard entwickelt hat. Es bietet die Möglichkeit einer komfortablen Installation und Verwaltung von Perl-Modulen. Im Oktober 2020 umfasste das CPAN circa 260 Server auf fünf Kontinenten und enthielt ca. 39.700 Distributionen von über 12.700 Autoren mit einem Volumen von ungefähr 21 GB.", - "mixcloud":"Mixcloud ist ein britischer Online-Musikdienst, auf dem speziell – im Gegensatz zu SoundCloud – Mixe gestreamt werden. Angemeldete Nutzer können DJ-Sets, Podcasts und Hörfunk-Sendungen streamen, welche man sich auch unangemeldet online anhören kann. Es werden sowohl Formate von Star-DJs wie z. B. Robin Schulz als auch von Radio-DJs sowie auch von Amateuren gelistet. Aus rechtlichen Gründen werden die Mixe jedoch nicht zum Download angeboten; manche lizenzierten Mixe lassen sich auch nur exklusiv via bezahltem Subscribe-Abo des jeweiligen Kanals nutzen; diese können dann lediglich zum Offline-Hören in die zugehörige Mixcloud-App geladen werden.", - "npm":"npm ist ein Paketmanager für die JavaScript-Laufzeitumgebung Node.js. npm wurde 2010 von Isaac Schlueter als Mitarbeiter des kalifornischen Cloud-Plattform-Anbieters Joyent programmiert. 2014 gründete er die „npm, inc.“", - "openairedatasets":"OpenAIRE steht für ein pan-europäisches Forschungsinformationssystem zur Darstellung und Verknüpfung von Forschungsergebnissen, welches Metadaten aus Repositorien, Archiven, wissenschaftlichen Zeitschriften und anderen Infrastrukturen aggregiert.", - "openairepublications":[ - "openairedatasets:de", - "ref" - ], - "openstreetmap":"OpenStreetMap (OSM) ist ein freies Projekt, das frei nutzbare Geodaten sammelt, strukturiert und für die Nutzung durch jedermann in einer Datenbank vorhält. Diese Daten stehen unter einer freien Lizenz, der Open Database License. Kern des Projekts ist also eine offen zugängliche Datenbank aller beigetragenen Geoinformationen.", - "packagist":[ - "Hauptrepostorium öffentlich verfügbarer PHP-Pakete, die mit Composer installiert werden können", - "wikidata" - ], - "pinterest":"Pinterest ist eine Online-Pinnwand für Grafiken und Fotografien mit optionalem sozialem Netzwerk inklusive visueller Suchmaschine.", - "piratebay":"The Pirate Bay ist ein web-basierter Indizierer für digitale Inhalte, bei dem Besucher Magnet-Links und früher auch .torrent-Dateien finden, herunterladen und hinzufügen können, um einen Peer-to-Peer-Dateiaustausch via BitTorrent zwischen den Nutzern aufbauen zu können.", - "pubmed":"MEDLINE ist eine öffentlich zugängliche bibliografische Datenbank des US-amerikanischen National Center for Biotechnology Information (NCBI).", - "qwant":"Qwant ist eine Suchmaschine, die vom gleichnamigen französischen Unternehmen entwickelt wurde und mit umfassendem Datenschutz wirbt.", - "qwant news":[ - "qwant:de", - "ref" - ], - "qwant images":[ - "qwant:de", - "ref" - ], - "qwant videos":[ - "qwant:de", - "ref" - ], - "reddit":"Reddit [ˈrɛdɪt] ist ein Social-News-Aggregator, eine Website, auf der registrierte Benutzer Inhalte einstellen bzw. anbieten können. Ein Inhalt kann entweder aus einem Link, einem Video, einem Bild, einer Umfrage oder einem Textbeitrag bestehen. Andere Benutzer können die Beiträge als positiv oder negativ beurteilen. Die Bewertungen beeinflussen, welche Position der Beitrag auf der jeweiligen Reddit-Seite sowie der Startseite einnimmt.", - "soundcloud":"Soundcloud ist ein Online-Musikdienst zum Austausch und zur Distribution von Audiodateien. Er dient als Kooperations- und Werbeplattform für Musiker.", - "stackoverflow":"Stack Exchange ist ein Netzwerk von Frage-Webseiten, die jeweils verschiedene Fachthemen abdecken. Das Prinzip dieser Webseiten ist es, dass User der Community Fragen zu einem bestimmten Problem stellen können, die dann im optimalen Fall auch zufriedenstellend beantwortet werden. Die wohl bekannteste Webseite innerhalb von Stack Exchange ist Stack Overflow.", - "askubuntu":[ - "stackoverflow:de", - "ref" - ], - "superuser":[ - "stackoverflow:de", - "ref" - ], - "startpage":"Startpage ist eine Suchmaschine, die die eingegebenen Suchanfragen an die Google-Suchmaschine weiterleitet und dadurch anonymisiert die Suchergebnisse anzeigt. Damit will der Betreiber den Datenschutz seiner Nutzer gewährleisten. Startpage wird von der niederländischen Startpage B.V. betrieben, die zur Surfboard Holding B.V. gehört.", - "tagesschau":"Die Tagesschau ist eine Nachrichtensendung der ARD, die von ARD-aktuell in Hamburg produziert und täglich mehrmals im Ersten, auf tagesschau24 und als Live-Stream auf tagesschau.de sowie als Hauptausgabe um 20 Uhr zusätzlich in den Dritten Fernsehprogrammen, Phoenix, 3sat, DW-TV, tagesschau24 und ARD alpha ausgestrahlt wird.", - "unsplash":"Unsplash ist eine internationale Website für Fotos, die von ihren Urhebern der Online-Community zur kostenlosen Verwendung zur Verfügung gestellt werden.", - "yahoo news":"Die Altaba Inc. war eine US-amerikanische Beteiligungsgesellschaft, die unter anderem Anteile an Alibaba und Yahoo! Japan hielt. Gegründet wurde das Unternehmen als Internetunternehmen von David Filo und Jerry Yang im Januar 1994 unter dem Namen Yahoo.", - "youtube":"YouTube ist ein 2005 gegründetes Videoportal des US-amerikanischen Unternehmens YouTube, LLC, seit 2006 eine Tochtergesellschaft von Google LLC, mit Sitz im kalifornischen San Bruno. Die Benutzer können auf dem Portal kostenlos Videoclips ansehen, bewerten, kommentieren und selbst hochladen. 2019 erzielte YouTube einen Jahresumsatz von 15 Milliarden Dollar. Die Einnahmen werden zum Großteil durch das Abspielen von Werbespots generiert.", - "dailymotion":"Dailymotion ist ein Videoportal des gleichnamigen französischen Unternehmens, bei dem Videos hochgeladen und öffentlich angeschaut werden können. Es wurde 2005 in Paris gegründet und gehört zu den führenden Videoportalen. Dailymotion war die erste bekannte Videoplattform, die eine Auflösung von 720p (HD) unterstützte.", - "vimeo":"Vimeo ist ein 2004 gegründetes Videoportal des US-amerikanischen Unternehmens Vimeo LLC mit Sitz ursprünglich in White Plains im Bundesstaat New York und inzwischen am Hudson River in Manhattan. Es unterstützt seit 2007 das Streaming von Videos in HD und seit 2015 in 4K Ultra HD. Neben der kostenlosen Nutzung des Portals bietet es auch die Möglichkeit, kostenpflichtige Inhalte zu veröffentlichen.", - "wikibooks":"Wikibooks ist ein so genanntes Wiki zur Erstellung von Lehr-, Sach- und Fachbüchern unter der Creative Commons Attribution/Share-Alike Lizenz 3.0 und GNU-Lizenz für freie Dokumentation.", - "wikinews":"Wikinews ist ein internationales Wikimedia-Projekt zur gemeinschaftlichen Erstellung einer freien und neutralen Nachrichtenquelle. Wikinews ermöglicht es jedem Internet-Nutzer, Nachrichten zu einem breiten Themenkreis zu veröffentlichen. Dazu setzt es wie seine Schwesterprojekte Wikipedia, Wiktionary, Wikibooks, Wikiquote, Wikispecies und Wikisource die Wiki-Software MediaWiki ein.", - "wikiquote":"Wikiquote [ˌvɪkiˈkwoʊt] ist ein freies Online-Projekt mit dem Ziel, auf Wiki-Basis eine freie Zitatensammlung mit Zitaten in jeder Sprache zu schaffen. Wikiquote basiert wie die Wikipedia auf der Software MediaWiki. Für zusätzliche Informationen sorgen Links in die Wikipedia und zu Wikimedia-Projekten wie den Wikimedia Commons, Wikisource oder dem Wiktionary.", - "wikisource":"Wikisource [ˌvɪkiˈsɔːɹs] ist ein freies Online-Projekt zur Sammlung und Edition von Texten, die entweder urheberrechtsfrei (gemeinfrei) sind oder unter einer freien Lizenz stehen. Wie das Schwesterprojekt Wikipedia wird Wikisource von der Wikimedia Foundation betrieben und nutzt als Software MediaWiki.", - "wikispecies":"Wikispecies ist ein im September 2004 begonnenes Internetprojekt, das von der Wikimedia Foundation auf Basis eines Wikis betrieben wird. Es hat zum Ziel, ein Artenverzeichnis mit Angaben zu Taxonomie und Nomenklatur aller Lebensformen – Tieren, Pflanzen, Pilzen, verschiedenen Algengruppen, eukaryotischen Einzellern, Bakterien und Archaeen – sowie Viren aufzubauen. Ebenso wie die Wikimedia Commons ist Wikispecies ein sprachübergreifendes Projekt. Die Inhalte stehen unter der GNU-Lizenz für freie Dokumentation und der Creative-Commons-Lizenz CC BY-SA 3.0 zur Verfügung.", - "wiktionary":"Das Wiktionary (Wikiwörterbuch) ist ein gemeinschaftliches Projekt der Wikimedia Foundation zur Erstellung eines frei zugänglichen, mehrsprachigen Wörterbuches sowie eines entsprechenden Thesaurus in jeder Sprache. Der Name Wiktionary ist ein analog zu Wikipedia gebildetes Kofferwort, das sich aus den Wörtern wiki und dictionary zusammensetzt. Seit der Gründung 2002 wuchs die Anzahl der Einträge in die Wiktionarys international auf über 29,6 Millionen an.", - "wikiversity":"Die Wikiversity ist eine Online-Plattform in Form eines Wikis zum gemeinschaftlichen Lernen, Lehren und Forschen. Sie ist ein Projekt der Wikimedia Foundation und startete am 15. August 2006. Auf Wikiversity werden freie Lernmaterialien erstellt und gesammelt. Außerdem können dort Lehrveranstaltungen durchgeführt bzw. begleitet werden (E-Learning).", - "wikivoyage":"Wikivoyage [ˌvɪkivo̯aˈjaːʒ] ist ein von ehrenamtlichen Autoren erstellter freier Führer rund ums Reisen. Im Vordergrund von Wikivoyage steht die Bereitstellung von praktisch anwendbarem Wissen zu Reisezielen und Reisethemen. Die Bezeichnung setzt sich aus den Bestandteilen „Wiki“ und dem französischen Wort „voyage“ für Reise zusammen.", - "wikicommons.images":"Wikimedia Commons ist eine internationale Sammlung von freien Bildern, Videos und Audiodateien. Betreiberin ist die Wikimedia Foundation (USA). Die Datenbank ist mit Wikipedia und anderen Wikimedia-Projekten verknüpft, so dass die Dateien, hauptsächlich Bilder, in Wikipedia direkt aus Commons eingebunden werden können. Das Medienarchiv ist kostenfrei und zum Aufrufen ohne Anmeldung nutzbar. Der Name leitet sich vom englischen Wort “commons” ab, im Sinne eines Ortes, den alle Dorfbewohner nutzen dürfen.", - "wolframalpha":"Wolfram Alpha ist ein auf der Software Mathematica basierender Onlinedienst zum Auffinden und Darstellen von Informationen, der von Wolfram Research entwickelt wird.", - "dictzone":[ - "DictZone online Wörterbücher, Englisch, Ungarisch, Deutsch, Russisch...", - "https://dictzone.com/" - ], - "1337x":"1337x ist eine Website, die ein Verzeichnis von Torrent-Dateien und Magnet-Links für den Peer-to-Peer-Dateiaustausch über das BitTorrent-Protokoll bereitstellt. Laut dem TorrentFreak-Newsblog ist 1337x die drittbeliebteste Torrent-Website im Jahr 2021.", - "duden":[ - "Duden ist die Marke der deutschen Sprache ➤ Wörterbücher, Sachbücher, Ratgeber, Lernhilfen und viele digitale Produkte (Software und Apps) ➤ Duden ist mehr als ein Wörterbuch!", - "https://www.duden.de" - ], - "seznam":"Seznam.cz ist ein tschechisches Internetportal mit Suchmaschine der seznam.cz, a.s. mit Sitz in Prag. Der größte Mitbewerber um Marktanteile in Tschechien ist Google, der sich auf dem tschechischen Markt bis 2011 nicht behaupten konnte und seine Dienste erst 2006 in Tschechien einführte. Seznam bedeutet übersetzt Verzeichnis.", - "moviepilot":[ - "Dein Guide für Filme in Kino, TV und auf DVD. Entdecke Filme auf eine neue Art - erhalte persönliche Vorhersagen, wie gut dir ein Film gefallen wird.", - "https://www.moviepilot.de" - ], - "naver":"Naver ist ein südkoreanisches Webportal, das 1999 entwickelt wurde. Es umfasst eine Suchmaschine und diverse weitere Dienste.", - "rubygems":"RubyGems ist das offizielle Paketsystem für die Programmiersprache Ruby. Es stellt ein Paketformat, ein Werkzeug zur Verwaltung von Paketen und ein Repositorium für deren Verteilung zur Verfügung. Mit ihm hat der Anwender die Möglichkeit, mehrere Versionen eines Programmes, Programmteiles oder einer Bibliothek gesteuert nach Bedarf einzurichten, zu verwalten oder auch wieder zu entfernen. Es funktioniert analog zum Paketmanager Pip bei Python, hat aber auch Ähnlichkeiten zu apt-get oder yum.", - "peertube":"PeerTube ist eine dezentralisierte, freie, föderierte Software für Video-Plattformen betrieben durch ActivityPub und WebTorrent, welches Peer-to-Peer-Technik verwendet, um die individuelle Server-Belastung zu reduzieren, während Videos geschaut werden.", - "mediathekviewweb":"MediathekView ist ein Programm, das die Online-Mediatheken verschiedener öffentlich-rechtlicher TV-Sender durchsuchen und die vorhandenen Sendungen auflisten kann. Im Oktober 2016 gab der Entwickler bekannt, dass er die Pflege des Programms zum Jahresende einstellen und sich fortan die Community darum kümmern werde. Innerhalb von drei Wochen bildete sich ein Team dafür.", - "yacy":"YaCy ist eine Suchmaschine, die nach dem Peer-to-Peer-Prinzip – kurz P2P – arbeitet. Dabei gibt es keinen zentralen Server, sondern alle Teilnehmer sind gleichwertig.", - "yacy images":[ - "yacy:de", - "ref" - ], - "rumble":"Rumble ist ein kanadisches Videoportal mit Hauptsitz in Toronto. Es wurde 2013 von Chris Pavlovski, einem IT-Unternehmer aus Kanada, gegründet. Ab 2020 stiegen die Nutzerzahlen des Portals stark an und überschritten die Marke von 30 Millionen Nutzern. Mitte 2021 wurde der Wert der Plattform auf 500 Millionen US-Dollar geschätzt. Ab 2022 verzeichnet Rumble laut dem Analyseunternehmen Similarweb 150 Millionen monatliche Besucher.", - "woxikon.de synonyme":[ - "Entdecke das umfassende Online-Lexikon und -Wörterbuch Woxikon ▶ Synonyme & Antonyme ✓ Kreative Sprüche ✓ Geläufige Abkürzungen ✓ Passende Reime ✓ Konjugierte Verben & vieles mehr ✓ Schau vorbei!", - "https://www.woxikon.de/" - ], - "sjp.pwn":[ - "polnisches Online-Wörterbuch", - "wikidata" - ], - "wttr.in":[ - "Wetterbericht für: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave ist ein quelloffener Webbrowser für die Betriebssysteme Windows, macOS, Linux, Android und für Apple iOS. Initiator und Projektleiter ist Brendan Eich.", - "brave.images":[ - "brave:de", - "ref" - ], - "brave.videos":[ - "brave:de", - "ref" - ], - "brave.news":[ - "brave:de", - "ref" - ], - "sourcehut":[ - "Platform für Softwareprojekte", - "wikidata" - ] - }, - "el-GR":{ - "9gag":"Το 9GAG είναι μια ηλεκτρονική πλατφόρμα και ιστότοπος με έδρα το Χονγκ Κονγκ. Οι χρήστες ανεβάζουν και μοιράζονται περιεχόμενο που δημιουργείται από χρήστες ή άλλο περιεχόμενο από εξωτερικούς ιστότοπους κοινωνικών μέσων. Από τη στιγμή που ο ιστότοπος ξεκίνησε την 1η Ιουλίου 2008, έχει αυξηθεί σε δημοτικότητα, φθάνοντας τα 41,2 εκατομμύρια μέλη στο Facebook, 16.8 εκατομμύρια στο Twitter στις 5 Φεβρουαρίου του 2017 και 58 εκατομμύρια στο Instagram την 4η Οκτωβρίου του 2022.", - "apple app store":"Το App Store είναι μία πλατφόρμα τύπου ψηφιακής διανομής, που αναπτύσσεται και συντηρείται από την Apple Inc. Το κατάστημα επιτρέπει στους χρήστες να περιηγηθούν και να κατεβάσουν τις εφαρμογές που έχουν αναπτυχθεί από την Apple και από προγραμματιστές \"3ου βαθμού\" για συσκευές iOS, iPadOS, watchOS και tvOS. Οι εφαρμογές μπορούν να μεταφορτωθούν στις συσκευές iPhone, iPad, iPod Touch, στο Apple Watch, και στο Apple TV.", - "arxiv":"Το arXiv είναι ηλεκτρονικό αποθετήριο ελεύθερης πρόσβασης για επιστημονικές μελέτες πριν την ακαδημαϊκή δημοσίευση τους, για θέματα που αφορούν τα μαθηματικά, φυσική, αστρονομία, επιστήμη υπολογιστών, βιολογία, στατιστικά, και μαθηματικοοικονομικές μελέτες. Ιδιαίτερα στους κλάδους των μαθηματικών και της φυσικής, σχεδόν το σύνολο των επιστημονικών μελετών γίνεται πρώτα διαθέσιμο στο arXiv, όπου γίνεται η αρχική ανεπίσημη αξιολόγηση και σχολιασμός από την επιστημονική κοινότητα.", - "wikipedia":"Η Βικιπαίδεια είναι διεθνής, παγκόσμια, ψηφιακή, διαδικτυακή, ελεύθερου περιεχομένου, εγκυκλοπαίδεια, που βασίζεται σε ένα μοντέλο ανοικτό στη σύνταξη του περιεχομένου της.", - "bing":"Το Microsoft Bing είναι μια μηχανή αναζήτησης ιστού που ανήκει και λειτουργεί από τη Microsoft. Η υπηρεσία έχει τις ρίζες της στις προηγούμενες μηχανές αναζήτησης της Microsoft: MSN Search, Windows Live Search και Live Search. Το Bing παρέχει μια ποικιλία υπηρεσιών αναζήτησης, όπως προϊόντα αναζήτησης ιστού, βίντεο, εικόνας και χαρτών. Αναπτύσσεται χρησιμοποιώντας το ASP.NET.", - "bing images":[ - "bing:el-GR", - "ref" - ], - "bing news":[ - "Ειδήσεις από διεθνείς, εθνικές και τοπικές πηγές ειδήσεων, οργανωμένες έτσι, ώστε να σας παράσχουν λεπτομερή ενημέρωση για θέματα όπως σπορ, ψυχαγωγία, επιχειρήσεις, πολιτική, καιρός και άλλα.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Η έξυπνη αναζήτηση του Bing σάς διευκολύνει να βρίσκετε γρήγορα αυτό που ψάχνετε και σας ανταμείβει.", - "https://www.bing.com/videos" - ], - "currency":"Η DuckDuckGo (DDG) είναι διαδικτυακή μηχανή αναζήτησης που δίνει έμφαση στην προστασία της ιδιωτικής ζωής των χρηστών της και στην αποφυγή του “φίλτρου φυσαλίδας” των εξατομικευμένων αποτελεσμάτων αναζήτησης. Το DuckDuckGo ξεχωρίζει από τις άλλες μηχανές αναζήτησης, μη δημιουργώντας το προφίλ των χρηστών του και εκθέτοντας σκόπιμα σε όλους τους χρήστες τα ίδια αποτελέσματα αναζήτησης για ένα δεδομένο όρο αναζήτησης. Το DuckDuckGo δίνει έμφαση στην επιστροφή των καλύτερων, και όχι απλά των περισσότερων, αποτελεσμάτων. Τα αποτελέσματα αυτά τα παράγει μέσα από περισσότερες από 400 μεμονωμένες πηγές, συμπεριλαμβανομένων γνωστών πληθοπορισμικών (crowdsoursed) σελίδων όπως το Wikipedia και άλλων μηχανών αναζήτησης όπως το Bing, το Yahoo!, το Yandex και το Yummly.", - "deezer":[ - "γαλλική διαδικτυακή υπηρεσία αναπαραγωγής μουσικής", - "wikidata" - ], - "ddg definitions":[ - "currency:el-GR", - "ref" - ], - "wikidata":"Τα Βικιδεδομένα είναι ένα ελεύθερο, συνεργατικό εγχείρημα το οποίο δημιουργήθηκε το 2012 και αποτελεί μια γνωσιακή βάση δομημένων δεδομένων όπως διαγλωσσικές αναφορές και στατιστικές πληροφορίες, στην οποία όλα τα εγχειρήματα του ιδρύματος Wikimedia, σε όλες τις γλώσσες, έχουν κεντρική πρόσβαση. Το εγχείρημα χαρακτηρίζεται ως δευτερογενής βάση δεδομένων, δεδομένου ότι παρέχεται και η δυνατότητα της αναγραφής πηγών για τα δεδομένα και είναι πολύγλωσσο, παρέχεται σε όλες τις γλώσσες που επιθυμούν οι χρήστες του. Ανήκει στο ίδρυμα Wikimedia. Τα δεδομένα προσφέρονται συνεργατικά από χρήστες, όπως και στα άλλα εγχειρήματα του ιδρύματος Wikimedia, με τη διαφορά ότι στα Βικιδεδομένα τα δεδομένα παρέχονται με άδεια Creative Commons Public Domain Dedication 1.0, δηλαδή έχει γίνει Εκχώρησή τους ως Κοινό Κτήμα.", - "duckduckgo":[ - "currency:el-GR", - "ref" - ], - "duckduckgo images":[ - "currency:el-GR", - "ref" - ], - "duckduckgo videos":[ - "currency:el-GR", - "ref" - ], - "duckduckgo news":[ - "currency:el-GR", - "ref" - ], - "duckduckgo weather":[ - "currency:el-GR", - "ref" - ], - "apple maps":"Τα Apple Maps είναι μια διαδικτυακή υπηρεσία χαρτών που αναπτύχθηκε από την Apple Inc. Είναι η προεπιλεγμένη εφαρμογή χαρτών για iOS, iPadOS, macOS και watchOS. Παρέχει οδηγίες και εκτιμώμενες ώρες άφιξης για πλοήγηση αυτοκινήτων, πεζών και μέσων μαζικής μεταφοράς. Τα Apple Maps διαθέτουν επίσης τη λειτουργία Flyover, μια δυνατότητα που επιτρέπει στον χρήστη να εξερευνήσει ορισμένα πυκνοκατοικημένα αστικά κέντρα και άλλα σημεία ενδιαφέροντος σε ένα τρισδιάστατο τοπίο που αποτελείται από μοντέλα κτιρίων και κατασκευών.", - "flickr":"Το Flickr είναι ιστοσελίδα, η οποία επιτρέπει στους χρήστες της να δημοσιεύουν φωτογραφίες και βίντεο. Δημιουργήθηκε αρχικά από την εταιρία Ludicorp και ύστερα εξαγοράστηκε από την Yahoo!. Η υπηρεσία χρησιμοποιείται συχνά από bloggers για να ενσωματώσουν τις φωτογραφίες τους στα blogs τους. Τον Σεπτέμβριο του 2010, το Flickr έφτασε τα 5 δις. φωτογραφιών. Αρκετές από τις φωτογραφίες του Flickr κυκλοφορούν υπό την άδεια Creative Commons. Η εγγραφή στο Flickr μπορεί να είναι είτε δωρεάν είτε επί πληρωμή, η οποία παρέχει περισσότερα δικαιώματα στους χρήστες του.", - "free software directory":"To Free Software Directory είναι ένα εγχείρημα που υποστηρίζεται από το Ίδρυμα Ελεύθερου Λογισμικού και την UNESCO. Περιλαμβάνει ένα κατάλογο ελεύθερου λογισμικού που μπορεί να χρησιμοποιηθεί σε ελεύθερα λειτουργικά συστήματα, όπως το GNU ή το GNU/Linux. Περιέχει μέχρι σήμερα περισσότερες από 4.600 εφαρμογές.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"Το GitHub είναι μια αμερικανική εταιρεία που παρέχει φιλοξενία για τον έλεγχο της έκδοσης λογισμικού ανάπτυξης χρησιμοποιώντας το Git. Είναι θυγατρική της Microsoft, η οποία απέκτησε την εταιρεία το 2018 για 7,5 δισεκατομμύρια δολάρια.", - "google":"Η Google Αναζήτηση είναι μηχανή αναζήτησης που ανήκει στην Google. Η Google Αναζήτηση είναι η πιο χρησιμοποιημένη μηχανή αναζήτησης του Παγκόσμιου Ιστού, με πάνω από τρεις δισεκατομμύρια αναζητήσεις κάθε μέρα.", - "google images":"Να μην συγχέεται με το Google Photos.", - "google news":[ - "ιστότοπος και εφαρμογή συγκέντρωσης ειδήσεων της Google", - "wikidata" - ], - "google scholar":"Η Google Scholar είναι ελεύθερα προσβάσιμη μηχανή αναζήτησης ιστού που εντοπίζει το πλήρες κείμενο ή τα μεταδεδομένα των ακαδημαϊκών δημοσιεύσεων που έχουν υλοποιηθεί σε μία εκτεταμένη σειρά επιστημονικών και τεχνικών εκδόσεων, σε παγκόσμια κλίμακα. Η βάση αυτή αφορά δημοσιεύσεις που έχουν γίνει αποκλειστικά με χρήση της αγγλικής γλώσσας.", - "google play apps":"Το Google Play, παλαιότερα γνωστό ως Android Market, είναι μια ψηφιακή εφαρμογή διανομής για το Android και ένα σε κατάστημα ηλεκτρονικών, το οποίο αναπτύσσεται και συντηρείται από τη Google. Η υπηρεσία επιτρέπει στους χρήστες να περιηγηθούν και να κατεβάσουν βιβλία, ταινίες, παιχνίδια και εφαρμογές που δημοσιεύθηκαν μέσω του Google, ενώ παλαιότερα επέτρεπε και την εγκατάσταση μουσικής.", - "google play movies":[ - "google play apps:el-GR", - "ref" - ], - "hoogle":"Η Haskell είναι μια πρότυπη αμιγώς συναρτησιακή γλώσσα προγραμματισμού γενικής χρήσης με μη-αυστηρή σημασιολογία και ισχυρούς τύπους. Πήρε το όνομά της από τον επιστήμονα της λογικής Haskell Curry. Στη Haskell, \"μια συνάρτηση είναι μέλος πρώτης τάξης\" της γλώσσας προγραμματισμού. Ως συναρτησιακή γλώσσα προγραμματισμού, χρησιμοποιεί σαν κύρια δομή ελέγχου τη συνάρτηση. Η γλώσσα βασίζεται στις παρατηρήσεις του Haskell Curry και των πνευματικών του απογόνων, ότι \"μια απόδειξη είναι ένα πρόγραμμα και ο μαθηματικός τύπος που αποδεικνύει είναι ο τύπος του προγράμματος\".", - "imdb":"Η Internet Movie Database, πιο γνωστή με την συντομογραφία IMDb, είναι διαδικτυακή βάση δεδομένων με πληροφορίες για ηθοποιούς, ταινίες, τηλεοπτικά προγράμματα, παρουσιαστές της τηλεόρασης, βιντεοπαιχνίδια και συντελεστές παραγωγής ταινιών ή προγραμμάτων.", - "imgur":[ - "υπηρεσία που προσφέρει φιλοξενία εικόνων", - "wikidata" - ], - "library genesis":"Η Library Genesis ή LibGen είναι μια μηχανή αναζήτησης άρθρων και βιβλίων για διάφορα θέματα, η οποία επιτρέπει την ελεύθερη πρόσβαση σε περιεχόμενο, το οποίο κατά τα άλλα απαιτεί πληρωμή ή δεν είναι ψηφιοποιημένο αλλού. Μεταξύ άλλων, παρέχει αρχεία PDF από τη διαδικτυακή πύλη ScienceDirect του Elsevier.", - "library of congress":"Η Βιβλιοθήκη του Κογκρέσου των Ηνωμένων Πολιτειών θεωρείται η μεγαλύτερη και πλουσιότερη βιβλιοθήκη παγκοσμίως και είναι Εθνική βιβλιοθήκη των ΗΠΑ. Ιδρύθηκε το 1800 και αρχικά έδρευε στο Καπιτώλιο. Το 1814 η βιβλιοθήκη κάηκε από τους Βρετανούς. Το 1897 μεταφέρθηκε στο χώρο όπου στεγάζεται μέχρι και σήμερα, στην Ουάσινγκτον.", - "mixcloud":[ - "Βρετανική υπηρεσία ροής μουσικής", - "wikidata" - ], - "openstreetmap":"Το OpenStreetMap (OSM) είναι ένας χάρτης με ελεύθερη άδεια ο οποίος αναπτύσσεται από μια κοινότητα εθελοντών που συνεισφέρουν και διατηρούν δεδομένα σχετικά με δρόμους, μονοπάτια, καφετέριες, σιδηροδρομικούς σταθμούς, και πολλά περισσότερα, σε όλον τον κόσμο. Οι συνεισφέροντες χρησιμοποιούν αεροφωτογραφίες, συσκευές GPS, και τοπικούς χάρτες χαμηλής τεχνολογίας για να σιγουρευτούν πως το OSM είναι ακριβής και ενημερωμένο στο μικρότερο δυνατό επίπεδο. Μέχρι το 2012 είχαν συνεισφέρει στη δημιουργία του πάνω από 500.000 άνθρωποι.", - "pinterest":"Το Pinterest είναι πλατφόρμα κοινωνικής δικτύωσης και διαδικτυακό εργαλείο δημιουργίας οπτικών σελιδοδεικτών, που έχει σχεδιαστεί για να επιτρέπει την αποθήκευση και την ανακάλυψη πληροφοριών όπως συνταγές, σπίτι, στυλ, κίνητρα και έμπνευση στο διαδίκτυο χρησιμοποιώντας εικόνες και, σε μικρότερη κλίμακα, κινούμενα GIF και βίντεο, με τη μορφή pinboards. Ο ιστότοπος δημιουργήθηκε από τους Ben Silbermann, Paul Sciarra και Evan Sharp και λειτουργεί πλέον από την Pinterest, Inc., και έχει την έδρα του στο Σαν Φρανσίσκο. Οι χρήστες του Pinterest μπορούν να αναρτούν δικές τους φωτογραφίες και βίντεο ή να αποθηκεύουν φωτογραφίες που βρίσκουν στο Διαδίκτυο.", - "piratebay":"Το Pirate Bay είναι ιστοσελίδα που παρέχει αρχεία torrent και magnet links για τη διευκόλυνση της ανταλλαγής αρχείων μέσω peer-to-peer χρησιμοποιώντας το πρωτοκόλλο BitTorrent. Ιδρύθηκε στη Σουηδία το 2003. Το 2009, οι ιδρυτές της ιστοσελίδας δικάστηκαν στη Σουηδία, κατηγορούμενοι για τη διευκόλυνση της παράνομης ανταλλαγής υλικού που υπόκειται σε πνευματικά δικαιώματα. Κρίθηκαν ένοχοι και καταδικάστηκαν σε ένα χρόνο φυλάκιση με πρόστιμο ύψους 30 εκατ. SEK. Σε ορισμένες χώρες, οι ISPs έχουν διαταχθεί να εμποδίσουν την πρόσβαση στην ιστοσελίδα. Από τότε, λειτουργούν διακομιστές μεσολάβησης σε όλο τον κόσμο, παρέχοντας πρόσβαση στο The Pirate Bay.", - "pubmed":"Η MEDLINE είναι βιβλιογραφική βάση δεδομένων επιστημών ζωής και βιοϊατρικής πληροφορίας. Περιλαμβάνει βιβλιογραφικές πληροφορίες για άρθρα επιστημονικών περιοδικών που καλύπτουν ζητήματα ιατρικής, νοσηλευτικής, φαρμακευτικής, οδοντιατρικής, κτηνιατρικής. Η MEDLINE καλύπτει επίσης ένα μεγάλο τμήμα της βιολογικής και βιοχημικής βιολογίας και θέματα όπως η μοριακή εξέλιξη.", - "reddit":"Το Reddit είναι αμερικανική ιστοσελίδα συγκέντρωσης ειδήσεων, περιεχομένου και συζήτησης. Τα εγγεγραμμένα μέλη υποβάλλουν περιεχόμενο στην ιστοσελίδα, όπως εικόνες, συνδέσμους, κείμενα, τα οποία συζητούνται με άλλους χρήστες. Επίσης οι χρήστες ψηφίζουν υπέρ ή κατά των δημοσιεύσεων. Οι αναρτήσεις γίνονται σε δημιουργημένες από τους χρήστες ομάδες, τα \"υπορέντιτ\" (subreddits), τα οποία καλύπτουν ποικιλία θεμάτων όπως: ειδήσεις, επιστήμη, ταινίες, βιντεοπαιχνίδια, ιστορία, μουσική, βιβλία, γυμναστήριο, τρόφιμα, και εικόνες. Οι δημοσιεύσεις με τις περισσότερες θετικές ψήφους εμφανίζονται προς την κορυφή του υπορέντιτ, ενώ αν λάβουν αρκετές θετικές ψήφους εμφανίζονται στην κορυφή της ιστοσελίδας. Παρά τους αυστηρούς κανόνες που απαγορεύουν την παρενόχληση ανάμεσα στα μέλη, οι διαχειριστές του Reddit έχουν ξοδέψει αρκετούς πόρους για την επιβολή των κανόνων της ιστοσελίδας.", - "soundcloud":"Το SoundCloud είναι μια διαδικτυακή υπηρεσία που ιδρύθηκε στο Βερολίνο στη Γερμανία.", - "startpage":"Το Startpage είναι μια μηχανή αναζήτησης του Διαδικτύου, η οποία υπογραμμίζει ως βασικό της χαρακτηριστικό την ιδιωτικότητα. Ήταν προηγουμένως γνωστή ως η μηχανή μετα-αναζήτησης Ixquick, και η Startpage ήταν τότε μια εναλλακτική υπηρεσία. Και οι δύο μηχανές συγχωνεύθηκαν το 2016.", - "youtube":"To YouTube είναι ιστότοπος, ο οποίος επιτρέπει κοινοποίηση, αποθήκευση, αναζήτηση και αναπαραγωγή ψηφιακών βίντεο και ψηφιακών ταινιών για κάθε άτομο.", - "dailymotion":"Το Dailymotion είναι γαλλική ιστοσελίδα η οποία επιτρέπει αποθήκευση, αναζήτηση και αναπαραγωγή ψηφιακών βίντεο και στην οποία οι χρήστες μπορούν να φορτώσουν, να παρακολουθήσουν και να μοιραστούν τα βίντεο. Είναι μία από τις μεγαλύτερες πλατφόρμες βίντεο στον κόσμο, προσφέροντας ένα συνδυασμό του περιεχομένου από τους χρήστες, ανεξάρτητων δημιουργών και premium συνεργατών. Το Dailymotion είναι διαθέσιμο σε όλο τον κόσμο, σε 18 διαφορετικές γλώσσες και σε 35 τοπικές εκδόσεις με τοπικές σελίδες υποδοχής και τοπικού περιεχομένου.", - "vimeo":"Το Vimeo είναι ιστοσελίδα ανταλλαγής βίντεο, όπου, οι χρήστες της μπορούν να παρακολουθήσουν αλλά και να ανεβάσουν βίντεο που θέλουν να μοιραστούν με άλλους. Δημιουργήθηκε το 2004 από μια ομάδα ανθρώπων που θέλησαν να προβάλουν τα δικά τους έργα αλλά και τις δικές τους προσωπικές στιγμές. Από το 2007 άρχισε να υποστηρίζει και το ανέβασμα βίντεο υψηλής ανάλυσης (High-definition). Tον Μάρτιο του 2016 το Vimeo είχε πάνω από 130 εκατ. μοναδικούς επισκέπτες και βρίσκονταν στην τρίτη θέση ανάμεσα στις ιστοσελίδες με παρόμοιο περιεχόμενο.", - "wikibooks":"Τα Βικιβιβλία είναι μία συλλογή βιβλίων ανοιχτού περιεχομένου, εγχειριδίων, καθώς και άλλων κειμένων που είναι βασισμένα σε βιβλία που έχουν συγγραφεί συλλογικά.", - "wikinews":"Τα Βικινέα (Wikinews) είναι ένα ελεύθερου περιεχομένου ειδησεογραφικό wiki και ένα από τα εγχειρήματα της Wikimedia Foundation. Ο Τζίμι Γουέιλς έχει διαχωρίσει τα Βικινέα από την Βικιπαίδεια λέγοντας ότι «στα Βικινέα κάθε άρθρο πρέπει να γραφεί σαν δημοσιογραφικό άρθρο διαφορετικό από ένα εγκυκλοπαιδικό άρθρο». Η πολιτική της ουδέτερης οπτικής γωνίας, που εφαρμόζεται στα Βικινέα τα διακρίνει από άλλες προσπάθειες δημοσιογραφίας των πολιτών όπως το Indymedia και τα OhmyNews. Σε αντίθεση με τα περισσότερα εγχειρήματα του Wikimedia, τα Βικινέα επιτρέπουν την πρωτότυπη εργασία με τη μορφή ρεπορτάζ και συνεντεύξεων Τα αγγλικά Βικινέα είναι το μόνο εγχείρημα του Wikimedia που χορηγεί δημοσιογραφική κάρτα σε δημοσιογράφους που επιλέγονται από την κοινότητα.", - "wikiquote":"Το Βικιφθέγματα ή Wikiquote είναι μία διεθνής, ανοιχτού περιεχομένου, εξελιγμένη δια συνεργασίας βάση αποφθεγμάτων, η οποία βρίσκεται στη διεύθυνση http://www.wikiquote.org στο διαδίκτυο. Δημιουργείται και εξελίσσεται με τη συνεργασία εθελοντών βασιζόμενη στο λογισμικό βίκι, που σημαίνει ότι σελίδες μπορεί να προστεθούν ή να αλλάξουν από τον καθένα. Ιδρυτής του \"Βικιφθέγματα\" είναι ο Τζίμι Γουέιλς και λειτουργεί μέσω του μη κερδοσκοπικού Ιδρύματος Wikimedia.", - "wikisource":"Η Βικιθήκη (Wikisource) είναι ένα πρόγραμμα του Wikimedia για τη δημιουργία μιας αυξανόμενης ελεύθερου περιεχομένου βιβλιοθήκης με την συλλογή πρωτογενών κειμένων, και μεταφράσεων πρωτογενών πηγών σε οποιαδήποτε γλώσσα. Τα περισσότερα κείμενα της Βικιθήκης είναι ελεύθερα δικαιωμάτων και δεν προστατεύονται από οποιοδήποτε πνευματικά δικαιώματα ή άδεια χρήσης. Όμως, ορισμένα κείμενα έχουν πνευματικά δικαιώματα και είναι διαθέσιμα με την Άδεια Ελεύθερης Τεκμηρίωσης GNU. Η Βικιθήκη είναι αδελφικός δικτυακός τόπος της Βικιπαίδειας, της ελεύθερης εγκυκλοπαίδειας. Βρίσκεται στην διεύθυνση www.wikisource.org. Το ελληνικό εγχείρημα βρίσκεται στη διεύθυνση http://el.wikisource.org/.", - "wikispecies":"Τα Wikispecies είναι ένα online wiki-εγχείρημα υποστηριζόμενο από το Wikimedia Foundation. Σκοπός του είναι να δημιουργήσει έναν συνεκτικό κατάλογο ελεύθερου περιεχομένου όλων των ειδών και απευθύνεται περισσότερο σε επιστήμονες, παρά στο γενικό κοινό.", - "wiktionary":"Το Βικιλεξικό είναι πολύγλωσσο λεξικογραφικό διαδικτυακό εγχείρημα του ιδρύματος Wikimedia. Βασίζεται σε σύστημα wiki και το περιεχόμενό του μπορεί να χρησιμοποιηθεί ελεύθερα.", - "wikiversity":"Το Βικιεπιστήμιο είναι ένα έργο του Ιδρύματος Wikimedia που υποστηρίζει τις κοινότητες μάθησης, το μαθησιακό τους υλικό και τις συνακόλουθες δραστηριότητες. Διαφέρει από τα πιο δομημένα έργα όπως η Βικιπαίδεια, επειδή προσφέρει μια σειρά από μαθήματα, τμήματα και σχολές για την προώθηση της μάθησης παρά για το περιεχόμενο.", - "wikivoyage":"Τα Βικιταξίδια είναι ένας ελεύθερος διαδικτυακός ταξιδιωτικός οδηγός, για ταξιδιωτικούς προορισμούς και θέματα ευρύτερου ταξιδιωτικού ενδιαφέροντος, ο οποίος συντάσσεται από εθελοντές. Το όνομα αποτελεί συνδυασμό της λέξης \"Wiki\" και \"Ταξίδια\".", - "wikicommons.images":"Τα Wikimedia Commons είναι διαδικτυακό αποθετήριο εικόνων, ήχων και άλλων αρχείων πολυμέσων ελεύθερης χρήσης. Πρόκειται για ένα έργο του Ιδρύματος Wikimedia.", - "dictzone":[ - "Διαδικτυακά λεξικά: Αγγλικά, Ισπανικά, Γερμανικά, Γαλλικά, Ιταλικά, Ουγγρικά... Επιλέξτε το αγαπημένο σας λεξικό!", - "https://dictzone.com/" - ], - "wttr.in":[ - "Πρόγνωση καιρού για: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Ο Brave είναι ελεύθερος και ανοικτού κώδικα περιηγητής ιστού, τον οποίο διαχειρίζεται η Brave Software Inc. Ιδρύθηκε στις 28 Μαϊου 2015. Ως φυλλομετρητής δίνει έμφαση στην ιδιωτικότητα των χρηστών και στο μπλοκάρισμα των διαδικτυακών διαφημίσεων. Επίσης δίνει την δυνατότητα στους χρήστες να ανταλλάσσουν κρυπτονομίσματα. Είναι διαθέσιμος σε διάφορες πλατφόρμες, όπως Android, Linux, Windows, IoS, κ.λπ.", - "brave.images":[ - "brave:el-GR", - "ref" - ], - "brave.videos":[ - "brave:el-GR", - "ref" - ], - "brave.news":[ - "brave:el-GR", - "ref" - ] - }, - "en":{ - "9gag":"9gag is an online platform and social media website based in Hong Kong, which allows its users to upload and share user-generated content or other content from external social media websites. Since the platform for collections of Internet memes was launched on April 11, 2008, it has grown in popularity across social media such as Facebook, Twitter, and Instagram.", - "annas archive":"Anna's Archive is a free non-profit online shadow library metasearch engine providing access to a variety of book resources, created by a team of anonymous archivists, and launched in direct response to law enforcement efforts, formally assisted by The Publishers Association and the Authors Guild, to close down Z-Library in November 2022.", - "apk mirror":[ - "Free and safe Android APK downloads", - "https://www.apkmirror.com" - ], - "apple app store":"The App Store is an app marketplace developed and maintained by Apple Inc., for mobile apps on its iOS and iPadOS operating systems. The store allows users to browse and download approved apps developed within Apple's iOS SDK. Apps can be downloaded on the iPhone, iPod Touch, or iPad, and some can be transferred to the Apple Watch smartwatch or 4th-generation or newer Apple TVs as extensions of iPhone apps.", - "arch linux wiki":[ - "Arch Linux documentation on the web", - "wikidata" - ], - "artic":"The Art Institute of Chicago, founded in 1879, is one of the oldest and largest art museums in the world. It is based in the Art Institute of Chicago Building in Chicago's Grant Park. Recognized for its curatorial efforts and popularity among visitors, its collection, stewarded by 11 curatorial departments, is encyclopedic, and includes works such as Georges Seurat's A Sunday on La Grande Jatte, Pablo Picasso's The Old Guitarist, Edward Hopper's Nighthawks, and Grant Wood's American Gothic. Its permanent collection of nearly 300,000 works of art is augmented by more than 30 special exhibitions mounted yearly that illuminate aspects of the collection and present curatorial and scientific research.", - "arxiv":"arXiv is an open-access repository of electronic preprints and postprints approved for posting after moderation, but not peer review. It consists of scientific papers in the fields of mathematics, physics, astronomy, electrical engineering, computer science, quantitative biology, statistics, mathematical finance and economics, which can be accessed online. In many fields of mathematics and physics, almost all scientific papers are self-archived on the arXiv repository before publication in a peer-reviewed journal. Some publishers also grant permission for authors to archive the peer-reviewed postprint. Begun on August 14, 1991, arXiv.org passed the half-million-article milestone on October 3, 2008, had hit a million by the end of 2014 and two million by the end of 2021. As of April 2021, the submission rate is about 16,000 articles per month.", - "bandcamp":"Bandcamp is an American online audio distribution platform founded in 2007 by Oddpost co-founder Ethan Diamond and programmers Shawn Grunberger, Joe Holt and Neal Tucker, with headquarters in Oakland, California. Bandcamp was acquired by Epic Games in March 2022, before it was sold to Songtradr in September 2023.", - "wikipedia":"Wikipedia is a free-content online encyclopedia written and maintained by a community of volunteers, collectively known as Wikipedians, through open collaboration and using a wiki-based editing system called MediaWiki. Wikipedia is the largest and most-read reference work in history, and has consistently been one of the 10 most popular websites. Founded by Jimmy Wales and Larry Sanger on January 15, 2001, it is hosted by the Wikimedia Foundation, an American nonprofit organization.", - "bilibili":"Bilibili, nicknamed B Site, is a video sharing website based in Shanghai where users can submit, view and add overlaid commentary on videos. Since the mid-2010s, Bilibili began to expand to a broader audience from its original niche market that focused on animation, comics, and games (ACG), and it has become one of the major Chinese over-the-top streaming platforms serving videos on demand such as documentaries, variety shows, and other original programming.", - "bing":"Microsoft Bing, commonly referred to as Bing, is a web search engine owned and operated by Microsoft. The service traces its roots back to Microsoft's earlier search engines, including MSN Search, Windows Live Search, and Live Search. Bing offers a broad spectrum of search services, encompassing web, video, image, and map search products, all developed using ASP.NET.", - "bing images":[ - "bing:en", - "ref" - ], - "bing news":[ - "bing:en", - "ref" - ], - "bing videos":"Bing Videos is a video search service and part of Microsoft's Bing search engine. The service enables users to search and view videos across various websites. Bing Videos was officially released on September 26, 2007 as Live Search Video, and rebranded as Bing Videos on June 1, 2009.", - "bitbucket":"Bitbucket is a Git-based source code repository hosting service owned by Atlassian. Bitbucket offers both commercial plans and free accounts with an unlimited number of private repositories.", - "btdigg":"BTDigg is the first Mainline DHT search engine. It participated in the BitTorrent DHT network, supporting the network and making correspondence between magnet links and a few torrent attributes which are indexed and inserted into a database. For end users, BTDigg provides a full-text database search via a Web interface. The web part of its search system retrieved proper information by a user's text query. The Web search supported queries in European and Asian languages. The project name was an acronym of BitTorrent Digger. It went offline in June 2016, reportedly due to index spam. The site returned later in 2016 at a dot-com domain, went offline again, and is now online. The btdig.com site has its torrent crawler's source code listed on GitHub, dhtcrawler2.", - "ccc-tv":[ - "Video Streaming Portal of the Chaos Computer Club", - "wikidata" - ], - "openverse":[ - "Search over 700 million free and openly licensed images, photos, audio, and other media types for reuse and remixing.", - "https://wordpress.org/openverse/" - ], - "crossref":"Crossref is a nonprofit open digital infrastructure organisation for the global scholarly research community. Uniquely and persistently recording and connecting knowledge through open metadata and identifiers for all research objects such as grants and articles. It is the largest digital object identifier (DOI) Registration Agency of the International DOI Foundation. It has 19,000 members from 150 countries representing publishers, libraries, research institutions, and funders and was launched in early 2000 as a cooperative effort among publishers to enable persistent cross-platform citation linking in online academic journals. As of July 2023, Crossref identifies and connects 150 million records of metadata about research objects made openly available for reuse without restriction. They facilitate an average of 1.1 billion DOI resolutions every month, and they see 1 billion queries of the metadata every month.", - "crowdview":[ - "Discussion search engine", - "https://crowdview.ai/" - ], - "yep":[ - "When you search with Yep, you’re putting actual dollars in the pockets of your favorite content creators.", - "https://yep.com" - ], - "curlie":"DMOZ was a multilingual open-content directory of World Wide Web links. The site and community who maintained it were also known as the Open Directory Project (ODP). It was owned by AOL but constructed and maintained by a community of volunteer editors.", - "currency":"DuckDuckGo (DDG) is an internet privacy company. DuckDuckGo offers a number of products oriented towards helping people protect their privacy online, most notably, a private search engine, a tracker-blocking browser extension, email protection and app tracking protection.", - "deezer":"Deezer is a French music rental service that provides streaming of music, podcasts and video to users in more than 180 countries worldwide. Based in Paris since its 2007 founding, the company has been a subsidiary of Access Industries since 2016. Deezer is available via web (deezer.com) and a number of digital platforms, including Android, iOS, macOS and others.", - "deviantart":"DeviantArt is an online art community that features artwork, videography and photography, launched on August 7, 2000 by Angelo Sotira, Scott Jarkoff, and Matthew Stephens among others.", - "ddg definitions":[ - "currency:en", - "ref" - ], - "docker hub":[ - "hosting service for Docker repository", - "wikidata" - ], - "erowid":"Erowid, also called Erowid Center, is a non-profit educational organization that provides information about psychoactive plants and chemicals.", - "wikidata":"Wikidata is a collaboratively edited multilingual knowledge graph hosted by the Wikimedia Foundation. It is a common source of open data that Wikimedia projects such as Wikipedia, and anyone else, can use under the CC0 public domain license. Wikidata is a wiki powered by the software MediaWiki, including its extension for semi-structured data, the Wikibase.", - "duckduckgo":[ - "currency:en", - "ref" - ], - "duckduckgo images":[ - "currency:en", - "ref" - ], - "duckduckgo videos":[ - "currency:en", - "ref" - ], - "duckduckgo news":[ - "currency:en", - "ref" - ], - "duckduckgo weather":[ - "currency:en", - "ref" - ], - "apple maps":"Apple Maps is a web mapping service developed by Apple Inc. The default map system of iOS, iPadOS, macOS, and watchOS, it provides directions and estimated times of arrival for driving, walking, cycling, and public transportation navigation. A \"Flyover\" mode shows certain densely populated urban centers and other places of interest in a 3D landscape composed of models of buildings and structures.", - "emojipedia":"Emojipedia is an emoji reference website which documents the meaning and common usage of emoji characters in the Unicode Standard. Most commonly described as an emoji encyclopedia or emoji dictionary, Emojipedia also publishes articles and provides tools for tracking new emoji characters, design changes and usage trends. It has been owned by Zedge since 2021.", - "tineye":"TinEye is a reverse image search engine developed and offered by Idée, Inc., a company based in Toronto, Ontario, Canada. It is the first image search engine on the web to use image identification technology rather than keywords, metadata or watermarks. TinEye allows users to search not using keywords but with images. Upon submitting an image, TinEye creates a \"unique and compact digital signature or fingerprint\" of the image and matches it with other indexed images. This procedure is able to match even heavily edited versions of the submitted image, but will not usually return similar images in the results.", - "etymonline":"The Online Etymology Dictionary (Etymonline) is a free online dictionary, written and compiled by Douglas R. Harper, that describes the origins of English-language words.", - "1x":[ - "1x.com is the world's biggest curated photo gallery online. Each photo is selected by professional curators. In Pursuit Of The Sublime", - "https://1x.com/" - ], - "fdroid":"F-Droid is an app store and software repository for Android, serving a similar function to the Google Play store. The main repository, hosted by the project, contains only free and open source apps. Applications can be browsed, downloaded and installed from the F-Droid website or client app without the need to register for an account. \"Anti-Features\" such as advertising, user tracking, or dependence on non-free software are flagged in app descriptions.", - "flickr":"Flickr is an image hosting and video hosting service, as well as an online community, founded in Canada and headquartered in the United States. It was created by Ludicorp in 2004 and was a popular way for amateur and professional photographers to host high-resolution photos. It has changed ownership several times and has been owned by SmugMug since April 20, 2018.", - "free software directory":"The Free Software Directory (FSD) is a project of the Free Software Foundation (FSF). It catalogs free software that runs under free operating systems—particularly GNU and Linux. The cataloged projects are often able to run in several other operating systems. The project was formerly co-run by UNESCO.", - "frinkiac":"Frinkiac is a website for users to search for words or phrases from episodes of the American animated sitcom The Simpsons. It returns screenshots related to the search terms, from which it generates memes and animated GIFs. Created by Paul Kehrer, Sean Schulte and Allie Young, the site is named after a computer built by one of the show's recurring characters, Professor Frink. The site was critically acclaimed upon its launch, and Newsweek wrote that it \"may be the greatest feat of Internet engineering we've ever seen\". As of May 2016, screenshots from the first seventeen seasons of The Simpsons are in Frinkiac's database.", - "genius":"Genius is an American digital media company founded on August 27, 2009, by Tom Lehman, Ilan Zechory, and Mahbod Moghadam. Its website serves as an online music encyclopedia allowing users to provide annotations and interpretation to song lyrics, news stories, sources, poetry, and documents.", - "gentoo":"Gentoo Linux is a Linux distribution built using the Portage package management system. Unlike a binary software distribution, the source code is compiled locally according to the user's preferences and is often optimized for the specific type of computer. Precompiled binaries are available for some packages.", - "gitlab":"GitLab Inc. is an open-core company that operates GitLab, a DevOps software package that can develop, secure, and operate software. The open source software project was created by Ukrainian developer Dmytro Zaporozhets and Dutch developer Sytse Sijbrandij. In 2018, GitLab Inc. was considered to be the first partly-Ukrainian unicorn.", - "github":"GitHub, Inc. is a platform and cloud-based service for software development and version control using Git, allowing developers to store and manage their code. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous integration, and wikis for every project. Headquartered in California, it has been a subsidiary of Microsoft since 2018.", - "codeberg":[ - "Codeberg is a non-profit, community-led organization that aims to help free and open source projects prosper by giving them a safe and friendly home.", - "https://codeberg.org/" - ], - "google":"Google Search is a search engine provided and operated by Google. Handling more than 3.5 billion searches per day, it has a 92% share of the global search engine market. It is the most-visited website in the world. Additionally, it is the most searched and used search engine in the entire world.", - "google images":"Google Images is a search engine owned by Google that allows users to search the World Wide Web for images. It was introduced on July 12, 2001, due to a demand for pictures of the green Versace dress of Jennifer Lopez worn in February 2000. In 2011, reverse image search functionality was added.", - "google news":"Google News is a news aggregator service developed by Google. It presents a continuous flow of links to articles organized from thousands of publishers and magazines. Google News is available as an app on Android, iOS, and the Web.", - "google videos":"Google Video was a free video hosting service, originally launched by Google on January 25, 2005.", - "google scholar":"Google Scholar is a freely accessible web search engine that indexes the full text or metadata of scholarly literature across an array of publishing formats and disciplines. Released in beta in November 2004, the Google Scholar index includes peer-reviewed online academic journals and books, conference papers, theses and dissertations, preprints, abstracts, technical reports, and other scholarly literature, including court opinions and patents.", - "google play apps":"Google Play, also known as the Google Play Store and formerly Android Market, is a digital distribution service operated and developed by Google. It serves as the official app store for certified devices running on the Android operating system and its derivatives, as well as ChromeOS, allowing users to browse and download applications developed with the Android software development kit (SDK) and published through Google. Google Play has also served as a digital media store, offering games, music, books, movies, and television programs. Content that has been purchased on Google Play Movies & TV and Google Play Books can be accessed on a web browser and through the Android and iOS apps.", - "google play movies":[ - "google play apps:en", - "ref" - ], - "material icons":[ - "icon set by Google", - "wikidata" - ], - "gpodder":[ - "free software", - "wikidata" - ], - "habrahabr":"Habr is a Russian collaborative blog about IT, computer science and anything related to the Internet, owned by TechMedia. Habrahabr was founded in June 2006. The English section of Habr was launched in 2019.", - "hackernews":"Hacker News is a social news website focusing on computer science and entrepreneurship. It is run by the investment fund and startup incubator Y Combinator. In general, content that can be submitted is defined as \"anything that gratifies one's intellectual curiosity.\"", - "hoogle":"Haskell is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell has pioneered a number of programming language features such as type classes, which enable type-safe operator overloading, and monadic input/output (IO). It is named after logician Haskell Curry. Haskell's main implementation is the Glasgow Haskell Compiler (GHC).", - "imdb":"IMDb is an online database of information related to films, television series, podcasts, home videos, video games, and streaming content online – including cast, production crew and personal biographies, plot summaries, trivia, ratings, and fan and critical reviews. IMDb began as a fan-operated movie database on the Usenet group \"rec.arts.movies\" in 1990, and moved to the Web in 1993. Since 1998, it has been owned and operated by IMDb.com, Inc., a subsidiary of Amazon.", - "imgur":"Imgur is an American online image sharing and image hosting service with a focus on social gossip that was founded by Alan Schaaf in 2009. The service has hosted viral images and memes, particularly those posted on Reddit.", - "ina":"The Institut national de l'audiovisuel, is a repository of all French radio and television audiovisual archives. Additionally it provides free access to archives of countries such as Afghanistan and Cambodia. It has its headquarters in Bry-sur-Marne.", - "invidious":[ - "Invidious Instances", - "https://api.invidious.io/" - ], - "jisho":[ - "online Japanese-English dictionary", - "wikidata" - ], - "kickass":"KickassTorrents was a website that provided a directory for torrent files and magnet links to facilitate peer-to-peer file sharing using the BitTorrent protocol. It was founded in 2008 and by November 2014, KAT became the most visited BitTorrent directory in the world, overtaking The Pirate Bay, according to the site's Alexa ranking. KAT went offline on 20 July 2016 when the domain was seized by the U.S. government. The site's proxy servers were shut down by its staff at the same time.", - "lemmy communities":"Lemmy is free and open-source software for running self-hosted social news aggregation and discussion forums. These hosts, known as \"instances\", communicate with each other using the ActivityPub protocol.", - "lemmy users":[ - "lemmy communities:en", - "ref" - ], - "lemmy posts":[ - "lemmy communities:en", - "ref" - ], - "lemmy comments":[ - "lemmy communities:en", - "ref" - ], - "library genesis":"Library Genesis (LibGen) is a file-sharing based shadow library website for scholarly journal articles, academic and general-interest books, images, comics, audiobooks, and magazines. The site enables free access to content that is otherwise paywalled or not digitized elsewhere. LibGen describes itself as a \"links aggregator\", providing a searchable database of items \"collected from publicly available public Internet resources\" as well as files uploaded \"from users\".", - "z-library":"Z-Library is a shadow library project for file-sharing access to scholarly journal articles, academic texts and general-interest books. It began as a mirror of Library Genesis, but has since expanded itself dramatically.", - "library of congress":"The Library of Congress (LOC) is a research library in Washington, D.C., that serves as the library and research service of the U.S. Congress and the de facto national library of the United States. Founded in 1800, the library is the United States's oldest federal cultural institution. The library is housed in three elaborate buildings on Capitol Hill. It also maintains a conservation center in Culpeper, Virginia. The library's functions are overseen by the librarian of Congress, and its buildings are maintained by the Architect of the Capitol. The Library of Congress is one of the largest libraries in the world. Its collections contain approximately 173 million items, and it has more than 3,000 employees. Its \"collections are universal, not limited by subject, format, or national boundary, and include research materials from all parts of the world and in more than 470 languages.\"", - "lobste.rs":[ - "social news website focused on computer engineering", - "wikidata" - ], - "azlyrics":[ - "AZLyrics - request for access", - "https://azlyrics.com" - ], - "mastodon users":"Mastodon is a free and open-source software for running self-hosted social networking services. It has microblogging features similar to Twitter, which are offered by a large number of independently run nodes, known as instances or servers, each with its own code of conduct, terms of service, privacy policy, privacy options, and content moderation policies.", - "mastodon hashtags":[ - "mastodon users:en", - "ref" - ], - "metacpan":"The Comprehensive Perl Archive Network (CPAN) is a repository of over 250,000 software modules and accompanying documentation for 39,000 distributions, written in the Perl programming language by over 12,000 contributors. CPAN can denote either the archive network or the Perl program that acts as an interface to the network and as an automated software installer. Most software on CPAN is free and open source software.", - "mixcloud":"Mixcloud is a popular British online music streaming service that allows for the listening and distribution of radio shows, DJ mixes and podcasts, which are crowdsourced by its registered users.", - "mwmbl":[ - "An open source, non-profit search engine implemented in python - GitHub - mwmbl/mwmbl: An open source, non-profit search engine implemented in python", - "https://github.com/mwmbl/mwmbl" - ], - "npm":"npm is a package manager for the JavaScript programming language maintained by npm, Inc. npm is the default package manager for the JavaScript runtime environment Node.js and is included as a recommended feature in the Node.js installer.", - "nyaa":[ - "A BitTorrent community focused on Eastern Asian media including anime, manga, music, and more", - "https://nyaa.si/" - ], - "mankier":[ - "An extensive and up-to-date collection of beautifully formatted man pages.", - "https://www.mankier.com/" - ], - "odysee":[ - "decentralised video hosting platform", - "wikidata" - ], - "openairedatasets":"The Framework Programmes for Research and Technological Development, also called Framework Programmes or abbreviated FP1 to FP9, are funding programmes created by the European Union/European Commission to support and foster research in the European Research Area (ERA). Starting in 2014, the funding programmes were named Horizon.", - "openairepublications":[ - "openairedatasets:en", - "ref" - ], - "openstreetmap":"OpenStreetMap (OSM) is a free, open geographic database updated and maintained by a community of volunteers via open collaboration. Contributors collect data from surveys, trace from aerial imagery and also import from other freely licensed geodata sources. OpenStreetMap is freely licensed under the Open Database License and as a result commonly used to make electronic maps, inform turn-by-turn navigation, assist in humanitarian aid and data visualisation. OpenStreetMap uses its own topology to store geographical features which can then be exported into other GIS file formats. The OpenStreetMap website itself is an online map, geodata search engine and editor.", - "openrepos":[ - "OpenRepos.net — Community Repository System", - "https://openrepos.net/" - ], - "packagist":[ - "The main Composer repository, aggregating public PHP packages installable with Composer", - "wikidata" - ], - "pdbe":[ - "European data center for the global PDB archive", - "wikidata" - ], - "photon":[ - "Photon, search-as-you-type with OpenStreetMap", - "https://photon.komoot.io" - ], - "pinterest":"Pinterest is an American image sharing and social media service designed to enable saving and discovery of information like recipes, home, style, motivation, and inspiration on the internet using images and, on a smaller scale, animated GIFs and videos, in the form of pinboards. The site was created by Ben Silbermann, Paul Sciarra, and Evan Sharp and it is operated by now Pinterest, Inc., and headquartered in San Francisco.", - "piped":[ - "alternative front end for YouTube", - "wikidata" - ], - "piped.music":[ - "piped:en", - "ref" - ], - "piratebay":"The Pirate Bay is an online index of digital content of entertainment media and software. Founded in 2003 by Swedish think tank Piratbyrån, The Pirate Bay allows visitors to search, download, and contribute magnet links and torrent files, which facilitate peer-to-peer, file sharing among users of the BitTorrent protocol.", - "pub.dev":[ - "Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and general Dart programs.", - "https://pub.dev/" - ], - "pubmed":"MEDLINE is a bibliographic database of life sciences and biomedical information. It includes bibliographic information for articles from academic journals covering medicine, nursing, pharmacy, dentistry, veterinary medicine, and health care. MEDLINE also covers much of the literature in biology and biochemistry, as well as fields such as molecular evolution.", - "pypi":"The Python Package Index, abbreviated as PyPI and also known as the Cheese Shop, is the official third-party software repository for Python. It is analogous to the CPAN repository for Perl and to the CRAN repository for R. PyPI is run by the Python Software Foundation, a charity. Some package managers, including pip, use PyPI as the default source for packages and their dependencies.", - "qwant":"Qwant is a French search engine that launched in February 2013. Qwant claims to respect the privacy of its users by not tracking them for advertising purposes or reselling their personal data, as well as being impartial in the display of results.", - "qwant news":[ - "qwant:en", - "ref" - ], - "qwant images":[ - "qwant:en", - "ref" - ], - "qwant videos":[ - "qwant:en", - "ref" - ], - "radio browser":[ - "online database of internet radio stations", - "wikidata" - ], - "reddit":"Reddit is an American social news aggregation, content rating, and discussion website. Registered users submit content to the site such as links, text posts, images, and videos, which are then voted up or down by other members. Posts are organized by subject into user-created boards called \"communities\" or \"subreddits\". Submissions with more upvotes appear towards the top of their subreddit and, if they receive enough upvotes, ultimately on the site's front page. Reddit administrators moderate the communities. Moderation is also conducted by community-specific moderators, who are not Reddit employees. It is operated by Reddit Inc., based in San Francisco.", - "sepiasearch":[ - "A search engine of PeerTube videos, channels and playlists, developed by Framasoft", - "https://sepiasearch.org" - ], - "soundcloud":"SoundCloud, is a German audio streaming service owned and operated by SoundCloud Global Limited & Co. KG. The service enables its users to upload, promote, and share audio. Founded in 2007 by Alexander Ljung and Eric Wahlforss, SoundCloud is one of the largest music streaming services in the world and is available in 190 countries and territories. The service has more than 76 million active monthly users and over 200 million audio tracks as of November 2021. SoundCloud offers both free and paid memberships on the platform, available for mobile, desktop and Xbox devices. SoundCloud has evolved from a traditional online streaming platform to an entertainment company.", - "stackoverflow":"Stack Exchange is a network of question-and-answer (Q&A) websites on topics in diverse fields, each site covering a specific topic, where questions, answers, and users are subject to a reputation award process. The reputation system allows the sites to be self-moderating. As of March 2023, the three most actively-viewed sites in the network are Stack Overflow, Unix & Linux, and Mathematics.", - "askubuntu":[ - "stackoverflow:en", - "ref" - ], - "internetarchivescholar":"The Internet Archive Scholar is a scholarly search engine created by the Internet Archive in 2020. It contained, as of September 2020, over 25 million research articles with full text access. The materials available come from three different forms – content identified by the Wayback Machine, by digitized print material and sources such as uploads from users and collections from partnerships.", - "superuser":[ - "stackoverflow:en", - "ref" - ], - "searchcode code":[ - "searchcode is a free source code search engine. Code snippets and open source (free software) repositories are indexed and searchable.", - "https://searchcode.com/" - ], - "framalibre":[ - "French-language FLOSS directory", - "wikidata" - ], - "semantic scholar":"Semantic Scholar is a research tool powered by artificial intelligence for scientific literature. It was developed at the Allen Institute for AI and publicly released in November 2015. It uses advances in natural language processing to provide summaries for scholarly papers. The Semantic Scholar team is actively researching the use of artificial intelligence in natural language processing, machine learning, human–computer interaction, and information retrieval.", - "startpage":"Startpage is a Dutch search engine company that highlights privacy as its distinguishing feature. The website advertises that it allows users to obtain Google Search results while protecting users' privacy by not storing personal information or search data and removing all trackers. Startpage.com also includes an Anonymous View browsing feature that allows users the option to open search results via proxy for increased anonymity.", - "tokyotoshokan":[ - "Tokyo Toshokan :: #tokyotosho @ irc.rizon.net :: Torrent Listing", - "https://www.tokyotosho.info/" - ], - "tagesschau":"Tagesschau is a German national and international television news service produced by the editorial staff of ARD-aktuell on behalf of the German public-service television network ARD.", - "tmdb":[ - "The Movie Database (TMDB) is a popular, user editable database for movies and TV shows.", - "https://www.themoviedb.org/" - ], - "unsplash":"Unsplash is a website dedicated to proprietary stock photography. Since 2021, it has been owned by Getty Images. The website claims over 330,000 contributing photographers and generates more than 13 billion photo impressions per month on their growing library of over 5 million photos. Unsplash has been cited as one of the world's leading photography websites by Forbes, Design Hub, CNET, Medium and The Next Web.", - "yahoo":[ - "The search engine that helps you find exactly what you're looking for. Find the most relevant information, video, images, and answers from all across the Web.", - "https://search.yahoo.com/" - ], - "yahoo news":"Yahoo! News is a news website that originated as an internet-based news aggregator by Yahoo!. The site was created by a Yahoo! software engineer named Brad Clawsie in August 1996. Articles originally came from news services such as the Associated Press, Reuters, Fox News, Al Jazeera, ABC News, USA Today, CNN and BBC News.", - "youtube":"YouTube is an online video sharing and social media platform headquartered in San Bruno, California, United States. Accessible worldwide, it was launched on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim. It is owned by Google and is the second most visited website in the world, after Google Search. YouTube has more than 2.5 billion monthly users, who collectively watch more than one billion hours of videos every day. As of May 2019, videos were being uploaded to the platform at a rate of more than 500 hours of content per minute.", - "dailymotion":"Dailymotion is a French video-sharing technology platform owned by Vivendi. North American launch partners included Vice Media, Bloomberg and Hearst Digital Media. It is among the earliest known platforms to support HD (720p) resolution video. Dailymotion is available worldwide in 183 languages and 43 localised versions featuring local home pages and local content.", - "vimeo":"Vimeo, Inc. is an American video hosting, sharing, and services platform provider headquartered in New York City. Vimeo focuses on the delivery of high-definition video across a range of devices. Vimeo's business model is through software as a service (SaaS). They derive revenue by providing subscription plans for businesses and content creators. Vimeo provides its subscribers with tools for video creation, editing, and broadcasting, enterprise software solutions, as well as the means for video professionals to connect with clients and other professionals. As of December 2021, the site has 260 million users, with around 1.6 million subscribers to its services.", - "wiby":[ - "Wiby is a search engine for older style pages, lightweight and based on a subject of interest. Building a web more reminiscent of the early internet.", - "https://wiby.me/" - ], - "alexandria":[ - "Search the web with alexandria.org - the open source search engine", - "https://alexandria.org/" - ], - "wikibooks":"Wikibooks is a wiki-based Wikimedia project hosted by the Wikimedia Foundation for the creation of free content digital textbooks and annotated texts that anyone can edit.", - "wikinews":"Wikinews is a free-content news wiki and a project of the Wikimedia Foundation that works through collaborative journalism. Wikipedia co-founder Jimmy Wales has distinguished Wikinews from Wikipedia by saying, \"On Wikinews, each story is to be written as a news story as opposed to an encyclopedia article.\" Wikinews's neutral point of view policy aims to distinguish it from other citizen journalism efforts such as Indymedia and OhmyNews. In contrast to most Wikimedia Foundation projects, Wikinews allows original work in the form of original reporting and interviews.", - "wikiquote":"Wikiquote is part of a family of wiki-based projects run by the Wikimedia Foundation using MediaWiki software. Based on an idea by Daniel Alston and implemented by Brion Vibber, the project's objective is to produce collaboratively a vast reference of quotations from prominent people, books, films, proverbs, etc. and writings about them. The website aims to be as accurate as possible regarding the provenance and sourcing of the quotations.", - "wikisource":"Wikisource is an online digital library of free-content textual sources on a wiki, operated by the Wikimedia Foundation. Wikisource is the name of the project as a whole and the name for each instance of that project ; multiple Wikisources make up the overall project of Wikisource. The project's aim is to host all forms of free text, in many languages, and translations. Originally conceived as an archive to store useful or important historical texts, it has expanded to become a general-content library. The project officially began on November 24, 2003, under the name Project Sourceberg, a play on the famous Project Gutenberg. The name Wikisource was adopted later that year and it received its own domain name.", - "wikispecies":"Wikispecies is a wiki-based online project supported by the Wikimedia Foundation. Its aim is to create a comprehensive open content catalogue of all species; the project is directed at scientists, rather than at the general public. Jimmy Wales stated that editors are not required to fax in their degrees, but that submissions will have to pass muster with a technical audience. Wikispecies is available under the GNU Free Documentation License and CC BY-SA 3.0.", - "wiktionary":"Wiktionary is a multilingual, web-based project to create a free content dictionary of terms in all natural languages and in a number of artificial languages. These entries may contain definitions, images for illustration, pronunciations, etymologies, inflections, usage examples, quotations, related terms, and translations of terms into other languages, among other features. It is collaboratively edited via a wiki. Its name is a portmanteau of the words wiki and dictionary. It is available in 192 languages and in Simple English. Like its sister project Wikipedia, Wiktionary is run by the Wikimedia Foundation, and is written collaboratively by volunteers, dubbed \"Wiktionarians\". Its wiki software, MediaWiki, allows almost anyone with access to the website to create and edit entries.", - "wikiversity":"Wikiversity is a Wikimedia Foundation project that supports learning communities, their learning materials, and resulting activities. It differs from Wikipedia in that it offers tutorials and other materials for the fostering of learning, rather than an encyclopedia. It is available in many languages.", - "wikivoyage":"Wikivoyage is a free web-based travel guide for travel destinations and travel topics written by volunteer authors. It is a sister project of Wikipedia and supported and hosted by the same non-profit Wikimedia Foundation (WMF). Wikivoyage has been called the \"Wikipedia of travel guides\".", - "wikicommons.images":"Wikimedia Commons is a media repository of free-to-use images, sounds, videos and other media. It is a project of the Wikimedia Foundation.", - "wolframalpha":"WolframAlpha is an answer engine developed by Wolfram Research. It answers factual queries by computing answers from externally sourced data.", - "dictzone":[ - "Online dictionaries: English, Spanish, German, French, Italian, Hungarian... Select your favorite dictionary!", - "https://dictzone.com/" - ], - "mymemory translated":[ - "MyMemory is the world largest collaborative translation archive.", - "https://mymemory.translated.net/" - ], - "1337x":"1337x is a website that provides a directory of torrent files and magnet links used for peer-to-peer file sharing through the BitTorrent protocol. According to the TorrentFreak news blog, 1337x is the second most popular torrent website as of 2023.", - "duden":[ - "German online dictionary", - "wikidata" - ], - "seznam":"Seznam.cz is a web portal and search engine in the Czech Republic. Founded in 1996 by Ivo Lukačovič in Prague as the first web portal in the Czech Republic. Seznam started with a search engine and an internet version of yellow pages. Today, Seznam runs almost 30 different web services and associated brands. Seznam had more than 6 million real users per month at the end of 2014. Among the most popular services, according to NetMonitor, are its homepage seznam.cz, email.cz, search.seznam.cz and its yellow pages firmy.cz.", - "mojeek":"Mojeek is a search engine based in the United Kingdom. The search results provided by Mojeek come from its own index of web pages, created by crawling the web.", - "naver":"Naver is a South Korean online platform operated by the Naver Corporation. It was launched in 1999 as the first web portal in South Korea to develop and use its own search engine. It was also the world's first operator to introduce the comprehensive search feature, which compiles search results from various categories and presents them in a single page. Naver has since added a multitude of new services ranging from basic features such as e-mail and news to the world's first online Q&A platform Knowledge iN.", - "rubygems":"RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries, a tool designed to easily manage the installation of gems, and a server for distributing them. It was created by Chad Fowler, Jim Weirich, David Alan Black, Paul Brannan and Richard Kilmer during RubyConf 2004.", - "peertube":"PeerTube is a free and open-source, decentralized, ActivityPub federated video platform powered by WebTorrent, that uses peer-to-peer technology to reduce load on individual servers when viewing videos.", - "mediathekviewweb":"MediathekView is a free open-source software designed to manage the online multimedia libraries of several German public broadcasters as well as an Austrian, a Swiss and a Franco-German public broadcaster. The software comes with a German user interface that lists broadcasts available online. In October 2016, the developer announced that maintenance of the project would be discontinued at the end of the year. Three weeks later, the user community had formed a team to continue the project, and the software continues to remain open-source.", - "yacy":"YaCy is a free distributed search engine, built on the principles of peer-to-peer (P2P) networks created by Michael Christen in 2003. The engine is written in Java and distributed on several hundred computers, as of September 2006, so-called YaCy-peers. Each YaCy-peer independently crawls through the Internet, analyzes and indexes found web pages, and stores indexing results in a common database which is shared with other YaCy-peers using principles of peer-to-peer. It is a search engine that everyone can use to build a search portal for their intranet and to help search the public internet clearly.", - "yacy images":[ - "yacy:en", - "ref" - ], - "rumble":"Rumble is an online video platform, web hosting and cloud services business headquartered in Toronto, Ontario, with its U.S. headquarters in Longboat Key, Florida. It was founded in October 2013 by Chris Pavlovski, a Canadian technology entrepreneur. The cloud services business hosts Truth Social, and the video platform is popular among American right and far-right users. The platform has been described as \"alt-tech\".", - "wordnik":"Wordnik, a nonprofit organization, is an online English dictionary and language resource that provides dictionary and thesaurus content. Some of the content is based on print dictionaries such as the Century Dictionary, the American Heritage Dictionary, WordNet, and GCIDE. Wordnik has collected a corpus of billions of words which it uses to display example sentences, allowing it to provide information on a much larger set of words than a typical dictionary. Wordnik uses as many real examples as possible when defining a word.", - "seekr news":[ - "Seekr is a transparent and independent search engine and information evaluation provider that puts the power of information autonomy in the hands of the people by providing them with a better search experience and offers privacy, reliability ratings and political slant indicators on results.", - "https://seekr.com/" - ], - "seekr images":[ - "seekr news:en", - "ref" - ], - "seekr videos":[ - "seekr news:en", - "ref" - ], - "sjp.pwn":[ - "Polish online dictionary", - "wikidata" - ], - "svgrepo":[ - "Free Vectors and Icons in SVG format. ✅ Download free mono or multi color vectors for commercial use. Search in 500.000+ Free SVG Vectors and Icons.", - "https://www.svgrepo.com" - ], - "wallhaven":[ - "Your source for the best high quality wallpapers on the Net!", - "https://wallhaven.cc/" - ], - "wikimini":[ - "family of online encyclopedias for children", - "wikidata" - ], - "wttr.in":[ - "weather forecast service", - "wikidata" - ], - "yummly":"Yummly is an American website and mobile app that provides users recipes via recommendations and a search engine. Yummly uses a knowledge graph to offer a semantic web search engine for food, cooking and recipes.", - "brave":"Brave is a free and open-source web browser developed by Brave Software, Inc. based on the Chromium web browser. Brave is a privacy-focused browser, which automatically blocks most advertisements and website trackers in its default settings. Users can turn on optional ads that reward them for their attention in the form of Basic Attention Tokens (BAT), which can be used as a cryptocurrency or to make payments to registered websites and content creators.", - "brave.images":[ - "brave:en", - "ref" - ], - "brave.videos":[ - "brave:en", - "ref" - ], - "brave.news":[ - "brave:en", - "ref" - ], - "lib.rs":[ - "List of Rust libraries and applications. An unofficial experimental opinionated alternative to crates.io", - "https://lib.rs" - ], - "sourcehut":[ - "software development repository and forge", - "wikidata" - ], - "goo":"Goo, stylized in lowercase, is an Internet search engine and web portal based in Japan, which is used to crawl and index primarily Japanese language websites. Goo is operated by the Japanese NTT Resonant, a subsidiary of NTT Communications. The name is derived from the phrase, \"global network continues to expand to infinity ∞\". The site's mascot is a goat named Megu-tan.", - "bt4g":[ - "a Search Engine based on DHT protocol", - "https://bt4gprx.com" - ], - "pkg.go.dev":[ - "Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.", - "https://pkg.go.dev/" - ] - }, - "eo":{ - "artic":"La Arta Instituto de Ĉikago estas enciklopedia arta muzeo situanta ĉe la Ĉikaga Parko Grant. Ĝi enhavas kolekton de arto de Impresionismo kaj Post-impresionismo en sia konstanta kolekto. Ties enhavo inkludas ankaŭ montron de usona pentrarto, eŭropa pentrarto, eŭropa kaj amerika ornamarto, azia arto, moderna kaj nuntempa arto, kaj dezajno pri arkitekturo kaj industrio.", - "arxiv":"arXiv estas elektronika arkivo por antaŭpresaj sciencaj artikoloj. Ĝi funbkcias en la fakoj de matematiko, fiziko, astronomio, komputiko, kvantitativa biologio, statistiko, kaj kvantitativa financo. Ĝi povas esti alirata nur rete.", - "bandcamp":"Bandcamp estas usona firmao kiu malfermis retan muzikbutikon kaj artistan platformon kiu akcelas sendependajn artistojn. En 2013 apo estis aldonita al la muzikdistribuejo.", - "wikipedia":"Vikipedio estas interreta, plurlingva reta enciklopedio kun enhavo laŭ la koncepto de libera verko. Ĝin verkadas volontuloj surbaze de amaskunlaboro – ĉiu homo kun aliro al la Interreto rajtas ŝanĝi la enhavon de preskaŭ ĉiu artikolo. Tamen oni ne rajtas fari ion ajn, sed devas sekvi certajn regulojn. La plej gravaj estas konformo al enciklopedieco, neŭtraleco kaj respekto.", - "bilibili":"Bilibili estas retejo de disdonataj videoj kies temoj estas Animeo, mangao, kaj Videoludo-komunumo en la Ĉina Popola Respubliko, kie uzantoj povas submeti, vidi kaj aldoni komentariajn subtitolojn al videoj. La retejo uzas Flash Video kaj HTML5-teĥnologiojn por montri videojn submetitajn de uzantoj, kiuj estas gastigitaj de tria-personaj fontoj, dum tio aspektas kiel samtempa supertavola subtitola sistemo por interaga reluda eksperimento.", - "bing":"Bing estas interreta serĉilo de Mikrosofto, kreita el Live Search en junio de 2009. La unua versio de Bing funkciis la 3-an de junio 2009. La celo de Bing estas rivali kun Google kaj Yahoo!, la plej grandaj interretaj serĉiloj. Live Search je la lasta jaro estis uzita mezvalore por 6% de la tutmondaj serĉoj, kontraŭ la 67% de Google kaj la 22% de Yahoo!.", - "bing images":[ - "bing:eo", - "ref" - ], - "btdigg":"BTDigg estas la unua BitTorenta DHT-serĉilo. Ĝi partoprenas en la BitTorenta DHT-reto, subtenas la reton kaj rekonas similecojn inter magnetligiloj kaj kelkaj torentaj atributoj, kiuj estas konservataj en datumbazo. Por la uzantoj BTDigg ofertas plentekstan serĉadon per reta interfaco, kiun atingeblas ankaŭ per anonimigaj retoj Tor kaj I2P.", - "currency":"DuckDuckGo estas interreta serĉilo kiu utiligas informojn de homamase alportitaj retejoj kiel ekzemple Vikipedio por akiri siajn rezultojn. La serĉilopolitiko diras ke ĝi protektas privatecon, kaj ne registras uzanto-informojn. Ĉar uzantoj ne estas profilitaj, la \"filtriloveziko\" povas esti evitita, kie al ĉiuj uzantoj estas montritaj la samaj serĉorezultoj por antaŭfiksita serĉvorto.", - "ddg definitions":[ - "currency:eo", - "ref" - ], - "wikidata":"Vikidatumoj estas libera sci-bazo prizorgata de Vikimedio. Ĝi estis oficiale lanĉita la 30-an de oktobro 2012.", - "duckduckgo":[ - "currency:eo", - "ref" - ], - "duckduckgo images":[ - "currency:eo", - "ref" - ], - "duckduckgo videos":[ - "currency:eo", - "ref" - ], - "duckduckgo news":[ - "currency:eo", - "ref" - ], - "duckduckgo weather":[ - "currency:eo", - "ref" - ], - "etymonline":"Online Etymology Dictionary estas senpaga reta etimologia vortaro verkita kaj kompilita de Douglas Harper kiu priskribas la devenon de anglalingvaj vortoj.", - "fdroid":"F-Droid estas deponejo por Android-aplikaĵoj. Ĝi funkcias simile al la Google-Play-vendejo, sed ĝi enhavas nur liberajn kaj malfermfontajn programarojn. Oni povas trovi kaj instali la aplikaĵojn en la retejo de F-Droid aŭ per ĝia propra aplikaĵo. La F-Droid-aplikaĵo aŭtomate ĝisdatigas programojn instalitajn per F-Droid. La retejo ankaŭ ofertas ligilon al la fontkodon de ĉiuj aplikaĵoj tie elŝuteblaj.", - "flickr":"Flickr estas usona servo pri bildigado kaj filmoj, kaj ankaŭ interreta komunumo. Ĝi estis kreita de Ludicorp en 2004 kaj estis populara ĉe gastigado de altaj distingivaj fotoj de amatoraj kaj profesiaj fotistoj. Ĝi ŝanĝis sian posedanton plurfoje kaj nune estas posedata de SmugMug ekde la 20-a de aprilo 2018.", - "free software directory":"La Katalogo de Libera Programaro estas projekto de la Fondumo por Libera Programaro. Ĝi katalogas liberajn komputilajn programojn, kiuj uzeblas de liberaj operaciumoj—precipe GNU kaj Linukso. La katalogitaj projektoj ofte ankaŭ uzeblas de iuj aliaj operaciumo. Antaŭe Unesko kundirektis la projekton.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub estas tutmonda kompanio, kiu provizas gastigadon por evoluigo de programoj per la versitena sistemo Git. Ĝi estas filio de Microsoft, kiu akiris la kompanion en 2018 por 7,5 bilionoj da usonaj dolaroj.", - "google":"La serĉilo Google, Google-Serĉo, aŭ iam Gugla serĉilo, estas interreta serĉilo, kiun evoluigis la firmao Google. Ĝi estas la plej uzita serĉilo sur la Tut-Tera Teksaĵo, ĉiun tagon pritraktante pli ol 3.6 miliardojn da serĉoj. En la komenco de la jaro 2022, ĝi estas la plej uzita serĉilo en la mondo, kun merkatparto de 92 procentoj. Google resendas serĉrezultojn, kies ordo estas bazita, parte, laŭ paĝorango-sistemo. La serĉilo ankaŭ disponigas multajn malsamajn opciojn por adaptitaj serĉoj, uzante simbolojn por inkludi, ekskludi, precizigi aŭ postuli certan serĉan konduton, kaj ofertas specialigitajn interagajn travivaĵojn — ekzemple, la statuson de flugnumero aŭ de pakaĵo por livero, veterprognozojn, valuton, la konvertojn inter mezurunuoj kaj horzonaj tempoj, vorton difinoj, kaj pli.", - "google images":[ - "Google Bildoj. La plej efika bildoserĉilo en Interreto.", - "https://images.google.com" - ], - "hoogle":"Haskell estas komputillingvo kreita de Paul Hudak, Simon Peyton Jones, kaj Philip Wadler en 1987. Pli specife, ĝi estas himonimige tipizema, nestrikta, pure funkcia lingvo. La lingvo estas nomita por Haskell Brooks Curry, kies esploro pri matematika logiko estas la fundamento de funkciaj lingvoj. Haskell baziĝas de la lambdokalkulo.", - "imdb":"Interreta filma datumbazo estas datumbazo kun informoj pri filmoj, televidaj programoj, aktoroj, reĝisoroj kaj ĉio cetera, kio rilatas al la filma kreado.", - "ina":[ - "muzeo en Francio", - "wikidata" - ], - "lemmy communities":"Lemmy estas libera kaj malfermitkoda programo por krei forumojn kaj aktualaĵajn retejojn, simile al Reddit, kreita en la jaro 2019. Subtenante la protokolon ActivityPub, retejoj de Lemmy povas interagi unu al la alia kaj al aliaj retejoj de Fediverso.", - "lemmy users":[ - "lemmy communities:eo", - "ref" - ], - "lemmy posts":[ - "lemmy communities:eo", - "ref" - ], - "lemmy comments":[ - "lemmy communities:eo", - "ref" - ], - "library of congress":"La Kongresa Biblioteko estas la neoficiala nacia biblioteko de Usono. Havante pli ol 128 milionojn da eroj ĝi estas la dua plej granda bibliodeko de la mondo, superata sole de la Brita Biblioteko. Ĝiaj kolektoj enhavas pli ol 28 milionojn da katalogitaj libroj kaj aliaj presaĵoj en 470 lingvoj, pli ol 50 milionojn da manuskriptoj, la kolekton plej grandan de libroj raraj en Nordameriko, inkluzivantan la biblion de Gutenberg, kaj la kolekton plej grandan en la mondo de materialoj leĝaj, filmoj, kartoj kaj surbendigaĵoj sonaj.", - "mastodon users":"Mastodon estas libera socia reto de blogetado. Uzantoj povas sendi mesaĝojn, kaj sekvi aliajn uzantojn por rekte ricevi iliajn mesaĝojn. La plej fama servo de blogetado estas Twitter, sed Mastodon malsamas de ĝi per teknologio kaj intenco. Mastodon estas sencentra, kaj malfermitkoda, kaj donas multajn funkciojn por plibonigi la sperton de uzantoj.", - "mastodon hashtags":[ - "mastodon users:eo", - "ref" - ], - "npm":[ - "pako-administrilo por Node.js", - "wikidata" - ], - "openstreetmap":"OpenStreetMap (OSM) estas kunlabora projekto por krei liberan, redakteblan mapon de la mondo. Du tendencoj instigis la estiĝon kaj kreskon de OSM: limigoj je la uzado kaj haveblo de mapa informo tra multo de la mondo, kaj la disvastiĝo de malmultekostaj porteblaj GPS-sistemoj. Por krei la mapon oni uzas datumojn akiritajn per GPS-sistemo, kaj datumojn trovitajn en publikhavaĵaj fontoj, ktp.", - "pinterest":"Pinterest estas socia reto kaj telefonaplikaĵo, kiu funkciigas softvarsistemon dizajnitan por malkovri informojn pri la Tutmonda Reto. Registrado estas postulata por uzo. La retejo estis fondita de Ben Silbermann, Paul Sciarra kaj Evan Sharp. Ben resumis la firmaon kiel \"katalogo de ideoj\", prefere ol kiel socia reto. Ĝi estis fondita en marto 2010.", - "piratebay":"«The Pirate Bay» estas Sveduja retpaĝaro, kiu gastigas ligildosierojn por la protokolo BitTorrent.", - "qwant":"Qwant [kwɑ̃t] estas eŭropa reta serĉilo fondita la 16an de februaro 2013 de Jean-Manuel Rozan, Éric Leandri kaj Patrick Constant. Ĝi de sia komenco depostuliĝas nek spuri siajn uzantojn nek vendi iliajn personajn datumojn, por garantii ilian intiman vivon, kaj volemas esti neŭtrala en siaj serĉrezultoj.", - "qwant news":[ - "qwant:eo", - "ref" - ], - "qwant images":[ - "qwant:eo", - "ref" - ], - "qwant videos":[ - "qwant:eo", - "ref" - ], - "reddit":"Reddit estas socia retejo pri aktualaĵoj kie la enskribitaj uzantoj afiŝas enhavojn, aŭ per ligilo aŭ tekste (memafiŝo). Post la afiŝado, aliaj uzantoj voĉdonas \"supren\" aŭ \"malsupren\" por rangigi la afiŝon kaj decidi ĝian pozicion sur la ĉefa kaj aliaj paĝoj de la retejo.", - "soundcloud":"SoundCloud estas interreta sonplatformo kiu permesas al sonproduktantoj alŝuti, registri, reklami kaj kunhavigi siajn originajn kreitajn sonojn.", - "stackoverflow":"Stack Exchange estas reto de retejoj, kie homoj povas starigi demandojn kaj respondi al demandoj pri diversaj temoj. Stack Exchange estas subdividita en diversaj retejoj.", - "askubuntu":[ - "stackoverflow:eo", - "ref" - ], - "superuser":[ - "stackoverflow:eo", - "ref" - ], - "youtube":"YouTube ['ju:.t(j)u:b] estas retejo, videospektejo fondita en februaro 2005 de la iamaj PayPal-kunlaborantoj Chad Hurley, Steve Chen kaj Jawed Karim. Sur tiu retejo la uzantoj povas spekti filmetojn, datumflue transportatajn al la komputilo de la spektanto, kaj alŝuti proprajn filmetojn. La 9-an de oktobro 2006 Google anoncis sian aĉeton de YouTube.", - "vimeo":"Vimeo estas entrepreno en Novjorko, Usono, kiu ekde la jaro 2004 ofertas servon de interreta televido: Sur la retejo de la entrepreno, legebla en la angla, la uzantoj povas spekti filmetojn, datumflue transportatajn al la komputilo de la spektanto, kaj registritaj uzantoj povas alŝuti proprajn filmetojn. Laŭ la reteja regularo, rajtas alŝuti filmetojn nur personoj, kiuj ilin \"mem kreis aŭ proksime kunlaboris en la kreado\".", - "wikibooks":"Vikilibroj estas vikia loko por publikigo de libroj sen kopirajto. Ĝi estas Projekto de Fondaĵo Vikimedio kaj ekzistas ankaŭ en Esperanto.", - "wikinews":"Vikinovaĵoj estas projekto de la Fondaĵo Vikimedio celante provizi liberan novaĵretejon.", - "wikiquote":"Vikicitaro estas multlingva kunlabora projekto arigi surrete citaĵojn. Ĝi estas frata projekto de Vikipedio kaj unu el familio de wiki-bazitaj projektoj prizorgita de Fondaĵo Vikimedio, funkciante per MediaWiki softvaro. Ĝi estis fondita laŭ ideo de Daniel Aslton kaj realigita de Brion Vibber. La celo de la projekto, kiu komenciĝis kiel elkreskaĵo Wikipedia Famous Quotations, devas produkti kunlabore vastan referencon de citaĵoj de eminentuloj, librojn, filmojn, proverbojn, ktp. kaj esti tiel bonorda kiel eble konsiderante la detalojn de la citaĵoj kaj disponigo de konvenaj homaj referencoj de citaĵoj.", - "wikisource":"Vikifontaro estas multlingva projekta surreta kolekto de fonttekstoj, mastrumita de la Fondaĵo Vikimedio. Memstara versio de Vikifontaro en Esperanto aperis en marto 2011, antaŭe esperantlingvaj artikoloj kundividis komunan spacon en la multlingva ĝenerala Vikifontaro, markitaj per kategorio \"Esperanto\".", - "wikispecies":"Vikispecioj estas reta enciklopedio celanta listigi ĉiujn vivantajn speciojn. Ĝi estas libera vikio, projekto de la Fondaĵo Vikimedio.", - "wiktionary":"Vikivortaro estas frata projekto de Vikipedio por krei liberan vikian vortaron en ĉiu lingvo. Daniel Alston fondis ĝin je la 12-a de decembro, 2002. Ĝi ekhavis oficialan adreson je la 26-a de decembro, 2002. Nuntempe la projekto akceptas difinojn en diversaj lingvoj: por ĉiu lingvo estas memstara paĝaro. Post apero de franca kaj pola versioj la projekto fariĝis multlingva en majo 2004.", - "wikiversity":"Vikiversitato estas projekto de la Fondaĵo Vikimedio. Ĝi estas virtuala komunuma kunlabora libera kaj senpaga pedagogia spaco por studado kaj esploroj. Estas ĉefpaĝo en 17 lingvoj kaj 5 plenaj projektoj en la angla, franca, germana, hispana kaj itala.", - "wikivoyage":"Vikivojaĝo estas projekto de Vikimedio, kiu celas konstrui gvidilon por turistoj. Ĝi estas skribata de volontulaj aŭtoroj uzantaj vikion. Ĉiu povas redakti artikolojn.", - "wikicommons.images":"La Vikimedia Komunejo aŭ simple Komunejo estas projekto de la Fondaĵo Vikimedio, kiu ekis la 7-an de septembro 2004. La projekto celas konstrui centran datumbazon de bildoj, filmoj kaj muziko. La dosieroj en la centra datumbazo estas rekte atingeblaj en ĉiuj lingvoj, inkluzive de Vikipedio, Vikivojaĝo, Vikifontaro, Vikicitaro, Vikivortaro, Vikinovaĵoj, Vikilibroj kaj Vikispecioj, aŭ elŝutitaj por ekstere uzo.", - "seznam":[ - "ĉeĥa interreta serĉilo", - "wikidata" - ], - "peertube":"PeerTube estas libera programaro, malcentra, malcentralizita, federacia retapliko, kiu uzas peer-to-peer teknologion por redukti la ŝarĝon sur individuaj serviloj dum spektado de videoj.", - "yacy":"|bildo = YaCy ([ja:si:]) estas libera sencentra serĉilo, kiun inventis grupo de aktivuloj, kiuj subtenas disvastiĝon de libera programaro. Malkiel aliaj popularaj serĉiloj, kiel Google kaj Bing, YaCy ne funkcias per uzado de kelkaj grandaj datum-centroj. Anstataŭ, ĝi funkcias per samtavola ŝutado (P2P). Sekve, diskaparatoj de la uzantoj estas uzataj por konservi datumojn pri enlistigitaj retejoj kaj aliaj dokumentoj. Konsekvence, cenzuri aŭ arbitre aliordigi serĉrezultojn fariĝas ege malfacila, kaj la serĉilo ne difektiĝos forte pro fuŝiĝo de kelkaj serviloj.", - "yacy images":[ - "yacy:eo", - "ref" - ], - "brave":"Brave estas malfermkoda retumilo kreita en 2016 de Brendan Eich por kiu la respekto de la privata vivsfero estas grava. Brave estas konstruita sur la bazo de Kromio, kiu estas la bazo de plej multaj retumiloj en la merkato, inkluzive de Google Chrome. La plej grava diferenco de ili estas la ĉeesto de la modulo Brave Shields, kiu aŭtomate blokas reklamojn kaj dosierinterŝanĝo kiam vi malfermas retpaĝojn.. Brave havas komercan modelon laŭ la devizo \"Akiri pagon retumante\", kiu signifas ke uzantoj akiras malgrandajn kvantojn da BAT, bazita sur la ĉifromono Ethereum.", - "brave.images":[ - "brave:eo", - "ref" - ], - "brave.videos":[ - "brave:eo", - "ref" - ], - "brave.news":[ - "brave:eo", - "ref" - ] - }, - "es":{ - "9gag":"9GAG es un sitio humorístico de Internet establecido en Hong Kong y publicado en Estados Unidos. Lanzada en 2008, esta página es muy conocida por el uso de memes.", - "annas archive":"El Archivo de Anna es un metabuscador en línea gratuito y sin ánimo de lucro de bibliotecas fantasma que proporciona acceso a una colección de libros, creado por un equipo de archivistas anónimos, y publicado en respuesta directa a los esfuerzos de las fuerzas de seguridad, con la ayuda formal de The Publishers Association y Authors Guild, para cerrar el sitio web de Z-Library en noviembre de 2022.", - "apple app store":"La Apple App Store es un servicio para el iPhone, iPod Touch, y el iPad, creado por Apple, que permite a los usuarios buscar y descargar aplicaciones, publicadas por Apple. Estas aplicaciones están disponibles para ser compradas o gratuitas, dependiendo de cada una. Las aplicaciones pueden ser descargadas directamente al iPhone o al iPod Touch por medio de una aplicación del mismo nombre.", - "artic":"El Instituto de Arte de Chicago es un museo y escuela de arte situado en la avenida Míchigan junto al Grant Park, enfrente del lago Míchigan en Chicago, Estados Unidos. Es uno de los museos de arte más importantes del mundo y suele ser nombrado como uno de los tres principales de Estados Unidos, junto con el Metropolitan Museum de Nueva York y el Museo de Bellas Artes de Boston. Cuenta con una de las colecciones permanentes más importantes de cuadros del Impresionismo y Posimpresionismo del mundo.", - "arxiv":"arXiv es un archivo en línea para las prepublicaciones de artículos científicos en el campo de las matemáticas, física, ciencias de la computación y biología cuantitativa. En muchos campos de las matemáticas y la física, casi todos los artículos científicos se colocan en arXiv. A fecha 27 de julio de 2010, arXiv.org contenía más de 617.767 imprimibles, lo que supone que miles de ellos son añadidos cada mes.", - "bandcamp":"Bandcamp es una tienda de música en línea, además de una plataforma de lanzamiento y de promoción para artistas independientes. Abrió su web en septiembre de 2008, y en 2012 posee un catálogo de más de 5 millones de canciones, más de 600.000 álbumes procedentes de 183 países. El 2 de marzo de 2022, Bandcamp fue adquirida por Epic Games.", - "wikipedia":"Wikipedia es una enciclopedia libre, políglota y editada de manera colaborativa. Es administrada por la Fundación Wikimedia, una organización sin ánimo de lucro cuya financiación está basada en donaciones. Sus más de 61 millones de artículos en 333 idiomas han sido redactados en conjunto por voluntarios de todo el mundo, lo que suma más de 3000 millones de ediciones, y permite que cualquier persona pueda sumarse al proyecto para editarlos, a menos que la página se encuentre protegida contra vandalismos para evitar problemas o disputas.", - "bilibili":"Bilibili es una página de alojamiento de vídeos. Es la página más popular con tema de anime, manga y el fandom de videojuegos en China. Bilibili utiliza Adobe Flash o HTML5, que se puede cambiar manualmente, para reproducir vídeos subidos por el usuario alojados por ellos mismos o por fuentes de terceros, y que cuentan con un sistema de subtítulos superpuestos en tiempo real para la experiencia de reproducción interactiva.", - "bing":"Microsoft Bing es un motor de búsqueda web de Microsoft. El servicio tiene su origen en los anteriores motores de búsqueda de Microsoft: MSN Search, Windows Live Search y posteriormente Live Search. Bing proporciona varios servicios de búsqueda, incluidos productos de búsqueda web, de vídeo, de imágenes y de mapas. Se desarrolla utilizando ASP.NET.", - "bing images":[ - "bing:es", - "ref" - ], - "bing news":"Bing Noticias es parte del motor de búsqueda Bing de Microsoft. Es un motor de búsqueda y agregador específicamente para artículos de noticias a través de una variedad de confianza y fuentes de noticias de internet, incluidos New York Times, Washington Post y Reuters.", - "bing videos":"Bing Videos es un servicio de búsqueda de vídeo y parte del motor de búsqueda Bing de Microsoft. El servicio permite a los usuarios buscar y ver vídeos a través de diversos sitios de Web. Bing vídeos oficialmente fue puesto el 26 de septiembre de 2007 como Live Search vídeo y renonbrado como Bing vídeo el 3 de junio de 2009.", - "bitbucket":"Bitbucket es un servicio de alojamiento basado en web, para los proyectos que utilizan el sistema de control de versiones Mercurial y Git. Bitbucket ofrece planes comerciales y gratuitos. Se ofrece cuentas gratuitas con un número ilimitado de repositorios privados desde septiembre de 2010, los repositorios privados no se muestran en las páginas de perfil - si un usuario sólo tiene depósitos privados, el sitio web dará el mensaje \"Este usuario no tiene repositorios\". El servicio está escrito en Python.", - "crossref":"Crossref es una organización sin fines de lucro que provee infraestructura digital para la comunidad académica y de investigación global. Crossref registra y conecta el conocimiento de forma única y persistente a través de metadatos e identificadores abiertos para todos los objetos de investigación, como subvenciones y artículos. Es la mayor agencia de registro de identificadores de objetos digitales (DOI) de la Fundación Internacional DOI. Tiene 19.000 miembros de 150 países que representan a editores, bibliotecas, instituciones de investigación y financiadores. Se lanzó a principios de 2000 como un esfuerzo cooperativo entre editores para permitir enlaces persistentes de citas multiplataforma en revistas académicas en línea. Para julio de 2023, Crossref identifica y conecta 150 millones de registros de metadatos sobre objetos de investigación disponibles abiertamente para su reutilización sin restricciones. Facilitan un promedio de 1.100 millones de resoluciones DOI cada mes y tienen 1.000 millones de consultas de metadatos cada mes.", - "curlie":[ - "directorio de Internet editado por personas", - "wikidata" - ], - "currency":"DuckDuckGo (DDG) es un motor de búsqueda que hace hincapié en la protección de la privacidad de los usuarios y en evitar la burbuja de filtros de los resultados de búsqueda personalizados. DuckDuckGo no muestra resultados de búsqueda procedentes de granjas de contenido. Utiliza varias API de otros sitios web para mostrar resultados rápidos a las consultas y para los enlaces tradicionales utiliza la ayuda de sus socios y su propio rastreador.", - "deezer":"Deezer es un sitio web y aplicación informática con un amplio catálogo musical. Se creó en Francia durante junio de 2006 por dos jóvenes, Daniel Marhely y Jonathan Benassaya. Cuenta con 16 millones de usuarios, está disponible en 16 idiomas, cuenta con tres versiones: Free [Disponible en algunos países], Premium [calidad 320 kbps y FLAC] y Family.", - "deviantart":"DeviantArt o DA, es un sitio web estadounidense que agrupa a una comunidad internacional de artistas en la red, es filial de la empresa israelí Wix.com. Fue lanzada el 7 de agosto de 2000 por Angelo Sotira, Scott Jarkoff, Matthew Stephens y otros.", - "ddg definitions":[ - "currency:es", - "ref" - ], - "erowid":"Erowid.org, también llamada Las Bóvedas de Erowid, es una biblioteca en línea de información sobre plantas psicoactivas y sustancias químicas y otras actividades como la meditación y el sueño lúcido. Proporciona información sobre sustancias legales e ilegales, incluidos sus efectos, tanto deseados como adversos. La información está organizada por sustancias, que van desde sustancias comunes como el alcohol, a otras tan inusuales como el Bromo-Dragonfly.", - "wikidata":"Wikidata es una base de conocimientos editada en colaboración y alojada por la Fundación Wikimedia. Tiene el objetivo de proporcionar una fuente común de datos que puedan ser utilizados por proyectos de Wikimedia como Wikipedia, y por cualquier otra persona, bajo una licencia de dominio público. Esto es similar a la forma en que Wikimedia Commons proporciona almacenamiento para archivos multimedia y acceso a estos archivos para todos los proyectos de Wikimedia. Wikidata funciona y opera con el software Wikibase.", - "duckduckgo":[ - "currency:es", - "ref" - ], - "duckduckgo images":[ - "currency:es", - "ref" - ], - "duckduckgo videos":[ - "currency:es", - "ref" - ], - "duckduckgo news":[ - "currency:es", - "ref" - ], - "duckduckgo weather":[ - "currency:es", - "ref" - ], - "apple maps":"Apple Maps es un servicio de mapas desarrollado por Apple a los dispositivos con iPadOS, iOS y OS X y macOS. Fue introducido en marzo de 2012 en todos los dispositivos nuevos y con todas actualizaciones del sistema como reemplazo del Google Maps.", - "etymonline":"El Online Etymology Dictionary es un diccionario en línea en el que se describe la etimología de las palabras en lengua inglesa. Su acrónimo, OED, coincide con el acrónimo que se usa frecuentemente para referirse al Oxford English Dictionary. Douglas Harper creó el diccionario etimológico para guardar así la historia y evolución de más de 30 000 palabras, incluyendo jerga y lenguaje técnico. El Online Etymology Dictionary ha sido referenciado por la biblioteca de la Universidad de Ohio como una fuente de información etimológica relevante y fue citado en el Chicago Tribune como «una de las mejores fuentes para encontrar la palabra justa». También es citado en numerosos artículos como fuente para explicar la historia y evolución de las palabras.", - "fdroid":"F-Droid es un repositorio de software para dispositivos Android; funciona de manera similar a la tienda de Google Play, pero solo contiene software libre y de código abierto. Las aplicaciones pueden buscarse e instalarse desde la página web de F-Droid o desde el cliente oficial. La aplicación de F-Droid busca actualizaciones de forma automática para las aplicaciones descargadas a través de la misma. Además, tanto la web como el cliente ofrecen enlaces al código fuente de todas las aplicaciones descargables.", - "flickr":"Flickr es un sitio web que permite almacenar, ordenar, buscar, vender y compartir fotografías o vídeos en línea, a través de Internet.", - "free software directory":"Free Software Directory (FSD) es un proyecto de la Free Software Foundation (FSF). Su objetivo es catalogar el Software Libre que se puede ejecutar en Sistemas Operativos libres, especialmente sistemas GNU/Linux. El software catalogado, a menudo, puede ser también ejecutado en otros Sistemas Operativos no libres. Anteriormente en el mantenimiento del proyecto colaboraba la Unesco.", - "genius":"Genius es una empresa estadounidense de medios digitales fundada en agosto de 2009 por Tom Lehman, Ilan Zechory y Mahbod Moghadam. El sitio permite a los usuarios aportar anotaciones e interpretaciones a las letras de canciones, noticias, fuentes, poesía y documentos.", - "gentoo":"Genkernel es una herramienta para la construcción de un propósito general modular del núcleo (informática) Linux para Gentoo Linux. Genkernel compila el kernel con todos los controladores de dispositivos construidos como módulos, entonces estas copias a un disco RAM que se pasa al kernel en el momento del arranque, ofreciendo detección automática de hardware. Se ha diseñado para permitir que los usuarios con poca o ninguna experiencia en la configuración de un núcleo Linux fácilmente a crear un grupo de trabajo núcleo.", - "gitlab":"Gitlab Inc. es una compañía de núcleo abierto y es la principal proveedora del software GitLab, un servicio web de forja, control de versiones y DevOps basado en Git. Además de gestor de repositorios, el servicio ofrece también alojamiento de wikis y un sistema de seguimiento de errores, todo ello publicado bajo una licencia de código abierto, principalmente.", - "github":"GitHub es una forja para alojar proyectos utilizando el sistema de control de versiones Git. Se utiliza principalmente para la creación de código fuente de programas de ordenador. El software que opera GitHub fue escrito en Ruby on Rails. Desde enero de 2010, GitHub opera bajo el nombre de GitHub, Inc. Anteriormente era conocida como Logical Awesome LLC. El código de los proyectos alojados en GitHub se almacena generalmente de forma pública.", - "google":"El buscador de Google o buscador web de Google es un motor de búsqueda en la web propiedad de Alphabet Inc. Es el motor de búsqueda más utilizado en la Web y recibe cientos de millones de consultas cada día a través de sus diferentes servicios. El objetivo principal del buscador de Google es buscar texto en las páginas web, en lugar de otro tipo de datos. Fue desarrollado originalmente por Larry Page y Sergey Brin en 1997.", - "google images":"Google Imágenes es una especialización del buscador principal para imágenes, se introdujo el 12 de julio de 2001 debido a la demanda de imágenes del vestido verde de Versace que usó Jennifer López en febrero de 2000. En 2011, se agregó la función de búsqueda inversa de imágenes.", - "google news":"Google Noticias, conocido en España como Google News, es un agregador y buscador de noticias automatizado que rastrea de forma constante la información de los principales medios de comunicación en línea.", - "google videos":"Google Videos (en Latinoamérica como Google Videos y en España como Google Vídeos fue un servicio de Google que hasta enero de 2009 permitía subir clips de video a sus servidores para que cualquier persona los pudiera buscar y ver directamente desde su navegador. Inicialmente nació como competencia de YouTube, a la que terminó comprando el 10 de octubre de 2006. Finalmente, Google Video pasó a funcionar como un mero buscador de vídeos en la red, pasando a ser YouTube el único servicio de estos dos que permite la subida de vídeos.", - "google scholar":"Google Académico es un motor de búsqueda de Google enfocado y especializado en la búsqueda de contenido y bibliografía científico-académica. El sitio indexa editoriales, bibliotecas, repositorios, bases de datos bibliográficas, entre otros; y entre sus resultados se pueden encontrar citas, enlaces a libros, artículos de revistas científicas, comunicaciones y congresos, informes científico-técnicos, tesis, tesinas y archivos depositados en repositorios.", - "google play apps":"Google Play es una plataforma de distribución digital de aplicaciones móviles para los dispositivos con sistema operativo Android, así como una tienda en línea desarrollada y operada por Google. Esta plataforma permite a los usuarios navegar y descargar aplicaciones, juegos, música, libros, revistas y películas. También se pueden adquirir dispositivos móviles como ordenadores Chromebook, teléfonos inteligentes Nexus y Pixel, Google Chromecast, entre otros. También cuenta con versiones para Wear OS y Android TV.", - "google play movies":[ - "google play apps:es", - "ref" - ], - "hoogle":"Haskell es un lenguaje de programación estandarizado multi-propósito, funcionalmente puro, con evaluación no estricta y memorizada, y fuerte tipificación estática. Su nombre se debe al lógico estadounidense Haskell Curry, debido a su aporte al cálculo lambda, el cual tiene gran influencia en el lenguaje. En Haskell, \"una función es un ciudadano de primera clase\" del lenguaje de programación. Como lenguaje de programación funcional, el constructor de controles primario es la función. El lenguaje tiene sus orígenes en las observaciones de Haskell Curry y sus descendientes intelectuales.", - "imdb":"Internet Movie Database es una base de datos en línea que en un principio almacena información relacionada con películas, y con el tiempo se transforma en la base de datos más grande del mundo donde se encuentran programas de televisión, eventos en vivo y difundidos en televisión o en la web, entrega de premios, especiales y videojuegos. Se encuentra el personal de equipo de producción, actores, series y programas de televisión, videojuegos, actores de doblaje y personajes ficticios que aparecen en los medios de entretenimiento visual. Recibe más de 100 millones de usuarios únicos al mes y cuenta con una versión móvil. IMDb fue inaugurada el 17 de octubre de 1990, y en 1998 fue adquirida por Amazon.com.", - "imgur":"Imgur es un sitio web para alojar imágenes en línea, fundado por Alan Schaaf en el 2009 en Ohio, Estados Unidos, como un regalo para la comunidad de Reddit. Imgur es, actualmente, una de las mayores webs de contenido de imágenes de Internet donde son juzgadas en tiempo real por una comunidad de usuarios a través de comentarios y votos.", - "ina":"El Instituto nacional del audiovisual (INA) es una dependencia pública francesa dedicada a archivar las producciones audiovisuales, de producir, de editar, de ceder contenidos audiovisuales y multimedia a destino de todos los públicos, profesionales o particulares, para todas las pantallas. El INA también es un centro de formación y de investigación que pretende desarrollar y transmitir los saberes de los medios de comunicación audiovisuales.", - "kickass":"KickassTorrents es un sitio web que proporciona un directorio de archivos torrent y enlaces magnéticos para facilitar el intercambio de archivos peer-to-peer mediante el protocolo BitTorrent. Fue fundada en 2008 y fue puesto fuera de línea el 20 de julio de 2016, cuando el dominio fue capturado por el gobierno de Estados Unidos. Los servidores proxy del sitio fueron cerrados por su personal, al mismo tiempo.", - "lemmy communities":"Lemmy es un software libre y de código abierto para la gestión de foros de Internet y agregadores de noticias autoalojados.", - "lemmy users":[ - "lemmy communities:es", - "ref" - ], - "lemmy posts":[ - "lemmy communities:es", - "ref" - ], - "lemmy comments":[ - "lemmy communities:es", - "ref" - ], - "library genesis":"Library Genesis o LibGen es un motor de búsqueda que permite el libre acceso a artículos científicos y libros. Posee contenido libre en formatos PDF, EPUB, MOBI, DJVU, etc., accesible en portales de numerosas editoriales académicas, como Oxford UP, Cambridge UP, Elsevier ScienceDirect, Springer, etc.", - "z-library":"Z-Library es un proyecto de biblioteca fantasma de intercambio de archivos con acceso a artículos de revistas académicas, textos académicos y libros de interés general. Se originó como un espejo de Library Genesis, y la mayoría de sus libros proceden de Library Genesis. Sin embargo, algunos de ellos son subidos directamente a este sitio por usuarios individuales y no están incluidos en la colección de Library Genesis. Las personas también pueden contribuir al repositorio del sitio web para hacer que la literatura sea accesible para tantas personas como sea posible.", - "library of congress":"La Biblioteca del Congreso de los Estados Unidos, situada en Washington D. C. y distribuida en tres edificios, es una de las mayores bibliotecas del mundo, con más de 158 millones de documentos.", - "mastodon users":"Mastodon es un software libre desarrollado para implementar las redes sociales de microblogueo que conforman al fediverso, con una gran semejanza a Twitter, siendo lanzada junto con su dominio principal «mastodon.social» en octubre de 2016.", - "mastodon hashtags":[ - "mastodon users:es", - "ref" - ], - "metacpan":"CPAN es el acrónimo de Comprehensive Perl Archive Network. Es un enorme archivo de software escrito en Perl, así como de documentación sobre el mismo. Tiene presencia en la Web a través de su sitio www.cpan.org y sus 267 espejos distribuidos por todo el mundo.", - "mixcloud":"Mixcloud es un servicio británico de transmisión de música en línea que permite escuchar y distribuir programas de radio, mezclas de DJ y podcasts, que son financiados por sus usuarios registrados.", - "npm":"npm es el sistema de gestión de paquetes por defecto para Node.js, un entorno de ejecución para JavaScript, bajo Artistic License 2.0.", - "odysee":"Odysee es una plataforma de alojamiento de videos creada en septiembre de 2020 por la compañía estadounidense LBRY.inc cuyo CEO y cofundador es Jeremy Kauffman.", - "openstreetmap":"OpenStreetMap es un proyecto colaborativo para crear mapas editables y libres. En lugar del mapa en sí, los datos generados por el proyecto se consideran su salida principal.", - "pinterest":"Pinterest es una plataforma que permite a los usuarios crear y administrar, en tableros personales temáticos, colecciones de imágenes como eventos, intereses, aficiones y mucho más. Los usuarios pueden buscar otros pinboards, \"repinchar\" imágenes para sus propias colecciones. La misión de Pinterest es «conectar a todos en el mundo, a través de cosas que encuentran interesantes». Fundada por Ben Silbermann, Paul Sciarra y Evan Sharp, el sitio es manejado por Cold Brew Labs y financiado por un pequeño grupo de empresarios e inversores", - "piratebay":"The Pirate Bay es un motor de búsqueda y rastreo de ficheros BitTorrent (.torrent) en el que es posible realizar búsquedas de todo tipo de material multimedia.", - "pubmed":"MEDLINE o Medline es posiblemente la base de datos de bibliografía médica más amplia que existe, producida por la Biblioteca Nacional de Medicina de los Estados Unidos. En realidad es una versión automatizada de tres índices impresos: Index Medicus, Index to Dental Literature e International Nursing Index. Recoge referencias bibliográficas de los artículos publicados en unas 5.500 revistas médicas desde 1966 y actualmente reúne más de 30.000.000 citas, teniendo en marcha un proceso para la carga paulatina de citas anteriores a 1966, que incluye artículos desde 1871.", - "pypi":"El Python Package Index o PyPI es el repositorio de software oficial para aplicaciones de terceros en el lenguaje de programación Python. Los desarrolladores de Python pretenden que sea un catálogo exhaustivo de todos los paquetes de Python escritos en código abierto", - "qwant":"Qwant es un motor de búsqueda web creado en Francia por el especialista en seguridad Éric Leandri, el inversor Jean Manuel Rozan y el experto en motores de búsqueda Patrick Constant en 2011. Fundada el 16 de febrero de 2013, la empresa lanzó la versión definitiva de su buscador el 4 de julio de 2013. La compañía afirma no emplear el seguimiento de usuarios y no personaliza los resultados de búsqueda para evitar que sus usuarios queden atrapados en un filtro burbuja.", - "qwant news":[ - "qwant:es", - "ref" - ], - "qwant images":[ - "qwant:es", - "ref" - ], - "qwant videos":[ - "qwant:es", - "ref" - ], - "reddit":"Reddit es un sitio web de marcadores sociales y agregador de noticias donde los usuarios pueden añadir textos, imágenes, videos o enlaces. Los usuarios pueden votar a favor o en contra del contenido, haciendo que aparezcan en las publicaciones destacadas. Su público es mayoritariamente anglosajón y la mayoría de la actividad se realiza en inglés. Reddit fue software libre desde el 19 de junio de 2009 hasta septiembre de 2017, cuando la compañía archivó y cerró el acceso a sus repositorios en Github, que incluían todo el código escrito para Reddit excepto las partes antispam.", - "soundcloud":"SoundCloud es un servicio de retransmisión de música vía streaming que, a diferencia de Spotify y otras plataformas, tiene la opción de poder subir canciones y álbumes directamente, sin la necesidad de distribuidoras externas.", - "stackoverflow":"Stack Exchange es una red de webs de preguntas y respuestas sobre distintos temas, donde las preguntas, respuestas y los usuarios están sujetos a un sistema de reputación y recompensas, parecido al de Reddit. Dicho sistema permite que los sitios se automoderen.", - "askubuntu":[ - "stackoverflow:es", - "ref" - ], - "internetarchivescholar":[ - "Archivo de Internet Académico", - "https://scholar.archive.org/" - ], - "superuser":[ - "stackoverflow:es", - "ref" - ], - "semantic scholar":"Semantic Scholar es un motor de búsqueda respaldado por un sistema de inteligencia artificial dedicado a trabajar con publicaciones académicas. Desarrollado en el Allen Institute for Artificial Intelligence, se lanzó al público en noviembre de 2015. Utiliza avances recientes en el procesamiento del lenguaje natural para proporcionar resúmenes de artículos académicos.", - "startpage":"Startpage es un motor de búsqueda holandés, que destaca la privacidad como su característica distintiva. El sitio web anuncia que permite a los usuarios obtener resultados del buscador de Google protegiendo la privacidad de los usuarios al no almacenar información personal ni datos de búsqueda y eliminar todos los rastreadores. Startpage también incluye una función de navegación anónima que permite a los usuarios la opción de abrir los resultados de búsqueda a través de un proxy para aumentar el anonimato. Dado que la empresa tiene su sede en los Países Bajos, está protegida por las leyes de privacidad neerlandesa y de la Unión Europea, por lo que no está sujeta a los programas de vigilancia de Estados Unidos, como PRISM.", - "tagesschau":"Tagesschau es un informativo de Alemania emitido por Das Erste y las cadenas pertenecientes a la ARD. Es el noticiero con mayor audiencia del país.", - "unsplash":"Unsplash es el sitio web internacional en el que están colocadas las fotografías de stock con licencia Unsplash. Desde 2021 es propiedad de Getty Images. El sitio web cuenta con más de 207,000 fotógrafos colaboradores y genera más de 17 mil millones de impresiones fotográficas por mes en su creciente biblioteca de más de 2 millones de fotos. Unsplash es uno de los sitios web principales de fotografía.", - "yahoo news":[ - "sitio web de noticias de Yahoo!", - "wikidata" - ], - "youtube":"YouTube es un sitio web de origen estadounidense dedicado a compartir videos. Presenta una variedad de clips de películas, programas de televisión y vídeos musicales, así como contenidos amateur como videoblogs y YouTube Gaming. Las personas que crean contenido para esta plataforma generalmente son conocidas como youtubers.", - "dailymotion":"Dailymotion es un sitio web en el cual los usuarios pueden subir, ver y compartir vídeos. Aloja una variedad de clips de películas, programas de televisión y vídeos musicales, así como contenidos amateur como videoblogs.", - "vimeo":"Vimeo es una red social de Internet basada en videos, lanzada en noviembre de 2004 por la compañía InterActiveCorp (IAC). Es una plataforma de vídeo sin publicidad con sede en la ciudad de Nueva York, que proporciona servicios de visualización de vídeo libres.", - "wikibooks":"Wikilibros, anteriormente llamado Wikimedia Free Textbook Project y Wikimedia-Textbooks, es un proyecto hermano de Wikipedia y parte de la Fundación Wikimedia, que empezó el 10 de julio de 2003. El proyecto es una colección de libros de texto, manuales y otros textos pedagógicos de contenido libre, que se escriben y editan colaborativamente al igual que Wikipedia.", - "wikinews":"Wikinoticias es una fuente de noticias de contenido libre y un proyecto de la Fundación Wikimedia. El sitio funciona a través del periodismo colaborativo. El cofundador de Wikipedia, Jimmy Wales, ha distinguido a Wikinews de Wikipedia al decir \"en Wikinews, cada historia debe escribirse como una noticia en lugar de un artículo de enciclopedia\". La política de punto de vista neutral adoptada en Wikinoticias la distingue de otros esfuerzos de periodismo ciudadano como Indymedia y OhmyNews. A diferencia de la mayoría de los proyectos de la Fundación Wikimedia, Wikinews permite el trabajo original en forma de informes y entrevistas originales.", - "wikiquote":"Wikiquote es una colección de citas célebres de personajes famosos, libros y proverbios. Se realiza de forma colaborativa a través de Internet, bajo la licencia libre GFDL, y basándose en tecnología wiki. Se basa en una idea de Daniel Alston, implementada por Brion Vibber.", - "wikisource":"Wikisource es un proyecto hermano de Wikipedia cuyo objetivo es crear una biblioteca de textos originales y libros que hayan sido publicados con una licencia GFDL, Creative Commons o que sean de dominio público; junto con su traducción en distintas lenguas. Este sitio forma parte de la fundación Wikimedia. Forman parte de Wikisource distintos libros publicados, así como documentos históricos, ensayos, etc. Su página de inicio presenta una clasificación general por países, géneros y épocas, entre otras opciones.", - "wikispecies":"Wikispecies es un proyecto de la Fundación Wikimedia cuya misión es la de ser un directorio libre de especies. Cubre los animales, plantas, hongos, bacterias, arqueas, protistas y otras formas de vida, y se desarrollará en estrecho contacto con otros proyectos wiki, especialmente Wikipedia. Fue creado en el 2004 por propuesta de Benedikt Mandl.", - "wiktionary":"El Wikcionario es un proyecto de diccionario libre de la Fundación Wikimedia, que contiene definiciones, traducciones, etimologías, sinónimos y pronunciaciones de palabras en múltiples idiomas. Está basado en la tecnología wiki, en particular mediante la utilización del software MediaWiki, y su contenido está protegido por las licencias libres GFDL y CC BY-SA.", - "wikiversity":"Wikiversidad es un proyecto hermano de Wikipedia cuyo objetivo es construir una plataforma educativa virtual libre y gratuita, con filosofía wiki y que forme parte de la Fundación Wikimedia. En este proyecto se elaboran materiales y recursos didácticos, y se forman grupos de estudio, a diversos niveles educativos. Los materiales creados tienen una licencia Creative Commons de tipo \"Atribución-Compartir Igual\" para que sean libremente redistribuibles.", - "wikivoyage":"Wikiviajes es una guía de viaje gratuita creada por autores voluntarios. Es un proyecto hermano de Wikipedia y está patrocinado y alojado por la misma Fundación Wikimedia. Wikivoyage se ha llamado la «Wikipedia de guías de viaje».", - "wikicommons.images":"Wikimedia Commons es un proyecto de la Fundación Wikimedia creado el 7 de septiembre de 2004, cuyo objetivo es servir como almacén de archivos de imágenes y otros formatos multimedia para el resto de los proyectos de la fundación. Todos sus archivos deben haber sido liberados bajo licencias libres o en el dominio público. Actualmente, preserva más de 90 millones de ficheros multimedia libres.", - "wolframalpha":"Wolfram|Alpha es un buscador de respuestas desarrollado por la compañía Wolfram Research. Es un servicio en línea que responde a las preguntas directamente, mediante el procesamiento de la respuesta extraída de una base de datos estructurados, en lugar de proporcionar una lista de los documentos o páginas web que podrían contener la respuesta, tal y como lo hace Google. Fue anunciado en marzo de 2009 por el físico británico Stephen Wolfram y está en funcionamiento desde el 15 de mayo de 2009. Fue lanzado en español en 2022.", - "dictzone":[ - "Diccionarios en línea: inglés, español, alemán, francés, italiano, húngaro...", - "https://dictzone.com/" - ], - "1337x":"1337x es un sitio web que proporciona un motor de búsqueda de archivos .torrent y enlaces magnet utilizados para compartir archivos entre iguales (peer-to-peer) a través del protocolo BitTorrent.", - "duden":[ - "diccionario online de alemán", - "wikidata" - ], - "mojeek":"Mojeek es un motor de búsqueda localizado en Reino Unido. La búsqueda proporcionada por Mojeek proviene de su índice propio de páginas web.", - "naver":"Naver es el principal portal de Internet de Corea del Sur. Naver fue lanzado en junio de 1999 y fue el primer portal coreano que disponía de un buscador propio e independiente integrado con la página. Desde entonces ha liderado la carrera del desarrollo de buscadores en Corea. Además Naver proporciona muchos servicios a los internautas: posee una agencia de noticias propia que cubre exhaustivamente más de 90 medios de comunicación, un servicio de correo electrónico y un buscador de tesis doctorales. Su contenido más popular son los de los manhwas Torre de Dios y Girls of the Wilds. También es dueña de la aplicación de llamadas gratis LINE.", - "rubygems":"RubyGems es un gestor de paquetes para el lenguaje de programación Ruby que proporciona un formato estándar y autocontenido para poder distribuir programas o bibliotecas en Ruby, una herramienta destinada a gestionar la instalación de estos, y un servidor para su distribución. Es, por tanto, equivalente al papel que juegan CPAN y PEAR en los lenguajes Perl y PHP, respectivamente. RubyGems es parte de la librería estándar a partir de la versión 1.9 de Ruby.", - "peertube":"PeerTube es una aplicación web de software libre, descentralizada, federada y que usa la tecnología peer-to-peer para reducir la carga de los servidores individuales al visualizar videos.", - "yacy":"YaCy es un motor de búsqueda distribuido y libre que utiliza una red peer-to-peer (P2P) como infraestructura. En 2011 el motor tenía 1400 millones de documentos en su índice, y gestionaba unas 130.000 peticiones de búsquedas al día.", - "yacy images":[ - "yacy:es", - "ref" - ], - "rumble":"Rumble es una plataforma de video en línea canadiense con sede en Toronto. Fue fundada en 2013 por Chris Pavlovski, un emprendedor tecnológico de Canadá. El recuento mensual de usuarios de Rumble ha experimentado un rápido crecimiento desde julio de 2020, pasando de 1,6 millones de usuarios mensuales a 31,9 millones al final del primer trimestre de 2021.", - "wikimini":"Wikimini es una enciclopedia en línea para niños, gratuita, que tiene la particularidad de ser escrita colaborativamente por niños y adolescentes. Su contenido está dirigido a lectores de 8 a 13 años y está publicado bajo licencia libre, lo que permite su difusión y reutilización. Desde que se puso en línea el 1 de octubre de 2008 por el friburgués Laurent Jauquier, el sitio ha experimentando un crecimiento en aumento dentro de la comunidad francófona.", - "wttr.in":[ - "El tiempo en: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave es un navegador web de código abierto basado en Chromium, creado por la compañía Brave Software en el año 2016, fundada por el cofundador del Proyecto Mozilla y creador de JavaScript, Brendan Eich.", - "brave.images":[ - "brave:es", - "ref" - ], - "brave.videos":[ - "brave:es", - "ref" - ], - "brave.news":[ - "brave:es", - "ref" - ], - "goo":"goo, que debe ser escrito en minúsculas, es un motor de búsqueda de Internet y un portal ubicado en Japón que indexa contenidos principalmente en japonés. goo es operado por la empresa de telecomunicaciones NTT." - }, - "et":{ - "9gag":"9GAG on suhtlusportaal, kus kasutajad saavad üles laadida ja teistega jagada enda valmistatud või teistelt veebilehtedelt leitud sisu. Portaali haldav ettevõte, 9GAG Inc., asub Ameerika Ühendriikides California osariigis Mountain View's. Alates portaali avamisest 23. aprillil 2008 on see kogunud palju populaarsust. 2015. aasta septembriks oli portaalil juba üle 26 miljoni Facebooki meeldimise ja üle viie miljoni Twitteri jälgija. 9GAG kuulub internetis 200 populaarseima veebilehe hulka, selle väärtuseks hinnatakse üle 56 miljoni USA dollari.", - "apple app store":"App Store on digitaalne rakenduste levitamise platvorm, mille on välja töötanud ja mida haldab Apple Inc. oma iOS-i operatsioonisüsteemis mobiilsete rakenduste jaoks.", - "arxiv":"arXiv on veebis kättesaadav elektrooniliste preprintide ehk veel teadusajakirjas avaldamata teadustööde digitaalsete versioonide kogu. Seal on teadustöid matemaatikast, füüsikast, astronoomiast, arvutiteadusest, bioloogiast ja statistikast.", - "wikipedia":"Vikipeedia on paljukeelne veebipõhine vaba sisuga entsüklopeedia, mida kirjutab ühiselt suur hulk vabatahtlikke.", - "bing":"Bing on otsingumootor, mille on välja töötanud ja mida haldab Microsoft. Teenuse eelkäijateks olid Microsofti eelmised otsingumootorid MSN Search, Windows Live Search ja hiljem Live Search. Bing pakub mitmesuguseid otsinguvõimalusi, sealhulgas veebi-, video-, pildi- ja kaardiotsinguid. See töötati välja kasutades ASP.NETi.", - "bing images":[ - "bing:et", - "ref" - ], - "bing news":[ - "Ülemaailmsetest, riiklikest ja kohalikest uudiste allikatest pärinevad uudised on korrastatud nii, et need annavad põhjaliku ülevaate spordi, meelelahutuse, äri ja poliitika uudiste, ilma ning palju muu kohta.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Bingi intelligentne otsing võimaldab teil otsitavat kiiremini leida ja pakub teile preemiaid.", - "https://www.bing.com/videos" - ], - "deezer":"Deezer on prantsuse veebipõhine muusika voogedastusteenus.", - "deviantart":"DeviantART on kunstiteemaline veebisait, mis avati 7. augustil 2000.", - "wikidata":"Wikidata on vabatahtlike kaastööliste koostöös toimetatav teadmusbaas, mis on mõeldud olema Vikipeedia ja selle sõsarprojektide ühiselt jagatud andmeallikas. Kuna baasis olevad andmed litsentsitakse avalikku omandisse, siis on Wikidata piiramatult kasutatavad ka kolmandatele osapooltele. Teadmusbaas kasutab Wikibase tarkvara ning teadmusbaasi haldab Wikimedia Foundation.", - "apple maps":"Apple Maps on Apple Inc. poolt välja töötatud veebi kaardistamise teenus. See on iOS, macOS ja watchOS vaikekaardisüsteem. See annab juhiseid ja hinnangulisi saabumisaegu autode, jalakäijate ja ühistranspordi kohta. Apple Maps pakub ka Flyover režiimi, mis võimaldab kasutajal uurida teatud tihedalt asustatud linnakeskusi ja muid huvipunkte 3D-maastikus, mis koosneb hoonete ja struktuuride mudelitest.", - "flickr":"Flickr on Yahoo! veebikeskkond, mis on loodud eelkõige fotode ja videote talletamiseks, haldamiseks ja jagamiseks. Ludicorp asutas Flickri 2004. aastal ning 2005. aastal omandas selle Yahoo. Lisaks sellele, et tegemist on populaarse veebiteenusega, milles iga kasutaja saab \"oma\" veebilehtedel jagada ja talletada enda tehtud fotosid, kasutavad Flickrit ka fototöötlejad ja blogijad, kes kasutavad fotosid blogides ja sotsiaalmeedias.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub on Ameerika firma, mis pakub veebimajutusteenust tarkvaraarenduseks, kasutades Giti tarkvara. GitHub on Microsofti tütarfirma alates aastast 2018, mil Microsoft ostis GitHubi 7,5 miljardi dollari eest. GitHub põhineb Giti hajutatud versioonihaldusel ja lähtekoodihaldusel, kuid lisab neile veel võimalusi, näiteks võimalust kontrollida, kes pääseb koodile juurde, koodi veakontrolli, tarkvara funktsioonide taotlust ning igale projektile oma vikit. GitHub on kirjutatud Rubys ning baseerub Ruby on Railsi raamistikul.", - "google":[ - "interneti otsingumootor", - "wikidata" - ], - "google images":[ - "Google'i pildid. Kõige täiuslikum pildiotsing internetis.", - "https://images.google.com" - ], - "google news":[ - "Põhjalikud ja ajakohased uudised, mis Google News koondab kogu maailma uudisteallikatest.", - "https://news.google.com" - ], - "google scholar":"Google Scholar on Google'i hallatav tasuta interneti otsingumootor teadustekstide otsimiseks.", - "google play apps":[ - "Nautige miljoneid uusimaid Androidi rakendusi, mänge, muusikat, filme, telesaateid, raamatuid, ajakirju ja muud. Igal ajal ja igal pool, igas teie seadmes.", - "https://play.google.com/" - ], - "google play movies":[ - "google play apps:et", - "ref" - ], - "hoogle":"Haskell on standardiseeritud üldotstarbeline puhtalt funktsionaalne programmeerimiskeel. Keel on nimetatud loogiku Haskell Curry järgi.", - "imdb":"The Internet Movie Database ehk IMDb on rahvusvaheline filmikunstiteemaline andmebaas.", - "library of congress":"Ameerika Ühendriikide Kongressi raamatukogu on maailma suurim raamatukogu. See Washingtonis asuv raamatukogu asutati 1800. aastal. Raamatukogus on üle 130 miljoni trükise: 29 miljonit erinevat raamatut 460 keeles. Raamaturiiuleid on ühtekokku 850 kilomeetrit.", - "mastodon users":"Mastodon on avatud lähtekoodiga hajutatud sotsiaalmeediavõrgustik. Selle peamine funktsioon on mikroblogimine ja kasutajakogemus sarnaneb Twitterile, kuid aluseks olev detsentraliseeritud võrgustik koosneb sõltumatutest, omavahel födereeritud serveritest, mis teenindavad nende juures registreeritud kasutajaid ja vahendavad postitusi jm sisu üle kogu võrgustiku.", - "mastodon hashtags":[ - "mastodon users:et", - "ref" - ], - "npm":"npm on JavaScripti programmeerimiskeele jaoks loodud paketihaldur. See on JavaScripti käituskeskkonna Node.js standardne paketihaldur.", - "openstreetmap":"OpenStreetMap on avatud lähtekoodiga projekt, mille raames luuakse vabalt kasutatavaid geograafilisi andmeid, näiteks tänavakaarte.", - "pinterest":"Pinterest on sotsiaalmeedia veebi- ja mobiilirakendus, mis on tasuta veebisait, kuid nõuab registreerimist. Kasutajad saavad üles laadida, salvestada, sorteerida ja hallata pilte ja muud meediasisu, lisades neid oma kollektsiooni ehk pinboard-ile. Sisu võib leida ka väljaspool Pinteresti ja selle sinna üles laadida. Pinteresti areng põhineb selle kasutajate ühistel huvidel ja selle liikmete võimalusel sisu luua. Kõige populaarsemad kategooriad on alates 2012. aasta märtsist kodu, kunst ja käsitöö, stiil/mood ja toit.", - "reddit":"Reddit on veebileht, milles on kombineeritud meelelahutus, uudised ja sotsiaalne võrgustik. Sellele kõigele loovad sisu registreeritud kasutajad, kes teevad postitusi ning hääletavad nende postituste poolt või vastu, muutes nende positsiooni ja tulemust. Niiviisi toimub esilehe pidev uuendamine värske materjaliga. Veebisait koosneb eri temaatikaga alamlehekülgedest ehk subreddititest, mis organiseerivad ja moodustavadki Redditi. Mõned läbivad teemad on näiteks mängud, filmid, filosoofia, teadus, uudised, kunst, muusika jm.", - "soundcloud":"SoundCloud on internetipõhine muusika voogedastusplatvorm.", - "youtube":"YouTube on veebiportaal, mille kasutajad saavad videoid üles laadida, jagada ja vaadata. Multimeediumiteenuse pakkuja veebis ja veebisaidi omanik on Alphabet Inc. – sellele firmale kuulub ka Google.", - "vimeo":"Vimeo on videote levitamise keskkond, kus Vimeo kasutajad saavad laadida üles, jagada ja vaadata videoid. See oli esimene videote levitamise keskkond, mis toetas HD-kvaliteediga videoid, enne kui YouTube seda tegema hakkas.", - "wikibooks":"Vikiõpikud on Vikipeedia sõsarprojekt, mille sisuks on kasutajate koostatavad vabad õpikud, kasutusjuhendid, toiduretseptid jne.", - "wikiquote":"Vikitsitaadid on Wikimedia projektiperre kuuluv tsitaate koondav vikiprojekt, mida koostavad vabatahtlikud kaastöölised. Projekti haldab ja selle omanik on Wikimedia Foundation, projekt töötab MediaWiki tarkvaral ning asub aadressil http://www.wikiquote.org.", - "wikisource":"Vikitekstid on Vikipeedia sõsarprojekt, milles on vabad alliktekstid.", - "wiktionary":"Vikisõnastik on Wikimedia sihtasutuse projekt, mille eesmärk on luua Vikipeedia põhimõtteid järgiv ja sellega kaasas käiv vaba sõnaraamat ühes sõnaseletuste, tõlgete, häälduste, etümoloogiate ning kõige muu juurdekuuluvaga kõikvõimalike keelte tarvis.", - "wikiversity":"Vikiülikool on vaba ja avatud veebipõhine õpikeskkond, üks Wikimedia Foundationi projekte.", - "wikivoyage":"Wikivoyage on vaba ja tasuta veebipõhine reisijuht, kus sihtkohtadest ja reisiteemadest kirjutavad vabatahtlikud kaastöölised. Portaali nimi koosneb ingliskeelsest sõnast wiki ning prantsuse sõnast voyage ('reis').", - "wikicommons.images":"Wikimedia Commons on Wikimedia andmebaas tasuta ja vabalitsentsiga piltide, helifailide, videoklippide ja muu meedia jaoks, mida saab kasutada kõigis Wikimedia projektides.", - "wolframalpha":"WolframAlpha on arvutuslik teadmusmootor, mis genereerib ning visualiseerib faktilisi ja statistilisi vastuseid kõikvõimalikele päringutele. Selle töötas 2009. aastal välja Wolfram Research. Lisaandmeid kogutakse nii akadeemilistelt kui ka kommertslikelt veebisaitidelt. WolframAlpha kogub andmeid akadeemilistelt ja kommertsveebisaitidelt, nagu CIA The World Factbook, Ameerika Ühendriikide geoloogiakeskus, Cornelli ülikooli raamatukogu väljaanne All About Birds, Chambers Biographical Dictionary, Dow Jones, the Catalog of Life, CrunchBase, Best Buy, ja FAA, et vastata päringutele. Hispaaniakeelne versioon ilmus 2022. aastal.", - "dictzone":[ - "Veebisõnastikud: inglise, ungari Valige oma lemmiksõnaraamat!", - "https://dictzone.com/" - ], - "brave":"Brave on veebibrauser, mille looja ja haldaja on Brave Software Inc.. See on avatud lähtekoodiga veebibrauser, mis põhineb Google Chrome'i operatsioonisüsteemil.", - "brave.images":[ - "brave:et", - "ref" - ], - "brave.videos":[ - "brave:et", - "ref" - ], - "brave.news":[ - "brave:et", - "ref" - ] - }, - "eu":{ - "artic":"Chicagoko Arte Institutua, ingelesez: Art Institute of Chicago, AEBetako Chicago hirian dagoen arte-museo bat da. Munduko arte-museo garrantzitsuenetako bat da, eta ziurrenik AEBetako hiru arte-museo nabarmenetako bat, New Yorkeko Metropoliar Museoa eta Bostongo Arte Ederren Museoarekin batera.", - "wikipedia":"Wikipedia eduki askeko entziklopedia bat da, lankidetzaz editatua, eleanitza, Interneten argitaratua, Wikimedia Fundazioa irabazi asmorik gabeko erakundeak sustengatua. Wikipedia mundu osoko boluntarioek idazten dute. Internetera konektatutako edonork parte har dezake Wikipediako artikuluetan, aldatu lotura sakatuz. 2015ko azaroaren bostean, 291 hizkuntzatako edizioak zituen, eta horietatik 275 zeuden aktibo. Proiektuaren xedea da ahalik eta hizkuntza gehienetan idatzitako entziklopedia sortu eta hedatzea. Guztira 37 milioi artikulu ditu, horietatik 421.900 euskaraz eta bost milioitik gora ingelesez.", - "bing":[ - "Microsoft enpresak garatutako bilaketa motorra", - "wikidata" - ], - "bing images":[ - "bing:eu", - "ref" - ], - "bing news":[ - "Munduko eta tokiko albiste-iturburuetako nahiz iturburu nazionaletako albisteak ondo antolatuta, kirol, entretenimendu, negozio, politika eta eguraldiaren berri emateko sakon, besteak beste.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Bing bilaketa adimendunei esker, bizkorrago aurkituko duzu bilatzen ari zarena; gainera, sariak jasoko dituzu.", - "https://www.bing.com/videos" - ], - "crossref":[ - "DOI zenbakien kudeaketa agentzia", - "wikidata" - ], - "currency":"DuckDuckGo edo DDG, Valley Forgen, Pennsylvanian, Amerikako Estatu Batuetan, sortutako eta ezarritako bilaketa-motor bat da. Motor honek jatorri publikoko leku informazioa darabil emaitza tradizionalak hobetzeko. Bere filosofiak pribatutasuna gordetzearen garrantzia azpimarratzen du eta erabiltzaileek egiten dituzten bilaketekin sal-erosketetan ez direla ibiliko agintzen dute.", - "ddg definitions":[ - "currency:eu", - "ref" - ], - "wikidata":"Wikidata elkarlanean sortutako datu-base eleanitz bat da, Wikimedia Fundazioak kudeatua. Wikidataren xedea da iturri bateratu bat eskaintzea zenbait datutarako (adibidez, pertsonen jaiotegunak eta jarduerak, edo Wikipediako artikulu bat nola den beste hizkuntzen Wikipedietan. Informazio hori Wikimediaren proiektuetan erabiltzen da gero, adibidez Wikipedian. Wikipediako artikulu askotan goian eskuinaldean hainbat daturekin agertzen den infotaula, kasu askotan automatikoki sortu izan da artikulu horri buruz Wikidatan dagoen informazioarekin.", - "duckduckgo":[ - "currency:eu", - "ref" - ], - "duckduckgo images":[ - "currency:eu", - "ref" - ], - "duckduckgo videos":[ - "currency:eu", - "ref" - ], - "duckduckgo news":[ - "currency:eu", - "ref" - ], - "duckduckgo weather":[ - "currency:eu", - "ref" - ], - "fdroid":"F-Droid software librearen komunitateak mantendutako software biltegirik ezagunena Android sistemarentzat. Googlen Play Storeren antzera funtzionatzen du baina Software librearen komunitateak mantentzen du zerbitzari independenteetan deszentralizatua eta bertan, bakar-bakarrik software libreko aplikazioak daude.", - "flickr":"Flickr, plataforma desberdinetan, argazki eta on-line komunitatea elkarbanatzeko webgune bat da. Orokorrean Web 2.0-ko nabigazio adibide berri bat bezala kontsideratzen da. Flickr-ek aukera ematen du argazkiak munduko beste edozeinekin partekatzeko eta blogari askok erabiltzen dute argazki biltegi bezala. Flickr-ek ere, Web 2.0ko beste programa askok bezala, etiketak erabiltzen ditu argazkiak izendatzeko.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub Inc. bertsio kontrolerako web-ostatu zerbitzua da, Git erabiltzen duena. Gehienbat iturburu koderako erabiltzen da. Git-en bertsio-kontrol banatu eta iturburu-kode kudeatzaile funtzionalitate guztiak eskaintzeaz gain bere ezaugarri propioak gehitzen ditu. Sarbide-kontrola eta proiektu bakoitzaren elkarlanerako hainbat aukera hornitzen ditu, esaterako: errore-jarraipena, ezaugarri-eskaera, zeregin-kudeaketa eta wikia. Gaur egunean milioika erabiltzaile ditu, eta milioika garapen-proiektu ere.", - "google":"Googleren bilaketa motorra, normalean Google soilik, Alphabet Inc.-en webguneko bilatzailea da, egunero bere zerbitzuen bidez ehunka milioi kontsulta jasotzen dituena eta webean gehien erabiltzen den bilaketa motorra dena. Googleren bilatzailearen helburu nagusia webguneetan, beste mota bateko datuak bilatu beharrean, testua bilatzea da. 1997an Larry Pagek, Sergey Brinek eta Scott Hassanek garatu zuten.", - "google images":[ - "Google Irudiak. Internet-eko irudi bilatzaile onena.", - "https://images.google.com" - ], - "google news":"Google News albiste batzaile eta gehitzailea da.", - "google scholar":"Google Akademikoa Googleko bilaketa motorra da, eduki eta bibliografia zientifiko-akademikoa bilaketan oinarritutakoa eta espezializatua. Guneak argitaratzaileak, liburutegiak, biltegiak, datu base bibliografikoak indexatzen ditu, besteak beste; eta emaitzen artean aipamenak, liburuen estekak, aldizkari zientifikoetako artikuluak, komunikazioak eta kongresuak, txosten zientifiko-teknikoak, tesiak, tesinak eta biltegietan gordetako fitxategiak aurki ditzakezu.", - "google play apps":"Google Play, iraganean Android Market, Google konpainiaren banaketa digital zerbitzua da. Android mugikor sistema eragilearentzako aplikazio denda ofiziala da, erregistratutako edo baimendutako erabiltzaileei Androidentzat bereziki garatutako aplikazioak jaisteko aukera ematen du, bai doaineko nahiz ordainpeko aplikazioak. Gainera, Google Playek musika, aldizkariak, liburuak, filmak eta telebista telesaila eta saioak jaisteko aukera ere eskeintzen du.", - "google play movies":[ - "google play apps:eu", - "ref" - ], - "hoogle":"Haskell normalizatuta dagoen programazio lengoaia funtzionala da, semantika ulerkorra eta idazketa zorrotza duena. Haskell Curry logikariaren omenez du izena. Kaleratutako azken estandarra Haskell 2010 da, eta 2016ko maiatzetik, hurrengo bertsioa garatzen dabiltza, Haskell 2020 izena hartuko duena.", - "imdb":"Internet Movie Database Interneten eskuragarri dagoen datu base bat da, filmei, telebista saioei eta bideojokoei buruzko informazioa biltzen duena. Hor ageri dira, besteak beste, halako lanen zuzendariak, produktoreak, aktoreak eta fikzio pertsonaiak. IMDb 1990eko urriaren 17an inauguratu zuten, eta 1998an Amazon.com konpainiak erosi zuen.", - "lemmy communities":"Lemmy gizarte-markatzaileei, foroei eta albiste batzaileei ostatu emateko software librea da. Esteken bilketak edo bildumak egiteko eta instantzia deszentralizatuak sortzeko balio du baita ere.", - "lemmy users":[ - "lemmy communities:eu", - "ref" - ], - "lemmy posts":[ - "lemmy communities:eu", - "ref" - ], - "lemmy comments":[ - "lemmy communities:eu", - "ref" - ], - "library of congress":"Ameriketako Estatu Batuetako Kongresuaren Liburutegia edota Kongresuaren Liburutegia Estatu Batuetako hiriburua den Washington Hirian kokatzen den liburutegi bat da.", - "mastodon users":"Mastodon gizarte-sare eta mikroblogintza zerbitzua da, 2016ean sortua, egitura deszentralizatuan eta software librean oinarritzen dena. Toot izeneko mezuak argitaratzean datza.", - "mastodon hashtags":[ - "mastodon users:eu", - "ref" - ], - "openstreetmap":"OpenStreetMap proiektu bat da, elkarlanean oinarritua, eta mapa libre eta editagarriak egiteko erabiltzen da. Mapa horiek egiten dira informazio geografikoa erabilita, eta harrapatuta daude GPS ibiltari, ortoargazki eta beste informazio iturri batzuen bidez. Kartografia hori guztia, bai irudi sortuak eta baita bere datu basean bildutako datu bektorialak ere, banatzen da Open Database lizentziapean.", - "pinterest":"Pinterest erabiltzaileei irudiak sortu, partekatu eta administratzen uzten dien plataforma bat da. Gaikako taula pertsonaletan irudi bildumak egin daitezke. Ben Silberman, Paul Sciarra eta Evan Sharpek sortu zuten.", - "piratebay":"The Pirate Bay edo TPB webgune bat da, ustez munduko BitTorrent zerbitzaririk handiena. Bertan, aukera dago mota guztietako multimedia materiala bilatzeko .torrent artxiboetan. Copyright aurkako Piratbyrån erakundeak sortu zuen Suedian 2004. urtearen hasieran.", - "qwant":"Qwant Frantzian sortutako web bilaketa motorra da, 2013ko uztailean martxan jarri zen. Indexatzeko motor propioa duen Europan sortutako bilaketa motor bakanetako bat da. Erabiltzaileen jarraipena ez egitea eta bilaketa-ekintzak ez dituela pertsonalizatzen aldarrikatzen du, pribatutasuna errespetatzeko.", - "qwant news":[ - "qwant:eu", - "ref" - ], - "qwant images":[ - "qwant:eu", - "ref" - ], - "qwant videos":[ - "qwant:eu", - "ref" - ], - "reddit":"Reddit gizarte-markatzaile eta albiste batzaile den webgune bat da, non erabiltzaileek web edukietarako estekak utz ditzaketen. Beste erabiltzaileek esteken alde edo kontra bozka dezakete, eta boto horien ondorioz estekak nabarmendu edo deuseztatu egiten dira.", - "youtube":"Youtube interneten bidez bideo digitalak partekatzeko aukera ematen duen webgunea da.", - "vimeo":"Vimeo bideoak ardatz dituen Interneteko sare soziala da, InterActiveCorp (IAC) konpainiak 2004ko azaroan argitara atera zuena. Bideoak igo, elkarbanatu zein ikusteko aukera ematen du, erabiltzaile bakoitzak bideoak iruzkindu ditzakeelarik. Erabiltzaileak aldez aurretik erregistratu behar dira bideoak igotzeko, euren profila sortu, avatarrak sortzeko, iruzkintzeko zein gustuko bideoen zerrendak egiteko.", - "wikibooks":"Wikibooks eduki askeko liburuak sortu eta plazaratu egiten dituen Wikimediaren proiektua da, edonork edukiak gehitu eta aldatzeko aukera eskaintzen duena.", - "wikiquote":"Wikiesanak Wikimedia Fundazioaren aipu ezagunen bilduma da. Bertan pertsona entzutetsuen esanak, liburu ospetsuetako aipamenak eta herrialde ezberdinetako esaera zaharrak edo atsotitzak aurki daitezke. Wikipedia bezala, internet bidezko elkarlanean eta wiki softwarean oinarritzen den webgunea da. GFDL lizentziapean argitaratzen da. Hastapenetan ingelesez soilik bazen ere, 2004 urteaz geroztik 79 hizkuntza ezberdinetan dago. Ingelesezko bertsioa artikulu gehien duena izan da ordutik, 2010 urteko hasieran ia ehun mila orri eta hamazazpi mila bat aipuak biltzeko artikulu duela. 2010. urtearen hasieran euskarazko bertsioak mila orrialde baino gehiago zituen, eta horietako ehun baino gehiago, aipu-orrialdeak.", - "wikisource":"Wikiteka wikian dagoen testu eduki askeko Interneteko liburutegi digitala da, Wikimedia Fundazioak kudeatutakoa. Wikitekak da proiektu osoaren izena, baita proiektu horretako ale bakoitzaren izena ere, non ale bakoitza hizkuntza desberdin bati dagokion. Beraz, hizkuntza askotako iturriek osatzen dute Wikiteka.", - "wikispecies":"Wikiespezieak Wikimedia Fundazioaren proiektu bat da. Bertan, naturako izaki espezie ezberdinen informazioa aurki dezakegu; animaliak, landareak, onddoak, bakteriak, eta gainontzeko bizi-formak.", - "wiktionary":"Wikiztegia eduki askeko hiztegia sortzea helburu duen Wikimediaren proiektuetako bat da, edonork edukiak gehitu eta aldatzeko aukera eskaintzen duena.", - "wikiversity":"Wikiversity Wikimedia fundazioaren proiektuetako bat da, Wikipedia bezalaxe MediaWiki softwarean oinarrituta dagoena. Bere helburua ikasketa askerako edukiak biltzea da, sarean dagoen unibertsitate bat bailitzan. Oraindik beta fasean dagoenez hizkuntza gutxi batzuetan baino ez da existitzen.", - "wikivoyage":"Wikibidaiak edo Wikivoyage egile boluntarioen lanarekin osatutako bidai gida doan eta librea da. Izena erabiltzen duen Mediawiki teknologiatik dator.", - "wikicommons.images":"Wikimedia Commons irudi, soinu eta multimedia fitxategi askeak biltzeko gunea da. Wikipedia bezalaxe, Wikimedia fundazioaren proiektu bat da eta beste proiektu guztietan erabil daitezkeen baliabideak gordetzeko balio du.", - "peertube":"PeerTube software librea erabilita, interneten bidez bideo digitalak partekatzeko aukera ematen duen plataforma deszentralizatua, federatua da. Peer-to-peer teknologia erabiltzen du zerbitzari pertsonalen erabilera murrizteko. GNU AGPL lizentziarekin argitaratuta dago.", - "yacy":"YaCy bilaketa-motor banatua, deszentralizatua eta librea da. Peer-to-peer (P2P) sare bat erabiltzen du azpiegitura gisa.", - "yacy images":[ - "yacy:eu", - "ref" - ], - "brave":[ - "web nabigatzailea", - "wikidata" - ], - "brave.images":[ - "brave:eu", - "ref" - ], - "brave.videos":[ - "brave:eu", - "ref" - ], - "brave.news":[ - "brave:eu", - "ref" - ] - }, - "fa-IR":{ - "9gag":"۹گگ تارنمای طنز از کشور هنگ کنگ و به میزبانیِ وب ایالات متحده یکی از بهترین و شناخته شده‌ترین وب گاه‌های میم و کمیک می‌باشد.", - "apple app store":"اپ استور یک سکوی رایانش توزیع نرم‌افزار دیجیتال برای آی‌اواس است که توسعه و نگه‌داری آن توسط شرکت اپل انجام می‌شود. این سرویس به کاربران اجازه می‌دهد که نرم‌افزار مورد نظر را جستجو و بارگیری کنند. و برروی آیفون ها و آی‌پد قرار دارد", - "artic":"مؤسسه هنر شیکاگو در سال ۱۸۷۹ میلادی تأسیس شد. این مرکز از معتبرترین موزه‌های هنری در ایالات متحده آمریکا محسوب می‌شود.", - "arxiv":"وب‌گاه آرکایو یک بایگانی برای نسخهٔ پیش‌چاپ نوشتارهای علمی در زمینه‌های فیزیک، ریاضیات، دانش رایانه، زیست‌شناسی کمّی، مدیریت مالی کمّی، و آمار است که می‌توان به آن دسترسی برخط داشت.", - "bandcamp":"بندکمپ یک پلت فرم آمریکایی‌ی پخش آنلاین صدا است که در سال ۲۰۰۷ توسط توسط ایتان دایاموند و با برنامه‌نویسی‌ی شاون گرون‌برگ، جو هولت و نیل تاکر در اوکلند، کالیفرنیا، ایالات متحده تأسیس شد. بندکمپ در ۲ مارس ۲۰۲۲ توسط Epic Games خریداری شد.", - "wikipedia":"ویکی‌پدیا یک دانشنامه برخط چندزبانه مبتنی بر وب با محتوای آزاد و همکاری باز است که با همکاری افراد داوطلب نوشته می‌شود و هر کسی که به اینترنت و وب دسترسی داشته باشد می‌تواند مقالات آن را ببیند و ویرایش کند. نام ویکی‌پدیا از پیوند واژه «ویکی» با «پدیا» ایجاد شده‌است. هدف ویکی‌پدیا آفرینش و انتشار جهانی یک دانشنامه با محتوای آزاد به تمامی زبان‌های زندهٔ دنیا است.", - "bilibili":"بیلیبیلی (站) شرکت فناوری اطلاعات هنگ کنگی است، که در سال ۲۰۱۰ تأسیس شد.", - "bing":"بینگ یک موتور جستجوی وب متعلق به شرکت مایکروسافت است که پیشتر با نام‌های لایو سرچ، ویندوز لایو سرچ و ام. اس. ان سرچ شناخته می‌شد. استیو بالمر در ۲۸ مه ۲۰۰۹، در کنفرانس «همهٔ چیزهای دیجیتال» در سانفرانسیسکو آمریکا، از بینگ پرده‌برداری نمود و این جستجوگر در ۳ ژوئن همان سال، به‌طور کامل در دسترس قرار گرفت.", - "bing images":[ - "bing:fa-IR", - "ref" - ], - "bing news":[ - "اخبار به دست آمده از منابع جهانی، ملی و محلی، به‌گونه‌ای سازماندهی شده‌اند تا پوشش جامع خبری را در حوزه ورزش، سرگرمی، کسب و کار، سیاست، آب و هوا، و غیره به شما ارائه دهند.", - "https://www.bing.com/news" - ], - "bing videos":[ - "جستجوی هوشمند Bing یافتن آنچه را که به دنبالش هستید آسان‌تر می‌کند و به شما پاداش می‌دهد.", - "https://www.bing.com/videos" - ], - "crossref":"کراس‌رف یک موسسهٔ ثبت نشانگر دیجیتالی شیء (DOI) و متعلق به موسسه بین‌المللی DOI است. این موسسه در سال ۲۰۰۰ به عنوان تلاشی مشترک میان ناشران شروع به کار کرد تا قابلیت ارجاع دهی دائمی میان ناشران مختلف در نشریات الکترونیکی فراهم شود.", - "currency":"داک‌داک‌گو DDG یک موتور جستجوی وب است که در کارکرد خود تا حد زیادی داده‌های کاربرانش را ردگیری نمی‌کند. این موتور جستجوی وب را می‌توان حاصل نگرانی‌ها پیرامون حریم خصوصی افراد دانست. در صفحهٔ سیاست حریم این وب‌گاه آمده‌است که هیچگونه اطلاعات شخصی‌ای را جمع‌آوری نمی‌کند و به اشتراک نمی‌گذارد. بر خلاف دیگر جویشگرها در سیاست داک‌داک‌گو آمده‌است که تاریخچهٔ جستجوی کاربران را ذخیره نمی‌کند.", - "deezer":"دیزر رسانه جاری موسیقی و پادکست مبتنی بر اینترنت است. این سرویس در اوت ۲۰۰۷ در پاریس فرانسه پایه‌گذاری شد. تا تاریخ ۳ آوریل ۲۰۱۸، ۱۴ میلیون کاربر ماهانه فعال و ۶ میلیون مشترک پولی برای دیزر گزارش شده‌است.", - "deviantart":"دوینت‌آرت یک شبکه اجتماعی آنلاین با محوریت هنر است. پایگاه رسمی آن در ۷ آگوست سال ۲۰۰۰ توسط چند طراح وب با ایده‌های نو راه‌اندازی شد. آثار هنری در این ‍‍ پایگاه عبارتند از; عکاسی، هنر دیجیتال، نقاشی دیجیتال، هنر سنتی، ادبیات، پویانمایی، فیلم سازی، پوسته برای برنامه‌های کاربردی و غیره که با دیگران به اشتراک گذاشته می‌شوند.", - "ddg definitions":[ - "currency:fa-IR", - "ref" - ], - "erowid":"ایرویید که همچنین با نام مرکز ایرویید نیز شناخته می‌شود، سازمانی آموزشی و غیرانتفاعی است که تمرکز بر ارائه اطلاعات و آموزش پیرامون موادمخدر و روان‌گردان و همچنین روش‌های تغییر آگاهی مثل مدیتیشن و رویابینی دارد.", - "wikidata":"ویکی‌داده پروژه‌ای است برای ایجاد یک پایگاه دادهٔ مشارکتی قابل ویرایش با هدف کمک به پروژه‌های ویکی‌مدیا، ازجمله ویکی‌پدیا. وبگاه ویکی‌داده در ۳۰ اکتبر ۲۰۱۲ رسماً افتتاح شد. پروژه توسط ویکی‌مدیا دویچلند آغاز شد و قرار شد منبعی اشتراکی از انواع بخصوصی از داده‌ها باشد، مثل تاریخ‌های تولد، که می‌تواند در سایر پروژه‌ها مثل ویکی‌پدیا به کار برود. همه افراد می‌توانند از ویکی‌داده استفاده کنند البته تنها با پیروی از پروانه مالکیت عمومی. ویکی‌داده شبیه ویکی‌انبار است زیرا ویکی‌انبار جایی برای ذخیره پرونده‌های رسانه‌ای فراهم می‌کند و دسترسی این پرونده‌های رسانه‌ای برای تمام پروژه‌های ویکی‌مدیا آزاد است. ویکی‌داده از یک نرم‌افزار به نام ویکی‌بیس قدرت گرفته‌است.", - "duckduckgo":[ - "currency:fa-IR", - "ref" - ], - "duckduckgo images":[ - "currency:fa-IR", - "ref" - ], - "duckduckgo videos":[ - "currency:fa-IR", - "ref" - ], - "duckduckgo news":[ - "currency:fa-IR", - "ref" - ], - "duckduckgo weather":[ - "currency:fa-IR", - "ref" - ], - "apple maps":"اپل مپس یا نقشه اپل یک سرویس نقشه‌برداری وب توسعه یافته توسط شرکت اپل است. این سرویس به‌طور پیش فرض بر روی آی‌اواس، مک اواس و واچ اواس در دسترس است. اپل مپس اطلاعاتی از قبیل جهت و زمان تخمینی رسیدن به مقصد برای خودرو، عابر پیاده و ناوبری حمل و نقل عمومی را برای کاربر فراهم می‌کند. همچنین اپل مپس دارای یک نمای منحصر به فرد به نام نمای بالا است که کاربر را قادر می‌سازد تا در یک نمای سه‌بعدی (3D) از بالا در مکان‌های مختلف به کاوش بپردازد که در این نما می‌توان ساختمانها و سازهها را تماشا کرد.", - "tineye":"تین‌آی یک جویشگر تصویر معکوس است، به این صورت که جوینده با بارگذاری تصویر یا دادن نشانی اینترنتی آن به جویشگر، فهرستی از تصاویر همسان یا تغییریافته یا با کیفیت بالاتر را در سطح اینترنت دریافت می‌کند. به گفتهٔ وب‌گاهش، تین‌آی نخستین موتور جستجویی بوده‌است که از فناوری جستجو بر پایهٔ تصویر در سطح اینترنت استفاده کرده‌است.", - "etymonline":"واژه‌نامه ریشه‌شناسی برخط فرهنگ لغتی اینترنتی است که به ریشه‌شناسی لغات انگلیسی می‌پردازد. داگلاس هارپر این واژه‌نامه را ایجاد کرده تا به ریشه‌یابی و روند تکامل بیش از ۳۰۰۰۰ واژه انگلیسی بپردازد. این لغتنامه دارای واژگان عامیانه و واژگان تخصصی هم هست. این واژه‌نامه مورد رجوع دانشگاه اوهایو و برگزیده شیکاگو تریبون به عنوان یکی از بهترین منابع لغت‌شناسی است. از این سایت در بسیاری از مقالات به عنوان منبع یاد می‌شود.", - "fdroid":"اف-دروید مخزن نرم‌افزاری برای برنامه‌های اندروید است، مشابه گوگل پلی کار می‌کند ولی فقط شامل نرم‌افزارهای آزاد و متن‌باز است. برنامه‌های اف-دروید می‌توانند از طریق وب‌گاه اف-دروید یا از برنامهٔ کلاینت اف-دروید نصب شوند.", - "flickr":"فلیکر یکی از بزرگ‌ترین سایت‌های اشتراک‌گذاری تصویر و ویدئو، خدمات وب و جوامع آنلاین است که توسط شرکت ludicorp در سال ۲۰۰۴ ایجاد شد و در سال ۲۰۰۵ توسط یاهو خریداری شد.", - "genius":"جینیس به معنی نابغه، یک پایگاه دانش آنلاین است. این سایت به کاربر اجازه می‌دهد تا ترانه‌ها، داستان‌های جدید، اشعار، اسناد و دیگر متن‌ها را تفسیر کند. این سایت در ۲۰۰۹، با نام رپ جینیس با تمرکز روی موسیقی رپ راه اندازی شد. در ۲۰۱۴ سبک‌های دیگری مثل پاپ، آر اند بی و نوشتجات ادبی را نیز پوشش داد. همان سال یک برنامه آیفون برای سایت منتشر شد. برای انعکاس بهتر اهداف جدید سایت، دوباره در ژوئیه ۲۰۱۴ با نام جینیس راه اندازی شد. همچنین نسخه اندروید برنامه در اوت ۲۰۱۵ منتشر شد.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"گیت‌لب یک سکو توسعهٔ عملیات است که سرویس میزبانی گیت -بهرهٔ‌مند از ویکی، پیگیری موضوع، یکپارچه‌سازی مداوم و استقرار پیوسته- را ارائه می‌کند. محصول گیت‌لب با مجوز متن‌باز شرکت گیت‌لب در دسترس عموم قرار دارد؛ بنابراین به دیگر افراد امکان خودمیزبانی می‌دهد. این نرم‌افزار در ۱۶ مهر ۱۳۹۰ با همکاری دیمیتری زاپروژتس و ولری سایزوف پایهٔ‌گذاری شد. با الهام از گیت‌هاب و با اعتقاد به شعار «همه می‌توانند مشارکت کنند» با زبان برنامه‌نویسی روبی بنیان نهاده شد. و اینک کماکان عمده منبع گیت‌لب در کنار زبان گو و چارچوب ویو جی اس به روبی تکیه دارد.", - "github":"گیت‌هاب یک سرویس میزبانی وب برای پروژه‌هایی است که از سیستم سورس کنترل گیت استفاده می‌کنند. گیت‌هاب با استفاده از روبی آن ریلز و ارلنگ ساخته شده‌است. این سرویس هم دارای گزینه رایگان برای پروژه‌های متن‌باز و هم پولی برای پروژه‌های تجاری است. توسعهٔ پلت فرم گیت‌هاب در اکتبر ۲۰۰۷، آغاز شد. گیت‌هاب در سال ۲۰۰۸ توسط تام پرستون، کریس ونسترت و پی جی هیت پایه‌گذاری گردید و بر اساس گزارشی در ژوئن ۲۰۱۱، این سرویس محبوب‌ترین سرویس ارائه‌دهنده گیت است. این سایت عملکردهای یک جامعهٔ مجازی شامل: فید، دنبال‌کننده و گراف شبکه را برای نمایش دادن توسعه دهندگانی که بر یک نسخهٔ مرجع (مخزن) کار می‌کنند، به کاربرانش ارائه می‌دهد. در ژوئیه ۲۰۱۲ این شرکت با صد میلیون دلار آمریکا در سری A سرمایه‌داران اصلی، از طرف اندرسون هورویتز رده‌بندی شد.", - "google":"جستجوگر گوگل یا گوگل یک موتور جستجوی وب است که توسط گوگل توسعه داده شده‌است. گوگل از راه این وبگاه روزانه صدها میلیون دلار درآمد به‌دست می‌آورد.\"Marketplace. American Public Media. Retrieved December 9, 2017\". این وبگاه در سال ۱۹۹۷ بنیاد نهاده شد. دامنهٔ اصلی این سایت در ماه مهٔ ۲۰۰۸ ۱۳۵ میلیون بار بازدید شده‌است. این موتور جستجو بیشترین بازدیدکننده در بین کاربران را دارد. موتور گوگل روزانه چندصدمیلیون بار به طرق مختلف استفاده می‌شود. مهم‌ترین هدف گوگل، یافتن متن موردنظر در میان صفحات وب است. اما انواع دیگر اطلاعات به وسیلهٔ قسمت‌های دیگر آن مثل جستجوی تصاویر گوگل، نیز مورد جستجو قرار می‌گیرند. جستجوگر گوگل توسط لَری پیج و سرگئی برین در سال ۱۹۹۷ ساخته شد. این جستجوگر به‌جز جستجوی واژگان، ۲۲ حالت جستجوی دیگر نیز دارد؛ مانند جستجوی مترادف‌ها، پیش‌بینی هوا، محدوده‌های زمانی ، قیمت سهام، اطلاعات زلزله، زمان نمایش فیلم‌ها، اطلاعات فرودگاه و… همچنین مختص اعداد، امکانات ویژه‌ای وجود دارد؛ مانند بازه (۷۰...۸۰)، دماها، واحدهای پول و تبدیل اینها به هم، عبارات محاسباتی و…", - "google images":"جستجوی نگاره‌ها گوگل یکی از خدمات جستجوی ساخته‌شده توسط شرکت گوگل است که امکان جستجوی محتوای نگاره را در وب جهان‌گستر برای کاربران فراهم می‌کند. این طرح در ژوئیه ۲۰۰۱ معرفی شد. کلیدواژه‌هایی که برای جستجوی نگاره‌ها مورد استفاده قرار می‌گیرد از نام پرونده، پیوند داده‌شده به نگاره، و نوشته‌های اطراف نگاره گرفته می‌شوند. در هنگام جستجو برای یک نگاره، نمونه‌های کوچکی از نگاره‌ها یافت‌شده نمایش داده می‌شوند. پس از کلیک بر روی نمایهٔ کوچک، نگاره در چارچوبی در بالای صفحه و وب‌گاهی که نگاره در آن پیدا شده بود، پایین صفحه نشان داده می‌شود تا کاربر به‌آسانی دریابد که نگاره از کجا آمده‌است.", - "google news":"گوگل نیوز به معنای اخبار گوگل، یک وبگاه جمع‌آوری‌کنندهٔ خبرخوان توسط گوگل است. این وبگاه در سپتامبر ۲۰۰۲ تأسیس‌شد و ۲۸ زبان زندهٔ جهان را پشتیبانی می‌کند. اما زبان فارسی در این ۲۸ زبان قرارندارد.", - "google videos":"گوگل ویدئو یک سرویس برای بارگذاری و به اشتراک گذاشتن ویدئو بود. این سرویس امکان فروش ویدئوها را هم فراهم می‌کرد. این سرویس در ۲۵ ژانویه ۲۰۰۵ ایجاد شد و در اواخر سال ۲۰۰۹ به فعالیت خود پایان داد. علت این کار هم‌پوشانی سرویس با یوتیوب و صرفه‌جویی در فضای سرورها بود.", - "google scholar":"گوگل اسکالر جستجوگری از شرکت گوگل است که امکان جستجوی واژه‌های کلیدی در مقاله‌ها، رساله‌های علمی و گزارش‌های فنی را فراهم می‌کند.", - "google play apps":"گوگل پلی که با عنوان گوگل پلی استور یا پلی استور نیز شناخته می‌شود، یک سرویس پخش دیجیتال محتوای چندرسانه‌ای از شرکت گوگل است که شامل یک فروشگاه آنلاین برای موسیقی، فیلم، کتاب و اپلیکیشن‌ها و بازی‌های اندروید و یک مدیا پلیر ابری می‌باشد. این خدمات از طریق وب، اپلیکیشن موبایل Play Store در آندوید و گوگل تی‌وی در دسترس می‌باشد. خریداری محتوا برای تمام پلتفرم‌ها/دستگاه‌ها قابل دسترس است. گوگل پلی در ماه مارس ۲۰۱۲ معرفی شد، زمانی که گوگل، خدمات دو برند سابق اندروید مارکت و گوگل موزیک را ادغام کرد و برند جدید گوگل پلی را معرفی کرد.", - "google play movies":[ - "google play apps:fa-IR", - "ref" - ], - "hoogle":"هسکل یک زبان برنامه‌نویسی تابعی خالص ، استاندارد شده و همه منظوره با نوع داده مستحکم است که به یاد دانشمند حوزه منطق و استدلال به نام هسکل کاری نام‌گذاری شده‌است.", - "imdb":"بانک اطلاعات اینترنتی فیلم‌ها یا پایگاه داده‌های اینترنتی فیلم‌ها پایگاه داده آنلاین است که دربرگیرندهٔ اطلاعات بازیگران، فیلم‌ها، بازی‌های ویدئویی، سریال‌ها و تولیدات سینمایی و تلویزیونی می‌باشد. آی‌ام‌دی‌بی کارش را به عنوان یک وبگاه سینمایی با عنوان rec.arts.movie بر روی یوزنت آغاز کرد و در سال ۱۹۹۳ به شبکهٔ جهانی اینترنت منتقل شد.", - "imgur":"ایمجر یک وبگاه اشتراک‌گذاری عکس و سرویس میزبانی عکس است که در سال ۲۰۰۹ توسط آلن شاف بنیان‌گذاری شد.", - "kickass":"کیک‌اس‌تورنتس همچنین شناخته‌شده با نام‌های کی‌ای‌تی ، یک فهرست وب شامل پیوندهای تورنت بود که امکان اشتراک فایل همتا به همتا را فراهم می‌نمود. کیک‌اس‌تورنتس در سال ۲۰۰۸ ساخته‌شد و در طول سال‌های مختلف در کنار پایرت بی جزو پربازدیدترین وبگاه های اشتراک پرونده به‌صورت همتابه‌همتا بود. این وبگاه در ژوئن ۲۰۱۶ به تور نیز پیوست و وارد دارک‌وب شد.", - "library genesis":"لايبراري جينيسيس لیبجن کتابخانه جنسیس یک موتور جستجو برای یافتن کتاب و مقالات علمی است که به کاربر اجازه دسترسی به محتوای پولی منتشر شده توسط ناشران و ژورنال‌های مختلف را می‌دهد. این موتور جستجو، امکان دسترسی به فایل پی.دی. اف پورتال ساینس دیرکت را برای کاربران خود فراهم می‌سازد. در سال ۲۰۱۵، مؤسسه الزویر، علیه این پایگاه اینترنتی به دادگاهی در ایالات متحده شکایت و آن را به دسترسی غیرمجاز به مقالات و کتاب‌های خود محکوم کرد. از آنجا که لایبجن در روسیه و نیز شهر آمستردام (هلند) ثبت شده‌است، بررسی وضعیت دقیق حقوقی آن کار دشواری است. همچنین مشخص نیست که آیا متهمان حاضرند در دادگاه ایالات متحده حضور یابند یا خیر. هم‌اکنون برخی آی.اس. پی‌ها در بریتانیا، دسترسی به این پایگاه را محدود کرده‌اند. در اکتبر سال ۲۰۱۵، دادگاهی در منطقهٔ نیویورک، دستور تعلیق دامنهٔ این پایگاه (libgen.org) را داد، اما این تارنما همچنان از طریق دامنه‌های جایگزین در دسترس کاربران قرار دارد. لینک جدیدی که این وبگاه از آن استفاده می‌کند (gen.lib.rus.ec) می‌باشد.", - "library of congress":"کتابخانه کنگره ، کتابخانه تحقیقاتی است که به‌طور رسمی به کنگره ایالات متحده خدمات ارائه کرده و کتابخانه ملی دفاکتوی ایالات متحده است. این کتابخانه، قدیمی‌ترین مؤسسه فرهنگی فدرال در این کشور است. کتابخانه کنگره در سه ساختمان کپیتال هیل در واشینگتن دی.سی. مستقر بوده و همچنین از یک مرکز حفاظت در کالپپرِ ویرجینیا نگهداری می‌کند. کتابداران کنگره بر عملکردهای کتابخانه نظارت داشته و ساختمان‌هایش توسط «معمار کپیتال» نگهداری می‌شود. کتابخانه کنگره یکی از بزرگ‌ترین کتابخانه‌های جهان است. «مجموعه‌هایش جهانیست و موضوعات، قالب یا مرزهای ملی آن محدودیت نداشته و شامل مواد تحقیقاتی از تمامی بخش‌های جهان با بیش از ۴۷۰ زبان است».", - "mastodon users":"ماستودون یک نرم‌افزار آزاد و متن‌باز خودمیزبان برای ساخت شبکهٔ اجتماعی است که این امکان را به هر شخص می‌دهد تا گره سرور خود را در شبکه میزبانی کند و پایگاه‌های مختلف از کاربران آن در میان سروهای متفاوتی پخش هستند.", - "mastodon hashtags":[ - "mastodon users:fa-IR", - "ref" - ], - "metacpan":"CPAN سرواژهٔ Comprehensive Perl Archive Network است، که یک بایگانی از بیش از ۱۹۶٬۰۰۰ ماژول نرم‌افزار به زبان برنامه‌نویسی پرل به همراه مستنداتشان است. پایگاه سیپن بر روی وب www.cpan.org است که بر روی بیش از ۳۵۱ مکان آینه شده است. سیپن می‌تواند به معنی خود شبکهٔ بایگانی یا اسکریپت پرلی که به عنوان یک مدیر بسته، رابط شبکهٔ بایگانی است بکار رود. بیشتر نرم‌افزارهای روی سیپن نرم‌افزار آزاد هستند.", - "mixcloud":[ - "پلتفرم پخش جاری صوتی بریتانیایی", - "wikidata" - ], - "npm":"ان‌پی‌ام مدیر بسته برای جاوااسکریپت است که بطور پیش‌فرض برای محیط خط فرمان نود.جی‌اس می‌باشد.", - "openstreetmap":"اوپن‌استریت‌مپ یک پروژه مشارکتی برای ایجاد نقشه جهانی قابل ویرایش آزاد است. ایجاد و رشد اواس‌ام به دلیل محدودیت در استفاده یا در دسترس بودن داده‌های نقشه در بسیاری از نقاط جهان و ظهور سامانه ماهواره‌ای ناوبری جهانی ارزان قیمت ایجاد شده‌است. اواس‌ام نمونه ای بارز از اطلاعات جغرافیایی داوطلبانه شناخته شده‌است.", - "pinterest":"پینترست نام وب‌سایت شبکه اجتماعی شناخته شده برای اشتراک‌گذاری تصاویر است که به کاربران اجازه می‌دهد بر اساس علاقهٔ خود به اصطلاح «پین» کنند و سایر اعضا این تصاویر را لایک زده یا در صورت لزوم «ریپین» کنند. اعضا می‌توانند کل تصاویر پین شده به یک بورد خاص متعلق به یک نفر را دنبال کنند. کاربران پینترست از طریق تمام شبکه‌های اجتماعی اعم از توییتر، تلگرام و واتساپ نیز می‌توانند عکس‌های خود را به اشتراک گذاشته و با یکدیگر همکاری داشته باشند. پین‌ترست با سرمایه‌گذاری ۲۷ میلیون دلاری تأسیس شده‌است و در فهرست ۵۰ سایت برتر سال ۲۰۱۱ از دید نشریه تایم قرار گرفته‌است.", - "piratebay":"پایرت بی ، معروف‌ترین وب‌گاه اشتراک فایل در جهان است که محل جستجو و رد و بدل‌کردن فایل‌های تورنت می‌باشد.", - "pubmed":"مِدلاین یکی از معروفترین پایگاه داده‌های آزاد (دیتابیس) در جهان است که حاوی اطلاعات بیبلیوگرافی پژوهشی برای تمام رشته‌های علوم پزشکی و زیست‌شناسی است.", - "reddit":"ردیت یک وبسایت جمع‌آوری اخبار اجتماعی آمریکایی، رتبه‌بندی محتوای وب، وب سایت بحث و دارای تالار گفتگو است. اعضای عضو شده مطالب مورد نظر خود را مانند پیوندها، پست‌های متنی و تصاویر به سایت ارسال می‌کنند و سپس، توسط اعضای دیگر رأی داده می‌شود. پست‌ها در تابلوهای ایجاد شده توسط کاربر به نام ساب‌ردیت سازماندهی می‌شوند، که موضوع‌های مختلفی از جمله اخبار، علم، فیلم، بازی‌های ویدئویی، موسیقی، کتاب، تناسب اندام، غذا و اشتراک تصویر را در بر می‌گیرد.", - "soundcloud":"ساوندکلاود یک سکوی توزیع صدا به صورت آنلاین است که در برلین آلمان پایه‌گذاری شد. این وبگاه امکان بارگذاری، اشتراک‌گذاری و ترویج فایل‌های صوتی که توسط کاربرانش ساخته می‌شود را فراهم می‌آورد. پروژهٔ ساوندکلاود در ابتدا در استکهلم سوئد شروع شد اما در اوت ۲۰۰۷ توسط دو سوئدی با نام‌های Alex Ljung و Eric Wahlforss در آلمان بنیانگذاری شد. در ژوئیهٔ ۲۰۱۳ این وبگاه ۴۰ میلیون کاربر ثبت‌شده و ۲۰۰ میلیون شنونده داشته‌است.", - "stackoverflow":"استک اکسچنج شبکه‌ای از وب سایت‌های سؤال و جواب در موضوعاتی با زمینه‌های مختلف است که هر سایت در زمینه یک موضوع خاص است و پرسش‌ها، پاسخ‌ها، پرسش گران و پاسخ دهندگان مشمول فرایند اعطای اعتبار هستند. سایت‌های مختلفی با اهدافی شبیه استک اکسچنج به وجود آمده‌اند. مانند سایت ولفرام آلفا، کورا و …", - "askubuntu":[ - "stackoverflow:fa-IR", - "ref" - ], - "superuser":[ - "stackoverflow:fa-IR", - "ref" - ], - "semantic scholar":"سمانتیک اسکالر یا دانشنامهٔ معنایی پروژه‌ای است که توسط مؤسسه هوش مصنوعی آلن راه‌اندازی شد و در نوامبر ۲۰۱۵ در دسترس عموم واقع شد. این پروژه در واقع یک موتور جستجوی مقالات علمی و دانشگاهی مبتنی بر هوش مصنوعی است. در این پروژه از ترکیبی از یادگیری ماشینی، پردازش زبان‌های طبیعی و دید ماشینی است که لایه‌ای از تحلیل معنایی را به روش سنتی تحلیل استنادی اضافه می‌کند و می‌تواند نوشته‌ها، حوزه‌های تخصصی و شکل‌ها را از مقالات استخراج کند. در مقایسه با گوگل اسکالر و پاب‌مد، سمانتیک اسکالر به‌گونه‌ای طراحی شده‌است که مهمترین و تأثیرگذاریترین مقالات را شناسایی کرده و ارتباط میان آنها را مشخص کند.", - "unsplash":"آنسپلش یک وبگاه برای به اشتراک گذاری عکس‌های بدون حق تکثیر است. این وب سایت ادعا می‌کند بیش از ۷۰۰۰۰ عکاس دارد و کتابخانهٔ عکس آن‌ها بیش از ۵۰۹٬۰۰۰ عکس دارد. آنسپلش به عنوان یکی از وب سایت‌های برتر عکاسی در جهان توسط فوربز و سی‌نت شناخته شده‌است.", - "yahoo news":"یاهو! نیوز یک سرویس اینترنتی گردآورندهٔ خبری ارائه‌شده توسط شرکت یاهو! است. مقاله‌های خبری در یاهو! نیوز عمدتاً از خبرگزاری‌های آسوشیتد پرس، رویترز، خبرگزاری فرانسه، فاکس نیوز، کریستین ساینس مانیتور، رادیوی عمومی ملی، یواس‌ای تودی، سی‌ان‌ان، سی‌بی‌سی، ۷ نیوز و بی‌بی‌سی است.", - "youtube":"یوتیوب یک پلتفرم سرویس اشتراک ویدئو است. یوتیوب دومین وبگاه پرطرفدار جهان پس از گوگل و پیش از فیس‌بوک بزرگ‌ترین شاخهٔ گوگل است که در نوار ابزار این وبگاه دیده می‌شود.", - "dailymotion":"دیلی موشن یک پلتفرم فناوری به اشتراک گذاری ویدیو است که در ابتدا متعلق به ویوندی بوده‌است. شرکای راه اندازی آمریکای شمالی شامل بی‌بی‌سی نیوز، ویک، بلومبرگ ال. پی، هرست دیجیتال مدیا و غیره است. دیلی موشن در سراسر جهان در دسترس است در ۲۴ زبان و ۳۹ نسخه محلی شامل صفحه اصلی محلی و محتوا محلی است. دیلی موشن این بیش از ۳۰۰ میلیون کاربر منحصر به فرد ماهانه دارد.", - "vimeo":"ویمیو یک وبگاه به اشتراک‌گذاری ویدئو آمریکایی است، که کاربران می‌توانند ویدئو بارگیری کنند، به اشتراک بگذارند و به تماشا بپردازند. ویمیو توسط جیک لادویک و زک کلین در ماه نوامبر ۲۰۰۴ تأسیس شد.", - "wikibooks":"ویکی‌کتاب که پیش‌تر ویکی‌نَسَک نامیده می‌شد، پروژه‌ای چندزبانه برای ایجاد گنجینه‌ای از کتاب‌هایی با محتوای باز، راهنماها و دیگر نوشته‌ها با محتویات آزاد است.", - "wikinews":"ویکی‌خبر یک مرجع خبری با محتوای آزاد است.", - "wikiquote":"ویکی‌گفتاورد ، یکی از پروژه‌های هموند ویکی‌پدیا است که از نرم‌افزار مدیاویکی استفاده نموده و جزو پروژه‌های مبتنی بر ویکی است که توسط بنیاد ویکی‌مدیا اداره می‌گردد. ایدهٔ اصلی ویکی‌گفتاورد را دانیل الستون مطرح نموده و توسط برایان ویبر به مرحلهٔ اجرا درآمده‌است.", - "wikisource":"ویکی‌نِبشته یکی از پروژه‌های بنیاد ویکی‌مدیا است که هدف از آن فراهم‌آوردن مجموعه‌ای آزاد از کتاب‌ها، نوشتارها و متون و مراجع بنیادین دیگر به همهٔ زبان‌ها است. ترجمهٔ متون بنیادین به زبان‌های گوناگون نیز از اهداف این پروژه است.", - "wikispecies":"ویکی‌گونه یکی از پروژه‌های بنیاد ویکی‌مدیا است که برای راهنمایی در مورد گونه‌های زیستی به کار می‌رود و در یک گونه بالارده‌ها و زیررده‌ها را مشخص می‌کند.", - "wiktionary":"ویکی‌واژه ، یک فرهنگ لغت اینترنتی با محتوای آزاد برپایهٔ همکاری باز است که واژگان بسیاری از زبانهای جهان را دربردارد و معنا، ریشه‌شناسی و تلفظ (آوایِش) واژه‌ها گنجانده می‌شود. ویکی‌واژه بُن‌مایهٔ واژگانیِ دانشنامهٔ آزاد ویکی‌پدیا است.", - "wikiversity":"ویکی‌دانشگاه یکی از پروژه‌های بنیاد ویکی‌مدیا است.", - "wikivoyage":"ویکی‌سفر یکی از پروژه‌های تازه‌تأسیس بنیاد ویکی‌مدیا است که اطلاعات اولیهٔ آن بر پایهٔ اطلاعات موجود در ویکی‌تراول درون‌ریزی شده‌است و در شروع کار با ۱۰ زبانِ فارسی، انگلیسی، هلندی، فرانسوی، آلمانی، ایتالیایی، پرتغالی، روسی، اسپانیایی و سوئدی پایه‌گذاری شده‌است.", - "wikicommons.images":"ویکی‌انبار یک مخزن دیجیتال از فایل‌های رایگان تصویری، صوتی، و دیگر فایل‌های رسانه‌ای است. بنیاد ویکی‌مدیا پروژهٔ ویکی‌انبار را ایجاد کرده‌است.", - "wolframalpha":"ولفرم آلفا یک موتور محاسباتی دانش است که توسط ولفرم ریسرچ ایجاد شده‌است. این موتور جستجو حاصل تلاش فیزیکدانی بنام استفان ولفرام و تیم تحقیقاتی او است. هستهٔ اصلی ولفرام‌آلفا نرم‌افزار محاسباتی متمتیکا است. برخلاف دیگر موتورهای جستجو که معمولاً گزیده‌ای از وب را در اختیار شما می‌گذارند، ولفرام‌آلفا، این اطلاعات را پردازش کرده و سپس در اختیار کاربر می‌گذارد. ولفرام آلفا قادر است به بسیاری از سؤالاتی که دیگر موتورهای جستجو قادر به جوابگویی به آن‌ها نیستند پاسخ دهد؛ برای نمونه سؤالی مثل: «ملکه الیزابت دوم در سال ۱۹۴۷ چند ساله بوده است؟» یا «پنجاه و چهارمین کشور کوچک از لحاظ سرانه تولید ناخالص ملی کدام کشور است؟» با این وجود نمی‌توان انتظار هر نوع محاسبه‌ای را از این وب‌گاه داشت.", - "1337x":"۱۳۳۷اکس یک وب‌سایت است که فهرستی از فایل‌های تورنت را برای اشتراک‌گذاری فایل‌های همتا به همتا که از طریق پروتکل بیت‌تورنت استفاده می‌شود را ارائه می‌کند. به نوشته وبلاگ خبری تورنت‌فریک، ۱۳۳۷اکس سومین وب سایت محبوب تورنت تا سال ۲۰۲۱ است.", - "seznam":"سزنم پربازدیدترین پرتال اینترنتی در جمهوری چک و کشورهای چک زبان پیرامون آن مانند اسلواکی و بخش‌هایی از آلمان است. صفحه اصلی سزنم روزانه دست کم ۲/۵ میلیون بازدیدکننده دارد. سرویس‌های تجاری و غیرتجاری سزنم نیز سال‌ها است که به‌دست کاربرانی که به دنبال سرگرمی، یافتن داده‌ها یا دوستان در فضای اینترنت هستند، قابل استفاده است. جستجوگر بومی سزنم با بیش از هزار نیرو و کارمند توانسته است به سهم ۵۰ درصدی از بازار جستجوگرها در کشور خود دست‌یابد. به‌طور تقریبی ۹۰ درصد از مردم این کشور اروپایی از جستجوگر سزنم یا سرویس‌های گوناگون آن بهره می‌برند.", - "naver":"موتور جستجوی ناور (به کره‌ای: 네이버) یک موتور جستجوی معروف در کره است که در حدود ۷۰ درصد بازار مشترک را در مقابل ۲ درصد گوگل داراست .Naver در سال ۱۹۹۹ توسط گروهی از مهندسان شرکت Sumsong ایجاد شد. و به عنوان اولین وب پورتال کره جنوبی شناخته می‌شود و یک پورتال بومی اختصاصی محسوب می گردد.", - "peertube":"پیرتیوب یک سکوی ویدیوی آزاد، غیر متمرکز و فِدِرِیتِد بر پایهٔ اکتیویتی‌پاب و وب‌تورنت است که از فناوری همتابه‌همتا برای کاهش بار بر روی سرورها هنگام دیدن ویدیو استفاده می‌کند. توسعه این نرم‌افزار در سال ۲۰۱۵ توسط برنامه‌نویسی معروف به Chocobozzz آغاز شد و هم‌اکنون توسط مؤسسه غیرانتفاعی فرانسوی فراماسافت به پیش می‌رود. هدف این پروژه، ارائه جایگزین برای سکوهای متمرکز مانند یوتیوب، ویمیو و دیلی موشن است.", - "yacy":"YaCy یک موتور جستجو توزیع شده رایگان می‌باشد که از شبکه peer-to-peer (P2P).استفاده می‌کند هستهٔ اصلی توسط زبان برنامه‌نویسی جاوا نوشته شده است که یک برنامه کامپیوتری در چند صد کامپیوتر توزیع شده است. ‍‍‍‍‍ تا تاریخ سپتامبر ۲۰۰۶به اصطلاح YaCy-peers نامیده شد، هر YaCy به طور مستقل در اینترنت می‌خزد، و صفحات وب را جستجو، تجزیه و تحلیل می‌کند نتایج جستجو در یک پایگاه داده مشترک ذخیره می‌شود؛ که این صفحات با سایر YaCy-peers با استفاده از اصول شبکه‌های P2P در اشتراک قرار می‌گیرند. این یک موتور جستجورایگان است که هر کس می‌تواند از آن برای ساخت یک پورتال جستجو استفاده کند؛ و کمک کند تا جستجو در اینترنت به صورت واضح صورت گیرد.", - "yacy images":[ - "yacy:fa-IR", - "ref" - ], - "rumble":"رامبل یک پلتفرم سرویس اشتراک ویدیو و ارائه دهنده خدمات رایانش ابری برای کسب‌ و کارها است.دفتر اصلی رامبل در شهر تورنتو، مرکز استان انتاریو کشور کانادا قرار دارد و دفتر مرکزی آن در آمریکا هم در شهرک لانگبوت کی ایالت فلوریدا است.رامبل در اکتبر سال ۲۰۱۳ توسط کریس پاولوفسکی کانادایی، کارآفرین حوزه تکنولوژی تأسیس شد. بخش سرویس خدمات ابری رامبل هاست (میزبان) شبکه اجتماعی تروث سوشال است و بخش پلتفرم ویدئویی رامبل هم بین کاربران حزب محافظه‌کار و گروه‌های راست افراطی آمریکا محبوب است. پلتفرم رامبل به‌عنوان بخشی از تکنولوژی آلترناتیو (alt-tech) شناخته می‌شود.", - "wttr.in":[ - "Boydton, Virginia, United States اوه و بآ تیعضو شرازگ", - "https://wttr.in" - ], - "brave":"بریو یک مرورگر وب رایگان و متن‌باز است. با سیستم پرداخت به گشت‌وگذار و بر پایهٔ مرورگر کرومیوم و موتور چیدمان بلینک ساخته شده‌است. ساخت این مرورگر را یکی از بنیان‌گذاران پروژه موزیلا و خالق جاوااسکریپت یعنی برندان آیک اعلام کرد.", - "brave.images":[ - "brave:fa-IR", - "ref" - ], - "brave.videos":[ - "brave:fa-IR", - "ref" - ], - "brave.news":[ - "brave:fa-IR", - "ref" - ] - }, - "fi":{ - "9gag":"9GAG on vuonna 2008 perustettu meemeihin ja muuhun internethuumoriin keskittyvä verkkosivusto. Se syntyi hongkonglaisen opiskelijaryhmän työnä, johon kuului Ray Chan, Chris Chan, Derek Chan, Marco Fung ja Brian Yu, koska Facebook ei ollut saatavilla Hong Kongissa. 9GAG-sovellus on saatavilla Androidille, iOS:lle, Windows Phonelle ja BlackBerry 10:lle. 9GAG on saavuttanut sosiaalisen median kuten Facebookin, Twitterin ja Instagramin avulla suuren suosion. Marraskuussa 2017 9GAG:in sivuilla oli käynyt yli 223 miljoonaa vierailijaa.", - "apple app store":"App Store on Applen kehittämä sovelluskauppa, jossa myydään sovelluksia Applen iOS-laitteisiin. Sovelluksia kehittävät pääasiassa ulkopuoliset sovelluskehittäjät Applen tarjoamilla kehittäjäavuilla.", - "artic":"The Art Institute on Chicagossa Yhdysvalloissa toimiva taidemuseo. Sillä on merkittävä kokoelma impressionistien töitä. Art Institute on pinta-alaltaan Yhdysvaltojen toiseksi suurin taidemuseo, vain Metropolitan Museum of Art on suurempi.", - "arxiv":"Arxiv tai arXiv, on tieteellisten tutkimusten sähköisten ennakkojulkaisujen arkisto Internetissä.", - "bandcamp":"Bandcamp on yhdysvaltalainen musiikkiyhtiö, jonka ovat perustaneet Ethan Diamond, Shawn Grunberger, Joe Holt ja Neal Tucker vuonna 2008.", - "wikipedia":"Wikipedia on Internetissä toimiva avoin tietosanakirja, joka käyttää MediaWiki-ohjelmistoa. Wikipediaa kirjoitetaan 291 kielellä. Wikipedian sisältö on vapaaehtoisten kirjoittama, ja se on avointa Creative Commons Nimeä-JaaSamoin- tai GNU Free Documentation -lisenssien mukaisesti. Wikipediaa ylläpitää Wikimedia Foundation, joka ei kuitenkaan omista Wikipedian sisältöä.", - "bing":"Microsoft Bing on Microsoftin omistama ja ylläpitämä hakukone. Palvelu juontaa juurensa yrityksen aiemmista hakukoneista MSN Search, Windows Live Search ja myöhemmin Live Search. Microsoft pyrkii kilpailemaan hakukoneella maailmanlaajuisesti Google-hakukoneen kanssa. Liiketoimintamalli perustuu hakutulosten yhteydessä näkyvään hakusanamainontaan. Hakukone julkistettiin 1. kesäkuuta 2009.", - "bing images":[ - "bing:fi", - "ref" - ], - "bing news":[ - "Uutisia niin maailman ja valtakunnan lähteistä kuin paikallislähteistäkin. Uutiset on järjestetty niin, että saat seikkaperäisiä uutisia urheilusta, viihteestä, taloudesta, politiikasta, säästä ja monesta muusta aiheesta.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Bingin älykäs haku auttaa sinua löytämään etsimäsi nopeammin ja palkitsee sinut.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket on lähdekoodin hallinnointiin ja versiohallintaan tarkoitettu sivusto.", - "currency":"DuckDuckGo on hakukone, joka painottaa yksityisyyttä eikä kerää dataa käyttäjiltä. Se käyttää hakuihinsa oman hakurobottinsa lisäksi useita eri lähteitä, muun muassa joukkoutettuja verkkosivuja, kuten Wikipediaa.", - "deezer":"Deezer on ranskalainen musiikkipalvelu, josta voi vuokrata musiikkia. Deezer julkaistiin 24. elokuuta 2007. Palvelua kustannetaan mainostuloilla. Toukokuussa 2013 Deezerissä oli 20 miljoonaa kappaletta. Palvelun käyttö ei vaadi erillistä ohjelmaa, vaan sivustolla olevia kappaleita pystyy kuuntelemaan suoraan verkkosivuston kautta. Palvelu on saatavissa myös älypuhelimille erillisen sovelluksen kautta. Palvelu avattiin Suomessa toukokuussa 2013. Deezerissä on tarjolla yli 53 miljoonaa kappaletta.milloin?", - "deviantart":"DeviantArt on suosittu Internetissä toimiva taidesivusto. Sen ovat perustaneet elokuussa 2000 Angelo Sotira, Scott Jarkoff ja Matthew Stephens. DeviantArtiin rekisteröityneet käyttäjät voivat julkaista omia ja kommentoida muiden valokuvia, piirroksia, tatuointeja, maalauksia, Flash-animaatioita, runoja ja proosaa. Sivuston kautta voi myös myydä omaa taidettaan.", - "ddg definitions":[ - "currency:fi", - "ref" - ], - "erowid":"Erowid on järjestö, jonka keskeisin osa on psykoaktiivisista kasveista ja kemikaaleista sekä muista muuntuneita tajunnantiloja koskevista aiheista tietoa tarjoava verkkosivusto Erowid.org. Erowidin ovat luoneet salanimillä Fire ja Earth Erowid esiintyvät henkilöt. Nykyään sivustoa ylläpitävän rekisteröityneen järjestön The Erowid Centerin hallituksen jäsenten nimet löytyvät sekä järjestön omilta kotisivuilta että GuideStar-järjestöpalvelun sivuilta. Sivusto sisältää tietoa niin laillisista kuin laittomistakin aineista ja kertoo sekä niiden toivotuista että haitallisista vaikutuksista.", - "wikidata":"Wikidata on Wikimedia Foundationin omistama yhteisesti muokattava Wikipediaa tukeva tietokanta. Saksan Wikimedia-yhdistyksen aloittaman hankkeen tarkoitus on toimia keskitettynä paikkana erilaisille tiedoille, esimerkiksi henkilöiden syntymäajoille. Palvelu avattiin virallisesti 30. lokakuuta 2012. Se on ensimmäinen Wikimedian uusi hanke vuoden 2006 jälkeen.", - "duckduckgo":[ - "currency:fi", - "ref" - ], - "duckduckgo images":[ - "currency:fi", - "ref" - ], - "duckduckgo videos":[ - "currency:fi", - "ref" - ], - "duckduckgo news":[ - "currency:fi", - "ref" - ], - "duckduckgo weather":[ - "currency:fi", - "ref" - ], - "fdroid":"F-Droid on Android-käyttöjärjestelmää käyttäville laitteille tarkoitettu pakettivarasto. Kaikki ohjelmistot F-Droidissa ovat vapaata ohjelmistoa. Esimerkiksi Google Playstä poiketen F-Droid ei vaadi kirjautumista.", - "flickr":"Flickr on valokuvien ja videoiden jakamiseen erikoistunut yhteisöpalvelusivusto, joka perustettiin helmikuussa 2004. Sivustolla voi jakaa omia kuviaan ja videoita, ja arvostella muiden. Flickrin mukaan sivustolla oli viisi miljardia kuvaa syyskuussa 2010.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab on verkkopalvelu, joka tarjoaa Git-versiohallinnan, wikin, bugienseurannan, kehitystoiveet ja tehtävienhallintatoimintoja. GitLabin lähdekoodi on kirjoitettu Ruby-ohjelmointikielellä, ja sen kehityksestä vastaa GitLab Inc. Myöhemmin joitain osia ohjelmistosta on uudelleenkirjoitettu Go-kielellä. GitLabia käyttävät useat organisaatiot, kuten IBM, Sony, Nasa, Alibaba, SanDisk ja Intel.", - "github":"GitHub on vuonna 2008 avattu verkkosivusto, joka tarjoaa paikan Git-versionhallintaa käyttäville ohjelmakehitysprojekteille. Git itsessään on komentoriviohjelma ja GitHub tarjoaa käyttöliittymän sekä tallennuskapasiteettia Gitillä hallittuihin tietovarastoihin. GitHubin verkkosivujen kautta voi myös ladata lähdekoodia. Gitin lisäksi GitHub tarjoaa projekteille toimintoja kuten bugienseurannan, kehitystoiveet, tehtävien hallinnan ja wikin.", - "google":"Google on yhdysvaltalaisen Google-yhtiön omistama, maailman suosituin hakukone. Hakuja sillä tehdään joka päivä yli kolme miljardia kertaa.", - "google images":[ - "Google-kuvat. Internetin kattavin kuvahaku.", - "https://images.google.com" - ], - "google news":"Google News on Googlen vuonna 2002 avaama sivusto, joka kerää uutisia eri uutissivustoilta. Sivuston betavaihe päättyi vuonna 2006.", - "google videos":"Google Video on hakukoneyhtiö Googlen videohakukone.", - "google scholar":"Google Scholar on yhdysvaltalaisen Googlen tuottama maksuton hakupalvelu, jonka avulla voi etsiä tieteellisiä julkaisuja. Palvelu avattiin 18. marraskuuta 2004, ja se on nykyisin käytettävissä neljällätoista eri kielellä, myös suomeksi.", - "google play apps":"Google Play on Googlen omistama digitaalinen sisältöpalvelu. Palvelussa on mahdollista ostaa musiikkia, elokuvia, kirjoja, lehtiä sekä ladata Googlen kehittämän Android-käyttöjärjestelmän mobiililaitteille tarkoitettuja sovelluksia.", - "google play movies":[ - "google play apps:fi", - "ref" - ], - "hoogle":"Haskell on yleiskäyttöinen, puhtaasti funktionaalinen ohjelmointikieli, jolla on laiskan suorituksen semantiikka ja vahva staattinen tyypitys ja jota alettiin kehittää vuonna 1987. Se on nimetty loogikko Haskell Curryn mukaan. Kielen viimeisin standardiversio on Haskell 2010, joka korvasi aiemman standardin Haskell 98:n. Lähes kaikki kielen toteutukset tukevat standardien lisäksi omia laajennoksiaan. Haskellin tunnetuin toteutus on GHC.", - "imdb":"The Internet Movie Database on Internetin laajin elokuvatietokanta, joka sisältää tietoa elokuvista, televisiosarjoista, animaatioista, lyhytelokuvista ja videopeleistä.", - "imgur":"Imgur on internet-kuvagalleria ja kuvien jakopalvelu. Sen perusti Alan Schaaf vuonna 2009.", - "ina":"Institut national de l'audiovisuel (Ina) on Ranskan kulttuuriministeriön alainen valtion virasto, jonka tehtävänä on radio- ja televisio-ohjelmien arkistointi ja tutkimus. Ina arkistoi myös ranskankielisiä verkkosivuja. Virasto aloitti toimintansa vuonna 1975. Sen pääkonttori sijaitsee Pariisin esikaupunkialueella Bry-sur-Marnessa. Vuoden 2019 loppuun mennessä Ina oli arkistoinut yli 18 miljoonaa tuntia audiovisuaalisia ohjelmia.", - "kickass":"KickassTorrents on BitTorrent-seurantapalvelin. Kickass Torrentsista on noussut maailman suosituin torrent-sivusto sen jälkeen, kun The Pirate Bay -sivusto joutui toistuvasti vaihtamaan verkko-osoitettaan.", - "library of congress":"Kongressin kirjasto on Yhdysvaltain tosiasiallinen kansalliskirjasto. Se sijaitsee kolmessa rakennuksessa Washingtonissa ja on hyllymetreiltään ja kirjamäärältään maailman suurin kirjasto.", - "mastodon users":"Mastodon on avoimen lähdekoodin palvelin- ja asiakasohjelmistopaketti yhteisöpalveluihin. Se noudattaa ActivityPub-protokollaa.", - "mastodon hashtags":[ - "mastodon users:fi", - "ref" - ], - "metacpan":"Comprehensive Perl Archive Network (CPAN) on laaja kokoelma Perlillä kirjoitettuja ohjelmia, moduuleita ja dokumentaatiota. Sen pääsivusto on cpan.org, minkä lisäksi arkisto on peilattu moniin muihin paikkoihin Internetissä.", - "npm":"npm on JavaScript-ohjelmointikielen paketinhallintatyökalu, jota ylläpitää npm, Inc. -yhtiö. Npm on oletuspaketinhallintatyökalu JavaScriptin ajonaikaiselle ympäristölle Node.js:lle. Npm koostuu komentorivityökalusta ja tietokannasta, joka ylläpitää sekä julkisia että maksua vastaan yksityisiä paketteja. Tietokantaa kutsutaan npm-rekisteriksi. Rekisteriä voi käyttää sekä komentorivityökalulla että selata npm:n www-sivuston kautta.", - "openstreetmap":"OpenStreetMap on avoin yhteistyöprojekti vapaasti muokattavien karttojen luomiseksi. Vapaaehtoiset käyttäjät keräävät paikkatietodataa GPS-laitteiden avulla ja hyödyntävät satelliittikuvia karttojen piirtämiseksi.", - "pinterest":"Pinterest on ilmoitustaulutyyppinen sosiaalinen linkkien ja kuvien jakopalvelu. Se tarjoaa mahdollisuuden luoda ja ylläpitää kokoelmia, jotka perustuvat johonkin teemaan, kuten tapahtumaan tai harrastukseen. Tällaista omien sisältökoosteiden tekemistä sosiaalisessa mediassa kutsutaan kuratoinniksi. Käyttäjä voi myös selata muita linkki-/kuvakokoelmia, poimia niistä osia omiin kokoelmiinsa ja ilmoittaa tykkäävänsä linkistä/kuvasta.", - "piratebay":"The Pirate Bay (TPB) on maailman suurin BitTorrent magnet-linkkien indeksi. Sen perusti ruotsalainen tekijänoikeuksia vastustava järjestö Piratbyrån vuoden 2003 lopussa, mutta se on lokakuun 2004 jälkeen toiminut itsenäisenä organisaationa. Pirate Bayn sisältö koostuu suurimmaksi osaksi laittomista kopioista tekijänoikeuksien alaista materiaalia, kuten elokuvia, musiikkia ja pelejä. Pirate Bayn taustalla toimivat ylläpitäjät Gottfrid Svartholm, Carl Lundström, Fredrik Neij sekä Peter Sunde, pitävät tätä omien sanojensa mukaan harrastuksena.", - "radio browser":"RadioBrowser on avoimen lähdekoodin internet-radiokanavien tietokantatarvitaan parempi lähde, jota kehittää RadioBrowser-projekti Alex Seglerin vetämänä. Palvelun ohjelmisto on lisensoitu avoimella MIT-lisensillä ja sen sisältämä data on public domainin alaista avointa dataa.", - "reddit":"Reddit on sosiaalinen verkkosivusto, jossa käyttäjät voivat keskustella kiinnostavista ja ajankohtaisista aiheista.", - "soundcloud":"SoundCloud on ruotsalainen musiikin sekä muiden äänitiedostojen levitykseen ja suoratoistoon keskittyvä internet-palvelu, joka mahdollistaa pääasiassa muusikoista koostuvalle käyttäjäkunnalleen musiikkitiedostojen lataamisen palvelimille, suoranauhoituksen sekä promootion. Ammattilais- ja harrastelijamuusikot käyttävät palvelua niin valmiiden kappaleiden, raakaversioiden, demojen, podcastien kuin DJ-miksausten jakamiseen. Tuoreet, uransa alkuvaiheessa tai koko kansalle tuntemattomat, muusikot käyttävät palvelua pääasiallisena jakelumedianaan.", - "stackoverflow":[ - "kysymys ja vastaus -sivustojen verkosto", - "wikidata" - ], - "askubuntu":[ - "stackoverflow:fi", - "ref" - ], - "superuser":[ - "stackoverflow:fi", - "ref" - ], - "startpage":"Startpage on anonyymi hakukone. Se saa hakutuloksensa Googlelta.", - "tagesschau":"Tagesschau on televisioyhtiö ARD:n esittämä saksalainen uutisohjelma.", - "youtube":"Youtube on Googlen omistama Internetissä toimiva videopalvelu. Käyttäjät voivat lisätä sivustolle omia videoitaan, sekä katsoa ja kommentoida muiden käyttäjien videoita. Sivuston perusti 14. helmikuuta 2005 kolme PayPalin työntekijää: Chad Hurley, Steve Chen ja Jawed Karim. Youtuben pääkonttori sijaitsee San Brunossa, Kaliforniassa ja Susan Wojcicki toimi Youtuben toimitusjohtajana helmikuusta 2014 vuoteen 2023. Nykyisin Youtuben toimitusjohtajana toimii Neal Mohan.", - "dailymotion":"Dailymotion on ranskalaislähtöinen Internetin videolevityssivusto. Sivusto perustettiin 15. maaliskuuta 2005, kuukausi Internetin suosituimman videolevityssivuston YouTuben perustamisen jälkeen.", - "vimeo":"Vimeo on Internetissä toimiva englanninkielinen videopalvelu. Se perustettiin marraskuussa 2004, mutta kenen tahansa käytettävissä olevana julkisena palveluna Vimeo avattiin 16. helmikuuta 2005. Sivusto tukee mm. videoiden näyttämistä muilla verkkosivuilla sekä pitkäaikaista videovarastointia. Videoiden katsominen ja käyttäjäksi rekisteröityminen on ilmaista. Rekisteröityneet käyttäjät voivat lisätä sivustolle omia videoitaan, kirjoittaa videoiden yhteyteen kommentteja sekä liittää profiiliinsa käyttäjäkuvan.", - "wikibooks":"Wikikirjasto (Wikibooks) on ilmainen internetissä julkaistava kokoelma vapaita kirjoja. Se perustuu wiki-tekniikkaan. Wikikirjastoa kirjoitetaan useilla kielillä. Sen sisältö on vapaaehtoisten kirjoittama, ja se tulee aina olemaan vapaata GNU Free Documentation -lisenssin mukaisesti. Aatteellinen Wikimedia-säätiö ylläpitää mutta ei omista Wikikirjastoa. Wikikirjaston tunnetuin sisarhanke on Wikipedia.", - "wikinews":"Wikiuutiset on Wikimedia Foundationin hallinnoima vapaan sisällön uutislähde. Wikiuutiset soveltaa wikiperiaatetta uutistuotantoon.", - "wikiquote":"Wikisitaatit on Wikimedia Foundationin hallinnoima Wikipedian sisarhanke. Se käyttää samaa MediaWiki-alustaa kuin muutkin Wikimedia Foundationin hankkeet. Wikisitaattien tarkoituksena on yhteistoiminnallisesti koota kattava valikoima eri henkilöiden sitaatteja, puheita ja kirjoituksia sekä sananlaskuja ja anekdootteja. Ajatuksen Wikisitaateista esitti Daniel Alston ja Brion Vibber toteutti asian käytännössä.", - "wikisource":"Wikiaineisto on Wikimedia Foundationin hallinnoima hanke, joka on tarkoitettu kaikenlaisille aiemmin julkaistuille teksteille, kuten romaaneille, kirjeille, puheille, historiallisille dokumenteille tai lakiteksteille. Edellytys on, että aineisto on tekijänoikeusvapaata joko siksi että sen tekijänoikeudet ovat rauenneet iän vuoksi tai koska se on julkaistu GNU Free Documentation Licensen alla.", - "wikispecies":"Wikispecies on Wikimedia Foundationin ylläpitämä projekti, josta on tarkoitus kehittyä avoin ja vapaa eliölajien tietokanta. Se tulee kattamaan eläimet, kasvit, sienet, bakteerit, arkeonit, alkueliöt ja kaikki muut tunnetut elämänmuodot niin perusteellisesti kuin käyttäjät haluavat. Wikispeciesin motto on: \"Wikispecies on vapaa, koska elämä on yhteistä omaisuutta!\"", - "wiktionary":"Wikisanakirja on Wikipedian sisarhanke, jonka tavoitteena on luoda wikipohjainen kaikkien kielten välinen vapaa sanakirja.", - "wikiversity":"Wikiopisto on Wikimedia Foundationin hallinnoima hanke, joka sai alkunsa Wikikirjastossa ja on laajentunut omaksi hankkeekseen.", - "wikivoyage":"Wikimatkat on internetissä oleva matkaopas, jota muokkaavat vapaaehtoiset käyttäjät. Tällä hetkellä se on saatavissa 21 eri kielellä.", - "wikicommons.images":"Wikimedia Commons on Wikimedia Foundationin omistama erityinen säilytyspaikka avoimille ja vapaille kuville, äänille sekä muille multimediatiedostoille. Wikimedia Commonsissa olevia tiedostoja voi käyttää muissa Wikimedian palvelimilla toimivissa projekteissa, kuten Wikipediassa, Wikikirjastossa tai Wikisanakirjassa.", - "wolframalpha":"Wolfram Alpha on Wolfram Researchin kehittelemä haku- ja vastauskone, joka julkaistiin 15.5.2009. Wolfram Alphan toiminta pohjautuu Wolfram Researchin kehittelemään Mathematica-laskentaohjelmaan tiedon etsimisessä ja käsittelyssä.", - "dictzone":[ - "Online-sanakirjat: englanti, espanja, saksa, ranska, italia, unkari... Valitse suosikkisanakirjasi!", - "https://dictzone.com/" - ], - "wttr.in":[ - "Säätiedotus: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave on ilmainen ja avoimen lähdekoodin verkkoselain, jonka on kehittänyt Brave Software Inc. Se perustuu Googlen Chromium-verkkoselainprojektiin, jonka päälle myös Google Chrome on rakennettu. Brave on yksityisyyteen keskittyvä selain ja se estää häiritsevät mainosbannerit ja ikkunat ja vähentää netissä seuraamista. Se tarjoaa myös käyttäjille mahdollisuuden ottaa käyttöön valinnaiset ​​mainokset, jotka maksaa käyttäjille mainosten katsomisesta Basic Attention Token (BAT) kryptovaluutan muodossa. Käyttäjät voivat lähettää lahjoituksia verkkosivustoille ja sisällöntuottajille.", - "brave.images":[ - "brave:fi", - "ref" - ], - "brave.videos":[ - "brave:fi", - "ref" - ], - "brave.news":[ - "brave:fi", - "ref" - ] - }, - "fil":{ - "bandcamp":"Ang Bandcamp ay isang Amerikanong online music company na itinatag noong 2008 ni Oddpost co-founder Ethan Diamond at mga programmer na sina Shawn Grunberger, Joe Holt at Neal Tucker; ang kumpanya ay headquarter sa Oakland, California.", - "wikipedia":"Ang Wikipedia ay isang ensiklopedya na may basehang wiki at may malayang nilalaman. Ito ay tinatawag na malaya sa kadahilanang ito ay malayang magagamit at mapapalitan ng kung sino man. Ang Wikipedia ay nakasulat sa maraming wika at pinamamahalaan ng Wikimedia Foundation.", - "bing images":[ - "Tingnan ang feed na inakma sa iyong mga interes", - "https://www.bing.com/images" - ], - "bing news":[ - "Balita mula sa buong daigdig, bansa, at lokal, organisado para bigyan ka ng malawakang coverage ng sports, entertainment, negosyo, pulitika, panahon, at marami pang iba.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Pinapadali ng matalinong paghahanap mula sa Bing na mabilis na mahanap ang iyong hinahanap at binibigyan ka ng reward.", - "https://www.bing.com/videos" - ], - "wikidata":"Ang Wikidata ay isang internet na wiki na pagkalagay ng datos sa mga wikang pag-aari ng Pundasyong Wikimedia.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Ang Google Search, karaniwang tinutukoy bilang Google Web Search o Google lamang, ay isang web search engine na pagmamay-ari ng Google LLC Ito ang pinakamadalas gamiting search engine o panghanap sa World Wide Web, na mayroong higit sa tatlong bilyong mga paghahanap bawat araw.", - "google images":[ - "Google Images. Ang pinakamalawak na paghahanap ng imahe sa web.", - "https://images.google.com" - ], - "google news":"Ang Google News ay isang serbisyong aggregator ng balita na binuo ng Google. Nagpapakita ito ng tuluy-tuloy na daloy ng mga link sa mga artikulong inayos mula sa libu-libong mga publisher at magazine. Available ang Google News bilang isang app sa Android, iOS, at sa Web.", - "google scholar":[ - "Nagbibigay ang Google Scholar ng simpleng paraan ng malawakang paghahanap ng mga babasahing iskolar. Maghanap sa iba't ibang disiplina at source: mga artikulo, thesis, aklat, abstract, at opinyon ng hukuman.", - "https://scholar.google.com" - ], - "google play apps":"Ang Google Play, dating Android Market, ay isang digital distribution service na pinatatakbo at binuo ng Google. Nagsisilbi itong opisyal na app store para sa Android operating system, na nagbibigay-daan sa mga user na mag-browse at mag-download ng mga application na binuo gamit ang Android software development kit (SDK) at na-publish sa pamamagitan ng Google. Gumagana rin ang Google Play bilang isang digital media store, na nag-aalok ng musika, mga aklat, pelikula at programa sa telebisyon. Dati nitong inaalok ang Google hardware para sa pagbili hanggang sa pagpapakilala ng isang hiwalay na online na retailer ng hardware, ang Google Store, noong Marso 11, 2015, at nag-alok din ng mga publikasyon at magazine ng balita bago ang overhaul ng Google News noong Mayo 15, 2018.", - "google play movies":[ - "google play apps:fil", - "ref" - ], - "imdb":"Ang Internet Movie Database (IMDb) at IMDB, ay isang online database ng impormasyon tungkol sa mga artista, pelikula, palatuntunan sa telebisyon at video games. Ang websayt ng IMDb ay nagsimula noong Setyembre 1993. Naging pagmamay-ari ito ng \"Amazon.com\" mula 1998.", - "odysee":[ - "dî-sentralisadong plataformang pambideo", - "wikidata" - ], - "pinterest":"Ang Pinterest ay isang portal at websayt na nagsisilbing lagusan papunta at nagserbisyo sa websayt sa tahanang pahina (homepage), Dito ay may iba't ibang larawan na makikita, katulad sa Instagram akawnt na inilabas noong 2010. Ang Pinterest ay inilathala nina Ben Silbermann, Paul Sciarra at Evan Sharp noong Disyembre 2009 sa San Francisco, California, Estados Unidos na may higit na 1,600 na empleyado..", - "youtube":"Ang YouTube ay isang website na nagbabahagi ng mga bidyo at nagbibigay-daan para sa mga tagagagamit o user nito na mag-upload, makita, at ibahagi ang mga bidyo clip. Ang mga bidyo na ito ay maaaring husgahan; ang dami ng husga at ng mga nakanood ay parehong nakalathala. Maaari ring mag-iwan ng komento ang mga manonood sa karamihan ng video.", - "vimeo":"Ang Vimeo ay isang Amerikan portal na websayt na bidyo punong abala at namamahagi ang himpilan nito ay matatagpuan sa Lungsod ng Bagong York, Bagong York noong Nobyembre 2004 na inilathala nina Zach Klein, Jake Lodwick katuwang si Anjali Sud (Indian-American), ang (CEO) ng Vimeo.", - "wikibooks":"Ang Wikibooks ay isang base ng wiki sa Wikimedia project na pag-aari ng Wikimedia Foundation, para sa lumikha ng malayang nilalaman na textbooks o aklat na pwedeng sa lahat na pagbabago.", - "wikinews":"Ang Wikinews ay isang pook-sapot na wiki na tungkol sa isang balita na isang proyekto ng Pundasyon ng Wikimedia. Ito ay binuksan noong Nobyembre 8, 2004.", - "wikiquote":"Ang Wikiquote ay isa sa mga pamilya ng proyektong nakabatay sa wiki na pinapatakbo ng Pundasyong Wikimedia, na tumatakbo sa software na MediaWiki. Batay sa ideya ni Daniel Alston at ipinapatuapd ni Brion Vibber, ang hangarin ng proyekto, na nagsimula bilang isang sibol sa Tanyag na mga Pagbanggit ng Wikipedia, ay upang makagawa ng tulong-tulong na isang malawak na reprerensya ng mga pagbanggit mula sa mga prominenteng tao, aklat, pelikula, kasabihan, atbp. at upang maging maayos hangga't maari sa pagsasaalang-alang sa mga detalye ng mga banggit at makapagbigay din ng nararapat sangguniang mula sa tao ng mga pagbanggit.", - "wikisource":"Ang Wikisource ay isang online na dihital na aklatan ng malayang nilalaman na pinagmulang teksto na nasa isang wiki, na pinapatakbo ng Pundasyong Wikimedia. Wikisource ang pangalan ng proyekto bilang kabuuan at ang pangalan ng bawat instansya ng proyektong iyon ; binubuo ng maraming mga Wikisource ang kabuuang proyekto ng Wikisource. Ang layunin ng proyekto ay i-host o ilagay ang lahat ng anyo ng malayang teksto, sa maraming wika, at mga salin. Orihinal na inisip bilang sinupan o arkibo upang iimbak ang kapaki-pakinabang o mahalagang tekstong makasaysayan, napalawak ito upang magng pangkalahatang-nilalamang aklatan. Opisyal na nagsimula ang proyekto noong Nobyembre 24, 2003 sa ilalim ng pangalang Project Sourceberg, isang paglaro sa pangalan ng sikat na Project Gutenberg. Ipinagtibay ang pangalang Wikisource sa kalaunang taon na iyon at nakatanggap ng sariling dominyong pangalan.", - "wikispecies":"Ang Wikispecies ay isang wiki na itinataguyod ng Pundasyong Wikimedia na nagnanais makalikha ng malayang nilalaman ng isang talaan ng lahat ng mga species o uri (espesye). Ito ay may mas malaking layunin sa mga sayantipiko kaysa sa pangkalahatang publiko. Sinasabi ni Jimmy Wales, chairman emeritus ng Wikimedia Foundation na ang mga editor ay hindi kinakailangan na magpadala ng kanilag mga degree, ngunit ang pagbibigay ng impormasyon ay dapat sa mga teknikal na madla. Ang Wikispecies ay nasa ilalim ng GNU Free Documentation License.", - "wiktionary":"Ang Wiktionary ay isang Multilingual o lahukan ng maraming kaurian ng mga salita, ang Web-based na proyekto na lumikha ng isang libreng o bukas na nilalamang talatinigan para sa mga mambabasa, na magagamit sa higit sa 151 mga wika. Hindi tulad ng ibang talatinigan, ito ay sa pamamagitan ng nakasulat na boluntaryo, na tinatawag na mga \"Wiktionarian\" o mga Wiksiyonarista o Wiksiyonaryano kung lalaki at Wiksiyonaryana kung babae, na gamit ang sopwer ng wiking nagpapahintulot sa mga artikulong mabago o patnugutan ng halos sinumang maaaring pumunta o may akseso sa websayt.", - "wikiversity":"Ang Wikiversity ay isang proyektong Pundasyon ng Wikimedia na sinimulan noong Agosto 15, 2006.", - "wikivoyage":"Ang Wikivoyage ay isang malayang basehang web na travel guide para sa distinasyon ng paglakbay at ang mga topic na tungkol sa paglakbay na sinulat ng mga volunteer authors.", - "wikicommons.images":"Ang Wikimedia Commons ay isang imbakan ng larawan, tunog at ibang talaksang multimidya na may malayang nilalaman. Proyekto ito ng Wikimedia Foundation. Nagagamit ang mga talaksang ikinarga sa imbakan katulad ng mga naikarga sa lokal na wiki sa lahat ng mga ibang proyekto sa mga serbidor ng Wikimedia, kabilang ang Wikipedia, Wikibooks at Wikinews." - }, - "fr":{ - "9gag":"9gag est un site web communautaire humoristique, rédigé généralement en anglais. Il est basé sur le partage d'images et vidéos. Ce site met en ligne un grand nombre de mèmes Internet. C'est le 172e site le plus visité du web en novembre 2016, selon Alexa.", - "apple app store":"L'App Store est un magasin d'applications développé et géré par Apple sur iOS et iPadOS. Le magasin permet aux utilisateurs de parcourir et de télécharger les applications approuvées développées avec le SDK d'iOS. Les applications peuvent être téléchargées les iPhone, iPod Touch ou iPad et même certaines sur l'Apple Watch ou sur les Apple TV de quatrième génération comme extensions aux applications.", - "artic":"L'Art Institute of Chicago est un musée situé à Chicago aux États-Unis. Deuxième plus grand musée d'art du pays après le Metropolitan Museum of Art de New York, il abrite l'une des plus importantes collections d'art des États-Unis. Ouvert au public depuis 1879, le musée fut établi initialement à l'angle sud-ouest de State Street et de Monroe Street. Lors de l'Exposition universelle de 1893, la ville construisit un nouveau bâtiment pour abriter les collections de l'Art Institute. Depuis 1893, le musée se trouve dans le Grant Park, au 111 South Michigan Avenue, dans le centre-ville de Chicago. Le musée fait face au Peoples Gas Building et au Symphony Center, deux bâtiments classés sur le Registre national des lieux historiques.", - "arxiv":"arXiv est une archive ouverte de prépublications électroniques d'articles scientifiques dans les domaines de la physique, des mathématiques, de l'informatique, de la biologie quantitative, de la finance quantitative, de la statistique, de l'ingénierie électrique et des systèmes, et de l'économie, et qui est accessible gratuitement par Internet.", - "bandcamp":"Bandcamp est un magasin de musique en ligne qui s'adresse principalement aux artistes indépendants.", - "wikipedia":"Wikipédia est une encyclopédie en ligne collaborative, généraliste et multilingue créée par Jimmy Wales et Larry Sanger le 15 janvier 2001. Il s'agit d'une œuvre libre, c'est-à-dire que chacun est libre de l'amender et de la rediffuser. Gérée en wiki dans le site web wikipedia.org grâce au logiciel MediaWiki, elle permet à tous les internautes d'écrire et de modifier des articles, ce qui lui vaut d'être qualifiée d'encyclopédie participative. Elle est devenue en quelques années l'encyclopédie la plus fournie et la plus consultée au monde.", - "bilibili":"Bilibili est un site de partage de vidéos sur le thème des fandom d'anime, de manga et de jeux vidéo basé en Chine, où les utilisateurs peuvent soumettre, visionner et ajouter des commentaires qui s'affichent sur les vidéos. bilibili utilise un lecteur Adobe Flash ou HTML5, qui peut être basculé manuellement, pour lire des vidéos proposées par des utilisateurs hébergés par le site lui-même ou des sources tierces, tout en disposant d'un système de sous-titrage superposé en temps réel pour une expérience de lecture interactive.", - "bing":"Microsoft Bing, est un moteur de recherche élaboré par la société Microsoft. Il a été rendu public le 3 juin 2009.", - "bing images":[ - "bing:fr", - "ref" - ], - "bing news":[ - "Les actualités internationales, nationales et locales sont organisées de façon à vous donner une vision détaillée du monde du sport, du divertissement, de l'économie, la politique, la météo et bien plus encore.", - "https://www.bing.com/news" - ], - "bing videos":[ - "La recherche intelligente de Bing facilite la recherche rapide et vous récompense.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket est un service web d'hébergement et de gestion de développement logiciel utilisant le logiciel de gestion de versions Git.", - "crossref":"Crossref est une organisation à but non lucratif de droit américain jouant le rôle d'agence d'enregistrement et de registre des Digital Object Identifier. Lancée au début des années 2000 dans un effort de coopération entre les éditeurs, afin de permettre l'identification des objets numériques, notamment les articles et les revues académiques en ligne. Crossref est le nom commun utilisé par la Publishers International Linking Association (PILA). En 2019, l'agence comptait près de 14 800 adhérents issus de 120 pays.", - "currency":"DuckDuckGo est un moteur de recherche américain qui vise à préserver la vie privée de ses utilisateurs et à leur éviter la bulle de filtres.", - "deezer":"Deezer est une plateforme française de distribution numérique dédiée à l'écoute de musique en streaming et qui a été lancée en août 2007. Ce service permet l'écoute de musiques et podcasts, issus d'un catalogue négocié avec les labels regroupant plus de 90 millions de titres en 2022. Deezer éditorialise son contenu par l'établissement de playlists ainsi que son algorithme Flow, qui recommande de nouveaux morceaux selon les goûts musicaux de l’utilisateur.", - "deviantart":"DeviantArt est un site web dédiée à la création artistique d'œuvres et de dessins sous format numérique. Les internautes inscrits forment une communauté artistique en ligne, où chacun peut s'inscrire et exposer ses propres créations, graphiques ou littéraires. Le jour de son 15e anniversaire, le site comptait plus de 36,4 millions d'inscrits et plus de 200 millions de deviations.", - "ddg definitions":[ - "currency:fr", - "ref" - ], - "erowid":"Erowid, aussi appelé Erowid Center, est une organisation américaine à but non lucratif qui a pour but de fournir des informations sur les psychotropes naturels ou synthétiques, qu'ils soient légaux ou non, mais aussi sur les méthodes et pratiques censées permettre l'accès aux états modifiés de conscience comme la méditation ou le rêve lucide.", - "wikidata":"Wikidata est une base de connaissances librement améliorable, conçue pour centraliser les données utilisées par les différents projets du mouvement Wikimédia. Une mise à jour d'une fiche Wikidata se répercute automatiquement sur toutes les pages de projets Wikimédia qui y font appel. Plus largement, Wikidata est destiné à fournir une source commune de données objectives, telles que les dates de naissance de personnalités ou le produit intérieur brut des pays.", - "duckduckgo":[ - "currency:fr", - "ref" - ], - "duckduckgo images":[ - "currency:fr", - "ref" - ], - "duckduckgo videos":[ - "currency:fr", - "ref" - ], - "duckduckgo news":[ - "currency:fr", - "ref" - ], - "duckduckgo weather":[ - "currency:fr", - "ref" - ], - "apple maps":"Apple Plans est une application de cartographie en ligne développée par Apple. Il s'agit de l'application de cartographie par défaut sur iOS, iPadOS, macOS et watchOS. Elle permet de donner les directions et l'heure d'arrivée estimée que l'on soit en voiture, à pied, ou en transport en commun. Une fonctionnalité appelée « tour Flyover » permet d'explorer certaines zones urbaines et autres points d'intérêt modélisés en 3D.", - "tineye":"TinEye est un site web canadien de recherche d'image par le contenu, créé en 2008 par l'entreprise Idée, Inc., elle-même fondée en 1999. En octobre 2012, le site affirme posséder une base de données de plus de deux milliards d’entrées et affirme en ajouter dix millions chaque mois. TinEye permet la recherche d’images déjà publiées sur Internet.", - "etymonline":"L’Online Etymology Dictionary est un dictionnaire étymologique pour la langue anglaise publié en ligne et de consultation gratuite.", - "fdroid":"F-Droid est un magasin d'applications libres pour les systèmes d’exploitation Android et dérivés, comme Replicant sur lequel il est installé par défaut. Il est promu par la Free Software Foundation Europe.", - "flickr":"Flickr, de l'anglais « to flick through » signifiant « feuilleter », est un site web de partage de photographies et de vidéos gratuit, avec certaines fonctionnalités payantes. En plus d'être un site web populaire auprès des utilisateurs pour partager leurs photos personnelles, il est aussi souvent utilisé par des photographes professionnels. En août 2011, le site a franchi la barre des 6 milliards de photos hébergées. En février 2017, le site héberge approximativement 13 milliards de photos pour 122 millions de membres et 2 millions de groupes.", - "free software directory":"Le répertoire du logiciel libre est un projet commun de la Free Software Foundation et de l'UNESCO. Il recense des logiciels libres qui fonctionnent sous des systèmes d'exploitation libres notamment GNU et GNU/Linux.", - "genius":"Genius est un site web américain lancé en 2009 consacré au départ à l'explication des paroles de chansons rap. Plus tard, en 2014, il élargira son domaine et annotera - le changement sémantique marquant plus d'humilité dans l'approche des textes - l'actualité, la pop, le rap, la country, les sports, la loi, entre autres. Pour tenir ses objectifs le site est rebaptisé Genius en juillet 2014.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab est un logiciel libre de forge basé sur git proposant les fonctionnalités de wiki, un système de suivi des bugs, l’intégration continue et la livraison continue. Développé par GitLab Inc et créé par Dmitriy Zaporozhets et par Valery Sizov, le logiciel est utilisé par plusieurs grandes entreprises informatiques, dont IBM, Sony, le centre de recherche de Jülich, la NASA, Alibaba, Oracle, Invincea, O’Reilly Media, Leibniz Rechenzentrum, le CERN, European XFEL, la GNOME Foundation, Boeing, Autodata, SpaceX, Symbio et Altares.", - "github":"GitHub est un service web d'hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git. Ce site est développé en Ruby on Rails et Erlang par Chris Wanstrath, PJ Hyett et Tom Preston-Werner. GitHub propose des comptes professionnels payants, ainsi que des comptes gratuits pour les projets de logiciels libres.", - "google":"Google /ˈgu.gəl/ est un moteur de recherche gratuit et libre d'accès sur le World Wide Web, ayant donné son nom à la société Google. C'est aujourd'hui le moteur de recherche et le site web le plus visité au monde : 90 % des internautes l'utilisaient en 2018.", - "google images":"Google Images est un service proposé depuis 2001 par le moteur de recherche Google pour permettre de trouver sur le web des images en rapport avec un sujet donné.", - "google news":"Google Actualités ou Google News est un service en ligne gratuit de Google qui présente de façon automatisée des articles d'information en provenance de sources sur le Web. Il fonctionne de la même manière qu'un moteur de recherche, en n'indexant que les articles de presse. Ce service, disponible dans vingt-deux pays, a été créé en avril 2002. La partie française du service est sortie de son statut bêta le 14 mai 2009. En juin 2017, Google change le design de Google Actualités pour une version plus épurée et plus claire pour l'utilisateur. Elle propose également des articles dont les faits sont vérifiés dans la version américaine.", - "google videos":"Google Vidéos est un service de partage et de visionnage de vidéos[pas clair] proposé par Google du 12 juillet 2006 au 29 avril 2011.", - "google scholar":"Google Scholar est un service de Google permettant la recherche d'articles et de publications scientifiques. Lancé fin 2004, il inventorie des articles approuvés ou non par des comités de lecture, des thèses de type universitaire, des citations ou encore des livres scientifiques.", - "google play apps":"Google Play est une suite d'applications créée par Google le 22 octobre 2008 par fusion des services Android Market, Google Movies, Google ebookstor et Google Music. Elle regroupe Play Store, le magasin d'applications officiel pour les appareils fonctionnant sous Android et Chrome OS, Play Films et séries, une boutique de location de films et de séries télévisées, Play Livres, une boutique d'achat en ligne de livres et de magazines, et Play Jeux, un service de sauvegarde, de récompense et de défis autour des jeux mobiles disponibles sur le Play Store.", - "google play movies":[ - "google play apps:fr", - "ref" - ], - "gpodder":"gPodder est un logiciel libre spécialisé, permettant la lecture d'un ensemble de flux de podcasts audio et vidéo.", - "hackernews":"Hacker News est un site de partage social de liens créé le 19 février 2007, avec pour objectif de créer une communauté proche de celle de Reddit à ses débuts tout en évitant le phénomène de septembre éternel. Il est centré autour de l'actualité des technologies informatiques, du hacking et des startups, et promeut tout contenu susceptible de « gratifier la curiosité intellectuelle » des lecteurs.", - "hoogle":"Haskell est un langage de programmation fonctionnel fondé sur le lambda-calcul et la logique combinatoire. Son nom vient du mathématicien et logicien Haskell Curry. Il a été créé en 1990 par un comité de chercheurs en théorie des langages intéressés par les langages fonctionnels et l'évaluation paresseuse. Le dernier standard est Haskell 2010 : c'est une version minimale et portable du langage conçue à des fins pédagogiques et pratiques, dans un souci d'interopérabilité entre les implémentations du langage et comme base de futures extensions. Le langage continue d'évoluer en 2020, principalement avec GHC, constituant ainsi un standard de facto comprenant de nombreuses extensions.", - "imdb":"L’Internet Movie Database, abrégé en IMDb, est une base de données en ligne sur le cinéma mondial, sur la télévision, et plus secondairement les jeux vidéo. IMDb restitue un grand nombre d’informations concernant les films, les acteurs, les réalisateurs, les scénaristes et toutes personnes et entreprises intervenant dans l’élaboration d’un film, d’un téléfilm, d’une série télévisée ou d’un jeu vidéo. L’accès aux informations publiques est gratuit. Un service payant, IMDbPro, donne accès aux informations supplémentaires susceptibles d’intéresser les professionnels. Créé le 17 octobre 1990 par l'Anglais Col Needham, c’est un site visité, en 2010, par plus de 57 millions d’usagers uniques chaque mois, ce qui le plaçait au 39e rang des sites les plus visités au monde. Il appartient depuis 1998 à Amazon.", - "imgur":"imgur est une société américaine fondée par Alan Schaaf en 2009 qui exploite un site d'hébergement d'images.", - "ina":"L'Institut national de l'audiovisuel (INA) est un établissement public à caractère industriel et commercial français ayant pour mission principale d'archiver les productions audiovisuelles et de produire, d'éditer, de publier, de commercialiser et de distribuer des contenus audiovisuels et multimédias à destination de tous les publics, professionnels, entreprises ou particuliers, pour tous les écrans ou plateformes de diffusion, y compris audio. L'INA comprend également un centre de formation et de recherche visant à développer et transmettre les savoirs et expertises dans les domaines de l'audiovisuel, des médias et du numérique.", - "kickass":"KickassTorrents est un annuaire web de fichiers torrent et de liens magnet destiné à faciliter le partage de fichiers. Le site a été fondé en 2008 et a été mis hors ligne le 20 juillet 2016, lorsque le domaine a été saisi par le gouvernement des États-Unis. Les sites proxy ont été fermés par les membres de son équipe le même jour. Le 16 décembre 2016, KickassTorrents est de retour en ligne sur une nouvelle adresse: KATcr.co créée par l'équipe originale.", - "lemmy communities":"Lemmy est un logiciel libre et open-source qui exécute de l'agrégation d'actualités sociales et des forums de discussion auto-hébergés.", - "lemmy users":[ - "lemmy communities:fr", - "ref" - ], - "lemmy posts":[ - "lemmy communities:fr", - "ref" - ], - "lemmy comments":[ - "lemmy communities:fr", - "ref" - ], - "library genesis":"Library Genesis ou LibGen est un moteur de recherche d'articles et de livres scientifiques qui facilite l'accès aux contenus soumis à un péage. Il diffuse notamment les fichiers PDF du portail Web ScienceDirect d'Elsevier.", - "z-library":"Z-Library est un miroir de Library Genesis, une bibliothèque virtuelle permettant l'accès par partage de fichiers à des articles de revues scientifiques, des textes universitaires et des livres d'intérêt général. La plupart de ses ouvrages proviennent de Library Genesis, tandis que certains sont mis en ligne directement sur son site par des particuliers. Les utilisateurs peuvent également contribuer au dépôt du site afin de rendre la littérature accessible au plus grand nombre.", - "library of congress":"La bibliothèque du Congrès, située à Washington, assure la fonction de bibliothèque de recherche du Congrès des États-Unis et, de facto, constitue la bibliothèque nationale américaine.", - "mastodon users":"Mastodon est un réseau social et logiciel de microblogage auto-hébergé, libre, distribué et décentralisé via ActivityPub au sein du Fediverse. Il permet de partager des messages, images, médias et autres contenus. C'est une alternative à Twitter. Des instances sont publiquement mises à disposition afin de faciliter son utilisation. Il a été créé en octobre 2016 par l'Allemand Eugen Rochko, alors âgé de 24 ans. En 2022, l’organisation à but non-lucratif Mastodon gGmbH est créée, ainsi que des application mobiles officielles pour le réseau.", - "mastodon hashtags":[ - "mastodon users:fr", - "ref" - ], - "metacpan":"Le Comprehensive Perl Archive Network, ou CPAN, est un site Web consacré au langage de programmation Perl. CPAN désigne également un module Perl servant à accéder à ce site. Son nom vient du Comprehensive TeX Archive Network, ou CTAN, son homologue consacré à TeX.", - "mixcloud":"Mixcloud est une plate-forme collaborative de partage et d'écoute de musique en ligne spécialement dédiée aux sessions de mixage enregistrées en studio diffusées en radio ou en podcast. The Guardian et TED utilisent la plate-forme.", - "npm":"npm est le gestionnaire de paquets par défaut pour l'environnement d'exécution JavaScript Node.js.", - "odysee":"Odysee est un site d'hébergement de vidéos créé en septembre 2020 par le libertarien américain Jeremy Kauffman. Il repose sur le protocole LBRY qui est décentralisé grâce à de la diffusion pair-à-pair.", - "openstreetmap":"OpenStreetMap (OSM) est un projet collaboratif de cartographie en ligne qui vise à constituer une base de données géographiques libre du monde, en utilisant le système GPS et d'autres données libres. Il est mis en route en juillet 2004 par Steve Coast à l'University College de Londres.", - "pinterest":"Pinterest est un site web américain mélangeant les concepts de réseautage social et de partage de photographies, lancé en 2010 par Paul Sciarra, Evan Sharp (en) et Ben Silbermann (en). Il permet à ses utilisateurs de partager leurs centres d'intérêt et passions à travers des albums de photographies glanées sur Internet. Le nom du site est un mot-valise des mots anglais pin et interest signifiant respectivement « épingle » et « intérêt ».", - "piratebay":"The Pirate Bay est un site web créé en 2003 en Suède, indexant des liens Magnets de fichiers numériques, permettant le partage de fichiers en pair à pair à l’aide du protocole de communication BitTorrent. Le site se finance par les dons et la publicité, il a été créé dans l’esprit d’une « culture libre ».", - "pubmed":"MEDLINE est une base de données bibliographiques regroupant la littérature relative aux sciences biologiques et biomédicales. La base est gérée et mise à jour par la Bibliothèque américaine de médecine (NLM).", - "pypi":"PyPI est le dépôt tiers officiel du langage de programmation Python. Son objectif est de doter la communauté des développeurs Python d'un catalogue complet recensant tous les paquets Python libres. Il est analogue au dépôt CPAN pour Perl.", - "qwant":"Qwant est un moteur de recherche français mis en ligne en février 2013. Qwant annonce garantir la vie privée de ses utilisateurs en évitant de les tracer à des fins publicitaires et de revendre leurs données personnelles, et à être impartial dans l'affichage des résultats.", - "qwant news":[ - "qwant:fr", - "ref" - ], - "qwant images":[ - "qwant:fr", - "ref" - ], - "qwant videos":[ - "qwant:fr", - "ref" - ], - "reddit":"Reddit est un site web communautaire américain de discussion et d’actualités sociales. Les liens les plus appréciés du moment se trouvent affichés en page d’accueil par le vote des utilisateurs.", - "soundcloud":"SoundCloud est une plate-forme de distribution audio en ligne sur laquelle les utilisateurs peuvent collaborer ainsi que promouvoir et distribuer leurs projets musicaux. En juin 2013, le site compte 40 millions d'inscrits et 200 millions de visiteurs uniques par mois.", - "stackoverflow":"Stack Exchange est un réseau de sites anglophones de questions et réponses à édition collaborative, chacun traitant d'un thème particulier. Deux exemples sont les sites Stack Overflow, dont le thème est la programmation informatique, et Ask Ubuntu(en), qui offre des réponses aux problèmes rencontrés sur le système d'exploitation Ubuntu.", - "askubuntu":[ - "stackoverflow:fr", - "ref" - ], - "superuser":[ - "stackoverflow:fr", - "ref" - ], - "framalibre":[ - "annuaire de logiciels libres francophone", - "wikidata" - ], - "semantic scholar":"Semantic Scholar est un projet développé à l'Institut Allen pour l'Intelligence Artificielle, un des instituts de recherche créés par Paul Allen. Lancé en novembre 2015, il est conçu pour être un moteur de recherche d'articles de revues scientifiques sur l'IA.", - "startpage":"Startpage est un métamoteur de recherche sur le Web. Sa spécificité est censément le respect de la vie privée de l'utilisateur et affirme ne conserver aucune trace numérique des recherches effectuées, pas même l'adresse IP. Il était précédemment connu sous le nom d'Ixquick, Startpage étant alors une variante du site principal. Les deux services fusionnent en 2016.", - "tagesschau":"Le Tagesschau est le plus ancien journal télévisé allemand diffusé sur la première chaîne allemande, Das Erste.", - "unsplash":"Unsplash est un site web dédié au partage de photos sous licence Unsplash. Il est basé à Montréal, la capitale économique du Québec.", - "yahoo news":"Yahoo! Actualités est un service en ligne gratuit de Yahoo! qui présente des articles d'information en provenance de nombreuses sources et, notamment, d'agences de presse.", - "youtube":"YouTube est un site web d'hébergement de vidéos et média social sur lequel les utilisateurs peuvent envoyer, regarder, commenter, évaluer et partager des vidéos en streaming.", - "dailymotion":"Dailymotion est une entreprise française, filiale du groupe Vivendi, proposant, sur le site web du même nom, un service d'hébergement, de partage et de visionnage de vidéo en ligne.", - "vimeo":"Vimeo est un site web communautaire destiné au partage et au visionnage de vidéos réalisées par les utilisateurs. Ce site a été lancé en novembre 2004 en tant que division de Connected Ventures, qui appartenait également CollegeHumor, pour ensuite devenir une filiale du groupe américain IAC (InterActiveCorp) en août 2006. Depuis mai 2021, Vimeo est une compagnie indépendante.", - "wikibooks":"Wikibooks ou Wikilivres est un guide pratique multilingue et multidisciplinaire en ligne, géré en wiki grâce au moteur MediaWiki.", - "wikinews":"Wikinews est un site d'actualité multilingue et participatif, géré en wiki grâce au moteur MediaWiki.", - "wikiquote":"Wikiquote est un site web multilingue dont l'objectif est de créer et d'améliorer des recueils de citations. Il est géré en wiki grâce au moteur MediaWiki.", - "wikisource":"Wikisource est une bibliothèque numérique de textes du domaine public, gérée en wiki grâce au moteur MediaWiki. Comme Wikipédia, elle est hébergée par la fondation Wikimédia et son contenu est librement améliorable.", - "wikispecies":"Wikispecies est un répertoire nomenclatural en ligne destiné à recenser les espèces du vivant : animales, végétales, bactériennes, fongiques, voire virales. Il est géré en wiki grâce au moteur MediaWiki.", - "wiktionary":"Le Wiktionnaire est un projet lexicographique de la Wikimedia Foundation dont l’objectif est de définir tous les mots de toutes les langues, dans toutes les langues. Il existe plus de 150 langues de rédaction. Le terme « Wiktionnaire » désigne la version en français de ce projet, Wiktionary étant le nom officiel en anglais. Il est géré en wiki dans le site web wiktionary.org et son contenu est librement réutilisable.", - "wikiversity":"Wikiversité est un site web participatif de ressources éducatives libres. Multilingue et ouvert à tous, il est géré en wiki grâce au moteur MediaWiki.", - "wikivoyage":"Wikivoyage est un site web multilingue dont l'objectif est de créer et d'améliorer des guides touristiques. Il est géré en wiki grâce au moteur MediaWiki.", - "wikicommons.images":"Wikimedia Commons est une médiathèque en ligne d'images, de sons, d'autres médias audiovisuels et de données JSON sous licence libre. Elle centralise des médias libres, tels que photographies, dessins, schémas, partitions, cartes géographiques, textes écrits et parlés, animations et vidéos, objets 3D qui ont une utilité pour au moins un des projets de Wikimedia. En janvier 2023, elle passe la barre des 90 millions de fichiers hébergés.", - "wolframalpha":"Wolfram|Alpha est un outil de calcul en langage naturel développé par la société internationale Wolfram Research. Il s'agit d'un service internet qui répond directement à la saisie de questions factuelles en anglais par le calcul de la réponse à partir d'une base de données, au lieu de procurer une liste de documents ou de pages web pouvant contenir la réponse. Son lancement a été annoncé en mars 2009 par le physicien et mathématicien britannique Stephen Wolfram et il a été lancé le 16 mai 2009 à 3 h du matin.", - "dictzone":[ - "Dictionnaires en ligne : anglais, espagnol, allemand, français, italien, hongrois...", - "https://dictzone.com/" - ], - "1337x":"1337x est un site Web qui fournit un répertoire de fichiers torrent et de liens magnétiques utilisés pour le partage de fichiers peer-to-peer via le protocole BitTorrent. Selon le blog d'actualités TorrentFreak, 1337x est le troisième site Web torrent le plus populaire en 2021.", - "seznam":"Seznam est un portail web et un moteur de recherche tchèque. Il a été lancé en 1996. En novembre 2020, c'est le troisième site le plus visité en République tchèque.", - "mojeek":"Mojeek est un moteur de recherche basé au Royaume-Uni.", - "naver":"Naver est une plateforme en ligne sud-coréenne gérée par la société Naver Corporation. Le site a été créé en 1999 en tant que premier portail Web en Corée à développer et utiliser son propre moteur de recherche. Il a également été le premier opérateur au monde à introduire la fonction de recherche intégrée, qui compile les résultats de recherche de différentes catégories et les présente sur une seule page. Depuis, Naver a ajouté une multitude de nouveaux services telles que le courrier électronique et les nouvelles, puis aussi la première plateforme de questions-réponses en ligne Knowledge iN.", - "rubygems":"RubyGems est un gestionnaire de paquets pour le langage de programmation Ruby qui fournit un format standard pour la distribution de programmes et de bibliothèques Ruby. Il permet de gérer facilement l'installation de gemmes et d'un serveur pour les distribuer. Il a été créé par Chad Fowler, Jim Weirich, David Alan Black, Paul Brannan et Richard Kilmer lors de la RubyConf 2004.", - "peertube":"PeerTube est un logiciel libre d'hébergement de vidéo décentralisé permettant la diffusion en pair à pair, et un média social sur lequel les utilisateurs peuvent envoyer, regarder, commenter, évaluer et partager des vidéos en streaming. Il est créé en 2015 et est développé depuis 2017 par Framasoft. Il fonctionne sur le principe d'une fédération d'instances hébergées par des entités autonomes. Son objectif est de fournir une alternative aux plateformes centralisées telles que YouTube, Vimeo et plus récemment Twitch avec l'ajout de la prise en charge de la diffusion en direct.", - "yacy":"YaCy est un moteur de recherche libre fonctionnant selon le principe d'un réseau pair à pair. Ce logiciel est développé en Java et était installé, fin 2006, sur des centaines d'ordinateurs appelés YaCy-peers ou postes-YaCy. YaCy est par exemple utilisé par l'Université Johannes Gutenberg de Mayence.", - "yacy images":[ - "yacy:fr", - "ref" - ], - "rumble":"Rumble est une entreprise de plateforme de vidéo en ligne, d’hébergement web et de service d’infonuagique. Elle a été fondée en octobre 2013 par Chris Pavlovski, un entrepreneur technologique. La plate-forme vidéo est populaire parmi les auteurs de théories du complot et de l’extrême droite américaine (alt-right).", - "wikimini":"Wikimini est un site web de vulgarisation, en langue contrôlée, écrit en grande partie par des enfants de 7 à 14 ans. Œuvre libre, elle est gérée en wiki grâce au moteur MediaWiki auquel a été ajouté une interface plus colorée. Elle est écrite principalement en français, mais aussi en suédois.", - "wttr.in":[ - "Prévisions météo pour: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave est un navigateur web open source gratuit disponible sur Windows, macOS et Linux ainsi que sur iOS et Android. Il a pour objectif de protéger la vie privée de ses utilisateurs en bloquant par défaut les pisteurs et en permettant la navigation via le réseau Tor. Le logiciel, construit sur Chromium, est développé par l’entreprise Brave Software depuis 2016.", - "brave.images":[ - "brave:fr", - "ref" - ], - "brave.videos":[ - "brave:fr", - "ref" - ], - "brave.news":[ - "brave:fr", - "ref" - ], - "sourcehut":[ - "forge logicielle", - "wikidata" - ] - }, - "gl":{ - "apple app store":"A App Store é un servizo para o iPhone, iPod Touch, e o iPad, creado por Apple Inc, que permite aos usuarios buscar e descargar aplicacións, desenvolvidas co iOS SDK e publicadas por Apple. Estas aplicacións están dispoñibles para ser compradas ou gratuítas, dependendo de cada unha. As aplicacións poden ser descargadas directamente ao iPhone o ao iPod Touch por medio dunha aplicación do mesmo nome.", - "artic":"O Art Institute of Chicago é un museo e escola de arte situado en Grant Park, ao redor da costa do lago Michigan en Chicago. É un dos museos de arte máis importantes do mundo.", - "arxiv":"O arXiv é un repositorio de prepublicacións electrónicas, coñecidas como e-prints, de literatura científica nos campos das matemáticas, física, astronomía, ciencias da computación, bioloxía cuantitativa, estatística e finanzas, que poden ser consultadas en liña. En moitos campos das matemáticas e da física, a maioría das publicacións científicas son auto-arquivadas no repositorio de arXiv. Comezou o 14 de agosto de 1991, e arXiv.org superou o medio millón de artigos o 3 de outubro de 2008, e acadou o millón a finais de 2014. No 2014, a media de entradas novas medrou a máis de 8 000 ó mes.", - "bandcamp":"Bandcamp é unha compañía estadounidense de música en liña fundada no ano 2008 polo cofundador de Oddpost Ethan Diamond e os programadores Shawn Grunberger, Joe Holt e Neal Tucker. A empresa ten a súa sede en Oakland, California.", - "wikipedia":"A Wikipedia é un proxecto de enciclopedia de contido libre, multilingüe e de contido aberto operativo grazas á organización sen ánimo de lucro Fundación Wikimedia. O seu nome é unha mestura das palabras wiki e enciclopedia. Foi lanzada o 15 de xaneiro do ano 2001 por Jimmy Wales e Larry Sanger, e o seu obxectivo é recadar a suma de todo o coñecemento humano no maior número de linguas. En 2015 recibiu o Premio Princesa de Asturias de Cooperación Internacional e o Premio Erasmus.", - "bing":"Microsoft Bing é un buscador web de Microsoft. Presentado polo antigo director executivo de Microsoft, Steve Ballmer, o 28 de maio de 2009 na conferencia All Things Dixital en San Diego, foi posto en liña o 3 de xuño de 2009 cunha versión preliminar publicada o 1 de xuño do 2009.", - "bing images":[ - "bing:gl", - "ref" - ], - "bing news":[ - "Novas procedentes de fontes de noticias mundiais, nacionais e locais, organizadas para ofrecerche unha cobertura en profundidade das novas relacionadas co deporte, o entretemento, os negocios, a política, o tempo e moito máis.", - "https://www.bing.com/news" - ], - "bing videos":[ - "A busca intelixente de Bing fai que sexa máis rápido e sinxelo atopar o que estás a buscar e concédeche premios.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo e un buscador centrando relevancia da búsquea, e respectando a protección dos usuarios e privacidade. DuckDuckGo busca noutros sitios como Wikipedia é o principal Utiliza varias API doutros sitios web para mostrar resultados rápidos das consultas e para os enlaces tradicionais utiliza a axuda de sus socios e o seu propio rastreador.", - "ddg definitions":[ - "currency:gl", - "ref" - ], - "wikidata":"O Wikidata é unha base de datos editada de forma colaborativa, parte da Fundación Wikimedia, co obxectivo de proporcionar unha fonte común para certos tipos de datos, como datas de nacemento, que poden utilizar proxectos da Wikimedia como a Wikipedia. Isto é semellante á forma na que a Wikimedia Commons proporciona almacenamento para ficheiros multimedia e acceso a estes ficheiros en tódolos proxectos da Wikimedia.", - "duckduckgo":[ - "currency:gl", - "ref" - ], - "duckduckgo images":[ - "currency:gl", - "ref" - ], - "duckduckgo videos":[ - "currency:gl", - "ref" - ], - "duckduckgo news":[ - "currency:gl", - "ref" - ], - "duckduckgo weather":[ - "currency:gl", - "ref" - ], - "fdroid":[ - "repositorio de aplicacións para Android que só contén software libre", - "wikidata" - ], - "flickr":"Flickr é un popular servizo de almacenamento e difusión de fotografías en Internet.", - "genius":"Genius é unha empresa estadounidense de medios dixitais fundada en agosto de 2009 por Tom Lehman, Ilan Zechory e Mahbod Moghadam. O sitio permite aos usuarios achegar anotacións e interpretacións ás letras de cancións, noticias, fontes, poesías e documentos.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":[ - "plataforma de software para aloxar proxectos usando o sistema Git", - "wikidata" - ], - "google images":[ - "Google Imaxes. A busca máis completa de imaxes na rede.", - "https://images.google.com" - ], - "google scholar":"Google Académico é un motor de busca de Google enfocado e especializado na busca de contido e bibliografía científico-académica. O sitio indexa editoriais, bibliotecas, repositorios, bases de datos bibliográficas, entre outros; e entre os seus resultados pódense atopar citas, ligazóns a libros, artigos de revistas científicas, comunicacións e congresos, informes científico-técnicos, teses, tesiñas e arquivos depositados en repositorios.​", - "google play apps":"Google Play é unha plataforma de distribución dixital de aplicacións móbiles para os dispositivos con sistema operativo Android, así como unha tenda en liña desenvolvida e operada por Google. Esta plataforma permítelles aos usuarios navegar e descargar aplicacións, xogos, música, libros, revistas e películas. Tamén se poden adquirir dispositivos móbiles como ordenadores Chromebook, teléfonos intelixentes Nexus, Google Chromecast, entre outros.", - "google play movies":[ - "google play apps:gl", - "ref" - ], - "hoogle":"Haskell é unha linguaxe de programación puramente funcional de propósito xeral. O seu nome provén do lóxico Haskell Curry.", - "imdb":"A Internet Movie Database (IMDb) é unha base de datos en liña con información sobre directores, produtores, actores, películas, programas de televisión, videoxogos e case todo o relacionado coa industria fílmica privada e independente. Propiedade de Amazon desde 1998, IMDb celebrou o seu décimo quinto aniversario o 17 de outubro de 2005.", - "library of congress":"A Biblioteca do Congreso é unha biblioteca de investigación que serve oficialmente ó Congreso dos Estados Unidos de América, pero que é de facto a biblioteca nacional dos Estados Unidos.", - "mastodon users":"Mastodon é un servizo de microblogging distribuído que está en desenvolvemento dende 2016 polo alemán Eugen Rochko e Mastodon gGmbH, que el fundou en Jena e ten a súa sede en Berlín. En contraste coas grandes plataformas comparables como Twitter, Mastodon está deseñada como unha rede descentralizada. Polo tanto, o servizo non se basea nunha plataforma central, senón que consta de moitos servidores diferentes que poden ser operados de forma independente por particulares, asociacións ou outros organismos e que interactúan entre si.", - "mastodon hashtags":[ - "mastodon users:gl", - "ref" - ], - "openstreetmap":"OpenStreetMap é un proxecto aberto e colaborativo para crear mapas libres, gratuítos e editables. As trazas dos mapas créanse empregando información obtida de dispositivos GPS ou empregando fotografías aéreas ou de satélites e outras fontes como bases de datos da administración. Dende 2016 OSM emprega en España cartografía PNOA para mapeado e edición.", - "pinterest":[ - "plataforma de colección de imaxes", - "wikidata" - ], - "soundcloud":"SoundCloud é un servizo de streaming de música alemán que permite aos seus usuarios cargar, promocionar e compartir cancións. Fundado en 2007 por Alexander Ljung e Eric Wahlforss, SoundCloud é un dos maiores servizos de retransmisión de música do mundo e está dispoñible en 190 países e territorios. O servizo ten máis de 76 millóns de usuarios activos mensuais e tiña máis de 200 millóns de cancións a partir de novembro de 2021. SoundCloud ofrece subscricións gratuítas e de pago na plataforma, dispoñibles para dispositivos móbiles, de escritorio e Xbox. SoundCloud evolucionou dunha plataforma tradicional de retransmisión en liña a unha grande empresa de entretemento.", - "stackoverflow":[ - "rede de sitios web de preguntas e respostas", - "wikidata" - ], - "askubuntu":[ - "stackoverflow:gl", - "ref" - ], - "superuser":[ - "stackoverflow:gl", - "ref" - ], - "youtube":"YouTube é un espazo web que lles permite aos usuarios publicar, ver e compartir vídeos. Fundouse en febreiro de 2005 por tres antigos empregados de PayPal: Chad Hurley, Steve Chen e Jawed Karim. YouTube é un nome composto de you e tube, que quere dicir algo así como ti es a televisión.", - "dailymotion":"Dailymotion é un servidor de vídeos en Internet, con sede en París, Francia. O seu dominio foi rexistrado un mes despois que o de YouTube.", - "vimeo":"Vimeo é unha rede social de Internet baseada en vídeos, lanzada en novembro de 2004 pola compañía InterActiveCorp (IAC). O sitio permite compartir e almacenar vídeos dixitais para que os usuarios comenten na páxina de cada un deles. Os usuarios deben estar rexistrados para subir vídeos, crear os seus perfís, cargar avatares, comentar e armar listas de favoritos.", - "wikibooks":"Wikilibros é un proxecto irmán de Wikipedia e parte da Fundación Wikimedia, que empezou o 10 de xullo de 2003. O proxecto é unha colección de libros de texto, manuais e outros textos pedagóxicos de contido libre, que se escriben e editan colaborativamente do mesmo xeito que Wikipedia.", - "wikiquote":"Wikiquote é unha colección de citas soadas de personaxes famosos, libros e proverbios. Realízase de forma colaborativa a través de Internet, baixo a licenza libre GFDL, e baseándose en tecnoloxía wiki. Baséase nunha idea de Daniel Alston, implementada por Brion Vibber.", - "wikisource":"Wikisource é unha biblioteca dixital de fontes de texto libres en formato wiki, operado pola Wikimedia Foundation. O proxecto é un repositorio de obras no dominio público ou con licenza libre. O contido inclúe obras publicadas ou documentos históricos, que cumpran certos requisitos de verificabilidade. O concepto orixinal para o Wikisource foi o de ser un almacén de textos históricos útiles ou importantes, coa intención de dar apoio aos artigos da Wikipedia coma fonte primaria de evidencias e verificabilidade, e coma arquivo de seu. A colección tivo un enfoque inicial nos materiais históricos e culturais, distinguíndose doutros arquivos dixitais coma o Proxecto Gutenberg. A versión en lingua galega de Wikisource coñécese tamén como Galifontes.", - "wikispecies":"Wikispecies é un proxecto wiki da Fundación Wikimedia que pretende crear un directorio libre de especies. Está dirixido a científicos e non tanto a un público máis xeral. Comezou en agosto de 2004 e en maio de 2007 pasaba dos 100.000 artigos.", - "wiktionary":[ - "dicionario multilingüe online de contido libre", - "wikidata" - ], - "wikivoyage":"Wikivoyage é unha guía turística libre en Internet baseada na tecnoloxía wiki. Foi fundada en setembro do ano 2006 por autores alemáns de Wikitravel desconformes coas políticas dos donos do devandito sitio. Converteuse no wiki co tema viaxes máis popular en Alemaña, con máis de 8000 artigos, e en decembro do 2007 lanzouse a versión en italiano, que actualmente rolda os 1600 artigos. A mediados do 2012 a maior parte da comunidade en inglés de Wikitravel, incluíndo a maioría dos administradores, e a maioría da comunidade Wikivoyage buscou solucións para reunir as comunidades Wikitravel e Wikivoyage baixo un proxecto non comercial novo. Puxéronse en contacto coa Fundación Wikimedia para coñecer o seu interese en aloxar o proxecto, e destes contactos naceu unha proposta de guía de viaxes que foi aprobada pola WMF en outubro de 2012. Movéronse as páxinas ós servidores da WMF en decembro de 2012 e está programado o seu lanzamento oficial o 15 de xaneiro de 2013.", - "wikicommons.images":"Wikimedia Commons, abreviado decote como Wikicommons, é un proxecto da Fundación Wikimedia creado o 7 de setembro de 2004 co obxecto de servir como almacén de ficheiros, tanto de imaxe como outros formatos multimedia, dos que botar man á hora de fornecer o resto dos proxectos da fundación.", - "wolframalpha":"Wolfram Alpha é un motor computacional desenvolvido por Wolfram Research. Wolfram é un servizo en liña que atopa respostas concretas baseadas en cálculos numéricos e información gardada en bases de datos, non en páxinas web ou documentos ligados.", - "rubygems":"RubyGems é un xestor de paquetes para Ruby que proporciona un formato estándar para distribuír programas ruby e librarías, é unha ferramenta deseñada para xestionar facilmente a instalación de xemas, e un servidor para distribuílas. RubyGems é agora parte da libraría estándar dende a versión 1.9 de Ruby." - }, - "he":{ - "9gag":"9GAG הוא אתר באנגלית שיוסד על ידי תושבי הונג קונג ומאוחסן על שרת הממוקם בארצות הברית. האתר עלה לרשת בשנת 2008 ומאז הפך למוקד פופולרי מאוד בתרבות תופעות האינטרנט והממים.", - "annas archive":"הארכיון של אנה היא ספריית צללים חינמית וללא מטרת רווח, המספקת גישה מקוונת לספרים וחומרים כתובים ממגוון מקורות באמצעות רב מנוע. הספרייה הוקמה על ידי צוות ארכיונאים אנונימיים כתגובה למאמצי איגוד המוציאים לאור הבריטי וגילדת המחברים האמריקאית יחד עם רשויות החוק לסגור את האתר Z-library בנובמבר 2022.", - "apple app store":"חנות היישומים היא חנות אפליקציות ייעודית למכשירי iOS, אשר מפותחת ומתוחזקת על ידי חברת אפל. השירות מאפשר למשתמשים להוריד יישומים (אפליקציות) מחנות ה-iTunes. היישומים בחנות פותחו על ידי ערכת פיתוח התוכנה של ה-iOS‏, ופורסמו על ידי אפל.", - "artic":"מכון האמנות של שיקגו הוא מוזיאון לאמנות יפה בפארק גרנט בשיקגו שבמדינת אילינוי בארצות הברית. מכון האמנות מכיל את אחד האוספים הגדולים ביותר בעולם של אמנות אימפרסיוניסטית ופוסט-אימפרסיוניסטית. כמו כן, קיימים במוזיאון מגוון אוספים הכוללים אמנות אסייתית, אמריקאית, אמנות מודרנית ואמנות עכשווית.", - "bandcamp":"בנדקמפ היא חברה פרטית המספקת ממשק מקוון למוזיקאים, המאפשר להם לחלוק ולמכור מוזיקה. החברה נוסדה ב-2008, ופופולרית בקרב מוזיקאים עצמאיים, גם בישראל. החברה לוקחת עמלה על מכירת מוזיקה מן המוזיקאים.", - "wikipedia":"ויקיפדיה היא אנציקלופדיה מקוונת רב-לשונית, המבוססת על תוכן חופשי ומשתמשת בטכנולוגיית ויקי. ויקיפדיה היא האנציקלופדיה הכללית הגדולה והפופולרית ביותר באינטרנט. מאחורי האתר עומדת קרן ויקימדיה, מוסד ללא כוונת רווח שמרכזו בארצות הברית. הקרן נותנת את שירותי המעטפת לקיום האתר, כגון תחזוקת שרתים, אך היא אינה מתערבת בניהול האתר, ומאפשרת לקהילת הוויקיפדים לקבל החלטות עצמאיות בנושאי התוכן. מוטו האתר הוא \"ויקיפדיה - האנציקלופדיה החופשית\", כאשר \"חופשי\" פירושו חופשי לעיון ללא כל מגבלה, חופשי לעריכה וחופשי להעתקה ולהפצה. תוכן האתר מוגש תחת הרישיון החופשי CC-BY-SA.", - "bing":"Bing (בינג) הוא מנוע חיפוש אינטרנטי מבית חברת מיקרוסופט, הפועל החל משנת 2009. נכון לשנת 2021 בינג הוא מנוע החיפוש השלישי בפופולריות שלו בעולם אחרי גוגל ו-Baidu הסיני.", - "bing images":[ - "bing:he", - "ref" - ], - "bing news":[ - "חדשות ממקורות חדשותיים עולמיים, לאומיים ומקומיים, מאורגנים כדי לספק לך כיסוי חדשותי מעמיק של ספורט, בידור, עסקים, פוליטיקה, מזג אוויר ועוד.", - "https://www.bing.com/news" - ], - "bing videos":[ - "עם החיפוש החכם של Bing תוכל למצוא את מה שאתה מחפש ביתר קלות ומהירות ולקבל פרסים.", - "https://www.bing.com/videos" - ], - "currency":"דקדקגו הוא מנוע חיפוש שמדגיש את הגנת פרטיות המשתמש ונמנע מיצירת \"בועת פילטר\" שמנחשת את אופי החיפושים הרלוונטיים למשתמש. דקדקגו נבדל ממנועי חיפוש אחרים בכך שהוא לא מתחקה אחר תוצאות המשתמשים, כמו גם, מאחזר את אותן תוצאות לכל המשתמשים שחיפשו מושג זהה ואינו נותן תוקף לשיקולים זרים בתוצאות החיפוש. יתרה מכך, דקדקגו מעדיף לאחזר מידע ממעט מקורות מידע איכותיים מאשר מהרבה מקורות מידע שאינם איכותיים. תוצאות החיפוש של דקדקגו הן קומפילציה של \"בערך 50\" מקורות מידע (duck.co). בין היתר, הוא מאחזר מידע מאתרי \"מיקור המונים\" כמו ויקיפדיה, ממנועי חיפוש אחרים כמו: Yandex, Yahoo!, Bing ו-Yummly ומזחלן הרשת שלו עצמו, דקדקבוט.", - "deezer":"דיזר הוא שירות הזרמת מוזיקה מבוסס אינטרנט. השירות מאפשר למשתמשים להאזין לתכנים מוזיקליים המפורסמים תחת חברות תקליטים שונות, ביניהן EMI, סוני, וורנר מיוזיק גרופ ויוניברסל מיוזיק גרופ, על מכשירים שונים באופן מקוון או לא מקוון. דיזר נוצר בפריז, צרפת על ידי דניאל מרלי וג'ונתן בנסאיה בשנת 2007. השירות פועל בכ-185 מדינות ומחזיק ברישיון להזרמת כ-90 מיליון שירים בספרייתו. השירות מספק מעל ל-30,000 ערוצי רדיו, ורשומים אליו כ-20 מיליון משתמשים פעילים חודשיים, וכ-9 מיליון מנויים בתשלום, נכון לאפריל 2022. השירות, בנוסף לאתר האינטרנט, זמין עבור אנדרואיד, Kindle Fire HDX HDX, OS X, בלקברי, iOS, Windows Phone וסימביאן.", - "deviantart":"דיוויינטארט הוא שירות קהילתי לשיתוף תמונות ויצירות אומנות באינטרנט. החברה הוקמה ב-7 באוגוסט 2000. מטה החברה נמצא באזור הוליווד שבלוס אנג'לס, קליפורניה, ארצות הברית. בפברואר 2017 החברה נרכשה על ידי החברה הישראלית \"Wix\" תמורת 36 מיליון דולר.", - "ddg definitions":[ - "currency:he", - "ref" - ], - "wikidata":"ויקינתונים הוא מסד נתונים סמנטי, חופשי, שיתופי ורב-לשוני, השייך לקרן ויקימדיה. ויקינתונים משמש כמאגר נתונים מרכזי לכל המיזמים של קרן ויקימדיה, וניתן לעשות בנתונים שבו שימוש חופשי ברישיון נחלת הכלל.", - "duckduckgo":[ - "currency:he", - "ref" - ], - "duckduckgo images":[ - "currency:he", - "ref" - ], - "duckduckgo videos":[ - "currency:he", - "ref" - ], - "duckduckgo news":[ - "currency:he", - "ref" - ], - "duckduckgo weather":[ - "currency:he", - "ref" - ], - "apple maps":"אפל מפות הוא יישום מובנה במערכת ההפעלה iOS של המכשירים מבית חברת אפל, ומציע דרכי הגעה ליעדים, עדכוני תנועה, בתי עסק בסביבה ותכונות נוספות.", - "emojipedia":"אמוג'יפדיה הוא אתר אנציקלופדי המבוסס על אמוג'ים, שנוצר על ידי ג'רמי בורג בשנת 2013. האתר אחראי לשינוי ולחידוש הסמלים, האמוג'ים ומשמעותם על פי תקן יוניקוד. האתר משתייך לארגונים המשתפים פעולה בעניינים כלכליים-חברתיים ומכונה \"משאב האמוג'י מספר אחת בעולם\".", - "fdroid":[ - "מאגר של תכניות חופשיות ל־Android", - "wikidata" - ], - "flickr":"פליקר הוא אתר אינטרנט המעניק שירות שיתוף תמונות בסגנון web 2.0. האתר היה בבעלות חברת האינטרנט ובעלת הפורטל \"Yahoo!‎\"; הוא נרכש על ידה בשנת 2005 מחברת לודיקורפ (Ludicorp), שיצרה אותו ב-2004. בשנת 2018 נמכר האתר לחברת SmugMug. מייסדי לודיקורפ, סטוארט בטרפילד ואשתו קתרינה פייק, נשארו לעבוד עם יאהו עד 2008, אז פרשו.", - "genius":"Genius הוא מאגר מידע מקוון בתחום המדיה, שהוקם באוקטובר 2009 על ידי מהבוד מוגדם, טום ליהמן ואילן זקורי. האתר מאפשר למשתמשים לספק מילים, הסברים ופרשנויות לשירים, לסיפורים, למקורות, לשירה ולמסמכים.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub הוא שירות ניהול גרסאות ושירות אחסון, מבוסס רשת, עבור מיזמי פיתוח תוכנה, שבהם משתמשים במערכת גיט. GitHub סיפקה בעבר שירות זה בתשלום למאגרים פרטיים ושירות חינמי למיזמי קוד פתוח. עם זאת, ב-14 באפריל 2020, פתחה החברה את כלל שירותי הליבה שלה לציבור הרחב בחינם.", - "google":"גוגל (Google) הוא מנוע חיפוש, הנמצא בבעלות חברת Google. זהו מנוע החיפוש הפופולרי ביותר באינטרנט ואתר האינטרנט הגדול בעולם. מדי יום הוא זוכה למאות מיליוני מבקרים השולחים אליו כ־3 מיליארדי בקשות למציאת תוכן באתרי אינטרנט. המנוע פותח במקור על ידי לארי פייג' וסרגיי ברין במכון הטכנולוגי של מסצ'וסטס בשנת 1997 ומשמש כדף הבית של חברת \"גוגל\".", - "google images":"גוגל תמונות הוא שירות של ממשק חיפוש מבית חברת גוגל, לחיפוש תמונות באינטרנט. השירות מבוסס גם על מילים הכתובות סביב התמונה, שם הקובץ וכדומה וגם על \"הבנת תוכן התמונה\". המנוע משולב עם מנוע החיפוש העיקרי של החברה.", - "google news":"גוגל חדשות או Google News, הוא אלגוריתם צובר חדשות המציג חדשות באתר של חברת גוגל. שפותח על ידי קרישנה בהרט בשנת 2001 בגרסת הבטא. בינואר 2006 הוציאו גוגל את גוגל חדשות בגרסה המלאה, השירות כולל את החדשות משלושים הימים האחרונים.", - "google videos":"גוגל וידאו הוא מנוע חיפוש מבית גוגל, לחיפוש סרטון וידאו באינטרנט. המנוע משולב עם מנוע החיפוש העיקרי של החברה. השירות הושק ב-25 בינואר 2005. ב-9 באוקטובר 2006 גוגל רכשה את המתחרה Youtube", - "google scholar":"גוגל סְקוֹלַר הוא מנוע חיפוש מקוון מבית היוצר של גוגל, הממפתח את הטקסט המלא של מאמרים, דוחות טכניים, דו\"חות לפני הדפסה, תזות, ספרים, ומסמכים אחרים ממגוון רחב של הוצאות ובמקצועות שונים.", - "google play apps":"גוגל פליי, בעבר Android Market, הוא שירות הפצה דיגיטלית של גוגל, הכולל חנות מקוונת ליישומי (\"אפליקציות\") אנדרואיד, משחקי וידאו, מוזיקה, סרטים, סדרות, ספרים וכן נגן מדיה באמצעות ענן. גוגל פליי הוצג לראשונה ב-3 במרץ 2012 כאיחוד ומיתוג מחודש של השירותים שקדמו לו, אנדרואיד מרקט ו-Google Music.", - "google play movies":[ - "google play apps:he", - "ref" - ], - "hoogle":"Haskell (הסקל) היא שפת תכנות פונקציונלית טהורה, ובעלת טיפוסיות חזקה. היא אחת משפות התכנות הפונקציונליות הפופולריות ביותר, והשפה הפונקציונלית העצלה בה מרבית המחקר בתחום מדעי המחשב מתבצע[דרוש מקור]. השפה קרויה על שם הלוגיקן הסקל קורי.", - "imdb":"Internet Movie Database הוא אתר אינטרנט המכיל בסיס נתונים מקוון של מידע על סרטים, שחקני קולנוע, תוכניות טלוויזיה, צוות הפקה ומשחקי וידאו. האתר נמצא בבעלות חברת אמזון.", - "imgur":"Imgur (אימג'ר) הוא אתר אינטרנט חינמי לאירוח קובצי תמונות שהושק ב-23 בפברואר 2009. ניתן להעלות תמונות לאתר ולשתף אותן במגוון של רשתות חברתיות, לערוך את קובצי התמונות, להגיב על תמונות שמשתמשים אחרים העלו, וליצור בקלות יתרה תמונות Image macro (ממים).", - "library genesis":"ספריית ג'נסיס הוא אתר לשיתוף קבצים עבור מאמרים בכתבי עת, ספרים אקדמיים, תמונות, קומיקס ומגזינים. האתר מאפשר גישה חופשית לתכנים שאחרת הם בתשלום או שלא עברו דיגיטציה. האתר מגדיר את עצמו כמצבור קישורים המספק גישה לחיפוש פריטים שנאספו ממשאבי אינטרנט ציבוריים זמינים לציבור וכאלה שהועלו על ידי המשתמשים.", - "library of congress":"ספריית הקונגרס היא ספריית המחקר של הקונגרס של ארצות הברית, אשר משמשת בפועל כספרייה הלאומית של ארצות הברית, ואחת מהספריות החשובות והגדולות ביותר בעולם. רק הספרייה הבריטית גדולה ממנה.", - "mastodon users":"מסטודון היא פלטפורמת רשת חברתית מבוססת קוד פתוח ושרתים מבוזרים. בניגוד לרשתות חברתיות הנשלטות באופן ריכוזי על ידי תאגידים, במסטודון כל אדם או קבוצה יכולים לפתוח שרת נפרד. המשתמשים יכולים לקיים קשרי גומלין גם עם משתמשים משרתים אחרים. הרשת מבוססת על הפרוטוקול הפתוח ActivityPub ומשתמשיה יכולים לקיים אינטראקציה עם משתמשי פלטפורמות חופשיות נוספות בפדיברס התומכות באותו פרוטוקול דוגמת PeerTube ו-Friendica. המרחב הווירטואלי המשותף לפעילות השרתים השונים מכונה \"פדיברס\" (Fediverse) - הלחם של פדרציה ויוניברס (עולם).", - "mastodon hashtags":[ - "mastodon users:he", - "ref" - ], - "npm":"npm הוא מערכת ניהול חבילות לשפת התכנות JavaScript המתוחזקת על ידי חברת npm, Inc. המערכת מוגדרת כברירת מחדל עבור Node.js - סביבת ריצה פופולרית של JavaScript. המערכת מורכבת מ-CLI, גם הוא נקרא npm, ומבסיס נתונים מקוון של חבילות פרטיות ציבוריות ובתשלום, הנקרא npm registry. הגישה לרישום מתבצעת דרך צד הלקוח, וניתן לעיין בחבילות הזמינות ולחפש דרך אתר npm. מנהל החבילות והרישום מנוהלים על ידי npm, Inc.", - "openstreetmap":"OpenStreetMap הוא מיזם שיתופי ליצירת מפה חופשית של כדור הארץ. המפה נוצרת בעזרת נתונים ממכשירי GPS ניידים, תצלומי אוויר ומקורות חופשיים אחרים. גם קובצי התמונה של המפה וגם המידע הווקטורי, זמינים להורדה ולשימוש לפי רישיון \"קריאטיב קומונס - שיתוף ברישיון זהה 2.0\". משתמשים רשומים יכולים להעלות רשימות מסלולי GPS, וכן לערוך את המידע הווקטורי בעזרת כלי העריכה של המיזם. ההשראה ל-OpenStreetMap הייתה אתרי אינטרנט כגון ויקיפדיה - לצד המפה מוצגת באופן בולט לשונית \"ערוך\", ונשמרת היסטוריה מלאה של הגרסאות השונות.", - "pinterest":"פינטרסט היא רשת חברתית מקוונת דמוית לוח מודעות. השירות מאפשר למשתמשיו ליצור ולנהל אוספי תמונות משלהם. מטרתו המוצהרת של האתר היא \"לחבר בין כל האנשים בעולם באמצעות 'דברים' שמעניינים אותם\". פינטרסט מנוהלת בידי חברת Pinterest, Inc., המבוססת בסן פרנסיסקו, קליפורניה. 79% ממשתמשי פינטרסט הן נשים. בהתאם, לפי אתר Ad Planner, הנושא הבולט ביותר בשימוש באתר הוא \"מעצבי אופנה וקולקציות\", ואחריו הנושא \"אומנויות\".", - "piratebay":"The Pirate Bay הוא אתר אינטרנט לשיתוף קבצים שהוקם בשוודיה ב-2003 ומאפשר למשתמשים שלו לחפש, להוריד ולתרום קישורי מגנט וקובצי טורנט, ושיתוף קבצים עמית לעמית בין משתמשי פרוטוקול ביטורנט.", - "reddit":"Reddit (רדיט) הוא אתר מדיה חברתית מסוג מערכת לוח מודעות מקוונת אשר משתמשים הרשומים אליו יכולים לשתף תכנים, כגון טקסטים או קישורים בכל נושא אפשרי וללא הגבלה והפרסומים הזוכים לדירוג גבוה יותר מופיעים בראשו, בתצוגה מתחלפת שמשאירה מקום לפוסטים חדשים שטרם זכו למידת פרסום משמעותית.", - "soundcloud":"סאונדקלאוד היא פלטפורמה מקוונת להפצת אודיו. לאתר ישנו גם בלוג, ערוצי שידור וקבוצות. החברה הוקמה בשנת 2007 ואתר האינטרנט שלה הוקם ב-7 באוקטובר 2008. מנהלי החברה הם אלכסנדר ליונג ואריק וואלפורס. באתר מועלים שירים, הרצאות, פודקאסטים, ושידורים חיים.", - "semantic scholar":"סמנטיק סקולר הוא כלי מחקר חינמי ומנוע חיפוש לספרות מדעית שפותח במכון אלן לבינה מלאכותית ופורסם לציבור בנובמבר 2015. מאחורי פיתוח המנוע עומד מדען המחשב אורן עציוני. נכון לשנת 2023, הכלי קיטלג מעל 200 מיליון מאמרים אקדמיים.", - "youtube":"יוּטְיוּבּ היא חברה אמריקאית המפעילה אתר אינטרנט לאחסון ושיתוף סרטוני וידאו באותו שם. החברה נוסדה בפברואר 2005, על ידי שלושה עובדים לשעבר של חברת PayPal: צ'אד הארלי, סטיב צ'ן וג'אווד כרים. בנובמבר 2006, רכשה גוגל את החברה תמורת 1.65 מיליארד דולר; מאז, פועלת יוטיוב כאחת מחברות הבת של גוגל.", - "dailymotion":"Dailymotion הוא פלטפורמה אינטרנטית לשיתוף וידאו בבעלות חברת Vivendi. האתר נוסד ב-2005 ובדומה לפלטפורמות דומות כיוטיוב ו-vimeo, מאפשר לגולשיו להעלות, לשתף ולצפות בסרטוני וידאו.", - "vimeo":"Vimeo הוא אתר אינטרנט לשיתוף וידאו, ומשתמשיו יכולים להעלות, לשתף ולצפות בתכנים בו. שרתי האתר נמצאים בארצות הברית.", - "wikibooks":"ויקיספר הוא מיזם רב-לשוני של קרן ויקימדיה ליצירת ספרי לימוד ומדריכים חופשיים, שיתופיים ומהימנים שכל אחד יכול לתרום ליצירתם ופיתוחם. ויקיספר העברי החל דרכו ב-30 ביולי 2004 ומאז מתווספים אליו ערכים שונים על ידי הגולשים.", - "wikinews":"ויקיחדשות הוא מיזם רב-לשוני של קרן ויקימדיה ליצירת אתר חדשות חופשי, שכל אחד יכול לתרום לו.", - "wikiquote":"ויקיציטוט הוא מיזם-אחות של ויקיפדיה, שמשתמש בתוכנת מדיה-ויקי ומנוהל על ידי קרן ויקימדיה. האתר הוא ויקי, ומבוסס על רעיונו של דניאל אלטסון, שמומש במקור על ידי בריאון ויבר. מטרת המיזם היא לבסס מאגר רחב של ציטוטים חופשיים ממקורות שונים.", - "wikisource":"ויקיטקסט הוא מיזם של קרן ויקימדיה ומיזם־אחות לוויקיפדיה. המיזם מיועד להיות ספרייה הכוללת מאגר חופשי של טקסטים.", - "wikispecies":"ויקימינים הוא מיזם-אחות של ויקיפדיה, המנוהל על ידי קרן ויקימדיה. ויקימינים הוא מדריך חופשי המתמחה בתחום מיון עולם הטבע. המיזם משתמש בשמות המדעיים לטיניים של טקסונים ותרגום של שם ניתן בשפות רבות אחרות. נכון לינואר 2022 יש במיזם כ-785,000 ערכים. המיזם מוגש תחת רישיון CC-BY-SA. ויקימינים בעברית, ובשאר השפות השונות - אינו קיים לעצמו, אלא מפנה לערך המקביל בוויקיפדיה.", - "wiktionary":"ויקימילון הוא מיזם מקוון רב־לשוני ובין לאומי המנוהל על ידי קרן ויקימדיה. מטרתו היא יצירת מילון חופשי, שיתופי, מהימן ופתוח אשר יכיל את כל המילים מכל שפות העולם. כיום, הוא זמין בכ־183 שפות ומכיל מילים מכ־3,800 שפות שונות. המהדורה הראשונה של המילון החלה את דרכה ב-12 בדצמבר 2002, ואילו המהדורה העברית הושקה ב-29 ביוני 2004.", - "wikiversity":"ויקיברסיטה הוא מיזם של קרן ויקימדיה, הנועד להיות מקור לחומרים ופעילויות ללימוד. נכון לינואר 2022 ויקיברסיטה קיימת בשבע-עשרה שפות, שביניהן: אנגלית, צרפתית, גרמנית, ספרדית, יפנית, רוסית, יוונית, ערבית, קוריאנית ואיטלקית.", - "wikivoyage":"ויקימסע הוא מיזם רב-לשוני של קרן ויקימדיה ליצירת מדריך טיולים חופשי, שיתופי ומהימן שכל אחד יכול לתרום ליצירתו ופיתוחו.", - "wikicommons.images":"ויקישיתוף הוא מאגר של תמונות, צלילים וקובצי מולטימדיה אחרים חופשיים. זהו מיזם השייך לקרן ויקימדיה, והקבצים שהועלו לאתר זה יכולים לשמש את כל מיזמי קרן ויקימדיה בכל השפות. לחלופין, אפשר להשתמש בהם גם מחוץ לאתר זה, בהתאם לרישיון התוכן שמשתמשים בו.", - "wolframalpha":"וולפרַם אַלפַא הוא מנוע חיפוש חישובי, שפותח על ידי מעבדות וולפרם והושק במאי 2009. ייחודו הוא בביצוע שאילתות בשפה טבעית, בשילוב עם חישובים והחזיית מידע (ויזואליזציה) נרחבת.", - "1337x":"1337x הוא אתר אינטרנט המשמש כמנוע חיפוש לקובצי טורנט ממגוון סוגים. על פי בלוג החדשות \"טורנטפריק\", 1337x הוא אתר הטורנטים השלישי הפופולרי ביותר בעולם נכון לשנת 2021.", - "rumble":"ראמבל היא פלטפורמת וידאו מקוונת קנדית, שנוסדה בשנת 2013. האתר הוקם על ידי כריס פבלובסקי, יזם טכנולוגי קנדי. האתר פופולרי בקרב יוצרי תוכן שמרניים.", - "wttr.in":[ - "Boydton, Virginia, United States :ריוואה גזמ תיזחת", - "https://wttr.in" - ], - "yummly":"יאמלי, הוא אתר ואפליקציית מובייל לחיפוש מתכונים וניהול רשימת קניות.", - "brave":"Brave הוא דפדפן קוד פתוח המפותח על ידי חברת Brave Software Inc, שהושק בשנת 2016, ומבוסס על כרומיום.", - "brave.images":[ - "brave:he", - "ref" - ], - "brave.videos":[ - "brave:he", - "ref" - ], - "brave.news":[ - "brave:he", - "ref" - ] - }, - "hr":{ - "9gag":"9GAG je web stranica za zabavu temeljena na slikama kojima su autori korisnici te slikama pronađenima na sličnim stranicama, a koje su zbog svoje komičnosti prozvane gegovima. Stranica je u prosincu 2011. imala milijardu mjesečnih pregleda stranice.", - "wikipedia":"Wikipedija višejezična je na Webu zasnovana enciklopedija slobodna sadržaja. Ona postoji kao wiki, što podrazumijeva da se piše u suradnji s brojnim volonterima te da većinu članaka može uređivati svatko s pristupom internetu i odgovarajućim web preglednikom. Projekt je započet 15. siječnja 2001. kao dodatak stručno pisanoj Nupediji. Wikipedijom danas rukovodi neprofitna organizacija zaklada Wikimedija, koja ima više od 15 milijuna članaka na mnogo jezika. Otpočetka joj raste popularnost, djelujući pozitivno na stvaranje drugih projekata koji su općeg interesa. Od urednika se traži da održavaju određenu razinu \"neutralnosti\" pri sažimanju istaknutih motrišta, bez određivanja objektivnosti istine.", - "bing":"Microsoft Bing je servis pretraživanja interneta (tražilica) tvrtke Microsoft. Predstavio ga je Steve Ballmer 28. svibnja 2009. na konferenciji All Things Digital u San Diegu, Bing je zamjena za Live pretraživanje. Puna funkcionalnost tražilice dostupna je od 3. lipnja 2009. U veljači 2011. Bing zauzima treće mjesto među tražilicama s 3,68% tržišnog udjela - Google je prvi s 85,37%, Yahoo je drugi s 6,14%. Značajne promjene uključuju uključivanje prijedloga za pretraživanje u stvarnom vremenu prilikom unosa pojmova za pretraživanje i popis povezanih pretraživanja na temelju semantičke tehnologije iz Powerseta, koji je Microsoft kupio u 2008. Bing također uključuje i sposobnost Spremi i dijeli povijesti pretraživanja putem Windows Live SkyDrivea, Facebooka i e-pošte.", - "bing images":[ - "bing:hr", - "ref" - ], - "bing news":[ - "Novosti iz svjetskih, nacionalnih i lokalnih izvora, organizirane tako da pružaju podrobne informacije o sportu, zabavi, poslovnim temama, politici, vremenu i drugim temama.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Pametno pretraživanje u tražilici Bing olakšava brzo pretraživanje onog što tražite i nagrađuje vas.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo je mrežna tražilica čije se djelovanje temelji na proširenju korisnikove privatnosti izbjegavanjem osobnog pretraživanja i prikupljanja osobnih podataka korisnika na temelju rezultata njihova istraživanja u svrhu prosljeđivanja tih podataka oglašivačima, kao u slučaju većih pretraživača. Prilikom slaganja rezultata koristi se metodom nabave iz mnoštva (crowdsourcinga), prikupljajući i stvarajući baze podataka više na temelju kakvoće stranice nego li na posjećenosti.", - "deezer":"Deezer je mrežna usluga za prenošenje glazbenih sadržaja koja korisnicima dopušta slušanje glazbe mrežno ili izvanmrežno te stvaranje i dijeljenje popisa pjesama. Stvoren u Parizu, 2007., Deezer trenutno raspolaže s 120 milijuna licenciranih snimki u svom katalogu, iz svih glazbenih žanrova. Na usluzi je dostupno i preko 32.000 radijskih postaja.", - "ddg definitions":[ - "currency:hr", - "ref" - ], - "wikidata":"Wikipodatci, slobodna baza znanja kojom upravlja Zaklada Wikimedija. Cilj ovog projekta je stvoriti zajednički višejezični repozitorij strukturiranih podataka koje će moći koristiti Wikipedija i drugi projekti Wikimedije. Ono što je Zajednički poslužitelj za medijske datoteke, Wikipodatci su za podatke.", - "duckduckgo":[ - "currency:hr", - "ref" - ], - "duckduckgo images":[ - "currency:hr", - "ref" - ], - "duckduckgo videos":[ - "currency:hr", - "ref" - ], - "duckduckgo news":[ - "currency:hr", - "ref" - ], - "duckduckgo weather":[ - "currency:hr", - "ref" - ], - "flickr":"Flickr je online servis za pohranu slike i video sadržaja, kao i online društvena platforma. Uz to što je vrlo popularan kod internetskih korisnika za dijeljenje osobnih fotografija, često ga za pohranu slika koriste i blogeri.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Google je internetska tražilica u vlasništvu tvrtke Google LLC te je najkorištenija tražilica na internetu. Osnovala su je dva studenta, Larry Page i Sergey Brin 1997. godine. Googleova misija je, kako kažu, organizirati informacije svijeta te ih učiniti korisnima.", - "google images":[ - "Google Slike. Najpotpunije pretraživanja slika na webu.", - "https://images.google.com" - ], - "google scholar":"Google znalac, usluga koju na svojoj tražilici nudi Google. To je internetski pretraživač znanstvene literature, razvijen u okvirima pretraživača Googlea. Danas je Googleov znalac prvi internetski pokazatelj citiranosti.Glavni tvorac Znalca računalni je znanstvenik indijskog podrijetla Anurag Acharya.", - "google play apps":"Google Play Googleova je mrežna trgovina aplikacija, glazbe, filmova i ostalih digitalnih sadržaja. Predstavljen je u kolovozu 2008. godine, a njegovo korištenje počinje od listopada 2008. godine. Pojava prvih komercijalnih aplikacija započinje od strane britanskih i američkih programera od veljače 2009.", - "google play movies":[ - "google play apps:hr", - "ref" - ], - "hoogle":"Haskell je standardizirani čisti funkcijski programski jezik s nestriktnom semantikom, imenovan po logičaru Haskellu Curryu. Jedan je od najpopularnijih funkcijskih programskih jezika, i predstavlja lijeni programski jezik nad kojim se izvršava ponajviše istraživanja.", - "imdb":"Internet Movie Database (IMDb) nalazi se na adresi www.imdb.com, a radi se o najvećoj bazi podataka o filmu na internetu koja sadrži mnoštvo podataka o filmovima, filmskim glumcima, redateljima, scenaristima, producentima, ali i o televizijskim voditeljima, serijama i emisijama.", - "kickass":"KickassTorrents jest mrežna stranica koja pruža direktorij torrent datoteka i magnetnih poveznica kojima se omogućava dijeljenje datoteka umreženjem peer-to-peer (P2P) koristeći protokol BitTorrent. Prema podacima tvrtke Alexa Internet, KAT je prestigla The Pirate Bay u studenome 2014. i time postala najveći poslužitelj BitTorrent datoteka. Dana 20. srpnja 2016. američka vlada zaplijenila je domenu i stranica je otad nedostupna; osoblje je istog dana ugasilo i proxy servere.", - "library of congress":"Kongresna knjižnica de facto je nacionalna knjižnica Sjedinjenih Američkih Država. Nalazi se u Washingtonu, D. C. Osnovana je 1800. godine kao knjižnica Kongresa Sjedinjenih Američkih Država, kojemu i sada služi kao dokumentacijsko i informacijsko središte. Najveća je knjižnica u svijetu.", - "openstreetmap":"OpenStreetMap (OSM) je projekt virtualne zajednice s ciljem stvaranja slobodne, svima dostupne karte koju svatko može sam i dorađivati.", - "pinterest":"Pinterest je društvena mreža koja funkcionira kao online oglasna ploča, nešto poput virtualne ploče s pribadačama na koju korisnici dodaju interesantan sadržaj koji su pronašli na internetu. Osnovali su je Ben Silbermann, Paul Sciarra i Evan Sharp, a investicija je došla od male grupe poduzetnika i investitora.", - "piratebay":"The Pirate Bay trenutno je najveći svjetski BitTorrent tracker. Osnovala ga je švedska organizacija Piratbyrån u studenom 2003. godine, ali već u listopadu 2004. godine nastupa kao odvojena organizacija. Trenutno ga vode Gottfrid Svartholm, Fredrik Neij i Peter Sunde. Kako su u mnogim zemljama BitTorrent trackeri na kojima se za slobodno skidanje može pronaći glazba i računalni programi koji su zaštićeni autorskim pravima ilegalni, u Švedskoj se takvi BitTorrent trackeri ne smatraju ilegalnim. Upravo je iz tog razloga The Pirate Bay često na udarima organizacija za zaštitu autorskih prava.", - "reddit":"Reddit je američka internetska stranica odnosno internetski servis koji funkcionira kao križanac foruma i Useneta. Prema podacima iz ožujka 2021., Reddit je devetnaesta najposjećenija stranica na svijetu.", - "soundcloud":"SoundCloud je internetska stranica za online distribuciju glazbe.", - "semantic scholar":[ - "pretraživač akademskih publikacija", - "wikidata" - ], - "youtube":"YouTube je popularna mrežna usluga za razmjenu videozapisa na kojoj korisnici mogu postavljati, pregledavati, komentirati i ocjenjivati videozapise. Za postavljanje sadržaja potrebna je registracija, ali za pregledavanje nije, osim sadržaja koji nije primjeren za osobe mlađe od 18 godina. Prema pravilima korištenja korisnici mogu postavljati vlastite uratke i uratke za koje imaju dopuštenje vlasnika autorskih prava, a zabranjeno je postavljanje pornografskoga sadržaja, nasilja, sadržaja koji podržava radnje koje krše zakon, sadržaja s ciljem sramoćenja, klevete i reklama. YouTube zadržava pravo na korištenje, preinaku i brisanje postavljenoga materijala.", - "wikibooks":"Wikiknjige su Wikipedijin sestrinski projekt koji djeluje s ciljem stvaranja besplatnih udžbenika, zbirke knjiga iz raznih područja, slobodnog pristupa, korištenja i objavljivanja koje svako može uređivati. Wikiknjige su idealno mjesto gdje se sav postavljeni tekst, uz dogovor i radi točnosti, može ispraviti, obnoviti i nadograditi na zadovoljstvo svih zainteresiranih.", - "wikiquote":"Wikicitat je Wikipedijina podružnica. Temelji se na MediaWiki programskoj podršci. Dio je obitelji na wikiju objedinjenih u zakladi Wikimedija.", - "wikisource":"Wikizvor je Wikipedijin sestrinski projekt koji djeluje s ciljem stvaranja zbirke besplatnih originalnih tekstova, ali i prijevoda tih tekstova na različite jezike. Wikizvor prikuplja i u digitalnom formatu pohranjuje prethodno objavljene tekstove, između ostalog romane, nefikcijska djela, pisma, govore, zakone i povijesne dokumente. Svi prikupljeni tekstovi ili su slobodni za objavljivanje ili su objavljeni pod GNU-FDL dozvolom.", - "wiktionary":"Wječnik ili Wiki-rječnik višejezični je internetski baziran projekt koji stvara rječnik slobodnog sadržaja dostupan na više od 150 jezika.", - "wikiversity":"Wikiučilište je projekt Zaklade Wikimedija, koja podržava edukacijske zajednice, njihove edukacijske materijale, i aktivnosti koje nastaju kao rezultat. Razlikuje se od strukturiranijih projekata kao što je Wikipedija u tome što nudi niz uputa i tečajeva za napredak učenja, a ne formalnog sadržaja.", - "wikivoyage":"Wikivoyage ili Wikivodič višejezični je internetski slobodni i otvoreni wiki-projekt turističkih informacija. Povijest projekta povezana je s njemačkom inačicom projekta wikitravel, naime kako se wikitravel 2006. godine komercijalizirao, suradnici njemačkog izdanja su osnovali neprofitnu udrugu \"Wikivoyage e.V.\" i 10. prosinca 2006. Wikivoyage je postao dostupan u obliku internetskih stranica. Sadržaj projekta dostupan je pod Creative Commons \"Imenovanje-Dijeli pod istim uvjetima\" licencijom.", - "wikicommons.images":"Zajednički poslužitelj skladište je fotografija, zvukova, kratkog videa, crteža i drugih multimedijalnih sadržaja koji nisu označeni copyrightom. Zajednički poslužitelj je jedan od projekata Zaklade Wikimedija, pa je on i zajedničko skladište za sve Wikipedije pa čak i njezine sestrinske projekte. Sadržaji sa Zajedničkog poslužitelja označeni su bilo kojom licencijom za slobodno korištenje, a mogu biti s nekog Wikimedijinog projekta, s internetske stranice itd.", - "wolframalpha":"Wolfram Alpha je znanstvena tražilica razvijena od strane kompanije Wolfram Research. Alpha ne radi poput klasičnih tražilica tipa Google, već pomoću ugrađenih algoritama pokušava odgovoriti na vaš upit odnosno pitanje. Alpha ne daje rezultate poput prijašnjih tražilica već ih povezuje s poznatim stvarima i zapravo izračunava rezulatate koristeći se bazom algoritama i snagom tisuća procesora koji se nalaze u Dell centrima. Djelo je čovjeka po imenu Stephen Wolfram. Javnosti je predstavljena 15. 5. 2009.", - "dictzone":[ - "Online rječnici: engleski, španjolski, njemački, francuski, talijanski, mađarski... Odaberite svoj omiljeni rječnik!", - "https://dictzone.com/" - ] - }, - "hu":{ - "9gag":"A 9GAG egy hongkongi székhelyű online platform és közösségimédia-webhely, amely lehetővé teszi a felhasználók számára, hogy külső közösségi oldalakról töltsenek fel és osszák meg a felhasználók által generált vagy más tartalmakat. Az internetes mémgyűjtemények platformjának számító weboldal 2008. április 11-i elindulása óta folyamatosan nőtt a népszerűsége a közösségi médiában, például a Facebookon, a Twitteren és az Instagramon.", - "apple app store":"Az App Store egy online, alkalmazásokat árusító bolt, melyet az Apple fejlesztett ki az iOS rendszerű eszközökre. A legtöbb alkalmazás (=app) fizetős, de vannak közöttük ingyenesek is. Az App Store biztosítja a felhasználóknak, hogy az alkalmazások között böngészhetnek, és letölthetik azokat az iTunes Store-ból. Az appok közvetlenül az erre alkalmas eszközökre, illetve OS X-re vagy Windows-ra az iTunes-on keresztül tölthetőek le.", - "bandcamp":"A Bandcamp egy 2007-ben alapított online zenebolt. A szolgáltatás 2008-ban indult azzal a céllal, hogy független zenészeknek biztosítson helyet, ahol terjeszthetik zenéiket. A művészek rendelkezésére áll egy személyre szabható mikroweboldal, ahová feltölthetik zenéiket. A számok meghallgatása díjmentes, a letölthető tartalmak zenésztől függően lehetnek ingyenesek vagy fizetősek. Néhány esetben a vásárló több pénzt is adhat, mint amennyit a feltöltő szabott ki. A Bandcamp a weboldalon bonyolított tranzakciók egy részéből fedezi a bevételét.", - "wikipedia":"A Wikipédia többnyelvű, nyílt tartalmú, a nyílt közösség által fejlesztett online világenciklopédia, amelyet a floridai központú nonprofit Wikimédia Alapítvány üzemeltet, szerkesztését pedig önkéntes közösség végzi. Az Alexa rangsorolása szerint a világ 13. leglátogatottabb weboldala.", - "bing":"A Bing a Microsoft által 2009-ben bemutatott internetes keresőrendszer.", - "bing images":[ - "bing:hu", - "ref" - ], - "bing news":[ - "Hírek nemzetközi, országos és helyi hírforrásokból, amelyek részletes információt nyújtanak Önnek a sporttal, szórakozással, üzleti élettel, politikával, időjárással és egyéb témákkal kapcsolatban.", - "https://www.bing.com/news" - ], - "bing videos":[ - "A Bing intelligens keresésével gyorsan megtalálhat bármit, amit keres, és még jutalmakban is részesülhet.", - "https://www.bing.com/videos" - ], - "currency":"A DuckDuckGo egy internetes kereső, mely fontosnak tartja a felhasználók személyes adatainak a védelmét, illetve kerüli a személyre szabott keresési eredményeket. A DuckDuckGo abban különbözik a többi keresőeszköztől, hogy nem kategorizálja a felhasználóit, hanem ugyanarra a kifejezésre valamennyi felhasználójának ugyanazokat a találatokat jeleníti meg. A DuckDuckGo kihangsúlyozza, hogy az információkat a legjobb forrásokból szerzi, így a találatait a főbb közösségi fejlesztésű oldalakról, például a Wikipédiáról szerzi, illetve együttműködik más keresőeszközökkel, mint például a Yandex, Yahoo!, Bing és Yummly.", - "deezer":"A Deezer egy 2007 óta létező francia zenei stream szolgáltató internetes vállalkozás. Netrádióként működik, de emellett előfizetési díj ellenében online musicboxként is. A díjat vállalók lejátszási listákat, vagy szóló darabokat tölthetnek le. Fájlok fel is tölthetők egy saját zenetárba. A Deezer mintegy 73 millió számot, köztük magyar felvételeket is tartalmaz.", - "deviantart":"A deviantART (dA) egy nemzetközi, internetes művészeti publikációs helyként, ismeretségi hálózatként és webshopként egyszerre működő honlap, az egyik legnagyobb online alkotóközösség. 2000. augusztus 7-én indította útjára Scott Jarkoff, Angelo Sotira, Matthew Stepens és még sokan mások. Tulajdonosa a deviantART, Inc.", - "ddg definitions":[ - "currency:hu", - "ref" - ], - "wikidata":"A Wikidata egy világméretű, ingyenesen hozzáférhető és bárki által frissíthető internetes adatbázis, mely eredetileg a Wikipédia tudásanyagára épült, mára azonban jócskán túlnőtt rajta: míg 2020 januárjában az összes Wikipédiában 51,8 millió szócikk volt, a Wikidatán ugyanekkor 73,8 millió adatlap található. Összehasonlításul: a világ 57 országának tízezer könyvtára minden egyes tételét tartalmazó Nemzetközi Virtuális Katalógustár adatbázisában 2019 szeptemberében 464 millió bibliográfiai rekord volt.", - "duckduckgo":[ - "currency:hu", - "ref" - ], - "duckduckgo images":[ - "currency:hu", - "ref" - ], - "duckduckgo videos":[ - "currency:hu", - "ref" - ], - "duckduckgo news":[ - "currency:hu", - "ref" - ], - "duckduckgo weather":[ - "currency:hu", - "ref" - ], - "fdroid":[ - "Az F-Droid szabad és nyílt forráskódú alkalmazások telepíthető katalógusa az Android platformhoz. A kliens egyszerűvé teszi a böngészést, a telepítést és a frissítések nyomon követését az eszközén.", - "https://f-droid.org/" - ], - "flickr":"A Flickr egy ingyenes fényképmegosztó weboldal, web 2.0-s web szolgáltatás és online közösségi platform.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"A GitHub, Inc. egy egyesült államokbeli nemzetközi vállalat, amely a Git segítségével szoftverfejlesztési verziókövetés-szolgáltatást nyújt. 2018-ban a Microsoft leányvállalata lett 7,5 milliárd dollárért. Saját funkcióin felül a Git elosztott verziókövetését és forráskódkezelését (SCM) teszi elérhetővé. Hozzáférés-kezelést és számos együttműködési funkciót nyújt, mint például bugkövetés, szolgáltatáslekérés, feladatkezelés, valamint wikiket minden projekthez.", - "google":"A Google internetes keresőrendszer, amely egyúttal térképként, pénzváltóként, számológépként, naptárként, helyesírás-ellenőrzőként és szótárként is használható.", - "google images":[ - "Google Képek. Az internet legátfogóbb képkereső szolgáltatása.", - "https://images.google.com" - ], - "google news":"A Google Hírek egy speciális hírösszefoglaló szolgáltatás, amelyet a Google fejlesztett ki. A Google Hírek alkalmazásként is elérhető Androidon, iOS-en és webalkalmazás formájában is.", - "google scholar":"A Google Tudós a Google tudományos keresője, amely különféle témájú és formájú tudományos publikációk között keres. 2004. november 18-án indult, mára szinte minden online elérhető referált folyóiratban keres. 2006. február 20-ától a magyar könyvtárakban is keres a MOKKA-n keresztül.", - "google play apps":"A Google Play a Google digitális tartalomszolgáltatása, amely magában foglal egy online boltot, melyben zenék, filmek, könyvek, Android eszközökre írt játékok és más alkalmazások találhatók, valamint egy, a felhőben futó médialejátszót. A szolgáltatás elérhető a weben, a hozzá írt androidos alkalmazással vagy a Google TV-n keresztül. Vásárlás után a megvásárolt tartalom azonnal hozzáférhető az összes birtokolt eszközön.", - "google play movies":[ - "google play apps:hu", - "ref" - ], - "hoogle":"A Haskell tisztán funkcionális, lusta kiértékelésű, polimorf típusokat és magasabb rendű függvényeket tartalmazó programozási nyelv. A nyelv ezzel meglehetősen különbözik a ma általában használatos nyelvektől. A nyelv Haskell Brooks Curry amerikai matematikusról kapta a nevét, aki a matematikai logikában kifejtett munkássága révén hozzájárult a funkcionális nyelvek elméleti alapjainak fejlődéséhez. A Haskell nyelv alapja a lambda-kalkulus.", - "imdb":"Az Internet Movie Database (IMDb), melynek tulajdonosa az Amazon.com, egy online információs adatbázis filmszínészekről, filmekről, filmsorozatokról, egyéb televíziós műsorokról, reklámokról és videójátékokról. A regisztrált felhasználók értékelhetik a filmeket és szerkeszthetik az adatlapokat, a változtatásokat az IMDb személyzete tartja nyílván. Az IMDb a legismertebb és legnagyobb méretű filmes internetes adatbázis.", - "imgur":"Az Imgur egy képmegosztó webhely, melyet Alan Schaaf hozott létre, és sok millió felhasználó veszi igénybe az egyszerű regisztráció után ingyenesen is elérhető szolgáltatást.", - "library of congress":"A Kongresszusi Könyvtár az Amerikai Egyesült Államok nemzeti könyvtára, mely Washingtonban található négy épületben. Ez a világ legnagyobb könyvtára mind fizikai méretei, mind tárolt könyveinek, dokumentumainak száma szerint.", - "metacpan":"A CPAN a Comprehensive Perl Archive Network rövidítése. Több mint 100 000 Perl-ben írt programmodult és ezek dokumentációját tartalmazza. Ezek megtalálhatók a CPAN hivatalos weboldalán, továbbá világszerte több mint 200 helyen vannak tükrözések. A CPAN kifejezés vagy magára az archívum hálózatra utal, vagy arra a Perl programra, amely interfészként viselkedik a hálózathoz, valamint automatikus szoftver telepítő is egyben. A CPAN-on található legtöbb program ingyenes és nyílt forrású.", - "mixcloud":"A Mixcloud egy freemium zenemegosztó streamingszolgáltató weboldal, ami rádióműsorok, zenei mixek és podcastok megosztását teszi lehetővé. Az oldal crowdsourcing alapján működik, a regisztrált felhasználók által feltöltött munkák biztosítják a tartalmat. A felhasználók korlátlanul tölthetnek fel az oldalra, de a feltöltött munkákat letölteni nem lehet, csak streamelni. A Mixcloud alkalmazása megjelent Androidra és iOS-re.", - "openstreetmap":"Az OpenStreetMap (OSM) csoportmunkán alapuló térképfejlesztés, melynek célja egy szabadon szerkeszthető és felhasználható térkép készítése az egész világról.", - "pinterest":"A Pinterest egy amerikai közösségi képmegosztó weboldal. A szolgáltatás lehetővé teszi, hogy a regisztrált felhasználók témák szerint rendezetten fényképeket osszanak meg egymással. Az oldal önmeghatározása szerint arra való, hogy összekösse a világot azon képek által, melyeket a felhasználók fontosnak tartanak. A Pinterestet a Cold Brew Labs, egy Palo Altóban lévő 16 fős csapat üzemelteti.", - "piratebay":"A svéd The Pirate Bay (TPB) a világ egyik legnagyobb torrentoldala. Az Alexa Internet statisztikái Archiválva 2011. december 13-i dátummal a Wayback Machine-ben szerint a TPB látogatottság alapján a 89. helyen áll. A portál nem tartalmaz illegális tartalmakat, csak a fájlcserét segítő információt (metaadatokat).", - "reddit":"A Reddit egy közösségi weboldal, amelyen a felhasználók megoszthatják híreiket, képeiket és cikkeiket az ún. \"subredditeken\" (alredditeken). Kizárólag a regisztrált felhasználók adhatnak hozzá tartalmat, illetve értékelhetik a már meglévőket a \"fel\" és \"le\" nyilak segítségével. Több nyelven, köztük magyarul is elérhető.", - "soundcloud":"A SoundCloud egy svéd alapítású, németországi székhelyű platform, ingyenes és fizetős zenei streaming szolgáltatásként, közösségi oldalként és online zeneáruházként működik. Eredetileg azért jött létre, hogy a zenészek számára kollaboratív tartalomszerkesztést biztosítson, azáltal, hogy megoszthatják felvételeiket és ezt értékelhetik, később azonban a hangsúly inkább a kész dalok közzétételére és véleményezésére helyeződött át, ezáltal az oldal egyfajta, jobbára amatőr és félprofi audio-művészeti közösségi oldallá fejlődött. Az ingyenes változat összességében korlátozott időtartamú audio felvétel feltöltését engedi - a hangmintáktól és hangszertesztektől komplett dalokon át egészen a több órás élő és bootleg felvételekig. A SoundCloud néhány hónap alatt a Myspace egyik legnagyobb riválisa lett. 2014 decemberi adatok szerint a platform 175 millió egyedi látogatót vonz és az alkotók percenként 12 órányi hangfelvételt töltenek fel rá.", - "tagesschau":"A Tagesschau az ARD német regionális közmédiumokat tömörítő társaság híradója, amit az ARD-aktuell szerkesztősége készít és naponta több kiadással jelentkezik a Das Erste csatornán. A hamburgi Norddeutscher Rundfunk (NDR) készíti.", - "youtube":"A YouTube nyilvános videómegosztó webhely, ahol a felhasználók videókat tölthetnek fel és nézhetnek meg. Székhelye a kaliforniai San Brunóban található. A Time magazin a 2006-os év találmányának választotta a honlapot.", - "dailymotion":"A Dailymotion egy francia videómegosztó weboldal, ami a francia Vivendi médiakonglomerátum leányvállalata. A székhelyük Párizsban található, de 2005-ös alapítása óta nyílt irodája Londonban, San Franciscóban, Szingapúrban és Abidjanban is. Az oldal 2017-re elérte a havi 300 millió egyedi látogatót.", - "vimeo":"A Vimeo egy 2004-ben, az Egyesült Államokban létrehozott videómegosztó webhely.", - "wikibooks":"A Wikikönyvek egy, a Wikimédia Alapítvány által fenntartott, önkéntesek munkáján alapuló vállalkozás, célja teljes könyveket, leírásokat készíteni a Wiki módszer segítségével.", - "wikinews":"A Wikihírek egy nyílt tartalmú wiki hírforrás, melyet a Wikimédia Alapítvány üzemeltet. Jimmy Wales választotta külön a Wikihíreket a Wikipédiától azzal a szándékkal, hogy „a Wikihírekben minden hír, hírként szerepeljen, és ne lexikoncikként.” A Wikihírek, a többi hasonló nyílt tartalmú hírlapoktól, elsősorban a semleges nézőpont irányelv alkalmazásában különbözik. Hasonló nyílt tartalmú hírlapok például a OhmyNews és az Indymedia, mindkettő angol nyelven. A magyar nyelvű wikihírek 2008 májusának végén indult el.", - "wikiquote":"A Wikidézet a Wikimédia alapítvány fenntartásával működő, kollektív munkára épülő webes kezdeményezés. A Wikidézetet Daniel Alston ötlete alapján hozták létre, célja a híres emberektől, jelentős irodalmi alkotásokból és filmekből származó idézetek, illetve közmondások összegyűjtése. A Wikimédia-projektcsalád többi tagjához hasonlóan a Wikidézetek is több nyelven elérhető. A magyar Wikidézet projektet 2004. október 5-én indította el Gervai Péter.", - "wikisource":"A Wikiforrás a Wikimédia Alapítvány által fenntartott Wikipédia webhely azon része, mely eredeti forrásszövegeket tartalmaz, mint amilyenek például az alkotmányok és egyezmények szövegei, vagy a szépirodalmi művek.", - "wikispecies":"A Wikifajok vagy Wikispecies a Wikimédia Alapítvány által fenntartott projekt. Nyílt, szabad gyűjteménye a fajoknak.", - "wiktionary":"A Wikiszótár a Wikipédia testvéroldala, melynek célja szabad szótár készítése minden nyelvre. Ötletgazdája Daniel Alston. 2002. december 12-én indult. A Wikiszótár magyar változata, a magyar Wikiszótár 2004. május 2-án indult.", - "wikiversity":"A Wikiegyetem egy Wikimédia Alapítvány projekt, amely tanuló közösségeket és a tananyagaikat támogatja.", - "wikivoyage":"A Wikivoyage a Wikimédia Alapítvány ingyenes internetes útikönyve. A neve a Wiki és a francia voyage szóból áll. Az új wikiprojekt 2013. január 15-én, a Wikipédia alapításának 12. évfordulója évében, napra a születésnapján startolt. 24 nyelven érhető el: angolul, németül, hollandul, oroszul, svédül, olaszul, portugálul, franciául, spanyolul, kínaiul, finnül, görögül, héberül, perzsául, lengyelül, románul, ukránul, vietnámiul, törökül, japánul, hindiül, pastuul, bengáliul és eszperantóul.", - "wikicommons.images":"A Wikimédia Commons ingyenes és szabadon felhasználható képeket, hangfelvételeket és egyéb multimédia fájlokat tartalmazó katalógus, a Wikimédia Alapítvány többnyelvű projektjeinek egyike.", - "dictzone":[ - "DictZone online szótár, fordító - Magyarország leggyorsabb szótára Angol-magyar, német-magyar, francia-magyar és még több mint 90 nyelvpár! Hangos szótár.", - "https://dictzone.com/" - ], - "seznam":[ - "cseh internetes portál és keresőmotor", - "wikidata" - ], - "naver":"A Naver dél-koreai internetes portál és keresőmotor, melyet 1999-ben hozott létre egy korábbi Samsung-alkalmazott. A Naver saját keresőmotort fejlesztett, ami kifejezetten koreai nyelvű tartalomra specializálódik. 2009-ben a keresőmotorok között az ötödik helyen szerepelt a világon, a Google, a Yahoo!, a Baidu és a Microsoft után. A Naver a koreai piac domináns keresője, a keresések mintegy 70%-át itt bonyolítják és mintegy 25 millió felhasználónak ez a kezdőoldala a böngészőben. A Woori Investment and Securities elemzése szerint a Google-nek azért nem sikerült megvetnie a lábát a koreai piacon a Naverrel szemben, mert túl kevés koreai nyelvű tartalmat szolgáltat.", - "wttr.in":[ - "Időjárás előrejelzés: Boydton, Virginia, United States", - "https://wttr.in" - ], - "goo":"A goo egy japán internetes keresőmotor és webportál, amely összegyűjti és indexeli a japán nyelvű weboldalakat. A goot a japán NTT Resonant, az NTT Communications egyik leányvállalata működteti." - }, - "ia":{ - "wikipedia":"Wikipedia es un encyclopedia in linea scripte e mantenite per un communitate de voluntarios, cognoscite como wikipedistas, a traverso del collaboration aperte e utilisante un systema de edition basate in wiki nomine MediaWiki. Wikipedia es le obra de refentia plus grande e plus legite del historia, e ha essite systematicamente un del 10 sitos de rete plus populares. Create per Jimmy Wales e Larry Sanger le 15 de januario de 2001, esse allogiate in le Fundation Wikimedia, un organization statounitese sin scopo lucrative.", - "wikidata":"Wikidata es un base de cognoscentia modificate in collaboration e implementate per le Fundation Wikimedia. Illo es concipite pro fornir un fonte commun de typos de datos secur que pote esser usate per projectos Wikimedia como Wikipedia. Isto es simile al maniera que Wikimedia Commons forni un immagazinage central pro files multimedial pro accesso ab omne projectos Wikimedia. Wikidata es actionate per le software Wikibase.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google images":[ - "Google Imagines. Le recerca de imagines le plus comprehensive del web.", - "https://images.google.com" - ], - "youtube":"YouTube es un sito web, loco pro observar videos fundate in februario 2005 del cooperatores temporal del PayPal Chad Hurley, Steve Chen e Jawed Karim. Super iste sito web le usatores pote spectar parve filmes, como currente de datos transportate al computator del audiente, e supercargar proprie parve filmes. Le 9 de octobre 2006 Google annunciava su emption de YouTube.", - "wiktionary":"Wiktionario es un dictionario multilingue in linea, liberemente modificabile e distribuibile sub un licentia Creative Commons. Con su projectos-fratres includente Wikipedia, Wiktionario es sub gerentia del Fundation MediaWiki.", - "wikicommons.images":"Le projecto Wikimedia Commons es un repositorio de imagines, sono e altere archivos multimedia de contento libere. Como Wikipedia, illo es un projecto del Wikimedia Foundation. Illo provide un repositorio commun de ressources pro tote le projectos Wikimedia in qualcunque lingua. Pro cargar nove imagines il es necessari haber un usator.", - "yacy":"YaCy ([ja:si:]) es un motor de recerca discentralisate qui creava un gruppo de activistas qui supporta le idea de programmatura en codice aperite. Dispare altere motores de recerca popular, como Google e Bing, YaCy non functiona per uso de grande centros de processamento de datos (CPD). In loco de usar CPDes, le principio basic de YaCy es nominate peer-to-peer (P2P). In consequentia de usar un mechanismo P2P, le discos dur de usatores es usate pro conservar le datos del sitos web que es ja listate. Ancora le uso de P2P face le censura del web multo difficile.", - "yacy images":[ - "yacy:ia", - "ref" - ] - }, - "id":{ - "9gag":"9GAG merupakan sebuah situs komedi daring yang menampilkan berbagai media visual baik gambar ataupun video. 9gag dibuat pada tahun 2008 oleh Ray Chan, Chris Chan, Marco Fung, Brian Yu, dan Derek Chan. 9gag adalah startup yang berbasiskan di Hong Kong dengan sebuah platform terbuka dan kolaboratif, situs ini memberikan kemudahan bagi para pengguna dalam menyebarkan hiburan visual secara cepat dan mudah. Situs 9gag ini telah dikunjungi lebih dari 65 juta pengunjung dan lebih dari satu miliar tampilan halaman per-bulan. 9gag memiliki komunitas pengguna paling aktif dari setiap situs komedi daring lainnya.", - "apple app store":"App Store adalah platform distribusi aplikasi untuk iOS yang dikembangkan dan dikelola Apple. Layanan ini memungkinkan pengguna menjelajah dan mengunduh aplikasi yang dikembangkan dengan Apple iOS SDK. Aplikasi dapat diunduh langsung ke sebuah perangkat iOS atau komputer pribadi melalui iTunes.", - "artic":"Institut Kesenian Chicago adalah museum kesenian yang didirikan pada 1879 dan terletak di Grant Park, Chicago, adalah salah satu museum seni rupa tertua dan terbesar di Amerika Serikat. Diakui karena upaya kuratorialnya dan popularitasnya di kalangan pengunjung, museum tersebut didatangi sekitar 1.5 juta tamu setiap tahun.", - "arxiv":"arXiv adalah tempat penyimpanan pracetak elektronik makalah ilmiah di bidang matematika, fisika, astronomi, ilmu komputer, biologi kuantitatif, statistika, dan keuangan kuantitatif, yang dapat diakses secara daring. Di berbagai bidang matematika dan fisika, hampir seluruh makalah ilmiahnya terarsipkan sendiri di arXiv. arXiv.org dirintis pada tanggal 14 Agustus 1991 dan berhasil mencetak artikel ke-500.000 pada 3 Oktober 2008. Pada tahun 2014, tingkat publikasinya naik menjadi 8.000 makalah setiap bulannya. Pada Oktober 2016, pengiriman makalah telah meningkat menjadi lebih dari 10.000 makalah per bulan.", - "bandcamp":"Bandcamp adalah perusahaan musik internet yang didirikan pada 2008 oleh Ethan Diamond dan pemrogram Shawn Grunberger, Joe Holt and Neal Tucker,", - "wikipedia":"Wikipedia adalah proyek ensiklopedia daring multibahasa yang bebas dan terbuka, yang dijalankan oleh Yayasan Wikimedia, organisasi nirlaba yang berbasis di Florida, Amerika Serikat. Nama Wikipedia berasal dari gabungan kata wiki dan ensiklopedia. Wikipedia dirilis pada tahun 2001 oleh Jimmy Wales dan Larry Sanger, dan sering digunakan sebagai karya referensi yang populer di Internet. Proyek Wikipedia bertujuan untuk memberikan ilmu pengetahuan untuk khalayak umum.", - "bilibili":"Bilibili adalah sebuah situs web berbagi video bertema animasi, komik dan permainan yang berbasis Tiongkok, di mana para pengguna dapat mengajukan, melihat dan menambahkan subjudul komentar pada video-video. Bilibili memakai Adobe Flash atau HTML5, yang dapat diubah secara manual", - "bing":"Microsoft Bing merupakan situs mesin pencari web yang bernaung di bawah bendera Microsoft. Bing merupakan bentuk reinkarnasi yang dilakukan Microsoft terhadap ketiga mesin pencari produksinya terdahulu, yakni Live Search, Windows Live Search, dan MSN Search.", - "bing images":[ - "bing:id", - "ref" - ], - "bing news":[ - "Berita dari sumber berita dunia, nasional, dan lokal, diatur untuk memberikan Anda liputan berita mendalam tentang olahraga, hiburan, bisnis, politik, cuaca, dan lainnya.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Pencarian cerdas dari Bing mempermudah Anda menemukan apa yang Anda cari dengan cepat dan memberikan hadiah.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket adalah sebuah layanan hosting yang berbasis web untuk kode sumber dan pembangunan proyek yang menggunakan Mercurial ataupun sistem kendali versi Git yang dimiliki oleh Atlassian. Bitbucket menawarkan paket akun komersial dan gratis. Akun gratis tersebut menawarkan sebuah layanan repositori dengan jumlah yang tidak terbatas sejak bulan September 2010. Bitbucket terintegrasi dengan perangkat lunak Atlassian lain seperti Jira, HipChat, Confluence dan Bamboo.", - "crossref":"Secara etimologis, CrossRef berasal dari kata \"cross\" dan “reference\". Oleh karena itu, Rujukan silang/CrossRef bisa didefinisikan sebagai pembanding dari dua atau lebih sumber informasi. CrossRefadalah lembaga pendaftaran Digital Object Identifier (DOI)resmi yang dikeluarkan pada tahun 2000 sebagai kerja sama antar penerbit untuk membuat sebuah linking referensi lintas penerbit pada jurnal ''online''. CrossRef merupakan implementasi paling kuat dari model DOI. Sekarang, CrossRef telah memiliki jutaan interlink dengan beragam item termasuk jurnal, buku, laporan, hingga data set. Ini adalah sistem yang dipakai secara universal di Eropa dalam industri penerbitan jurnal ilmiah. Tujuan dari CrossRef adalah untuk memfasilitasi kreasi jaringan dari referensi pada jurnal online ke artikel halaman.", - "curlie":"Proyek Direktori Terbuka, dikenal dengan nama Dmoz adalah sebuah direktori konten terbuka multibahasa dari World Wide Web, direktori ini dimiliki oleh AOL, tetapi disusun dan dirawat oleh sekumpulan editor sukarela dari sebuah komunitas maya. Direktori ODP tidak mencari keuntungan dalam mendaftarkan situs-situs web yang dikirimkan. ODP menggunakan skema hierarkis ontologi untuk mengatur daftar situs-situs web dalam direktorinya. Daftar situs-situs web dalam direktori ODP yang memiliki topik serupa dikelompokkan ke dalam sebuah kategori, yang dapat mencakup kategori yang lebih kecil.", - "currency":"DuckDuckGo adalah mesin pencari internet yang menggunakan informasi dari berbagai sumber, seperti situs web urun sumber (crowdsourced) layaknya Wikipedia dan dari kemitraan dengan mesin pencari lain seperti Yandex, Yahoo, Bing serta WolframAlpha untuk mendapatkan hasilnya. Kebijakan mesin pencari menyatakan akan melindungi privasi pengguna, dan tidak merekam informasi mereka. Karena pengguna tidak diprofilkan, \"Filter gelembung\" dapat dihindari, dengan semua pengguna yang menunjukkan hasil pencarian yang sama untuk istilah pencarian tertentu.", - "deezer":"Deezer adalah Layanan streaming musik berbasis internet yang memungkinkan pengguna mendengarkan konten musik dari label rekaman termasuk Universal Music Group, Sony Music dan Warner Music Group serta podcast melalui berbagai perangakat online atau offline. Deezer dibuat di Paris, Prancis dan saat ini memiliki 56 juta lagu berlisensi di katalognya, 100 juta playlist, 16 juta pengguna aktif bulanan, serta 7 juta pelanggan berbayar pada Januari 2019. Layanan ini tersedia untuk Web, Android, iOs, Windows Mobile, BlackBerry OS, Windows dan MacOS.", - "deviantart":"DeviantArt adalah sebuah komunitas maya untuk pembuat-pembuat seni yang telah diluncurkan pada 7 Agustus 2000. Tujuan DeviantArt adalah untuk menyediakan tempat bagi para seniman untuk memamerkan serta membicarakan karya-karya mereka.", - "ddg definitions":[ - "currency:id", - "ref" - ], - "wikidata":"Wikidata adalah Wiki multibahasa yang diedit secara kolaboratif dan diselenggarakan oleh Yayasan Wikimedia. Situs ini adalah wadah penyimpanan data terbuka untuk proyek Wikimedia seperti Wikipedia dan siapa pun di bawah lisensi domain publik CC0. Wikidata adalah wiki yang didukung oleh perangkat lunak MediaWiki dan didukung oleh kumpulan grafik pengetahuan ekstensi MediaWiki yang dikenal sebagai Wiki.", - "duckduckgo":[ - "currency:id", - "ref" - ], - "duckduckgo images":[ - "currency:id", - "ref" - ], - "duckduckgo videos":[ - "currency:id", - "ref" - ], - "duckduckgo news":[ - "currency:id", - "ref" - ], - "duckduckgo weather":[ - "currency:id", - "ref" - ], - "apple maps":[ - "perangkat lunak Apple Inc.", - "wikidata" - ], - "etymonline":"Kamus Etimologi Daring adalah sebuah kamus gratis daring yang menjelaskan tentang asal-usul (etimologi) kata-kata bahasa Inggris.", - "fdroid":[ - "F-Droid adalah katalog aplikasi FOSS (Perangkat Lunak Bebas dan Sumber Terbuka) yang dapat diinstal untuk platform Android. Klien F-Droid memudahkan untuk menelusuri, menginstal, dan melacak pembaruan pada perangkat Anda.", - "https://f-droid.org/" - ], - "flickr":"Flickr adalah situs web untuk berbagi foto dan situs komunitas daring yang merupakan contoh dari aplikasi Web 2.0. Sebagai situs web yang populer untuk berbagi foto pribadi, layanan ini dimanfaatkan oleh banyak blogger sebagai tempat penyimpanan foto. Popularitasnya bertambah seiring peralatan komunitas online yang inovatif yang memperbolehkan foto-foto diberi tanda dan dicari secara folksonomi.", - "free software directory":[ - "katalog Perangkat Lunak Bebas, proyek dari Yayasan Perangkat Lunak Bebas", - "wikidata" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab adalah sebuah manajer repositori Git berbasis web dengan fitur wiki dan pelacakan masalah, menggunakan lisensi sumber terbuka, dikembangkan oleh GitLab Inc. Perangkat lunak ini ditulis oleh Dmitriy Zaporozhets dan Valery Sizov dari Ukraina. Kode yang ditulis adalah Ruby. Kemudian, beberapa bagian telah ditulis ulang di Go. Pada bulan Desember 2016, GitLab memiliki 150 anggota tim dan lebih dari 1400 kontributor sumber terbuka. GitLab telah digunakan oleh organisasi seperti IBM, Sony, Jülich Research Center, NASA, Alibaba, Invincea, O’Reilly Media, Leibniz-Rechenzentrum (LRZ), CERN., dan SpaceX.", - "github":"GitHub adalah layanan hos web bersama untuk proyek pengembangan perangkat lunak yang menggunakan sistem kendali versi Git dan layanan hosting internet. Hal ini banyak digunakan untuk kode komputer. Ini memberikan kontrol akses dan beberapa fitur kolaborasi seperti pelacakan bug, permintaan fitur, manajemen tugas, dan wiki untuk setiap proyek.", - "google":"Google Penelusuran adalah mesin pencari web yang dimiliki Google LLC. Google Penelusuran adalah mesin pencari yang paling banyak digunakan di dunia maya. Sekian ratus juta kueri dimasukkan setiap harinya oleh para peselancar web melalui berbagai macam layanan yang disediakan.", - "google images":"Google Images adalah layanan pencarian yang dibuat oleh Google dan diperkenalkan pada bulan Juli 2001. Layanan ini memungkinkan pengguna mencari konten gambar di web. Kata kunci pencarian gambar didasarkan pada nama berkas gambar, teks tautan yang mengacu ke gambar, dan teks di dekat gambar. Saat mencari gambar, miniatur gambar yang cocok dengan kueri pencarian tersebut akan ditampilkan. Ketika pengguna mengklik miniatur tersebut, gambar tersebut ditampilkan di dalam kotak yang menimpa situs web sumbernya. Pengguna kemudian bisa menutup kotak dan menelusuri situs tersebut atau melihat gambar dalam ukuran penuh.", - "google news":"Google Berita merupakan layanan kompilasi berita yang secara otomatis menampilkan berita dari berbagai media. Google News juga menyediakan layanan pencarian berita dengan hasil pencarian berupa-berita yang sesuai dengan kata kunci. Berita yang muncul di baris pertama hasil pencarian adalah berita yang paling banyak dibaca dan yang terbaru. Meski berita-berita sudah diseleksi secaraa otomatis, tetapi situs-situs berita yang muncul dalam layanan ini dipilih secara menual oleh pengguna. Google News menyediakan fitur News Archives Search untuk mencari berita-berita lama.", - "google videos":"Google Videos merupakan layanan saling berbagi video dari situs Google. Lewat layanan ini bahkan pengguna Blogspot/Blogger tidak perlu login untuk dapat memajang video sebagai suntingan. Google Video menyediakan layanan video yang mudah digunakan.", - "google scholar":"Google Cendekia adalah layanan yang memungkinkan pengguna untuk melakukan pencarian materi-materi pelajaran berupa teks dalam berbagai format publikasi. Diluncurkan pada tahun 2004, indeks Google Cendekia mencakup jurnal-jurnal daring dari publikasi ilmiah. Google Cendekia menyediakan cara yang mudah untuk mencari literatur akademis secara luas. Seseorang dapat mencari di seluruh bidang ilmu dan referensi dari satu tempat: makalah peer-reviewed, tesis, buku, abstrak, dan artikel, dari penerbit akademis, komunitas profesional, pusat data pracetak, universitas, dan organisasi akademis lainnya. Google Cendekia akan membantu seseorang mengidentifikasi penelitian paling relevan dari seluruh penelitian akademis. Google Cendekia bertujuan menyusun artikel seperti yang dilakukan peneliti, dengan memperhatikan kelengkapan teks setiap artikel, penulis, publikasi yang menampilkan artikel, dan frekuensi penggunaan kutipan artikel dalam literatur akademis lainnya. Hasil paling relevan akan selalu muncul pada halaman pertama.", - "google play apps":"Google Play, sebelumnya Android Market, adalah layanan distribusi digital yang dioperasikan dan dikembangkan oleh Google. Ini berfungsi sebagai toko aplikasi resmi untuk sistem operasi Android, yang memungkinkan pengguna untuk menelusuri dan mengunduh aplikasi yang dikembangkan dengan Android software development kit (SDK) dan diterbitkan melalui Google. Google Play juga berfungsi sebagai toko media digital, yang menawarkan program musik, buku, film, dan televisi. Ini sebelumnya menawarkan perangkat keras Google untuk pembelian sampai diperkenalkannya pengecer perangkat keras online yang terpisah, Google Store, pada 11 Maret 2015, dan juga menawarkan publikasi berita dan majalah sebelum perbaikan Google News pada 15 Mei 2018.", - "google play movies":[ - "google play apps:id", - "ref" - ], - "hackernews":"Hacker News adalah situs web berita sosial berfokus pada ilmu komputer dan kewirausahaan. Dijalankan oleh dana investasi Paul Graham dan inkubator startup, Y Combinator. Secara umum, konten yang dapat dikirimkan didefinisikan sebagai \"segala sesuatu yang memuaskan keingintahuan intelektual seseorang\".", - "hoogle":"Haskell adalah bahasa pemrograman fungsional murni. Nama bahasa pemrograman Haskell diambil dari nama seseorang matematikawan Haskell Curry, yang terkenal akan karyanya di bidang combinatory logic. Haskell hanya mengenal expression dan equation.", - "imdb":"IMDb adalah sebuah basis data daring informasi yang berkaitan dengan film, acara televisi, video rumahan, dan permainan video, dan acara internet, termasuk daftar pemeran, biografi kru produksi dan personil, ringkasan alur cerita, trivia, dan ulasan serta penilaian oleh penggemar. Sebuah fitur penggemar tambahan, papan pesan, telah dinonaktifkan pada Februari 2017. Awalnya situs ini dioperasikan oleh penggemar, lalu basis data kemudian dimiliki dan dioperasikan oleh IMDB.com Inc., sebuah anak perusahaan dari Amazon.", - "imgur":"Imgur adalah sebuah layanan hos gambar online yang didirikan oleh Alan Schaaf di Athens, Ohio, Amerika Serikat. Imgur menggambarkan dirinya sebagai \"rumah untuk gambar paling populer di web, diurus secara waktu nyata oleh komunitas yang mendedikasikan dirinya melalui komentar, pemilihan,dan berbagi. Imgur menyediakan hos gambar gratis kepada jutaan pengguna dalam sehari, dan merupakan komunitas sosial bebrbasis komentar. Perusahaan tersebut membiayai dirinya sendiri melalui keuntungan yang didapat dari penjualan iklan, akun Pro, hos komersial dan merchandise.", - "kickass":"KickassTorrents (KAT) adalah penyelenggara direktori berkas torrent dan pranala magnet untuk memfasilitasi berbagi berkas peer-to-peer dalam protokol BitTorrent, didirikan tahun 2008. Hingga November 2014, situs ini menjadi direktori BitTorrent yang paling banyak dikunjungi di dunia, menyalip The Pirate Bay, berdasarkan peringkat Alexa. KAT menjadi luring pada 20 Juli 2016 ketika situs tersebut disita Pemerintah Amerika Serikat. Peladen proksi situs ditutup oleh pegawainya pada saat yang bersamaan.", - "library genesis":"Library Genesis atau LibGen adalah mesin pencari artikel ilmiah dan buku yang menggratiskan akses ke konten berbayar. Selain itu, LibGen menyimpan berkas PDF dari portal web ScienceDirect Elsevier.", - "z-library":"Z-Library adalah proyek perpustakaan bayangan untuk akses berbagi file ke artikel jurnal ilmiah, teks akademik, dan berbagai buku yang umumnya merupakan bajakan. Per 15 September 2021, Z-Library mengklaim bahwa ia menyediakan akses ke lebih dari 8.533.000 buku dan 84.837.000 artikel. Z-library menggambarkan dirinya sebagai organisasi nirlaba yang didukung oleh donasi.", - "library of congress":"Perpustakaan Kongres Amerika Serikat merupakan perpustakaan penelitian Amerika Serikat yang secara resmi melayani Kongres Amerika Serikat dan secara de facto merupakan perpustakaan nasional Amerika Serikat. Lembaga ini merupakan lembaga kultural federal tertua di Amerika Serikat. Perpustakaan ini bertempat pada tiga gedung Capitol Hill di Washington, D.C.; dan merupakan penyokong bagi pusat konservasi di Culpeper, Virginia. Fungsi dari perpustakaan diawasi oleh Pustakawan Kongres, dan bangunannya dikelola oleh Arsitek Capitol. Perpustakaan Kongres Amerika Serikat merupakan salah satu perpustakaan terbesar di dunia. Kepala perpustakaan disebut Librarian of Congress. \"Koleksinya bersifat universal, tidak dibatasi oleh subjek, format, atau batas negara, dan mencakup bahan penelitian dari seluruh belahan dunia serta lebih dari 450 bahasa.\" Katalog perpustakaan ini mendaftar lebih dari 32 juta judul bahan pustaka yang ditulis dalam 470 bahasa. Perpustakaan juga menyimpan koleksi 61 juta manuskrip, dan koleksi buku langka terbesar di Amerika Utara, termasuk naskah Deklarasi Kemerdekaan Amerika Serikat dan Kitab Gutenberg. Selain itu, perpustakaan menyimpan lebih dari 1 juta judul terbitan pemerintah Amerika Serikat, 1 juta terbitan surat kabar dari seluruh dunia selama 3 abad terakhir, 33.000 volume surat kabar yang dijilid, 500.000 gulung mikrofilm, lebih dari 6.000 judul buku komik, dan koleksi literatur hukum terbesar di dunia. Koleksi bahan nonbuku terdiri dari film, 4,8 juta judul peta, lembar musik, 2,7 juta judul rekaman suara, lebih dari 13,7 juta lembar foto, serta biola Betts Stradivarius dan Cassavetti Stradivarius.", - "lobste.rs":[ - "situs web berita sosial yang bertema ilmu komputer", - "wikidata" - ], - "mastodon users":"Mastodon adalah perangkat lunak sumber terbuka dan gratis untuk menjalankan layanan jejaring sosial yang di-hosting sendiri. Perangkat lunak ini memiliki fitur microblogging yang mirip dengan layanan Twitter, yang ditawarkan oleh sejumlah besar peladen atau server Mastodon yang dijalankan secara independen, masing-masing dengan aturan peladen dan ketentuan penggunaan masing-masing.", - "mastodon hashtags":[ - "mastodon users:id", - "ref" - ], - "metacpan":"CPAN singkatan dari adalah Repositori yang berisi 200.118 Modul dari 36.414 distribusi perangkat lunak yang ditulis dalam bahasa pemrograman Perl yang dikembangkan oleh 13.505 kontributor dari seluruh dunia. Perangkat lunak yang ada di CPAN adalah Perangkat lunak bebas dan kode sumbernya terbuka.", - "npm":"npm adalah sebuah manajer paket untuk bahasa pemrograman JavaScript yang menjadi manajer baku untuk lingkungan runtime Node.js. npm terdiri dari klien baris perintah yang disebut npm, dan sebuah pangkalan data daring yang berisi paket publik dan paket pribadi berbayar, yang disebut npm registry. Registry dapat diakses melalui klien, dan ketersediaan paket dapat dicari melalui situs web npm. Manajer paket dan registry dikelola oleh npm, Inc.", - "openstreetmap":"OpenStreetMap (OSM) adalah proyek kolaborasi pembuatan peta dunia yang bebas disunting. Dua penggerak utama di balik perintisan dan pertumbuhan OSM adalah terbatasnya penggunaan atau ketersediaan informasi peta di sebagian besar wilayah dunia dan maraknya perangkat navigasi satelit portabel yang terjangkau.", - "pinterest":"Pinterest adalah virtual pinboard di mana Anda bisa mengunggah foto atau gambar yang bisa dimasukkan ke dalam kategori-kategori yang bisa di customize namanya. Semisal kategori 'food and drink' di mana berisi foto dan gambar makanan dan minuman. Anda juga bisa mengikuti akun lain dan re-pin pin milik akun lain tanpa harus mengikuti pemilik pinboard. Nah bila Anda belum memiliki akun Pinterest, Anda bisa mengikuti tutorial singkat seputar membuat akun Pinterest dan menggunakannya di bawah ini.", - "piratebay":"The Pirate Bay (TPB) adalah pengindeks konten digital media hiburan dan perangkat lunak berbasis BitTorrent. Didirikan pada tahun 2003 oleh wadah pemikir Swedia Piratbyrån, TPB ditujukan bagi setiap pengguna yang hendak mencari, mengunduh, dan menyumbangkan pranala ke berkas torrent, serta memfasilitasi berbagi berkas secara peer-to-peer di antara pengguna protokol BitTorrent.", - "pypi":"Python Package Index, disingkat PyPI dan juga dikenal sebagai Cheese Shop, adalah repositori perangkat lunak pihak ketiga resmi untuk Python. PyPI dapat disamakan dengan CPAN, repositori untuk Perl. Beberapa manajer paket, termasuk pip, menggunakan PyPI sebagai sumber standar untuk paket dan dependensinya. Lebih dari 113.000 paket Python yang dapat diakses melalui PyPI.", - "reddit":"Reddit (/ˈrɛdɪt/) adalah sebuah situs web agregasi berita sosial, pemeringkatan konten, dan diskusi asal Amerika Serikat. Pengguna terdaftar mengirimkan konten ke situs tersebut seperti tautan, posting teks, gambar, dan video, yang kemudian di \"upvote\" atau \"downvote\" oleh setiap anggota lainnya. Kiriman tersebut kemudian diatur berdasarkan subjek ke dalam sebuah papan grup yang dibuat oleh pengguna yang disebut \"communities\" atau \"subreddits\". Kiriman dengan lebih banyak upvote muncul di bagian atas subreddit mereka dan, jika mereka masih mendapatkan lebih banyak upvote lagi secara signifikan, maka pada akhirnya kiriman tersebut akan muncul di halaman utama depan situs. Administrator Reddit memoderasi subreddits. Moderasi juga dilakukan oleh moderator khusus dari setiap komunitas, dan bukan karyawan Reddit. Situs ini dioperasikan oleh Reddit Inc., yang berbasis di San Francisco.", - "soundcloud":"SoundCloud adalah platform distribusi audio online dan situs web berbagi musik yang didirikan di Swedia yang berbasis di Berlin, Jerman yang memungkinkan penggunanya untuk mengunggah, mempromosikan, dan berbagi audio. Dimulai pada tahun 2007 oleh Alexander Ljung dan Eric Wahlforss, SoundCloud telah berkembang menjadi salah satu layanan streaming musik terbesar. SoundCloud menawarkan keanggotaan gratis dan berbayar di platform, tersedia untuk desktop dan perangkat seluler.", - "stackoverflow":[ - "jaringan situs tanya dan jawab", - "wikidata" - ], - "askubuntu":[ - "stackoverflow:id", - "ref" - ], - "superuser":[ - "stackoverflow:id", - "ref" - ], - "yahoo news":"Yahoo! News adalah sebuah pembaca umpan berbasis Internet yang disediakan Yahoo!. Situs ini menampilkan fitur berita Top Stories, U.S. National, World, Business, Entertainment, Science, Health, Weather, Most Popular, News Photos, Op/Ed, dan Local.", - "youtube":"YouTube adalah sebuah situs web berbagi video asal Amerika Serikat yang dibuat oleh tiga mantan karyawan PayPal pada Februari 2005. Situs web ini memungkinkan pengguna mengunggah, menonton, dan berbagi video. Perusahaan ini berkantor pusat di San Bruno, California, dan memakai teknologi Adobe Flash Video dan HTML5 untuk menampilkan berbagai macam konten video buatan pengguna/kreator, termasuk klip film, klip TV, dan video musik. Selain itu, konten amatir seperti blog video, video orisinal pendek, dan video pendidikan juga ada dalam situs ini.", - "dailymotion":"Dailymotion adalah suatu situs berbagi video secara daring yang menduduki peringkat ke dua setelah situs Youtube. DailyMotion bepusat di Paris, Prancis, dengan menawarkan isi konten yang terdiri dari gabungan video baik secara amatir maupun professional. Seperti situs berbagi video lainnya, DailyMotion mengizinkan penggunanya untuk mengunggah, melihat, mencari, dan membagikan video yang mereka inginkan. Tahun 2009, situs Dailymotion berhasil menambahkan 16.000 video baru setiap harinya.", - "vimeo":"Vimeo adalah situs layanan berbagi video yang memungkinkan penggunanya untuk mengunggah, berbagi, dan menonton video. Vimeo diciptakan oleh Jake Lodwick dan Zach Klein pada November 2004.", - "wikibooks":"Wikibuku adalah proyek yang sama dengan Wikipedia dan merupakan bagian dari Wikimedia Foundation yang dimulai pada 10 Juli 2003.", - "wikinews":"Wikinews atau Wikiberita adalah sebuah wiki yang berhubungan dengan aktualitas atau berita-berita yang masih hangat. Versi bahasa Indonesia dari Wikinews masih berada di Wikimedia Incubator. Seperti Wikipedia, situs ini juga dikelola oleh yayasan Wikimedia.", - "wikiquote":"Wikikutip adalah proyek saudara dari Wikipedia, yang menggunakan perangkat lunak MediaWiki yang sama. Merupakan salah satu keluarga dari proyek berbasis wiki yang dijalankan oleh Yayasan Wikimedia. Didasarkan oleh gagasan Daniel Alston dan diimplementasikan oleh Brion Vibber, tujuan proyek ini adalah untuk menghasilkan referensi luas mengenai kutipan secara kolaboratif (bekerja-sama) dari orang-orang terkemuka, buku dan ungkapan, dan untuk memberikan detail mengenai mereka.", - "wikisource":"Wikisumber adalah sebuah proyek Wikimedia yang bertujuan membangun sebuah perpustakaan wiki dengan isi bebas yang terdiri dari naskah-naskah sumber pertama, serta terjemahan naskah-naskah sumber ke dalam bahasa apapun dan bahan-bahan pendukungnya. Alamatnya berada di www.wikisource.org. Versi bahasa Indonesia beralamat di id.wikisource.org.", - "wikispecies":"Wikispecies atau Wikispesies adalah sebuah proyek yang didukung oleh Yayasan Wikimedia yang bertujuan membuat portal isi bebas mengenai spesies-spesies. Wikispecies mencakup hewan, tumbuhan, jamur, bakteri dan semua makhluk hidup lainnya dan akan dikembangkan secara khusus dengan Wikipedia.", - "wiktionary":"Wikikamus adalah proyek kerabat Wikipedia yang ditujukan sebagai kamus wiki bebas dalam berbagai banyak bahasa. Wiktionary dalam edisi bahasa Inggris dibuka pertama kali pada tanggal 12 Desember 2002 sebagai tindak lanjut proposal Daniel Alston. Pada 29 Maret 2004, Wiktionary dalam edisi bahasa lainnya, yaitu bahasa Prancis dan bahasa Polski, mulai dibuka. Sejak saat itu, Wiktionary dalam edisi bahasa lainnya pun mulai dibuka. Pada awalnya, Wiktionary menginduk pada URL sementara hingga akhirnya pada 1 Mei 2004 dipindahkan ke wiktionary.org.", - "wikiversity":"Wikiversity atau Wikiversitas adalah proyek Wiki dari Yayasan Wikimedia yang ditujukan untuk menyediakan bahan-bahan belajar. Wikiversity bukanlah sebuah universitas dan tidak menawarkan kelas, melainkan hanya menyediakan bahan-bahan pembelajaran level universitas yang bebas diakses oleh siapa pun.", - "wikivoyage":"Wikivoyage atau Wikiwisata adalah situs panduan wisata gratis untuk tujuan wisata dan topik wisata yang ditulis oleh penulis sukarelawan. Nama Wikivoyage adalah campuran dari kata \"Wiki\" dan \"Voyage \", kata bahasa Prancis untuk perjalanan, perjalanan, pelayaran, atau perjalanan.", - "wikicommons.images":"Wikimedia Commons adalah tempat penyimpanan gambar-gambar dan berkas-berkas multimedia berlisensi bebas. Commons merupakan proyek dari Yayasan Wikimedia. Berkas-berkas yang dimuat dapat digunakan seperti halnya berkas-berkas yang dimuat pada masing-masing proyek.", - "wolframalpha":"Wolfram|Alpha adalah mesin penjawab yang dikembangkan oleh Wolfram Research. Merupakan layanan daring yang dapat menjawab pertanyaan-pertanyaan yang diberikan secara faktual dengan menghitung jawaban secara terstruktur. Wolfram Alpha memanfaatkan basis data terstruktur yang dimilikinya dan kemudian diolah dengan peranti lunak. Bila mesin pencari lain hanya dapat menampilkan informasi yang tersedia bebas di web, Wolfram Alpha memanfaatkan kumpulan data yang sudah dilisensi dan dinilai para pakar serta informasi luring. Wolfram Alpha dirilis ke publik pada 15 Mei 2009 oleh Stephen Wolfram.", - "1337x":"1337x adalah situs web yang menyediakan direktori berkas torrent dan tautan magnet yang digunakan untuk berbagi berkas peer-to-peer melalui protokol BitTorrent. Menurut blog berita TorrentFreak, 1337x merupakan situs web torrent terpopuler kedua pada tahun 2020.", - "naver":"Naver adalah sebuah portal web populer di Korea Selatan, yang dimiliki oleh Naver Corporation. Naver diluncurkan pada bulan Juni 1999 oleh mantan karyawan Samsung, dan menjadi portal web pertama di Korea Selatan yang menggunakan sistem mesin pencari mereka sendiri. Salah satu di antara fitur Naver adalah \"Comprehensive Search\", yang diluncurkan pada 2000, yang menampilkan hasil dari berbagai kategori dalam satu laman.", - "mediathekviewweb":[ - "perangkat lunak", - "wikidata" - ], - "rumble":"Rumble adalah platform video online, hosting web, dan bisnis layanan cloud yang berkantor pusat di Toronto, Ontario, dengan kantor pusatnya di AS di Longboat Key, Florida. Perusahaan ini didirikan pada bulan Oktober 2013 oleh Chris Pavlovski, seorang pengusaha teknologi asal Kanada. Bisnis layanan cloud ini menaungi Truth Social, dan platform video ini populer di kalangan sayap kanan Amerika dan pengguna sayap kanan. Platform ini digambarkan sebagai bagian dari \"alt-tech\".", - "brave":"Brave adalah peramban web gratis dan sumber terbuka berbasis Chromium, yang dikembangkan oleh Brave Software Inc.. Brave adalah peramban yang berfokus pada privasi yang berbeda dengan peramban lain yaitu dengan memblokir iklan daring dan pelacak situs web secara baku. Peramban ini juga menyediakan cara untuk menyalakan iklan opsional yang memberikan imbalan kepada pengguna untuk perhatiannya dalam bentuk mata uang kripto Basic Attention Token (BAT). Pengguna dapat mengirimkan kontribusi mereka kepada berbagai situs web dan pembuat konten, dan juga menyimpan token yang didapat.", - "brave.images":[ - "brave:id", - "ref" - ], - "brave.videos":[ - "brave:id", - "ref" - ], - "brave.news":[ - "brave:id", - "ref" - ] - }, - "it":{ - "9gag":"9GAG è un sito web e comunità virtuale con sede a Hong Kong che consente ai suoi utenti di caricare e condividere immagini, animazioni GIF e video umoristici. Il sito venne fondato da Ray Chan e altri collaboratori nel 2008, e ha il suo quartier generale ad Hong Kong.", - "apple app store":"L'App Store è un negozio virtuale realizzato da Apple disponibile per iPhone, iPad e Macintosh che permette agli utenti di cercare e scaricare applicazioni.", - "artic":"L'Art Institute of Chicago si trova in South Michigan Avenue, 111 a Chicago (Illinois), al centro di un grande parco sulle sponde del lago Michigan, di fronte alla National Louis University. Inaugurato nel 1893 è il secondo museo d'arte degli Stati Uniti. Contiene soprattutto opere dell'Ottocento, ma anche arte classica e contemporanea.", - "arxiv":"arXiv è un archivio contenente prepubblicazioni (pre-print) di articoli scientifici in fisica, matematica, informatica, statistica, finanza quantitativa e biologia, accessibile via Internet. In molti campi della matematica e della fisica, la maggior parte delle pubblicazioni scientifiche sono messe nell'archivio arXiv.", - "bandcamp":"Bandcamp è un servizio musicale che permette ad artisti indipendenti di promuovere e distribuire la loro musica online.", - "wikipedia":"Wikipedia è un'enciclopedia online a contenuto libero, collaborativa, plurilingue e gratuita, nata nel 2001, sostenuta e ospitata dalla Wikimedia Foundation, un'organizzazione non a scopo di lucro statunitense.", - "bilibili":[ - "Sito web di condivisione video cinese", - "wikidata" - ], - "bing":"Microsoft Bing è un motore di ricerca di proprietà di Microsoft, nato dalle ceneri di Live Search nel giugno 2009, con la prima versione entrata in servizio il 1º giugno 2009.", - "bing images":[ - "bing:it", - "ref" - ], - "bing news":[ - "Notizie provenienti da fonti internazionali, nazionali e locali, organizzate in modo da offrirti una copertura totale in merito a sport, intrattenimento, affari, politica, meteo e altro ancora.", - "https://www.bing.com/news" - ], - "bing videos":"Bing Video è un servizio di ricerca video e parte del motore di ricerca Bing di Microsoft. Il servizio consente agli utenti di cercare e visualizzare video su vari siti web. Bing Video è stato lanciato il 26 settembre 2007 come Live Search Video e rinominato poi Bing Video il 1º giugno 2009.", - "bitbucket":"Bitbucket è un servizio di hosting web-based per progetti che usano i sistemi di controllo versione Mercurial o Git. Bitbucket offre sia piani commerciali che account gratuiti. Esso offre account gratuiti ed un numero illimitato di repository privati dal settembre 2010. Bitbucket è scritto in Python usando il Framework per applicazioni web Django", - "ccc-tv":[ - "portale di streaming del Chaos Computer Club", - "wikidata" - ], - "crossref":[ - "agenzia di registrazione dei DOI", - "wikidata" - ], - "currency":"DuckDuckGo è un motore di ricerca la cui omonima azienda ha sede a Paoli in Pennsylvania negli Stati Uniti che utilizza le informazioni di crowdsourcing provenienti da altri siti, ad esempio Wikipedia, con lo scopo di aumentare i risultati tradizionali e di migliorare la pertinenza della ricerca. Il fondatore, Gabriel Weinberg, ne riassume - \"in a nutshell\" - le politiche sulla privacy: \"DuckDuckGo non raccoglie né condivide informazioni personali.\"", - "deezer":"Deezer /diː.zə(ɹ)/ è un servizio di streaming multimediale che consente l'ascolto on demand di 90 milioni di brani musicali di numerose case discografiche ed etichette indipendenti, oltre che di podcast.", - "deviantart":"DeviantArt è una comunità online di artisti e aspiranti artisti su Internet.", - "ddg definitions":[ - "currency:it", - "ref" - ], - "erowid":[ - "sito web", - "wikidata" - ], - "wikidata":"Wikidata è una base di conoscenza online collaborativa, sostenuta e ospitata dalla Wikimedia Foundation, con lo scopo di fornire un archivio comune di supporto agli altri progetti di Wikimedia, consultabile e modificabile sia da utenti umani che da bot.", - "duckduckgo":[ - "currency:it", - "ref" - ], - "duckduckgo images":[ - "currency:it", - "ref" - ], - "duckduckgo videos":[ - "currency:it", - "ref" - ], - "duckduckgo news":[ - "currency:it", - "ref" - ], - "duckduckgo weather":[ - "currency:it", - "ref" - ], - "apple maps":"Mappe è un'applicazione di web mapping sviluppata da Apple per i suoi sistemi operativi iOS, macOS e watchOS. Consente la navigazione turn-by-turn in macchina o a piedi.", - "emojipedia":"Emojipedia è un sito web dove è possibile consultare il significato e l'uso comune di tutti i caratteri emoji nello standard Unicode. Più comunemente descritta come un'enciclopedia di emoji o un dizionario di emoji, Emojipedia si occupa anche della pubblicazione di articoli e della fornitura di strumenti che tengono traccia dei nuovi caratteri emoji, delle modifiche nel loro design delle e tendenze di utilizzo. È di proprietà di Zedge dal 2021.", - "etymonline":"Online Etymology Dictionary, noto anche come Etymonline, è un dizionario etimologico online della lingua inglese, scritto da Douglas Harper.", - "fdroid":"F-Droid è un catalogo di applicazioni libere per Android, realizzato da un software lato client e uno lato server, entrambi coperti da licenza libera.", - "flickr":"Flickr è un sito web multilingua, di proprietà di SmugMug, che permette agli iscritti di condividere fotografie personali.", - "free software directory":"La Free Software Directory è un archivio di software libero. Il progetto fu iniziato nel settembre 1999 dalla Free Software Foundation (FSF), che incaricò Janet Casey di curarlo.", - "genius":"Genius è un sito internet dedicato alla spiegazione e all'interpretazione di testi musicali, in particolare testi hip hop.", - "gentoo":"genkernel è un tool per la compilazione di un kernel Linux per la distribuzione Gentoo.", - "gitlab":"GitLab è una piattaforma web open source pubblicata nel 2011 che permette la gestione di repository Git e di funzioni trouble ticket di proprietà della società GitLab Inc.. Originariamente il codice venne scritto in Ruby, ma successivamente alcune parti furono riscritte in Go. GitLab mette a disposizione diverse funzionalità a seconda del tipo di sottoscrizione e del prezzo pagato. È comunque possibile utilizzarlo gratuitamente, seppur con delle limitazioni.", - "github":"GitHub è un servizio di hosting per progetti software, di proprietà della società GitHub Inc., con sede legale a San Francisco in California.", - "google":"Google Search è un motore di ricerca per Internet sviluppato da Google LLC. Oltre a catalogare e indicizzare le risorse del World Wide Web, Google Search si occupa di foto, newsgroup, notizie, mappe, e-mail (Gmail), shopping, traduzioni, video e altri programmi creati da Google.", - "google images":"Google immagini è il motore di ricerca di immagini sul web fornito da Google.", - "google news":"Google News è un servizio online di aggregazione di notizie edito da Google. La piattaforma è disponibile per Android, iOS e web.", - "google videos":"Google Video era un servizio gratuito di Google che permetteva a chiunque di caricare filmati sui server web di Google e renderli disponibili a tutti. Dal 29 aprile 2011 Google Video non permette più di caricare video. Analoghi servizi concorrenti sono: iFilm, MetaCafe, Veoh, Outloud.tv, IFC Medialab, webmultimediale.it e FBC V-Files. Google Video è stato chiuso dopo l'acquisizione di YouTube da parte di Google, il quale ha reso inutile il servizio inizialmente offerto da Google.", - "google scholar":"Google Scholar è un motore di ricerca accessibile liberamente che tramite parole chiave specifiche consente di individuare testi della letteratura accademica come articoli sottoposti a revisione paritaria, tesi di laurea e dottorato, libri, prestampe, sommari, recensioni e rapporti tecnici di tutti i settori della ricerca scientifica e tecnologica. Consente di reperire articoli da una vasta gamma di case editrici che si rivolgono al mondo dello studio e della ricerca da associazioni scientifiche e professionali, depositi di prestampe e università, oltre che nella galassia di articoli scientifici e culturali distribuiti sul Web.", - "google play apps":"Google Play, noto anche come Google Play Store e precedentemente Android Market, è un servizio di distribuzione digitale gestito e sviluppato da Google LLC. Serve come app store ufficiale, per il sistema operativo Android, consentendo agli utenti di navigare e scaricare applicazioni sviluppate con il kit di sviluppo software Android (SDK) e pubblicate tramite Google. Google Play funge anche da negozio di media digitali, offrendo musica, libri, film e programmi televisivi. In precedenza si occupava della vendita di dispositivi Google fino all'introduzione di Google Store e anche di pubblicazioni e riviste prima del rinnovamento di Google News del 15 maggio 2018.", - "google play movies":[ - "google play apps:it", - "ref" - ], - "hackernews":[ - "aggregatore di news", - "wikidata" - ], - "hoogle":"Haskell è un linguaggio di programmazione puramente funzionale general-purpose creato da un apposito comitato alla fine degli anni ottanta principalmente per analizzare le caratteristiche dei linguaggi. È stato chiamato così in onore del matematico e logico statunitense Haskell Curry.", - "imdb":"IMDb, acronimo di Internet Movie Database, è un sito web proprietà di Amazon company che cataloga, archivia film, attori, registi, personale di produzione, programmi televisivi, e anche videogiochi.", - "imgur":"Imgur è un servizio di image hosting e di photosharing, fondato da Alan Schaaf nel 2009. Il servizio è diventato popolare con l'hosting di immagini virali e meme, in particolare quelle pubblicate su Reddit.", - "ina":"L'Institut national de l'audiovisuel (INA), è un ente pubblico commerciale francese, incaricato di archiviare tutte le trasmissioni radiofoniche e audiovisive del paese, come fa la Biblioteca nazionale di Francia con i documenti scritti.", - "jisho":[ - "dizionario online giapponese-inglese", - "wikidata" - ], - "kickass":"KickassTorrents è stato un sito web, fondato nel 2008, che ospitava file torrent e magnet link per facilitare il file sharing peer-to-peer con il protocollo BitTorrent. All'agosto 2015, secondo Alexa, KAT è l'indice di file torrent più visitato al mondo e si stima riceva ogni mese più di 319 milioni di accessi. Il 20 luglio 2016 il sito è stato sequestrato dal governo degli Stati Uniti, successivamente chiuso e l'autore del sito è stato arrestato.", - "library genesis":"Library Genesis o LibGen è un motore di ricerca di articoli e libri su vari argomenti, che consente l'accesso gratuito a contenuti normalmente a pagamento o non digitalizzati altrove. Tra gli altri, veicola contenuti in formato PDF dal portale web di Elsevier di ScienceDirect.", - "z-library":"Z-Library è una biblioteca ombra che contiene file ed articoli di riviste scientifiche, testi accademici e libri di interesse generale. La maggior parte delle opere proviene da Library Genesis, mentre alcuni file sono pubblicati direttamente dagli utenti, fornendo ampio accesso alla letteratura, in particolar modo quella accademico-scientifica.", - "library of congress":"La Biblioteca del Congresso, nota con gli acronimi LOC o Loc, è di fatto la biblioteca nazionale degli Stati Uniti d'America. Grazie agli oltre 158 milioni di documenti in essa custoditi è la più grande biblioteca al mondo.", - "mastodon users":"Mastodon è un software libero e una rete sociale di microblogging decentralizzato che permette di pubblicare messaggi brevi.", - "mastodon hashtags":[ - "mastodon users:it", - "ref" - ], - "metacpan":"CPAN è la sigla di Comprehensive Perl Archive Network, ed è l'archivio pubblico dei moduli, packages e applicazioni scritte in Perl e pubblicate con licenze libere. È basato sul modello di CTAN.", - "mixcloud":"Mixcloud è un servizio musicale di streaming via internet che permette l'ascolto e la distribuzione di spettacoli radiofonici, mix di disc jockey e podcast, che sono caricati dai suoi utenti registrati.", - "npm":"npm è un gestore di pacchetti per il linguaggio di programmazione JavaScript. È il gestore di pacchetti predefinito per l'ambiente di runtime JavaScript Node.js. Consiste in un client da linea di comando, chiamato anch'esso npm, e un database online di pacchetti pubblici e privati, chiamato npm registry.", - "odysee":"Odysee è una piattaforma di archiviazione video creato nel settembre di 2020 per la società statunitense LBRY.inc il cui CEO e cofondatore è Jeremy Kauffman.", - "openstreetmap":"OpenStreetMap (OSM) è un progetto collaborativo finalizzato a creare mappe del mondo a contenuto libero. Il progetto punta ad una raccolta mondiale di dati geografici, con scopo principale la creazione di mappe e cartografie.", - "pinterest":"Pinterest è un servizio di rete sociale basato sulla condivisione di fotografie, video e immagini. Il nome deriva dall'unione delle parole inglesi pin e interest (interesse). Pinterest permette agli utenti di creare bacheche in cui catalogare le immagini presenti nelle pagine web in base a temi predefiniti oppure da loro scelti.", - "piratebay":"The Pirate Bay (TPB) è un sito di file sharing basato sul protocollo di condivisione BitTorrent. È nato in Svezia ed è stato creato da Gottfrid Svartholm, Fredrik Neij e Peter Sunde.", - "pubmed":"MEDLINE è un database bibliografico di scienze della vita e discipline biomediche. Copre i campi della medicina, dell'infermieristica, della farmacologia, dell'odontoiatria, della medicina veterinaria e dell'assistenza sanitaria in generale.", - "qwant":"Qwant è un motore di ricerca europeo fornito dalla omonima società francese; dichiara di non profilare gli utenti né di usare bolle di filtraggio per presentare i risultati della ricerca. Il servizio è stato lanciato inizialmente il 16 febbraio 2013 in versione beta e il 4 luglio 2013 in versione stabile. Una nuova versione è stata lanciata nell'aprile 2015.", - "qwant news":[ - "qwant:it", - "ref" - ], - "qwant images":[ - "qwant:it", - "ref" - ], - "qwant videos":[ - "qwant:it", - "ref" - ], - "reddit":"Reddit è un sito Internet di social news, intrattenimento e forum dove gli utenti registrati possono pubblicare contenuti sotto forma di post testuali o di collegamenti ipertestuali (link). Gli utenti, inoltre, possono attribuire una valutazione, \"su\" o \"giù\", ai contenuti pubblicati: tali valutazioni determinano, poi, posizione e visibilità dei vari contenuti sulle pagine del sito. I contenuti del sito sono organizzati in aree di interesse chiamate subreddit.", - "soundcloud":"SoundCloud è un servizio musicale svedese e sito web di music sharing, con sede a Berlino, che permette ai musicisti di collaborare, promuovere e distribuire la loro musica.", - "stackoverflow":[ - "circuito di siti Q&A", - "wikidata" - ], - "askubuntu":[ - "stackoverflow:it", - "ref" - ], - "superuser":[ - "stackoverflow:it", - "ref" - ], - "startpage":"Ixquick è stato un metamotore di ricerca con basi operative a New York e nei Paesi Bassi confluito nel 2018 nel progetto Startpage.com. Ixquick è stato fondato nel 1998 da David Bodnick ed aveva sede a New York. Due anni dopo, nel 2000, la proprietà è passata alla società olandese Surfboard Holding BV.", - "tagesschau":"Tagesschau è il principale notiziario di Das Erste, primo canale televisivo della ARD. È prodotto dall'affiliata NDR, che ha sede ad Amburgo.", - "unsplash":"Unsplash è un sito web dedicato alla condivisione di fotografie con licenza Unsplash.", - "yahoo news":"Yahoo! News è un sito web di notizie di Yahoo!. Il sito è stato fondato nell'agosto 1996 da Brad Clawsie. In origine, gli articoli provenivano da testate giornalistiche come Associated Press, Reuters, Fox News, Al Jazeera, ABC News, USA Today, CNN e BBC News.", - "youtube":"YouTube è una piattaforma web 2.0 che consente la condivisione e visualizzazione in rete di contenuti multimediali: sul sito è possibile vedere videoclip, trailer, cortometraggi, notizie, live streaming, shorts e slideshow e altri contenuti come video blog, brevi video originali, video didattici e altro ancora, classificabili anche per età, con gli utenti che possono anche interagire votando, commentando, aggiungendo ai preferiti e, nei casi ove necessario, segnalando i video.", - "dailymotion":"Dailymotion è un sito web di condivisione video di proprietà della Dailymotion SA, una società anonima francese con sede a Parigi.", - "vimeo":"Vimeo è un sito di rete sociale video di proprietà di IAC, lanciato nel novembre 2004.", - "wikibooks":"Wikibooks, inizialmente chiamato Wikimedia Free Textbook Project e Wikimedia-Textbooks, è un progetto multilingue per la raccolta di e-book dal contenuto didattico e disponibili con licenza libera, come libri di testo, manuali e libri commentati.", - "wikinews":"Wikinotizie è il progetto multilingue di Wikimedia Foundation che si propone come fonte di notizie di attualità alla cui stesura può contribuire chiunque. La sua missione è quella di \"creare un ambiente eterogeneo dove i wiki-giornalisti possano diffondere notizie su una vasta gamma di eventi attuali\".", - "wikiquote":"Wikiquote è uno dei progetti basati su wiki promossi dalla Wikimedia Foundation e utilizza lo stesso software MediaWiki di Wikipedia.", - "wikisource":"Wikisource è una biblioteca digitale multilingue, che accoglie testi e libri in pubblico dominio o con licenze libere. Il sito è parte della fondazione Wikimedia ed è collaterale a Wikipedia, progetto multilingue teso a creare un'enciclopedia a contenuto libero completa e accurata. Il progetto Wikisource, come Wikipedia, si suddivide per lingua e non per nazionalità.", - "wikispecies":"Wikispecies è un progetto della Wikimedia Foundation che si propone di operare una raccolta delle specie viventi in un archivio multimediale.", - "wiktionary":"Il Wikizionario è un progetto collaborativo, multilingue e gratuito, tramite la Rete, supportato dalla Wikimedia Foundation, per produrre un dizionario online libero e multilingue, con significati, etimologie e pronunce, attraverso l'uso di una piattaforma wiki in maniera del tutto simile a Wikipedia di cui è un compagno lessicale.", - "wikiversity":"Wikiversità è il progetto della Wikimedia Foundation, dedicato alle attività e materiali per l'apprendimento. La Wikiversità in lingua inglese iniziò ufficialmente il 15 agosto 2006, mentre quella in italiano è stata avviata il 18 maggio 2007. Sono attualmente attive diciassette versioni in lingue diverse di Wikiversità, di cui una multilingue. Ce ne sono altre attualmente in fase di sviluppo.", - "wikivoyage":"Wikivoyage /ˌvɪkivwaˈjaːʒ/ è una guida turistica mondiale gratuita online statunitense, scritta da volontari e sostenuta da Wikimedia Foundation; intende essere una risorsa affidabile e dal contenuto libero, aggiornata da utenti volontari (\"wikivoyager\") provenienti da diverse parti del mondo. Il suo nome è l'unione delle parole wiki e voyage.", - "wikicommons.images":"Wikimedia Commons è un archivio di immagini digitali, suoni ed altri file multimediali con licenza libera. È un progetto della Wikimedia Foundation, e a settembre 2023 ospita oltre 97 milioni di file, costituendo uno dei maggiori archivi di risorse multimediali a scopo didattico e documentale liberamente utilizzabili nel web.", - "wolframalpha":"Wolfram Alpha, spesso stilizzato graficamente in Wolfram|Alpha, è un motore computazionale di conoscenza che interpreta le parole chiave inserite dall'utente e propone direttamente una risposta invece che offrire una lista di collegamenti ad altri siti web.", - "dictzone":[ - "Dizionari online: inglese, spagnolo, tedesco, francese, italiano, ungherese... Scegli il tuo dizionario preferito!", - "https://dictzone.com/" - ], - "1337x":"1337x è un sito di file sharing basato sul protocollo di condivisione BitTorrent. Secondo il blog TorrentFreak, 1337x è il secondo sito web di file torrent più visitato al mondo nel 2020.", - "mojeek":[ - "motore di ricerca", - "wikidata" - ], - "naver":"Naver è una piattaforma online sudcoreana gestita da Naver Corporation. Ha debuttato nel 1999 come il primo portale web in Corea del Sud a sviluppare e utilizzare il proprio motore di ricerca. È stato anche il primo operatore al mondo a introdurre la funzione di ricerca completa, che raccoglie i risultati della ricerca da varie categorie e li presenta in un'unica pagina. Da allora Naver ha aggiunto una moltitudine di nuovi servizi che vanno dalle funzionalità di base come casella e-mail e sito di notizie alla prima piattaforma di domande e risposte online al mondo Knowledge iN.", - "rubygems":"RubyGems è un gestore di pacchetti per il linguaggio di programmazione Ruby che fornisce un formato standard, per distribuire i programmi e le librerie scritti in Ruby, chiamato gems (dall'inglese: gemme) è inoltre uno strumento progettato per facilitare la gestione dell'installazione delle \"gemme\" e per la loro distribuzione.", - "peertube":"PeerTube è un software libero decentralizzato e federato che utilizza la tecnologia di rete paritaria (P2P) per ridurre il carico sui singoli server. È rilasciato sotto licenza GNU Affero General Public License. Il progetto è nato nel 2015 da un singolo programmatore. Lo sviluppo di PeerTube fu successivamente supportato da un'organizzazione non a scopo di lucro francese, la Framasoft.", - "yacy":"YaCy è un motore di ricerca distribuito, basato sul principio del peer-to-peer. Questo programma, sviluppato in Java, è software libero essendo rilasciato con una licenza GPL 2. Una volta installato il programma il proprio computer diventa un peer YaCy e viene lanciato un programma di indicizzazione. I risultati sono condivisi in una banca dati distribuita (indice).", - "yacy images":[ - "yacy:it", - "ref" - ], - "rumble":"Rumble è una piattaforma di video online canadese con sede a Toronto. Fondata nel 2013 da Chris Pavlovski, un imprenditore canadese.", - "wikimini":[ - "enciclopedia online per ragazzi", - "wikidata" - ], - "brave":"Brave è un browser open-source multipiattaforma specializzato nella protezione della privacy, basato sul progetto Chromium. Il browser è stato ideato e annunciato dal cofondatore di JavaScript e cofondatore di Mozilla, Brendan Eich. È disponibile per Windows, macOS, Linux, Android e iOS.", - "brave.images":[ - "brave:it", - "ref" - ], - "brave.videos":[ - "brave:it", - "ref" - ], - "brave.news":[ - "brave:it", - "ref" - ], - "goo":"goo è un portale web e motore di ricerca internet con sede in Giappone, che esegue la scansione e l'indicizzazione principalmente siti web in lingua giapponese. goo è gestito dalla giapponese NTT Resonant, controllata dalla NTT Communications." - }, - "ja":{ - "annas archive":"Anna's Archiveは、様々な書籍リソースへのアクセスを提供する無料の非営利オンラインシャドウライブラリ(en:Shadow library)メタサーチエンジンで、匿名のアーキビストのチーム によって、英国出版協会(en:The Publishers Association)と全米作家協会が正式に支援する、2022年11月にあったen:Z-Libraryに対する法的措置に対抗する目的で作られた。", - "apple app store":"App Store(アップストア)は、Appleが運営するiPhone、iPod touch、iPad向けアプリケーションのダウンロードサービスである。Mac OS X 10.6.6以降を搭載したMacにも類似のサービスがあるが、こちらは Mac App Store を参考のこと。", - "arch linux wiki":[ - "Arch Linuxのウェブドキュメント", - "wikidata" - ], - "artic":"シカゴ美術館 は、アメリカ合衆国イリノイ州シカゴ市内にある美術館である。ニューヨークのメトロポリタン美術館、ボストン市にあるボストン美術館とともにアメリカの三大美術館の1つに数えられる。館名は日本語では「シカゴ美術研究所」、「シカゴ・アート・インスティテュート」などと表記される場合もある。", - "arxiv":"arXiv(アーカイヴ、archiveと同じ発音)は、物理学、数学、計算機科学、数量生物学、数量ファイナンス、統計学、電子工学・システム科学、経済学の、プレプリントを含む様々な論文が保存・公開されているウェブサイトである。論文のアップロード(投稿)、ダウンロード(閲覧)ともに無料で、論文はPDF形式である。1991年にスタートして、プレプリント・サーバーの先駆けとなったウェブサイトである。大文字の X をギリシャ文字のカイ(Χ)にかけて archive と読ませている。", - "wikipedia":"ウィキペディア は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語インターネット百科事典である。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体「ウィキメディア財団」が所有・運営している。「ウィキペディア(Wikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」 であることに由来する造語である。設立者の1人であるラリー・サンガーにより命名された。", - "bilibili":"bilibili は、中華人民共和国の動画共有サービス。およびその他生配信、写真、ブログなどのSNSや、ゲーム、アニメーション、漫画などのコンテンツを提供するエンターテイメント・コンテンツ企業である。", - "bing":"Microsoft Bing(マイクロソフト・ビング)は、Microsoftが提供するポータルサイトのひとつ。開発コンセプトに「意思決定を支援する検索エンジン」を掲げ、他の検索エンジンとの差別化を図っている。", - "bing images":[ - "bing:ja", - "ref" - ], - "bing news":[ - "世界、国内、地方のニュース ソースから、スポーツ、エンターテイメント、ビジネス、政治、お天気情報など、さまざまな分野の詳細なニュースを整理してお届けします。", - "https://www.bing.com/news" - ], - "bing videos":[ - "Bing のインテリジェント検索機能により、探しているものをより簡単にすばやく見つけられるようになり、リワードも得られます。", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket は、Mercurial(2020年6月1日までのリリース)またはGit(2011年10月以降)リビジョン管理システムを使用するソースコードおよび開発プロジェクト向けに、アトラシアンが運営するWeb ベースのバージョン管理リポジトリホスティングサービスである。商用プランと無料アカウントの両方を提供している。2019年2月現在、プライベートリポジトリを無制限に持てる無料アカウントを提供している。ユーザーがプライベートリポジトリしか持っていない場合でも、プライベートリポジトリはプロファイルページに表示されず、ウェブサイト上には\"このユーザーはリポジトリを持っていません\"と表示される。このサービスはDjangoフレームワークを用いてPythonで書かれている。", - "currency":"DuckDuckGo(ダックダックゴー)は、インターネット検索エンジンである。利用者のプライバシーの保護と利用履歴等を記録保存しないことを運営方針としている。VivaldiやTor Browserの標準検索エンジンにも採用されている。また、DuckDuckGoは検索結果のパーソナライズを行わないため「フィルターバブル」に陥らない(DuckDuckGoはGoogleのフィルターバブル問題についてブログで指摘している)。", - "deezer":"Deezer (ディーザー) は、フランスの音楽配信サービスである。", - "ddg definitions":[ - "currency:ja", - "ref" - ], - "erowid":"エロウィド (Erowid) または、エロウィド・センター は、アメリカ歳入法の501(c)(3)に基づく非営利の教育団体であり、向精神性の植物や化学物質や、同様に、瞑想、明晰夢、経頭蓋磁気刺激法、電気刺激のような、変性意識状態をもたらす技法についての情報を提供している。", - "wikidata":"ウィキデータ はウィキメディア財団が提供する共同編集型のデータベース(知識基盤)である。パブリックドメイン・ライセンスの下で、誰もが使用できるオープンデータを提供することを目的としている。ウィキメディア・コモンズがメディアファイルの格納場所を提供して他のウィキメディアプロジェクトがそれを利用する方法と同様に、データに対してこれを行う。ウィキデータはウィキベースソフトウェアを用いて稼働している。", - "duckduckgo":[ - "currency:ja", - "ref" - ], - "duckduckgo images":[ - "currency:ja", - "ref" - ], - "duckduckgo videos":[ - "currency:ja", - "ref" - ], - "duckduckgo news":[ - "currency:ja", - "ref" - ], - "duckduckgo weather":[ - "currency:ja", - "ref" - ], - "apple maps":"Appleマップ および マップ は、Appleが運営・開発する地図アプリケーション。iOS, iPadOS, macOS, watchOSのデフォルトの地図アプリケーションである。", - "etymonline":"オンライン・エティモロジー・ディクショナリー とは、英単語の語源についてのオンライン語源辞典。", - "fdroid":"F-DroidはAndroidに対応したソフトウェアリポジトリおよびアプリケーションストアである。Google Playと機能は類似するが、扱っているのはフリーかつオープンソースのソフトウェアのみである。配信アプリケーションはF-Droidのウェブサイトで見ながらインストールできるが、クライアントアプリケーション から直接インストールする方法もある。クライアントアプリケーションはインストールしたF-Droid配信アプリケーションを自動的に更新することも出来る。また、ウェブサイトでは全配信アプリケーションのソースコードがダウンロードできるようになっている。ユーザーは登録や、広告、ユーザー追跡といった嫌われる機能があるアプリケーションに悩まされることもフリーでないソフトウェアに依存する必要もない。F-Droidサーバーを動かしているソフトウェアはフリーソフトウェアなので、誰でも自身のAndroidアプリケーションリポジトリをセットアップすることができる。", - "free software directory":"Free Software Directoryとは、フリーソフトウェア財団 のプロジェクトである。フリーなオペレーティングシステム、とりわけGNUオペレーティングシステム とLinuxで稼動するフリーソフトウェアを一覧化するプロジェクトである。", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab(ギットラブ)とはGitLab Inc.が開発したウェブ型のGitリポジトリマネージャーでオープンソースソフトウェアライセンスのウィキと問題追跡システムが使われている。", - "github":"GitHub(ギットハブ)は、ソフトウェア開発のプラットフォームであり、ソースコードをホスティングする。コードのバージョン管理システムにはGitを使用する。Ruby on RailsおよびErlangで記述されており、アメリカのカリフォルニア州サンフランシスコ市に拠点を置くGitHub社によって保守されている。主な開発者はクリス・ワンストラス、P.J.ハイエット、トム・プレストン・ワーナーである。", - "google":"Google 検索 またはGoogle ウェブ検索 はGoogleが提供する検索エンジンで、World Wide Web上で最も多く使われている検索エンジンである。Googleは様々なサービスを通して毎日数億件の検索クエリを受け付けている。Google 画像検索などとは異なり、Google検索はウェブページ内のテキストデータを探し出すことを主な目的としている。1997年、ラリー・ペイジとセルゲイ・ブリンが開発したのが始まりである。", - "google images":"Google 画像検索 は、Webにある画像を検索するためにGoogleが提供している検索サービスである。2001年にサービスが開始された。切っ掛けはジェニファー・ロペスが着用した緑のヴェルサーチドレスの写真が見たいという需要に通常のGoogle検索では応え切れなかったことによる。2011年に逆画像検索が追加された。", - "google news":"Google ニュース は、Googleが提供するニュースアグリゲーター。Googleのページランクに関連して、Googleの主任研究者である Krishna Bharat が2001年に開発したストーリーランクをベースとして始まった。人間はアグリゲーションのアルゴリズムを調節するだけで、掲載する記事の選択は全て自動的に行われる。2006年1月、Google News ベータ版が登場した。", - "google videos":"Google ビデオ は、Googleの動画検索エンジンである。かつては無料の動画共有サイトであり、YouTubeのように選択した動画をリモートのウェブページに埋め込むためのHTMLコードを提供し、帯域幅が狭くストレージ容量も少ないウェブサイトで動画を豊富に利用できるものだった。", - "google scholar":"Google Scholar(グーグル・スカラー)は、ウェブ検索サイトのGoogleの提供する検索サービスの一つ。主に学術用途での検索を対象としており、論文、学術誌、出版物の全文やメタデータにアクセスできる。Googleはそのデータベースのサイズを公開していないが、第三者機関の調査によれば、2014年5月時点、約1.6億の文章が含まれると推定される。", - "google play apps":"Google Play は、Googleによって提供される、主にAndroid及びChromeOS(2016年4月以降)向けデジタルコンテンツ(アプリケーション・映画・音楽・書籍など)の配信サービス。2012年3月6日にGoogleは「Android Market」を「Google Play」に改名し、「Google Play ブックス」「Google Play Music」といったサービスも合わせて誕生した。", - "google play movies":[ - "google play apps:ja", - "ref" - ], - "hackernews":"Hacker Newsは、ソーシャルニュースサイトである。主に計算機科学やベンチャーなどのテーマを取り扱う。ポール・グレアムの出資と、ベンチャーキャピタルであるYコンビネータによって運営されている。投稿できる物は一般的に、「理知的な好奇心を掻き立てるもの全般」とされている。", - "imdb":"IMDb は、映画、テレビ番組、ホームビデオ、ビデオゲーム、オンラインのストリーミングコンテンツに関連する情報を集めたオンラインデータベースで、キャスト、制作スタッフ、個人の経歴、作品の概要、トリビア、評価、ファンや批評家のレビューなどが含まれている。追加のファン機能であるメッセージボードは、2017年2月に廃止された。元々はファンが運営していたウェブサイトだったが、現在はAmazonの子会社であるIMDb.com, Inc.がデータベースを所有・運営している。", - "imgur":"Imgur は、アラン・シャーフが2009年にアメリカ合衆国オハイオ州アセンズで立ち上げたオンライン画像共有と画像管理サービスである。「家庭から、コメント、投票、共有によってコミュニティがリアルタイムでウェブにおける最も人気のある画像にアクセスする場所」と自称している。1日100万人以上のユーザーに無料の画像管理サービスとコメント型ソーシャルコミュニティを提供している。運営企業は広告販売や商用ホスティング、グッズ販売で収益を上げている。", - "ina":"フランス国立視聴覚研究所 は、フランスの全ラジオ・テレビの視聴覚アーカイヴの宝庫である。ラジオフランスが主催し、放送局本部の建物内にある。内部にフランス音楽研究グループ を有する。", - "library genesis":"Library Genesis(LibGen)は、様々な分野の論文・書籍の検索エンジンであり、有料で配布されていたり、どこにおいてもデジタル化されていなかったりするコンテンツを無料でアクセス可能にしている。特に、エルゼビアのScienceDirectウェブポータルで配布されているPDFファイルを収録している。", - "library of congress":"アメリカ議会図書館 は、アメリカ合衆国の事実上の国立図書館。蔵書数・予算額・職員数全ての点で世界最大規模の図書館である。", - "mastodon users":"マストドン (Mastodon) はミニブログサービスを提供するためのフリーソフトウェア、またはこれが提供する連合型のソーシャルネットワークサービスである。開発者はドイツのオイゲン・ロホコ(Eugen Rochko)。「脱中央集権型」 (decentralized) のマストドンのサーバーはだれでも自由に運用する事が可能であり、利用者は通常このサーバーの一つを選んで所属するが、異なるサーバーに属する利用者間のコミュニケーションも容易である。", - "mastodon hashtags":[ - "mastodon users:ja", - "ref" - ], - "metacpan":"CPAN とは、Perlのライブラリ・モジュールやその他のPerlで書かれたソフトウェアを集めた巨大なアーカイブで、世界中のサーバにその内容がミラーリングされている。再利用性・汎用性の高いモジュールが登録されており、Perlプログラマができるだけ車輪の再発明をせずに済むための支援環境となっている。登録モジュールの検索システムも提供されているため、Perlプログラマは望む機能を持ったモジュールを容易に入手することができる。", - "npm":"npmとはJavaScriptのパッケージ管理システムの一種。Node Package Managerの意。", - "openstreetmap":"オープンストリートマップ は自由に利用でき、なおかつ編集機能のある世界地図を作る共同作業プロジェクトである。GPS機能を持った携帯端末、空中写真やほかの無料機械からのデータをもとに作られていくのが基本だが、編集ツール上で道1本から手入力での追加も可能である。与えられた画像とベクトルデータセットはオープンデータベースライセンス (ODbL) 1.0のもと再利用可能である。", - "pinterest":"Pinterest(ピンタレスト)とは、アメリカ合衆国カリフォルニア州サンフランシスコに本拠を置くPinterest, Inc.(ピンタレスト社)が運営・管理する写真共有サービス。アプリやウェブサイト方式によって提供され、ピンボード風の画面構成となっている。ユーザーはイベント・関心事・趣味などテーマ別の画像コレクションを作成・管理することができ、また他のユーザーが作成したピンボードを閲覧して自身のコレクションに加えたり、「好み」の写真として画像を「リピン」することもできるという特徴がある。", - "piratebay":"パイレート・ベイ は、デジタルコンテンツのトレントファイルを検索できるインデックスサイトである。2003年に、スウェーデンの反著作権団体Piratbyrånによって設立された。利用者はマグネットリンクおよびトレントファイルの検索、ダウンロード、掲載が可能である。マグネットリンクとトレントファイルは、BitTorrentプロトコルを用いたP2Pファイル共有に使用される。", - "pubmed":"MEDLINE(メドライン)またはMEDLARS Online は、医学を中心とする生命科学の文献情報を収集したオンラインデータベースである。1964年に米国国立医学図書館 が作成したコンピューター化医学文献データベース「MEDLARS」は、1971年10月27日にオンライン検索サービスが開始され、1997年にはPubMedの名でインターネットに無料公開された後、改良が重ねられて成長を続け、2007年現在、月に7000万回程度のアクセスがある世界で最もよく使用される生物医学系データベースである。", - "pypi":"Python Package Index は、プログラミング言語Pythonの、サードパーティーソフトウェアリポジトリである。すべてのオープンソースなPythonパッケージの包括的なカタログととらえることができる。 Pipなどのパッケージマネージャは、パッケージやその依存パッケージをPyPIからダウンロードしてインストールする機能を持つ。", - "reddit":"Reddit(レディット)はアメリカ合衆国の掲示板型ソーシャルニュースサイト。主に英語圏のユーザーを対象とする。ニュース記事、画像のリンクやテキストを投稿し、コメントをつけることが可能。カリフォルニア州サンフランシスコに拠点を置くReddit, Inc.が運営する。2021年1月時点の月間利用者数は4億3000万人。欧米ではTwitterユーザー数並び利用時間を超える。", - "soundcloud":"SoundCloud(サウンドクラウド)は、ドイツのベルリンに拠点を置くSoundCloud Limitedが運営する音声ファイル共有サービス。", - "stackoverflow":"Stack Exchange Inc.(スタック・エクスチェンジ)は、2008年創業ニューヨークに本社を置くソフトウェア技術者を中心とするQ&AのWebサービス企業である。2021年に南アフリカを本社とする多国籍企業ナスパーズ傘下の投資会社Prosus N.V.に買収され傘下となった。", - "askubuntu":[ - "stackoverflow:ja", - "ref" - ], - "superuser":[ - "stackoverflow:ja", - "ref" - ], - "startpage":"Startpageは、オランダのハーグを拠点とするStartpage B.V.が運営する検索エンジンである。", - "tagesschau":"ターゲスシャウ は、北ドイツ放送(Norddeutscher Rundfunk)が制作し、ARD(ドイツ公共放送連盟)の加盟局で放送されているドイツの国民的ニュース番組である。", - "youtube":"YouTube(ユーチューブ)は、アメリカ合衆国カリフォルニア州サンブルーノに本社を置くオンライン動画共有プラットフォーム。アクティブユーザー数は、2022年1月時点で25億6,200万人(うち定額制サービス契約者数は8000万人以上)であり、ソーシャルメディアとしては世界第2位。2005年2月にPayPalの元従業員であるチャド・ハーリー、スティーブ・チェン、ジョード・カリムの3人によって設立された。その後、2006年11月に16.5億米ドルでGoogleに買収され、現在は同社の子会社の1つとして運営されている。アレクサ・インターネットランキングによると、Google 検索に次いで2番目にアクセス数の多いウェブサイトである。", - "dailymotion":"Dailymotion(デイリーモーション)は、Vivendi SE傘下のDAILYMOTION SAが運営する、フランスの動画共有サービス。", - "vimeo":"Vimeo は、クリエイター向け動画共有サイト。「video」(ビデオ)と「me」(私)の意味と、「movie」(映画)という言葉のアナグラムである。", - "wikisource":"ウィキソース (Wikisource) は、ウィキメディア財団が運営するウィキを利用した自由に利用できるテキストを集めた電子図書館である。ウィキソースはプロジェクトの名前でもあり、またプロジェクトのインスタンス(実体)である個々のサイト(主に各言語版)もウィキソースと呼ばれ、複数のウィキソースが集まって大きなウィキソースプロジェクトを形成している。ウィキソースの目的はあらゆる形態のフリーテキストを、多数の言語および翻訳においても提供することである。元々は有用または重要な歴史的文書を保存するアーカイブとして着想され、今では幅広いコンテンツを扱うライブラリとなっている。", - "wikispecies":"ウィキスピーシーズ (Wikispecies) は、ウィキメディア財団により運用されているウィキメディア・プロジェクトの一つ。言語別サイトには分かれておらず、コモンズと同じく各ページ内に多言語を併載する。 ウィキペディアやウィクショナリー等と同じく、ウィキベースのオンラインプロジェクトである。 動物界、植物界、菌界、真正細菌(細菌界)、古細菌、原生生物等々、ドメインや界から種や亜種に至るまであらゆる生物の分類の目録をフリーコンテントとして収集している。", - "wiktionary":"ウィクショナリー (Wiktionary) は、コピーレフトなライセンス・オープンコンテントの辞書兼シソーラス(類語辞典)を作成し、配布することを目的としたウィキメディア財団によるプロジェクトである。GNU Free Documentation License (GFDL) およびクリエイティブ・コモンズ 表示 - 継承 3.0 非移植 のデュアルライセンスで公開される。2002年12月12日に活動を開始した。", - "wikicommons.images":"ウィキメディア・コモンズ は、ウィキペディアと同じくウィキメディア財団による姉妹プロジェクトであり、「すべてのウィキメディアプロジェクトをはじめ、誰でも自由に利用できる画像・音声・動画、その他あらゆる情報を包括し供給する」といったことを目的とする。2004年9月7日に活動を開始した。アップロードされたファイルの総数は5800万点を超えている。", - "wolframalpha":"Wolfram Alpha(WolframAlphaともWolfram|Alphaとも表記される)は、ウルフラム・リサーチが開発した質問応答システム。事実についての質問に対して、構造化されたデータを使って計算し、直接答えを返すオンラインサービスである。他の検索エンジンのように、答えを含んでいる可能性のあるドキュメントやウェブページのリストを返すわけではない。このサービスは2009年3月に英国人科学者スティーブン・ウルフラムが発表し、同年5月15日に公開された。また、2018年6月18日には日本語版のWolfram Alphaも公開された。2022年時点では日本語に対応しているのは数学関連のクエリのみであるが、「5個のボールの並べ方は何通りあるか」「ニュートン法を使ってxcos x=0 を解く」などの質問に対して日本語で答えることができる。", - "naver":"ネイバー は、ネイバー株式会社が運営する、大韓民国(韓国)の最大手ポータルサイトである。", - "rubygems":"RubyGemsは、Ruby言語用のパッケージ管理システムであり、Rubyのプログラムと ライブラリの配布用標準フォーマットを提供している。gemを容易に管理でき、gemを配布するサーバの機能も持つ。Rubyバージョン1.9以降では標準ライブラリの一部となっている。", - "peertube":"PeerTube は、フリーかつオープンソースの分散型動画共有プラットフォームである。ActivityPubとWebTorrentを利用して構築されており、P2P技術を使用することによって動画を閲覧する際の各サーバーの負荷を軽減している。", - "yacy":"YaCy(ヤシー、ヤスィー)とは、「人民による人民のためのウェブ検索」を標語する、オープンソースの分散型検索エンジンである。GPLv2でライセンスされている。YaCyのコアはJavaによって記述されており、ネットワークはピア・ツー・ピア (P2P)で構築されている。", - "yacy images":[ - "yacy:ja", - "ref" - ], - "brave":"Brave(ブレイブ)は、Brave Software社によって開発されているウェブブラウザである。Chromiumをベースとしており、Windows、macOS、Linux、iOS、Android版が存在し、オープンソースで開発されている。広告とトラッカーをブロックする機能(アドブロック)を標準装備し、ユーザーのプライバシーの保護、そして高いパフォーマンスを実現できることを売りにしている。", - "brave.images":[ - "brave:ja", - "ref" - ], - "brave.videos":[ - "brave:ja", - "ref" - ], - "brave.news":[ - "brave:ja", - "ref" - ], - "goo":"goo(グー)は、NTTドコモが運営するポータルサイトである。名称は「global network が無限大(∞)に拡大し続ける」ことに由来する。アレクサランキングでの順位は、2020年12月10日時点で世界594位、日本国内45位。マスコットキャラクターは、メグたん。" - }, - "ko":{ - "9gag":"9GAG는 홍콩의 이미지 기반 소셜 미디어 사이트이다. 2011년 12월 기준 월 페이지뷰가 10억 건을 넘었다. 인터넷에 유행하는 이미지가 주로 올라오는 것으로 알려져 있다. 레딧과 같은 다른 비슷한 사이트와 마찬가지로 게시글에 덧글과 추천을 할 수 있다.", - "apple app store":"앱 스토어(영어: App Store)는 애플이 운영하고 있는 아이폰, 아이패드 및 아이팟 터치용 응용 소프트웨어 다운로드 서비스이다. 아이폰 3G가 발표될 즈음인 2008년 7월 10일부터 아이튠즈의 업데이트 형태로 서비스가 시작되었다.", - "artic":"시카고 미술관(The Art Institute of Chicago)은 미국 일리노이주 시카고의 미술관이다. 뉴욕의 메트로폴리탄 미술관, 보스턴의 보스턴 미술관과 함께 미국의 3대 미술관의 하나로 손꼽힌다. 대한민국에서는 ‘시카고 현대 미술관’ 또는 시카고 미술 연구소이라고도 불린다.", - "arxiv":"arXiv(아카이브)는 수학, 물리학, 천문학, 전산 과학, 계량 생물학, 통계학 분야의 출판 전(preprint) 논문을 수집하는 웹사이트이다. 수학, 물리학, 천문학 분야의 논문은 거의 모두 이곳에서 찾을 수 있다. 2008년 10월 3일, arXiv.org는 문서 수가 50만 개를 넘겼다. 매달 약 5천편의 새로운 전자 문서(e-print)가 게시되고 있다.", - "bandcamp":"밴드캠프(Bandcamp)는 미국에 위치한 인터넷 전문 음악 회사이다. 2008년 이단 다이아몬드, 숀 그룬베르거, 조 홀트와 닐 터커가 공동설립했으며 본사는 캘리포니아주 오클랜드에 위치해있다.", - "wikipedia":"위키백과(위키百科, IPA: [ɥikçibɛ̝k̚k͈wa̠], [ykçibɛ̝k̚k͈wa̠] ) 또는 위키피디아(영어: Wikipedia, IPA: [ˌwɪkɪˈpiːdɪə] )는 누구나 자유롭게 쓸 수 있는 다언어판 인터넷 백과사전이다. 개방된 협업을 통해 위키 기반 편집 시스템을 사용하여 자발적인 위키백과 사용자 공동체가 작성하고 관리하고 있다. 위키백과는 대표적인 집단 지성의 사례로 평가받고 있으며 사상 최대의, 가장 많이 읽힌 참고서이기도 하다. 시밀러웹과 (과거) 알렉사 인터넷에서 가장 인기있는 웹사이트 10곳 중 하나로 꾸준히 순위를 올리고 있다. 2022년 기준으로 위키백과는 세계에서 5번째로 인기있는 사이트로 순위를 올렸다. 위키백과는 자유 저작물을 보유하고 상업적인 광고가 없으며 주로 기부금을 통해 지원을 받는 비영리 단체인 위키미디어 재단이 소유하고 지원하고 있다.", - "bilibili":"빌리빌리(영어: bilibili, 중국어: 嗶哩嗶哩)는 중화인민공화국의 UCC 웹페이지이다.", - "bing":"마이크로소프트 빙(Microsoft Bing, 이전 이름: 빙, 라이브 검색, 윈도 라이브 검색, MSN 검색)은 마이크로소프트사에서 2009년 6월 1일 서비스를 시작한 검색 서비스이다. 마이크로소프트가 기존에 개발했던 라이브 검색과 2008년 인수한 파워서치 기술을 결합한 서비스이다.", - "bing images":[ - "bing:ko", - "ref" - ], - "bing news":[ - "전세계, 국내 및 현지 뉴스원에서 제공하는 뉴스, 스포츠, 엔터테인먼트, 비즈니스, 정치, 날씨 등 심층적인 뉴스 범위를 제공하도록 구성.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Bing은 지능적인 검색 기능은 사용자가 원하는 정보를 빠르게 검색하고 보상을 제공합니다.", - "https://www.bing.com/videos" - ], - "bitbucket":"빗버킷(Bitbucket)은 아틀라시안 소유의 웹 기반 버전 관리 저장소 호스팅 서비스로서, 깃(2011년 10월 이후) 버전 관리 시스템을 사용하는 소스 코드 및 개발 프로젝트를 대상으로 한다. 빗버킷은 상용 플랜과 무료 계정을 동시에 제공한다. 2010년 9월 기준으로 무료 계정의 경우 무제한 수의 개인 저장소(무료 계정의 경우 최대 5명의 사용자 보유 가능)를 제공한다. 빗버킷은 지라, 힙챗, 컨플루언스, 밤부 등의 기타 아틀라시안 소프트웨어와 연동된다.", - "crossref":[ - "국제 DOI 재단의 공식 디지털 객체 식별자 등록 기관 중 하나", - "wikidata" - ], - "currency":"덕덕고(영어: DuckDuckGo DDG[*])는 사용자의 개인정보를 수집하지 않는 검색 엔진이다. 덕덕고 검색 엔진의 일부는 오픈 소스이고, 펄을 사용하며 서버는 NGINX로 운영된다. 회사는 미국의 펜실베이니아주에 있으며, 직원은 약 30명이다. 회사의 이름은 외국 게임인 덕, 덕, 구스에서 유래되었다.", - "deezer":"Deezer는 프랑스 온라인 음악 스트리밍 서비스이다. 이를 통해 사용자는 유니버설 뮤직 그룹, 소니 뮤직 및 워너 뮤직 그룹을 비롯한 음반사의 음악 콘텐츠를 들을 수 있다. 온라인 또는 오프라인으로 다양한 기기에서 팟캐스트로 청취할 수 있다.", - "deviantart":"디비언트아트(영어: DeviantArt)는 온라인 커뮤니티 사이트로, 사람들이 직접 그린 그림을 올린다. 2000년 8월 7일 설립되었으며, 본사는 미국 캘리포니아주 로스앤젤레스 할리우드에 있다. 세계구급의 자유 창작 사이트이며, 창작품의 종류도 가지가지여서 단순한 팬 아트나 팬 픽션부터, 예술 사진, 봉제 인형, 짧은 애니메이션 등등이 매일매일 올라오는 것이 특징이다. 2011년 7월 기준으로 매주 380만 명의 방문자 수를 기록하면서 소셜 네트워크 사이트 중 13위를 기록했다. 2015년 12월을 기준으로 2,600만명 이상의 회원이 가입했고, 251,000,000개의 사진이 올라왔다. 2022년 11월 11일 그림 인공지능 DreamUp을 도입하였으며, 회원들의 반발로 이용자 수가 감소하였다.", - "ddg definitions":[ - "currency:ko", - "ref" - ], - "wikidata":"위키데이터(영어: Wikidata)는 위키미디어 재단에서 운영하는, 협력적으로 편집 가능한 지식 베이스이다. 위키백과 등 위키미디어 프로젝트에서 공통으로 사용할 정보(예를 들어 생일 등)을 제공하는 것을 목적으로 한다. 위키미디어 프로젝트에서 사용하는 미디어 파일의 저장소를 제공하는 위키미디어 공용과 비슷하다.", - "duckduckgo":[ - "currency:ko", - "ref" - ], - "duckduckgo images":[ - "currency:ko", - "ref" - ], - "duckduckgo videos":[ - "currency:ko", - "ref" - ], - "duckduckgo news":[ - "currency:ko", - "ref" - ], - "duckduckgo weather":[ - "currency:ko", - "ref" - ], - "apple maps":"애플 지도(영어: Apple Maps)은 애플이 개발한 웹 지도 서비스이다. iOS, iPadOS, macOS, watchOS의 기본 지도 시스템으로 운전, 도보, 자전거, 대중교통 내비게이션 등을 위한 길 안내와 예상 도착 시간을 제공한다. Flyover 모드는 건물과 구조물의 모델로 구성된 3D 풍경에서 특정 인구 밀집 도시 중심 및 기타 관심 장소를 보여준다.", - "etymonline":"온라인 어원 사전(Online Etymology Dictionary)은 영어 단어의 어원을 설명해 주는 온라인 사전이다. 온라인 어원 사전의 약자는 OED인데, 옥스퍼드 영어 사전의 약자와 일치한다.", - "fdroid":"F-Droid는 구글 플레이 스토어와 비슷한 기능을 담당하는 안드로이드용 앱 스토어이자 소프트웨어 저장소이다. 이 프로젝트가 호스팅하는 주요 저장소는 자유-오픈 소스 앱들만 포함한다. F-Droid 웹사이트나 클라이언트 앱을 통해 계정 등록 없이 애플리케이션의 검색, 다운로드, 설치가 가능하다. 광고, 사용자 추적, 비자유 소프트웨어의 의존성 등 \"Anti-Features\"가 앱 설명에 표기된다.", - "flickr":"플리커(영어: Flickr)는 미국의 기업 야후의 온라인 사진 공유 커뮤니티 사이트로 2004년 2월부터 운영되고 있다. 웹 2.0의 대표적인 프로그램 중 하나로 거론되며, 캐나다 밴쿠버의 기업인 루디코프에서 개발했다.", - "free software directory":"자유 소프트웨어 디렉터리(Free Software Directory, FSD)는 자유 소프트웨어 재단(FSF)의 프로젝트이다. 자유 운영 체제, 특히 GNU와 리눅스에서 구동되는 자유 소프트웨어를 분류한다. 분류된 프로젝트들은 대개 기타 여러 운영 체제에서 실행이 가능하다. 이 프로젝트는 한때 유네스코에 의해 공동 운영되었다.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"깃랩(GitLab)은 깃랩 사(GitLab Inc.)가 개발한 깃 저장소 및 CI/CD, 이슈 추적, 보안성 테스트 등의 기능을 갖춘 웹 기반의 데브옵스 플랫폼으로써, 오픈 소스 라이선스 및 사유 소프트웨어 라이선스를 사용한다. 2019년 기준으로, 깃 저장소와 이슈 추적 기능을 갖춘 유일한 단일 어플리케이션의 데브옵스 솔루션이다. 시중에 유통되고 있는 많은 데브옵스 솔루션들은 자신들의 특화된 영역 이외는 API를 이용한 연동 만을 제공하지만 깃랩은 단일 어플리케이션으로써 데브옵스의 전 영역의 기능들을 모두 제공하고 있다.", - "github":"깃허브(GitHub, /'ɡɪtˌhʌb/, 원래 이름: Logical Awesome LLC)는 루비 온 레일스로 작성된 분산 버전 관리 툴인 깃 저장소 호스팅을 지원하는 웹 서비스이다. 깃허브는 영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공한다. 2009년의 깃 사용자 조사에 따르면 깃허브는 가장 인기있는 깃 저장소 호스팅 서비스이다. 또한 2011년의 조사에서도 가장 인기있는 오픈 소스 소프트웨어 인터넷 호스팅 서비스로 꼽혔다.", - "google":"구글 검색(영어: Google Search)은 구글이 소유한 웹 검색 엔진이다. 구글 검색은 월드 와이드 웹에서 가장 많이 쓰이는 검색 엔진으로, 다양한 서비스를 통해 날마다 수 억 번의 쿼리를 수신한다.", - "google images":"구글 이미지(Google Images)는 구글이 제작하여 2001년 7월에 선보인 검색 서비스로, 이미지 콘텐츠를 찾기 위해 웹을 검색하도록 도와준다. 그림을 검색할 때 일치하는 각 그림의 섬네일이 나타난다. 사용자가 섬네일을 클릭하면 그림은 웹사이트 위의 상자로 표시된다. 이 때 사용자는 상자를 닫고 웹사이트를 검색하거나 완전한 크기의 그림을 볼 수 있다.", - "google news":"구글 뉴스(Google News)는 구글이 제공하고 운영하는 무료 뉴스 애그리게이터이다. 자동 집계 알고리즘에 의해 수천 곳의 발행사로부터 최신의 정보를 선별한다. 현 총괄자는 리처드 징그러스이다.", - "google videos":"구글 비디오(Google Videos)는 구글이 무료로 제공하는 동영상 공유 및 동영상 검색 엔진 웹사이트이다.", - "google scholar":"구글 학술 검색(또는 구글 스칼라, 영어: Google Scholar)은 구글에서 제공하는 검색 서비스 중 하나. 주로 학술 용도로 검색을 대상으로 하고 있으며, 논문, 학술지, 간행물 등의 검색을 수행한다. 베타 출시는 2004년 11월. 사용자가 온라인 또는 도서관에서, 기사의 디지털 또는 물리적 사본을 검색 할 수 있다.", - "google play apps":"구글 플레이(영어: Google Play)는 음악, 동영상, 책, 안드로이드 응용 프로그램, 게임을 포함한 온라인 스토어와 클라우드 미디어 플레이어를 아우르는 구글의 디지털 콘텐츠 서비스이다. 구글 플레이는 구글이 기존의 안드로이드 마켓과 구글 뮤직 서비스의 상표를 새로 변경하면서 2012년 3월에 도입되었다. 구글 플레이를 통해 안드로이드 응용 프로그램을 받을 경우, 애플의 앱 스토어와는 달리 구글의 정책에 따라 사용자가 구입한 지 2시간 이내에 다운로드한 응용 프로그램의 환불을 요구하면 구매 금액을 모두 환불해 주어야 한다.", - "google play movies":[ - "google play apps:ko", - "ref" - ], - "hoogle":"하스켈 또는 해스켈(영어: Haskell IPA: [ˈhæskəl])은 순수 함수형 프로그래밍 언어이다. 교육계와 산업계 모두를 위해 설계된 하스켈은 타입클래스, 모나딕 IO와 같은 여러 프로그래밍 언어의 기능을 개척하였다. 하스켈의 주된 구현체는 GHC(Glasgow Haskell Compiler)이다.", - "imdb":"인터넷 영화 데이터베이스(Internet Movie Database, 약칭 IMDb)는 영화, 배우, 텔레비전 드라마, 비디오 게임 등에 관한 정보를 제공하는 온라인 데이터베이스이다. 2014년 8월 1일을 기준으로 영화, 에피소드 정보 2,950,317건, 인물 정보 6,029,621건을 소유하고 있으며, 컴퓨터 프로그래머 콜 니덤이 1990년에 제작했다. 1996년에는 영국에 인터넷 '무비 데이터베이스 Ltd' 회사를 설립해 광고 대행, 라이선싱, 파트너십 등을 통해 수익을 창출했다. 1998년에 아마존닷컴의 자회사로 들어가, DVD, 비디오 테이프를 판매하는 데 정보를 제공하고 있다.", - "imgur":"Imgur(, 이머저)는 2009년 앨런 샤프가 설립한 미국의 온라인 이미지 공유 커뮤니티, 이미지 호스팅 사이트이다.", - "kickass":"킥애스 토렌트(KickassTorrents, KAT)는 2008년에 개설된 비트토렌트 웹사이트로, 2014년 11월까지 킥애스 토렌트는 파이러트 베이를 제치고 세계에서 가장 많이 방문했던 비트토렌트 디렉토리가 되었다. KAT는 2016년 7월 20일 미국 정부에 의해 도메인이 붙잡히면서 오프라인 상태가 되었다. 이와 동시에 사이트의 프록시 서버는 직원들에 의해 작동이 중단되었다.", - "library genesis":"라이브러리 제네시스(영어: Library Genesis), 약칭 립겐(LibGen)은 학술논문 및 단행본 검색엔진이다. 대개 학술줄판사에 과금을 해야 열람할 수 있는 온갖 학술자료의 pdf 파일에 접근, 다운로드할 수 있다.", - "library of congress":"미국 의회도서관(美國議會圖書館, The Library of Congress)는 미국의 사실상의 국립 도서관이다. 워싱턴 D.C.에 있으며, 서재 공간으로는 세계에서 가장 크며 중요도에서도 으뜸이다. 3천만권의 대장에 정리된 도서가 있으며 470개 언어로 되어 있는 인쇄물들이 있다. 5천 8백만개의 문서들이 있으며, 구텐베르크 성서(현재 완전한 벨룸 형태의 책은 세계에 3권이 있는 것으로 알려져 있다)를 포함해서 고서를 가지고 있기로도 북아메리카에서 최고이다. 백만권의 미 정부 출판물과 백만편의 세계 신문은 3세기에 걸쳐 있고, 철된 신문도 3만 3천권, 50만개의 마이크로필름, 6천권의 만화책과 세계 최대의 법학책, 4백 80만점의 지도, 악보, 2백 7십만의 음반, 베츠 스트라디바리우스, 카사베티 스트라디바리우스도 소장하고 있다.", - "mastodon users":"마스토돈(영어: Mastodon)은 오이겐 로흐코가 개발한 자유-오픈 소스 소프트웨어 자체 호스팅 소셜 네트워크 서비스이다.", - "mastodon hashtags":[ - "mastodon users:ko", - "ref" - ], - "metacpan":"CPAN(Comprehensive Perl Archive Network)은 펄로 작성된 114,000개 이상의 소프트웨어 모듈의 저장소와 이에 대한 문서화 체계이다. www.cpan.org이라는 월드 와이드 웹에 존재하며 전 세계 200개 이상의 지역에서 미러 처리된다. CPAN의 대부분의 소프트웨어는 자유 및 오픈 소스 소프트웨어이다.", - "npm":"npm(노드 패키지 매니저/Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다. 자바스크립트 런타임 환경 Node.js의 기본 패키지 관리자이다. 명령 줄 클라이언트(npm), 그리고 공개 패키지와 지불 방식의 개인 패키지의 온라인 데이터베이스(npm 레지스트리)로 이루어져 있다. 이 레지스트리는 클라이언트를 통해 접근되며 사용 가능한 패키지들은 npm 웹사이트를 통해 찾아보고 검색할 수 있다. 패키지 관리자와 레지스트리는 npm사에 의해 관리된다.", - "openstreetmap":"오픈스트리트맵(영어: OpenStreetMap, OSM)은 누구나 참여할 수 있는 오픈 소스 방식의 무료 지도 서비스이다. 비영리 단체인 오픈스트리트맵 재단이 운영하고 2005년 설립되었다. 비영리 재단인 위키백과를 모델로 하고 있어 누구나 편집하고 활용할 수 있다.", - "pinterest":"핀터레스트(Pinterest)는 이용자가 스크랩하고자 하는 이미지를 포스팅하고 다른 이용자와 공유하는 소셜 네트워크 서비스이며, 명칭은 핀(Pin)과 인터레스트(Interest)의 합성어이다.", - "piratebay":"파이러트베이(영어: The Pirate Bay)는 스웨덴에 있는 비트토렌트 파일을 공유하는 웹사이트다. 스웨덴의 안티 카피라이트 단체인 웹사이트에 의해 설립되었다. 2004년 10월부터 운영되어 왔고 광고를 주 수입원으로 하고 있다. 2008년 11월을 기준으로 360만 사용자를 회원으로 확보하고 있다. 알렉사 인터넷의 집계에 의하면 웹사이트 트래픽 등급이 110번째다.", - "qwant":"Qwant는 프랑스 본사를 둔, 검색 엔진이다.", - "qwant news":[ - "qwant:ko", - "ref" - ], - "qwant images":[ - "qwant:ko", - "ref" - ], - "qwant videos":[ - "qwant:ko", - "ref" - ], - "reddit":"레딧(Reddit)은 미국의 소셜 뉴스 집계, 콘텐츠 등급 및 토론 웹 사이트이다. 등록된 사용자(일반적으로 \"레디터\"라고 함)는 링크, 텍스트 게시물, 이미지, 동영상 등의 콘텐츠를 사이트에 제출한 후 다른 회원에 의해 투표된다. 게시물은 주제별로 \"커뮤니티\" 또는 \"서브레딧\"이라고 불리는 사용자가 만든 게시판으로 구성된다. 더 많은 업보트가 있는 제출물은 하위 레딧의 맨 위에 표시되며, 충분한 업보트를 받은 경우 최종적으로 사이트의 첫 페이지에 표시된다. 레딧 관리자는 커뮤니티를 관리하며 중재는 레딧 직원이 아닌 커뮤니티별 중재자에 의해 수행된다.", - "soundcloud":"사운드클라우드(영어: SoundCloud)는 스웨덴의 스톡홀름에서 구상되고 독일 베를린에 본사를 둔 글로벌 온라인 음악 유통 플랫폼이다. 플리커, 유튜브, 비메오가 이미지, 영상 온라인 플랫폼을 대표한다면, 음악에는 사운드클라우드가 이 역할을 하고 있다고 평가된다. 아마추어의 작업물이 대다수이지만, 프로 뮤지션들이 무료 공개곡이나 신곡의 프리뷰를 올리기도 한다. 드레이크, 찬스 더 래퍼 등 다수의 아티스트들이 작업물을 공유하고 있다.", - "stackoverflow":[ - "질문답변 웹사이트의 네트워크", - "wikidata" - ], - "askubuntu":[ - "stackoverflow:ko", - "ref" - ], - "superuser":[ - "stackoverflow:ko", - "ref" - ], - "tagesschau":"tagesschau(타게스샤우)는 독일의 공영 방송 ARD의 뉴스 프로그램이다. 지난 1952년에 시작되어 독일의 뉴스 프로그램 중 가장 오랫동안 방송되고 있다.", - "unsplash":"언스플래시(Unsplash)는 자유 저작권 고해상도 사진을 무료로 제공하는 인터넷 사이트이다. 저작권이 자유이기 때문에 유튜버들에게 인기가 많다.", - "yahoo news":"야후! 뉴스(Yahoo! News)는 야후!에 의해 인터넷 기반 뉴스 애그리게이터로 시작된 뉴스 웹사이트이다. 이 사이트는 야후! 소프트웨어 엔지니어 Brad Clawsie가 1996년 8월 개발하였다. 기사들은 원래 AP, 로이터, 폭스 뉴스, 알자지라, ABC 뉴스, USA 투데이, CNN, BBC 뉴스 등의 뉴스 서비스로부터 비롯되었다.", - "youtube":"유튜브(영어: YouTube)는 2005년 서비스를 시작한 동영상 공유 플랫폼이다. 본사는 미국 캘리포니아주 샌브루노에 위치해 있다. 2005년 스티브 천, 채드 헐리, 자베드 카림 세 명의 공동창업자가 회사를 창업하였고, 2006년에 구글이 인수하여 서비스를 제공 중이다. 전 세계 최대 규모의 동영상 공유 및 호스팅 사이트로서, 이용자가 영상을 시청 · 업로드 · 공유할 수 있다.", - "dailymotion":"데일리모션(Dailymotion)은 프랑스의 비방디사가 소유한 동영상 공유 사이트이다. 데일리모션은 전 세계를 대상으로 하고 있으며, 지역 홈페이지 및 지역 콘텐츠를 다루는, 25개 언어 및 43개의 지역화된 버전으로 되어 있다.", - "vimeo":"비메오(영어: Vimeo)는 사용자가 직접 제작한 동영상을 업로드하고 공유하며 볼 수 있는 동영상 공유 웹사이트이다. 2004년 11월에 자크 클라인과 제이크 로드윅이 설립하였고, 비메오라는 이름은 공동 창업자 제이크 로드윅이 비디오(video)와 미(me)를 합쳐 지은 것으로 이는 이용자가 직접 만드는 영상물 중심을 이야기한다.", - "wikibooks":"위키책(Wikibooks)은 위키백과의 자매 프로젝트로 2003년 1월 10일에 시작되었다.", - "wikinews":"위키뉴스(영어: Wikinews)는 위키미디어 재단의 뉴스 소스이다. 위키뉴스는 GNU 자유 문서 사용 허가서 1.2 이상에 따라 배포되는 위키미디어 재단의 다른 프로젝트와는 달리 크리에이티브 커먼즈의 저작자표시 사용 허가서 2.5 이상의 라이선스를 가진다. 위키뉴스에서 지지하는 중립적 시각 정책은 오마이뉴스와 같은 시민 언론의 노력과는 구별된다. 위키미디어 재단의 대부분의 프로젝트와 달리 위키뉴스는 독자적인 리포트와 인터뷰 형태의 독자적인 기사를 허용한다.", - "wikiquote":"위키인용집(Wikiquote)은 위키백과의 자매 프로젝트로, 2004년 7월부터 영어판 위키인용집을 시작으로 여러 언어로 프로젝트가 번역되었다. 이 프로젝트의 목표는 유명한 인물이 한 말이나 책의 문장 등을 인용하고 해석하는 것이니 일종의 어록이라고 할 수 있다.", - "wikisource":"위키문헌(-文獻, 영어: Wikisource)은 위키미디어 재단에서 추진하고 있는 프로젝트이다. 위키문헌 프로젝트의 목표는 모든 사람들이 자유로이 쓸 수 있는 정보자료를 한 곳에 모으는 것이다. 자비 출판 문서나 서적을 올리는 것은 허용되지 않는다.", - "wikispecies":"위키생물종(Wikispecies 위키스피시즈[*])은 위키미디어 재단의 지원을 받는 생물 분류 도감용 프로젝트이다.", - "wiktionary":"위키낱말사전(영어: Wiktionary)은 위키백과의 자매 프로젝트로, 공개된 위키 형식으로 다언어 사전을 만드는 것을 목표로 한다. 최종 목표는 \"모든 언어의 모든 낱말을 정의하는 것\"이다.", - "wikiversity":"위키배움터(영어: Wikiversity 위키버시티[*])는 위키미디어 재단의 프로젝트이다. URL은 www.wikiversity.org이다. 위키버시티는 2006년 8월 15일 영어판이 제일 먼저 시작했으며 새로운 언어판들이 위키배움터 베타에서 시험판으로 생기고 있다. 위키배움터는 모두에게 열린 학습공간을 지향한다.", - "wikivoyage":"위키여행(Wikivoyage, 프랑스어 발음: //, 비키부아야주; 영어 발음: //, 위키보이지)은 자발적 참여자가 함께 만들어가는 여행 가이드북 웹사이트이다. 이름은 위키(wiki)와 여행을 뜻하는 프랑스어 부아야주(voyage)를 합쳐 만들었다.", - "wikicommons.images":"위키미디어 공용(Wikimedia Commons)은 자유 콘텐츠인 그림, 소리 등의 멀티미디어 파일의 저장소이며, 위키미디어 재단의 프로젝트 중 하나이다. 공용에 올라온 미디어 파일은 위키백과, 위키책, 위키뉴스 등의 다른 모든 위키미디어 프로젝트에서 함께 이용할 수 있다.", - "wolframalpha":"울프럼 알파(Wolfram Alpha)는 계산용 프로그램인 매스매티카의 개발자인 물리학자 스티븐 울프럼이 만든 검색엔진으로서 슈퍼컴퓨터를 통한 인공지능을 통해 웹 상의 지식을 재구성하여 사용자에게 제공하며 간단한 연산을 직접 수행하고 그 그래픽 결과도 시뮬레이팅한다.", - "naver":"네이버(영어: NAVER)는 1999년 6월에 출시된 대한민국의 포털사이트이다. 또한 네이버는 1997년 2월 26일 이해진, 권혁일, 김보경, 구창진, 오승환, 최재영, 강석호 등으로 구성된 삼성SDS의 사내 벤처에서 '웹글라이더'라는 이름으로 시작해서 1998년 1월에 분리된 네이버컴 주식회사에서 운영하다가 2000년 자회사인 한게임과 합병하여 NHN이 된 후 재분리하여 현재는 네이버(주)에서 운영하고 있다.", - "rubygems":"RubyGems는 루비 프로그래밍 언어를 위한 패키지 관리자이다. 루비 프로그램들과 라이브러리들을 배포하기 위한 표준 포맷을 제공한다. 그 외에 gems의 설치를 쉽게 관리하도록 설계된 도구와 이들을 배포하기 위한 서버도 제공한다. RubyConf 2004 기간 중 Chad Fowler, Jim Weirich, David Alan Black, Paul Brannan, Richard Kilmer에 의해 개발되었다.", - "peertube":"피어튜브(PeerTube)는 비디오를 볼 때 개별 서버의 로드를 줄이기 위해 P2P 기술을 사용하는 웹토렌트로 구동되는 자유-오픈 소스, 분산형 액티비티펍(ActivityPub) 연합 비디오 플랫폼이다.", - "wttr.in":[ - "일기 예보: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"브레이브(Brave)는 Brave Software, Inc.에서 개발하는 크로미엄 웹 브라우저에 기반한 자유-오픈 소스 웹 브라우저이다. 이 브라우저는 웹사이트 트래커(website tracker)와 광고를 차단한다. 이 회사는 이 브라우저의 미래 버전에 웹 서핑에 돈을 지불(pay to surf)하는 비즈니스 모델을 적용하는 것을 제안하였다.", - "brave.images":[ - "brave:ko", - "ref" - ], - "brave.videos":[ - "brave:ko", - "ref" - ], - "brave.news":[ - "brave:ko", - "ref" - ] - }, - "lt":{ - "apple app store":"„App Store“ – „Apple“ „iOS“ bei „iPadOS“ operacinės sistemos mobiliųjų programų parduotuvė.", - "wikipedia":"Vikipedija – laisvoji interneto enciklopedija. Joje paskelbta daugiau nei 55 mln. straipsnių 306 kalbomis. 2020 m. Vikipediją kas mėnesį skirtingais įnagiais aplankė 1,5 mlrd. lankytojų bei peržiūrėjo 15 mlrd. puslapių.", - "bing":"Bing – kompanijos Microsoft sukurta paieškos sistema.", - "bing images":[ - "bing:lt", - "ref" - ], - "bing news":[ - "Naujienos iš viso pasaulio, nacionalinių ir vietinių naujienų šaltinių parengtos taip, kad išsamiai atskleistų sporto, pramogų, verslo, politikos įvykius, orus ir dar daugiau.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Intelektualioji „Bing“ ieška leidžia lengvai ir greitai rasti tai, ko ieškote, ir apdovanoja jus.", - "https://www.bing.com/videos" - ], - "deviantart":"deviantArt, deviantART arba DeviantArt – 2000 m. sukurta internetinė svetainė, skirta naudotojų sukurtiems meno kūriniams saugoti ir platinti.", - "apple maps":"Apple Maps – žemėlapių ir navigacijos programėlė, veikianti „iOS“, „macOS“, „watchOS“ operacinėse sistemose. „Apple“ ją pristatė 2012 m. rugsėjo 12 d., kartu su nauja „iOS“ versija, kurioje atsisakė anksčiau naudotų „Google Maps“ žemėlapių ir pakeitė juos savais.", - "flickr":"„Flickr“ – socialinis tinklas, priklausantis „SmugMug“ bendrovei.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"Google Search (Google) – internetinės paieškos sistema plėtojama „Google“ bendrovės. Plačiausiai naudojamas paieškos variklis internete, užimantis daugiau nei 90 % rinkos dalį. Įvykdo daugiau nei 5 mlrd. užklausų per dieną. „Google“ paieškos sistemoje ieškoma interneto puslapių, naujienų, nuotraukų, vaizdo įrašų („YouTube“) bei kitų išteklių. „Google“ siūlo ir papildomų paslaugų.", - "google images":[ - "„Google“ vaizdai. Išsamiausia žiniatinklio vaizdų paieška.", - "https://images.google.com" - ], - "google news":[ - "Išsamios naujausios žinios, kurias iš viso pasaulio naujienų šaltinių surinko „Google“ naujienos.", - "https://news.google.com" - ], - "google videos":"Google Video – nemokama „Google“ paslauga, kuri leidžia kiekvienam įkelti vaizdo klipus į „Google“ serverius, taip ją padarant nemokamai prienamą arba apmokestintą per „Google Video“ parduotuvę. Naudotojai gali naršyti ir peržiūrėti filmus tiesiogiai „Google Video“ svetainėje arba parsisiųti failus ir juos pateikti savo asmeninėje svetainėje.", - "google scholar":"„Google Scholar“ – „Google“ bendrovės mokslinės informacijos paieškos sistema. Joje galima rasti recenzuotus darbus, disertacijas, knygas, santraukas ir kitą mokslinę literatūrą įvairiose mokslinio tyrimo srityse.", - "google play apps":"Google Play – „Android“ operacinės sistemos mobiliųjų programų, knygų, žaidimų, muzikos ir filmų parduotuvė. Prieinama beveik visose šalyse.", - "google play movies":[ - "google play apps:lt", - "ref" - ], - "imdb":"The Internet Movie Database – nuolat atnaujinama interneto duomenų bazė apie aktorius, filmus, televizijos laidas, videožaidimus ir panašius dalykus. Svetainę valdo IMDb.com, Inc.", - "library genesis":"„Library Genesis“ arba „LibGen“ – rinkmenų dalinimosi svetainė, kurioje talpinami moksliniai straipsniai, moksliniai veikalai ir kitos knygos.", - "library of congress":"Kongreso biblioteka - (neoficiali) nacionalinė biblioteka JAV. Užima daug pastatų Washington D. C.. Viena reikšmingiausių pasaulio bibliotekų.", - "openstreetmap":"OpenStreetMap – atviras projektas, kurio dalyviai naudodamiesi projekte kaupiamais GPS imtuvų duomenimis bei kita atvira informacija, pvz., Mapillary, ortofoto, ar palydovinėmis nuotraukomis, kuria laisvai prieinamą viso pasaulio kelių bei gatvių žemėlapį.", - "pinterest":"„Pinterest“ – nuotraukų dalinimosi socialinis tinklas. Tai iš esmės – virtualus iškarpų albumas, į kurį vartotojai gali „įsegti“ internete randamus vaizdus. Pavyzdžiui, namų dizaino, mados, patiekalų, kelionių nuotraukas. Be kita ko JAV rinkoje siūlantis ir įsigyti pastarųjų prekių pačiame socialiniame tinkle. Daugiausiai naudojamas 35-44 m. amžiaus moterų.", - "piratebay":"The Pirate Bay – interneto svetainė, pristatanti save „Atspariausiu pasaulyje BitTorrent serveriu“. Alexa, interneto svetainių lankomumo duomenimis, 2007 m. spalio 6 d. užėmė 192 vietą lankomiausių svetainių suvestinėje.", - "reddit":"„Reddit“ – amerikiečių socialinių naujienų tinklas ir internetinių forumų svetainė, įkurta 2005 m. birželio 23 d.", - "soundcloud":"SoundCloud – garso įrašų dalinimosi socialinis tinklas. Šis socialinis tinklas buvo įkurtas 2008 m.", - "youtube":"„YouTube“ – „Google“ bendrovės socialinis tinklas, kurį aplanko daugiau nei 1 mlrd. vartotojų per dieną, iš kurių 1,9 mlrd. prisijungia kas mėnesį. Jame daugiausia peržiūrų sulaukia „Vevo“ bendrovės muzikinio kanalo turinys, įvairūs vlogai ir kt.", - "dailymotion":"„Dailymotion“ – prancūzų sukurta vaizdo įrašų dalinimosi platforma, priklausanti kompanijai „Vivendi“. Prie šios platformos steigimo partnerystės prisidėjo tokios bendrovės kaip „Vice Media“, „Bloomberg“ bei „Hearst Digital Media“. Visame pasaulyje yra prieinama 183 kalbomis ir 43 lokalizuotomis svetainės versijomis, skirtomis tam tikriems regionams su jiems atrinktu aktualiu turiniu.", - "vimeo":"„Vimeo“ – vaizdo įrašų dalinimosi socialinis tinklas, orientuotas į kūrybinių industrijų darbuotojus. „Vimeo“ apsilanko daugiau nei 280 mln. lankytojų per mėnesį. Turi per 70 mln. prisiregistravusių vartotojų. Įkurtas 2004 m. 2021 m. tapo akcine bendrove.", - "wikibooks":"Vikiknygos – visuotinis internetinės bibliotekos kūrimo projektas, Vikipedijai bei kitiems Vikimedijos projektams giminingas projektas, besiremiantis Vikimedijos programine įranga ir yra laisvai prieinamas internete. Prieš tai buvo Laisvuoju Vikimedijos tekstų ir knygų projektu, Gretutinis porjektas Wikijunior siekia sukurti įvairių sričių knygas, kurių pagalba su pasaulio žiniomis galėtų susipažinti ir 8-11 metų amžiaus vaikai. Vikiknygoms taikoma GFDL licencija.", - "wikinews":"Vikinaujienos – Vikimedijos projektas. Jo tikslas – kurti laisvai prieinamas bei neutraliai pateikiamas žinias bei naujienas. Projekte naudojama viki programinė įranga bei MediaWiki. Šiuo projektu siekiam įgyvendinti pilietinio žurnalizmo idėją, suteikiant galimybę teikti informaciją nebūtinai profesionaliems žurnalistams.", - "wikiquote":"Vikicitatos – laisvasis interneto projektas, kaip ir Vikipedija besiremiantis mediawiki programine įranga. Tikslai - Viki principu sudaryti citatų kompendiumą įvairiomis kalbomis. Vikicitatose skelbiamos įvairios citatos, aforizmai, sentencijos, lozungai, žymių žmonių mintys, šmaikštūs posakiai, patarlės ir priežodžiai pačiomis įvairiausiomis temomis.", - "wikisource":"Vikišaltiniai – kaip ir Vikipedija yra Vikimedijos projektas, paremtas MediaWiki programine įranga; internetinis projektas, kuriame kaupiama tekstinė informacija, dokumentai, skirti tekstinėms kitų Vikimedijos projektų „iliustracijoms“ ir papildymams. Tekstams netaikomos autorinės teisės apsaugos režimas dėl riboto naudojimo arba jie yra viešo naudojimo arba taikoma GNU-FDL licencija. Kitoms medijų rūšims kaip vaizdinei, garso informacijai yra skirtas Vikitekos projektas.", - "wikispecies":"Vikirūšys – internetinis Vikimedijos fondo projektas, veikiantis vikitechnologijos principu. Projekto idėją pasiūlė Benedikt Mandl 2004 rugpjūčio 3 d.", - "wiktionary":"Vikižodynas – universalaus internetinio žodyno kūrimo projektas, Vikipedijai bei kitiems Vikimedijos projektams giminingas projektas, besiremiantis mediawiki programine įranga ir yra laisvai prieinamas internete.", - "wikiversity":"Vikiversitetas – Vikimedijos fondo projektas, pagrįstas MediaWiki technologija; vikisvetainė.", - "wikivoyage":"Vikikelionės – internetinis projektas, kuriamas vikitechnologija bei pagrįstas MediaWiki programine įranga. Vikikelionės nuo 2013 m. sausio 15 d. yra oficialus Vikimedijos projektas.", - "wikicommons.images":"Vikiteka – daugialypės terpės failų talpyklos projektas yra nemokamo turinio duomenų bazė, kurią išlaiko bei remia Vikimedijos fondas. Įvairi medžiaga dažniausiai naudojama kuriant Laisvąją enciklopediją – Vikipediją.", - "wttr.in":[ - "Orų prognozė: Boydton, Virginia, United States", - "https://wttr.in" - ] - }, - "lv":{ - "annas archive":"Annas arhīvs ir bezmaksas, bezpeļņas tiešsaistes ēnu bibliotēkas metameklētājs, kas nodrošina piekļuvi grāmatām un citiem rakstītajiem avotiem. To izveidoja anonīmu arhivāru komanda, reaģējot uz 2022. gada novembrī veikto interneta vietnes Z-Library slēgšanu.", - "apple app store":"Apple App Store ir elektronisks iOS ierīcēm paredzēts lietotņu veikals, kuru uzrauga Apple Inc.. Šis lietotņu veikals ļauj lietotājiem meklēt un lejupielādēt lietotnes no iTunes Store, kuras tiek izgatavotas, izmantojot iOS SDK vai Mac SDK, un tās izdod Apple. Veikalā pieejamas gan bezmaksas, gan maksas lietotnes. Lietotnes var lejupielādēt tieši vajadzīgajā ierīcē vai arī datorā, izmantojot programmu iTunes. No pārdotajām maksas lietotnēm 30% ieņēmumu nonāk uzņēmumam „Apple”, bet atlikušie 70% nonāk lietotņu izstrādātājiem.", - "artic":[ - "mākslas muzejs un skola Čikāgā", - "wikidata" - ], - "wikipedia":"Vikipēdija (Wikipedia) ir brīva, daudzvalodu enciklopēdija ar bezmaksas saturu, kuras ikdienas darbību nodrošina bezpeļņas organizācija Wikimedia Foundation. Kopš tās dibināšanas 2001. gadā, Vikipēdija ir kļuvusi par vienu no populārākajām uzziņu un ziņu vietnēm vispasaules tīmeklī, kā arī vienu no apmeklētākajām mājaslapām visā pasaulē.", - "bing":"Microsoft Bing ir interneta meklētājprogramma, kas pieder un ko pārvalda Microsoft. Meklētājprogrammas pirmsākumi ir saistīti ar iepriekšējām Microsoft meklētājprogrammām: MSN Search, Windows Live Search un vēlāk Live Search. Bing nodrošina dažādus meklēšanas pakalpojumus, tostarp tīmekļa, video, attēlu meklēšana un tīmekļa karšu servisu. Tas ir izstrādāts, izmantojot ASP.NET.", - "bing images":[ - "bing:lv", - "ref" - ], - "bing news":[ - "Ziņas, ko piedāvā pasaules, valsts un vietējie ziņu avoti, sniedz visaptverošu pārskatu par jaunumiem sportā, izklaides nozarē, uzņēmējdarbībā, politikā, laika prognozi un citām tēmām.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Viedā Bing meklēšana palīdz ātri atrast nepieciešamo un atalgo jūs.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo ir interneta meklētājprogramma, kuru izveidoja Gabriels Veinbergs un laida klajā 2008. gada 25. septembrī. 2014. gada 21. maijā DuckDuckGo ieviesa jauno mājaslapas dizainu, kas fokusējās uz labāk formulētām atbildēm un labāku izskatu. Jaunajā dizainā tika iekļautas tādas pieprasītas funkcijas kā attēlu meklēšana.", - "ddg definitions":[ - "currency:lv", - "ref" - ], - "wikidata":"Vikidati ir brīvi papildināma zināšanu bāze, ko uztur Wikimedia Foundation organizācija. Tā ir paredzēta, lai nodrošinātu vienotu avotu dažādiem atvērto datu veidiem, kurus var izmantot Wikimedia projektos, kā Vikipēdija, un citur. Šajā pielietojuma veidā tā ir līdzīga Vikikrātuvei, kas nodrošina multimediju failu glabāšanu un pieeju visiem Wikimedia projektiem. Vikidatos atrodamā informācija ir brīvi izmantojama atbilstoši CC0 publiskā īpašuma deklarācijai. Vikidatu zināšanu bāze ir vikivietne, kuras pamatā ir MediaWiki programmatūra un vairāku MediaWiki paplašinājumu kopums, ko sauc par Wikibase.", - "duckduckgo":[ - "currency:lv", - "ref" - ], - "duckduckgo images":[ - "currency:lv", - "ref" - ], - "duckduckgo videos":[ - "currency:lv", - "ref" - ], - "duckduckgo news":[ - "currency:lv", - "ref" - ], - "duckduckgo weather":[ - "currency:lv", - "ref" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub ir tīmeklī balstīts Git repozitoriju mitināšanas pakalpojums. Tajā tiek piedāvāta visa izplatītu versiju pārvaldības sistēmu un pirmkoda vadības funkcionalitāte, pieejamas ir arī vairākas citas iespējas, tostarp piekļuves vadība, kļūdu izsekošana, uzdevumu pārvaldība, wiki.", - "google":"Google meklētājs ir interneta meklētājprogramma, kas pieder Google uzņēmumam. Google meklētājs ir populārākais internetā, katru dienu tiek veikti vairāk nekā trīs miljardi meklējumu.", - "google images":[ - "Google attēli. Visaptverošākā attēlu meklēšana tīmeklī.", - "https://images.google.com" - ], - "google news":"Google News ir bezmaksas ziņu agregators, ko pārvalda uzņēmums Google Inc. Serviss tika izveidots 2002. gadā un tiek dēvēts par pasaulē lielāko ziņu apkopotāju.", - "google scholar":[ - "Google Scholar nodrošina vienkāršu un ērtu veidu, kā meklēt zinātnisko literatūru. Meklēšanai ir pieejams plašs kategoriju un avotu klāsts: raksti, disertācijas, grāmatas, kopsavilkumi un tiesas spriedumi.", - "https://scholar.google.com" - ], - "google play apps":"Google Play ir elektronisks lietotņu veikals, kas paredzēts Android operētājsistēmas ierīcēm. Šī lietotņu veikala darbību pārrauga Google. Veikalā pieejamas gan bezmaksas, gan maksas lietotnes, kuras var lejupielādēt gan no mobilās ierīces, gan no Google TV, gan caur datoru, nosūtot pieteikumu lejupielādēt lietotni mobilajā ierīcē. Google Play ir arī pieejamas elektroniskās grāmatas, mūzika, filmas un citas multimediju iespējas.", - "google play movies":[ - "google play apps:lv", - "ref" - ], - "hoogle":"Haskell ir standartizēta dažāda pielietojuma pilnīgi funkcionāla programmēšanas valoda ar ne-striktu semantiku un stipru, statisku tipu sistēmu. Tā nosaukta par godu loģiķim Haskelam Kurijam.", - "imdb":"Interneta filmu datubāze ir tiešsaistes datubāze ar informāciju par filmām, aktieriem, televīzijas šoviem un datorspēlēm. IMDb izveidoja datorprogrammētājs Kols Nīdhems. Darbība tika uzsākta 1990. gada 17. oktobrī. 1998. gadā IMDb nonāca Amazon.com īpašumā.", - "library of congress":"Kongresa bibliotēka ir bibliotēka ASV, de facto ASV nacionālā bibliotēka, vecākā federālā kultūras institūcija visā valstī. Tā atrodas trīs ēkās Vašingtonā. Kongresa bibliotēka ir lielākā bibliotēka pasaulē pēc grāmatu skaita un plauktu lieluma.", - "mastodon users":"Mastodon ir brīvā un atvērtā pirmkoda programmatūra pašmitināto sociālo tīklu pakalpojumu darbināšanai. Tam ir Twitter pakalpojumam līdzīgas mikroemuāru rakstīšanas funkcijas, kuras piedāvā liels skaits neatkarīgi uzturētu mezglu, kas pazīstami kā instances, un katram ir savs rīcības kodekss, pakalpojumu sniegšanas noteikumi, konfidencialitātes un moderēšanas politikas.", - "mastodon hashtags":[ - "mastodon users:lv", - "ref" - ], - "openstreetmap":"OpenStreetMap ir projekts, kura mērķis ir radīt brīvi labojamas kartes. Kartes tiek veidotas, par pamatu ņemot datus no pārnēsājamiem GPS uztvērējiem, aerofotogrāfijām, pašu lietotāju zināšanām, kā arī no citiem atvērtiem datu avotiem, kas pieļauj to izmantošanu karšu veidošanai.", - "pinterest":"Pinterest ir tīmekļa vietne, kas tika izveidota 2010. gadā, Sanfrancisko, ASV. Sociālo platformu Pinterest izveidoja Bens Silbermens, Pols Skiara un Evans Šarps, vietni pārvalda kompānija Cold Brew Labs, ko dibinājusi neliela uzņēmēju un investoru grupa. Pats vietnes dibinātājs un vadītājs Silbermans raksturojis Pinterest vairāk kā \"ideju katalogu, kas mudina iet un darīt, nevis sociālo tīklu\".", - "piratebay":"The Pirate Bay ir Zviedrijas tīmekļa vietne, kas indeksē BitTorrent (.torrent) failus un magnet saites (.magnet) pārsvarā uz izklaidējoša rakstura multimediju failiem. Tā pozicionē sevi kā \"Pasaulē noturīgāko bittorrent vietni\" un pēc Alexa Internet vērtējuma ir 324. populārākā lapa pasaulē un 135. populārākā ASV. Vietnes uzturēšanas izmaksas tiek segtas no reklāmām, kas izvietotas blakus torrentu sarakstiem. To 2003. gada novembrī izveidoja Zviedrijas autortiesību pretinieku organizācija Piratbyrån. Kopš 2004. gada oktobra vietni uztur atsevišķa organizācija. Vietni uzturēja Gotfrīds Svartholms un Fredriks Neijs. 2009. gadā abi kopā ar Peteru Sundi un Karlu Lundsremu tika notiesāti par līdzdalību autortiesību pārkāpšanā saistībā ar savu līdzdalību The Pirate Bay.", - "reddit":"Reddit, stilizēts kā reddit, ir sociālais tīkls un ziņu vietne, kurā reģistrēti lietotāji var iesniegt saturu, piemēram, rakstu vai saiti, tad citi reģistrētie lietotāji var atzīmēt iesniegumus kā labus vai sliktus. Jo vairāk lietotāju ir atzīmējuši iesniegumu uz augšu, jo lielākam skaitam lietotāju šis iesniegums tiek parādīs.", - "soundcloud":"SoundCloud ir 2007. gada augustā Stokholmā, Zviedrijā dibināta mūzikas straumēšanas platforma. Tās galvenā mītne atrodas Berlīnē, Vācijā. Soundcloud vietnē ir vairāk nekā 76 miljoni reģistrētu lietotāju un 175 miljoni unikālo mēneša klausītāju. Platformā pieejami abonēšanas pakalpojumi mūziķiem un klausītājiem. Platforma ir populāra arī raidierakstu veidotāju vidū.", - "youtube":"YouTube ir video koplietošanas tiešsaistes sociālā tīkla tīmekļa vietne, kurā tās apmeklētāji var ievietot, skatīties un izmantot dažādus video failus. Šos failus lietotāji var novērtēt, pie katra faila norādīts tā skatījumu skaits.", - "wikibooks":"Wikibooks ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Šajā projektā tiek apkopotas dažādas grāmatas, ko var labot ikviens. Projekts izveidots 2004. gadā. Sākotnēji projekts tika izveidots angļu valodā, bet ar laiku parādījās projekta versijas arī citās valodās.", - "wikinews":"Wikinews ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Tā ir tiešsaistes ziņu tīmekļa vietne. Šajā projektā atšķirībā no citiem Wikimedia Foundation projektiem ir atļauti oriģināldarbi. Oficiāli projekts tika izveidots 2004. gada 8. novembrī.", - "wikiquote":"Wikiquote ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Šajā projektā tiek apkopoti slavenu cilvēku, grāmatu un filmu citāti. Sākotnēji projekts tika izveidots angļu valodā, bet ar laiku parādījās šādi paši projekti arī citās valodās. Latviešu valodas projekts pašlaik atrodas inkubatorā.", - "wikisource":"Wikisource ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Tā ir tiešsaistes bibliotēka ar brīva satura informāciju. Projekts tika izveidots 2003. gada 24. novembrī. Sākotnējais projekta nosaukums bija Project Sourceberg. 2004. gada 23. jūlijā nosaukums tika mainīts uz pašreizējo.", - "wikispecies":"Wikispecies ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Tas ir tiešsaistes brīva satura katalogs ar sugām. Šis katalogs ir vairāk domāts zinātniekiem, nevis plašam cilvēku lokam. Wikispecies darbojas ar GNU Free Documentation License licenci un CC-BY-SA 3.0. Projekts tika uzsākts 2004. gada septembrī.", - "wiktionary":"Vikivārdnīca ir brīva papildināma daudzvalodu vārdnīca, kura izveidota uz wiki bāzes. Tas ir viens no Wikimedia Foundation projektiem.", - "wikiversity":"Wikiversity ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Tas ir tiešsaistes brīva satura portāls ar mācību materiāliem un dažādām pamācībām. Projekts tika uzsākts 2006. gada augustā. Pašlaik šis projekts pieejams angliski un vēl vairāk nekā 10 citās valodās.", - "wikivoyage":"Wikivoyage ir viens no Wikimedia Foundation projektiem, kas ir balstīts uz wiki programmatūru. Tas ir tiešsaistes brīva satura portāls ar tūrisma materiāliem. Dibināts 2006. gadā, Wikimedia Foundation to pārņēma 2012. gadā. Pašlaik šis projekts pieejams angliski un vēl vairāk nekā 10 citās valodās.", - "wikicommons.images":"Vikikrātuve ir brīvi pieejamu attēlu, skaņu failu un citu multivides failu krātuve. Tas ir Wikimedia Foundation projekts un šajā krātuvē augšuplādētie faili, tieši tāpat kā lokāli augšupielādēti faili, ir izmantojami visos Wikimedia projektos, ieskaitot visu valodu Vikipēdijas, Wikibooks un Wikinews." - }, - "ml":{ - "apple app store":"ആപ്പിൾ ഇൻക്. അതിന്റെ ഐഒഎസ്, ഐപാഡ്ഒഎസ്(iPadOS) ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്കുള്ള മൊബൈൽ ആപ്പുകൾക്കായി വികസിപ്പിച്ച് പരിപാലിക്കുന്ന ഒരു ആപ്പ് സ്റ്റോർ പ്ലാറ്റ്‌ഫോമാണ് ആപ്പ് സ്റ്റോർ. ആപ്പിളിന്റെ ഐഒഎസ് സോഫ്റ്റ്‌വെയർ ഡെവലപ്‌മെന്റ് കിറ്റിൽ വികസിപ്പിച്ച അംഗീകൃത ആപ്പുകൾ ബ്രൗസ് ചെയ്യാനും ഡൗൺലോഡ് ചെയ്യാനും സ്റ്റോർ ഉപയോക്താക്കളെ അനുവദിക്കുന്നു. ഐഫോൺ, ഐപോഡ് ടച്ച്(iPod Touch), അല്ലെങ്കിൽ ഐപാഡ് എന്നിവയിൽ ആപ്പുകൾ ഡൗൺലോഡ് ചെയ്യാം, ചിലത് ഐഫോൺ ആപ്പുകളുടെ എക്സ്റ്റൻഷനുകളായി ആപ്പിൾ സ്മാർട്ട് വാച്ചിലേക്കോ നാലാം തലമുറയിലേക്കോ പുതിയ ആപ്പിൾ ടിവിയിലേക്കോ മാറ്റാം.", - "wikipedia":"എല്ലാ ഭാഷകളിലും സ്വതന്ത്രവും സമ്പൂർണവുമായ വിജ്ഞാനകോശം നിർമ്മിക്കുവാനുള്ള ഒരു കൂട്ടായ സംരംഭമാണ് വിക്കിപീഡിയ (ഇംഗ്ലീഷ്: Wikipedia). ലാഭേച്ഛയില്ലാതെ പ്രവർത്തിക്കുന്ന വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ പിന്തുണയോടെയാണ് ഈ പദ്ധതി പ്രവർത്തിക്കുന്നത്. വിക്കിപീഡിയയുടെ ഉള്ളടക്കം ഗ്നൂ സ്വതന്ത്ര പ്രസിദ്ധീകരണാനുമതി പ്രകാരം ലഭ്യമായതിനാൽ എപ്പോഴും സ്വതന്ത്രവും സൗജന്യവും ആയിരിക്കും. എങ്കിലും ചില പതിപ്പുകളിൽ സ്വതന്ത്രമല്ലാത്ത ഉള്ളടക്കവും നിലവിലുണ്ട്. വിക്കിപീഡിയ എന്ന പേര്, വിക്കി, എൻസൈക്ലോപീഡിയ എന്നീ പദങ്ങളുടെ ഒരു മിശ്രശബ്ദമാണ്.", - "bing":"മൈക്രോസോഫ്റ്റിന്റെ ഉടമസ്ഥതയിലുള്ള ഒരു വെബ്ബു് സെർച്ച്‌ എഞ്ചിൻ ആണു് ബിംഗ്‌ (Bing). വെബ്ബ് വിലാസം കുമോ എന്നപേരിലായിരുന്നു മുൻപ്‌ ഇതിന്റെ പരീക്ഷണങ്ങൾ നടത്തിയിരുന്നത്‌. 3 ജൂൺ 2009 നാണു് ഈ സേർച്ചു് എഞ്ചിൻ ഔദ്യോഗികമായി പ്രവർത്തിക്കാൻ തുടങ്ങിയതു്. പ്രവർത്തനം തുടങ്ങി ഒരാഴ്ചക്കകം തന്നെ ആകെ ഉപയോഗിക്കുന്ന സെർച്ച് എഞ്ചിനുകളിൽ രണ്ടാം സ്ഥാനം ബിംഗ് കരസ്ഥമാക്കി. മുന്നിലുള്ള ഗൂഗിളിന്റേത് 87.62%-ഉം ബിംഗിന്റേത് 5.62%-ഉം ആണ്‌.", - "bing images":[ - "bing:ml", - "ref" - ], - "bing videos":[ - "Bing-ൽ നിന്നുള്ള ഇന്റലിജന്റ് തിരയൽ നിങ്ങൾ തിരയുന്നത് അതിവേഗം കണ്ടെത്തുന്നത് എളുപ്പമാക്കുന്നു, നിങ്ങൾക്ക് റിവാർഡ് നൽകുകയും ചെയ്യുന്നു.", - "https://www.bing.com/videos" - ], - "currency":"വെബ്സൈറ്റുകളിൽ തിരച്ചിൽ നടത്തുന്നവരുടെ സ്വകാര്യത സംരക്ഷിക്കുകയും വ്യക്തിഗത തെരച്ചിൽ ഫലങ്ങളിലെ ഫിൽറ്റർ ബബ്ൾ ഒഴിവാക്കുകയും ചെയ്യുന്ന സുരക്ഷിതമായ ഒരു ഇന്റർനെറ്റ് സെർച്ച് എൻജിനാണ് ഡക്ഡക്ഗോ (DuckDuckGo). തങ്ങൾ ഉപയോക്താവിനെ പിൻതുടരുകയോ (ട്രാക്കിംഗ്) തെരച്ചിൽ ചരിത്രം മറ്റുള്ളവരുമായി പങ്കുവെയ്കുകയോ ചെയ്യുന്നില്ലെന്ന് ഈ സെർച്ച് എഞ്ചിന്റെ പരിപാലകർ അവകാശപ്പെടുന്നു. തിരച്ചിലിന്റെ ഫലത്തിൽ 'കൂടുതൽ ആശ്രയിക്കുന്ന ഉത്ഭവങ്ങളിൽ' നിന്നുമുളളതിനേക്കാൾ 'മികച്ച സ്രോതസ്സിൽ നിന്നുമുള്ള വിവരങ്ങൾ' നൽകുവാൻ ഡക് ഡക് ഗോ പരിശ്രമിക്കുന്നു. യാൻഡെക്സ്, യാഹൂ, ബിൻഗ്, യംലി തുടങ്ങിയ സെർച്ച് എൻജിനുകളുമായുള്ള പങ്കാളിത്ത വിവരശേഖരണത്തിലൂടെയും വിക്കിപീ‍ഡിയ പോലുള്ള സാമൂഹ്യസ്രോതസ്സുകൾ മുഖ്യമായുള്ള വെബ്സൈറ്റുകളിൽ നിന്നും ശേഖരിക്കുന്ന വിവരങ്ങളിലൂടെയുമാണ് ഇവർ ഇത് സാദ്ധ്യമാക്കുന്നത്.", - "deviantart":"ഉപയോക്താക്കൾ നിർമ്മിക്കുന്ന വിവിധ തരത്തിലുള്ള കലാരൂപങ്ങൾ പ്രദർശിപ്പിക്കുന്ന ഒരു ഓൺലൈൻ സമൂഹമാണ് ഡേവിയന്റ്ആർട്ട്. ആംഗലേയം:deviantArt. സ്കോട്ട് ജാർക്കോഫ്, മാത്യൂ സ്റ്റീഫെൻസ്, ആംഗളോ സോറ്റീറ തുടങ്ങിയവർ ചേർന്ന് 2000 ആഗസ്റ്റ് 7നാണ് ഡേവിയൻആർട്ട് ആരംഭിച്ചത്. ഡേവിയൻആർട്ട് ഇൻകോർപ്പറേറ്റഡിന്റെ ആസ്ഥാനം അമേരിക്കയിലെ കാലിഫോർണിയ സംസ്ഥാനത്തെ ലോസ് ആഞ്ചലസിലെ ഹോളിവുഡ് ഭാഗത്തായാണ് സ്ഥിതി ചെയ്യുന്നത്.", - "ddg definitions":[ - "currency:ml", - "ref" - ], - "wikidata":"മനുഷ്യർക്കും യന്ത്രങ്ങൾക്കും ഒരേപോലെ തിരുത്താവുന്ന‌‌ ഒരു സ്വതന്ത്ര വിജ്ഞാനകേന്ദ്രമാണ് വിക്കിഡാറ്റ. വിക്കിമീഡിയ കോമൺസ് പ്രമാണങ്ങൾ ശേഖരിക്കുന്നത് പോലെ ഇത് വിവരങ്ങളെ ക്രോഡീകരിക്കുന്നു. ഒപ്പം വിന്യസിതമായ വിവരങ്ങളുടെ ലഭ്യതയേയും നിയന്ത്രണത്തേയും കേന്ദ്രീകരിക്കുന്നു. ഇതിൽ ഇന്റർവിക്കി അവലംബങ്ങളും സ്ഥിതിവിവരക്കണക്കുകളും ഉൾപ്പെടും. വിക്കിഡാറ്റയിൽ വിക്കിമീഡിയ പദ്ധതികൾ പ്രവർത്തിക്കുന്ന എല്ലാ ഭാഷകളിലേയും വിവരങ്ങൾ ഉൾപ്പെടുന്നു.", - "duckduckgo":[ - "currency:ml", - "ref" - ], - "duckduckgo images":[ - "currency:ml", - "ref" - ], - "duckduckgo videos":[ - "currency:ml", - "ref" - ], - "duckduckgo news":[ - "currency:ml", - "ref" - ], - "duckduckgo weather":[ - "currency:ml", - "ref" - ], - "flickr":"ചിത്രങ്ങളും,വീഡിയോകളും അപ്‌ലോഡ് ചെയ്യുന്നതിനും,വെബ്ബ് സർവ്വീസുകൾക്കും,ഓൺലൈൻ കമ്മ്യൂണിറ്റിയുമായും ഉപയോഗിക്കുന്ന ഒരു ഒരു അമേരിക്കൻവെബ്ബ്‌സൈറ്റ് പ്ലാറ്റ്ഫോം ആണ്‌ ഫ്ലിക്കർ. ഉപയോക്താക്കൾ സാധാരണ എടുക്കുന്ന ചിത്രങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നതിനോടൊപ്പം ,ബ്ലോഗർമാർ ഒരു ചിത്രസഞ്ചയികയായും ഇതിനെ ഉപയോഗിക്കുന്നു. 2004 ൽ ലുഡികോർപ്പ് ഇത് സൃഷ്ടിച്ചു.അമേച്വർ, പ്രൊഫഷണൽ ഫോട്ടോഗ്രാഫർമാർ ഉയർന്ന റെസല്യൂഷൻ ഫോട്ടോകൾ ഹോസ്റ്റുചെയ്യുന്നതിലൂടെ ഇത് ജനപ്രിയമാണ്.നിരവധി തവണ ഉടമസ്ഥാവകാശം മാറിമാറി വന്നിരുന്നു. 2018 ഏപ്രിൽ 20 മുതൽ സ്മഗ് മഗിന്റെ ഉടമസ്ഥതയിലാണ്.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"ഗിറ്റ് ഉപയോഗിച്ചുള്ള പതിപ്പു നിയന്ത്രണത്തിനുള്ള ഒരു വികേന്ദ്രീകൃത ഫ്രണ്ട് എൻഡ് ഫ്രയിംഫർക്കാണു ഗിറ്റ്‌ലാബ്. ഗിറ്റ്‌ഹബിനു ഒരു ബദലായി ഉപയോഗിക്കാവുന്ന ഗിറ്റ്‌ലാബ് ഒരു സ്വതന്ത്ര സോഫ്റ്റ്‌വെയറാണു്. മിഷിഗൺ സർവ്വകലാശാലയും ഗ്നോം ഫൌണ്ടേഷനും ബ്ലാൿബറിയുമടക്കം പതിനായിരത്തിലധികം സംഘടനകൾ ഗിറ്റ്‌ലാബ് ഉപയോഗിക്കുന്നുണ്ടു്. ഏറ്റവും പ്രശസ്തമായ 50 റെപ്പോസിറ്ററികളിൽ ഒന്നാണിതു്. ഗിറ്റ്‌ലാബ് സ്വന്തമായി ഇൻസ്റ്റാൾ ചെയ്യാൻ സാധിക്കാത്തവർക്ക് ഗിറ്റ്‌ലാബ്.കോം എന്ന സൈറ്റിന്റെ സേവനമുപയോഗിക്കാം.", - "github":"ഗിറ്റ് ഉപയോഗിച്ചുള്ള വെബ് അധിഷ്ഠിതമായ പതിപ്പ് നിയന്ത്രണത്തിനുള്ള വെബ്സൈറ്റും ഇന്റർനെറ്റ് ഹോസ്റ്റിംഗ് സേവനവുമാണ് ഗിറ്റ്ഹബ്. ജിറ്റിന്റെ ഡിസ്ട്രിബ്യൂട്ടഡ് പതിപ്പ് നിയന്ത്രണവും സോഴ്‌സ് കോഡ് മാനേജുമെന്റും (എസ്‌സി‌എം) പ്രവർത്തനവും അതിന്റേതായ സവിശേഷതകളും ഇത് വാഗ്ദാനം ചെയ്യുന്നു. ഇത് ആക്സസ് നിയന്ത്രണവും ബഗ് ട്രാക്കിംഗ്, സവിശേഷത അഭ്യർത്ഥനകൾ, ടാസ്‌ക് മാനേജുമെന്റ്, കൺടിന്യൂവസ് ഇന്റഗ്രേഷൻ, ഓരോ പ്രോജക്റ്റിനുമുള്ള വിക്കികൾ എന്നിവ പോലുള്ള നിരവധി സഹകരണ സവിശേഷതകളും നൽകുന്നു. കാലിഫോർണിയ ആസ്ഥാനമായി പ്രവർത്തിക്കുന്ന ഇത് 2018 മുതൽ മൈക്രോസോഫ്റ്റിന്റെ അനുബന്ധ സ്ഥാപനമാണ്.", - "google":"ഗൂഗിൾ സെർച്ച് അഥവാ ഗൂഗിൾ വെബ് സെർച്ച് ,ഗൂഗിൾ വികസിപ്പിച്ച ഒരു വെബ് സെർച്ച് എഞ്ചിൻ ആണ്.വേൾഡ് വൈഡ് വെബ്ൽ ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കപ്പെടുന്ന സെർച്ച് എഞ്ചിൻനാണ് ഇത്‌. ഗൂഗിളിന്റെ തിരയൽ ഫലങ്ങളുടെ താളുകളിലെ തിരയലിന്റെ ക്രമം, \"പേജ്റാങ്ക്\" എന്ന മുൻഗണനാടിസ്ഥാനത്തിലുള്ളതാണ്. ഇച്ഛാനുസൃതമാക്കിയ തിരയലിനായി ഗൂഗിൾ തിരയൽ നിരവധി ഓപ്ഷനുകൾ നൽകുന്നു, ചില തിരയൽ പെരുമാറ്റം ഉൾപ്പെടുത്തുന്നതിനും ഒഴിവാക്കുന്നതിനും വ്യക്തമാക്കുന്നതിനും ആവശ്യപ്പെടുന്നതിനും ചിഹ്നങ്ങൾ ഉപയോഗിക്കുന്നു, കൂടാതെ ഫ്ലൈറ്റ് സ്റ്റാറ്റസ്, പാക്കേജ് ട്രാക്കിംഗ്, കാലാവസ്ഥാ പ്രവചനങ്ങൾ, കറൻസി, യൂണിറ്റ്, സമയ പരിവർത്തനങ്ങൾ, വാക്കുകൾ നിർവചിക്കുക എന്നിവ പോലുള്ള പ്രത്യേക സംവേദനാത്മക അനുഭവങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു.", - "google images":[ - "Google ചിത്രങ്ങൾ. വെബ്ബിലെ ഏറ്റവും വിശാലമായ ചിത്ര തിരയൽ.", - "https://images.google.com" - ], - "google news":"വാർത്തകൾക്കു വേണ്ടി മാത്രമായി നീക്കി വച്ചിരിക്കുന്ന ഒരു ഗൂഗിൾ വെബ്സൈറ്റ് ആണ് ഗൂഗിൾ ന്യൂസ്‌. ഈ പദ്ധതിക്ക് തുടക്കമിട്ടത് ഗൂഗിളിലെ പ്രധാന ഗവേഷണ ശാസ്ത്രജ്ഞൻ ആയ കൃഷ്ണ ഭരത്‌ ആണ്. കഴിഞ്ഞ മുപ്പതു ദിവസങ്ങളിലായി പ്രധാന വെബ്സൈറ്റുകളിൽ പ്രസിദ്ധീകരിച്ച വാർത്തകൾ ഇതിൽ പ്രദർശിപ്പിക്കുന്നു. വിവിധ ഭാഷകളിൽ വിവിധ വിഭാഗങ്ങളിലായി നൂറു കണക്കിന് വാർത്തകൾ ഓരോ നിമിഷവും ഉൾക്കൊള്ളിച്ചുകൊണ്ടിരിക്കുന്നു.", - "google videos":"വീഡിയോ പങ്കു വെക്കുക എന്ന ലക്ഷ്യത്തോടെ ഗൂഗിൾ പുറത്തിറക്കിയ പദ്ധതിയാണ് ഗൂഗിൾ വീഡിയോസ്. യുട്യൂബിന്റെ ഏറ്റെടുക്കലോടെ പിന്നീട് ഗൂഗിൾ വീഡിയോസ് ഒരു വീഡിയോ തിരച്ചിൽ സൈറ്റായി മാറി. ഒടുവിൽ 2012 ആഗസ്റ്റ് 20ന് ഗൂഗിൾ വീഡിയോ പൂട്ടി.", - "google scholar":"വിവിധ ഫോർമാറ്റുകളിൽ ഉള്ള ശാസ്ത്ര സാഹിത്യത്തിന്റെ മുഴുവൻ വാചകമോ മെറ്റാഡാറ്റ മാത്രമായോ സൂചികയിലാക്കുന്ന, സ്വതന്ത്രമായി ആക്‌സസ് ചെയ്യാവുന്ന ഒരു വെബ് സെർച്ച് എഞ്ചിനാണ് ഗൂഗിൾ സ്കോളർ. 2004 നവംബറിൽ ബീറ്റയിൽ പുറത്തിറക്കിയ, ഗൂഗിൾ സ്‌കോളർ ഇൻഡക്‌സിൽ പിയർ റിവ്യൂ ചെയ്ത ഓൺലൈൻ അക്കാദമിക് ജേണലുകളും പുസ്തകങ്ങളും കോൺഫറൻസ് പേപ്പറുകളും തീസിസുകളും പ്രബന്ധങ്ങളും പ്രീപ്രിന്റുകൾ, സംഗ്രഹങ്ങൾ, സാങ്കേതിക റിപ്പോർട്ടുകൾ, കോടതി അഭിപ്രായങ്ങളും പേറ്റന്റുകളും ഉൾപ്പെടെയുള്ള മറ്റ് ശാസ്ത്ര സാഹിത്യങ്ങളും ഉൾപ്പെടുന്നു.", - "google play apps":"ഗൂഗിൾ ആൻഡ്രോയ്ഡ് മാർക്കറ്റ് ആയിരുന്ന ഗൂഗിൾ പ്ലേ ഒരു ഡിജിറ്റൽ വിതരണ സേവനമാണ്. ആൻഡ്രോയിഡ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഔദ്യോഗിക ആപ്ലിക്കേഷൻ സ്റ്റോറായി ഇത് പ്രവർത്തിക്കുന്നു, ആൻഡ്രോയിഡ് സോഫ്റ്റ്‌വേർ ഡെവലപ്മെന്റ് കിറ്റ് (SDK) ഉപയോഗിച്ച് വികസിപ്പിച്ചതും ഗൂഗിൾ വഴി പ്രസിദ്ധീകരിച്ചതുമായ ആപ്ലിക്കേഷനുകൾ ബ്രൗസ് ചെയ്യാനും ഡൗൺലോഡ് ചെയ്യാനും ഉപയോക്താക്കളെ അനുവദിക്കുന്നു. സംഗീതം, പുസ്‌തകങ്ങൾ, സിനിമകൾ, ടെലിവിഷൻ പ്രോഗ്രാമുകൾ എന്നിവ വാഗ്ദാനം ചെയ്യുന്ന ഡിജിറ്റൽ മീഡിയ സ്റ്റോറായും ഗൂഗിൾ പ്ലേ പ്രവർത്തിക്കുന്നു. 2015 മാർച്ച് 11 ന് ഒരു പ്രത്യേക ഓൺലൈൻ ഹാർഡ്‌വെയർ റീട്ടെയിലർ ഗൂഗിൾ സ്റ്റോർ അവതരിപ്പിക്കുന്നതുവരെ ഇത് മുമ്പ് ഗൂഗിൾ ഹാർഡ്‌വെയർ ഉപകരണങ്ങൾ വാങ്ങാൻ വാഗ്ദാനം ചെയ്തിരുന്നു, കൂടാതെ 2018 മെയ് 15 ന് ഗൂഗിൾ ന്യൂസിന്റെ നവീകരണത്തിന് മുമ്പ് വാർത്താ പ്രസിദ്ധീകരണങ്ങളും മാസികകളും വാഗ്ദാനം ചെയ്തു.", - "google play movies":[ - "google play apps:ml", - "ref" - ], - "hoogle":"ഹാസ്കൽ ഉച്ചാരണം: ഒരു സ്റ്റാൻഡേർസ്ഡ്, പൊതു-ഡവലപ്മെൻറ് കമ്പൈൽ, നോൺ സ്ട്രിറ്റ് സെമൻറിക്കുകളും ശക്തമായ സ്റ്റാറ്റിക് ടൈപ്പിംഗും മാത്രമുള്ളതാണ്. തന്ത്രജ്ഞനായ ഹാസ്കൽ കറിയാണ് ഇതിന് ഈ പേര് നൽകിയത്. ഹാസ്കലിൻറെ ഏറ്റവും പുതിയ സ്റ്റാൻഡേർഡ് ഹാസ്കൽ 2010. 2016 മേയ് മാസം മുതൽ, ഹാസ്കൽ 2020 എന്ന പുതിയ പതിപ്പിന് വേണ്ടി ഒരു ഗ്രൂപ്പ് പ്രവർത്തിക്കുന്നു.", - "imdb":"ചലച്ചിത്രങ്ങൾ,നടീ നടന്മാർ, ടെലിവിഷൻ പരിപാടികൾ, നിർമ്മാണ കമ്പനികൾ, വീഡിയോ ഗേമുകൾ, ദൃശ്യവിനോദ മാദ്ധ്യമങ്ങളിൽ വരുന്ന കഥാപാത്രങ്ങൾ എന്നിവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ ശേഖരിച്ചു വെച്ചിട്ടുള്ള ഒരു ഓൺലൈൻ ഡാറ്റാബേസ് ആണ്‌ ഇന്റർനെറ്റ് മൂവി ഡാറ്റാബേസ് അഥവാ ഐ.എം.ഡി.ബി. 1990 ഒക്ടോബർ 17-നാണ്‌ ഈ വെബ്‌സൈറ്റ് ആരംഭിച്ചത്. 1998-ൽ ഇതിനെ ആമസോൺ.കോം വിലക്കു വാങ്ങി.", - "library of congress":"അമേരിക്കൻ കോൺഗ്രസിന്റെ ഒരു ഗവേഷക ലൈബ്രറിയും അമേരിക്കൻ ഐക്യനാടുകളിലെ ഏറ്റവും പഴക്കംചെന്ന ഒരു ഫെഡറൽ സാംസ്കാരിക സ്ഥാപനവുമാണ്‌ ലൈബ്രറി ഓഫ് കോൺഗ്രസ്സ്. വാഷിംങ്ടൻ ഡി.സി യിലെ മൂന്ന് വ്യത്യസ്ത സമുച്ചയങ്ങളിലായി നിലകൊള്ളുന്ന ഈ ഗ്രന്ഥാലയം ലോകത്തിലെ ഏറ്റവും വലിയ പുസ്തക ശേഖരമുള്ള ലൈബ്രറിയാണ്‌. ലൈബ്രറി ഓഫ് കോൺഗ്രസിന്റെ തലവൻ ലൈബ്രേറിയൻ ഓഫ് കോൺഗ്രസ്സ് എന്ന് അറിയപ്പെടുന്നു. ഇപ്പോഴത്തെ തലവൻ ജയിംസ് എച്. ബില്ലിങ്ടൻ. 1800 ലാണ്‌ ലൈബ്രറി ഓഫ് കോൺഗ്രസ്സ് സ്ഥാപിതമാവുന്നത്. 1812 ലെ യുദ്ധത്തിൽ ഒട്ടുവളരെ യഥാർഥ ശേഖരങ്ങൾ നശിപ്പിക്കപ്പെട്ടതിനെ തുടർന്നു 1815 ൽ അമേരിക്കൻ രാഷ്ട്രപതിയായിരുന്ന തോമസ് ജഫേഴ്സൺ അദ്ദേഹത്തിന്റെ സ്വന്തം ഗ്രന്ഥാലയത്തിലെ 6487 പുസ്തകങ്ങൾ ലൈബ്രറി ഓഫ് കോൺഗ്രസ്സിന്‌ വിൽക്കുകയുണ്ടായി. അമേരിക്കൻ ആഭ്യന്തരയുദ്ധത്തിനു ശേഷം പതുക്കെ വളർച്ചയിലേക്ക് കുതിച്ചു ഈ സ്ഥാപനം. 20-ാം നൂറ്റാണ്ടിലെ ലൈബ്രറി കോൺഗ്രസിന്റെ ദ്രുധഗതിയിലുള്ള വികാസം അതിനെ 'അവസാന ആശ്രയമായ ലൈബ്രറി' എന്ന പദവിയിലേക്ക് ഉയരാൻ ഇടയാക്കി. അമേരിക്കൻ കോൺഗ്രസ്സിലെ അംഗങ്ങളുടുടെ ഗവേഷണങ്ങൾക്ക് പിന്തുണ നൽകുക എന്നതാണ്‌ ലൈബ്രറി ഓഫ് കോൺഗ്രസിന്റെ പ്രഥമ ദൗത്യം. പൊതുജനങ്ങൾക്ക് തുറന്നിട്ടതാണെങ്കിലും നിയമസഭാംഗങ്ങൾ,സുപ്രീംകോടതി ന്യായാധിപന്മാർ, ഉന്നത തലങ്ങളിലുള്ള മറ്റു സർക്കാർ ഉദ്ധ്യോഗസ്ഥർ എന്നിവർക്കേ പുസ്തകങ്ങൾ പരിശോധിക്കാനുള്ള അനുമതിയുള്ളൂ. അമേരിക്കൻ ഐക്യനാടുകളിലെ പകർപ്പവകാശ കാര്യാലയം മുഖേന, ലൈബ്രറി ഓഫ് കോൺഗ്രസ്സിന്‌ അമേരിക്കയിലെ റജിസ്റ്റർ ചെയ്യപ്പെട്ട പുസ്തകങ്ങൾ,ഭൂപടങ്ങൾ, കൈവെള്ള ലിഖിതങ്ങൾ,പ്രിന്റുകൾ,സംഗീത ശകലങ്ങൾ എന്നിവയുടെ ഓരോ പകർപ്പ് വീതം ലഭിക്കുന്നു. ദേശീയ ഗ്രന്ഥാലയം എന്ന നിലക്ക് അമേരിക്കൻ ഫോൽക്‌ലൈഫ് സെന്റർ, അമേരിക്കൻ മെമ്മറി, സെന്റർ ഫോർ ബുക് ആന്റ് പൊയറ്റ് ലൂറേറ്റ് എന്നീ പദ്ധതികളിലൂടെ അമേരിക്കയിലെ സാഹിത്യത്തേയും സാക്ഷരതയേയും ലൈബ്രറി ഓഫ് കോൺഗ്രസ്സ് പ്രോത്സാഹിപ്പിച്ചു വരുന്നു.", - "mastodon users":"മാസ്റ്റോൺ എന്നത് എല്ലാവർക്കും ചേരാവുന്ന, ഫെഡറേറ്റഡ് ആയ ഫെ‍ഡിവേർസിന്റെ ഭാഗമായ സോഷ്യൽ നെറ്റ്വർക്കാണ്, ഫെഡിവേർസ് എന്നത് ഇതുപോലെ സ്വതന്ത്രമായി പ്രവർത്തിക്കുന്ന സെർവറുകളുടെ പരസ്പര ബന്ധിതവും വികേന്ദ്രീകൃതവുമായ ശൃംഖലയാണ്.", - "mastodon hashtags":[ - "mastodon users:ml", - "ref" - ], - "npm":"എൻപിഎം(npm)(യഥാർത്ഥത്തിൽ നോഡ് പാക്കേജ് മാനേജറിന്റെ ഹ്രസ്വരുപം) ജാവാസ്ക്രിപ്റ്റ് പ്രോഗ്രാമിംഗ് ഭാഷയുടെ ഒരു പാക്കേജ് മാനേജരാണ്. നോഡ്.ജെഎസിന്റെ റൺടൈം എൻവയോൺമെന്റിന്റെ സ്ഥിരസ്ഥിതി പാക്കേജ് മാനേജരാണ് ഇത്. എൻ‌പി‌എം എന്നും വിളിക്കുന്ന ഒരു കമാൻഡ് ലൈൻ ക്ലയന്റും എൻ‌പി‌എം രജിസ്ട്രി എന്നറിയപ്പെടുന്ന പൊതു, പണമടച്ചുള്ള സ്വകാര്യ പാക്കേജുകളുടെ ഓൺലൈൻ ഡാറ്റാബേസും ഇതിൽ അടങ്ങിയിരിക്കുന്നു. ക്ലയന്റ് വഴി രജിസ്ട്രി ആക്സസ് ചെയ്യുന്നു, കൂടാതെ ലഭ്യമായ പാക്കേജുകൾ എൻപിഎം വെബ്സൈറ്റ് വഴി ബ്രൗസ് ചെയ്യാനും തിരയാനും കഴിയും. പാക്കേജ് മാനേജറും രജിസ്ട്രിയും നിയന്ത്രിക്കുന്നത് എൻപിഎം, ഐഎൻസി(Inc).", - "openstreetmap":"വിക്കിപീഡിയ പോലെ പ്രതിഫലേച്ഛ ആഗ്രഹിക്കാത്ത ഒരുപറ്റം ആളുകൾ ചേർന്ന് നിർമ്മിക്കുന്ന ഓൺലൈൻ ഭൂപടസം‌വിധാനമാണ് ഓപ്പൺസ്ട്രീറ്റ്മാപ്(http://www.openstreetmap.org). ആർക്കും കൂട്ടിചേർക്കലുകൾ നടത്തി സൗജന്യമായി പുനരുപയോഗിക്കാനും, അതുവഴി പ്രാദേശിക ഭൂപടവും അതിനെക്കുറിച്ചുള്ള ചെറുവിവരങ്ങൾ ലഭ്യമാക്കാനും ഓപ്പൺസ്ട്രീറ്റ്മാപ്പ് വഴിയൊരുക്കുന്നു..", - "pinterest":"ഒരു സോഷ്യൽ മീഡിയ വെബ്, മൊബൈൽ ആപ്ലിക്കേഷൻ കമ്പനിയാണ് പിന്ററെസ്റ്റ്. ചിത്രങ്ങൾ ഉപയോഗിച്ച് വേൾഡ് വൈഡ് വെബിലെ വിവരങ്ങൾ കണ്ടെത്താനും സംരക്ഷിക്കാനും രൂപകൽപ്പന ചെയ്ത ഒരു സോഫ്റ്റ്‌വേർ സിസ്റ്റം ആയി ഇത് പ്രവർത്തിക്കുന്നു. GIF- കളും, കൂടാതെ ചെറിയ തോതിൽ വീഡിയോകൾ കാണുവാനും ഇതുവഴി കഴിയും. ബെൻ സിൽ‌ബെർമാൻ, പോൾ സിയറ, ഇവാൻ ഷാർപ്പ് എന്നിവരാണ് പിന്ററെസ്റ്റ് സ്ഥാപിച്ചത്. 2019 ഓഗസ്റ്റ് വരെയുള്ള കണക്കുകൾ പ്രകാരം പിന്ററെസ്റ്റ് പ്രതിമാസം 300 ദശലക്ഷം സജീവ ഉപയോക്താക്കളിൽ എത്തി നിൽക്കുന്നു.", - "piratebay":"ബിറ്റ്ടോറൻറ് ഫയലുകൾ ഇൻഡക്സ് ചെയ്യപ്പെട്ട ഒരു സ്വീഡിഷ് വെബ്‌സൈറ്റാണ് ദി പൈറേറ്റ് ബേ.ഓർഗ്. അലക്സ ഇൻറർനെറ്റിൻറെ കണക്കുകൾ പ്രകാരം പ്രശസ്തിയിൽ ലോകത്ത് തൊണ്ണുറ്റൊന്നാമതും സ്വീഡനിൽ പത്തൊൻപതാം സ്ഥാനത്തുമാണ് പൈറേറ്റ് ബേ. പരസ്യങ്ങളാണ് പൈറേറ്റ് ബേയുടെ പ്രധാന വരുമാനമാർഗം. സ്വീഡിഷ് ആൻറി കോപ്പിറൈറ്റ് സംഘടനയായ പൈറേറ്റ്ബൈറൻ പൈറേറ്റ് ബേ സ്ഥാപിച്ചത്. 2004 ഒക്ടോബർ മുതൽ ഇത് പ്രത്യേക സ്ഥാപനമായി പ്രവർത്തിക്കാൻ തുടങ്ങി.", - "stackoverflow":"സ്റ്റാക്ക് എക്സ്ചേഞ്ച് എന്നത് വിവിധ മേഖലയിലുള്ള വിഷയങ്ങൾക്കായുള്ള ഒരുകൂട്ടം ചോദ്യോത്തര വെബ്സൈറ്റുകളുടെ ഒരു ശൃംഖലയാണ്. ഒരു വെബ്സൈറ്റ് ഒരു വിഷയമാണ് കൈകാര്യം ചെയ്യുന്നത്. ഉപയോക്താവിന് ചോദ്യങ്ങൾക്കും ഉത്തരങ്ങൾക്കും അനുസൃതമായി അവാർഡ് ലഭിക്കുന്ന പ്രക്രിയയും ഇതിലുണ്ട്. കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ്ങുമായി ബന്ധപ്പെട്ട സ്റ്റാക്ക് ഓവർഫ്ലോയാണ് പ്രധാനപ്പെട്ട സൈറ്റ്. മറ്റ് വെബ്സൈറ്റുകളും ഇതേ രീതിയിലാണ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. സ്വയംനിയന്ത്രണ സംവിധാനമാണ് ഇതിനുള്ളത്. 2017 ഏപ്രിൽ വരെയുള്ള കണക്ക് പ്രകാരം, സ്റ്റാക്ക് ഓവർഫ്ലോ, സൂപ്പർ യൂസർ, ആസ്ക് ഉബുണ്ടു എന്നീ വെബ്സൈറ്റുകളാണ് ഏറ്റവും ജനകീയം. ഉപയോക്താക്കളുടെ സംഭാവനകൾക്കെല്ലാം ക്രീയേറ്റീവ് കോമൺസ് ലൈസൻസാണുള്ളത്.", - "askubuntu":[ - "stackoverflow:ml", - "ref" - ], - "superuser":[ - "stackoverflow:ml", - "ref" - ], - "youtube":"ഗൂഗിൾ ഉടമസ്ഥതയിലുള്ള ഇന്റർനെറ്റ് വീഡിയോ ഷെയറിംഗ് വെബ്‌സൈറ്റാണ്‌ യൂട്യൂബ്. ഈ സംവിധാനത്തിലൂടെ ലോകത്തെവിടെനിന്നും ഉപഭോക്താക്കൾക്ക് വീഡിയോ ഖണ്ഡങ്ങൾ മറ്റുള്ളവരുമായി പങ്കുവയ്ക്കുവാൻ കഴിയുന്നു. 2005 ഫെബ്രുവരിയിൽ പേയ്പാൽ എന്ന ഇ-വ്യാപാര കമ്പനിയിൽ ജോലി ചെയ്തിരുന്ന സ്റ്റീവ് ചെൻ, ചാഡ് ഹർലി, ജാവേദ് കരീം എന്നിവരാണ് യൂട്യൂബ് സ്ഥാപിച്ചത്. കാലിഫോർണിയയിലെ സാൻ ബ്രൂണൊ അസ്ഥാനമാക്കി പ്രവർത്തനമാരംഭിച്ച ഈ വെബ് സേവന കമ്പനി അഡോബ് ഫ്ലാഷ് സാങ്കേതിക വിദ്യ അടിസ്ഥാനമാക്കിയാണു പ്രവർത്തിക്കുന്നത്. വീഡിയോ ഖണ്ഡങ്ങൾ, സംഗീതം, ടെലിവിഷൻ പരിപാടികൾ തുടങ്ങിയവയെല്ലാം ഈ വെബ് സൈറ്റ് വഴി പങ്കുവയ്ക്കപ്പെടുന്നുണ്ട്. യുട്യൂബിൽ അംഗമായാൽ ആർക്കും വീഡിയോകൾ അപ്‌ലോഡ് ചെയ്യാവുന്നതാണ്. ശ്ലീലമായ വീഡിയോകൾ മാത്രമാണ് അനുവദിക്കുക. പുതിയ ഉപഭോക്താക്കൾക്ക് 10 മിനുട്ടിൽ കൂടുതൽ വീഡിയോ കയറ്റാൻ അനുമതി നൽകുന്നില്ല. ഓർക്കുട്ട് പോലെ തന്നെ എല്ലാ രാജ്യങ്ങളിലും യുട്യൂബിനു അനുമതി നൽകിയിട്ടില്ല. ഉപഭോക്താക്കൾക്ക് യൂട്യൂബിൽ നിന്ന് വീഡിയോ ഖണ്ഡങ്ങൾ ഡൗൺലോഡ് ചെയ്യാനും സാധിക്കും.വെബ്‌സൈറ്റ്, മൊബൈൽ അപ്ലിക്കേഷനുകൾ എന്നിവ ഉൾപ്പെടെ വീഡിയോകൾ കാണാനും മറ്റ് വെബ്‌സൈറ്റുകൾ കൂട്ടിച്ചേർക്കാനായി യൂട്യൂബ് നിരവധി മാർഗങ്ങൾ നൽകുന്നു. ലഭ്യമായ ഉള്ളടക്കത്തിൽ സംഗീത വീഡിയോകൾ, വീഡിയോ ക്ലിപ്പുകൾ, ഹ്രസ്വ, ഡോക്യുമെന്ററി ഫിലിമുകൾ, ഓഡിയോ റെക്കോർഡിംഗുകൾ, മൂവി ട്രെയിലറുകൾ, തത്സമയ സ്ട്രീമുകൾ, വീഡിയോ ബ്ലോഗുകൾ എന്നിവ ഉൾപ്പെടുന്നു. മിക്ക ഉള്ളടക്കവും സൃഷ്ടിക്കുന്നത് വ്യക്തികളാണ്, പക്ഷേ മീഡിയ കോർപ്പറേഷനുകളും വീഡിയോകൾ പ്രസിദ്ധീകരിക്കുന്നു. കാണുന്നതിനും അപ്‌ലോഡുചെയ്യുന്നതിനും പുറമെ, രജിസ്റ്റർ ചെയ്ത ഉപയോക്താക്കൾക്ക് വീഡിയോകളിൽ അഭിപ്രായമിടാനും റേറ്റുചെയ്യാനും പ്ലേലിസ്റ്റുകൾ സൃഷ്ടിക്കാനും മറ്റ് ഉപയോക്താക്കൾക്ക് സബ്സ്ക്രൈബ് ചെയ്യാനും കഴിയും. 2005 ൽ സ്ഥാപിതമായ യുട്യൂബ് തൊട്ടടുത്ത വർഷം ഗൂഗിൾ 1.65 ബില്യൺ യുഎസ് ഡോളറിന് സ്വന്തമാക്കി. 2020 ൽ 19.8 ബില്യൺ ഡോളർ സമ്പാദിച്ച യൂട്യൂബ് ഗൂഗിളിന്റെ ഏറ്റവും ലാഭകരമായ അനുബന്ധ സ്ഥാപനങ്ങളിലൊന്നായി ഇത് മാറി. ഗൂഗിളിന്റെ ആഡ്സെൻസ്(AdSense) പ്രോഗ്രാമിൽ നിന്ന് യൂട്യൂബും തിരഞ്ഞെടുത്ത സ്രഷ്‌ടാക്കളും പരസ്യ വരുമാനം നേടുന്നു. ഭൂരിഭാഗം വീഡിയോകളും കാണാൻ സൗജന്യമാണ്, പക്ഷേ ചിലതിന് സംഗീതമോ പ്രീമിയം സബ്സ്ക്രിപ്ഷനോ ആവശ്യമാണ്.", - "wikibooks":"വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ വിക്കി അധിഷ്ഠിത സം‌രംഭങ്ങളിൽ ഒന്നാണ് വിക്കിബുക്സ്. മുമ്പ് വിക്കിമീഡിയ ഫ്രീ ടെക്സ്റ്റ്ബുക് പ്രൊജക്ട്, വിക്കിമീഡിയ ടെക്സ്റ്റ്ബുക്സ് എന്നീ പേരുകളിലും അറിയപ്പെട്ടിരുന്നു. ആർക്കും തിരുത്താവുന്ന സ്വതന്ത്ര വിവരങ്ങളടങ്ങുന്ന പാഠപുസ്തകങ്ങൾ സൃഷ്ടിക്കുക എന്നതാണ് ഈ പദ്ധതിയുടെ ലക്ഷ്യം. 2003 ജൂലൈ 10-നാണ് ഈ സംരംഭം ആരംഭിച്ചത്. സ്വതന്ത്രമായി ചിന്തിക്കുക, സ്വതന്ത്രമായി പഠിക്കുക എന്നതാണ് ഇതിന്റെ ആദർശവാക്യം. വിക്കിജൂനിയർ, വിക്കിവേഴ്സിറ്റി എന്നിങ്ങനെ രണ്ട് ഉപ സം‌രംഭങ്ങളും ഇതിനുണ്ട്. പാചപുസ്തകവും വിക്കിബുക്സിന്റെ ഒരു പ്രധാനഭാഗമാണ്. 2021 ഒക്ടോബർ വരെ വിക്കിബുക്സിന് 76 ഭാഷകളിൽ സജീവമായ പതിപ്പുക്കൾ ഉണ്ട്.", - "wikinews":"Wikinews അഥവാ വിക്കിവാർത്തകൾ വിക്കിമീഡിയാ ഫൗണ്ടേഷന്റെ ഒരു ഓൺലൈൻ പദ്ധതിയാണ്. സ്വതന്ത്രമായ വാർത്താകേന്ദ്രം എന്ന് വിശേഷിപ്പിക്കാവുന്ന ഈ പദ്ധതി മലയാളത്തിലിതുവരെ ലഭ്യമായി തുടങ്ങിയിട്ടില്ല.", - "wikiquote":"വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ വിക്കി അധിഷ്ഠിത സം‌രംഭങ്ങളിലൊന്നാണ് വിക്കിക്വോട്ട്. പ്രശസ്ത വ്യക്തികളുടെ പുസ്തകങ്ങൾ, ചലച്ചിത്രങ്ങൾ എന്നിവയിൽ നിന്നുമുള്ള ഉദ്ധരണികളും പഴഞ്ചൊല്ലുകളും ശേഖരിക്കലാണ് ഈ പദ്ധതിയുടെ ലക്ഷ്യം. ഡാനിയൽ അൽസ്റ്റണിന്റെ ആശയം അടിസ്ഥാനമാക്കി ബ്രയൻ വിബ്ബർ ആണ് ഈ സം‌രംഭം ആരംഭിച്ചത്. മറ്റ് വിക്കിമീഡിയ സം‌രഭങ്ങളേപ്പോലെ മീഡിയവിക്കി സോഫ്റ്റ്വെയറാണ് ഇതിലും ഉപയോഗിക്കുന്നത്.മറ്റനേകം ഓൺലൈൻ ഉദ്ധരണ ശേഖരങ്ങൾ നിലവിലുണ്ടെങ്കിലും സന്ദർശകർക്ക് താളുകൾ തിരുത്താൻ അനുവാദം നൽകുന്നു എന്ന പ്രത്യേകത വിക്കിക്വോട്ടിനെ വ്യത്യസ്തമാക്കുന്നു. ആദ്യമായി ഇംഗ്ലീഷ് ഭാഷയിൽ മാത്രമാണ് പദ്ധതി ആരംഭിച്ചത്. എന്നാൽ, 2004 ജൂലൈ മുതൽ മറ്റ് ഭാഷകളിലേക്കും വ്യാപിക്കുവാൻ തുടങ്ങി.", - "wikisource":"സ്വതന്ത്ര വിവരങ്ങളടങ്ങിയ വിക്കി ഗ്രന്ഥശാല സൃഷ്ടിക്കുന്നതിനുള്ള ഒരു വിക്കിമീഡിയ സം‌രംഭമാണ് വിക്കിഗ്രന്ഥശാല (ആംഗലേയം:Wikisource). പകർപ്പവകാശപരിധിയിൽ വരാത്ത പ്രാചീന കൃതികൾ, പകർപ്പവകാശ കാലാവധി കഴിഞ്ഞ കൃതികൾ, പകർപ്പവകാശത്തിന്റെ അവകാശി പബ്ലിക്ക് ഡൊമൈനിൽ ആക്കിയ കൃതികൾ എന്നിങ്ങനെ മൂന്നു തരം കൃതികൾ ആണു വിക്കിഗ്രന്ഥശാലയിൽ ലഭ്യമാകുക. വിക്കിസോഴ്സിലെ എല്ലാ കൃതികളും ഒന്നുകിൽ പകർപ്പാവകാശരഹിതമോ അല്ലെങ്കിൽ ഗ്നൂ സ്വതന്ത്ര പ്രസിദ്ധീകരണാനുമതിക്ക് കീഴിൽ പ്രസിദ്ധീകരിച്ചതോ ആയിരിക്കും. മറ്റ് ഭാഷകളിൽ നിന്നുള്ള തർജ്ജമകളും വിക്കിസോഴ്സിൽ ശേഖരിക്കപ്പെടുന്നു. 2008 ഡിസംബർ വരെയുള്ള കണക്കുകളനുസരിച്ച് 56 ഭാഷകളിൽ വിക്കിഗ്രന്ഥശാല പ്രവർത്തിക്കുന്നു.", - "wikispecies":"വിക്കിഇനങ്ങൾ എന്നാൽ വിക്കിമീഡിയാ ഫൗണ്ടേഷന്റെ ഒരു ഓൺലൈൻ പദ്ധതിയാണ്. ജൈവവർഗങ്ങളെ കുറിച്ചും അവയുടെ സമഗ്രമായ വിവിരശേഖരത്തിനുമുള്ള സ്വതന്ത്ര വിജ്ഞാനകോശമാണ് വിക്കിഇനങ്ങൾ. മലയാളത്തിൽ ഇതു വരെ ലഭ്യമായിത്തുടങ്ങിയിട്ടില്ല.", - "wiktionary":"സ്വതന്ത്ര ഉള്ളടക്കമുള്ള ഒരു നിഘണ്ടു നിർമ്മിക്കുന്നതിനുള്ള ഒരു വെബ് അധിഷ്ഠിത ബഹുഭാഷാ പദ്ധതിയാണ് വിക്ഷണറി. 150-ലധികം ഭാഷകളിൽ ഇത് ലഭ്യമാണ്. സാധാരണ നിഘണ്ടുക്കളിൽ നിന്ന് വ്യത്യസ്തമായി വോളണ്ടിയർമാരുടെ ഒരു സമൂഹമാണ് വിക്ഷണറിക്ക് പിന്നിൽ പ്രവർത്തിക്കുന്നത്. വിക്കി സോഫ്റ്റ്‌വെയർ ഉപയോഗിക്കുന്ന ഇതിലെ ലേഖനങ്ങൾ വെബ്സൈറ്റിലേക്ക് പ്രവേശിക്കുവാൻ സൗകര്യമുള്ള മിക്കവാറും എല്ലാവർക്കും തിരുത്താവുന്നതാണ്.", - "wikiversity":"വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ വിക്കി അധിഷ്ഠിത സം‌രംഭങ്ങളിൽ ഒന്നാണ് വിക്കിവേഴ്സിറ്റി.ഇവിടെ സ്വതന്ത്ര പഠന സാമഗ്രികൾ പ്രവർത്തനങ്ങളും നടത്തുന്ന ഒരു പദ്ധതിയാണിത്. വിക്കിപീഡിയ പോലുള്ള വിജ്ഞാനകോശങ്ങളിൽ നിന്നു് വിഭിന്നമായി ഇവിടെ ഒരേ വിഷയത്തിൽ അധിഷ്ഠിതമായ നിരവധി പഠനസാമഗ്രികൾ വിവിധ പതിപ്പുകളിലായി ലഭിക്കുന്നു.", - "wikivoyage":"ഒരു വിക്കിമീഡിയ സംരംഭമാണ് വിക്കിപര്യടനം(en:wikivoyage). സ്വതന്ത്ര യാത്രാപുസ്തകമാണിത്. ലോകത്തെമ്പാടുമുള്ള പ്രധാന ടൂറിസ്റ്റ് കേന്ദ്രങ്ങളിൽ എത്തിപ്പെടുന്ന ഒരാൾക്ക് ആവശ്യമായ എല്ലാ സംഗതികളും ഉൾക്കൊള്ളിച്ചുകൊണ്ട് വെബ് അടിസ്ഥാനത്തിൽ സേവനം ലഭ്യമാക്കുക എന്നതാണ് ഇതിന്റെ ലക്ഷ്യം.", - "wikicommons.images":"സ്വതന്ത്ര ചിത്രങ്ങളും മറ്റു പ്രമാണങ്ങളും ശേഖരിച്ചു വെക്കുന്ന ഒരു ഓൺലൈൻ ശേഖരണിയാണ് വിക്കിമീഡിയ കോമൺസ് അല്ലെങ്കിൽ കോമൺസ്. വിക്കിമീഡിയ ഫൗണ്ടേഷനു കീഴിൽ പ്രവർത്തിക്കുന്ന ഈ ശേഖരിണിയിൽ ശേഖരിക്കപ്പെടുന്ന പ്രമാണങ്ങൾ വിക്കിപീഡിയ, വിക്കിഗ്രന്ഥശാല, വിക്കി പാഠശാല, വിക്കിചൊല്ലുകൾ തുടങ്ങി എല്ലാ ഭാഷകളിലുമുള്ള എല്ലാ വിക്കിമീഡിയ പദ്ധതികളിലും ഉപയോഗിക്കുവാനും, വേണമെങ്കിൽ ഡൗൺലോഡ് ചെയ്ത് ഉപയോഗിക്കുവാനും സാധിക്കും. നിലവിൽ വിക്കിമീഡിയ കോമൺസിൽ നിരവധി ദശലക്ഷം പ്രമാണങ്ങളുണ്ട്.", - "wttr.in":[ - "കാലാവസ്ഥ റിപ്പോർട്ട്: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"ക്രോമിയം വെബ് ബ്രൗസറിനെ അടിസ്ഥാനമാക്കി ബ്രേവ് സോഫ്റ്റ്‍വെയർ.inc വികസിപ്പിച്ചെടുത്ത സൗജന്യവും ഓപ്പൺ സോഴ്‌സുമായ വെബ് ബ്രൗസറുമാണ് ബ്രേവ്. സ്വകാര്യത കേന്ദ്രീകരിച്ച ബ്രൗസറാണിത്. ഇത് സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങളിൽ ഓൺലൈൻ പരസ്യങ്ങളെയും വെബ്‌സൈറ്റ് ട്രാക്കറുകളെയും യാന്ത്രികമായി തടയുന്നതിലൂടെ മറ്റ് ബ്രൗസറുകളിൽ നിന്ന് വ്യത്യസ്ഥമാണ്. ബേസിക് അറ്റൻഷൻ ടോക്കണുകൾ (BAT) ക്രിപ്‌റ്റോകറൻസി രൂപത്തിൽ ഉപയോക്താക്കളുടെ ശ്രദ്ധയ്ക്ക് പണം നൽകുന്ന ഓപ്‌ഷണൽ പരസ്യങ്ങൾ ഓണാക്കാനുള്ള കഴിവ് ഇത് ഉപയോക്താക്കൾക്ക് നൽകുന്നു. ഉപയോക്താക്കൾക്ക് വെബ്‌സൈറ്റുകളിലേക്കും ഉള്ളടക്ക സ്രഷ്‌ടാക്കൾക്കും അവർ സമ്പാദിച്ച ക്രിപ്‌റ്റോകറൻസി നിലനിർത്താനുള്ള കഴിവിനൊപ്പം സംഭാവനകൾ അയയ്‌ക്കാൻ കഴിയും. ബ്രേവ് സോഫ്റ്റ്‍വെയറിന്റെ ആസ്ഥാനം സാൻ ഫ്രാൻസിസ്കോയിലാണ്.", - "brave.images":[ - "brave:ml", - "ref" - ], - "brave.videos":[ - "brave:ml", - "ref" - ], - "brave.news":[ - "brave:ml", - "ref" - ] - }, - "ms":{ - "apple app store":"App Store adalah platform pengedaran digital, dibangunkan dan diselenggarakan oleh Apple Inc., untuk aplikasi mudah alih pada sistem operasi iOS. Kedai ini membolehkan pengguna melayari dan memuat turun aplikasi yang dibangunkan dengan kit pembangunan perisian iOS Apple. Apl boleh dimuat turun di telefon pintar iPhone, komputer pegang tangan iPod Touch, atau komputer tablet iPad, dan sesetengahnya boleh dipindahkan ke Apple Watchsmartwatch atau generasi ke-4 atau lebih baru Apple TV sebagai sambungan aplikasi iPhone.", - "artic":"Institut Seni Chicago ialah sebuah muzium seni halus luas yang terletak di Grant Park, Chicago, Illinois. Institut seni ini menempatkan salah sebuah koleksi seni Impresionis dan Pasca-Impresionis yang terpenting di dunia. Antara pegangan-pegangannya yang beraneka termasuk karya Pelukis Agung, seni Amerika Syarikat, seni perhiasan Eropah dan Amerika, seni Asia dan seni moden dan kontemporari tersohor. Ia terletak di 111 South Michigan Avenue di Chicago Landmark Historic Michigan Boulevard District. Muzium ini bergabung dengan Sekolah Institut Seni Chicago. Pada keluasan sejuta kaki persegi, institut ini adalah muzium seni kedua terbesar di Amerika Syarikat, mengekori Muzium Seni Metropolitan di New York.", - "arxiv":"arXiv adalah sebuah arkib pracetak elektronik bagi penerbitan ilmiah di dalam bidang matematik, fizik, ilmu falak, sains komputer, biologi kuantitatif, statistik dan kewangan kuantitatif yang boleh dicapai secara dalam talian. Kebanyakkan penerbitan berkaitan matematik dan fizik diswaarkib di arXiv. Pada 3 Oktober 2008, arXiv.org telah mencapai setengah juta rencana. dan pada tahun 2012, kadar penyerahan telah berkembang kepada lebih daripada 7000 sebulan.", - "bandcamp":[ - "pengedar muzik dalam talian yang bertapak di Amerika Syarikat", - "wikidata" - ], - "wikipedia":"Wikipedia ialah sebuah ensiklopedia yang boleh diubah suai dan dibina secara kerjasama dengan menggunakan perisian wiki. Wikipedia dikendalikan oleh Yayasan Wikimedia yang tidak mengambil apa-apa keuntungan daripada khidmat yang diberikan. Sebagai tambahan kepada matlamat ensiklopedia iaitu untuk memberikan pengetahuan, Wikipedia juga memasukkan maklumat yang lebih kerap dikaitkan dengan almanak dan jurnal, dan juga perkara semasa. Kandungan Wikipedia dibina sepenuhnya oleh para penggunanya. Tiada seorang pun yang dapat memiliki maklumat yang terdapat dalamnya dan tiada rencana yang akan ditamatkan. Satu lesen yang dikenali GFDL telah dicipta untuk memastikan setiap orang mengakui bahawa setiap orang mempunyai hak untuk memperbaiki setiap rencana.", - "bilibili":"Bilibili, juga digelar B Site di China, merupakan sebuah platform video dalam talian berpangkalan di Shanghai, China. Sejak tahun 2010-an Bilibili mula meluaskan lingkungan penggunanya melebihi sekadar lingkungan animasi, komik, dan permainan video (ACG) yang bersifat terpencil, sehingga kini ia merupakan salah satu platform penstriman yang terulung dengan menyiarkan video atas permintaan seperti filem dokumentari, rancangan aneka ragam, serta pelbagai program asli lain.", - "bing":"Bing merupakan sebuah enjin carian daripada syarikat Microsoft. Ia dilancarkan pada 1 Jun 2009.", - "bing images":[ - "bing:ms", - "ref" - ], - "bing news":[ - "Berita daripada sumber berita dunia, nasional dan tempatan, disusun untuk memberi anda liputan berita mendalam bagi sukan, hiburan, perniagaan, politik, cuaca dan lagi.", - "https://www.bing.com/news" - ], - "currency":"DuckDuckGo merupakan sebuah enjin carian yang memberikan penekanan dalam perlindungan privasi pencari dan mengelakkan \"gelembung penapis\" bagi hasil carian yang diperibadikan. DuckDuckGo berbeza dengan enjin carian yang lain kerana ia tidak memprofilkan para penggunanya dan dengan sengajanya memaparkan hasil carian yang sama untuk istilah carian yang diberikan. Ia juga menekankan aspek dalam mendapatkan maklumat daripada sumber terbaik berbanding sumber kebanyakan, menjana hasil carian daripada tapak-tapak yang menjadi tumpuan seperti Wikipedia dan daripada perkongsian dengan enjin carian lain seperti Bing, Yandex, Yahoo dan WolframAlpha.", - "deezer":"Deezer ialah perkhidmatan penstriman muzik dalam talian. Ia membenarkan pengguna mendengar kandungan muzik dari syarikat rakaman termasuk Sony Music, Universal Music Group, dan Warner Music Group dari pelbagai peranti samada di dalam talian atau di luar talian. Dicipta di Paris, Perancis, Deezer kini mempunyai 53 juta runut berlesen di dalam perpustakaannya, dengan lebih 30,000 saluran radio, 14 juta pengguna aktif bulanan, dan 6 juta pelanggan berbayar setakat 3 April 2018. Perkhidmatan ini boleh didapati di Web, Android, iOS, Windows Mobile, BlackBerry OS dan Windows, MacOS.", - "deviantart":"DeviantART ialah sebuah komuniti maya untuk penggiat-penggiat seni. Matlamat deviantART ialah untuk menyediakan tempat bagi seorang seniman atau seniwati untuk mempamerkan serta membincangkan karya-karya mereka.", - "ddg definitions":[ - "currency:ms", - "ref" - ], - "wikidata":"Wikidata ialah sebuah projek yang menyediakan basis data yang disunting bersama untuk menyokong projek Wikimedia seperti Wikipedia. Wikidata dilancarkan pada tanggal 29 Oktober 2012. Projek ini telah dimulai oleh Wikimedia bahasa melayu dan bertujuan menyediakan sumber umum dari jenis data tertentu, misalnya hari lahir.", - "duckduckgo":[ - "currency:ms", - "ref" - ], - "duckduckgo images":[ - "currency:ms", - "ref" - ], - "duckduckgo videos":[ - "currency:ms", - "ref" - ], - "duckduckgo news":[ - "currency:ms", - "ref" - ], - "duckduckgo weather":[ - "currency:ms", - "ref" - ], - "etymonline":"Online Etymology Dictionary ialah suatu kamus dalam talian yang menceritakan asal-usul perkataan dalam bahasa Inggeris. Singkatannya, OED, berbetulan dengan akronim Oxford English Dictionary yang lebih popular.", - "flickr":"Flickr adalah tapak web pengehosan gambar dan video, sut perkhidmatan web, dan komuniti dalam talian. Selain menjadi tapak yang popular untuk berkongsi foto peribadi, perkhidmatan ini banyak digunakan oleh penulis blog untuk mengehos gambar yang mereka masukkan ke dalam blog dan media sosial. Setakat Oktober 2009, ia mendakwa memiliki lebih dari 4 bilion gambar.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub, Inc. ialah penyedia pengehosan Internet untuk pembangunan perisian dan kawalan versi yang menggunakan Git. Ia menawarkan fungsi kawalan versi diedarkan dan pengurusan kod sumber (SCM) Git, serta ciri-cirinya sendiri. Ia menyediakan kawalan akses dan beberapa ciri kolaborasi seperti pengesanan pepijat, ciri-ciri permintaan, pengurusan tugas, integrasi berterusan dan wiki untuk setiap projek. Beribu pejabat di California, ia telah menjadi anak syarikat Microsoft sejak 2018.", - "google":"Carian Google atau namanya Google Search merupakan laman sesawang enjin gelintar dimiliki syarikat Google,Wikipedia,Wikipedia Bahasa Inggeris,Wikipedia Bahasa Melayu ia merupakan laman carian paling kerap digunakan di Web. Google Search menerima berjuta-juta pertanyaan oleh para pengguna setiap hari melalui pebagai perkhidmatan yang disediakan. T. Enjin carian asalnya dibangunkan oleh Sergey Brin dan Larry Page pada tahun 1997 berdasarkan reka bentuk enjin carian yang lebih awal dengan tujuan utama mencari maklumat melalui laman web.", - "google images":"Google Images adalah perkhidmatan carian yang dimiliki oleh Google yang membolehkan pengguna mencari Web untuk kandungan imej. Pada tahun 2011, fungsi carian imej terbalik telah ditambah kepadanya.", - "google news":"Google News ialah pengagregat berita dan aplikasi yang dibangunkan oleh Google. Ia membentangkan aliran berterusan, menyesesuaikan artikel yang dianjurkan dari ribuan penerbit dan majalah. Berita Google boleh didapati di Android, iOS, dan di web.", - "google scholar":"Google Scholar ialah enjin carian web yang boleh diakses secara bebas yang mengindeks teks penuh atau metadata kesusasteraan ilmiah dalam pelbagai format dan disiplin penerbitan. Dikeluarkan pada beta pada November 2004, indeks Google Scholar termasuk kebanyakan jurnal dan buku akademik dalam talian yang dikaji semula, kertas persidangan, tesis dan disertasi, pracetak, abstrak, laporan teknikal dan kesusasteraan ilmiah lain, termasuk pendapat mahkamah dan paten. Walaupun Google tidak menerbitkan pangkalan data Google Scholar, para penyelidik sintometris menganggarkan ia mengandungi kira-kira 389 juta dokumen termasuk artikel, kutipan dan paten menjadikan enjin carian akademik terbesar di dunia pada Januari 2018. Sebelum ini saiznya dianggarkan sebanyak 160 juta dokumen pada Mei 2014. Anggaran statistik terdahulu yang diterbitkan dalam PLOS ONE menggunakan kaedah Mark dan menangkap semula dianggarkan kira-kira 80-90% liputan semua artikel yang diterbitkan dalam bahasa Inggeris dengan anggaran 100 juta. Anggaran ini juga menentukan berapa banyak dokumen yang tersedia secara bebas di web.", - "google play apps":"Google Play ialah satu platform pengedaran digital dikendalikan oleh Google. Ia berfungsi sebagai sebuah kedai aplikasi yang rasmi bagi sistem pengendalian Android, membenarkan pengguna untuk melayari dan memuat turun aplikasi dibangunkan dengan Android SDK dan diterbitkan melalui Google. Google Chrome Play juga berfungsi sebagai satu kedai media digital, menawarkan muzik, majalah, buku, wayang dan program televisyen. Pengguna boleh juga membeli peranti perkakasan melalui perkhidmatan ini, seperti Chromebook, peranti mudah alih berjenama Google Nexus, Chromecast dan aksesori yang khusus.", - "google play movies":[ - "google play apps:ms", - "ref" - ], - "hoogle":"Haskell ialah sebuah bahasa pengaturcaraan kefungsian yang tulen. Bahasa ini mendapat nama daripada Haskell Curry, seorang tokoh matematik yang banyak menyumbang dalam ilmu logik kombinator.", - "imdb":"Internet Movie Database ialah pangkalan data dalam talian, dimiliki oleh Amazon, mengenai maklumat berkaitan filem, rancangan televisyen, video rumah, permainan video, dan kandungan penstriman dalam talian – termasuk pelakon, kru penerbitan dan biografi peribadi, ringkasan plot, trivia, penarafan, dan ulasan kritikan dan peminat. Ciri-ciri peminat, papan mesej, dimansuhkan pada Februari 2017. Pada asalnya ialah laman web kendalian peminat, pangkalan data ini dimiliki dan dikendalikan oleh IMDb.com, Inc., anak syarikat Amazon.", - "imgur":[ - "tapak web pengehosan imej", - "wikidata" - ], - "library genesis":"Library Genesis atau LibGen merupakan enjin carian untuk artikel dan buku dalam pelbagai subjek, yang membenarkan akses percuma ke atas kandungan yang dikenakan bayaran atau yang tidak didigitalkan lagi. LibGen turut menyimpan kandungan PDF dari pangkalan data Elsevier, ScienceDirect.", - "z-library":"Z-Library ialah sebuah projek perpustakaan bayangan untuk akses perkongsian fail kepada artikel jurnal ilmiah, teks akademik dan buku kepentingan umum. Ia bermula sebagai salinan kepada laman web Library Genesis, yang menyimpan banyak akses kepada buku teks.", - "library of congress":"Perpustakaan Kongres Amerika Syarikat merupakan perpustakaan penyelidikan yang berkhidmat untuk Kongres Amerika Syarikat dan merupakan perpustakaan negara untuk Amerika Syarikat. Ia merupakan institusi budaya persekutuan tertua di Amerika Syarikat. Perpustakaan ini ditempatkan di tiga bangunan di Capitol Hill di Washington, D.C.; selain menguruskan Kampus Packard di Culpeper, Virginia, yang menempatkan Pusat Pemuliharan Pandang-Dengar Kebangsaan.", - "mastodon users":"Mastodon adalah perisian khidmat rangkaian sosial bersumber terbuka dan bebas yang swarumah. Ia memiliki ciri mikroblog mirip infrastruktur Twitter yang ditawarkan oleh sejumlah besar pelayan Mastodon yang dijalankan secara mandiri melalui titik-titik sambung dikelola dengan aturan tatalaku, kawalan edaran kandungan dan ketentuan penggunaan yang tersendiri.", - "mastodon hashtags":[ - "mastodon users:ms", - "ref" - ], - "openstreetmap":"OpenStreetMap (OSM) ialah projek usaha sama untuk menghasilkan peta dunia bebas boleh disunting.", - "pinterest":"Pinterest, Inc. ialah sebuah syarikat aplikasi web dan mudah alih yang mengendalikan sistem perisian yang direka untuk mencari maklumat di World Wide Web, terutamanya menggunakan imej dan, pada skala yang lebih kecil, GIF dan video. Laman web ini diasaskan oleh Ben Silbermann, Paul Sciarra dan Evan Sharp. Pinterest telah mencapai 250 juta pengguna aktif bulanan sehingga Oktober 2018.", - "reddit":"Reddit ialah berita sosial Amerika agregasi, kandungan web Rating tapak web perbincangan.Ahli berdaftar menyerahkan kandungan ke tapak seperti pautan, catatan teks, imej dan video, yang kemudiannya diundi naik atau turun oleh ahli lain. Siaran disusun mengikut subjek ke dalam papan ciptaan pengguna yang dipanggil \"komuniti\" atau \"subreddit\", yang merangkumi pelbagai topik seperti berita, politik, agama, sains, filem, permainan video, muzik, buku, sukan, kecergasan, memasak, haiwan peliharaan, dan perkongsian imej. Penyerahan dengan lebih banyak undian naik muncul di bahagian atas subreddit mereka dan, jika mereka menerima undian naik yang mencukupi, akhirnya pada halaman hadapan tapak. Walaupun terdapat peraturan ketat yang melarang gangguan, ia masih berlaku, dan pentadbir Reddit menyederhanakan komuniti dan menutup atau menyekat mereka sekali-sekala. Penyederhanaan juga dijalankan oleh penyederhana khusus komuniti, yang tidak dianggap sebagai pekerja Reddit.", - "soundcloud":"SoundCloud merupakan platform pengedaran audio dalam talian dan laman web perkongsian muzik yang berpangkalan di Berlin, Jerman yang membolehkan pengguna memuat naik, mempromosikan, dan berkongsi audio.", - "semantic scholar":"Semantic Scholar ialah sebuah enjin carian berasaskan kepintaran buatan yang dikhususkan bagi terbitan ilmiah yang dibangunkan oleh Allen Institute for AI, dan dilancarkan pada November 2015. Enjin ini menggunakan pemprosesan bahasa semula jadi untuk memberikan ringkasan berkenaan kandungan terbitan ilmiah.", - "yahoo news":"Yahoo! News ialah laman web berita yang berasal sebagai pengagregat berita berasaskan internet oleh Yahoo!. Artikel yang asalnya berasal dari perkhidmatan berita seperti Associated Press, Reuters, Fox News, Al Jazeera, ABC News, USA Today, CNN dan BBC News.", - "youtube":"YouTube ialah sebuah laman web video Amerika Syarikat yang beribupejabat di San Bruno, California. Perkhidmatan ini telah dicipta pada Februari 2005 oleh tiga bekas pekerja PayPal — Chad Hurley, Steve Chen dan Jawed Karim. Pada November 2006, ia telah dibeli oleh Google dengan harga AS$1.65 bilion. YouTube kini beroperasi sebagai salah satu anak syarikat Google.", - "dailymotion":"Dailymotion ialah teknologi platform teknologi perkongsian video. Ia terutamanya dimiliki oleh Vivendi.Rakan-rakan pelancaran Amerika Utara termasuk BBC News, VICE, Bloomberg, Hearst Digital Media, dan banyak lagi. Dailymotion terdapat di seluruh dunia, dalam 18 bahasa dan 35 setempat versi menampilkan tempatan halaman rumah dan tempatan kandungan. Ia mempunyai lebih dari 300 juta unik pengguna bulanan.", - "vimeo":"Vimeo ialah laman perkhidmatan perkongsian video yang membenarkan penggunanya untuk memuat naik, berkongsi, dan menonton video.", - "wikibooks":"Wikibuku, sebelumnya disebut Projek Buku Bebas Wikimedia dan Wikimedia-Buku, adalah projek yang sama dengan Wikipedia dan merupakan bahagian dari Yayasan Wikimedia yang dimulai pada 10 Julai 2003.", - "wikinews":"Wikinews merupakan sebuah wiki sumber berita kandungan bebas serta sebuah projek Wikimedia. Jimmy Wales telah membezakan Wikinews daripada Wikipedia dengan mengatakan bahawa \"dalam Wikinews, setiap cerita ditulis seperti sebuah cerita berita bertentangan dengan sebuah rencana ensiklopedia.\" Polisi pandangan yang berkecuali di Wikinews membezakannya daripada usaha-usaha kewartawanan rakyat yang lain seperti Indymedia dan OhmyNews.", - "wikiquote":"Wikiquote merupakan salah satu kumpulan projek berdasarkan wiki yang diusahakan oleh Yayasan Wikimedia, menggunakan perisian MediaWiki. Berdasarkan idea Daniel Alston dan dilaksanakan oleh Brion Vibber, tujuan projek ini adalah untuk menjadi rujukan petikan daripada orang-orang, buku-buku, dan peribahasa, serta memberikan maklumat lanjut tentang petikan-petikan ini. Walaupun terdapat pelbagai koleksi petikan atas talian, Wikiquote merupakan salah satu daripada segelintir kecil koleksi yang memberi peluang untuk pelawat menyumbang. Laman-laman di Wikiquote dipautkan dengan rencana-rencana Wikipedia mengenai orang-orang ternama yang berkenaan.", - "wikisource":"Wikisource - Perpustakaan bebas — merupakan sebuah projek Wikimedia untuk membina sebuah perpustakaan wiki teks sumber kandungan bebas.", - "wikispecies":"Wikispecies merupakan sebuah projek Yayasan Wikimedia yang bertujuan membuat portal isi bebas mengenai semua spesies hidupan. Wikispecies merangkumi haiwan, tumbuhan, bakteria dan semua makhluk hidup yang lain dan akan dikembangkan secara khusus dengan Wikipedia.", - "wiktionary":"Wiktionary ialah sebuah projek wiki kelolaan Yayasan Wikimedia untuk kandungan perkamusan bebas.", - "wikiversity":"Wikiversity merupakan sebuah projek beta Yayasan Wikimedia, menumpukan pada bahan dan aktiviti pembelajaran, terletak di www.wikiversity.org. Fasa beta Wikiversity dimulakan secara rasmi pada 15 Ogos 2006 dengan Wikiversity Bahasa Inggeris. Kini terdapat lima edisi bahasa untuk Wikiversity - Bahasa Inggeris, Bahasa Perancis, Bahasa Jerman, Bahasa Itali, dan Bahasa Sepanyol - serta projek Wikiversity baru dalam bahasa-bahasa lain dalam perkembangan di hab multilingual \"beta\".", - "wikivoyage":"Wikivoyage, bahasa Inggeris: /ˌwɪkiˈvɔɪ.ɨdʒ/) atau Wikipelancongan ialah laman panduan pelancongan untuk tujuan pelancongan dan topik pelancongan yang ditulis oleh penulis sukarelawan. Nama Wikivoyage ialah campuran dari perkataan \"Wiki\" dan \"Voyage \", perkataan bahasa Perancis untuk perjalanan, pelayaran, atau pelancongan.", - "wikicommons.images":"Wikimedia Commons merupakan gudang imej-imej, suara-suara, dan fail-fail multimedia yang lain yang merupakan fail kandungan bebas. Seperti Wikipedia, Wikimedia Commons juga sebuah projek Yayasan Wikimedia. Fail-fail yang dimuat naik ke Commons boleh digunakan seperti fail-fail tempatan dalam semua projek yang lain dalam pelayan Wikimedia dalam semua bahasa, termasuk Wikipedia, Wikibooks, Wikisource dan Wikinews, kerana semua kandungan adalah sama ada dalam domain awam atau dikeluarkan di bawah lesen-lesen bebas seperti Lesen Dokumentasi Bebas GNU (GFDL).", - "wolframalpha":"Wolfram Alpha ialah sebuah enjin jawapan yang dibangunkan Wolfram Research. Ia perkhidmatan dalam talian yang menjawab soalan fakta secara langsung dengan menggunakan pengkomputan jawapan daripada data berstruktur berbanding cara enjin gelintar yang memberi jawapan dalam bentuk senarai dokumen ataupun laman sesawang yang mungkin mengandungi jawapan yang dikehendaki.", - "naver":"Naver ialah platform dalam talian Korea Selatan yang dikendalikan oleh Naver Corporation. Ia dimulakan pada tahun 1999 sebagai portal web pertama di Korea yang membangun dan menggunakan enjin carian sendiri. Ia juga merupakan operator pertama di dunia untuk memperkenalkan ciri carian komprehensif yang mennyusun hasil carian dari pelbagai kategori dan membentangkannya dalam satu halaman. Sejak itu, Naver telah menambahkan banyak perkhidmatan baru dari ciri-ciri asas seperti e-mel dan berita sehingga ke platform Q&A dalam talian pertama yang dikenali sebagai Knowledge iN." - }, - "nb-NO":{ - "bing news":[ - "Nyheter fra internasjonale, nasjonale og lokale nyhetskilder, organisert slik at de gir deg dypdegående nyhetsdekning av sport, underholdning, forretningsliv, politikk, vær og mye mer.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Intelligente søk fra Bing gjør det enklere å finne det du søker etter raskt, og belønner deg.", - "https://www.bing.com/videos" - ], - "deezer":[ - "nettbasert strømmetjeneste for musikk", - "wikidata" - ], - "fdroid":[ - "repository for gratis programvare med åpen kildekode for Android-apper", - "wikidata" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google images":[ - "Google Foto. Det mest omfattende bildesøket på Internett.", - "https://images.google.com" - ], - "google news":[ - "google news:da", - "ref" - ], - "google scholar":[ - "Med Google Scholar kan du enkelt utføre omfattende søk etter akademisk litteratur. Søk blant en rekke fagområder og kilder: artikler, avhandlinger, bøker, utdrag og rettskjennelser.", - "https://scholar.google.com" - ], - "google play apps":[ - "Få tilgang til millioner av det nyeste innen Android-apper og -spill, musikk, filmer, TV-serier, bøker, blader og mye annet. Når som helst, hvor som helst og på alle enhetene dine.", - "https://play.google.com/" - ], - "google play movies":[ - "google play apps:nb-NO", - "ref" - ], - "pinterest":[ - "Oppdag oppskrifter, innredningstips, stilinspirasjon og andre ideer du kan prøve ut.", - "https://www.pinterest.com/" - ], - "youtube":[ - "Med YouTube kan du se populære videoer, kose deg med favorittmusikken din og laste opp ditt eget innhold – og dele det med familie, venner og resten av verden.", - "https://www.youtube.com/" - ], - "dictzone":[ - "DictZone Flere ordbøker", - "https://dictzone.com/" - ] - }, - "nl":{ - "9gag":[ - "9gag:nl-BE", - "ref" - ], - "apple app store":[ - "apple app store:nl-BE", - "ref" - ], - "artic":[ - "artic:nl-BE", - "ref" - ], - "arxiv":[ - "arxiv:nl-BE", - "ref" - ], - "bandcamp":[ - "bandcamp:nl-BE", - "ref" - ], - "wikipedia":[ - "wikipedia:nl-BE", - "ref" - ], - "bing":[ - "bing:nl-BE", - "ref" - ], - "bing images":[ - "bing:nl-BE", - "ref" - ], - "bing news":[ - "Je ontvangt diepgravend nieuws over sport, entertainment, business, politiek, weerberichten en nog veel meer van internationale, landelijke en lokale nieuwsbronnen.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Met de intelligente zoekmachine van Bing kunt u gemakkelijker snel vinden waar u naar op zoek bent en wordt u beloond.", - "https://www.bing.com/videos" - ], - "bitbucket":[ - "bitbucket:nl-BE", - "ref" - ], - "crossref":[ - "crossref:nl-BE", - "ref" - ], - "currency":[ - "currency:nl-BE", - "ref" - ], - "deezer":[ - "deezer:nl-BE", - "ref" - ], - "deviantart":[ - "deviantart:nl-BE", - "ref" - ], - "ddg definitions":[ - "currency:nl-BE", - "ref" - ], - "wikidata":[ - "wikidata:nl-BE", - "ref" - ], - "duckduckgo":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo images":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo videos":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo news":[ - "currency:nl-BE", - "ref" - ], - "duckduckgo weather":[ - "currency:nl-BE", - "ref" - ], - "apple maps":[ - "apple maps:nl-BE", - "ref" - ], - "emojipedia":[ - "emojipedia:nl-BE", - "ref" - ], - "tineye":[ - "tineye:nl-BE", - "ref" - ], - "etymonline":[ - "etymonline:nl-BE", - "ref" - ], - "fdroid":[ - "fdroid:nl-BE", - "ref" - ], - "flickr":[ - "flickr:nl-BE", - "ref" - ], - "free software directory":[ - "free software directory:nl-BE", - "ref" - ], - "genius":[ - "genius:nl-BE", - "ref" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":[ - "gitlab:nl-BE", - "ref" - ], - "github":[ - "github:nl-BE", - "ref" - ], - "google":[ - "google:nl-BE", - "ref" - ], - "google images":[ - "google images:nl-BE", - "ref" - ], - "google news":[ - "google news:nl-BE", - "ref" - ], - "google videos":[ - "google videos:nl-BE", - "ref" - ], - "google scholar":[ - "google scholar:nl-BE", - "ref" - ], - "google play apps":[ - "google play apps:nl-BE", - "ref" - ], - "google play movies":[ - "google play apps:nl-BE", - "ref" - ], - "hoogle":[ - "hoogle:nl-BE", - "ref" - ], - "imdb":[ - "imdb:nl-BE", - "ref" - ], - "kickass":[ - "kickass:nl-BE", - "ref" - ], - "library genesis":[ - "library genesis:nl-BE", - "ref" - ], - "library of congress":[ - "library of congress:nl-BE", - "ref" - ], - "mastodon users":[ - "mastodon users:nl-BE", - "ref" - ], - "mastodon hashtags":[ - "mastodon users:nl-BE", - "ref" - ], - "metacpan":[ - "metacpan:nl-BE", - "ref" - ], - "mixcloud":[ - "mixcloud:nl-BE", - "ref" - ], - "npm":[ - "npm:nl-BE", - "ref" - ], - "openairedatasets":[ - "openairedatasets:nl-BE", - "ref" - ], - "openairepublications":[ - "openairedatasets:nl-BE", - "ref" - ], - "openstreetmap":[ - "openstreetmap:nl-BE", - "ref" - ], - "pinterest":[ - "pinterest:nl-BE", - "ref" - ], - "piratebay":[ - "piratebay:nl-BE", - "ref" - ], - "qwant":[ - "Qwant is een zoekmachine die uw privacy respecteert en neutraliteit en onpartijdigheid garandeert.", - "https://www.qwant.com/" - ], - "qwant news":[ - "qwant:nl", - "ref" - ], - "qwant images":[ - "qwant:nl", - "ref" - ], - "qwant videos":[ - "qwant:nl", - "ref" - ], - "reddit":[ - "reddit:nl-BE", - "ref" - ], - "soundcloud":[ - "soundcloud:nl-BE", - "ref" - ], - "stackoverflow":[ - "stackoverflow:nl-BE", - "ref" - ], - "askubuntu":[ - "stackoverflow:nl-BE", - "ref" - ], - "superuser":[ - "stackoverflow:nl-BE", - "ref" - ], - "startpage":[ - "startpage:nl-BE", - "ref" - ], - "tagesschau":[ - "tagesschau:nl-BE", - "ref" - ], - "youtube":[ - "youtube:nl-BE", - "ref" - ], - "dailymotion":[ - "dailymotion:nl-BE", - "ref" - ], - "vimeo":[ - "vimeo:nl-BE", - "ref" - ], - "wikibooks":[ - "wikibooks:nl-BE", - "ref" - ], - "wikinews":[ - "wikinews:nl-BE", - "ref" - ], - "wikiquote":[ - "wikiquote:nl-BE", - "ref" - ], - "wikisource":[ - "wikisource:nl-BE", - "ref" - ], - "wikispecies":[ - "wikispecies:nl-BE", - "ref" - ], - "wiktionary":[ - "wiktionary:nl-BE", - "ref" - ], - "wikiversity":[ - "wikiversity:nl-BE", - "ref" - ], - "wikivoyage":[ - "wikivoyage:nl-BE", - "ref" - ], - "wikicommons.images":[ - "wikicommons.images:nl-BE", - "ref" - ], - "wolframalpha":[ - "wolframalpha:nl-BE", - "ref" - ], - "dictzone":[ - "Online woordenboeken: Engels, Spaans, Duits, Frans, Italiaans, Hongaars...", - "https://dictzone.com/" - ], - "seznam":[ - "seznam:nl-BE", - "ref" - ], - "rubygems":[ - "RubyGems.org | De gem host voor de community", - "https://rubygems.org/" - ], - "rumble":[ - "rumble:nl-BE", - "ref" - ], - "wttr.in":[ - "Weerbericht voor: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":[ - "brave:nl-BE", - "ref" - ], - "brave.images":[ - "brave:nl-BE", - "ref" - ], - "brave.videos":[ - "brave:nl-BE", - "ref" - ], - "brave.news":[ - "brave:nl-BE", - "ref" - ] - }, - "pa":{ - "arxiv":"arXiv ਜਿਸ ਨੂੰ ਆਰਕਾਇਵ ਉੱਚਾਰਿਆ ਕਰਦੇ ਹਨ ਹਿਸਾਬ, ਭੌਤਿਕੀ, ਰਸਾਇਣਕੀ, ਖਗੋਲਿਕੀ, ਸੰਗਣਿਕੀ, ਮਾਤਰਾਤਮਿਕ (ਕਵਾਂਟੀਟੇਟਿਵ​)ਜੀਵ ਵਿਗਿਆਨ, ਸੰਖਿਅਕੀ (ਸਟੈਟਿਸਟਿਕਸ​) ਅਤੇ ਮਾਤਰਾਤਮਿਕ ਵਿੱਤ (ਫਾਇਨੈਂਸ​) ਦੇ ਖੇਤਰਾਂ ਵਿੱਚ ਵਿਗਿਆਨਕ ਲੇਖਾਂ ਦਾ ਇੱਕ ਕੋਸ਼ ਹੈ ਜਿਸ ਨੂੰ ਇੰਟਰਨੇਟ ਉੱਤੇ ਖੋਜਿਆ ਅਤੇ ਪੜ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਸੰਨ 1991 ਵਿੱਚ ਇਸ ਦੀ ਸਥਾਪਨਾ ਹੋਈ ਅਤੇ ਇਹ ਤੇਜੀ ਨਾਲ ਵਧਣ ਲਗਾ। ਵਰਤਮਾਨ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਵਿਦਵਾਨ ਕਿਸੇ ਨਵੀਂ ਖੋਜ ਜਾਂ ਸੋਚ ਉੱਤੇ ਲੇਖ ਲਿਖਣ ਦੇ ਬਾਅਦ ਆਪ ਹੀ ਉਸਨੂੰ ਆਰਕਾਇਵ-ਕੋਸ਼ ਉੱਤੇ ਪਾ ਦਿੰਦੇ ਹਨ। ਅਕਤੂਬਰ 3,2008 ਤੱਕ ਇਸ ਵਿੱਚ 5 ਲੱਖ ਤੋਂ ਜਿਆਦਾ ਲੇਖ ਸਨ। 2012 ਤੱਕ ਇਸ ਵਿੱਚ ਹਰ ਮਹੀਨੇ 7,000 ਤੋਂ ਜਿਆਦਾ ਨਵੇਂ ਲੇਖ ਜੋੜੇ ਜਾ ਰਹੇ ਸਨ।", - "wikipedia":"ਵਿਕੀਪੀਡੀਆ ਇੱਕ ਬਹੁਭਾਸ਼ਾਈ ਆਨਲਾਈਨ ਵਿਸ਼ਵਕੋਸ਼ ਹੈ, ਜੋ ਇੱਕ ਖੁੱਲੇ ਸਹਿਯੋਗ ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ ਬਣਾਇਆ ਗਿਆ ਹੈ ਅਤੇ ਵਾਲੰਟੀਅਰ ਸੰਪਾਦਕਾਂ ਦੇ ਸਮੂਹ ਦੁਆਰਾ ਵਿਕੀ-ਅਧਾਰਿਤ ਸੋਧ ਪ੍ਰਣਾਲੀ ਰਾਹੀਂ ਸਾਂਭਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਵਰਲਡ ਵਾਈਡ ਵੈੱਬ 'ਤੇ ਸਭ ਤੋਂ ਵੱਡਾ ਅਤੇ ਸਭ ਤੋਂ ਮਸ਼ਹੂਰ, ਆਮ ਹਵਾਲਿਆਂ ਵਾਲਾ ਕੰਮ ਹੈ ਅਤੇ ਮਾਰਚ 2020 ਤੱਕ ਐਲੈਕਸਾ ਦੁਆਰਾ ਦਰਜਾ ਪ੍ਰਾਪਤ 20 ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਵੈਬਸਾਈਟਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਇਸ ਵਿੱਚ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਮੁਫਤ ਸਮੱਗਰੀ ਹੁੰਦੀ ਹੈ ਅਤੇ ਕੋਈ ਵਪਾਰਕ ਵਿਗਿਆਪਨ ਨਹੀਂ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਇਹ ਇੱਕ ਗੈਰ-ਮੁਨਾਫ਼ਾ ਅੰਤਰਰਾਸ਼ਟਰੀ ਸੰਸਥਾ ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਵਿਕੀਪੀਡੀਆ ਵਿੱਚ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਨਵੇਂ ਲੇਖ ਲਿਖ ਸਕਦਾ ਹੈ ਅਤੇ ਪਹਿਲਾਂ ਬਣੇ ਤਕਰੀਬਨ ਸਾਰੇ ਲੇਖਾਂ ਨੂੰ ਸੋਧ ਸਕਦਾ ਹੈ।", - "bing images":[ - "ਆਪਣੀ ਦਿਲਚਸਪੀਆਂ ਦੇ ਅਨੁਸਾਰ ਤਿਆਰ ਕੀਤੀ ਗਈ ਫੀਡ ਵੇਖੋ", - "https://www.bing.com/images" - ], - "bing videos":[ - "Bing ਦੀ ਹੁਸ਼ਿਆਰ ਖੋਜ ਉਸ ਚੀਜ਼ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਲੱਭਣਾ ਸੌਖਾ ਬਣਾਉਂਦੀ ਹੈ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਤਲਾਸ਼ ਰਹੇ ਹੋ ਅਤੇ ਤੁਹਾਨੂੰ ਇਨਾਮ ਦਿੰਦੀ ਹੈ।", - "https://www.bing.com/videos" - ], - "wikidata":"ਵਿਕੀਡਾਟਾ, ਵਿਕੀਮੀਡੀਆ ਫ਼ਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਸੰਚਾਲਿਤ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਵਿਕੀ ਪਰਿਯੋਜਨਾ ਹੈ। ਵਿਕੀਪੀਡੀਆ ਵਾਂਗ ਹੀ ਇਹ ਵੀ ਇੱਕ ਵਿਕੀਪਰਿਯੋਜਨਾ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਮੁਫ਼ਤ ਡਾਟਾਬੇਸ ਹੈ ਅਤੇ ਸਮੁੱਚੇ ਲੋਕਾਂ ਦੁਆਰਾ ਇਹ ਸੰਪਾਦਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਡਾਟਾ ਦਾ ਇੱਕ ਆਮ ਸਰੋਤ ਹੈ, ਜੋ ਕਿ ਬਾਕੀ ਵਿਕੀਮੀਡੀਆ ਪਰਿਯੋਜਨਾਵਾਂ ਅਤੇ ਪਬਲਿਕ ਡੋਮੇਨ ਲਸੰਸ ਦੁਆਰਾ ਬਾਕੀ ਵੈੱਬਸਾਈਟਾਂ ਦੁਆਰਾ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਵਰਗੀ ਹੀ ਇੱਕ ਪਰਿਯੋਜਨਾ ਹੈ, ਭਾਵ ਕਿ ਜਿਵੇਂ ਕਾਮਨਜ਼ ਵਿੱਚ ਅਪਲੋਡ ਕੀਤੀਆਂ ਗਈਆਂ ਤਸਵੀਰਾਂ ਬਾਕੀ ਸਾਰੇ ਵਿਕੀਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਉਵੇਂ ਹੀ ਵਿਕੀਡਾਟਾ ਵਿਚਲਾ ਡਾਟਾ ਵੀ ਬਾਕੀ ਵਿਕੀਪ੍ਰੋਜੈਕਟਾਂ ਦੁਆਰਾ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਵਿਕੀਡਾਟਾ ਲਈ ਵਿਕੀਬੇਸ ਨਾਂ ਦਾ ਸਾਫ਼ਟਵੇਅਰ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"ਗੂਗਲ ਸਰਚ, ਜਿਸ ਨੂੰ ਆਮ ਤੌਰ ਤੇ ਗੂਗਲ ਵੈਬ ਸਰਚ ਜਾਂ ਬਸ ਗੂਗਲ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਗੂਗਲ ਦੁਆਰਾ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਇੱਕ ਵੈਬ ਖੋਜ ਇੰਜਨ ਹੈ। ਇਹ ਵਰਲਡ ਵਾਈਡ ਵੈੱਬ ਤੇ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤਿਆ ਖੋਜ ਇੰਜਨ ਹੈ, ਹਰ ਰੋਜ਼ ਤਿੰਨ ਅਰਬ ਤੋਂ ਵੱਧ ਖੋਜਾਂ ਦਾ ਪ੍ਰਬੰਧ ਕਰਦਾ ਹੈ। ਫਰਵਰੀ 2016 ਤੱਕ, ਇਹ 64.0% ਮਾਰਕੀਟ ਸ਼ੇਅਰ ਨਾਲ ਅਮਰੀਕਾ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤਿਆ ਗਿਆ ਖੋਜ ਇੰਜਣ ਹੈ।", - "google images":[ - "Google Images. ਵੈੱਬ 'ਤੇ ਸਭ ਤੋਂ ਵਿਆਪਕ ਚਿੱਤਰ ਖੋਜ।", - "https://images.google.com" - ], - "google play apps":"ਗੂਗਲ ਪਲੇ ਇੱਕ ਡਿਜੀਟਲ ਵਿਤਰਣ ਸੇਵਾ ਹੈ ਜੋ ਗੂਗਲ ਦੁਆਰਾ ਚਲਾਇਆ ਅਤੇ ਵਿਕਸਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਐਂਡਰੋਇਡ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਲਈ ਅਧਿਕਾਰਕ ਐਪ ਸਟੋਰ ਦੇ ਤੌਰ ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਯੂਜ਼ਰਸ ਐਂਡਰਾਇਡ ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਮੈਂਟ ਕਿੱਟ (ਐਸ.ਡੀ.ਕੇ.) ਨਾਲ ਵਿਕਸਿਤ ਕੀਤੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਬ੍ਰਾਊਜ਼ ਅਤੇ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਗੂਗਲ ਰਾਹੀਂ ਪ੍ਰਕਾਸ਼ਿਤ ਹੋ ਸਕਦੇ ਹਨ। ਗੂਗਲ ਪਲੇ ਡਿਜ਼ੀਟਲ ਮੀਡੀਆ ਸਟੋਰ ਦੇ ਤੌਰ ਤੇ ਵੀ ਕੰਮ ਕਰਦਾ ਹੈ, ਸੰਗੀਤ, ਰਸਾਲੇ, ਕਿਤਾਬਾਂ, ਫਿਲਮਾਂ ਅਤੇ ਟੀਵੀ ਪ੍ਰੋਗਰਾਮਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ। ਇਸ ਨੇ ਪਹਿਲਾਂ 11 ਮਾਰਚ, 2015 ਨੂੰ ਇੱਕ ਵੱਖਰੀ ਔਨਲਾਈਨ ਹਾਰਡਵੇਅਰ ਰਿਟੇਲਰ, ਗੂਗਲ ਸਟੋਰ ਦੀ ਸ਼ੁਰੂਆਤ ਤਕ ਖਰੀਦਣ ਲਈ ਗੂਗਲ ਹਾਰਡਵੇਅਰ ਡਵਇਸ ਨੂੰ ਖਰੀਦਿਆ ਸੀ।", - "google play movies":[ - "google play apps:pa", - "ref" - ], - "hackernews":"ਹੈਕਰ ਨਿਊਜ਼ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਅਤੇ ਉਦਿਅਮਸ਼ੀਲਤਾ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਤ ਕਰਨ ਵਾਲੀ ਇਕ ਸਮਾਜਕ ਖਬਰ ਵੈਬਸਾਈਟ ਹੈ।", - "hoogle":"ਹੈਸਕਲ (ਅੰਗਰੇਜ਼ੀ: Haskell) ਇੱਕ ਪ੍ਰਮਾਣਿਕ੍ਰਿਤ, ਆਮ-ਮਕਸਦ ਫੰਕਸ਼ਨਲ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਹੈ। ਇਸ ਦਾ ਨਾਮ ਹੈਸਕਲ ਕਰੀ ਨਾਮ ਦੇ ਦਾਰਸ਼ਨਿਕ ਤੋਂ ਰਖਿਆ ਗਿਆ ਹੈ। ਮਈ 2016 ਤੋਂ ਇੱਕ ਗਰੁੱਪ ਅਗਲੀ ਵਰਜਨ, Haskell 2020,ਉੱਪਰ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ।", - "imdb":"ਆਈਐਮਡੀਬੀ ਇੱਕ ਆਨਲਾਈਨ ਡੈਟਾਬੇਸ ਹੈ ਜੋ ਅਦਾਕਾਰਾਂ, ਫ਼ਿਲਮਾਂ, ਟੈਲੀਵੀਜ਼ਨ ਪ੍ਰੋਗਰਾਮਾਂ ਅਤੇ ਵੀਡੀਓ ਗੇਮਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਇਕੱਠੀ ਕਰ ਕੇ ਪਾਠਕਾਂ ਦੇ ਸਾਹਮਣੇ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਜਿਸ ਵਿੱਚ ਜਿਸ ਵਿੱਚ ਕਾਸਟ, ਪ੍ਰੋਡਕਸ਼ਨ ਕਰੂ ਅਤੇ ਨਿੱਜੀ ਜੀਵਨੀਆਂ, ਪਲਾਟ ਸੰਖੇਪ, ਟ੍ਰੀਵੀਆ, ਫੈਨ ਅਤੇ ਆਲੋਚਨਾਤਮਕ ਸਮੀਖਿਆਵਾਂ ਅਤੇ ਰੇਟਿੰਗ ਸ਼ਾਮਲ ਹਨ। ਆਈ.ਐਮ.ਡੀਬੀ. ਦੀ ਵੈੱਬਸਾਈਟ ਅਕਤੂਬਰ 1990 ਵਿੱਚ ਸ਼ੁਰੂ ਹੋਈ ਸੀ ਅਤੇ 1998 ਤੋਂ ਐਮਾਜ਼ਾਨ ਕੰਪਨੀ ਅਧੀਨ ਹੈ।", - "kickass":"ਕਿੱਕਐਸ ਟੌਰੈਂਟ ਟੌਰੈਂਟ ਅਤੇ ਮੈਗਨੇਟ ਕੜੀਆਂ ਦਾ ਸੰਗ੍ਰਹਿ ਹੈ ਜੋ ਬਿਟ-ਟੌਰੈਂਟ ਸਿਧਾਂਤ ਉੱਤੇ ਕੰਮ ਕਰਦਾ ਹੈ।", - "library of congress":"ਕਾਂਗਰਸ ਦੀ ਲਾਇਬ੍ਰੇਰੀ ਇੱਕ ਖੋਜ ਲਾਇਬਰੇਰੀ ਹੈ ਜੋ ਆਧਿਕਾਰਿਕ ਤੌਰ 'ਤੇ ਯੂਨਾਈਟਿਡ ਸਟੇਟ ਕਾਂਗਰਸ ਦੀ ਸੇਵਾ ਕਰਦੀ ਹੈ ਅਤੇ ਯੂਨਾਈਟਿਡ ਸਟੇਟ ਦੀ ਅਸਲ ਰਾਸ਼ਟਰੀ ਲਾਇਬਰੇਰੀ ਹੈ। ਇਹ ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ ਵਿੱਚ ਸਭ ਤੋਂ ਪੁਰਾਣੀ ਫੈਡਰਲ ਸਭਿਆਚਾਰਕ ਸੰਸਥਾ ਹੈ ਲਾਇਬਰੇਰੀ ਨੂੰ ਵਾਸ਼ਿੰਗਟਨ, ਡੀ.ਸੀ. ਵਿੱਚ ਕੈਪੀਟਲ ਹਿੱਲ ਵਿੱਚ ਤਿੰਨ ਇਮਾਰਤਾਂ ਵਿੱਚ ਸਥਿਤ ਹੈ; ਇਹ ਵਰਜੀਨੀਆ ਦੇ ਕੌਲਪੀਪਰ, ਨੈਸ਼ਨਲ ਆਡਿਓ-ਵਿਜ਼ੁਅਲ ਕੰਜ਼ਰਵੇਸ਼ਨ ਸੈਂਟਰ ਦਾ ਵੀ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ।", - "pinterest":"ਪਿਨਟੇਰੇਸਟ ਇੱਕ ਅਮਰੀਕੀ ਚਿੱਤਰ ਸਾਂਝਾਕਰਨ ਅਤੇ ਸੋਸ਼ਲ ਮੀਡੀਆ ਸੇਵਾ ਹੈ ਜੋ ਚਿੱਤਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਅਤੇ ਛੋਟੇ ਪੈਮਾਨੇ 'ਤੇ ਇੰਟਰਨੈੱਟ 'ਤੇ ਜਾਣਕਾਰੀ ਨੂੰ ਬਚਾਉਣ ਅਤੇ ਖੋਜਣ, ਐਨੀਮੇਟਡ GIF ਅਤੇ ਵੀਡੀਓ, ਪਿੰਨਬੋਰਡਾਂ ਦੇ ਰੂਪ ਵਿੱਚ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ। ਸਾਈਟ ਬੇਨ ਸਿਲਬਰਮੈਨ, ਪਾਲ ਸਿਆਰਾ ਅਤੇ ਈਵਾਨ ਸ਼ਾਰਪ ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਸੀ, ਅਤੇ ਜੁਲਾਈ 2022 ਤੱਕ 433 ਮਿਲੀਅਨ ਗਲੋਬਲ ਮਾਸਿਕ ਸਰਗਰਮ ਉਪਭੋਗਤਾ ਸਨ। ਇਹ ਸੈਨ ਫਰਾਂਸਿਸਕੋ ਸਥਿਤ ਪਿਨਟੇਰੇਸਟ, ਇੰਕ. ਦੁਆਰਾ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।", - "reddit":"ਰੈਡਿਟ ਇੱਕ ਅਮਰੀਕੀ ਸੋਸ਼ਲ ਮੀਡੀਆ ਵੈੱਬਸਾਈਟ ਹੈ, ਜਿਸ ਨੂੰ ਲੋਕ ਖ਼ਾਸ ਤੌਰ 'ਤੇ ਵਿਚਾਰ-ਵਟਾਂਦਰਾ ਕਰਨ ਲਈ ਵਰਤਦੇ ਹਨ। ਜਿਹਨਾਂ ਲੋਕਾਂ ਨੇ ਸਾਈਟ ਉੱਤੇ ਰੈਜਿਸਟਰ ਕੀਤਾ ਹੈ, ਉਹ ਸਾਈਟ ਉੱਤੇ ਕੜੀਆਂ (ਲਿੰਕਸ), ਲਿਖਤ ਪੋਸਟਾਂ, ਤਸਵੀਰਾਂ ਅਤੇ ਵੀਡੀਓਜ਼ ਚਾੜ੍ਹ ਸਕਦੇ ਹਨ, ਅਤੇ ਉਸਨੂੰ ਬਾਕੀ ਮੈਂਬਰ ਅੱਪ ਜਾਂ ਡਾਊਨ ਵੋਟ ਕਰਦੇ ਹਨ । ਪੋਸਟਾਂ ਨੂੰ ਉਪਯੋਗੀਆਂ ਵੱਲੋਂ ਬਣਾਏ \"ਸਬਰੈਡਿਟਸ\" 'ਤੇ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਪੋਸਟਾਂ ਜਿਹਨਾਂ ਨੂੰ ਵੱਧ ਅੱਪ-ਵੋਟਾਂ ਮਿਲਦੀਆਂ ਹਨ ਉਹ ਸਬਰੈਡਿਟਸ ਦੇ ਉੱਤੇ ਵਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ ਅਤੇ, ਜੇਕਰ ਪੋਸਟ ਨੂੰ ਬਹੁਤੇਰੀਆਂ ਅੱਪ-ਵੋਟਾਂ ਮਿਲ਼ ਜਾਣ ਤਾਂ ਉਹ ਸਾਈਟ ਦੇ ਮੁੱਖ ਪੰਨੇ ਉੱਤੇ ਵਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ। ਰੈਡਿਟ ਪ੍ਰਬੰਧਕ ਸਬਰੈਡਿਟਸ ਨੂੰ ਕਾਬੂ ਕਰਦੇ ਹਨ।↑ \"Reddit on June23-05\". Retrieved August 28, 2014.", - "youtube":"ਯੂਟਿਊਬ ਪੇਪਾਲ (PayPal) ਦੇ ਤਿੰਨ ਸਾਬਕਾ ਮੁਲਜਮਾਂ ਦੁਆਰਾ ਬਣਾਈ ਇੱਕ ਵੀਡੀਓ ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਵੈੱਬਸਾਈਟ ਹੈ ਜਿਸ ’ਤੇ ਵਰਤੋਂਕਾਰ ਵੀਡੀਓ ਵੇਖ ਅਤੇ ਖ਼ੁਦ ਆਪਣੀ ਵੀਡੀਓ ਚੜ੍ਹਾ ਸਕਦੇ ਹਨ। ਨਵੰਬਰ 2006 ਵਿੱਚ ਗੂਗਲ ਨੇ ਇਸਨੂੰ 1.65 ਬਿਲੀਅਨ ਅਮਰੀਕੀ ਡਾਲਰਾਂ ਵਿੱਚ ਖਰੀਦ ਲਿਆ ਅਤੇ ਹੁਣ ਇਸਨੂੰ ਗੂਗਲ ਦੀ ਸਹਾਇਕ ਦੇ ਰੂਪ ਵਿੱਚ ਚਲਾਉਂਦੀ ਹੈ। ਆਨਲਾਈਨ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਦੁਨੀਆਂ ਭਰ 'ਚ ਯੂਟਿਊਬ ਦਾ ਇਸਤੇਮਾਲ ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਹੁੰਦਾ ਹੈ। ਯੂਟਿਊਬ 'ਤੇ ਜਿਨ੍ਹਾਂ ਵੀਡੀਓਜ਼ ਨੂੰ ਤੁਸੀਂ ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਵੇਖਦੇ ਹੋ ਉਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਆਫਲਾਈਨ ਸੇਵ ਕਰ ਲੈਂਦੇ ਹਨ ਜਿਸ ਨਾਲ ਅਸੀਂ ਇਸ ਨੂੰ ਦੁਆਰਾ ਵੀ ਵੇਖ ਸਕਦੇ ਹੋ। ਇੰਟਰਨੈੱਟ ਤੇ ਯੂ ਟਯੂਬ ਰਾਂਹੀ ਪਹਿਲੀ ਵੀਡੀਉ Me at the zoo ਚੜਾਉਣ ਦੀ ਸ਼ੁਰਆਤ 23 ਅਪਰੈਲ, 2005 ਨੂੰ ਹੋਈ।", - "wikibooks":"ਵਿਕੀਬੁਕਸ ਆਜ਼ਾਦ ਸੋਰਸ ਵਿੱਚ ਲਿਖੀਆਂ ਗਈਆਂ ਕਿਤਾਬਾਂ ਦੀ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਸੀ। ਇਹ ਪ੍ਰੋਜੈਕਟ ਬਹੁ-ਭਾਸ਼ਾਈ ਹੈ।ਇੱਥੇ ਓਹੀ ਪੁਸਤਕਾਂ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਜੋ ਬਿਨਾਂ ਕਿਸੇ ਕਾਪੀਰਾਈਟ ਦੇ ਅਜ਼ਾਦ ਸਮੱਗਰੀ ਵਜੋਂ ਜਾਰੀ ਕੀਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ।", - "wikinews":"ਵਿਕੀਖ਼ਬਰਾਂ ਜਾਂ ਵਿਕੀਨਿਊਜ਼ ਇੱਕ ਮੁਫਤ ਸਮੱਗਰੀ ਵਾਲੀ ਖਬਰ ਵਿਕੀ ਹੈ ਅਤੇ ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਦਾ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਹੈ ਜੋ ਸਹਿਯੋਗੀ ਪੱਤਰਕਾਰੀ ਰਾਹੀਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਵਿਕੀਪੀਡੀਆ ਦੇ ਸਹਿ-ਸੰਸਥਾਪਕ ਜਿੰਮੀ ਵੇਲਜ਼ ਨੇ ਵਿਕੀਪੀਡੀਆ ਤੋਂ ਵਿਕੀਨਿਊਜ਼ ਨੂੰ ਇਹ ਕਹਿ ਕੇ ਵੱਖਰਾ ਕੀਤਾ ਹੈ, \"ਵਿਕੀਨਿਊਜ਼ 'ਤੇ, ਹਰੇਕ ਕਹਾਣੀ ਨੂੰ ਇੱਕ ਐਨਸਾਈਕਲੋਪੀਡੀਆ ਲੇਖ ਦੇ ਉਲਟ ਇੱਕ ਖਬਰ ਕਹਾਣੀ ਵਜੋਂ ਲਿਖਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।\" ਵਿਕੀਨਿਊਜ਼ ਦੀ ਨਿਰਪੱਖ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਨੀਤੀ ਦਾ ਉਦੇਸ਼ ਇਸਨੂੰ ਹੋਰ ਨਾਗਰਿਕ ਪੱਤਰਕਾਰੀ ਦੇ ਯਤਨਾਂ ਜਿਵੇਂ ਕਿ ਇੰਡੀਮੀਡੀਆ ਅਤੇ ਓਹਮੀ ਨਿਊਜ਼ ਤੋਂ ਵੱਖਰਾ ਕਰਨਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਪ੍ਰੋਜੈਕਟਾਂ ਦੇ ਉਲਟ, ਵਿਕੀਨਿਊਜ਼ ਅਸਲ ਰਿਪੋਰਟਿੰਗ ਅਤੇ ਇੰਟਰਵਿਊਆਂ ਦੇ ਰੂਪ ਵਿੱਚ ਅਸਲ ਕੰਮ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।", - "wikisource":"ਵਿਕੀਸਰੋਤ ਆਜ਼ਾਦ ਲਿਖਤਾਂ ਦੀ ਇੱਕ ਆਨਲਾਈਨ ਡਿਜੀਟਲ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਅਤੇ ਇਹ ਵਿਕੀ ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਸੀ। ਇਹ ਪ੍ਰਾਜੈਕਟ ਬਾਕੀ ਵਿਕੀ ਪ੍ਰਾਜੈਕਟਾਂ ਵਾਂਗੂੰ ਕਈ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਮੌਜੂਦ ਹੈ। ਇਸ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੀਆਂ ਲਿਖਤਾਂ ਦੇ ਨਾਲ-ਨਾਲ ਅਨੁਵਾਦ ਵੀ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਇਸ ਪ੍ਰੋਜੈਕਟ ਦਾ ਮੁੱਖ ਮੰਤਵ ਇਹ ਹੈ ਕਿ ਸੰਸਾਰ ਦੀਆਂ ਸਾਰੀਆਂ ਵੱਖ ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੇ ਮੁਫਤ ਸਰੋਤ ਇਕੱਤਰ ਕੀਤੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ, ਭਾਵੇਂ ਉਹ ਕਿਸੇ ਵੀ ਰੂਪ ਵਿੱਚ ਮਿਲਦੇ ਹੋਣ। ਪ੍ਰੋਜੈਕਟ ਦੀ ਸ਼ੁਰੂਆਤ 24 ਨਵੰਬਰ 2003 ਵਿੱਚ ਕੀਤੀ ਗਈ ਸੀ।", - "wiktionary":"ਵਿਕਸ਼ਨਰੀ ਇੰਟਰਨੈੱਟ ’ਤੇ ਅਜ਼ਾਦ ਸਮੱਗਰੀ ਵਾਲ਼ਾ ਬਹੁ-ਜ਼ਬਾਨੀ ਸ਼ਬਦਕੋਸ਼ ਤਿਆਰ ਕਰਨ ਦੀ ਇੱਕ ਸਾਂਝੀ ਵਿਓਂਤ ਹੈ ਜੋ ਹਾਲ ਦੀ ਘੜੀ 170 ਤੋਂ ਵੱਧ ਬੋਲੀਆਂ ਵਿੱਚ ਮੌਜੂਦ ਹੈ। ਇਸ ਵਿੱਚ ਹਰ ਕੋਈ ਲਿਖ ਅਤੇ ਫੇਰ-ਬਦਲ ਕਰ ਸਕਦਾ ਹੈ।", - "wikiversity":"ਵਿਕੀਵਰਸਟੀ ਵਿਕੀਮੀਡੀਆ ਫਾਉਂਡੇਸ਼ਨ ਦਾ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਹੈ। ਇਹ ਮੁਫ਼ਤ ਪੜ੍ਹਾਈ ਸਮੱਗਰੀ ਅਤੇ ਗਤੀਵਿਧੀਆਂ ਦੀ ਪੈਦਾਵਾਰ ਅਤੇ ਵਰਤੋਂ ਵਾਸਤੇ ਇੱਕ ਕੇਂਦਰ ਹੈ। ਅਸੀਂ ਮੁਫ਼ਤ ਸਿੱਖਿਆ ਸੋਮੇ ਅਤੇ ਸਕੂਲੀ ਪ੍ਰੋਜੈਕਟਾਂ ਦੀ ਮੇਜ਼ਬਾਨੀ ਕਰਦੇ ਹਾਂ। ਸਾਡਾ ਮਕਸਦ ਹੋਰ ਵਿਕੀਮੀਡੀਆ ਪ੍ਰੋਜੈਕਟਾਂ ਨਾਲ ਮੇਲਜੋਲ ਕਰਨਾ ਅਤੇ ਉਹਨਾਂ ਦੇ ਸਮੱਗਰੀ ਵਿਕਾਸਾਂ ਦਾ ਸਮਰਥਨ ਕਰਨਾ ਹੈ। ਹੁਣ ਤੱਕ, ਅੰਗਰੇਜ਼ੀ, ਜਰਮਨ, ਸਪੈਨਿਸ਼, ਫ੍ਰੈਂਚ, ਇਟਾਲੀਅਨ, ਗ੍ਰੀਕ, ਜਪਾਨੀ, ਕੋਰੀਅਨ, ਪੋਰਤਗੀਜ਼, ਜ਼ੇਹ, ਫਿੱਨਿਸ਼ and ਰਸ਼ੀਅਨ, ਵੱਖਰੇ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਵਿਕਸਿਤ ਹੋ ਚੁੱਕੇ ਹਨ।", - "wikivoyage":"ਵਿਕੀਸਫ਼ਰ, ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਦੀ ਇੱਕ ਯੋਜਨਾ ਹੈ, ਜੋ ਲੋਕਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਖੇਤਰਾਂ ਅਤੇ ਦੇਸ਼ਾਂ ਦੀ ਯਾਤਰਾ ਦੀ ਜਾਣਕਾਰੀ ਅਤੇ ਮਾਰਗਦਰਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।", - "wikicommons.images":"ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਮੁਫ਼ਤ ਵਰਤੋਂ ਲਈ ਚਿਤਰਾਂ, ਧੁਨੀਆਂ ਅਤੇ ਹੋਰ ਮੀਡੀਆ ਫਾਈਲਾਂ ਦਾ ਇੱਕ ਆਨਲਾਈਨ ਭੰਡਾਰ ਹੈ। ਇਹ ਵਿਕੀਮੀਡੀਆ ਫਾਊਂਡੇਸ਼ਨ ਦਾ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਹੈ। ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਤੇ ਅਪਲੋਡ ਕੀਤੀਆਂ ਗਈਆਂ ਫਾਇਲਾਂ ਸਾਰੇ ਵਿਕੀਮੀਡੀਆ ਪ੍ਰੋਜੈਕਟਾਂ ਜਿਵੇਂ ਵਿਕੀਪੀਡੀਆ, ਵਿਕੀਸੋਰਸ, ਵਿਕੀਨਿਊਜ, ਵਿਕੀਵਰਸਿਟੀ, ਆਦਿ ਦੇ ਵੱਖ ਵੱਖ ਰੂਪਾਂ ਵਿੱਚ ਇਸਤੇਮਾਲ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਫਾਈਲਾਂ ਆਫਲਾਈਨ ਪ੍ਰਯੋਗ ਲਈ ਵੀ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਵਰਤਮਾਨ ਸਮੇਂ (2118) ਵਿੱਚ ਕਾਮਨਜ਼ ਤੇ 44 ਮਿਲੀਅਨ ਤੋਂ ਵੀ ਜਿਆਦਾ ਮੀਡਿਆ ਫਾਈਲਾਂ ਉਪਲਬਧ ਹਨ।" - }, - "pl":{ - "9gag":"9GAG – serwis społecznościowy działający w branży rozrywkowej. 9GAG został założony 12 kwietnia 2008 w Hongkongu przez Chrisa Chana, Dereka Chana, Raya Chana i Marco Funga. Jej celem jest gromadzenie memów internetowych i żartów z innych stron internetowych.", - "apple app store":"App Store – platforma dystrybucji cyfrowej z aplikacjami dla iPada, iPhone'a oraz iPoda touch, stworzona przez Apple Inc. Aplikacje w sklepie są tworzone przez właściciela App Store, firmę Apple, oraz przez osoby, które posiadają pakiet iOS SDK.", - "artic":"Art Institute of Chicago (AIC) – muzeum sztuk pięknych położone w Chicago w Grant Park przy South Michigan Avenue 111. Muzeum posiada w swoich zbiorach jedną z najwspanialszych na świecie kolekcji malarstwa europejskiego, obejmującą ponad 3500 dzieł począwszy od XII aż do połowy XX w., w tym znaczącą kolekcję dzieł sztuki okresu impresjonizmu i postimpresjonizmu. Znaczącą część zbiorów muzeum stanowi ponadto sztuka amerykańska, rzemiosło artystyczne, sztuka Azji oraz sztuka współczesna. Muzeum jest połączone z uczelnią artystyczną School of the Art Institute of Chicago i kierowane przez dyrektora i przewodniczącego Jamesa Cuno. Pod względem powierzchni jest drugim muzeum sztuki w Stanach Zjednoczonych po Metropolitan Museum of Art w Nowym Jorku.", - "arxiv":"arXiv – elektroniczne archiwum naukowych preprintów. Gromadzi artykuły z następujących dziedzin: fizyki z astronomią, matematyki, informatyki, statystyki i biologii i matematyki finansowej. Archiwum powstało w roku 1991 w Los Alamos National Laboratory, początkowo dostępne było pod adresem xxx.lanl.gov. Obecnie funkcjonuje przy Uniwersytecie Cornella.", - "bandcamp":"Bandcamp – muzyczny sklep internetowy, jak również platforma do promocji przeznaczona głównie dla artystów niezależnych. Artysta, który chce sprzedać swoją muzykę poprzez Bandcamp, posiada własną mikrostronę, na której zamieszcza albumy lub pojedyncze utwory. Wszystkie utwory można odsłuchać za darmo, a artysta decyduje, czy za ich pobranie należy zapłacić, czy nie. Strona pobiera 15% od ceny zakupionej muzyki oraz 10%, jeśli zarobki za dany album przekroczą 5000 dolarów. Serwis umożliwia również sprzedaż nośników fizycznych, za wcześniejszym powiadomieniem administratorów. Strona wspiera takie formaty jak .mp3, .flac, .acc, .ogg oraz .m4a.", - "wikipedia":"Wikipedia – wielojęzyczna encyklopedia internetowa działająca zgodnie z zasadą otwartej treści. Funkcjonuje w oparciu o oprogramowanie MediaWiki, wywodzące się z koncepcji WikiWikiWeb, umożliwiające edycję każdemu użytkownikowi odwiedzającemu stronę i aktualizację jej treści w czasie rzeczywistym. Słowo Wikipedia jest neologizmem powstałym w wyniku połączenia wyrazów wiki i encyklopedia. Slogan Wikipedii brzmi: „Wolna encyklopedia, którą każdy może redagować”. Serwis był notowany w rankingu Alexa na miejscu 13.", - "bilibili":"Bilibili – chiński serwis internetowy o charakterze platformy strumieniowej, umożliwiający udostępnianie treści wideo.", - "bing":"Bing – wyszukiwarka internetowa stworzona przez amerykańską firmę Microsoft, początkowo jako część portalu MSN. Później stała się częścią Windows Live, a obecnie jest samodzielną wyszukiwarką. Producent nazywa ją nie tylko wyszukiwarką internetową, ale również silnikiem decyzyjnym ze względu na liczbę zaimplementowanych funkcji pomagających podjąć decyzję odnośnie do wyboru restauracji czy biletów lotniczych.", - "bing images":[ - "bing:pl", - "ref" - ], - "bing news":[ - "Wiadomości ze świata, z kraju i z lokalnych źródeł, uporządkowane w celu zapewnienia pełnego zakresu informacji dotyczących sportu, rozrywki, biznesu, polityki, pogody i innych tematów.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Inteligentne wyszukiwanie przez Bing ułatwia szybkie odnalezienie wartościowych wyników... i nie tylko.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket – hostingowy serwis internetowy przeznaczony dla projektów programistycznych wykorzystujących system kontroli wersji Git oraz Mercurial, którego obecnym właścicielem jest firma Atlassian. Serwis umożliwia bezpłatne wykorzystanie usługi wraz z dodatkowymi płatnymi planami. Jest obecnie jednym z najpopularniejszych tego typu serwisów, z którego korzystają m.in. firmy Ford, PayPal, czy Starbucks. W kwietniu 2019 r. Atlassian ogłosił, że Bitbucket dotarł do 10 milionów zarejestrowanych użytkowników i ponad 28 milionów repozytoriów.", - "crossref":"Crossref – organizacja non-profit promująca rozwój i kooperatywne wykorzystanie nowych i innowacyjnych technologii w celu przyśpieszenia i ułatwienia wyszukiwania prac naukowych. Crossref jest oficjalną agencją rejestrującą linki DOI dla publikacji profesjonalnych.", - "currency":"DuckDuckGo − wyszukiwarka internetowa z siedzibą w Valley Forge w stanie Pensylwania. Wyszukiwarka oprócz tradycyjnych źródeł danych wykorzystuje serwisy tworzone przez użytkowników Internetu, w celu poprawy wyników. Twórcy wyszukiwarki podkreślają dbanie o ochronę prywatności użytkowników i twierdzą, że nie gromadzą żadnych danych o nich i z tego względu nie jest możliwe określenie dokładnej liczby użytkowników. Wyszukiwarka jest zbudowana w oparciu o otwarte oprogramowanie.", - "deezer":"Deezer – powstały w sierpniu 2007 roku we Francji serwis oferujący dostęp do muzyki poprzez media strumieniowe. Usługi platformy są dostępne w ramach oprogramowania dostosowanego do systemów operacyjnych Microsoft Windows i macOS oraz w formie aplikacji na urządzenia mobilne. Serwis oferuje ponad 53 miliony utworów i jest dostępny w ponad 180 krajach.", - "deviantart":"DeviantArt – społeczność internetowa dla artystów. Została ona uruchomiona 7 sierpnia 2000 roku przez Scotta Jarkoffa (jark) i Matta Stephensa (matteo). Obecnym CEO jest Angelo Sotira.", - "ddg definitions":[ - "currency:pl", - "ref" - ], - "erowid":"Erowid – założona w październiku 1995 organizacja, zajmująca się prowadzeniem anglojęzycznego internetowego serwisu informacyjnego na tematy dotyczące roślin i substancji psychoaktywnych Erowid.org. Serwis zawiera jedną z najobszerniejszych dostępnych baz danych na ten temat, codziennie notując średnio 55 tys. odwiedzin.", - "wikidata":"Wikidane – projekt internetowy mający na celu stworzenie wolnej, otwartej, wielojęzycznej bazy różnorodnych danych. Głównym zastosowaniem tej bazy danych jest używanie jej w projektach Wikimedia Foundation, przede wszystkim w Wikipedii.", - "duckduckgo":[ - "currency:pl", - "ref" - ], - "duckduckgo images":[ - "currency:pl", - "ref" - ], - "duckduckgo videos":[ - "currency:pl", - "ref" - ], - "duckduckgo news":[ - "currency:pl", - "ref" - ], - "duckduckgo weather":[ - "currency:pl", - "ref" - ], - "apple maps":"Mapy Apple – usługa map internetowych opracowana przez Apple Inc. Domyślna aplikacja map dla systemów operacyjnych macOS, iOS i watchOS. Oferuje nawigację oraz estymację czasu dotarcia do celu dla tras samochodowych, pieszych, i przy użyciu środków transportu publicznego. Apple Maps oferuje także tryb Flyovers, który umożliwia użytkownikowi zapoznawać z krajobrazami 3D gęsto zaludnionych ośrodków miejskich.", - "etymonline":"Online Etymology Dictionary – internetowy słownik objaśniający pochodzenie słów w języku angielskim. Słownik opracował leksykograf Douglas Harper.", - "fdroid":"F-Droid – repozytorium aplikacji dla systemu operacyjnego Android. Działa na podobnej zasadzie do Google Play, ale zawiera jedynie wolne i otwarte oprogramowanie. Aplikacje mogą być instalowane oraz wyszukiwane na stronie projektu lub bezpośrednio z aplikacji klienckiej.", - "flickr":"Flickr – serwis internetowy stworzony do gromadzenia i udostępniania zdjęć cyfrowych online.", - "free software directory":"The Free Software Directory – projekt Free Software Foundation i UNESCO zbierający i udostępniający informacje na temat wolnego oprogramowania pozwalającego na uruchomienie go w wolnym systemie operacyjnym, np. GNU/Linux czy OpenBSD.", - "genius":"Genius – amerykańskie przedsiębiorstwo zajmujące się mediami cyfrowymi, założone w sierpniu 2009 roku przez Toma Lehmana, Ilana Zechory’ego i Mahboda Moghadama. Witryna Genius umożliwia użytkownikom dostarczanie adnotacji i interpretacji tekstów piosenek, wiadomości o muzykach i informacji dotyczących utworów. Pierwotnie funkcjonowała pod nazwą Rap Genius.", - "gentoo":"Genkernel – narzędzie służące do zbudowania jądra systemowego używającego standardowej konfiguracji lub jej modyfikacji.", - "gitlab":"GitLab – hostingowy serwis internetowy i oprogramowanie przeznaczone dla projektów programistycznych. Gitlab oparty jest o system kontroli wersji Git oraz otwartoźródłowe oprogramowanie wspomagające zarządzanie projektami opartymi na Git.", - "github":"GitHub – hostingowy serwis internetowy przeznaczony do projektów programistycznych wykorzystujących system kontroli wersji Git. Stworzony został przy wykorzystaniu frameworka Ruby on Rails i języka Erlang. Serwis działa od kwietnia 2008 roku. GitHub udostępnia darmowy hosting programów open source i prywatnych repozytoriów. W czerwcu 2018 ogłoszono, iż serwis zostanie przejęty przez przedsiębiorstwo Microsoft za kwotę 7,5 miliarda dolarów.", - "google":"Wyszukiwarka Google – wyszukiwarka internetowa stworzona przez amerykańską spółkę Google LLC. Jej celem jest skatalogowanie wszystkich możliwych informacji i udostępnienie ich za pomocą Internetu. Serwis był notowany w rankingu Alexa na miejscu 1", - "google images":"Grafika Google, ang. Google Images – wyszukiwarka internetowa grafiki została uruchomiona w lipcu 2001 roku pod angielską nazwą Google Image Search. Od 9 listopada 2002 dostępna jest w polskiej wersji językowej. Za jej pomocą użytkownicy mogą przeszukiwać pliki graficzne znajdujące się na stronach internetowych. Specjalna wersja Googlebota odnajduje zdjęcia i obrazy, kategoryzuje je pod specyficzne słowa i wysyła miniaturki zdjęć na serwery Google. Stamtąd są one wyświetlane jako wyniki wyszukiwania, razem z linkami do pełnych wersji znalezionych zdjęć i stron internetowych, na których zostały znalezione. W przypisywaniu zdjęciom słów kluczowych pomaga usługa Google Image Labeler – gra polegająca na jak najszybszym otagowaniu wyświetlanych zdjęć.", - "google news":"Wiadomości Google, ang. Google News – internetowy agregator wiadomości z serwisów informacyjnych. Został uruchomiony w wersji beta we wrześniu 2002, z której wyszedł 23 stycznia 2006.", - "google videos":"Google Videos – wyszukiwarka filmów w internecie przeszukująca filmy dodane przez użytkowników YouTube oraz innych dużych serwisów.", - "google scholar":"Google Scholar (GS) – darmowa, specjalistyczna wyszukiwarka internetowa amerykańskiej spółki Google Inc. służąca do przeszukiwania bazy danych zawierających publikacje naukowe z różnych dziedzin.", - "google play apps":"Google Play, dawniej Android Market – internetowy sklep Google z aplikacjami, grami, muzyką, książkami, magazynami, filmami i programami TV. Treści ze sklepu są przeznaczone do korzystania za pomocą urządzeń działających pod kontrolą systemu operacyjnego Android. Google Play powstało w wyniku przekształcenia Google Music oraz Android Market w ujednoliconą usługę. 12 kwietnia 2012 udostępniono polskim deweloperom możliwość sprzedaży programów.", - "google play movies":[ - "google play apps:pl", - "ref" - ], - "hoogle":"Haskell – czysto funkcyjny język programowania nazwany na cześć amerykańskiego matematyka, Haskella Curry’ego.", - "imdb":"IMDb – największa na świecie internetowa baza danych na temat filmów i ludzi z nimi związanych. Zawiera informacje o aktorach, reżyserach, scenarzystach, producentach, montażystach, operatorach, muzykach itd. Informacje nie ograniczają się do kinematografii amerykańskiej.", - "imgur":"Imgur – strona internetowa oferująca darmowy hosting grafiki. Serwis uruchomiono 23 lutego 2009 roku. Dostępnymi formatami obrazu do załadowania są: JPEG, PNG, GIF, APNG, TIFF, BMP, PDF oraz XCF.Strona oferuje również udostępnienie obrazka z dowolnego łącza internetowego, bądź też schowka. Prócz samego przechowywania obrazków można również stworzyć memy internetowe, polegające na dodaniu tematycznych napisów do obrazka. Serwis był notowany w rankingu Alexa na miejscu 67.", - "library genesis":"Library Genesis (LibGen) – biblioteka cyfrowa typu shadow library zawierająca artykuły z czasopism naukowych, książki. Witryna znane jest z tego, że umożliwia bezpłatny dostęp do treści, które w inny sposób są płatne lub nie zostały zdigitalizowane gdzie indziej. LibGen określa się jako „agregator linków”, dostarczając przeszukiwalną bazę danych elementów „zebranych z publicznie dostępnych publicznych zasobów internetowych” oraz plików przesłanych „od użytkowników”. W 28 lipca 2019 r. LibGen twierdziło, że ma ponad 2,4 miliona książek naukowych lub popularnonaukowych, 2,2 miliona książek beletrystycznych, 80 milionów artykułów z czasopism naukowych, 2 miliony komiksów, i 0,4 miliona pełnych wydań czasopism.", - "z-library":"Z-Library – biblioteka cyfrowa typu shadow library zawierająca artykuły czasopism naukowych, teksty akademickie i książki. Powstała jako mirror Library Genesis i większość książek pochodziła z jej zasobów. W 2022 roku jej katalog składał się z 6,6 miliona książek i 80 milionów artykułów. Według SimilarWeb w październiku 2022 strona została odwiedzona ponad 12 milionów razy.", - "library of congress":"Biblioteka Kongresu – biblioteka, która powstała w 1800 roku w Waszyngtonie. W 2019 roku posiadała w swoich zbiorach ponad 170 mln woluminów w ponad 470 językach. Zbiór książek i dokumentów związanych z Polską należy do jednych z największych nie tylko w USA, ale również na świecie. Pełni funkcję biblioteki narodowej. Zapewnia publiczny dostęp do zbiorów, chociaż jej głównym zadaniem jest służba Kongresowi. We wrześniu 2019 Biblioteka Kongresu zatrudniała 3210 stałych pracowników.", - "mastodon users":"Mastodon – wolne i otwarte oprogramowanie do prowadzenia sieci społecznościowej o tej samej nazwie. Posiada funkcjonalność mikroblogowania zbliżoną do Twittera. Pozwala każdemu na uruchomienie własnych węzłów będących częściami sieci, każda z własnymi kodeksami postępowania, regulaminem, polityką moderacyjną i opcjami prywatności. Cecha ta odróżnia platformę od scentralizowanych sieci społecznościowych – pozwala bowiem użytkownikom na wybór serwera, z którego polityką zgadzają się, bez utraty dostępu do sieci Mastodona.", - "mastodon hashtags":[ - "mastodon users:pl", - "ref" - ], - "metacpan":"CPAN – źródło dokumentacji oraz modułów do języka Perl. Zgromadzone moduły mają bardzo wiele zastosowań. Na początku 2007 roku liczba modułów przekraczała 11 000, a ich łączny rozmiar 3 400 MB, na początku drugiej połowy roku 2010 było ich już ponad 18 000, co dało prawie 7 400 MB.", - "mixcloud":"MixCloud – społeczność internetowa dla artystów tworzących i dystrybuujących audycje radiowe, mikstejpy i podkasty. Serwis był notowany w rankingu Alexa na miejscu 2711.", - "npm":"npm – domyślny manager pakietów dla środowiska Node.js, może być także używany do zarządzania warstwą front-end aplikacji WWW. NPM to także repozytorium pakietów oraz nazwa firmy która nim zarządza. Istnieją także inne managery pakietów, które korzystają z repozytorium npm, np. Yarn.", - "openstreetmap":"OpenStreetMap (OSM) – projekt społeczności internetowej mający na celu stworzenie darmowej, swobodnie dostępnej mapy całej kuli ziemskiej. Jest ona edytowalna przez zarejestrowanych użytkowników. Stworzenie i rozwój OSM było motywowane ograniczeniami w dostępności i wykorzystywaniu map oraz pojawieniem się niedrogich przenośnych urządzeń do nawigacji satelitarnej. Serwis był notowany w rankingu Alexa na miejscu 6 772.", - "pinterest":"Pinterest – amerykański serwis społecznościowy umożliwiający dzielenie się materiałami wizualnymi. Szacuje się, że wartość rynkowa serwisu wynosi 11 miliardów dolarów. Posiada 444 milionów aktywnych użytkowników. Większość to kobiety, statystyki mówią, że jest ich aż 81%, a najliczniejsza grupa wiekowa to 25-34 lata. W Polsce, Pinterest posiada 4,3 miliona użytkowników. Ponad 10% internautów poszukuje treści na temat marek i produktów właśnie używając serwisu Pinterest. Aż 73% użytkowników sprawdza Pinterest'a kilka razy dziennie, a 57% z nich przynajmniej raz kupiło coś przez platformę.", - "piratebay":"The Pirate Bay (TPB) – strona internetowa do wyszukiwania plików w sieci peer-to-peer, wykorzystująca protokół BitTorrenta oraz magnet link. Strona została założona w 2003 roku przez Gottfrida Svartholma, Fredrika Neij i Petera Sunde’a. TPB nie hostuje żadnych plików – również tych, których rozpowszechnianie może naruszać prawo autorskie, a udostępnia jedynie odnośniki do danych zasobów, w postaci Magnet linków.", - "qwant":"Qwant – francuska wyszukiwarka internetowa z siedzibą w Paryżu, utworzona w lipcu 2013 roku. Wyszukiwarka skupia się na prywatności swoich użytkowników, a tym samym nie stosuje śledzenia oraz personalizacji wyników osób z niej korzystających, aby uniknąć tak zwanej bańki filtrującej.", - "qwant news":[ - "qwant:pl", - "ref" - ], - "qwant images":[ - "qwant:pl", - "ref" - ], - "qwant videos":[ - "qwant:pl", - "ref" - ], - "reddit":"Reddit – serwis internetowy przedstawiający linki do różnorodnych informacji, które ukazały się w Internecie. Serwis jest głównie anglojęzyczny, chociaż jego interfejs został przetłumaczony na wiele języków.", - "soundcloud":"SoundCloud – społeczność internetowa dla artystów tworzących muzykę uruchomiona w 2007 roku. Portal ma na celu możliwość prezentacji własnych utworów przez artystów oraz umożliwia dyskusję na ich temat. Ponadto użytkownicy mogą szukać utworów według gatunków muzycznych, dzięki czemu mogą znaleźć interesującą ich muzykę.", - "stackoverflow":"Stack Exchange Network – sieć darmowych w użytkowaniu stron internetowych, na których zadawać można pytania i odpowiadać w wielu różnych dziedzinach. Każda strona poświęcona jest konkretnemu tematowi, a pytania i odpowiedzi użytkowników są przedmiotem przyznawania reputacji. Strony internetowe są wzorowane na StackOverflow, forum dla programistów, który był pierwszą stroną w sieci. System reputacji jest zaprojektowany tak, by każda strona internetowa posiadała własną moderację.", - "askubuntu":[ - "stackoverflow:pl", - "ref" - ], - "superuser":[ - "stackoverflow:pl", - "ref" - ], - "startpage":"Startpage – holenderska wyszukiwarka internetowa, nastawiona na prywatność. Strona umożliwia uzyskiwanie wyników wyszukiwania Google, jednocześnie chroniąc prywatność użytkowników, nie przechowując danych osobowych ani danych wyszukiwania i usuwając wszystkie skrypty śledzące. Startpage.com posiada również funkcję „Anonymous View”, która umożliwia użytkownikom otwieranie wyników wyszukiwania za pośrednictwem serwera proxy w celu zwiększenia anonimowości. Ponieważ firma ma siedzibę w Holandii, jest chroniona przez holenderskie i unijne przepisy dotyczące prywatności, a zatem nie podlega programom nadzoru prowadzonym przez Stany Zjednoczone, takim jak PRISM.", - "tagesschau":"Tagesschau – niemieckojęzyczny dziennik informacyjny ARD emitowany przede wszystkim w telewizji Das Erste. Dziennik produkuje na zamówienie ARD telewizja Norddeutscher Rundfunk (NDR) z siedzibą w Hamburgu. Główne wydanie prezentowane jest codziennie o 20:00, nie tylko w Das Erste, ale również w większości telewizji regionalnych zrzeszonych w ARD, a także w tagesschau24, ARD-alpha, 3sat i Phoenix.", - "unsplash":"Unsplash – społecznościowa platforma internetowa przeznaczona do udostępniania fotografii.", - "youtube":"YouTube – amerykański serwis internetowy założony 14 lutego 2005 roku, umożliwiający bezpłatne udostępnianie, edycję, nadawanie na żywo i komentowanie filmów. Należy do korporacji Google i po Facebooku jest drugim najpopularniejszym serwisem społecznościowym na świecie. Od 2023 roku prezesem YouTube jest Neal Mohan.", - "dailymotion":"Dailymotion – serwis internetowy umożliwiający prezentację filmów, wideoklipów lub własnych mini produkcji w internecie, reklamujący się hasłem Regarder, publier, partager, założony w Paryżu we Francji, jako odpowiedź na serwis YouTube. Domena dailymotion.com została zarejestrowana miesiąc po YouTube. Dailymotion jest dostępny w 18 różnych językach i 35 zlokalizowanych wersjach.", - "vimeo":"Vimeo – serwis internetowy umożliwiający oglądanie i udostępnianie plików filmowych przez użytkowników, funkcjonująca w modelu SaaS. Strona została założona w listopadzie 2004 przez Jake'a Lodwicka i Zacha Kleina. Lodwick wymyślił nazwę, która stanowi grę słów opartą na wyrazach video i me, jako odniesienie do faktu udostępniania plików stworzonych wyłącznie przez użytkowników. Serwis został kupiony przez InterActiveCorp w sierpniu 2006 roku.", - "wikibooks":"Wikibooks – jeden z projektów Wikimedia Foundation, uruchomiony 10 lipca 2003 r. Jest to projekt siostrzany Wikipedii, który ma na celu poszerzanie i rozpowszechnianie darmowych, otwartych do edycji materiałów edukacyjnych, takich jak podręczniki szkolne, akademickie, poradniki, instrukcje obsługi oraz im podobne. Podręczniki Wikibooks, tak samo jak artykuły Wikipedii, są dostępne na zasadach Licencji Wolnej Dokumentacji GNU oraz Licencji Creative Commons; uznanie autorstwa – na tych samych warunkach 3.0.", - "wikinews":"Wikinews – wolnodostępny serwis informacyjny oparty na technologii Wiki. Oznacza to, że każdy jego użytkownik może redagować jego zawartość, dodawać nowe artykuły i tworzyć materiały dziennikarskie. Celem tego obywatelskiego dziennikarstwa jest dbałość zarówno o przestrzeganie praw autorskich, pozwalanie na łatwiejsze udostępnianie treści, lecz także dbałość o wiarygodność. Serwis był notowany w rankingu Alexa na miejscu 63574.", - "wikiquote":"Wikicytaty – siostrzany projekt Wikipedii, jeden z serwisów Wikimedia Foundation. Celem serwisu jest utworzenie bazy cytatów na licencji GNU Free Documentation License i Creative Commons BY-SA. Serwis działa na oprogramowaniu MediaWiki. Angielska wersja powstała 27 czerwca 2003 roku, polska zaś 17 lipca 2004 roku.", - "wikisource":"Wikiźródła — wolna biblioteka – wielojęzyczny siostrzany projekt Wikipedii, który działa jako jedno z przedsięwzięć Wikimedia Foundation. Jego celem jest gromadzenie i udostępnianie wcześniej publikowanych tekstów znajdujących się w domenie publicznej lub udostępnionych na wolnej licencji.", - "wikispecies":"Wikispecies – siostrzany projekt Wikipedii, będący wielojęzycznym katalogiem gatunków biologicznych.", - "wiktionary":"Wiktionary – projekt Wikimedia Foundation, którego założeniem jest stworzenie wolnego słownika w każdym języku opartego na mechanizmie wiki. Wiktionary jest jednym z siostrzanych projektów Wikipedii. Polska wersja Wiktionary nosi nazwę Wikisłownik. Serwis był notowany w rankingu Alexa na miejscu 641.", - "wikiversity":"Wikiwersytet – projekt Wikimedia Foundation będący wspólnotą, która powołana jest z myślą o tworzeniu i używaniu wolnych materiałów do nauki i ćwiczeń.", - "wikivoyage":"Wikipodróże – portal internetowy Wikimedia Foundation poświęcony tematyce turystycznej, oparty na technologii wiki i tworzony na wolnej licencji przez zaangażowanych w ten projekt wolontariuszy.", - "wikicommons.images":"Wikimedia Commons – jeden z siostrzanych projektów Wikimedia Foundation utworzony jako magazyn ilustracji, zdjęć i plików multimedialnych dla wszystkich wersji językowych Wikipedii i projektów Wikimedia Foundation.", - "wolframalpha":"Wolfram|Alpha, Wolfram Alpha – strona internetowa, stworzona przez amerykańskie przedsiębiorstwo Wolfram Alpha LLC. Formułuje ona odpowiedź na pytanie zadane w języku naturalnym, wykonuje obliczenia, przedstawia dane statystyczne, rozwiązuje równania itp.", - "dictzone":[ - "Słowniki internetowe: angielski, hiszpański, niemiecki, francuski, włoski, węgierski... Wybierz swój ulubiony słownik!", - "https://dictzone.com/" - ], - "seznam":"Seznam.cz – największy czeski portal internetowy.", - "naver":"Naver – popularny południowokoreański serwis internetowy będący własnością Naver Corporation. Został uruchomiony w czerwcu 1999 roku przez byłych pracowników Samsunga. Zadebiutował jako pierwszy południowokoreański serwis wykorzystujący autorskie algorytmy przeszukiwania. Posiadał co najmniej 70% udziałów na koreańskim rynku w 2011 roku.", - "peertube":"PeerTube – wolna, otwartoźródłowa i zdecentralizowana platforma wideo oparta na ActivityPub i WebTorrent. Aplikacja bazuje na technice peer-to-peer.", - "yacy":"YaCy – rozproszona wyszukiwarka zbudowana na zasadzie sieci peer-to-peer (P2P). Podstawą jest program napisany w Javie, funkcjonujący na kilku tysiącach komputerów, tak zwanych YaCy-peers. Każde YaCy-peer niezależnie przeszukuje internet, analizuje oraz indeksuje znalezione strony i gromadzi rezultaty indeksowania we wspólnej bazie danych, który jest współdzielony z innymi użytkownikami YaCy tak, jak w sieciach P2P.", - "yacy images":[ - "yacy:pl", - "ref" - ], - "sjp.pwn":[ - "Słownik Języka Polskiego PWN online", - "wikidata" - ], - "brave":"Brave – darmowa przeglądarka internetowa oparta na silniku Chromium, rozwijana na zasadzie open source, stawiająca przede wszystkim na bezpieczeństwo i ochronę prywatności użytkowników internetu.", - "brave.images":[ - "brave:pl", - "ref" - ], - "brave.videos":[ - "brave:pl", - "ref" - ], - "brave.news":[ - "brave:pl", - "ref" - ] - }, - "pt":{ - "9gag":"9GAG é um website humorístico criado em Hong Kong e hospedado nos Estados Unidos da América. Lançado em abril de 2008, esse website é conhecido principalmente pelo uso recorrente de memes internéticos. Tiras, imagens, GIFS e vídeos fazem parte do foco central do humor presente no site.", - "annas archive":"Arquivo da Anna é um metabuscador de shadow libraries on-line e sem fins lucrativos, fornecendo acesso à uma variedade de livros. Criado por uma equipe de bibliotecários anônimos, o arquivo foi lançado em resposta direta às medidas legais que levaram à interrupção do website da Z-Library em novembro de 2022.", - "apple app store":"A App Store é um serviço de distribuição digital de aplicativos móveis desenvolvido e operado pela Apple Inc. Ela é a loja oficial de aplicativos para o sistema operacional iOS e iPadOS da Apple. A loja permite que os usuários naveguem e baixem aplicativos desenvolvidos com o kit de desenvolvimento de software para iOS. Os aplicativos podem ser baixados no smartphone iPhone, no tablet iPad e no iPod Touch. Alguns aplicativos podem ser transferidos para o smartwatch Apple Watch ou para uma Apple TV de 4ª geração ou modelos posteriores.", - "artic":"O Art Institute of Chicago (AIC) é um museu estadunidense de belas artes localizado em Chicago, Illinois, no Grant Park. O AIC possui uma das mais notáveis coleções mundiais do Impressionismo. Sua coleção diversificada inclui obras dos grandes mestres, Arte Americana, arte decorativa europeia e americana, arte asiática e arte moderna e contemporânea.", - "arxiv":"O arXiv é um arquivo para preprints eletrônicos de artigos científicos nos campos da matemática, física, ciência da computação, biologia quantitativa e estatística que podem ser acessados via internet. Em muitos campos da matemática e da física, quase todos os artigos estão no arXiv. Em março de 2012, arXiv.org continha mais de 745.000 e-prints, com cerca de seis mil novos e-prints adicionados a cada mês.", - "bandcamp":"Bandcamp é um empresa formada em 2007 pelos co-fundadores do Oddpost, Ethan Diamond e Shawn Grunberger, juntamente com os programadores Joe Holt e Neal Tucker mais tarde, em 2008, lançam a plataforma online para artistas independentes conseguirem divulgar e vender a sua música autonomamente. Os utilizadores do Bandcamp podem usufruir de um microsite personalizável onde podem partilhar a sua música. Todas as faixas podem ser reproduzidas gratuitamente via streaming, e compradas independentemente ou em conjunto com o álbum.", - "wikipedia":"A Wikipédia é um projeto de enciclopédia multilíngue de licença livre, baseado na web e escrito de maneira colaborativa. Foi lançado em 2001 por Jimmy Wales e Larry Sanger e é atualmente administrado pela Fundação Wikimedia, integrando vários projetos mantidos pela fundação. É formada por mais de 61 milhões de artigos escritos de forma conjunta por diversos editores voluntários ao redor do mundo. Em maio de 2023, havia edições ativas da Wikipédia em 321 idiomas.", - "bing":"Microsoft Bing é o motor de pesquisa da Microsoft, designado para competir com os líderes das indústrias Google e Yahoo!. Revelado pelo CEO da Microsoft, Steve Ballmer, em 28 de maio de 2009, na conferência \"All Things D\", em San Diego, Bing é um substituto do Live Search, e disponibilizado totalmente em 1 de junho de 2009.", - "bing images":[ - "bing:pt", - "ref" - ], - "bing news":"Bing Notícias faz parte do motor de busca Bing, da Microsoft. É um motor de busca e agregador especificamente para artigos de notícias por meio de várias fontes fiáveis da internet, incluindo New York Times, Washington Post e Reuters.", - "bing videos":"Bing Vídeos é um serviço de pesquisa de vídeo e faz parte do mecanismo de busca Bing, da Microsoft. O serviço permite aos usuários pesquisar e visualizar vídeos através de várias websites. Bing Vídeos foi oficialmente lançado em 26 de setembro de 2007, batizado de Live Search Video e renomeado como Bing Vídeos em 1 de junho de 2009.", - "bitbucket":"Bitbucket é um serviço de hospedagem de projetos controlados através do Mercurial, um sistema de controle de versões distribuído. É similar ao GitHub. Bitbucket têm um serviço grátis e um comercial. O serviço é escrito em Python. Num blog de 2008, de Bruce Eckel comparou Bitbucket favoravelmente ao sítio web Launchpad, que utiliza Bazaar.", - "btdigg":"O BTDigg é o primeiro mecanismo de pesquisa BitTorrent DHT. Ele participou da rede BitTorrent DHT, suportando a rede e fazendo correspondência entre links magnéticos e alguns atributos de torrent que são indexados e inseridos em um banco de dados. Para usuários finais, o BTDigg fornece uma pesquisa de banco de dados em texto completo via interface da web. A web part de seu sistema de pesquisa recuperou informações adequadas por meio de uma consulta de texto do usuário. A pesquisa na Web suportava consultas nos idiomas europeu e asiático. O nome do projeto era um acrônimo de BitTorrent Digger. Ficou offline em junho de 2016, devido a um índice de spam. O site retornou no final de 2016 em um domínio pontocom, ficou offline novamente e agora está online. O site btdig.com tem a fonte de origem do rastreador de torrents listada no Github, dhtcrawler2.", - "currency":"DuckDuckGo é um motor de pesquisa sediado em Paoli, Pensilvânia. Este motor de busca tem a particularidade de utilizar informações de origem Crowdsourcing para melhorar a relevância dos resultados. A filosofia deste motor de pesquisa enfatiza a privacidade e não registra as informações do usuário.", - "deezer":"Deezer é um serviço de streaming de áudio lançado em 2007. Disponível para usuários de mais de 180 países, a plataforma possui atualmente mais de 90 milhões de músicas, mais de 100 milhões de playlists e mais de 4 milhões de programas de áudio, como podcasts, em seu acervo. É uma empresa de capital fechado, com sede em Paris, e escritórios em Londres, Berlim, Miami, São Paulo e em outros lugares do mundo. Criada em Paris, França, a Deezer possui 16 milhões de usuários ativos mensais, permitindo que os usuários ouçam conteúdo de música de gravadoras incluindo EMI, Sony, Universal Music Group e Warner Music Group.", - "deviantart":"DeviantArt, Inc é uma empresa virtual estadunidense, formando uma rede social que permite aos artistas iniciantes ou mesmo consagrados exporem seus trabalhos artísticos, promovê-los, compartilhá-los, bem como interagir com seus pares ou interessados, através do envio das imagens digitalizadas. Fundada em 2000, tem sua sede na cidade de Hollywood, estado da Califórnia.", - "ddg definitions":[ - "currency:pt", - "ref" - ], - "erowid":"Erowid, também chamado de Erowid Center, é uma organização educacional sem fins lucrativos que fornece informações sobre plantas e produtos químicos psicoativos. Também fornece informações sobre atividades e tecnologias que podem produzir estados alterados de consciência, como meditação, sonhos lúcidos, estimulação magnética, estimulação magnética transcraniana e neuroestimulação.", - "wikidata":"O Wikidata é um projeto da Fundação Wikimedia que visa fornecer uma base de dados editada colaborativamente para oferecer suporte para projetos tais como a Wikipédia. O Wikidata foi lançado em 30 de outubro de 2012. O projeto foi iniciado pela Wikimedia Deutschland e pretender fornecer uma origem comum de certos tipos de dados, como por exemplo, datas de nascimento, uma classe de dados validados, que possa ser utilizada pelos projetos da Wikimedia operando de forma similar ao funcionamento do Wikimedia Commons para imagens e outros tipos de mídia. Este foi o primeiro novo projeto da Wikimedia Foundation desde 2006.", - "duckduckgo":[ - "currency:pt", - "ref" - ], - "duckduckgo images":[ - "currency:pt", - "ref" - ], - "duckduckgo videos":[ - "currency:pt", - "ref" - ], - "duckduckgo news":[ - "currency:pt", - "ref" - ], - "duckduckgo weather":[ - "currency:pt", - "ref" - ], - "apple maps":"Apple Maps é um serviço de pesquisa e visualização de mapas desenvolvido pela Apple Inc. É o aplicativo de mapas padrão dos sistemas macOS, iOS, iPadOS e watchOS que fornece instruções de navegação e rotas. O serviço foi lançado em 19 de setembro de 2012 juntamente com o iOS 6, substituindo o Google Maps, tornando-se assim um serviço padrão nos sistemas da Apple.", - "emojipedia":"Emojipedia é um site de referência de emoji que documenta o significado e o uso comum de caracteres emoji no Unicode Standard. Mais comumente descrito como uma enciclopédia emoji ou dicionário emoji, Emojipedia também publica artigos e fornece ferramentas para rastrear novos caracteres emoji, alterações de design e tendências de uso. É propriedade da Zedge desde 2021.", - "tineye":"TinEye é um mecanismo de busca de imagens reversas desenvolvido e oferecido pela Idée, Inc., uma empresa sediada em Toronto, Ontário no Canadá. É o primeiro mecanismo de pesquisa de imagens na Web a usar a tecnologia de identificação de imagens em vez de palavras-chave, metadados ou marcas d'água. TinEye permite aos usuários pesquisar não usando palavras-chave, mas com imagens. Ao enviar uma imagem, o TinEye cria uma \"assinatura digital única e compacta ou impressão digital\" da imagem e a combina com outras imagens indexadas.", - "etymonline":"O Online Etymology Dictionary (Etymonline) é um dicionário online gratuito, escrito e compilado por Douglas R. Harper, que descreve as origens das palavras da língua inglesa.", - "fdroid":"F-Droid é um loja de software para Android, tem uma função similar à da Google Play. O repositório principal, hospedado pelo projeto, contém apenas aplicativos gratuitos e de código aberto. Os aplicativos podem ser navegados, baixados e instalados a partir do site ou do F-Droid sem a necessidade de registro. As \"anti-features\" tais como publicidade, rastreamento de usuários ou dependência de software não livre são sinalizados nas descrições dos aplicativos.", - "flickr":"O Flickr é um site da web de hospedagem e partilha de imagens como fotografias, desenhos e ilustrações, além de permitir novas maneiras de organizar as fotos e vídeos. Caracterizado como rede social, o site permite aos usuários criar álbuns para armazenar suas fotografias e contatar-se com usuários de diferentes locais do mundo. No início de 2005 o site foi adquirido pela Yahoo! Inc.", - "genius":"Genius é uma empresa estadunidense de mídia digital originalmente fundada em agosto de 2009 por Tom Lehman, Ilan Zechory e Mahbod Moghadam. O site permite que os usuários forneçam anotações e interpretações de letras de músicas, explicações de notícias, fontes, poesia e documentos.", - "gentoo":"Genkernel é uma ferramenta para construir o módulo central do Gentoo Linux. O Genkernel compila o núcleo com todos os drivers disponíveis compilados como módulos, copiando-os para a memória RAM sendo depois copiada para o núcleo no momendo da inicialização do sistema, fornecendo detecção automática de hardware. Esta ferramenta permite utilizadores com menos experiência configurar o núcleo Linux.", - "gitlab":"O GitLab é um gerenciador de repositório de software baseado em git, com suporte a Wiki, gerenciamento de tarefas e CI/CD. GitLab é similar ao GitHub, mas o GitLab permite que os desenvolvedores armazenem o código em seus próprios servidores, ao invés de servidores de terceiros. Ele é software livre, distribuído pela Licença MIT. Está disponível como um pacote Omnibus, assim como um instalador simplificado provido pela Bitnami e pela Digital Ocean.", - "github":"GitHub é uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando o Git. Ele permite que programadores, utilitários ou qualquer usuário cadastrado na plataforma contribuam em projetos privados e/ou Open Source de qualquer lugar do mundo. GitHub é amplamente utilizado por programadores para divulgação de seus trabalhos ou para que outros programadores contribuam com o projeto, além de promover fácil comunicação através de recursos que relatam problemas ou misturam repositórios remotos.", - "google":"O Google Busca é um serviço da empresa Google, em que é possível fazer pesquisas na internet sobre qualquer tipo de assunto ou conteúdo. É atualmente o serviço de busca mais usado; e também o primeiro serviço lançado pela Google LLC.", - "google images":"O Google Imagens é um serviço de pesquisa de propriedade do Google que permite aos usuários pesquisar por conteúdo de imagem na World Wide Web. Foi introduzido em 12 de julho de 2001 devido a uma demanda por fotos do vestido verde Versace de Jennifer Lopez que a pesquisa regular do Google não conseguiu lidar. Em 2011, foi adicionada a funcionalidade de pesquisa reversa de imagens.", - "google news":"Google Notícias é um agregador de notícias e aplicativo desenvolvido pela Google. Ele apresenta um fluxo contínuo e personalizável de artigos organizados a partir de milhares de editores e revistas. O Google Notícias está disponível no Android, no iOS e na Web.", - "google videos":"O Google Videos foi uma página web de vídeos que permitia encontrar quaisquer vídeos alojados, não somente no Google Video, mas também no YouTube e outros websites de vídeos, até de concorrentes, como o Yahoo! Vídeos.", - "google scholar":"O Google Scholar — Google Académico (português europeu) ou Acadêmico (português brasileiro) em português — é um mecanismo virtual de pesquisa livremente acessível que organiza e lista textos completos ou metadados da literatura acadêmica em uma extensa variedade de formatos de publicação. Lançado em uma versão beta em 2004, inclui a maior parte de revistas e livros online revisados por pares, artigos de conferência, pré-impressões, teses e dissertações, resumos, relatórios técnicos e outras literaturas acadêmicas, entre elas, pareceres de tribunais e patentes. Embora o tamanho do banco de dados do Google Scholar não seja divulgado pelo Google, pesquisadores cientométricos estimaram que ele contenha cerca de 389 milhões de documentos, tornando-se o maior mecanismo de pesquisa acadêmica do mundo em janeiro de 2018. Em maio de 2014, o tamanho de seu acervo era estimado em 160 milhões de documentos. Antes disso, um prognóstico publicado no PLOS ONE, utilizando do método captura-recaptura estimou uma cobertura de aproximadamente 80-90% de todos os artigos publicados em inglês, em uma estimativa de 100 milhões. Tal estimativa também determinou quantos documentos estavam disponíveis livremente na web.", - "google play apps":"Google Play ou Google Play Store é um serviço de distribuição digital oficial do sistema operacional Android de conteúdos digitais, como: aplicativos, jogos eletrônicos, filmes, programas de televisão, músicas e livros, desenvolvido e operado pela Google.", - "google play movies":[ - "google play apps:pt", - "ref" - ], - "hackernews":"Hacker News é um site de notícias sociais com foco em ciência da computação e empreendedorismo. É administrado pelo fundo de investimento e incubadora de startups Y Combinator. A palavra hacker em \"Hacker News\" é usada em seu significado original e se refere à cultura hacker que consiste em pessoas que gostam de mexer com tecnologia.", - "hoogle":"Haskell é uma linguagem de programação puramente funcional, de propósito geral, nomeada em homenagem ao lógico Haskell Curry. Como uma linguagem funcional, a estrutura de controle primária é a função; a linguagem é baseada nas observações de Haskell Curry e seus descendentes intelectuais. Seu último padrão semi-oficial é o Haskell 98, destinado a especificar uma versão mínima e portável da linguagem para o ensino e como base para futuras extensões.", - "imdb":"IMDb, também conhecida como Internet Movie Database, é uma base de dados online de informação sobre cinema, TV, música e games, hoje pertencente à Amazon.", - "imgur":"Imgur é um servidor de hospedagem de imagem fundado em 2009 por Alan Schaaf. O lema da empresa é \"O lar da hospedagem de imagens mais popular da internet, com auxilio em tempo real por uma comunidade dedicada que comenta, vota e compartilha”.", - "ina":"Institut national de l'audiovisuel (Ina) é uma instituição pública francesa, de caráter industrial e comercial, encarregada principalmente do arquivamento de produções audiovisuais. Também é responsável pela produção, edição, cessão de conteúdos audiovisuais e multimídia destinados a todos os públicos, profissionais ou particulares. O Ina é também um centro de formação e pesquisa que visa desenvolver e transmitir conhecimento nas áreas ligadas à produção audiovisual. É associado à Federação Internacional da Indústria Fonográfica - IFPI.", - "kickass":"O KickassTorrents é um site fundado em 2008 que fornece arquivos de torrent e links magnéticos para facilitar a partilha de ficheiros peer-to-peer usando o protocolo BitTorrent. Em novembro de 2014, o KAT tornou-se o site torrent mais visitado no mundo, ultrapassando o The Pirate Bay, segundo o ranking Alexa.", - "lemmy communities":"Lemmy é um software livre para auto-hospedar notícias, agregação de links e fóruns de discussão.", - "lemmy users":[ - "lemmy communities:pt", - "ref" - ], - "lemmy posts":[ - "lemmy communities:pt", - "ref" - ], - "lemmy comments":[ - "lemmy communities:pt", - "ref" - ], - "library genesis":"Library Genesis ou LibGen é um motor de busca de artigos científicos e livros que permite o acesso livre a conteúdos que só seriam acessíveis através de pagamentos e, também, a conteúdos que não são facilmente encontrados em formato digital. Entre outros, esse site carrega conteúdos dos portais de informação da Elsevier e ScienceDirect. LibGen é um site de biblioteca de compartilhamento de arquivos não apenas para artigos de periódicos acadêmicos, mas também para livros de interesse geral, imagens, quadrinhos, audiolivros e revistas.", - "z-library":"Z-Library é uma shadow-library e um projeto de compartilhamento de arquivos para artigos de jornais acadêmicos, livros acadêmicos e livros de interesse geral. A Z-Library diz que o projeto fornece acesso a mais de 10 384 947 livros e 84 837 646 artigos. A Z-Library também afirma ser \"A maior biblioteca de e-books do mundo\" na página do projeto para livros digitais, bem como \"A maior loja de artigos científicos do mundo\" na página equivalente do projeto para artigos acadêmicos (booksc.org).", - "library of congress":"A Biblioteca do Congresso é a biblioteca de pesquisa do Congresso dos Estados Unidos, sendo de facto a biblioteca nacional dos Estados Unidos e a instituição cultural mais antiga daquele país.", - "mastodon users":"Mastodon é uma rede social federada, distribuída, que faz parte do Fediverso, uma rede descentralizada e interligada de servidores operados de maneira independente.", - "mastodon hashtags":[ - "mastodon users:pt", - "ref" - ], - "metacpan":"CPAN, é um acrônimo para Comprehensive Perl Archive Network, é um repositório de mais de 130.200 módulos de software escritos em linguagem de programação Perl, assim como suas respectivas documentações. Possui presença em nível mundial na World Wide Web em «www.cpan.org» e é espelhado mundialmente em mais de 250 sítios. CPAN pode significar tanto a rede de armazenamento propriamente dita, quanto o programa Perl que atua como uma interface para a rede e um instalador automático de software. A maior parte do software no CPAN é software livre.", - "npm":"npm é um gerenciador de pacotes para o Node.JS", - "openairedatasets":[ - "rede europeia de repositórios, arquivos e revistas científicas de Acesso Aberto", - "wikidata" - ], - "openairepublications":[ - "openairedatasets:pt", - "ref" - ], - "openstreetmap":"OpenStreetMap (OSM) é um projeto de mapeamento colaborativo para criar um mapa livre e editável do mundo, inspirado por sites como a Wikipédia. Traduzindo para português o nome significa Mapa Aberto de Ruas. Ele fornece dados a centenas de sites na internet, aplicações de celular e outros dispositivos.", - "pinterest":"Pinterest é uma rede social de compartilhamento de fotos. Assemelha-se a um quadro de inspirações, onde os usuários podem compartilhar e gerenciar imagens temáticas, como de jogos, de hobbies, de roupas, de perfumes, de animes, etc. Cada usuário pode compartilhar suas imagens, recompartilhar as de outros utilizadores e colocá-las em suas coleções ou quadros (boards), além de poder comentar e realizar outras ações disponibilizadas pelo site. Para que os usuários possam interagir de uma forma mais ampla com outras comunidades, o site é afiliado com o Twitter e Facebook. Com fácil layout e rápido crescimento, tornou-se um novo meio de compartilhamento de imagens na internet. Foi eleito um dos melhores websites de 2011 pela revista Time.", - "piratebay":"The Pirate Bay é um índice online de conteúdo digital de mídia de entretenimento e software. Fundado em 2003 pelo think tank sueco Piratbyrån, o Pirate Bay permite que os visitantes pesquisem, baixem e contribuam com magnet links e arquivos torrent, que facilitam o compartilhamento de arquivos peer-to-peer entre os usuários do protocolo BitTorrent.", - "pubmed":"MEDLINE® é uma sigla em inglês para Sistema Online de Busca e Análise de Literatura Médica é a base de dados bibliográficos da Biblioteca Nacional de Medicina dos Estados Unidos da América. Contém mais de 18 milhões de referências a artigos de jornais científicos, com maior concentração em biomedicina, mas contém também artigos sobre enfermagem, veterinária, farmacologia, odontologia, entre outros. Uma característica marcante da MEDLINE é que os dados gravados no sistema são indexados com palavras-chave específicas de um sistema chamado MeSH.", - "pypi":"O Python Package Index, abreviado como PyPI e também conhecido como Cheese Shop, é o repositório de software oficial de terceiros para Python. É análogo ao CPAN, o repositório para Perl. Alguns gerenciadores de pacotes, incluindo o pip, usam o PyPI como a fonte padrão para os pacotes e suas dependências. Mais de 113.000 pacotes Python podem ser acessados por meio do PyPI.", - "qwant":"Qwant é um motor de busca desenvolvido pela empresa francesa de mesmo nome, que se anuncia com uma forte política de privacidade.", - "qwant news":[ - "qwant:pt", - "ref" - ], - "qwant images":[ - "qwant:pt", - "ref" - ], - "qwant videos":[ - "qwant:pt", - "ref" - ], - "reddit":"O Reddit é um agregador social de notícias ou um social bookmarks. O Reddit é dividido em várias comunidades chamadas de \"subreddits\". São nesses subreddits que reside o conteúdo do site. Há subreddits sobre política americana ou internacional, notícias, religião, ciência, filmes, livros, jogos eletrônicos, entre outros diferentes tópicos. Os usuários podem divulgar conteúdo da Internet como links, postagens, imagens e vídeos, e os usuários votam de forma positiva ou negativa nos conteúdos divulgados. Caso o conteúdo enviado para a comunidade receba muitos votos positivos, esse conteúdo fica no topo da página inicial do subreddit, podendo chegar na página inicial do próprio Reddit.", - "soundcloud":"SoundCloud é uma plataforma online de publicação de áudio utilizada por profissionais de música sediada em Berlim, Alemanha, fundada por Alexander Ljung e Eric Wahlforss em Agosto de 2007. Nela os músicos podem colaborar, compartilhar, promover e distribuir suas composições.", - "internetarchivescholar":"O Internet Archive Scholar é um navegador acadêmico criado pelo Internet Archive em 2020, possuia então cerca de 25 milhões de artigos científicos com livre acesso ao texto. O material é recolhido de três formas diferentes - conteúdo identificado pelo Wayback Machine, pela digitalização de material e o envio por parte de usuários e coleções de instituições parceiras.", - "semantic scholar":"Semantic Scholar é um mecanismo de busca de publicações acadêmicas por inteligência artificial desenvolvido pelo Allen Institute for Artificial Intelligence e lançado publicamente em novembro de 2015. Ele usa avanços recentes no processamento de linguagem natural para fornecer resumos de artigos acadêmicos.", - "startpage":"Startpage.com é um motor de busca baseado em Nova York e na Holanda. Fundado por David Bodnick em 1998, Startpage.com pertence a uma empresa holandesa, Surfboard Holding BV, que adquiriu a mesma no ano 2000.", - "unsplash":[ - "Imagens e fotos incríveis e gratuitas que você pode baixar e usar para qualquer projeto. Melhor que quaisquer fotos de stock ou royalty free.", - "https://unsplash.com" - ], - "youtube":"YouTube é uma plataforma de compartilhamento de vídeos com sede em San Bruno, Califórnia. O serviço foi criado por três ex-funcionários do PayPal - Chad Hurley, Steve Chen e Jawed Karim - em fevereiro de 2005. A Google comprou o site em novembro de 2006 por US$ 1,65 bilhão. Desde então o YouTube funciona como uma das subsidiárias da Google.", - "dailymotion":"Dailymotion é uma plataforma de compartilhamento de vídeos fundada em março de 2005 na França. Ela disponibiliza vídeos dos mais variados conteúdos aos seus usuários. É um dos mais acessados do mundo. De acordo com dados fornecidos em novembro de 2006, o serviço recebia cerca de dezesseis milhões de acessos e nove mil vídeos diariamente.", - "vimeo":"Vimeo é um site de compartilhamento de vídeo, no qual os usuários podem fazer upload, partilhar e ver vídeos. Foi fundada por Zach Klein e Jakob Lodwick em dezembro de 2004. O nome \"Vimeo\" foi criado pelo cofundador Jakob Lodwick e é um jogo das palavras \"video\", e \"me\" como uma referência a dedicação exclusiva do site para vídeos feitos por usuários, e também é um anagrama de \"movie\" (filme).", - "wikibooks":"Wikilivros é um projeto de código wiki da Fundação Wikimedia, tal como a Wikipédia, dedicado ao desenvolvimento colaborativo de textos didáticos de conteúdo livre.", - "wikinews":"Wikinews é um projeto de um repositório de notícias livre. Baseados no sistema \"wiki\", ele é um \"projeto-irmão\" da Wikipédia que visa objetivos similares. Isto é, alcançar a maior número de notícias possível.", - "wikiquote":"Wikiquote é um dos projetos da fundação Wikimedia baseados no sistema de gestão wiki e programa MediaWiki, em execução inicialmente em 2003 na Wikipédia uolofe, implementado por Brion Vibber, com o objetivo principal do projeto é produzir colaborativamente uma vasta referência de citações de pessoas proeminentes, livros, filmes e provérbios, e a dar detalhes a respeito deles. Ainda existem muitas coleções online de citações, porém o Wikiquote se distingue por proporcionar ao visitante uma oportunidade de contribuir. As páginas do Wikiquote são ligadas à páginas da Wikipédia sobre personalidades notáveis.", - "wikisource":"A Wikisource é um projeto colaborativo da fundação Wikimedia que reúne um conjunto de textos que possuam valor histórico-cultural e que sejam compatíveis com a Licença GNU de Documentação Livre (GFDL).", - "wikispecies":"Wikispecies é um projeto online, baseado no sistema wiki, sustentado pela Fundação Wikimedia que visa a criação de um catálogo de todas as espécies conhecidas até então. O projeto destina-se a cientistas, ao invés do público geral. Jimmy Wales, presidente emérito da Fundação Wikimedia, tem dito que os editores contribuintes não são requeridos por fax, conforme seus graus, mas sustenta que terá de passar por uma inspeção técnica com os editores. Wikispecies está somente disponível sob a GNU Free Documentation License.", - "wiktionary":"Wikcionário é um projeto web multílingue pertencente à Fundação Wikimedia com a finalidade de criar um dicionário eletrônico de conteúdo livre, disponível em mais de 172 línguas diferentes. Ao contrário do padrão normal de dicionários, este é escrito colaborativamente por voluntários que usam o software wiki, permitindo que os artigos possam ser alterados e modificados por quase todas as pessoas de acesso ao site.", - "wikiversity":"Wikiversidade é um projeto da Wikimedia Foundation independente. Após vários meses de ter estado como proposta, Jimmy Wales, durante a Wikimania de 2006, anunciou a aprovação de tal projeto em fase de desenvolvimento, que tem como meta ser um ambiente livre e aberto para educação em todos os níveis mediada pela web e estudos gerais em uma comunidade de pesquisa.", - "wikivoyage":"Wikivoyage é um guia de viagens livre, parte da Wikimedia, s da construção colaborativa feita por voluntários, sob os mesmos princípios da Wikipédia. O nome é uma mistura das palavras wiki e Voyage, a palavra francesa para viagem.", - "wikicommons.images":"O Wikimedia Commons é um projeto multilinguístico mantido pela Fundação Wikimedia com o objetivo de ser um repositório central de imagens e outros tipos de multimídia livre, lançado em 7 de setembro de 2004, para serem utilizados por todos os projetos irmãos.", - "wolframalpha":"Wolfram|Alpha é um mecanismo de conhecimento computacional(computational knowledge engine, em inglês) desenvolvido pela Wolfram Research. É um serviço on-line que responde às perguntas diretamente, mediante o processamento da resposta extraída de base de dados estruturados, em lugar de proporcionar uma lista dos documentos ou páginas web que poderiam conter a resposta, tal como faziam os mecanismos de busca.", - "dictzone":[ - "Dicionários online: Inglês, Espanhol, Alemão, Francês, Italiano, Húngaro... Selecione seu dicionário favorito!", - "https://dictzone.com/" - ], - "1337x":"1337x é um site, fundado em 2007, que fornece arquivos torrent e links magnéticos para facilitar o compartilhamento de arquivos ponto-a-ponto usando o protocolo BitTorrent.", - "naver":"Naver é um popular portal de busca da Coreia do Sul, com um market share superior a 70%, comparado com 2% do Google. O Naver foi lançado em junho de 1999 por ex-funcionários da Samsung, e estreou como o primeiro portal da Coreia do Sul a usar seu próprio motor de busca. Entre os recursos do Naver está a \"Comprehensive Search\", lançada em 2000, que fornece resultados de várias categorias em uma única página. Desde então, tem agregado novos serviços, como a \"Knowledge Search\", lançada em 2002. Ele também oferece serviços de Internet, incluindo um serviço de notícias, um serviço de e-mail, um serviço de busca de teses acadêmicas e um portal para crianças. Em 2005, Naver lançou Happybean, o primeiro portal de doações online do mundo, que permite aos usuários encontrar informações e fazer doações para mais de 20.000 organizações da sociedade civil e de assistência social.", - "rubygems":"RubyGems é um gerenciador de pacotes para a linguagem de programação Ruby que provê um formato padrão para a distribuição de programas Ruby e bibliotecas em um formato auto-suficiente chamado de gem, uma ferramenta projetada para gerenciar facilmente a instalação de gems, e um servidor para distribui-los. RubyGems foi criado em volta de novembro de 2003 e agora faz parte da biblioteca padrão do Ruby versão 1.9 a diante.", - "peertube":"PeerTube é uma plataforma de vídeo livre, descentralizada e federada operada por ActivityPub e WebTorrent que usa a tecnologia peer-to-peer para reduzir o estresse em servidores individuais ao assistir vídeos.", - "rumble":"Rumble é uma plataforma de compartilhamento de vídeo canadense com sede em Toronto. O serviço foi fundado em 2013 por Chris Pavlovski, um empresário de tecnologia do Canadá. A contagem mensal de usuários do Rumble experimentou um rápido crescimento desde julho de 2020, houve um salto de 1,6 milhões de usuários mensais para 31,9 milhões no final do primeiro trimestre de 2021.", - "wttr.in":[ - "Previsão do tempo para: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave é um navegador web livre e de código aberto desenvolvido pela Brave Software, Inc. O navegador é atualmente o único que adota o modelo de negócio pay-to-surf, bloqueando anúncios e rastreadores de sites. O navegador, que é baseado no navegador web Chromium, recompensa seus usuários por utilizá-lo, fazendo o pagamento através da criptomoeda BAT.", - "brave.images":[ - "brave:pt", - "ref" - ], - "brave.videos":[ - "brave:pt", - "ref" - ], - "brave.news":[ - "brave:pt", - "ref" - ], - "goo":"goo é um portal e motor de busca da internet sediado no Japão, que organiza e indexa principalmente sites de língua japonesa. goo é operado pela japonesa NTT Resonant, uma subsidiária da NTT Communications." - }, - "pt-BR":{ - "9gag":[ - "9gag:pt", - "ref" - ], - "annas archive":[ - "annas archive:pt", - "ref" - ], - "apple app store":[ - "apple app store:pt", - "ref" - ], - "artic":[ - "artic:pt", - "ref" - ], - "arxiv":[ - "arxiv:pt", - "ref" - ], - "bandcamp":[ - "bandcamp:pt", - "ref" - ], - "wikipedia":[ - "wikipedia:pt", - "ref" - ], - "bing":[ - "bing:pt", - "ref" - ], - "bing images":[ - "bing:pt", - "ref" - ], - "bing news":[ - "bing news:pt", - "ref" - ], - "bing videos":[ - "bing videos:pt", - "ref" - ], - "bitbucket":[ - "bitbucket:pt", - "ref" - ], - "btdigg":[ - "btdigg:pt", - "ref" - ], - "currency":[ - "currency:pt", - "ref" - ], - "deezer":[ - "deezer:pt", - "ref" - ], - "deviantart":[ - "deviantart:pt", - "ref" - ], - "ddg definitions":[ - "currency:pt", - "ref" - ], - "erowid":[ - "erowid:pt", - "ref" - ], - "wikidata":[ - "wikidata:pt", - "ref" - ], - "duckduckgo":[ - "currency:pt", - "ref" - ], - "duckduckgo images":[ - "currency:pt", - "ref" - ], - "duckduckgo videos":[ - "currency:pt", - "ref" - ], - "duckduckgo news":[ - "currency:pt", - "ref" - ], - "duckduckgo weather":[ - "currency:pt", - "ref" - ], - "apple maps":[ - "apple maps:pt", - "ref" - ], - "emojipedia":[ - "emojipedia:pt", - "ref" - ], - "tineye":[ - "tineye:pt", - "ref" - ], - "etymonline":[ - "etymonline:pt", - "ref" - ], - "fdroid":[ - "fdroid:pt", - "ref" - ], - "flickr":[ - "flickr:pt", - "ref" - ], - "genius":[ - "genius:pt", - "ref" - ], - "gentoo":[ - "gentoo:pt", - "ref" - ], - "gitlab":[ - "gitlab:pt", - "ref" - ], - "github":[ - "github:pt", - "ref" - ], - "google":[ - "google:pt", - "ref" - ], - "google images":[ - "google images:pt", - "ref" - ], - "google news":[ - "google news:pt", - "ref" - ], - "google videos":[ - "google videos:pt", - "ref" - ], - "google scholar":[ - "google scholar:pt", - "ref" - ], - "google play apps":[ - "google play apps:pt", - "ref" - ], - "google play movies":[ - "google play apps:pt", - "ref" - ], - "hackernews":[ - "hackernews:pt", - "ref" - ], - "hoogle":[ - "hoogle:pt", - "ref" - ], - "imdb":[ - "imdb:pt", - "ref" - ], - "imgur":[ - "imgur:pt", - "ref" - ], - "ina":[ - "ina:pt", - "ref" - ], - "kickass":[ - "kickass:pt", - "ref" - ], - "lemmy communities":[ - "lemmy communities:pt", - "ref" - ], - "lemmy users":[ - "lemmy communities:pt", - "ref" - ], - "lemmy posts":[ - "lemmy communities:pt", - "ref" - ], - "lemmy comments":[ - "lemmy communities:pt", - "ref" - ], - "library genesis":[ - "library genesis:pt", - "ref" - ], - "z-library":[ - "z-library:pt", - "ref" - ], - "library of congress":[ - "library of congress:pt", - "ref" - ], - "mastodon users":[ - "mastodon users:pt", - "ref" - ], - "mastodon hashtags":[ - "mastodon users:pt", - "ref" - ], - "metacpan":[ - "metacpan:pt", - "ref" - ], - "npm":[ - "npm:pt", - "ref" - ], - "openairedatasets":[ - "openairedatasets:pt", - "ref" - ], - "openairepublications":[ - "openairedatasets:pt", - "ref" - ], - "openstreetmap":[ - "openstreetmap:pt", - "ref" - ], - "pinterest":[ - "pinterest:pt", - "ref" - ], - "piratebay":[ - "piratebay:pt", - "ref" - ], - "pubmed":[ - "pubmed:pt", - "ref" - ], - "pypi":[ - "pypi:pt", - "ref" - ], - "qwant":[ - "qwant:pt", - "ref" - ], - "qwant news":[ - "qwant:pt", - "ref" - ], - "qwant images":[ - "qwant:pt", - "ref" - ], - "qwant videos":[ - "qwant:pt", - "ref" - ], - "reddit":[ - "reddit:pt", - "ref" - ], - "soundcloud":[ - "soundcloud:pt", - "ref" - ], - "internetarchivescholar":[ - "internetarchivescholar:pt", - "ref" - ], - "semantic scholar":[ - "semantic scholar:pt", - "ref" - ], - "startpage":[ - "startpage:pt", - "ref" - ], - "youtube":[ - "youtube:pt", - "ref" - ], - "dailymotion":[ - "dailymotion:pt", - "ref" - ], - "vimeo":[ - "vimeo:pt", - "ref" - ], - "wikibooks":[ - "wikibooks:pt", - "ref" - ], - "wikinews":[ - "wikinews:pt", - "ref" - ], - "wikiquote":[ - "wikiquote:pt", - "ref" - ], - "wikisource":[ - "wikisource:pt", - "ref" - ], - "wikispecies":[ - "wikispecies:pt", - "ref" - ], - "wiktionary":[ - "wiktionary:pt", - "ref" - ], - "wikiversity":[ - "wikiversity:pt", - "ref" - ], - "wikivoyage":[ - "wikivoyage:pt", - "ref" - ], - "wikicommons.images":[ - "wikicommons.images:pt", - "ref" - ], - "wolframalpha":[ - "wolframalpha:pt", - "ref" - ], - "1337x":[ - "1337x:pt", - "ref" - ], - "naver":[ - "naver:pt", - "ref" - ], - "rubygems":[ - "rubygems:pt", - "ref" - ], - "peertube":[ - "peertube:pt", - "ref" - ], - "rumble":[ - "rumble:pt", - "ref" - ], - "brave":[ - "brave:pt", - "ref" - ], - "brave.images":[ - "brave:pt", - "ref" - ], - "brave.videos":[ - "brave:pt", - "ref" - ], - "brave.news":[ - "brave:pt", - "ref" - ], - "goo":[ - "goo:pt", - "ref" - ] - }, - "ro":{ - "apple app store":"App Store este un serviciu Apple care constă într-un magazin online de aplicații pentru sistemul de operare iOS. Acesta este disponibil pe internet, prin aplicația cu același nume sau prin iTunes pe PC și MAC.", - "artic":"Art Institute of Chicago este un muzeu de artă, care a luat ființă în anul 1866, iar din anul 1868 a devenit o școală superioară de arte din Chicago, Illinois, SUA. Institutul de arte a luat naștere ca urmare a inițiativei cetățenilor înstăriți ai orașului, care au donat bani și colecțiile lor de picturi, printre aceștia se numără Arthur Jerome Eddy, Bertha Honoré Palmer și Martin Antoine Ryerson. Prima clădire a institutului se afla pe South Michigan Avenue și a fost proiectată de arhitecții Shepley, Rutan și Coolide, aici având loc în anul 1893 o expoziția internațională World Columbian Exposition. Actual institutul se află în parcul Grant Park, districtul Historic Michigan Boulevard District. Este muzeu de artă universală, aici sunt păstrate peste 300.000 de opere de artă care provin dintr-o perioadă de cinci secole.", - "arxiv":"ArXiv este o bază de date de preprinturi de actualitate stringentă din toate domeniile fizicii, matematicii, științelor nelineare, biologiei, științelor de calcul numeric. Este gestionată de Laboratorul Național al Statelor Unite ale Americii de la Los Alamos. Adresa web a bazei de date estehttp://xxx.lanl.gov.", - "wikipedia":"Wikipedia este o enciclopedie generală, disponibilă pe Internet în mai multe limbi, având conținut ce poate fi utilizat liber și dezvoltat de oricine. Este dezvoltată prin colaborarea voluntară a unui mare număr de persoane și administrată de fundația non-profit Wikimedia. Face parte din fenomenul numit Web 2.0.", - "bing":"Bing este un motor de căutare creat de Microsoft care permite căutarea de pagini web, știri, produse și imagini. A fost cunoscut anterior sub denumirile Live Search, Windows Live Search și MSN Search. Pe vremea când se numea MSN Search mai puteau fi căutate grupuri sau articole pe enciclopedia Microsoft, Encarta.", - "bing images":[ - "bing:ro", - "ref" - ], - "bing news":[ - "Știri din surse internaționale, naționale și locale, organizate pentru a vă oferi o acoperire detaliată a subiectelor din sport, divertisment, afaceri, politică, meteo și altele.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Căutarea inteligentă de la Bing facilitează găsirea rapidă a lucrurilor pe care le căutați și vă premiază.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket este un serviciu de găzduire a unui depozit de control al versiunilor web, deținut de Atlassian, pentru proiecte de cod sursă și dezvoltare care utilizează sisteme de control de revizuire Mercurial sau Git. Bitbucket oferă atât planuri comerciale, cât și conturi gratuite.", - "currency":"DuckDuckGo este un motor de căutare pe internet care pune accentul pe protejarea confidențialității utilizatorilor. DuckDuckGo se distinge de alte motoare de căutare prin faptul că nu își profilează utilizatorii și arată tuturor utilizatorilor aceleași rezultate ale căutării pentru un anumit termen de căutare.", - "deezer":"Deezer este o platformă de distribuire audio care permite utilizatorilor să asculte conținut muzical pe mai multe tipuri de dispozitive, atât online, cât și offline.", - "deviantart":"DeviantArt este o comunitate online ce prezintă diverse forme de lucrări de artă. Site-ul reprezintă un popular portal și rețea de socializare pentru fotografi, ilustratori, pictori și scriitori. Web site-ul a fost lansat pe 7 august 2000 de Scott Jarkoff, Matthew Stephens, Angelo Sotira și alții. Sediul DeviantArt, Inc. este în Hollywood, Los Angeles, California, SUA.", - "ddg definitions":[ - "currency:ro", - "ref" - ], - "wikidata":"Wikidata este o bază de cunoștințe editată colaborativ și operată de Wikimedia Foundation. Este prevăzută a fi un loc comun pentru un anumit tip de date care pot fi utilizate de proiecte Wikimedia, cum ar fi Wikipedia. Ea este relativ similară cu Wikimedia Commons după modul în care oferă stocare de date pentru toate proiectele Wikimedia. Wikidata rulează pe software-ul Wikibase.", - "duckduckgo":[ - "currency:ro", - "ref" - ], - "duckduckgo images":[ - "currency:ro", - "ref" - ], - "duckduckgo videos":[ - "currency:ro", - "ref" - ], - "duckduckgo news":[ - "currency:ro", - "ref" - ], - "duckduckgo weather":[ - "currency:ro", - "ref" - ], - "fdroid":"F-Droid este un software repository pentru aplicații Android, similar cu Google Play store. Principalul depozit, găzduit de proiect, conține numai aplicații care sunt software liber. Aplicațiile pot fi listate și instalate de pe F-Droid-ul sau din aplicația client fără a fi nevoie înregistrarea cu un cont. \"Anti-caracteristici\", cum ar fi publicitate, urmărirea utilizatorilor sau dependența de software-ul non liber sunt marcate în descrierea aplicației. Site-ul oferă, de asemenea, codul sursă al aplicațiilor si găzduiește precum și software-ul care rulează pe F-Droid server, permițând oricui să-și înființeze propria aplicație depozit.", - "flickr":"Flickr este un serviciu destinat pentru depozitare și utilizare ulterioară de către utilizator a fotografiilor digitale și a clipurilor video. Este unul dintre primele servicii Web 2.0 și unul dintre cele mai populare site-uri printre bloggeri pentru a posta fotografii. Începând cu 4 august 2011 serviciul conține peste 6 miliarde de imagini încărcate de către utilizatorii săi.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub este un serviciu de găzduire web pentru proiecte de dezvoltare a software-ului care utilizează sistemul de control al versiunilor Git. GitHub oferă planuri tarifare pentru depozite private, și conturi gratuite pentru proiecte open source. Site-ul a fost lansat în 2008 de către Tom Preston-Werner, Chris Wanstrath, și PJ Hyett. În 2018 Microsoft a cumpărat Github pentru 7.5 miliarde de dolari.", - "google":"Google sau Google Web Search este un motor de căutare pe Internet al companiei americane Google Inc., fondată în 15 septembrie 1997 de către doi doctoranzi de la Universitatea Stanford, Larry Page și Sergey Brin. Motorul de căutare oferă o metodă simplă și rapidă de găsire a informațiilor din web, în 124 de limbi, având o bază de date cu peste 25 de miliarde de pagini de situri web. Statisticile indică faptul că peste 80% din căutările pe Internet sunt efectuate prin motorul de căutare Google, acesta aflându-se pe primul loc în preferința consumatorilor.", - "google images":"Google Images este un serviciu de căutare deținut de Google Inc. care a fost introdus în iulie 2001, și care permite utilizatorilor să caute în Web imaginile conținute de acesta.", - "google news":"Google News este un program prezentator de știri gratuit, oferit și operat de către Google Inc, selectând cele mai interesane date informative provenite de la mii de publicații, prin mijlocirea unui algoritm automat propriu de colectare.", - "google scholar":"Academic Google sau Google Scholar este un motor de căutare disponibil gratuit, care oferă căutare de tip text-integral de publicații științifice în toate formatele și disciplinele. Sistemul funcționează din noiembrie 2004, inițial în starea beta. Indexul Google Scholar include cele mai multe reviste on-line din Europa și America a celor mai mari publicații științifice. Este asemănător în funcționare cu Elsevier, CiteSeerX și cu getCITEDun. De asemenea, el este asemănător cu alte instrumente, bazate pe un abonament plătit, cum ar fi în Elsevier Scopus și Thomson ISI de Web of Science. Sloganul - „Stați pe umeri de giganți” - este luat dintr-un citat enunțat de către fizicianul Isaac Newton și este un semn pentru oamenii de știință care au activat de-a lungul secolelor, oferind o bază pentru noi realizări intelectuale.", - "google play apps":"|image2= |caption2= |label10=Autor inițial |data10= |label11=Dezvoltator |data11=Google |label12=Versiune inițială |data12=cea din 23 octombrie 2008 |label13=Ultima versiune |data13=22.7.11 |label14=Preversiune |data14= |label15=Lansarea anterioară |data15= |label16 = Repo | data16 = |label18=Stare de dezvoltare |data18=activă |label19=Scris în |data19= |label20=Sistem de operare |data20=Android |label21=Platformă |data21= |label22=Disponibil în |data22= |label23=Disponibil în română |data23=da |label24=Mărime |data24= |label25=Tip |data25=magazin de aplicații |label26=Licență |data26= |label27=Poziție Alexa |data27= |header30=Prezență online |data31=site web oficialblog oficialpagină Facebookcont TwitterGoogle+Instagramcanal YouTube |doc=Infocaseta Software |wikidata=y }}", - "google play movies":[ - "google play apps:ro", - "ref" - ], - "hoogle":"Haskell este un limbaj de programare funcțională. Poartă numele lui Curry Haskell.", - "imdb":"Internet Movie Database (IMDb) este o bază de date pe internet, cu informații despre filme, cineaști și jocuri video, cu pagini detaliate și structurate despre fiecare.", - "imgur":"Imgur este un serviciu online de găzduire a imaginilor fondat de către Alan Schaaf în 2009 în Athens, Ohio. El oferă găzduire de imagini pentru milioane de utilizatori cu posibilitate de comentare a imaginilor. De asemenea, din octombrie 2012, pe site pot fi încărcate sau create galerii de imagini. Compania se întreține prin venitul generat din reclame, conturi Pro și găzduire comercială.", - "kickass":"KickassTorrents a fost un website de indexare a fișierelor torrent (BitTorrent) și magnet. A fost fondat în 2008, iar din noiembrie 2014 era cel mai vizitat website de indexare a fișierelor torrent din lume, conform Alexa.", - "library of congress":"Biblioteca Congresului Statelor Unite ale Americii este biblioteca publică cea mai mare și importantă, fiind de fapt biblioteca națională a Statelor Unite ale Americii.", - "openstreetmap":"OpenStreetMap este un proiect colectiv, în regim open source, ce are ca scop construirea unei baze de date geografice globale cum ar fi atlasele rutiere, folosind atât date introduse manual având ca fundal imagini spațiale, cât și date colectate de pe dispozitive GPS.", - "pinterest":"Pinterest, Inc. este o societate de social media și o companie de aplicații mobile. Pinterest este un startup care operează un sistem software conceput să descopere informații pe World Wide Web folosind imagini și, la o scară mai mică, GIF-uri și clipuri video. Pentru utilizare, este necesară înregistrarea. Site-ul a fost fondat de Ben Silbermann, Paul Sciarra și Evan Sharp. Pinterest a ajuns la 250 milioane de utilizatori activi lunar începând din octombrie 2018.", - "piratebay":"The Pirate Bay este un website suedez de indexare a fișierelor torrent (BitTorrent) și magnet. Site-ul a fost creat în 2003 de către Gottfrid Svartholm, Fredrik Neij și Peter Sunde. Site-ul Pirate Bay apare în acte ca fiind în Seychelles și este o țintă a autorităților americane din 2011. Biroul de Comerț al Statelor Unite l-a desemnat ca fiind printre site-urile cele mai populare pentru descărcatul ilegal al fișierelor. Deoarece site-ul nu folosește serverele sale pentru a stoca filme și muzică piratată, Pirate Bay a supraviețuit la numeroase încercări de a fi oprit. Site-ul folosește o aplicație externă pentru ca utilizatorii să încarce și să descarce filme, fiind o procedură mai complicată la încărcare.", - "reddit":"Reddit este un site web de divertisment, rețea de socializare și agregator de știri, unde membrii înregistrați ai comunității pot plasa conținut, cum ar fi postări textuale sau legături directe. Utilizatorii înregistrați pot vota postările. Postările sunt organizate după domeniul de interes, în așa-numitele subreddit-uri. Subreddit-urile au tematici diverse, cum ar fi știri, jocuri, filme, muzică, cărți, fitness, alimente și partajarea imaginilor. Trimiterile cu mai multe voturi în sus apar în partea de sus a subreditului lor și, dacă primesc suficiente voturi, în cele din urmă apar pe prima pagină a site-ului. În ciuda unor reguli stricte care interzic hărțuirea, administratorii Reddit-ului cheltuiesc resurse considerabile pentru moderarea site-ului.", - "soundcloud":"SoundCloud este o platformă de distribuire audio online unde utilizatorii pot colabora, promova și distribui proiecte muzicale originale. În luna iulie a anului 2013, pe acest site erau înregistrați circa 40 de milioane de utilizatori 200 de milioane de ascultători. Sediul central se află în Berlin, Germania.", - "youtube":"YouTube este un Site Web unde utilizatorii pot încărca și viziona materiale audio-video. YouTube a fost creat în februarie 2005 de Chad Hurley, Steve Chen și Jawed Karim. Serviciul cu sediul în San Bruno, California, folosește tehnologia Adobe Flash Player pentru a expune o gamă largă de clipuri video create chiar de utilizatori, incluzând și fragmente din programe de televiziune sau din filme. YouTube face parte din Web 2.0.", - "dailymotion":"Dailymotion este o pagină de internet unde utilizatorii pot încărca și vizualiza videoclipuri. Site-ul a fost înființat în 2005 de către doi francezi, Benjamin Bejbaum și Olivier Poitrey. Principalul concurent al site-ului este YouTube. În anul 2010, site-ul al avut o cifră de afaceri de 18 milioane de euro, comparativ cu cele 300 de milioane de euro înregistrate de YouTube.", - "vimeo":"Vimeo este un site web ce oferă servicii de video hosting, unde utilizatorii pot încărca, distribui și viziona clipuri video. El a fost fondat de Jake Lodwick și Zach Klein în noiembrie 2004. Ei au părăsit compania în 2007 și 2008 respectiv. Denumirea Vimeo a fost creată de Lodwick și este un joc de cuvinte între video, inserând cuvântul \"me\", ca referință la faptul că site-ul e dedicat clipurilor video realizate de utilizatori, denumirea de asemenea este o anagramă cuvântului \"movie\" (română:film).", - "wikibooks":"Wikimanuale, este un wiki destinat creării de manuale cu conținut liber. Este un proiect al Fundației Wikimedia.", - "wikinews":"Wikiștiri este o sursă liberă de știri. Ediția în limba română a fost lansată în 19 ianuarie 2005 și de atunci sunt aproape 1000 de articole scrise.", - "wikiquote":"Wikicitat este o sursă liberă de citate. Ediția în limba română a fost lansată în 2004 și de atunci sunt peste 250 pagini de citate scrise.", - "wikisource":"Wikisursa este un depozit de texte originale scrise în orice limbă și aflate fie în domeniul public, fie sub o licență liberă compatibilă cu licența GFDL. Acest sit este un proiect multilingv și face parte din Fundația Wikimedia alături de alte proiecte precum Wikipedia, ce își propune să realizeze o enciclopedie cu un conținut liber.", - "wikispecies":"Wikispecies este un wikiproiect online al Wikimedia Foundation, care își propune să creeze un catalog de specii liber și comprehensiv. Wikispecies este disponibil sub licențele GNU Free Documentation License și CC-BY-SA 3.0.", - "wiktionary":"Wiktionary sau Wikționar este un proiect-frate al Wikipediei ce își propune să creeze un dicționar wiki liber în fiecare limbă. Ideea aparține lui Daniel Alston. Versiunea în limba engleză și-a început dezvoltarea pe 12 decembrie 2002. Wikționarul este etimologic: „wik”, de la Wikipedia, „ționar” de la Dicționar.", - "wikiversity":"Wikiversity este un proiect online al Wikimedia Foundation, care își propune să creeze o bază de date cu materiale necesare studiului.", - "wikivoyage":"Wikivoyage este un wiki destinat creării de ghiduri turistice cu conținut liber. Este un proiect al Fundației Wikimedia. Până în prezent, există versiuni ale acestui proiect în limbile engleză, olandeză, franceză, germană, ebraică, italiană, poloneză, portugheză, română, rusă, spaniolă, suedeză, ucraineană.", - "wikicommons.images":"Wikimedia Commons este o arhivă centralizată pentru imagini, muzică, clipuri muzicale și, posibil, texte și texte audio folosite în paginile oricărui proiect Wikimedia. A fost lansat la 7 septembrie 2004.", - "wolframalpha":"Wolfram Alpha este un motor de căutare computațional dezvoltat de Wolfram Research. Acest serviciu online oferă răspunsuri la întrebări factuale și nu o listă de link-uri așa cum oferă motoarele de căutare obișnuite.", - "dictzone":[ - "DictZone dicţionare online: franceză-maghiare, germană-maghiare...", - "https://dictzone.com/" - ], - "yacy":"|image2= |caption2= |label10=Autor inițial |data10=Michael Christen |label11=Dezvoltator |data11=Comunitatea YaCy |label12=Versiune inițială |data12= |label13=Ultima versiune |data13=1.924 |label14=Preversiune |data14= |label15=Lansarea anterioară |data15= |label16 = Repo | data16 = github.com/yacy/yacy search server |label18=Stare de dezvoltare |data18= |label19=Scris în |data19=Java |label20=Sistem de operare |data20= |label21=Platformă |data21= Java Virtual Machine[*] |label22=Disponibil în |data22= |label23=Disponibil în română |data23= |label24=Mărime |data24= |label25=Tip |data25= |label26=Licență |data26= GNU General Public License, version 2.0 or later[*] |label27=Poziție Alexa |data27= |header30=Prezență online |data31=www.yacy.net/en |doc=Infocaseta Software |wikidata=y }} YaCy este un motor de căutare distribuit, gratuit, construit pe principiile rețelelor peer-to-peer. Codul sursă este scris în Java, distribuit pe câteva sute de computere, așa-numiții YaCy-peers. Fiecare YaCy-peer străbate internetul, analizează, indexează rezultatele și salvează rezultatele indexate într-o bază de date comună, care este împărțită cu ceilalți YaCy-peers folosind principiile rețelelor P2P.", - "yacy images":[ - "yacy:ro", - "ref" - ], - "brave":"|label27=Poziție Alexa |data27= |header30=Prezență online |data31=Brave.com |doc=Infocaseta Software |wikidata=y }}Brave este un browser web gratuit și open-source dezvoltat de Brave Software, Inc. pe baza browserului web Chromium. Blochează anunțurile și cookie-urile site-urilor web și oferă utilizatorilor o modalitate de a trimite criptomonede sub formă de jetoane către site-uri web înregistrate și creatori de conținut.", - "brave.images":[ - "brave:ro", - "ref" - ], - "brave.videos":[ - "brave:ro", - "ref" - ], - "brave.news":[ - "brave:ro", - "ref" - ] - }, - "ru":{ - "9gag":"9GAG — интернет-платформа и социальная сеть. Пользователи загружают и делятся контентом, сделанным ими лично или взятым с других сайтов. Офис 9GAG находится в Маунтин-Вью. Со дня основания, 12 апреля 2008, и до сегодняшнего дня сайт сильно вырос и заполучил больше 34 миллионов лайков в Фейсбуке, 8 миллионов читателей в Твиттере и 46 миллионов подписчиков в Инстаграме. Он является одним из самых успешных сайтов, входя в Топ-200 веб-сайтов и его стоимость примерно составляет 56 млн долларов США.", - "apple app store":"App Store — магазин приложений, раздел онлайн-магазина iTunes Store, содержащий различные приложения для мобильных смартфонов iPhone, плееров iPod Touch и планшетов iPad, а также для персональных компьютеров Mac и ноутбуков MacBook позволяющий их купить либо скачать бесплатно.", - "artic":"Чикагский институт искусств — художественный музей и высшее учебное заведение в Чикаго, штат Иллинойс в США. Основные учебные специализации — архитектура и изобразительное искусство.", - "arxiv":"arXiv.org — электронный архив с открытым доступом для научных статей и препринтов по физике, математике, астрономии, информатике, биологии, электротехнике, статистике, финансовой математике и экономике. Перед публикацией статьи не рецензируются, однако проходят первичную проверку модераторов.", - "bandcamp":"Bandcamp — американская частная компания, основанная в 2007 году Этаном Даймондом и Шоном Грёнбергером, бывшими сооснователями сервиса Oddpost, вместе с программистами Джо Холтом и Нилом Такером.", - "wikipedia":"Википе́дия — общедоступная многоязычная универсальная интернет-энциклопедия со свободным контентом, реализованная на принципах вики.", - "bilibili":[ - "китайский сайт", - "wikidata" - ], - "bing":"Bing — поисковая система, разработанная международной корпорацией Microsoft. Bing была представлена генеральным директором Microsoft Стивом Балмером. Ранее имела следующие наименования и адреса:MSN Search (http://search.msn.com/) — с момента появления в 1998 году и до 11 сентября 2006 года; Windows Live Search (http://search.live.com/) — до 21 марта 2007 года; Live Search (http://www.live.com/) — до 1 июня 2009 года.", - "bing images":[ - "bing:ru", - "ref" - ], - "bing news":[ - "Упорядочение каналов новостей мирового масштаба, вашей страны, а также местных каналов для получения детального обзора новостей спорта, шоу-бизнеса, деловых новостей, политики, погоды и много другого.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Интеллектуальный поиск Bing позволяет быстро найти нужную информацию, получая при этом вознаграждение.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket — веб-сервис для хостинга проектов и их совместной разработки, основанный на системах контроля версий Mercurial и Git. По назначению и основным предлагаемым функциям аналогичен GitHub, от которого отличается с одной стороны меньшей пользовательской базой, а с другой, имеет определённые преимущества в плане размещения непубличных репозиториев — возможностью их бесплатного хостинга с ограничением на размер команды не более пяти человек и меньшей арендной платой при большем размере команды, а также управление правами доступа на уровне отдельных ветвей проекта. Если основные преимущества GitHub лежат в области социализации программирования, Bitbucket больше ориентирован на небольшие закрытые команды разработчиков. Слоган сервиса — «Bitbucket is the Git solution for professional teams».", - "crossref":"Crossref — официальное агентство регистрации Цифровых Идентификаторов Объекта (DOI) международного DOI фонда. Оно объединяет издателей академических публикаций и создано в 2000 для создания системы персистентных библиографических ссылок в статьях.", - "curlie":[ - "каталог Интернета, редактируемый людьми", - "wikidata" - ], - "currency":"DuckDuckGo — поисковая система, придающая особое значение обеспечению конфиденциальности пользователей и отказу от «пузыря фильтров» персонализированных результатов поиска. DuckDuckGo также уделяет особое внимание выдаче наилучших результатов, а не наибольшего их количества, и генерирует результаты, используя более 400 источников, включая ключевые краудсорсинговые сайты, такие как Википедия, а также другие поисковые системы, среди которых Bing, Yahoo! и Yummly.", - "deezer":"Deezer — французский интернет-сервис потоковой передачи музыки. Позволяет прослушивать музыкальные композиции разных лейблов звукозаписи, включая Universal Music Group, Sony Music и Warner Music Group, на различных устройствах в режиме онлайн или офлайн. В настоящее время в базе сервиса находятся более 90 миллионов музыкальных композиций и 34 000 радиостанций. Сервис насчитывает свыше 14 миллионов активных пользователей в месяц и 7 миллионов платных подписчиков.", - "deviantart":"DeviantArt — коммерческая онлайн-галерея и сообщество художников общего типа. DeviantART — популярный портал для фотографов, иллюстраторов и писателей, а также социальная сеть художников.", - "ddg definitions":[ - "currency:ru", - "ref" - ], - "erowid":"Erowid — некоммерческая общеобразовательная организация, зарегистрированная в Калифорнии, США, расположенная в Северной Калифорнии, собирающая и предоставляющая информацию о растениях и химических веществах, воздействующих на психику человека, а также действиях, способных вызвать изменённые состояния сознания, такие как медитации и осознанные сновидения. Деятельность организации является воплощением на практике посредством интернета стратегии «снижения вреда».", - "wikidata":"«Викида́нные» — совместно редактируемая база знаний, созданная Фондом Викимедиа. Используется для обеспечения централизованного хранения данных, которые могут использоваться в других проектах, в том числе в статьях Википедии — например, интервики-ссылок, значков статусных статей и списков или статистической информации: дат рождения, численности населения и т. п. Содержимое Викиданных распространяется по лицензии Creative Commons CC0.", - "duckduckgo":[ - "currency:ru", - "ref" - ], - "duckduckgo images":[ - "currency:ru", - "ref" - ], - "duckduckgo videos":[ - "currency:ru", - "ref" - ], - "duckduckgo news":[ - "currency:ru", - "ref" - ], - "duckduckgo weather":[ - "currency:ru", - "ref" - ], - "apple maps":"Карты Apple — картографический сервис от компании Apple для операционных систем iOS и macOS.", - "tineye":"TinEye — поисковая система, специализирующаяся на поиске изображений в Интернете.", - "fdroid":"F-Droid — каталог приложений для операционной системы Android. Главный репозиторий проекта содержит только свободное программное обеспечение. Поддерживается также работа со сторонними репозиториями, которые можно добавить путём указания их URL. Приложения могут быть просмотрены и установлены таким же образом как в Google Play: через веб-сайт или из самого приложения F-Droid, но без необходимости регистрации учётной записи. Для добавления приложений в официальный репозиторий проекта требуется предоставить исходный код. Для установки F-Droid требуется скачать установочный apk-файл с официального сайта и разрешить в настройках установку сторонних пакетов. Отсутствует в Google Play из-за ограничительного со стороны Google условия на размещение конкурирующих каталогов приложений. Установлен по умолчанию в мобильной операционной системе Replicant, рекомендованной Free Software Foundation.", - "flickr":"Flickr — фотохостинг, предназначенный для хранения и дальнейшего использования пользователем цифровых фотографий и видеороликов. Является одним из первых сервисов Web 2.0. Один из самых популярных сайтов для размещения фотографий. По состоянию на 4 августа 2011 года сервис имел в своей базе более 6 млрд изображений, загруженных его пользователями. Также, по данным за август 2011 года, на сервисе было зарегистрировано 51 миллион человек, а общая посещаемость составляла 80 миллионов уникальных пользователей.", - "free software directory":"Free Software Directory — каталог свободного программного обеспечения Free Software Foundation (FSF) и ЮНЕСКО.", - "genius":"Genius — американский сайт, основанный в августе 2009 года Томом Леман, Иланом Зекан и Махбодом Могадам, позволяющий пользователям предоставлять аннотации и интерпретации текстов песен, новости, источники, стихи, документы.", - "gentoo":[ - "Gentoo Wiki", - "https://wiki.gentoo.org/" - ], - "gitlab":"GitLab — веб-инструмент жизненного цикла DevOps с открытым исходным кодом, представляющий систему управления репозиториями кода для Git с собственной вики, системой отслеживания ошибок, CI/CD пайплайном и другими функциями.", - "github":"GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.", - "google":"Google — крупнейшая в мире поисковая система интернета, принадлежащая корпорации Google Inc.. Основана в 1998 году Ларри Пейджем и Сергеем Брином.", - "google images":"Google Images — специальный сервис Google для поиска картинок в Интернете. Googlebot-Image, поисковый робот, сканирующий страницы для индекса картинок, производит поиск изображений различных форматов.", - "google news":"Google Новости — бесплатный агрегатор новостей, который предоставлен и управляется компанией Google Inc. Сервис был создан в 2002 году, находился в бета-тестировании в течение трёх лет до 2006 года. Он служит для выбора самых актуальных новостей из тысяч публикаций по всему миру.", - "google videos":"Google Видео — бесплатный сервис компании Google, представляющий собой поисковую систему по видеороликам. Раньше также являлся видеохостингом. Каждый зарегистрировавшийся пользователь мог добавлять свои видеофрагменты, но Google перестал добавлять видео со всех аккаунтов. Некоторые видео могли продаваться через систему Google Хранение видео. Пользователи сервиса имеют возможность как проигрывать видеофайлы напрямую, так и скачивать их себе на компьютер. Также видео-фрагменты могут быть внедрены непосредственно в HTML-код любой веб-страницы.", - "google scholar":"Академия Google — бесплатная поисковая система по научным публикациям, запущенная в ноябре 2004 года по инициативе инженеров Google Алекса Верстака и Анурага Ачария. С помощью поисковых роботов портал индексирует метаданные и осуществляет полнотекстовый поиск по научной литературе, включая журнальные статьи, препринты, диссертации, книги и технические отчёты. Пользователи могут искать нужные работы по авторам, ключевым словам, названию журнала. Углублённый поиск позволяет ранжировать материалы по публикации, дате и предметной области.", - "google play apps":"Google Play — магазин приложений, а также игр и книг от компании Google, позволяющий сторонним компаниям предлагать владельцам устройств с операционной системой Android устанавливать и приобретать различные приложения.", - "google play movies":[ - "google play apps:ru", - "ref" - ], - "gpodder":"gPodder — кросплатформенная компьютерная программа для управления подкастами, RSS-агрегатор с открытым исходным кодом, написанный на языке программирования Python.", - "habrahabr":"Хабр — русскоязычный веб-сайт в формате системы тематических коллективных блогов с элементами новостного сайта, созданный для публикации новостей, аналитических статей, мыслей, связанных с информационными технологиями, бизнесом и интернетом. Основан Денисом Крючковым в июне 2006 года.", - "hackernews":"Hacker News — социальный новостной сайт.", - "hoogle":"Haskell — стандартизированный чистый функциональный язык программирования общего назначения. Является одним из самых распространённых языков программирования с поддержкой отложенных вычислений. Система типов — полная, сильная, статическая, с автоматическим выводом типов, основанная на системе типов Хиндли — Милнера. Поскольку язык функциональный, то основная управляющая структура — это функция.", - "imdb":"Internet Movie Database — веб-сайт со свободно редактируемой и крупнейшей в мире базой данных о кинематографе. По состоянию на январь 2021 года, в базе собрана информация о более чем 6,5 млн кинофильмов, телесериалов и отдельных их серий, а также о 10,4 млн персоналий, связанных с кино и телевидением, — актёрах, режиссёрах, сценаристах и других.", - "imgur":"Imgur — онлайн-сервис загрузки, хранения и обмена фото-изображений.", - "ina":"Национальный институт аудиовизуала — общественное учреждение, имеющее промышленный и коммерческий характер.", - "kickass":"KickassTorrents — вебсайт, поисковик .torrent-файлов и magnet-ссылок. Основан в 2008 году. По состоянию на июль 2016 года сайт занимал 68 место по посещаемости в мире согласно глобальному рейтингу Alexa. Один из серверов ресурса размещен в США.", - "lemmy communities":"Lemmy — это свободное программное обеспечение с открытым исходным кодом для запуска собственных агрегаторов социальных новостей и веб-форумов.", - "lemmy users":[ - "lemmy communities:ru", - "ref" - ], - "lemmy posts":[ - "lemmy communities:ru", - "ref" - ], - "lemmy comments":[ - "lemmy communities:ru", - "ref" - ], - "library genesis":"Library Genesis — веб-сайт, поисковая система и онлайн-хранилище, предоставляющее бесплатный доступ к пиратским коллекциям и защищённым авторским правом произведениям, в основном научной тематики. LibGen также называют «теневой библиотекой». Портал был создан в 2008 году, предположительно, группой российских учёных. До 2011 года коллекция LibGen росла в основном благодаря копированию других российских интернет-архивов и включению около полумиллиона англоязычных работ интернет-библиотеки Library.nu, закрытой в 2012 году. Начиная с 2013 года коллекция LibGen пополняется за счет интеграции созданных издателями электронных текстовых репозиториев. До 2013 года большая часть коллекции была представлена на русском и английском языках, позднее начали добавлять работы и на немецком, итальянском, испанском и французском.", - "z-library":"Z-library — теневая библиотека научной, технической и научно-популярной литературы, предположительно одна из крупнейших. Согласно данным, предоставленным сайтом, на февраль 2021 года коллекция портала состояла из более чем 6,5 млн книг и более 80 млн статей. Только за июнь 2020 года сайт посетили 2,84 млн человек, из которых 14,76 % составили пользователи из США.", - "library of congress":"Библиотека Конгресса — исследовательская библиотека, которая официально обслуживает Конгресс США и является де-факто национальной библиотекой США. Это старейшее федеральное учреждение культуры в Соединённых Штатах. Библиотека расположена в трёх зданиях в районе Капитолийского холма в Вашингтоне, округ Колумбия; она также поддерживает Национальный центр аудиовизуальной консервации в Калпепер (Виргиния). Функции библиотеки контролирует библиотекарь Конгресса, а её здания обслуживает архитектор Капитолия. Библиотека Конгресса претендует на звание самой большой библиотеки в мире. Её «коллекции универсальны, не ограничены предметом, форматом или национальной границей и включают исследовательские материалы со всех частей света и на более чем 450 языках».", - "mastodon users":"Mastodon — свободное программное обеспечение для развёртывания распределённых социальных сетей. В отличие от централизованных социальных сетей, создаваемая узлами Mastodon сеть неподконтрольна единственному хозяину. Администраторы узлов имеют власть только в пределах своего узла, а в случае несогласия пользователя с политикой администрации узла любой пользователь может присоединиться к другому уже существующему узлу социальной сети или даже развернуть собственный. Узлы, соединенные в общую сеть, позволяют их пользователям общаться друг с другом. Mastodon входит в состав Fediverse и позволяет своим пользователям взаимодействовать с пользователями других открытых платформ, поддерживающих протокол ActivityPub, таких как PeerTube и Friendica.", - "mastodon hashtags":[ - "mastodon users:ru", - "ref" - ], - "metacpan":"CPAN — архив документации и программного обеспечения, написанного на языке программирования Perl.", - "mixcloud":"Mixcloud — британская онлайн-платформа для распространения звуковой информации. Платформа позволяет размещать радиошоу, диджейские миксы и подкасты.", - "npm":"npm — менеджер пакетов, входящий в состав Node.js.", - "openstreetmap":"OpenStreetMap, сокращённо OSM — некоммерческий веб-картографический проект по созданию силами сообщества участников — пользователей Интернета подробной свободной и бесплатной географической карты мира.", - "pinterest":"Pinterest (Пинтерест) — социальный интернет-сервис, фотохостинг, позволяющий пользователям добавлять в режиме онлайн изображения, помещать их в тематические коллекции и делиться ими с другими пользователями. Изображения можно «приколоть» к коллекциям, которые называются «досками».", - "piratebay":"The Pirate Bay — крупнейший в мире BitTorrent-индексатор и каталог для поиска .torrent-файлов.", - "pubmed":"Medline — крупнейшая библиографическая база статей по медицинским наукам, созданная Национальной медицинской библиотекой США. Охватывает около 75 % мировых медицинских изданий. Использует словарь MeSH. MEDLINE является ключевой составляющей PubMed.", - "pypi":"PyPI — каталог программного обеспечения, написанного на языке программирования Python. В сочетании с системами управления библиотечными пакетами аналогичен PEAR для PHP и CPAN для Perl. По состоянию на февраль 2020 года содержит более 216 000 пакетов, тогда как в 2010 году пакетов было всего около 10000.", - "qwant":"Qwant (Квант) — поисковая система интернета, принадлежащая компании QWANT S.A.S.", - "qwant news":[ - "qwant:ru", - "ref" - ], - "qwant images":[ - "qwant:ru", - "ref" - ], - "qwant videos":[ - "qwant:ru", - "ref" - ], - "reddit":"Reddit — сайт, сочетающий черты социальной сети и форума, на котором зарегистрированные пользователи могут размещать ссылки на какую-либо понравившуюся информацию в интернете и обсуждать её. Как и многие другие подобные сайты, Reddit поддерживает систему голосования за понравившиеся сообщения — наиболее популярные из них оказываются на заглавной странице сайта. Один из наиболее популярных сайтов в мире — 20-е место по посещаемости по данным SimilarWeb.", - "soundcloud":"SoundCloud — онлайн-платформа и сайт для распространения оцифрованной звуковой информации обладающая функциями социальной сети, а также одноимённая компания.", - "stackoverflow":"Stack Exchange — сеть веб-сайтов для работы с вопросами и ответами в различных областях. Первый сайт сети, Stack Overflow, был запущен Джоэлем Спольски и Джеффом Этвудом в 2008 году, а в 2010 году ими были открыты ещё несколько разделов и была организована сеть Stack Exchange. К осени 2012 года сеть выросла до 90 разделов, с 2 миллионами пользователей, 5 миллионами вопросов и 7 миллионами ответов", - "askubuntu":[ - "stackoverflow:ru", - "ref" - ], - "internetarchivescholar":[ - "Академия архива Интернета", - "https://scholar.archive.org/" - ], - "superuser":[ - "stackoverflow:ru", - "ref" - ], - "semantic scholar":"Semantic Scholar (англ. Semantic Scholar — поисковая интернет-платформа, разработанная в Институте искусственного интеллекта Аллена. Проект был запущен в 2015 году. Поиск научных публикаций производится с поддержкой искусственного интеллекта для статей в научных журналах. Поисковый сервис комбинирует машинное обучение, обработку естественного языка и машинного зрения, чтобы добавить слой семантического анализа к традиционным методам анализа цитирования. Semantic Scholar выделяет наиболее важные статьи, а также связи между ними.", - "startpage":"Ixquick — метапоисковая система, основанная Дэвидом Бодникином в 1998 году в Нью-Йорке и в Нидерландах. С 2000 года принадлежит нидерландской компании Surfboard Holding BV.", - "yahoo news":"Yahoo! News — новостной веб-сайт, созданный Yahoo! как интернет-агрегатор новостей. Сайт был создан инженером-программистом Yahoo! по имени Брэд Клоси в августе 1996 года. Первоначально статьи поступали из новостных служб, таких как Associated Press, Reuters, Fox News, Al Jazeera, ABC News, USA Today, CNN и BBC News.", - "youtube":"YouTube — видеохостинг, предоставляющий пользователям услуги хранения, доставки и показа видео. YouTube стал популярнейшим видеохостингом и вторым сайтом в мире по количеству посетителей.", - "dailymotion":"Dailymotion — французский видеохостинг. По состоянию на 2017 год Dailymotion является 114-м по посещаемости сайтом мира по версии Alexa Internet. Наибольшее количество посетителей сайта из Японии и США.", - "vimeo":"Vimeo — американский видеохостинг со штаб-квартирой в Нью-Йорке. Запущенный в 2004 году, по состоянию на март 2018 года занимает 130-е место в глобальном рейтинге сайтов и 91-е место в рейтинге США по данным Alexa. Имеет мобильные приложения для платформ iOS, Android и Windows Phone.", - "wikibooks":"Викиуче́бник — братский проект Википедии для коллективного написания учебной литературы, работающий по технологии «вики» на принципах свободы информации: каждый может создать и изменить любую страницу любого учебника, и каждый может бесплатно читать, копировать, издавать и изменять его содержимое.", - "wikinews":"Викино́вости — открытое новостное интернет-издание, ведущееся группой добровольцев. Технология и принципы написания новостных статей в Викиновостях такие же, как в других изданиях Фонда Викимедиа — некоммерческой организации, поддерживающей Викиновости. Викиновости стремятся сохранять непредвзятость и нейтральность статей. Приоритет не отдаётся новостям из какого-либо региона, Викиновости одновременно и глобальные, и локальные.", - "wikiquote":"Викицита́тник — свободное собрание цитат и высказываний известных личностей или героев художественных произведений, создаваемое читателями совместно. Этот сайт создан Фондом Викимедиа на движке MediaWiki. Первоначально появился на английском языке 10 июня 2003 года.", - "wikisource":"Виките́ка — свободная электронная библиотека — проект некоммерческого фонда «Викимедиа», имеющий целью создание постоянно пополняемой библиотеки свободно распространяемых текстов на всех возможных языках. Объявление об официальном старте проекта произошло в день учреждения самого Фонда 20 июня 2003 года.", - "wikispecies":"Викиви́ды — один из проектов Фонда Викимедиа, справочник по таксономии биологических видов, основанный на вики-движке.", - "wiktionary":"Викислова́рь — свободно пополняемый многофункциональный многоязычный словарь и тезаурус, основанный на вики-движке. Один из проектов фонда «Викимедиа». Изначально появился на английском языке 12 декабря 2002 года.", - "wikiversity":"Викиверсите́т — проект фонда «Викимедиа», позиционирующий себя как новая форма интерактивного образования и ведения открытых научных проектов. Викиверситет направлен на содействие открытию и распространению знаний самым естественным путём: помогая людям учиться и делиться образовательными материалами. Англоязычный раздел открылся первым 15 августа 2006 года.", - "wikivoyage":"«Викиги́д» — открытый многоязычный некоммерческий вики-проект по созданию силами добровольцев свободных туристических путеводителей по всему миру. Один из википроектов, поддерживаемых фондом «Викимедиа» и расположенный на его серверах, братский проект по отношению к «Википедии» и прочим проектам фонда. Сайт проекта — wikivoyage.org.", - "wikicommons.images":"Викискла́д — общее централизованное виртуальное хранилище для изображений, звукозаписей, видеороликов и других мультимедийных файлов, включаемых в страницы проектов Фонда Викимедиа, которые можно свободно распространять, изменять и использовать в любых целях, в том числе и за пределами проектов Викимедиа.", - "wolframalpha":"Wolfram|Alpha — база знаний и набор вычислительных алгоритмов, вопросно-ответная система. Запущена 15 мая 2009 года.", - "dictzone":[ - "Онлайн-словари: английский, испанский, немецкий, французский, итальянский, венгерский... Выберите свой любимый словарь!", - "https://dictzone.com/" - ], - "1337x":"1337x — BitTorrent-индексатор и каталог для поиска .torrent-файлов и Magnet-ссылок, используемый для обмена файлов в одноранговой сети BitTorrent. Согласно TorrentFreak, 1337x является третьим по популярности сайтом для поиска .torrent-файлов.", - "seznam":"Seznam.cz — чешский интернет-портал. Был основан Иво Лукачовичем в 1996 году, став одной из первых поисковых систем и одним из первых каталогов интернет-сайтов в Чехии.", - "naver":"Naver — крупнейший интернет-портал и самая популярная поисковая система в Южной Корее. На него приходится 70 % поисковых запросов в стране. Принадлежит компании Naver Corporation. Был открыт в 1999 году. Тогда Naver первым из корейских интернет-порталов разработал свою собственную поисковую систему.", - "rubygems":"RubyGems (от англ. gem, gems— драгоценный камень) — система управления пакетами для языка программирования Руби, которая предоставляет стандартный формат для программ и библиотек Руби, инструменты, предназначенные для простого управления установкой «gems», и сервер для их распространения.", - "peertube":"PeerTube — децентрализованный, федеративный видеохостинг с открытым исходным кодом, основанный на технологиях ActivityPub и WebTorrent. Создан в 2017 году разработчиком с ником Chocobozzz, в дальнейшем поддержку разработки взяла на себя французская некоммерческая организация Framasoft.", - "yacy":"YaCy — свободно распространяемая децентрализованная поисковая система, построенная по принципу одноранговой сети (P2P). Есть версии для Windows, Linux, MacOSX. Основной программный модуль, написанный на Java, функционирует на нескольких тысячах компьютеров участников сети YaCy. Каждый участник проекта независимо исследует Интернет, анализируя и индексируя найденные страницы и складывает результаты индексирования в общую базу данных, который совместно используется всеми пользователями YaCy по принципу P2P.", - "yacy images":[ - "yacy:ru", - "ref" - ], - "rumble":"Rumble — канадский видеохостинг и облачная система хранения, имеющий штаб-квартиры в канадском Торонто и Лонгбот-Ки. Основан в октябре 2013 года канадским предпринимателем Крисом Павловски.", - "wordnik":"Wordnik (wordnik.com) — интернет-сайт, разрабатываемый одноименной некоммерческой организацией, представляющий собой онлайн-словарь английского языка и языковой ресурс для словарей и тезауруса. Часть контента, представленного Wordnik, основывается на известных печатных словарях английского языка, таких как Century Dictionary, American Heritage Dictionary, WordNet и GCIDE. Wordnik собрал корпус из миллиардов слов, которые используются на сайте для отображения примеров предложений, что позволяет ему предоставлять информацию о гораздо большем наборе слов, чем в обычном словаре. Wordnik использует как можно больше реальных примеров при определении слова.", - "wttr.in":[ - "Прогноз погоды: Boydton, Virginia, United States", - "https://wttr.in" - ], - "yummly":"Yummly — американское мобильное приложение и веб-сайт, которые предоставляют рекомендации по рецептам, адаптированные к индивидуальным вкусам, семантический поиск рецептов, цифровую коробку рецептов, список покупок и часовую доставку продуктов. Приложение Yummly доступно для iOS, Android и веб-браузеров. Приложение Yummly было названо «Лучшим за 2014 год» в Apple App Store.", - "brave":"Brave — веб-браузер со свободным и открытым исходным кодом на основе веб-браузера Chromium на движке Blink, анонсированный соучредителем корпорации Mozilla Project и создателем JavaScript Бренданом Эйхом. Создатели утверждают, что Brave блокирует трекеры сайтов и удаляет навязчивую интернет-рекламу, повышает уровень приватности в интернете и уменьшает количество передаваемых о потребителях рекламы данных. По данным на 2021-й год, стабильный релиз доступен для iOS, Android, Windows, macOS и Linux.", - "brave.images":[ - "brave:ru", - "ref" - ], - "brave.videos":[ - "brave:ru", - "ref" - ], - "brave.news":[ - "brave:ru", - "ref" - ] - }, - "si":{ - "wikipedia":"විකිපීඩියා යනු විවිධ භාෂා වලින් ලියැවුණු, අන්තර්ජාලය පාදක කරගත් නිදහස් විශ්වකෝෂයකි. ස්වෙච්ඡා රචකයින්ගේ සහ-සහයෝගයෙන් යුතුව, වෙනත් ඕනෑම අයෙකුට වෙබ් බ්‍රව්සරයක් හරහා සංස්කරණය කළ හැකි පරිදි විකිපීඩියා ලිපි ලියවේ. 2001 ඡනචාරි 15 දින මෙම විශ්වකෝෂය ආරම්හ කළේ විශේෂඥයන් විසින් සකසන Nupediaව ඌන පූර්ණය කිරීමටයී. මෙය පවත්වාගෙන යන්නේ ලාහ-නොපතන ආයතනයක් වන විකිමීඩියා පදනම මගිනි. අන්තර්ජාතික භාෂාවක් වන ඉංග්‍රීසි භාෂාවෙන් සැකසුනු ලිපි 3,800,000 පමණ ඇතුළුව, සිංහල මෙන්ම තවත් විවිධ භාෂා ගණනකින් සැදුම්ලත් ලිපි 5,000,000 ත් වඩා විකිපීඩියාවෙහි අන්තර්ගතය. ආරම්භයෙහි පටන්ම එහි ජනප්‍රියතාවයෙහි, ස්ථාවර වර්ධනයක් රඳවාගත් විකිපීඩියාව එම සාර්ථකත්වය තවත් සහෝදර ව්‍යාපෘති ගණනාවක් දියත් කිරිම දක්වා ව්‍යාප්ත කළේය", - "bing news":[ - "ක්‍රීඩා, විනෝදාස්වාදය, ව්‍යාපාර, දේශපාලනය, කාලගුණය සහ තවත් දේ පිළිබඳව ගැඹුරු පුවත් ආවරණයක් ඔබට ලබා දීම සඳහා ලෝක, ජාතික හා දේශීය පුවත් මූලාශ්‍රවලින් පුවත් සංවිධානය කරන ලදී.", - "https://www.bing.com/news" - ], - "wikidata":"'විකිදත්ත, යනු විකිමීඩියා පදනම මගින් පවත්වාගෙන යනු ලබන knowledge base එකකි.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"ගූගල් සෙවුම යනු ගූගල් සමාගම විසින් නිර්මාණය කරන ලද වෙබ් සෙවුම් යන්ත්‍රයකි. දිනකට ලොව පුරා සෙවුම් බිලියන තුනකට වඩා සපයන එය දැනට විශ්ව විසිරි වියමනේ වඩාත්ම ජනප්‍රිය සෙවුම් යන්‍ත්‍රයයි.", - "google images":"ගූගල් ඉමේජස් යනු 2001 ජූලි මාසයේදී හඳුන්වාදෙනු ලැබූ, ගූගල් සමාගමට අයත් සෙවුම් සේවාවකි. එමගින් පරිශීලකයන්ට අන්තර්ජාලය තුල අඩංගු ඡායාරූප පහසුවෙන් සොයාගත හැක.", - "google news":"ගූගල් ප්‍රවෘත්ති යනු ගූගල් විසින් වැඩි දියුණු කරන ලද ප්‍රවෘත්ති එකතු කිරීමේ සේවාවකි. දහස් ගණන් ප්‍රකාශකයින් සහ සඟරා වලින් සංවිධානය කරන ලද ලිපි වලට අඛණ්ඩ සම්බන්ධ ක ප්‍රවාහයක් එය ඉදිරිපත් කරයි. ඇන්ඩ්‍රොයිඩ්, අයිඕඑස් සහ වෙබයේ යෙදුමක් ලෙස ගූගල් ප්‍රවෘත්ති තිබේ.", - "google play apps":[ - "නවතම Android යෙදුම්, ක්‍රීඩා, සංගීතය, චිත්‍රපට, TV, පොත් සහ තවත් දේවල් මිලියන ගණනක් රස විඳින්න. ඔබේ උපාංග හරහා ඕනෑම වේලාවක, ඕනෑම තැනකදී.", - "https://play.google.com/" - ], - "google play movies":[ - "google play apps:si", - "ref" - ], - "imdb":"අයිඑම්ඩීබී යනුවෙන් හැඳින්වෙන්නේ චිත්‍රපට, රූපවාහිනී වැඩසටහන්, වීඩියෝ ක්‍රීඩා ආදිය පිළිබඳ තොරතුරු ඇතුළත් මාර්ගගත දත්ත සමුදායකි. එහි දී චරිත නිරූපණය, නිෂ්පාදන කණ්ඩායම, පෞද්ගලික චරිතාපදාන, කථා සාරාංශ, ප්‍රමාණන, රසික සහ විචාරක විචාරයන් ද මෙහි ඇතුළත් ය. මුලින් රසිකයන් විසින් ක්‍රියාත්මක කළ වෙබ්අඩවියක් වූ මෙය වර්තමානයෙහි IMDb.com, Inc. නම් වූ ඇමසන් සමාගමේ අනුබද්ධිත අඩවියක් ලෙස පවතියි.", - "library of congress":"කොන්ග්‍රස් පුස්තකාලය එසේත් නැත්නම් ලයිබ්රරි ඔෆ් කොන්ග්‍රස් යනු එක්සත් ජනපද කොංග‍්‍රස් මණ්ඩලයට නිල වශයෙන් සේවා සැපයීම සඳහා වන පර්යේෂණ පුස්තකාලය කි. එසේම මෙය ඇමරිකාවේ de facto ජාතික පුස්තකාලය වේ.", - "youtube":"යූ ටියුබ් යනු 2005 පෙබරවාරි මස දී පේපෑල් සාමාජිකයන් තිදෙනෙක් විසින් නිමවන ලද වීඩියෝ හුවමාරු වෙබ් අඩවියකි..2006 න් පසු ගූගල් ආයතනයට හිමිව ඇති යූ ටියුබ් භාවිතයෙන් වීඩියෝ දර්ශණ පට උඩුගත කිරීම් නැරඹීම් සහ වීඩියෝපට හුවමරු කරගැනීම් සිදුකල හැක.කැලිෆෝනියාවේ සැන් බෲනෝ හි පවත්වගෙන යන මෙම ආයතනය සතුව ඇඩෝබි ෆ්ලෑශ් විඩියෝ සහ HTML5 තාක්ශණය භවිතයෙන් කරනලද ,රූපවහිනී දර්ශනපට සහ සංගීත වීඩියෝපට,කෙටි නව වීඩියෝපට,අධ්‍යාපනික වීඩියෝපට සහ ආධුනිකයන් විසින් ඉදිරි පත් කරනද නිර්මාණ ද ඇතුලත් වේ.", - "wikibooks":"විකි-පුස්තක යනු ඕනෑම කෙනෙකුට සංස්කරණය කළ හැකි නොමිලේ අන්තර්ගත ඩිජිටල් පෙළපොත් සහ විවරණ සහිත පෙළ නිර්මාණය කිරීම සඳහා විකිමීඩියා පදනම විසින් සත්කාරකත්වය දරන විකි පාදක විකිමීඩියා පදනම් ව්‍යාපෘතියකි.", - "wikisource":"විකිමූලාශ්‍ර යනු විකිමීඩියා පදනම මගින් ක්‍රියාත්මක කරන වෙබ් අඩවියකි.", - "wikicommons.images":"විකිමීඩියා කොමන්ස් එසේත් නැත්නම් සරලව කොමන්ස් යනු නිදහස් ලෙස භාවිතා කළ හැකි (free-to-use) රූප, ශබ්ද, වීඩියෝ සහ වෙනත් මාධ්‍යය සඳහා වන මාධ්‍යය ගබඩාවකි. මෙය විකිමාධ්‍ය පදනමේ ව්‍යාපෘතියකි.", - "brave":"බ්‍රේව් යනු ක්‍රෝමියම් වෙබ් බ්‍රව්සරය මත පදනම් වූ වෙබ් බ්‍රව්සරයක් වේ.", - "brave.images":[ - "brave:si", - "ref" - ], - "brave.videos":[ - "brave:si", - "ref" - ], - "brave.news":[ - "brave:si", - "ref" - ] - }, - "sk":{ - "arxiv":"arXiv je elektronický archív preprintov vedeckých prác z oblasti matematiky, fyziky, informatiky a biológie, ktorý je volne dostupný na internete. V niektorých oblastiach matematiky a fyziky sú takmer všetky práce umiestnené na arXive.[chýba zdroj] V roku 2012 do tohto archívu pribudlo každý mesiac približne sedem tisíc nových prác.", - "bandcamp":"Bandcamp je internetová hudobná spoločnosť s hlavným sídlom v Oaklande v štáte Kalifornia, ktorá slúži ako obchod aj propagačná platforma určená hlavne pre nezávislých hudobných umelcov. Umelec, ktorý chce predávať svoju hudbu prostredníctvom spoločnosti Bandcamp, má vlastnú mikrostránku, na ktorú zverejňuje albumy alebo jednotlivé piesne. Všetky skladby je možné počúvať zadarmo a umelec sa rozhodne, či ich stiahnutie je platené alebo nie. Stránka si účtuje 15% z ceny zakúpenej hudby a 10%, ak zárobky z daného albumu presiahnu 5 000 dolárov. Táto webová stránka tiež umožňuje predaj fyzických médií na základe predbežného oznámenia správcom. Stránka podporuje formáty ako .mp3, .flac, .acc, .ogg a .m4a.", - "wikipedia":"Wikipédia je internetová encyklopédia s otvoreným obsahom, ktorú možno slobodne upravovať a čítať. Je sponzorovaná neziskovou organizáciou Wikimedia Foundation. Má 312 nezávislých jazykových vydaní vrátane slovenského a najrozsiahlejšieho anglického. Wikipédia obsahuje popri článkoch encyklopedického typu aj články podobajúce sa almanachu, atlasu či stránky aktuálnych udalostí. Wikipédia je jedným z najpopulárnejších zdrojov informácií na webe s približne 13 miliardami zobrazení mesačne.", - "bing":"Bing je aktuálny vyhľadávač od Microsoft. Predstavil ho generálny riaditeľ spoločnosti Steve Ballmer 28. mája 2009 na konferencii All Things Digital v San Diegu, Bing je náhradou za Live Search. Plne funkčný bol 3. júna 2009, s ukážkovou verziou vydanou 1. júna 2009. V auguste 2009, Bing získal 9,3 percentný podiel trhu internetových vyhľadávačov v Spojených Štátoch. Avšak, v septembri spoločnosť StatCounter uviedla, že podiel Bingu na americkom vyhľadávacom trhu v septembri klesol o jeden precentuálny bod na 8.51%. Comscore však tvrdili opak, tvrdiac že rast Bingu sa v septembri 2009 ustálil, získal 0,1 percenta z celkového trhu vyhľadávačov v USA a jeho podiel na trhu predstavuje 9,4 percenta.", - "bing images":[ - "bing:sk", - "ref" - ], - "bing news":[ - "Správy zo sveta, z vašej krajiny a miestne správy. Usporiadané sú tak, aby ste získali podrobný prehľad o správach z oblastí športu, zábavy, obchodu, politiky, počasia a ďalších.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Inteligentné vyhľadávanie v službe Bing umožňuje rýchle nájdenie toho, čo hľadáte, a odmeňuje vás.", - "https://www.bing.com/videos" - ], - "deviantart":"DeviantArt je celosvetová internetová komunita, v ktorej jej členovia prezentujú svoje umelecké diela rozličných smerov a štýlov.", - "wikidata":"Wikiúdaje je projekt kolektívne upravovanej podpornej databázy pre Wikipédiu. S návrhom projektu prišla nemecká pobočka nadácie Wikimedia, Wikimedia Deutschland. Wikiúdaje majú vytvoriť spoločné úložisko databázových údajov, podobne ako je Wikimedia Commons spoločné úložisko pre fotografie alebo zvukové súbory, ktoré potom môžu byť používané inými projektmi. Je to prvý nový projekt nadácie od roku 2006, kedy bola spustená Wikiverzita.", - "flickr":"Flickr je komunitná webová lokalita pre zdieľanie fotografií a videa vytvorená spoločnosťou Ludicorp, ktorú neskôr získala spoločnosť Yahoo!. Bol tiež jedným z prvých serverov Webu 2.0, ktorý umožňoval používať tagy. Používatelia môžu svoje fotografie a videá umiestniť do mapy. V septembri 2010 bolo oznámené, že Flickr zdieľa viac ako 5 miliárd obrázkov. V máji 2013 bolo oznámené, že Flickr zdieľa viac ako 8 miliárd obrázkov.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub, Inc. je poskytovateľom internetového hostingu na vývoj softvéru a správu verzií s použitím verziovacieho nástroja Git. Ponúka distribuované verziovanie a správu zdrojového kódu systémom Git, ale aj ďalšie vlastné funkcie. Umožňuje regulovať prístup a má niekoľko funkcií zameraných na spoluprácu, ako napríklad sledovanie hlásených chýb, požiadavky na nové funkcie, správa úloh, priebežná integrácia a wiki stránka pre každý projekt.", - "google images":"Google Image Search je vyhľadávacia služba, pomocou ktorej Google umožňuje užívateľom vyhľadávať na internete obrázky. Bola zverejnená v roku 2001 a existuje vo všetkých jazykových verziách, v ktorých je samotný vyhľadávač. Kľúčové slová pri hľadaní obrázkov sú založené na názve súboru, slovami, ktoré na daný obrázok odkazujú a textom, ktorý je na danej stránke pri obrázku. Pri vyhľadávaní sú zobrazené miniatúry obrázkov. Keď na niektorú kliknete, obrázok je zobrazený hore a nižšie je obsah stránky na ktorej sa obrázok nachádza. Je to jednoduchšie pretože takto môžete ľahšie zistiť z akej stránky daný obrázok pochádza.", - "google news":[ - "Vyčerpávajúce a aktuálne spravodajstvo zozbierané službou Google News zo zdrojov správ z celého sveta.", - "https://news.google.com" - ], - "google scholar":"Google Scholar je voľne prístupný webový vyhľadávací nástroj, ktorý indexuje plné texty alebo metadáta vedeckej literatúry v celej škále publikačných formátov a disciplín.", - "google play apps":"Google Play je digitálna distribučná platforma od spoločnosti Google, ktorá vznikla 6. marca 2012. Slúži tiež ako oficiálny app store pre operačný systém Android, ktorý umožňuje používateľom prehliadať a sťahovať aplikácie vytvorené pomocou Android SDK.", - "google play movies":[ - "google play apps:sk", - "ref" - ], - "hoogle":"Haskell je štandardizovaný funkcionálny programovací jazyk s voľnou sémantikou pomenovaný po logikovi Haskellovi Currym. Bol vytvorený v 90. rokoch 20. storočia. Posledným polooficiálnym štandardom je Haskell 98, ktorý definuje minimálnu a portabilnú verziu jazyka využiteľnú na výuku alebo ako základ ďalších rozšírení. Jazyk sa rýchlo vyvíja, predovšetkým vďaka svojim implementáciám Hugs a GHC, ktoré predstavujú súčasný de facto štandard.", - "imdb":"Internet Movie Database , skr. IMDb je na internete dostupná databáza informácií o filmových hviezdach, filmoch, televíznych reláciách, reklamách a videohrách. Vlastní ju firma Amazon.com.", - "library of congress":"Kongresová knižnica je de facto národnou knižnicou Spojených štátov amerických a vedeckovýskumným telesom Kongresu Spojených štátov. Situovaná je vo Washingtone D.C. v troch budovách. Je jednou z najdôležitejších a najväčších knižníc na svete. Jej zbierka zahrňuje viac ako 30 miliónov katalogizovaných kníh a iných tlačených materiálov v 470 jazykoch, viac ako 58 miliónov rukopisov, najvzácnejšiu knižnú kolekciu v Severnej Amerike vrátane Guttenbergovej Biblie, vyše milióna publikácií americkej vlády, milión výtlačkov svetových novín za posledné tri storočia, 33 000 novinových zväzkov, 500 000 mikrofilmových pásov, vyše 6 000 komiksových titulov atď. Riaditeľom knižnice je knihovník Kongresu.", - "mastodon users":[ - "sociálna sieť", - "wikidata" - ], - "mastodon hashtags":[ - "mastodon users:sk", - "ref" - ], - "openstreetmap":"OpenStreetMap je otvorený projekt, ktorého cieľom je tvorba voľných geografických dát, ako sú napríklad cestné mapy. Používa predovšetkým dáta z prijímačov GPS, ktoré sú následne kontrolované a editované. Je založený na kolektívnej spolupráci a na koncepcii Open source.", - "pinterest":[ - "Objavte recepty, rady pre domácnosť, štýlové inšpirácie a ďalšie nápady, ktoré môžete vyskúšať.", - "https://www.pinterest.com/" - ], - "piratebay":"The Pirate Bay je webová stránka, ktorá patrí medzi najväčšie databázy torrentov na internete. Stránka je na 88. mieste najnavštevovanejších stránok na svete. Po skonfiškovaní serverov, ktoré sa 31. mája 2006 lokalizovali vo Švédsku, si TPB získala pozornosť švédskych a medzinárodných médií.", - "reddit":"Reddit je webová stránka, ktorá kombinuje funkcie sociálnej siete a fóra, kde môžu registrovaní používatelia uverejňovať odkazy na akékoľvek informácie, ktoré sa im na internete páčia, a diskutovať o nich. Rovnako ako mnoho iných podobných webových stránok, aj Reddit udržiava systém hlasovania za príspevky, ktoré sa vám páčia – tie najpopulárnejšie končia na domovskej stránke webu. Reddit je jedna z najpopulárnejších webových stránok na svete – ide o 19. najnavštevovanejšiu stránku podľa Alexa Internet. Stránka má aplikáciu pre mobilné zariadenia na báze iOS a Android.", - "soundcloud":"SoundCloud je internetová stránka pre online distribúciu hudby. Je často využívaná menej známymi interpretmi na zdieľanie ich tvorby. V súčasnej dobe sa k nemu však na úkor MySpace obracajú aj známi interpreti. Napríklad Sonic Youth využila odkazy na SoundCloud z Twitteru na streamovanie ich posledného albumu. Moby tu zverejňuje svoje najnovšie single. A keď sa Beck rozhodol skončiť so svojimi zastaranými webovými stránkami a chcel jednoduché stránky založené na vysoko kvalitnom obsahu, tiež prešiel k SoundCloud.", - "youtube":"YouTube je internetová databáza videí, väčšinou krátkych. YouTube založil Chad Hurley v roku 2005 a v novembri 2006 ho kúpil Google. V súčasnosti ide o najväčší svetový systém na zdieľanie video súborov na internete.", - "vimeo":"Vimeo je webový projekt určený pre zdieľanie audiovizuálnej tvorby. Nachádzajú sa na ňom prevažne autorské a umelecké diela. Vimeo je primárne určené filmovým nadšencom a experimentátorom, ktorí sa môžu zaregistrovať a zdieľať názory a postrehy s ostatnými. Charakter Vimea je úplne odlišný od charakteru YouTube, Vimeo je zamerané na umeleckú komunitu, kde YouTube smeruje k záujmom masovej spoločnosti.", - "wikibooks":"Wikiknihy sú sesterský projekt Wikipédie, ktorý obsahuje voľne šíriteľné učebnice všetkých druhov, manuály a náučné texty. Projekt bol založený 10. júla 2003 a je spravovaný Wikimedia Foundation.", - "wikinews":"Wikisprávy je projekt otvoreného spravodajského portálu na báze wiki, ktorý prevádzkuje Nadácia Wikimedia. Umožňuje prispievať komukoľvek a jeho cieľom je vytvoriť rôznorodé prostredie, kde môžu miestni novinári nezávisle prinášať správy o rôznych aktualitách. Spoluzakladateľ Wikipédie, Jimmy Wales, odlíšil Wikisprávy od Wikipédie takto: „Na Wikisprávach je každý príbeh napísaný ako novinová správa narozdiel od encyklopedického článku.“ Pravidlo o neutrálnom uhle pohľadu Wikisprávy odlišuje od občianskej žurnalistiky. Na rozdiel od väčšiny projektov Nadácie Wikimedia Wikisprávy dovoľujú vlastné dielo formou originálneho prinášania informácií a rozhovorov.", - "wikiquote":"Wikicitáty je zbierka citátov a prísloví v rôznych jazykoch. Je to jeden z projektov nadácie Wikimedia. Projekt bol spustený 27. júna 2003, pôvodne v angličtine.", - "wikisource":"Wikizdroje je online digitálna knižnica voľne dostupných pôvodných textov v slovenčine. Ide o jeden zo sesterských projektov Wikipédie, ktorý spravuje Nadácia Wikimedia. Cieľom projektu je hostiť všetky formy voľného textu v mnohých jazykoch a preklady. Pôvodne bol projekt navrhnutý ako archív na zhromažďovanie užitočných alebo dôležitých historických textov, no odvtedy sa rozšíril a stal sa knižnicou všeobecného obsahu. Projekt oficiálne začal 24. novembra 2003 pod názvom Project Sourceberg, čo bola slovná hračka na známy Project Gutenberg. Meno Wikisource bolo prijaté neskôr v tom istom roku a svoju vlastnú doménu Wikizdroje dostali sedem mesiacov neskôr.", - "wikispecies":"Wikidruhy sú online projekt Nadácie Wikimedia založený na báze wiki. Jeho cieľom je vytvoriť kompletný adresár biologických druhov. Zameriava sa skôr na vedcov než na širokú verejnosť. Jimmy Wales vyhlásil, že redaktori nemusia dokázať, že majú tituly, no príspevky budú musieť splniť istý štandard po technickej stránke.", - "wiktionary":"Wikislovník je mnohojazyčný a otvorený webový projekt určený na vytvorenie slobodného úplného slovníka vo všetkých prirodzených jazykoch a niekoľkých umelých. Jeho heslá môžu obsahovať definície, výslovnosť, skloňovanie, príklady použitia, podobné výrazy, obrázky na ilustráciu a ďalšie možnosti. Stránka je spoločne upravovaná cez wiki a jej názov vznikol spojením slov wiki a slovník. Rovnako ako jeho sesterské projekty, akou napríklad Wikipédia, je prevádzkovaný Wikimedia Foundation a písaný dobrovoľníkmi, ktorí sa volajú Wikislovníkári. Je dostupný v 171 jazykoch a jednej jazykovej verzii pre jednoduchú angličtinu. Jeho slovenská mutácia dosiahla dňa 18. januára 2019 25 000 hesiel. Vďaka softvéru MediaWiki môže skoro každý s prístupom na internet vytvárať a upravovať heslá.", - "wikiversity":"Wikiverzita je projekt Nadácie Wikimedia určený na zhromažďovanie učebných materiálov. Od viac štruktúrovaných projektov, akou je napríklad Wikipédia, sa líši tým, že namiesto formálneho obsahu ponúka sériu návodov alebo kurzov na podporu učenia.", - "wikivoyage":"Wikicesty je webový cestovateľský sprievodca pre turistické destinácie a cestovateľské témy písaný dobrovoľníkmi. Ide o sesterský projekt Wikipédie a spravuje ho Nadácia Wikimedia.", - "wikicommons.images":"Wikimedia Commons je úložisko voľne použiteľných obrázkov, zvukov a iných multimediálnych súborov nachádzajúce sa https://commons.wikimedia.org/. Je to jeden z projektov Wikimedia Foundation. Súbory nahrané do tohto úložiska môžu byť priamo použité inými projektmi na Wikimedia serveroch, vrátane Wikipédia, Wikibooks a Wikinews.", - "wolframalpha":"Wolfram Alpha je internetová služba slúžiaca k vyhľadávaniu a znázorneniu informácií prevažne súvisiacich s matematikou a súvisiacimi vedeckými oblasťami. Služba bola vyvinutá spoločnosťou Wolfram Research a je založená na softvéri Mathematica. Služba bola spustená v máji 2009 Stephenom Wolframom. V roku 2009 bola vyhlásená americkým magazínom Popular Science ako najväčšia počítačová inovácia roku.", - "seznam":"Seznam.cz je najnavštevovanejší český internetový portál [chýba zdroj], ktorý založil v roku 1996 Ivo Lukačovič. Bol prvým českým internetovým vyhľadávačom v Česku. V roku 2007 mal obrat 1,7 mld. Kč. Vyhľadávač a katalóg firiem postupne od roku 1998 dopĺňali ďalšie služby. V súčasnosti Seznam prevádzkuje viac ako 15 rôznych služieb a pridružených značiek.", - "peertube":[ - "decentralizovaná sieť pre zdieľanie videa, postavená na free/libre softvéri", - "wikidata" - ], - "wttr.in":[ - "Predpoveď počasia pre: Boydton, Virginia, United States", - "https://wttr.in" - ] - }, - "sl":{ - "apple app store":"App Store je program za naprave iPhone, iPod Touch in iPad razvijalca Apple Inc., namenjen dostopu do spletne trgovine iTunes Store in prenosu aplikacij za operacijski sistem iPhone OS, ki jih uporabnik kupi v tej trgovini.", - "arxiv":"arXiv [arhájv] je spletni arhiv elektronskih preprintov znanstvenih člankov s področja matematike, fizike, astronomije, astrofizike, fizikalne kozmologije, računalništva, kvantitativne biologije, statistike in kvantitativnega finančništva. Na mnogih področjih matematike in fizike je skoraj večina znanstvenih člankov arhiviranih v arhivu arXiv. 3. oktobra 2008 je število člankov na arXiv.org preseglo pol milijona. 14. avgusta 2011 je arhiv deloval že dvajset let. Do leta 2014 je stopnja predložitve člankov narasla na več kot 8000 na mesec.", - "wikipedia":"Wikipedija [vikipedíja] ali Vikipedija je prosta spletna enciklopedija, ki nastaja s sodelovanjem stotisočev prostovoljcev z vsega sveta. Vsebuje geselske članke v več kot 300 različnih jezikih in njihovih različicah, sponzorira pa jo nepridobitna Fundacija Wikimedia. Zajema tradicionalne enciklopedične teme, obenem pa služi tudi kot almanah in zbornik. Ustanovitelj Jimmy Wales jo opisuje kot »poskus, da bi ustvarili in ponudili prosto enciklopedijo najvišje mogoče kakovosti prav vsakemu posamezniku v njegovem lastnem jeziku.« Wikipedija je eno od največkrat navedenih spletišč in dnevno doživi okoli 50 milijonov obiskov.", - "bing news":[ - "Svetovne novice ter nacionalni in lokalni viri novic, ki vam omogočajo pregled novic o športu, zabavi, poslovanju, politiki, vremenu in drugem.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Pametno iskanje v Bingu vam omogoča, da hitro najdete, kar iščete, in vas nagradi.", - "https://www.bing.com/videos" - ], - "deviantart":[ - "družbeno omrežje/umetniško spletno mesto", - "wikidata" - ], - "wikidata":"Wikipodatki so prosta in odprta spletna zbirka znanj, zgrajena z wiki tehnologijo, ki jo upravlja Fundacija Wikimedia. Predstavlja strukturirano zbirko določenih tipov podatkov, ki jih je možno urejati in brati tako ročno, kot strojno.", - "emojipedia":[ - "spletna enciklopedija emodžijev", - "wikidata" - ], - "flickr":"Flickr je spletno mesto, ki omogoča gostovanje za slike in videoposnetke. Namenjeno je urejanju fotografij in videa ter deljenju vsebine uporabnikov z drugimi uporabniki.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub je spletni gostiteljski servis za repozitorije v Git. Ponuja distribuirano upravljanje z izvorno kodo (SCM) z Git ter nekatere dodatne storitve. V nasprotju z Git-om, ki je ukazno orodje, ponuja GitHub spletni grafični vmesnik. Zagotavlja tudi kontrolo dostopa in številne storitve za kolaborativni razvoj, npr. sledenje napakam, zahteve za lastnosti, upravljanje z nalogami in wiki za vsak projekt.", - "google":"Iskanje Google ali pa preprosto Google je spletni iskalnik, ki ga je razvilo podjetje Google. Je najbolj uporabljen iskalnik na svetovnem spletu, ki poskrbi za več kot tri milijarde iskanj vsak dan. Od Februarja 2016 je najbolj uporabljen iskalnik v ZDA s 64.0% tržnim deležem.", - "google images":[ - "Google Slike. Najobsežnejše iskanje slik v spletu.", - "https://images.google.com" - ], - "google news":[ - "Temeljita in ažurna predstavitev novic, zbranih iz virov z vsega sveta s storitvijo Google News.", - "https://news.google.com" - ], - "google scholar":[ - "iskalnik podjetja Google Inc. za znanstvene in strokovne dokumente", - "wikidata" - ], - "google play apps":"Google Play je Googlovo spletišče na katerem je vključena spletna trgovina z glasbo, filmi, knjigami in Android aplikacijami ter medijskim predvajalnikom v oblaku. Storitev je na voljo preko spleta, preko Android aplikacije ali preko Google TV. Google Play je bil lansiran 6. marca 2012, ko je Google preuredil storitvi Android Market in Google Music. V Sloveniji so trenutno na voljo le aplikacije in igre.", - "google play movies":[ - "google play apps:sl", - "ref" - ], - "hoogle":"Haskell je popolnoma funkcijski programski jezik s polimorfičnimi tipi, ki omogoča izjemno elegantno implementacijo matematičnih struktur, predvsem neskončnih. Imenuje se po ameriškem matematiku in logiku Haskellu Brooksu Curryju.", - "imdb":"Internet Movie Database (IMDb) je spletna podatkovna baza o filmih in televizijskih programih ter filmskih igralcih. Spletišče je od leta 1998 v lasti Amazona, deluje pa od leta 1990. Decembra 2006 je IMDb imel podatke o 889.844 filmih in 2.283.287 ljudeh iz filmskega sveta.", - "library of congress":"Kongresna knjižnica je študijska knjižnica s sedežem v Washingtonu, ZDA, ki uradno deluje v podporo Kongresa Združenih držav Amerike, a je odprta tudi za javnost in velja za de facto nacionalno knjižnico ZDA. Poleg tega ima vloge centra bibliografskih informacij, ameriške agencije za avtorske pravice in nacionalne knjižnice za slepe in invalidne.", - "openstreetmap":"OpenStreetMap (OSM) je projekt, kjer uporabniki sami ustvarjajo prosto dostopen zemljevid sveta. Zemljevidi so narejeni na podlagi podatkov, zbranih s prenosnimi GPS sprejemniki in drugimi prosto dostopnimi viri.", - "piratebay":"The Pirate Bay je spletni katalog digitalnih vsebin zabavnih medijev in programske opreme.. The Pirate Bay, ki ga je leta 2003 ustanovilo švedsko podjetje Piratbyrån, obiskovalcem omogoča iskanje, prenos in prispevanje magnetnih povezav in hudourniških datotek, kar olajša skupno rabo datotek med uporabniki protokola BitTorrent.", - "reddit":"Reddit je ameriška zabavna, družbena in novičarska spletna stran, ki je bila ustanovljena 23. junija 2005 v Menfordu, Massachusettsu.", - "semantic scholar":"Semantic Scholar je spletni iskalnik, ki omogoča iskanje znanstvenih in strokovnih člankov, podprt z umetno inteligenco, ki je bil razvit na Allen Institute for Artificial Intelligence. javno je bil objavljen novembra 2015. Poleg analize citiranja pri iskanju upošteva še semantično analizo.", - "youtube":"YouTube je priljubljena spletna stran za izmenjavo videoposnetkov, kjer jih uporabniki lahko pregledujejo, komentirajo in ocenjujejo. Za komentiranje in ocenjevanje videoposnetkov je potrebna registracija, za pregledovanje pa ne. Izjema so posnetki, ki niso primerni za osebe, mlajše od 18 let. Uporabniki lahko nalagajo lastne posnetke ali tiste posnetke, za katere imajo dovoljenje avtorja, prepovedano pa je nalaganje posnetkov, ki vsebujejo pornografske vsebine, nasilje, kriminalna dejanja, psovke … YouTube si pridržuje pravico za brisanje, uporabo in spremembo naloženih vsebin.", - "wikibooks":"Wikiknjige je sorodni projekt Wikipedije. Wikiknjige so prosta spletna zbirka knjig in priročnikov, katere lahko ureja vsakdo.", - "wikinews":"Wikinovice so wiki novice z brezplačno vsebino in projekt Fundacije Wikimedia. Spletno mesto deluje prek sodelovalnega novinarstva. Soustanovitelj Wikipedije Jimmy Wales Wikinovice od Wikipedije razlikuje z besedami: »na Wikinewsu je treba vsako zgodbo napisati kot novico v nasprotju s člankom o enciklopediji.« V nasprotju z večino projektov Fundacije Wikimedia Wikinovice omogoča izvirno delo v obliki izvirnega poročanja in intervjujev.", - "wikiquote":"Wikinavedek je prosta spletna zbirka navedkov v vseh jezikih, ki zajemajo vire, prevode v različne jezike in povezave na Wikipedijo, Wikivir, Wikislovar, Wikiknjige in ostale projekte za več informacij.", - "wikisource":"Wikivir je spletna digitalna knjižnica, zgrajena s tehnologijo wiki, ki deluje kot sestrski projekt Wikipedije pod okriljem neprofitne Fundacije Wikimedia.", - "wikispecies":"Wikivrste je spletni projekt, zgrajen na sistemu wiki pod okriljem organizacije Wikimedia Foundation. Namen projekta je postaviti izčrpen, prosto dostopen katalog vseh živih bitij. Urejali naj bi ga znanstveniki z izobrazbo iz biologije, vendar sistem od urednikov ne zahteva potrdil o izobrazbi. Tako Jimmy Wales pravi, da bodo morali prispevki skozi enak sistem recenzije kot prispevki na drugih projektih Fundacije Wikimedia.", - "wiktionary":"Wikislovar je sorodni projekt Wikipedije. Wikislovar je prosti večjezični slovar z definicijami, izvorom besed, naglaševanjem in navedki.", - "wikiversity":"Wikiverza je prosta spletna univerza in ena izmed projektov Fundacije Wikimedia. Zasnovana je večjezično in je trenutno prevedena v štirinajst jezikov. Uradno se je projekt v angleščini, s polstabilno verzijo, začel 15. avgusta 2006, slovenska različica pa je nastala 27. marca 2012.", - "wikivoyage":"Wikipotovanje je spletni popotniški vodnik, osnovan na sistemu wiki, ki ga ustvarjajo prostovoljni pisci z vsega sveta. Ime je sestavljeno iz besed »Wiki« in »Voyage«, francoske besede za potovanje. Z njim upravlja Fundacija Wikimedia, ki je krovna organizacija za Wikipedijo in sorodne projekte zbiranja in razširjanja prosto dostopnega znanja.", - "wikicommons.images":"Wikimedijina zbirka ali krajše kar Zbirka je Wikimedijino spletno središče ali skladišče podob, zvočnih posnetkov in drugih predstavnostnih vsebin s prosto licenco. Datoteke, ki jih po načelu prostega urejanja lahko naloži vsak prijavljeni uporabnik, se lahko uporabljajo v vseh projektih Wikimedie na način, kot se uporablja za krajevno naložene datoteke.", - "wolframalpha":"Wolfram Alpha je iskalnik/orakelj, ki ga je razvilo podjetje Wolfram Research. Spletni servis namesto klasičnega seznama spletnih strani skuša odgovoriti na zastavljeno vprašanje.", - "seznam":[ - "češki internetni portal, iskalnik in družba", - "wikidata" - ], - "peertube":[ - "decentralizirano omrežje za gostovanje videoposnetkov, ki temelji na prosti/libre programski opremi", - "wikidata" - ] - }, - "sr":{ - "9gag":"9гаг или у оригиналу је интернет сајт на енглеском језику. Основан је 2008. године и од тада убрзо постаје познат широм света. Сајт је познан по употреби интернет мема.", - "annas archive":"Анина архива је бесплатни непрофитни метапретраживач библиотеки из сенке на мрежи који пружа приступ разним изворима књига, створен од стране тима анонимних архиватора (који се називају Ана и/или Pirate Library Mirror тим и покренут као директан одговор на напоре органа за спровођење закона, уз формалну помоћ Удружења издавача и Удружења аутора, да затворе З-библиотеку у новембру 2022.", - "apple app store":"Ап стор је Еплова платформа за дигиталну дистрибуцију апликација за оперативни систем iOS. Сервис дозвољава претрагу и преузимање апликација које су напреављене уз помоћ Епловог -а. Апликације се могу директно преузети на уређај или на лични рачунар уз помоћ софтвера Ајтјунс.", - "artic":"Институт уметности у Чикагу у чикашком Грант Парку, основан 1879. године, један је од најстаријих и највећих уметничких музеја у Сједињеним Државама. Музеј је популаран и посећује га 1,5 милиона људи годишње. Његова колекција, којом управља 11 кустоских одсека, енциклопедијска је, а укључује култна дела попут Недељно поподне на острву Ла Гранд Жат Жоржа Сера, Старог гитаристе Пабла Пикаса, Ноћне сове Едварда Хопера и Америчке готике Гранта Вуда. Његова стална колекција од скоро 300.000 уметничких дела увећана је са више од 30 посебних изложби постављених годишње које осветљавају аспекте колекције и представљају врхунска кустоска и научна истраживања.", - "arxiv":"je arhiv za elektronske preprinte naučnih članaka u oblastima matematike, fizike, astronomije, računarstva, kvantitativne biologije, statistike, i kvantitativnih finansija koji su dostupni onlajn. U mnogim poljima matematike i fizike, skoro svi naučni članci su samoarhivirani u. je imao više od pola miliona članaka 3. oktobra 2008. Arhiva preprinta je bila 20 godina stara avgusta 2011. Do 2012. brzina rasta je dostigla nivo od 6000 članaka mesečno.", - "wikipedia":"Википедија јесте енциклопедијски пројекат слободног садржаја на интернету који развијају добровољци помоћу софтвера Медијавики. Чланке на Википедији може мењати свако с приступом интернету, што је и слоган овог веб-сајта.", - "bing":"Bing je -ov internet pretraživač. Predstavljen je 28. maja 2009. godine na konferenciji u San Diegu. Od 3. juna bio je potpuno dostupan na internetu.", - "bing images":[ - "bing:sr", - "ref" - ], - "bing news":[ - "Вести из светских, националних и локалних извора, организоване тако да добијате детаљне вести о спорту, забави, послу, политици, времену и о многим другим областима.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Паметна претрага услуге Bing помаже вам да брже пронађете оно што тражите и награђује вас.", - "https://www.bing.com/videos" - ], - "deezer":"francuski je onlajn muzički striming servis. Omogućava korisnicima da slušaju muzički sadržaj od većine svetskih izdavačkih kuća, uključujući i — na raznim uređajima, onlajn i oflajn. Sadrži i mnogo otpremljenih pesama starih/istorijskih izvođača. Nastao je u Parizu (Francuska), a ima preko 53 miliona licenciranih numera (2019) u svojoj biblioteci, s preko 30.000 radijskih kanala, 14 miliona mesečno aktivnih korisnika i 6 miliona plaćenih pratilaca. Servis je dosputan za veb, i.", - "deviantart":"DeviantArt je onlajn zajednica za umetnička dela, videografiju i fotografiju. Sajt je 7. avgusta 2000. pokrenuo Angelo Sotira, Scott Jarkoff, Matthev Stephens i drugi. Radovi su organizovani u strukturu kategorije, uključujući fotografiju, digitalnu umetnost, tradicionalnu umetnost, književnost, Fleš, snimanje filmova, skinove za aplikacije, uslužne programe za prilagođavanje operativnog sistema i druge, zajedno sa resursima za preuzimanje kao što su tutorijali i fotografije. Dodatne funkcije uključuju \"časopise\", \"ankete\", \"grupe\" i \"portfolije\".", - "wikidata":"Википодаци је база знања коју колаборативно уређују корисници и коју одржава Фондација Викимедија. Сврха јој је да буде заједнички извор одређених врста података, које користе други Викимедијини пројекти као што је Википедија. У том смислу је слична Викимедијиној остави где се складиште медијске датотеке којима се приступа са других Викимедијиних пројекта.", - "apple maps":"је услуга веб-картографије којом управља Подразумевани је систем карте за, , и, а пружа упутства и процену времена за вожњу, пешачење, вожњу бициклом и навигацију у јавном превозу. Режим „” приказује одређене густо насељене урбане центре и друга места од интереса у пејзажу састављеном од модела зграда и структура.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab је веб-алатка животног циклуса DevOps с отвореним изворним кодом. Алатка пружа менаџер спремишта за Git који нуди функције викија, функцију праћења проблема и канал за непрекидну интеграцију. Софтвер је развила компанија GitLab Inc., а првобитно су га направили Украјинци Дмитриј Запорожец и Валериј Сизов.", - "github":"GitHub је веб-базиран хостинг сервис за контролу верзије, Git. Пружа Git функционалности: дистрибуирану контролу ревизија и менаџмент изворног кода, додајући додатне функције. За разлику од Git-а, који је стриктно алат који се користи из командне линије, GitHub пружа веб графички интерфејс, радну површину и мобилну интеграцију. Такође пружа контролу приступа и неколико функција за сарадњу, као што су праћење грешака, захтеве за додавање нових карактеристика, управљање задацима и могућност прављења вики документације за сваки пројекат.", - "google":"Гугл претрага, позната и као Гугл веб-претрага или једноставно Гугл, веб-претраживач је ког је развио Гугл ЛЛЦ. Он је најкоришћенији претраживач веба на светској комуникационој мрежи на свим платформама, са тржишним уделом од 92,74 % у октобру 2018, вршећи више од 3,5 милијарди претрага сваки дан.", - "google images":[ - "Google слике. Најопсежнија претрага слика на вебу.", - "https://images.google.com" - ], - "google news":[ - "Свеобухватно, ажурно извештавање о вестима које Google вести прикупља из извора широм света.", - "https://news.google.com" - ], - "google scholar":[ - "Google академик пружа једноставан начин за опсежну претрагу стручне литературе. Претражујте најразличитије дисциплине и изворе: чланке, научне радове, књиге, сижеа и судске одлуке.", - "https://scholar.google.com" - ], - "google play apps":", првобитно, је дигитална дистрибутивна платформа за Андроид апликације и онлајн продавница за мултимедијални садржај у власништву Гугла. Сервис дозвољава проналажење и преузимање Андроид апликација направљених уз помоћ Андроид СДК-а, као и куповину музике, часописа, књига, филмова и телевизијског програма. Корисници могу да купују и уређаје, као што су Гугл Нексус мобилни телефони и таблети.", - "google play movies":[ - "google play apps:sr", - "ref" - ], - "hoogle":"Haskel je standardizovan, funkcionalni, strogo tipiziran programski jezik opšte namjene, sa nestriktnom semantikom. Ime je dobio po logičaru koji se zove. Posljednji standard Haskela je 2010, međutim, postoji grupa koja radi na sljedećoj verziji 2020.", - "imdb":"IMDb амерички је веб-сајт који поседује базу података о свим познатијим филмским и телевизијским личностима, филмовима, телевизијским емисијама, серијама, рекламама и видео-играма, премда је најпопуларнији због базе података о филмовима. Интернет гигант Амазон је априла 1998. године купио, а 2002. године му је проширена функционалност тако што је додат, чије се коришћење наплаћује.", - "library of congress":"Конгресна библиотека национална је библиотека Сједињених Држава и „истраживачка рука” Конгреса Сједињених Држава. Једна је од највећих библиотека у свету. Њена збирка укључује преко 29 милиона каталогизованих књига и других штампаних материја на преко 470 језика; више од 58 милиона рукописа; највећу збирку ретких књига у Северној Америци, преко 1 милион издања Владе САД, милион издања светских новина од уназад три стотине година, 33.000 увезаних томова новина, 500.000 ролни микрофилма, преко 6.000 стрипова; и највећу светску колекцију правних материјала, филмова, 4,8 милиона мапа, нотних записа и 2,7 милиона звучних записа. Библиотеком руководи конгресни библиотекар.", - "mastodon users":"Mastodon је услуга друштвеног умрежавања са слободним и отвореним кодом.", - "mastodon hashtags":[ - "mastodon users:sr", - "ref" - ], - "npm":"npm је менаџер пакета за ЈаваСкрипт програмски језик. Он је такође подразумевани менаџер пакета за ЈаваСкрипт радно окружење Node.js. Састоји се од конзоле, која се још назива npm и онлајн базе података јавних и плаћених приватних пакета, који се називају npm регистри. Овим регистрима се приступа преко клијентске конзоле, док се доступни пакети могу претраживати на npm вебсајту. Менаџером пакета и регистрима управља компанија npm", - "openstreetmap":"Опен стрит мап (ОСМ) је заједнички пројекат да се створи слободна мапа света која је свима доступна и свако је може уређивати.", - "pinterest":"Пинтерест је компанија веб и мобилне апликације која користи софтвер дизајниран за откривање информација на Вебу, користећи углавном слике и у мањој количини, GIF анимације и видео снимке. Веб-локацију су основали Бен Силберман, Пол Шиара и Еван Шарп. Пинтерест је достигао 200 милиона активних корисника од септембра 2017. године.", - "piratebay":"najveći je svetski bittorent pretraživač. Osnovala ga je švedska antiautorska organizacija Piratbiron 2003. godine, ali već 2004. godine nastupaju kao odvojena organizacija. Istom trenutno rukovode Gotfrid Svartholm, Fredrik Nej i Peter Šunde. tragači na kojima mogu da se pronađu sadržaji poput muzike, kompjuterskih programa i sličnog su zaštićeni autorskim pravima pa su, s obzirom na to, ilegalni. Međutim, u Švedskoj se takvi tragači ne smatraju ilegalnim. Odatle je često na udarima organizacija za zaštitu autorskih prava.", - "reddit":"је веб сајт у виду форума заснован на принципу постављања, коментарисања и оцењивања веб садржаја. Корисници могу бити регистровани, али није неопходно за претраживање веб сајта. Корисници на сајт постављају садржај у виду текста, линкова и фотографија које потом оцењују други корисници. Садржај је подељен у сабредите, који обично покривају неку одређену тему као што су новости, наука, технологија, видео-игре, књиге, филмови, музика, храна, фотографије, као и разноврсан садржај који интернет нуди.", - "soundcloud":"SoundCloud онлајн је веб-сајт платформа за аудио-дистрибуцију и дељење музике са седиштем у Берлину. Корисници имају могућност да отпреме, уреде и поделе аудио снимке.", - "semantic scholar":"Semantički učenjak je pretraživač akademskih publikacija podržan veštačkom inteligencijom razvijen na Alenovom institutu za veštačku inteligenciju i javno lansiran u novembru 2015. godine. On koristi napredak u obradi prirodnog jezika da obezbedi sažetke za naučne radove. Tim Semantičkog učenjaka aktivno istražuje upotrebu veštačke inteligencije u obradi prirodnog jezika, mašinskom učenju, interakciji čoveka i računara i pronalaženju informacija.", - "yahoo news":"је интернет новинарски агрегатор које је покренула компанија Јаху. Вести на овом сајту подељене су у категорије политика, бизнис, здравље, путовања, време, нове слике и друге.", - "youtube":"Јутјуб или Јутуб амерички је веб-сајт за дијељење и размјену видео-датотека.", - "dailymotion":"Dailymotion је француска технолошка платформа за дељење видеа у власништву Вивендија. Северноамерички партнери за лансирање били су Vice Media, Блумберг и Hearst Digital Media. Доступан је широм света на 183 језика и 43 локализоване верзије које садрже локалне почетне странице и локални садржај.", - "vimeo":"Вимио је интернет сајт за постављање, размену и преглед видео-снимака. Основали су га Џејк Лодвик и Зак Клајн.", - "wikibooks":"Викикњиге је вики заснован пројекат Викимедије којег хостује Задужбина Викимедије за креирање књига слободног садржаја и прибележених текстова које свако може да уређује.", - "wikinews":"Викиновости, раније Викивести, су један од Викимедијиних пројеката који свакодневно сакупља најзначајније вести. По броју вести највеће су Викиновости на српском језику. Након тога долазе Викиновости на енглеском и пољском језику.", - "wikiquote":"Викицитат је Википедијин „сестрински пројекат“. Темељи се на МедијаВики програмској подршци. Дио је породице на викију обједињених у Фондација Викимедија. Замисао потиче од Данијела Алстона. Извршио је и разрадио Брајон Вибер. Сврха пројекта је произвести скуп цитата познатих особа, књижевних дјела и пословица.", - "wikisource":"Викизворник је Википедијин сестрински пројекат који дјелује са циљем стварања збирке бесплатних оригиналних текстова, али и превода тих текстова на различите језике. Викизворник прикупља и у дигиталном формату похрањује претходно објављене текстове, између осталог романе, нефикциона дјела, писма, говоре, законе и историјске документе. Сви прикупљени текстови или су слободни за објављивање или су објављени под ГЛСД дозволом.", - "wikispecies":"Vikivrste je internet projekt zasnovan na viki tehnologiji koji podržava Zadužbina Vikimedija, pokrenut sa ciljem da se stvori sveobuhvatan katalog svih vrsta sa slobodnim sadržajem i usmeren više na naučnike nego na opštu javnost. Džimi Vejls, predsednik Zadužbine Vikimedija, izjavio je da urednici ne moraju faksirati svoje diplome, no da će prilozi morati proći recenzijski postupak kod tehničke publike. Vikivrste je dostupan pod licencom GNU-a za slobodnu dokumentaciju i CC BY-SA 3.0.", - "wiktionary":"Викиречник вишејезички је интернет базиран пројекат, који ствара речник и тесаурус слободног садржаја, доступан на више од 150 језика.", - "wikiversity":"Викиверзитет wɪkiˈvɜːsətiː је пројекат Викимедије који подржава едукацијску заједницу, материјале за учење и припадне активности. Разликује се од структурираних пројеката као што је Википедија по томе што нуди низ туторијала или курсева за учење, а не формални садржај.", - "wikivoyage":"Википутовање wɪkiˈvɔɪ.ɪdʒ, слободан водич за путовање на којем аутори волонтери пишу о туристичким дестинацијама и темама. Братски је пројекат Википедије који подржава и хостује непрофитна Задужбина Викимедија.", - "wikicommons.images":"Викимедијина остава, такође позната и као Остава или Викиостава, је складиште за слике, звучне записе и друге мултимедијалне датотеке које су лиценциране под неком од слободних лиценци. То је пројекат Задужбине Викимедија као што је то и Википедија, али са тим да је она заједничко складиште „средстава“ за све различите Викимедијине братске пројекте, без обзира на језик.", - "wolframalpha":"Волфрам алфа је рачунарски упитнички систем који је развио Волфрам рисерч, на челу са Стивеном Волфрамом. То је интернет сервис који за разлику од претраживача који избаце листу докумената и страница које можда поседују одговор на питање, даје директне одговоре на конкретна питања уз помоћ огромне базе података, алгоритама и на хиљаде процесора смештених у Дел центрима. Пројекат је најављен у марту, а јавности је презентован 15. маја 2009. године.", - "rumble":"Рамбл канадски је веб-сајт за дељење и размену видео-датотека. Основао га је 2013. године Крис Павловски, технолошки предузетник из Канаде. Месечни број корисника Рамбла бележи брзи раст од јула 2020. године, са 1,6 милиона корисника на 31,9 милиона до краја првог квартала 2021.", - "brave":"Брејв је бесплатан веб прегледач отвореног кода, који је заснован на Хромијум веб прегледачу. Брејв веб прегледач онемогућава приказивање реклама и омогућава да корисници доприносе раду креатора садржаја на интернету у виду криптовалуте БАТ.", - "brave.images":[ - "brave:sr", - "ref" - ], - "brave.videos":[ - "brave:sr", - "ref" - ], - "brave.news":[ - "brave:sr", - "ref" - ] - }, - "sv":{ - "9gag":"9gag är en engelskspråkig underhållningssajt startad 2008. Innehållet på sidan är nästan helt användargenererat och består i huvudsak av humoristiska bilder och korta videor i form av diverse internetfenomen. Användarna kan gilla, ogilla och kommentera på dessa bilder. Det finns tre sektioner, \"Hot\" \"Trending\" och \"Fresh\", beroende på hur många gillanden och kommentarer bilderna får så hamnar de i olika sektioner. Namnet 9gag kan ha sitt ursprung i att webbplatsen tidigare visade nio skämt per sida.", - "apple app store":"Itunes Store är en försäljningstjänst från Apple som säljer digital musik över internet via programvaran Itunes för Mac OS- och Windows-baserade datorer, men sedan september 2007 även via Iphone och Ipod touch under namnet Itunes Wi-Fi Store. Den internetbaserade affären började sin försäljning i USA 28 april 2003 under namnet Itunes Music Store, och har sedan dess varit den dominerande musiktjänsten på internet. Affären marknadsför även Apples Ipod. Den 10 maj 2005 kom tjänsten även till de skandinaviska länderna.", - "artic":"Art Institute of Chicago är ett konstmuseum i Chicago i USA, beläget i parken Grant Park nära Michigansjön.", - "arxiv":"Arxiv.org är en databas för digital förhandspublicering av ännu ej granskade vetenskapliga artiklar (preprints), inom disciplinerna matematik, fysik, astronomi, datavetenskap, kvantitativ biologi, statistik, och kvantitativ finansvetenskap. Alla arkiverade artiklar är tillgängliga via Internet. Arxiv sjösattes den 14 augusti 1991 och passerade 500 000 arkiverade artiklar den 3 oktober 2008. Antalet inlämnade bidrag har ökat stabilt sedan starten och ligger idag på drygt 7 000 per månad.", - "bandcamp":"Bandcamp är en amerikansk webbplats som lanserades 2008. Den fungerar som en e-handelsplattform där artister och skivbolag kan ladda upp musik som kan säljas och strömmas. Priserna bestäms av skivbolagen och artisterna själva.", - "wikipedia":"Wikipedia är en wiki och en mångspråkig webbaserad encyklopedi. Den har i huvudsak fritt och öppet innehåll som utvecklas av dess användare, ofta benämnda wikipedianer. Innehållet bygger på oberoende trovärdiga källor. Wikipedia lanserades den 15 januari 2001 av Jimmy Wales och Larry Sanger, ursprungligen i en engelskspråkig version, och är det mest besökta uppslagsverket på internet. Svenskspråkiga Wikipedia startades den 21 maj 2001. Wikipedia är (2020) rankad som världens sjunde och Sveriges sjätte mest besökta webbplats enligt Similarweb. Wikipedia drivs av den icke-vinstinriktade stiftelsen Wikimedia Foundation med stöd av privata donatorer. Projektet bygger på wikiprogramvaran Mediawiki, som är fri programvara och har öppen källkod.", - "bing":"Microsoft Bing är en söktjänst utvecklad av Microsoft som ersatte Live Sök den 3 juni 2009. Den 16 september 2012 stod Bing för 10,7 % av marknaden, vilket gjorde den till den tredje största sökmotorn i världen efter Google och Yahoo. Två år tidigare, i augusti 2010 var Bings andel av sökmarknaden på 5,5 %. Bings placering var då delad med sökmotorn Baidu som hade lika stor andel.", - "bing images":[ - "bing:sv", - "ref" - ], - "bing news":[ - "Nyheter från globala, nationella och lokala nyhetskällor som ordnats så att du enkelt får detaljerade nyheter om sport, underhållning, affärer, politik, väder och mycket mer.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Med intelligent sökning från Bing hittar du snabbt och enkelt det du söker, och du får belöningar.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket är en webbaserad lagringstjänst för kodprojekt som använder Mercurial eller Git. Tjänsten startades 2008 av Jesper Nøhr och köptes upp av det australiensiska företaget Atlassian i september 2010.", - "currency":"Duckduckgo är en söktjänst som fokuserar på användarnas personliga integritet och anonymitet. Potentiell personidentifierande information sägs varken lagras vid besök på webbplatsen eller associeras med söktermer, vilket även gäller IP-adresser. Inget skickas heller till någon tredje part.", - "deezer":"Deezer är en webbaserad musiktjänst som även har mobilappar. Tjänsten lanserades 2007 i Frankrike av Jonathan Benassaya.", - "deviantart":"Deviantart (DA) är en av världens största konstrelaterade webbplatser. Webbplatsen samlar över 25 miljoner medlemmar och över 250 miljoner verk (2017). Deviantart syftar till att ge konstnärer en plats att ställa ut och diskutera verk. Verken är organiserade i en omfattande kategoristruktur, med fotografier, digital konst, traditionell konst, litteratur, film med mera. Webbplatsen startades av Scott Jarkoff, Matthew Stephens och Angelo Sotira och lanserades 7 augusti 2000.", - "ddg definitions":[ - "currency:sv", - "ref" - ], - "erowid":"Erowid, även kallat Erowid Center är en ideell organisation som arbetar för drogupplysning och skademinimering genom att tillhandahålla information om hur psykoaktiva substanser används i världen. Organisationen driver webbplatsen Erowid.org som primär fokus, men bidrar också med forskningsdata till andra hälso- och utbildningsorganisationer. Erowid finansieras av donationer.", - "wikidata":"Wikidata är ett projekt initierat av Wikimedia Tyskland, som startade en wiki den 29 oktober 2012 för gemensam flerspråkig lagring av data. Projektet drivs sedan 2013 av Wikimedia Foundation. Målet var i ett första skede att möjliggöra synkronisering av olika språkversioner av Wikipedia vad gäller språklänkar, och senare även uppgifter i faktarutor, länklistor, tabeller, diagram och sifferuppgifter i den löpande texten, tillsammans med källhänvisningar. Wikidata är lämplig för sifferuppgifter och andra kvantitativ data som inte är löpande text, exempelvis geografiska positioner, folkmängd, sportresultat, och hur olika objekt (Wikidataartiklar) är relaterade till varandra. Ett syfte med wikidata är att underlätta arbetet med att underhålla flera språkversioner av Wikimedias olika projekt. Wikidata lagrar data gemensamt på motsvarande sätt som Wikimedia Commons lagrar multimediala filer gemensamt. Mycket av datat i wikidata har hämtats av bottar från Wikipedias faktarutor på olika språk, men också från andra källor, exempelvis ontologier som beskriver vilka begrepp som är instanser och underklasser av varandra. Wikidatas innehåll redigeras dessutom manuellt, på liknande vis som Wikipedias innehåll.", - "duckduckgo":[ - "currency:sv", - "ref" - ], - "duckduckgo images":[ - "currency:sv", - "ref" - ], - "duckduckgo videos":[ - "currency:sv", - "ref" - ], - "duckduckgo news":[ - "currency:sv", - "ref" - ], - "duckduckgo weather":[ - "currency:sv", - "ref" - ], - "apple maps":"Apple Kartor, eller Apple Maps på engelska är en karttjänst utvecklad och publicerad av Apple Inc. Tjänsten är tillgänglig till olika nivåer i hela världen. Appen ”Kartor” kommer förinstallerad på alla enheter som kör iOS, iPadOS, WatchOS och MacOS och kan exempelvis ge färdbeskrivningar och beräkna ankomsttider för bilister, gående, cyklister och för kollektivtrafik.", - "emojipedia":"Emojipedia är ett digitalt lexikon för emojier. Lexikonet dokumenterar alla emojier som finns i standarden Unicode och deras betydelse. Emojipedia har kallats för världens främsta resurs om emojier.", - "etymonline":"Online Etymology Dictionary är en nätbaserad engelskspråkig etymologisk ordbok, ursprungligen framtagen omkring 2000–2001 av historikern Douglas R. Harper.", - "fdroid":[ - "pakethanterare som innehåller fri programvara samt open source för Android plattformen", - "wikidata" - ], - "flickr":"Flickr är en webbtjänst för uppladdning av digitala bilder och videofilmer i privata eller publika fotoalbum. Flickr är även en community som gör det möjligt för användare att skapa och använda sig av diskussionsgrupper samt kommentera bilder och videoklipp. Användare kan skapa ett Flickr-konto eller logga in med Facebook eller Google för att ha ett konto på Flickr. Man kan automatiskt \"tagga\" sina bilder med Creative commons som licens.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"Github är en webbaserad och centraliserad lagring av versionshistorik för programvaruutvecklingsprojekt som använder versionshanteringssystemet Git. Github erbjuder gratis lagring men även abonnemang för extra funktionalitet. Många projekt på Github kretsar kring öppen källkod vilket ger användare gratis tillgång till funktionalitet som i annat fall kostar. I maj 2011 utsågs Github till det populäraste värdtjänsten för lagring av öppen källkod och gick därmed om konkurrenterna Sourceforge och Google Code.", - "google":"Google är en sökmotor som ägs av Google Inc. Webbplatsen är den mest besökta på hela Internet. Vid speciella tillfällen, som vid till exempel vissa kända personers födelsedagar, större jubileum eller helgdagar, ändras Google-logotypen på webbplatsen för att återspegla dessa händelser.", - "google images":"Google Bilder är en söktjänst som tillåter användare att söka efter bilder på webben. Tjänsten ägs av Google och introducerades i juli 2001.", - "google news":"Google Nyheter är en nyhetstjänst som automatiskt sammanställer nyhetsartiklar från tusentals nyhetsmedier världen över. Tjänsten tillhandahålls av Google. Google Nyheter-sajten lanserades i en betaversion april 2002 och lanserades skarpt i januari 2006.", - "google videos":"Google Videos var en gratistjänst som hölls tillhanda av Google som lät vem som helst ladda upp videoklipp på Googles servrar såväl som att man kan göra sina egna videoklipp tillgängliga gratis. Användare kunde söka och spela videor direkt från Google Video, så kallad streaming (strömning). Man kunde också ladda ner videofilerna eller lägga upp dem som strömmade enheter på sin egen webbplats. Möjligheten att ladda upp nya videor lades dock ned 2009 bland annat på grund av Googles uppköp av Youtube som senare helt ersatte tjänsten.", - "google scholar":"Google Scholar är en tjänst från söktjänstföretaget Google. Med hjälp av den kan man söka efter vetenskapliga publikationer och tidskrifter samt se vilka bibliotek dessa finns tillgängliga på. Tjänsten är även en citeringsdatabas som visar vilka artiklar och böcker som hänvisar till varandra och hur många sådana hänvisningar varje verk har. Enskilda forskare kan skapa sidor inom ramen för tjänsten där deras verk och citeringar samlas. På dessa sidor redovisas årlig statistik över antalet citeringar som forskarens verk har genererat.", - "google play apps":"Google Play, tidigare Android Market, är en onlinebutik utvecklad av Google för enheter som använder operativsystemet Android, till exempel smartmobiler och surfplattor. Google Play finns förinstallerat på de flesta Android OS-enheter vilket ger användaren möjligheter att ladda ner olika applikationer skapade av Google eller tredjepartsutvecklare. Det kan även användas till att söka och läsa information om olika applikationer.", - "google play movies":[ - "google play apps:sv", - "ref" - ], - "gpodder":"gPodder är ett datorprogram för bland annat GNU/Linux, Windows och Mac OS och fungerar som en hanterare för poddradiokanaler. Programmet är GNU GPL-licensierat och är således fri programvara. Programmets senaste stabila utgåva är version 2.9 och utgavs i oktober 2010. gPodder är skrivet i Python, och utvecklas av the gPodder Team, som leds av Thomas Perl.", - "hoogle":"Haskell är ett funktionellt programspråk. Utvecklingen av språket, som fick sitt namn efter den amerikanska logikern Haskell Curry, startades 1987 av en internationell kommitté. Femton år senare, år 2003, publicerade de sedan en stabil definition av språket. Haskell bygger till stor del, som många andra funktionella programspråk, på lambdauttryck och rekursion, men har också ett starkt typsystem och flera andra relativt ovanliga egenskaper som exempelvis lat evaluering. Språket är också konstruerat för att vara så kompakt och så likt matematik som möjligt, och lånar därför symboler ur både logiken och matematiken.", - "imdb":"Internet Movie Database är den äldsta och största filmdatabasen på internet. Dess tyngdpunkt ligger på engelskspråkiga filmer, men innehåller även information om icke-engelska filmer, lågbudget- och TV-filmer, TV-serier, datorspel samt i viss utsträckning TV-program. Enligt IMDB besöks webbplatsen av över 100 miljoner personer per månad och databasen innehåller över 3,5 miljoner filmer, TV-serier och program. Sedan 1998 ägs IMDB av Amazon.com.", - "lemmy communities":[ - "Reddit-liknande programvara", - "wikidata" - ], - "lemmy users":[ - "lemmy communities:sv", - "ref" - ], - "lemmy posts":[ - "lemmy communities:sv", - "ref" - ], - "lemmy comments":[ - "lemmy communities:sv", - "ref" - ], - "library genesis":"Library Genesis eller LibGen är en sökmotor för vetenskapliga artiklar och böcker, som ger fri tillgång till annars betalt innehåll. Bland annat innehåller den PDF-filer från en webbportal vid namn ScienceDirect, vilket ägs av bokförlaget Elsevier. I augusti 2019 innehöll databasen mer än 76 miljoner vetenskapliga artiklar, 2,3 miljoner facklitterära böcker, 2,1 miljoner skönlitterära böcker och 2 miljoner filer av tecknade serier.", - "library of congress":[ - "de facto nationalbibliotek för Amerikas förenta stater.", - "wikidata" - ], - "mastodon users":"Mastodon är en mjukvara med fri och öppen källkod som används för driva mikrobloggar. Funktionerna liknar de som plattformen Twitter har. Mjukvaran används av ett antal självständiga noder. Dessa kallas \"instanser\" och drivs av olika aktörer. Varje Mastodon-användare har ett användarkonto i en specifik instans. Dessa instanser kan sedan prata med varandra genom en öppen Internet-standard som är skapad av standardiseringsorganet W3C.", - "mastodon hashtags":[ - "mastodon users:sv", - "ref" - ], - "metacpan":"CPAN är en akronym för Comprehensive Perl Archive Network. Det är ett stort arkiv innehållande moduler till Perl.", - "openstreetmap":"OpenStreetMap, är ett ideellt projekt för framtagning av geografisk information. Datan kan sedan användas för att skapa vägkartor, kartor för geocaching, kartor över sevärdheter i en viss ort eller andra ändamål, både ideellt och kommersiellt.", - "pinterest":"Pinterest är en webbtjänst eller en social nätverkstjänst där användare kan ladda upp, organisera och dela med sig av sina bilder på digitala anslagstavlor, pinboards. Användarna kan också med hjälp av ett tillägg i webbläsaren spara och dela bilder som de hittar på olika webbplatser på internet. Webbplatsägare bereds möjlighet att publicera en knapp på sin webbplats som automatiskt delar webbplatsens innehåll på besökarens pinboard på Pinterest.", - "piratebay":"The Pirate Bay, TPB, är en svensk trackersökmotor som grundades i Sverige 2003, vilken i dagsläget har över 5 miljoner användare och indexerar över 10 miljoner torrent-filer. \"Trackern\" är en av världens största och en pionjär inom nätbaserad kopiering och spridning av digitalt material. The Pirate Bays logotyp föreställer ett piratskepp vars ena segel innehåller en variant av Jolly Roger (\"Sjörövarflaggan\"), i vilken dödskallen ersatts av ett kassettband. Symbolen kassettband och korsade ben användes under 1980-talet av musikindustrin i kampanjen Home Taping is Killing Music, och en variant används även av Piratbyrån. I december 2014 släcktes hemsidan ner efter en razzia av svenska polisen. Den 31 januari 2015 återkom sajten med en fågel Fenix som logga istället för ett piratskepp.", - "pubmed":"Medline är en databas för vetenskapliga artiklar inom det medicinska fältet, som drivs av United States National Library of Medicine. Databasen omfattar bibliografiuppgifter med mer än 24 miljoner referenser som publicerats i över 5 200 vetenskapliga tidskrifter på numer omkring 40 språk; tidigare upp till omkring 60 språk. Från 1950-talet och framåt ingår ofta citeringar och sammanfattningar för forskningsartiklar inom det biomedicinska fältet, medan tidigare artiklar anges ofta enbart med uppgift om rubrik och författare.", - "reddit":"Reddit är en webbplats med nyheter och diskussionsforum. Användare kan förutom att läsa innehållet också posta egna länkar till innehåll på nätet eller posta \"self\"-poster som innehåller användarskapad text. Andra användare kan sen antingen rösta \"upp\" eller \"ner\" de postade länkarna, och de mest framgångsrika länkarna når då framsidan. Användare kan också kommentera länkar som postats och svara på andra kommentarer, vilket skapar ett community. Reddit-användare kan också skapa sina egna inriktade sektioner som kallas subreddits. Ett exempel på en sådan är den svenska (r/sweden), där man kan posta länkar och kommentera.", - "soundcloud":"Soundcloud är en onlineplattform för distribution av ljud, främst musik via datormoln.", - "tagesschau":"Tagesschau är en tysk nyhetssändning i ARD som produceras av ARD-aktuell och som visas flera gånger dagligen i tv-kanalen Das Erste. Dess viktigaste sändning är huvudsändningen klockan 20, som även visas i de tyska tredjekanalerna samt Phoenix, 3Sat, EinsPlus och EinsExtra. Tagesschau är Tysklands äldsta TV-nyhetsprogram och har sänts sedan 26 december 1952. Tagesschau har sin studio hos Norddeutscher Rundfunk i Hamburg. Programmet inleds traditionellt med en gonggong i vinjetten.", - "youtube":"Youtube är en videogemenskap, det vill säga en webbplats med videoklipp som laddas upp av dess användare, med tillhörande diskussioner och sociala medier-funktioner. Webbplatsen öppnades den 14 februari 2005.", - "dailymotion":"Dailymotion är en fransk videogemenskap, det vill säga en webbplats med videoklipp som laddas upp av dess användare, med tillhörande diskussioner och sociala medier-funktioner. Webbplatsen öppnades i mars 2005. Sedan våren 2014 har Dailymotion stöd för Chromecast.", - "vimeo":"Vimeo är en amerikansk webbplats för videodelning grundad 2004.", - "wikibooks":"Wikibooks är ett systerprojekt till Wikipedia som tillhandahåller böcker under fri licens. Till skillnad från Wikipedia, som publicerar uppslagsverksartiklar, publicerar Wikibooks böcker eller kompendier, likaså skrivna av användare själva. Det kan röra sig om så olika ämnen som astronomi, språk, hur man installerar Windows, receptsamlingar eller hur man skriver ett datorspel.", - "wikinews":"Wikinews är en nyhetstjänst, baserad på wikiteknik, som tillhandahålls av Wikimedia Foundation. 2013 fanns den på cirka 30 språk. Den 10 augusti 2013 stängdes den svenskspråkiga upplagan.", - "wikiquote":"Wikiquote är en citatsamling och är ett systerprojekt till Wikipedia. Wikiquote liknar denna mycket i utseende och körs på samma programvara, MediaWiki. Projektet startades i juni 2003, och fanns då endast i en engelsk version. I juli 2004 lades nya språk till och i dagsläget finns Wikiquote tillgängligt på 24 språk, däribland, svenska. Svenskspråkiga Wikiquote hade februari 2011 över 1 000 artiklar.", - "wikisource":"Wikisource är ett systerprojekt till Wikipedia som startades den 24 november 2003. Det är ett arkiv för tidigare publicerade texter, såsom böcker och historiska dokument, som det är fritt att använda, i allmänhet för att upphovsrättsskyddet upphört. Vid sidan av faksimilversioner tillhandahåller Wikisource bearbetade versioner med korrekturläst och sökbar text, eventuellt med kommentarer, samt bakgrundsinformation, såsom bibliografier.", - "wikispecies":"Wikispecies är ett wiki-baserat systerprojekt till Wikipedia som i december 2019 uppnådde 700 000 artiklar.", - "wiktionary":"Wiktionary är ett flerspråkigt webbaserat projekt vars syfte är att skapa en fri ordbok. Projektet finns på över 170 olika språk. Till skillnad från traditionella ordböcker är Wiktionary kollektivt skriven av volontärer. Ordboken använder sig av wikiprogramvara, som tillåter besökare och användare att redigera nästan alla artiklar. Projektets slogan är den fria ordboken. Wiktionary använder även samma wikimotor, MediaWiki, som alla andra Wikimediaprojekt.", - "wikiversity":"Wikiversity är en wiki som ägs av Wikimedia Foundation med syftet att låta användare skapa, dela och ta del av öppna läromedel och forskningspublikationer. Denna typ av material är i allmänhet inte tillåtet på Wikipedia, eftersom det inte har encyklopedisk karaktär och kan innehålla originalforskning som inte kan bekräftas med källreferenser.", - "wikivoyage":"Wikivoyage är en fri reseguide på flera språk, utvecklad av en användargemenskap. Reseguiden skrivs över Internet med wiki-teknik. Wikivoyage startades i september 2006 som en fork av Wikitravels tyskspråkiga version och fungerar sedan november 2012 som ett av Wikimedia Foundations projekt. Wikivoyage finns 2016 på 18 språk, bland annat svenska. Varje språkversion är självständig vad gäller innehåll och administration.", - "wikicommons.images":"Wikimedia Commons är en av Wikimedia Foundation upprättad databas för i huvudsak fria bilder, videofilmer samt musik och ljudfiler. Den startade sin verksamhet 7 september 2004, och i början av juni 2019 tillhandahöll Wikimedia Commons drygt 54 miljoner filer.", - "wolframalpha":"Wolfram Alpha är ett sökmotorliknande internetverktyg som utvecklats av Wolfram Research.", - "dictzone":[ - "DictZone online ordböcker, svenska-ungerska, engelska-svenska...", - "https://dictzone.com/" - ], - "1337x":"1337x är en Bittorrent-webbplats med torrentfiler och magnetlänkar som används för peer-to-peer-fildelning. Den grundades 2007 och växte i popularitet efter att KickassTorrents stängdes ner. Enligt nyhetssidan TorrentFreak var 1337x den sjätte mest populära torrent-hemsidan juni 2016.", - "peertube":"Peertube, i marknadsföringssyfte skrivet PeerTube, är en fritt licensierad, decentraliserad, Activitypub-federerad videoplattform som använder WebTorrent- och peer-to-peer-teknik för att minska belastningen på enskilda servrar när videor visas.", - "wttr.in":[ - "Väderleksprognos för: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave är en gratis webbläsare med öppen källkod utvecklad av Brave Software, Inc. baserad på webbläsaren Chromium. Brave är en integritetsfokuserad webbläsare som automatiskt blockerar onlineannonser och webbplatsspårare i sina standardinställningar.", - "brave.images":[ - "brave:sv", - "ref" - ], - "brave.videos":[ - "brave:sv", - "ref" - ], - "brave.news":[ - "brave:sv", - "ref" - ] - }, - "ta":{ - "artic":"ஆர்ட் இன்ஸ்டியூட் ஆப் சிகாகோ என்பது ஐக்கிய அமெரிக்காவின் சிகாகோ நகரில் அமைந்துள்ள கலைக்களஞ்சிய அருங்காட்சியகம் ஆகும். இவ்வருங்காட்சியகம் மிகப்பிரம்மாண்டமான மூன்று கட்டடங்களில் இயங்குகிறது. இம்மூன்று கட்டடங்களும் முதல் தளத்துடன் இணைக்கப்பட்டுள்ளன.", - "wikipedia":"விக்கிப்பீடியா என்பது, வணிக நோக்கற்ற விக்கிமீடியா நிறுவனத்தின் உதவியுடன் நடத்தப்படும், கூட்டாகத் தொகுக்கப்படும், பன்மொழி, கட்டற்ற இணையக் கலைக்களஞ்சியமாகும். தமிழ் விக்கிப்பீடியாவின் 1,00,000க்கும் மேற்பட்ட கட்டுரைகளுடன் சேர்த்து இதன் மொத்தக் கட்டுரைகளான 24 மில்லியன் கட்டுரைகளும் உலகெங்கிலுமுள்ள தன்னார்வலர்களால் கூட்டாக எழுதப்படுகின்றன. பெரும்பாலும் இதன் எல்லாக் கட்டுரைகளும், இதனைப் பயன்படுத்தும் எவராலும், தொகுக்கப்படக் கூடுவன. மேலும் இது கிட்டத்தட்ட 100,000 முனைப்பான பங்களிப்பாளர்களையும் கொண்டுள்ளது. அக்டோபர் 2023 வரையில், விக்கிப்பீடியா 285 மொழிகளில் செயற்படுகிறது. இது இணையத்தளத்தில் இயங்கும் உசாத்துணைப் பகுதிகளிலேயே மிகவும் பெரியதும், அதிகப் புகழ்பெற்றதுமாகும். மேலும், இது அலெக்சா இணையத்தளத்தில் காணப்படும் இணையத்தளங்களின் தரவரிசையில் ஆறாவது இடத்தில் உள்ளதோடு, உலகளவில் அண்ணளவாக 365 மில்லியன் வாசகர்களையும் கொண்டுள்ளது.", - "bing":"பிங் (Bing) என்பது மைக்ரோசாப்ட் நிறுவத்திற்குச் சொந்தமான வலைத் தேடல் பொறி ஆகும். இத்தேடல் பொறியானது முன்னர் லைவ் சேர்ச், வின்டோசு லைவ் சேர்ச், எம்எஸ்என் சேர்ச் ஆகிய பெயர்களைக் கொண்டு அமைந்திருந்தது. இத்தேடல் பொறி மைக்ரோசாப்ட் நிறுவனத்தினால் முடிவெடுக்கும் பொறியாக விளம்பரப்படுத்தப்பட்டது. 2009 ஆம் ஆண்டு மே மாதம் 28 ஆம் திகதியன்று சான் டியேகோ நகரில் இடம்பெற்ற ஆல் திங்ஸ் டிஜிட்டல் (All Things Digital) மாநாட்டின் போது மைக்ரோசாப்ட் நிறுவனத்தின் முன்னாள் தலைமை நிர்வாக அதிகாரி இசுட்டீவ் பால்மரால் இத்தேடல் பொறி அறிமுகப்படுத்தப்பட்டு சூன் 1 இல் வெளியிடப்படும் எனவும் அறிவிக்கப்பட்டது.. 2009 ஆம் ஆண்டு சூன், 29 ஆம் திகதியன்று யாகூ! தேடல் பொறியினை பிங் தேடல் பொறி நிர்வகிக்கும் என அறிவிக்கப்பட்டது.", - "bing images":[ - "bing:ta", - "ref" - ], - "bing videos":[ - "Bing-இன் அறிவார்ந்த தேடலானது, நீங்கள் தேடுவதை விரைவாக கண்டறிவதை எளிதாக்கி உங்களுக்கு வெகுமதிகளையும் வழங்குகிறது.", - "https://www.bing.com/videos" - ], - "currency":"டக்டக்கோ என்பது இணையத்தில் உள்ள ஒரு தேடுபொறியாகும். இந்த தேடுபொறி ஆனது ஒருவர் இணையத்தில் என்ன தேடுகிறார் என்பதை பற்றி எந்த விதமான பின்குறிப்பும் எடுத்து வைக்காது ஒருவரது அந்தரங்க தகவல்களை குறித்த தடங்களை பின் தொடராது. மேலும் வினவுகளுக்கு மிக சிறந்த பதில்களை தரவல்லது. இந்த தேடுபொறியை கப்ரியல் வேயன்பெர்க் என்பவர் நிறுவினார், இவரே இதன் தலைமை நிர்வாக அதிகாரியும் ஆவார். இந்த தேடுபொறி நிறுவனம் 2008 ஆம் ஆண்டு பிப்ரவரி மாதம் அமெரிக்காவின், பென்சில்வேனியா மாகாணத்தில் உள்ள வேலிஃபோர்ஜில் (valleyforge) நிறுவப்பட்டது", - "ddg definitions":[ - "currency:ta", - "ref" - ], - "wikidata":"விக்கித்தரவு (Wikidata) என்பது விக்கிமீடியா நிறுவனத்தால் இயக்கப்படும் பன்மொழி விக்கி அறிவுத் தளம் ஆகும். விக்கிப்பீடியா போன்ற விக்கிமீடியத் திட்டங்களில் பயன்படுத்துவதற்கான தரவுகளை வழங்கும் பொதுமூலமாக இது தொழிற்படுகின்றது. விக்கிபேசு என்ற மென்பொருளில் இது கட்டமைக்கப்பட்டுள்ளது.", - "duckduckgo":[ - "currency:ta", - "ref" - ], - "duckduckgo images":[ - "currency:ta", - "ref" - ], - "duckduckgo videos":[ - "currency:ta", - "ref" - ], - "duckduckgo news":[ - "currency:ta", - "ref" - ], - "duckduckgo weather":[ - "currency:ta", - "ref" - ], - "tineye":"டின் ஐ என்பது ஒரு மீளுரு படிம தேடு பொறி இணைய தளமாகும். இது கனடாவில் உள்ள பால் புலோர் மற்றும் லைலா என்பவர்களால் 1999ஆம் ஆண்டு கண்டுபிடிக்கப்பட்டது.", - "flickr":"பிளிக்கர் அல்லது பிலிக்கர் (Flickr), ஒளிப்படம் மற்றும் நிகழ்பட சேமிப்பு சேவையை வழங்கும் தளம் ஆகும். இது ஆரம்பத்தில், இணையப் பயனர்கள், இலகுவாக அவர்களுடைய ஒளிப்படங்களை சேமித்து பகிர ஏதுவான தளமாக பிரபலமானது. இந்த சேவை நிறுவனம் லுடைகோர்ப் என்ற நிறுவனத்தினால் உருவாக்கப்பட்டதோடு, பின்னாளில் இது யாகூ! நிறுவனத்தினால் வாங்கப்பட்டது.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"கிட்ஹப் இன்க் ஒரு இணைய வழி கிட் திருத்தக் கட்டுப்பாடு ஆகும். இது பெரும்பாலும் கணினி நிரல்களுக்காகப் பயன்படுகிறது. இது நிரல் திருத்தக்கட்டுப்பாடும், நிரல் மேலான்மையயும், இன்னும் பிற சேவைகளையும் அளிக்கிறது. இது பயனர் நுழைவுக் கட்டுப்பாடு, பிழை கண்காணிப்பு, திட்ட மேலான்மை, புதிய வேண்டுகோள், மற்றும் திட்டத்திற்கான விக்கி சேவையையும் வழங்குகின்றது.", - "google":"கூகிள் தேடல் கூகிள் நிறுவனத்தின் உலகின் மிகப் பெரும் தேடற்பொறியாகும். கூகிள் தேடுபொறி இணையத்தில் உள்ள அனைத்து பக்கங்களில் பயனர்களின் தேடலுக்கு ஒத்த உள்ளடக்கத்தை உள்ளவையாக கருதப்படும் பக்கங்களை பட்டியலிடுகின்றது. கூகிள் தேடுபொறி பல்வேறு சேவைகள் மூலமாக பல நூறு மில்லியன் தேடல்களை மேற்கொள்கின்றது. சமீபத்தில் வெளியான கூகிள் தேடுபொறி பற்றிய வீடியோ விளம்பரம் ஒன்று பிரபலங்களை கண்கலங்க வைத்துள்ளது.", - "google images":[ - "Google Images. வலையில் கிடைக்கக்கூடிய மிக விரிவான படத் தேடல்.", - "https://images.google.com" - ], - "google news":"கூகிள் செய்திகள், கூகிள் நிறுவனத்தால் வழங்கப்படும் இலவச செய்தி திரட்டி ஆகும். ஒரு தானியங்கி திரட்டல் வழிமுறை மூலம் ஆயிரக்கணக்கான பிரசுரங்களின் சமீபத்திய செய்திகளை இது தேர்ந்தெடுக்கிறது.", - "google videos":"கூகுள் வீடியோஸ் என்பது இலவசமாக வீடியோவைப் பங்கிட்டு அளிக்கும் வலைத்தளமாகும். மேலும் கூகுள் இன்க்கில் இருந்து வீடியோ தேடு பொறியாகவும் இது வேலை செய்கிறது. கூகுள் வீடியோஸ் மற்ற வலைத்தளங்களில் தொலைதூரத்தில் உள்ளிணைக்கப்பட்டு வீடியோக்களை தேர்வு செய்ய இடமளிக்கிறது. மேலும் ஊடகத்தில் தேவையான HTML குறியீட்டை யூ ட்யூப் போன்றே வழங்குகிறது. இது பட்டையகலத்தின் ஓட்டம் அல்லது சேமிப்புக் கொள்ளளவு பிரச்சினைகள் எதுவும் இல்லாமல் எண்ணற்ற வீடியோக்களை தொலைதூரத்தில் இருந்து கூகுள் வீடியோஸ் மூலமாக வலைத்தளங்களில் வைத்திருக்க உதவுகிறது.", - "google scholar":"கூகுள் இசுகாலர் என்பது இலவசமாக அணுகக்கூடிய வலைத் தேடுபொறியாகும், இது அறிவார்ந்த இலக்கியங்களின் முழு உரை அல்லது மீதரவினை வெளியீட்டு வடிவத்தில் துறைவாரியாக வரிசைப்படுத்துகிறது. இதனுடைய பீட்டாவடிவம் நவம்பர் 2004ல் வெளியிடப்பட்டது. இதில் மதிப்பாய்வு செய்யப்பட்ட இணையவழி ஆய்விதழ்கள், புத்தகங்கள், கருத்தரங்க கையேடுகள், ஆய்வு அறிக்கைகள், விளக்கவுரைகள், ஆய்வுச் சுருக்கத்தொகுப்பு, தொழில்நுட்ப அறிக்கைகள் உட்பட, பிற கல்வியியல் இலக்கியம், நீதிமன்றம் கருத்துத் தொகுப்புகள் மற்றும் காப்புரிமைகள் உள்ளிட்டவை உள்ளன. கூகிள் இசுகாலரின் தரவுத்தளத்தின் அளவை கூகிள் வெளியிடவில்லை என்றாலும், விஞ்ஞான ஆய்வாளர்கள், கட்டுரைகள், மேற்கோள்கள் மற்றும் காப்புரிமைகள் உட்பட சுமார் 389 மில்லியன் ஆவணங்களைக் கொண்டிருப்பதாக மதிப்பிட்டுள்ளனர். இது 2018 சனவரியில் உலகின் மிகப்பெரிய கல்வி தொடர்பான தேடுபொறியாக அமைந்தது. முன்னதாக, மே 2014 நிலவரப்படி இதில் 160 மில்லியன் ஆவணங்கள் உள்ளதாக மதிப்பிடப்பட்டது. குறித்தல் மற்றும் மீள் செலுத்தல் முறையைப் பயன்படுத்தி பிஎல்ஓஎஸ் ஒன்ல் வெளியிடப்பட்ட முந்தைய புள்ளிவிவர மதிப்பீடு 100 மில்லியன் மதிப்பீட்டில் ஆங்கிலத்தில் வெளியிடப்பட்ட அனைத்து கட்டுரைகளின் ஏறக்குறைய 80-90% மதிப்பீட்டு எல்லையினைக் கொண்டுள்ளது என மதிப்பிடப்பட்டுள்ளது. வலைத்தளத்தில் எத்தனை ஆவணங்கள் இலவசமாகக் கிடைக்கின்றன என்பதையும் இந்த மதிப்பீடு தீர்மானிக்கிறது.", - "google play apps":"கூகுள்பிளே என்பது இலக்கமுறை தகவல்களை வழங்கும் ஒரு சேவையாகும். இது கூகிள் நிறுவனத்தால் வழங்கப்படுகிறது. இது ஆன்டிராய்டு பயன்பாடுகள், இசைக்கோப்புகள், புத்தகங்கள், திரைப்படங்கள், விளையாட்டுகள் போன்றவற்றை கொண்ட ஓர் இணையக் கடை ஆகும். மார்ச் 2012ல் கூகுள்தனது ஆன்டிராய்டு அங்காடியையும், இசைச் சேவையையும் இணைத்து கூகுள்பிளேவை ஆரம்பித்தது. 2017 ஆம் ஆண்டு புள்ளிவிவரப்படி, 35 இலட்சம் பதிவிறக்கங்கள், இத்தளத்தில் நடந்துள்ளன.", - "google play movies":[ - "google play apps:ta", - "ref" - ], - "imdb":"ஐ. எம். டி. பி (IMDb) இவ்விணையத்தளம் ஆனது உலக திரைப்படங்களினைப் பற்றிய அனைத்துத் தகவல்களையும் வழங்கும் தளமாக விளங்குகின்றது. மேலும் இவ்விணையத்தளத்தினை இலவசமாகப் பயனர் பகுதியை ஏற்படுத்திக் கொள்ள வாய்ப்புகளும் உண்டு. உலகளவில் திரைப்படங்களிற்காகப் பார்க்கப்படும் தளங்களில் இத்தளம் முதலிடத்தில் இருப்பது குறிப்பிடத்தக்கது. மிகப் பெரிய பட விநியோக நிறுவனங்களான பாராமவுண்ட், யுனிவெர்சல், பாக்ஸ் பிக்சர்ஸ், வார்னர் ப்ரதர்ஸ், கொலம்பியா பிக்சர்ஸ் போன்றவை தங்களது படங்களைப் பற்றி அவர்களே தகவல்களை இந்த தரவுத் தளத்தில் உள்ளீடு செய்வார்கள்.", - "library of congress":"காங்கிரசு நூலகம் என்பது அமெரிக்கக் காங்கிரசின் நூலகத்தைக் குறிக்கிறது. நடைமுறையில் ஐக்கிய அமெரிக்காவின் தேசிய நூலகமாகச் செயற்படும் இது, அமெரிக்கக் காங்கிரசின் ஆய்வுப் பிரிவாகவும் தொழிற்படுகிறது. வாசிங்டன் டி. சி. இல் அமைந்துள்ள இந் நூலகம் பரப்பளவிலும், நூல்களின் எண்ணிக்கையிலும் உலகிலேயே மிகவும் பெரியது ஆகும். 2007 ஆம் ஆண்டின் கணக்கின் படி இந்நூலகத்தில் 32,332,832 நூல்களும், மொத்தமாக 138,313,427 உருப்படிகளும் உள்ளன", - "metacpan":"சிபான் என்பது காம்ப்ரிஹென்சிவ் பேர்ள் ஆர்க்கைவ் நெட்வொர்க் என்பதன் சுருக்கமாகும். இது இணையத்தில் பேர்ள் நிரல்களை கொண்டுள்ள தளமாகும். இந்த தளத்தில் ஒரு லட்சத்துக்கும் அதிகமான பேர்ள் நிரல்கள் சேமிக்கப்பட்டுள்ளன. நிரல்களுடன் அவற்றுக்கான ஆவணங்களும் கிடைக்கின்றன. மின்னஞ்சல் அனுப்புதல், கோப்புகளை படித்தல் உள்ளிட்ட பொதுவான செயல்பாடுகளுக்கான நிரல்களை காணலாம். இத்தகைய செயல்பாடுகளுக்காக நிரல் எழுதி நேர விரயமாவதற்கு பதிலாக, இங்கே தேடிப் பெறலாம். இந்த தளத்தில் கிடைக்கக்கூடிய பெரும்பாலான நிரல்கள் இலவசமானவை, திறமூல உரிமை கொண்டவை. இந்த தளத்தை எவரும் பயன்படுத்த முடியும்.", - "openstreetmap":[ - "அனைவரும் தொகுக்கக்கூடிய கட்டற்ற உலக வரைபடம்", - "wikidata" - ], - "reddit":"Reddit, ரெடிட் என்பது ஒரு அமெரிக்க சமூக செய்தித் தொகுப்பு, உள்ளடக்க மதிப்பீடு மற்றும் இணைய மன்றம் ஆகும். பதிவுசெய்யப்பட்ட பயனர்கள் இணைப்புகள், உரை இடுகைகள், படங்கள் மற்றும் வீடியோக்கள் போன்ற உள்ளடக்கத்தை தளத்தில் சமர்ப்பிக்கவும், பின்னர் அவை மற்ற உறுப்பினர்களால் வாக்களிக்கப்பட்டன அல்லது குறைக்கப்படுகின்றன. இடுகைகள் \"சமூகங்கள்\" அல்லது \"சப்ரெடிட்கள்\" எனப்படும் பயனர் உருவாக்கிய பலகைகளில் பாடத்தின் அடிப்படையில் ஒழுங்கமைக்கப்படுகின்றன. அதிக ஆதரவுடன் கூடிய சமர்ப்பிப்புகள் அவற்றின் சப்ரெடிட்டின் மேற்பகுதியில் தோன்றும், மேலும் அவை போதுமான ஆதரவைப் பெற்றால், இறுதியில் தளத்தின் முதல் பக்கத்தில் தோன்றும். ரெடிட் நிர்வாகிகள் சமூகங்களை நடுநிலைப்படுத்துகின்றனர். ரெடிட் பணியாளர்கள் அல்லாத சமூகம் சார்ந்த மதிப்பீட்டாளர்களாலும் மாடரேஷன் நடத்தப்படுகிறது.", - "yahoo news":"யாஹூ! செய்திகள் யாஹூ! இன் செய்திச் சேவையாகும். இதன் ஆங்கிலச் செய்திகள் CNN, USA Today போன்றவற்றில் இருந்து வருவதாகும். தமிழ்ச் செய்திகள் பெரும்பாலும் வெப்தூனியாவில் இருந்து வருவதாகும்.", - "youtube":"யூடியூப் அல்லது வலையொளி (YouTube) என்பது ஓர் அமெரிக்க நாட்டு நிகழ்நிலைக் காணொளிப் பகிர்வு மற்றும் சமூக ஊடகத் தளமாகும். இது சாட் ஹர்லி, ஸ்டீவ் சென் மற்றும் ஜவேத் கரீம் ஆகியோரால் பிப்ரவரி 2005 இல் தொடங்கப்பட்டது. உலகம் முழுவதும் வலையொளிப் பயனர்கள் ஒவ்வொரு நாளும் ஒரு பில்லியன் மணிநேரக் காணொளிகளைக் காணுகிறார்கள். யூடியூபர்கள் எனப் பிரபலமாகக் குறிப்பிடப்படும் யூடியூப் உள்ளடக்கப் படைப்பாளர்கள் நிமிடத்திற்கு 100 மணி நேர உள்ளடக்கத்தைப் பதிவேற்றுகிறார்கள்.", - "vimeo":"விமியோ (Vimeo) என்பது நிகழ்படங்களைப் பகிர்ந்து கொள்ளவும், பதிவேற்றவும், பதிவிறக்கவும், பார்ப்பதற்கும் துணைபுரியும் ஓர் இணையதளம் ஆகும். இது 2004ஆம் ஆண்டு சாக் லோடுவிக், சாக் கிளின் ஆகியோரால் தொடங்கப்பட்டது. இந்த நிறுவனமே 2007ஆம் ஆண்டு முதன்முதலாக உயர்தர நிகழ்படங்களைப் பகிர்ந்து கொள்வதற்கான வசதியை பொதுமக்களுக்கு ஏற்படுத்திக் கொடுத்தது. நல்ல இலக்கு நோக்கி செயற்படும் சிந்தனையாளர்களால், இந்த இணையம் அதிகம் பயன்படுத்தப்படுகிறது. இந்த இணையதளத்தில் பயனில்லா நிகழ்படங்கள் மிகவும் குறைவு. இந்த இணையதளத்தில் காணும் நிகழ்படங்களைக் கட்டணமின்றி பதிவிறக்கமும் செய்து கொள்ளலாம். இருப்பினும், கட்டணம் செலுத்தி, மேலதிக வசதிகளைப்பெற முடியும். இதில் 7கோடி பேர் உறுப்பினர்களாக உள்ளனர். குறும்படங்களையும், திரைப்படங்களையும் விற்பனை செய்வதில் இத்தளம் கவனம் செலுத்துகிறது. இருப்பினும் கட்டற்ற மென்பொருட்களை பயன்படுத்துதல் குறித்த வழிகாட்டுதல்கள் படங்கள் நிறைய உள்ளன.", - "wikibooks":"விக்கிநூல்கள் எனும் இணைய தளமானது விக்கிமீடியா நிறுவனத்தின் திட்டங்களுள் ஒன்றாகும். இது கட்டற்ற பாடநூல்களையும் உரைநூல் தொகுப்புகளையும் யார் வேண்டுமானாலும் உருவாக்கவோ தொகுக்கவோ வழிவகை செய்யும் ஒரு விக்கி வகையைச் சேர்ந்த தளமாகும். இது 2003ஆம் ஆண்டு தொடங்கப்பட்டு தற்போது பலமொழிகளில் செயல்பட்டு வருகிறது.", - "wikinews":"விக்கிசெய்தி, விக்கிமீடியா நிறுவனத்திரால் நடத்தப்படும் கட்டற்ற செய்திக் களமாகும். இது உலகளாவிய தன்னார்வலர்கள் தாமாகவே செய்திகளை உடனுக்குடன் மேலேற்றம் செய்யும் முறையாகும்.", - "wikiquote":"விக்கி மேற்கோள் (Wikiquote), விக்கிப்பீடியாவை நடத்தும் விக்கிமீடியா நிறுவனத்தின் இன்னொரு திட்டமாகும். இத்திட்டமும் விக்கி மென்பொருளை பயன்படுத்துகிறது. அனைத்து மொழிகளில் உள்ள மேற்கோள்களின் கட்டற்ற இணையத் தொகுப்பை உருவாக்குவது இத்திட்டத்தின் நோக்கமாகும். மேலும் இது புகழ்பெற்ற மக்கள், திரைப்படங்கள், புத்தகங்கள் மற்றும் பழமொழி ஆகியவற்றின் மேற்கோள்களை உள்ளடக்கிய ஒரு மேற்கோள் களஞ்சியமாகும்.", - "wikisource":"விக்கிமூலம் (Wikisource) ஓர் இலவச இணைய நூலகம் ஆகும். விக்கிமீடியா அறக்கட்டளை நடத்தும் விக்கித் திட்டங்களுள் இதுவும் ஒன்று. இது கட்டற்ற உள்ளடக்கம் (பகிர்வுரிமம்) கொண்ட மூல நூல்களின் இணையத் தொகுப்பாகும்.", - "wikispecies":"விக்கியினங்கள் விக்கி‎யை அடிப்படையாகக் கொண்ட விக்கிமீடியா நிறுவனத்தின் ஒரு இணையத் திட்டமாகும். இத்திட்டம் உலகிலுள்ள உயிரினங்களின் பெயர் அட்டவணையை தயாரிப்பதற்காக ஆகத்து 2004ம் வருடம் உருவாக்கப்பட்ட திட்டம் ஆகும்.", - "wiktionary":"விக்சனரி (Wiktionary) என்பது சொற்களுக்கான பொருள், அவற்றின் மூலம், உச்சரிப்பு முதலியவற்றை உள்ளடக்கிய, கட்டற்ற பன்மொழி அகரமுதலி ஒன்றைக் கூட்டு முயற்சியில் உருவாக்கும் ஒரு திட்டமாகும். இத்திட்டம் விக்கிமீடியா நிறுவனத்தினால் வழிநடத்தப்படுகிறது. வணிக நோக்கற்ற இந்த அகரமுதலியை இலவசமாக எவரும் பயன்படுத்திக் கொள்ள முடியும்; பங்கேற்கவும் முடியும்.", - "wikiversity":"விக்கிப்பல்கலைக்கழகம் (Wikiversity) என்பது கற்கும் கூட்டத்தினருக்கும் அவர்கள் கற்பதற்குத் தேவையான குறிப்புகளுக்கும் உதவி வழங்கும் விக்கிமீடியாத் திட்டமாகும். இத்திட்டமானது விக்கிப்பீடியா போன்ற கலைக்களஞ்சியத் திட்டங்களிலிருந்து பெரிதும் வேறுபடுகின்றது.", - "wikivoyage":"விக்கிப்பயணம் (Wikivoyage) என்பது சுற்றுலா செல்வோருக்கு ஒரு நல்ல வழிகாட்டியானதும் பயண இலக்குகளுக்கு வழிகாட்டுவதுமான இணையத்தில் உள்ள ஒரு இலவசப் பயண வழிகாட்டி ஆகும். இங்குள்ள பயணத்தலைப்புக்கள் தன்னார்வ ஆசிரியர்களால் எழுதப்பட்டது ஆகும்.", - "wikicommons.images":"விக்கிமீடியா பொதுவகம் அல்லது பொது எனப்படுவது கட்டற்ற உள்ளடக்கம் உடைய படங்கள், ஒலிக் கோப்புக்கள், காணொலிகள் மற்றும் ஏனைய ஊடகங்கள் கொண்ட இணையக் களஞ்சியம் ஆகும். இது விக்கிமீடியா நிறுவனத்தின் திட்டமாகும்.", - "wolframalpha":"வொல்பிராம் அல்பா (Wolfram|Alpha) என்பது ஒரு கேள்விகளுக்குப் பதிலளிக்கும் இயந்திரம். இது மதமட்டிக்கா மென்பொருளை உருவாக்கிய வொல்பிராம் ஆய்வு நிறுவனத்தால் உருவாக்கப்பட்டது. கேள்விகள் இலக்கணப் பகுப்பாய்வு செய்யப்பட்டு, கணிக்கூடியவாறு ஒழுங்கமைக்கப்பட்ட தரவுகளைக் கொண்டு விடைகள் தருவிக்கப்படுகின்றன. துறைசார் கேள்விகளுக்கு இது துல்லியமான பதில்களைத் தரக்கூடியது.", - "rubygems":"ரூபி செம்சு (RubyGems) என்பது ரூபி நிரலாக்க மொழிக்கான ஒரு பொது மேலாண்மைக் கருவி ஆகும். ரூபி நிரல்களையும் காப்பகங்களையும் விநியோகிப்பதற்கான தரப்படுத்தப்பட்ட முறை இதுவாகும். இதனைப் பயன்படுத்தி இவற்றை இலகுவாக நிறுவி மேலாண்மை செய்ய முடியும். ரூபி 1.9 மற்றும் அதன் பின்னர் வெளியிடப்பட்ட அனைத்து பதிவுகளிலும் ரூபி செம்சு ஒரு பகுதியாக உள்ளடக்கப்பட்டுள்ளது.", - "wttr.in":[ - "வானிலை அறிக்கை Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"பிரேவ் (Brave) என்பது கட்டற்ற, திறமூல உலாவிகளில் ஒன்றாகும். இதனை பிரேவ் மென்பொருளகம் தயாரித்துள்ளது. இந்த உலாவிக்கு அடிப்படையாக குரோமியம் உலாவி திகழ்கிறது. தனிநபர் உரிமையை மிக அதிகமாகக் காக்கும் உலாவிகளில் தலையானது. அதாவது விளம்பரங்களை அனுமதிக்காத, நீங்கள் உலாவும் வலைப்பக்கங்களை மறைமுகாமாகக் கூட குறிப்பெடுக்காத உலாவியாகும். மேலும், உலாவும் இணையப்பக்கப் பங்களிப்பாளர்களுக்கு, ஆல்ட்காயின்களை அனுப்பும் திறன் கொண்டது. 2019 ஆம் ஆண்டு, மைக்ரோசாப்ட் விண்டோசு, மேக் இயக்குதளம், லினக்சு, ஆண்ட்ராய்டு இயங்குதளம், ஐஓஎஸ் ஆகியவைகளுக்கு இதன் பதிப்பு வெளியிடப்பட்டுள்ளது. தற்போதுள்ள பதிப்பின் சிறப்பியல்பாக இயல்புநிலை வலை தேடு பொறி, டக்டக்கோ (தேடுபொறி) என்பதைக் கூறலாம். லினக்சு வகை இயக்குதளங்களில் நிறுவிக் கொள்ளவும் விரிவானக் குறிப்புகள் தரப்பட்டுள்ளன.", - "brave.images":[ - "brave:ta", - "ref" - ], - "brave.videos":[ - "brave:ta", - "ref" - ], - "brave.news":[ - "brave:ta", - "ref" - ] - }, - "te":{ - "annas archive":"అన్నా ఆర్కైవ్ అనేది ఉచిత లాభాపేక్ష లేని ఆన్‌లైన్ షాడో లైబ్రరీ మెటా సెర్చ్ ఇంజిన్. ఇది IPFS ద్వారా లభించే కంటెంట్‌తో సహా వివిధ పుస్తక వనరులను యాక్సెస్ చేయడానికి ఒక వేదికగా పనిచేస్తుంది. ఆర్కైవ్ అన్నా మరియు/లేదా పైరేట్ లైబ్రరీ మిర్రర్ (PiLiMi) బృందం అని పిలువబడే అజ్ఞాత ఆర్కైవిస్ట్‌ల బృందంచే సృష్టించబడింది.", - "wikipedia":"వికీపీడియా, వివిధ భాషల్లో లభించే ఒక స్వేచ్ఛా విజ్ఞాన సర్వస్వం. దీన్ని లాభాపేక్ష రహిత సంస్థ వికీమీడియా ఫౌండేషన్ నిర్వహిస్తుంది. వికీ అనగా అనేక మంది సభ్యుల సమష్టి కృషితో సులభంగా వెబ్ సైటును సృష్టించగల ఒక సాంకేతిక పరిజ్ఞానం. ఎన్‌సైక్లోపీడియా అనగా సర్వ విజ్ఞాన సర్వస్వం. వికీపీడియా అనేపదం ఈ రెండు పదాల నుంచి ఉద్భవించింది. ఇది 2001లో జిమ్మీ వేల్స్, లారీ సాంగర్లచే ప్రారంభించబడింది. అప్పటి నుంచి అత్యంత వేగంగా ఎదుగుతూ, ఇంటర్నెట్లో అతి పెద్ద వెబ్ సైట్లలో ఒకటిగా ప్రాచుర్యం పొందింది.", - "bing images":[ - "మీ ఆసక్తులకు అనుగుణంగా ఫీడ్ చూడండి", - "https://www.bing.com/images" - ], - "bing videos":[ - "Bingలోని మేధావి శోధన ద్వారా మీరు వెతుకుతున్నది క్షణాల్లో కనుగొనగలరు మరియు రివార్డ్‌లను పొందగలరు.", - "https://www.bing.com/videos" - ], - "currency":"డక్‌డక్‌గో అనేది ఒక అంతర్జాల శోధనా యంత్రం, ఇది ఫలితాలను పొందడానికి సమూహమూలాలతో కూడిన వికీపీడియా వంటి జాళగూళ్ళ నుండి సమాచారాన్ని సేకరిస్తుంది. వినియోగదారుల సమాచారాన్ని నమోదుచేసుకోకుండా, గోప్యతను కల్పిస్తుందని విధివిధానాలు తెలుపుతున్నాయి.ఈ సెర్చ్ ఇంజిన్ ఇంటర్నెట్‌లో వెతుకుతున్న దాని గురించి ఎటువంటి జాడను తీసుకోదు, ఒకరి వ్యక్తిగత సమాచారం గురించి ట్రాక్‌లను అనుసరించదు.ఈ సెర్చ్ ఇంజిన్ యొక్క నిర్వాహకులు వారు వినియోగదారుని (ట్రాకింగ్) అనుసరించరని లేదా శోధన చరిత్రను ఇతరులతో పంచుకోరని పేర్కొన్నారు. శోధన ఫలితాల్లో 'మరింత ఆధారపడే మూలాల' కంటే 'మంచి మూలం నుండి సమాచారాన్ని' అందించడానికి డక్‌డక్‌గో ప్రయత్నిస్తుంది. యాండెక్స్, యాహూ, బింగ్, యమ్లీవికీపీడియా వంటి సెర్చ్ ఇంజన్లతో సహకరించడం ద్వారా, వికీపీడియా వంటి సోషల్ నెట్‌వర్కింగ్ సైట్ల నుండి సమాచారాన్ని సేకరించడం ద్వారా వారు దీన్ని చేస్తారు.కంపెనీ నమోదు చేసిన డొమైన్ పేరులో గూగుల్-ట్రాన్స్‌ఫరబుల్ చేత DDG .gg, ddg.co, duck.com కూడా ఉన్నాయి, అవన్నీ డక్‌డక్‌గో యొక్క చిన్న URL. ఇది క్రౌడ్ సోర్స్ వెబ్‌సైట్ల నుండి డేటాను ఉపయోగిస్తుంది, సంక్షిప్త పరిచయాలు, ఇతర సంబంధిత అంశాల ప్రదర్శన కోసం పేజీ ఎగువన ఉన్న సమాచార పెట్టెలో వాటిని నింపుతుంది.", - "ddg definitions":[ - "currency:te", - "ref" - ], - "wikidata":"వికీడేటా అనేది వికీమీడియా ఫౌండేషన్ అందచేస్తున్న సహకారంతో సవరించగల జ్ఞాన భాండారము. ఇది ఒక సాధారణ స్వేచ్ఛా డేటా మూలం. దీనిని వికీపీడియా లాంటి వికీమీడియా ప్రాజెక్టులలో వాడతారు, ఇది ప్రజోపయోగ పరిధి షరతులతో అందుబాటులో ఉంది. మీడియా ఫైళ్ళకు నిల్వ ప్రాజెక్టు వికీమీడియా కామన్స్లాగా, ఇది అన్ని వికీమీడియా ప్రాజెక్టుల కోసం జ్ఞాన భాండాగారం. వికీడేటా సాఫ్ట్‌వేర్ ను వికీబేస్(Wikibase) గా వ్యవహరిస్తారు.", - "duckduckgo":[ - "currency:te", - "ref" - ], - "duckduckgo images":[ - "currency:te", - "ref" - ], - "duckduckgo videos":[ - "currency:te", - "ref" - ], - "duckduckgo news":[ - "currency:te", - "ref" - ], - "duckduckgo weather":[ - "currency:te", - "ref" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "google":"గూగుల్ శోధన,ఇది గూగుల్ అందించిన సెర్చ్ ఇంజిన్.2021లో రోజుకు 2 ట్రిలియన్ల కంటే ఎక్కువ అంతర్జాల శోధనలు దీని ద్వారా జరుగుతాయి,ఇది ప్రపంచ శోధన ఇంజిన్ మార్కెట్లో 92% వాటాను కలిగి ఉంది. ఇది ప్రపంచంలో అత్యధికంగా సందర్శించే వెబ్ సైట్ కూడా. ఇందులో వెతికిన విషయానికి గూగుల్ ద్వారా తిరిగి ఇవ్వబడ్డ శోధన ఫలితాల క్రమం, పాక్షికంగా,\"పేజ్ ర్యాంక్\"అని పిలువబడే ప్రాధాన్యతా ర్యాంక్ వ్యవస్థపై ఆధారపడి ఉంటుంది, అంతర్జాలంలో బహిరంగంగా అందుబాటులో ఉన్న పత్రాలలో వచనం (టెక్స్ట్) మాత్రమే కాక అనేక ప్రత్యేక సేవలు అందిస్తుంది. వీటిలో పర్యాయపదాలు, వాతావరణ అంచనాలు, సమయ మండలాలు, స్టాక్ కోట్స్, మ్యాప్ లు, భూకంప డేటా, మూవీ షోటైమ్స్, విమానాశ్రయాలు, గృహ జాబితాలు, మరియు క్రీడా ఫలితాలు ఉన్నాయి. దీనిని మొదట 1997లో లారీ పేజ్, సెర్జీ బ్రిన్,మరియు స్కాట్ హసన్ అభివృద్ధి చేశారు. దీనిపేరు అసలు ప్రణాళికాబద్ధమైన పేరు గూగోల్ googol తప్పుగా వ్రాయడం నుండి తీసుకోబడింది. 1999 మధ్యనాటికి, గూగుల్ $25 మిలియన్ రౌండ్ వెంచర్ క్యాపిటల్ ఫండింగ్ అందుకున్నప్పుడు, ఇది రోజుకు 500,000 శోధనలను ప్రాసెస్ చేస్తోంది", - "google images":[ - "Google Images. వెబ్లో విస్తృతమైన చిత్ర శోధన.", - "https://images.google.com" - ], - "google news":[ - "Google News ద్వారా సమగ్ర తాజా వార్తల కవరేజ్, ప్రపంచవ్యాప్తంగా అన్ని వార్తల వనరుల నుండి సేకరించబడుతుంది.", - "https://news.google.com" - ], - "google play apps":"గూగుల్ ప్లే అనునది గూగుల్ చే అభివృద్ధి చేయబడి నిర్వహింపబడుతున్న ఒక సాఫ్ట్‌వేర్ వేదిక. ఇక్కడ ముఖ్యంగా ఆండ్రాయిడ్, గూగుల్ క్రోమ్ ఆధారిత సాఫ్ట్‌వేర్లు ఉచితముగానూ, వ్యాపారాత్మకంగానూ లభిస్తాయి. 2014 నాటికి గూగుల్ ప్లేలో దాదాపు 7 లక్షలకు పైగా సాఫ్ట్‌వేర్ ఆప్స్ లభిస్తున్నట్లు మాషబుల్ ప్రకటించింది.", - "google play movies":[ - "google play apps:te", - "ref" - ], - "imdb":"ఇంటర్నెట్ మూవీ డేటాబేసు వీడియోలకి సంబంధించిన ఒక వెబ్ సైటు. ఇది సినిమాలు, TV షోలు, నటులు, సాంకేతిక నిపుణుల వివరాలతో కూడిన అతి పెద్ద ఆన్ లైన్ సమాచార నిధి (డేటాబేసు). ఇది ప్రస్తుతం Amazon.com సంస్థ ఆధ్వర్వంలో నడుస్తుంది. ఇది అందుబాటులో ఉన్న ఏకైక భాష ఆంగ్లం.", - "library of congress":"ప్రపంచంలోని అతి పెద్ద గ్రంథాలయం యునైటెడ్ స్టేట్స్ లైబ్రరీ ఆఫ్ కాంగ్రెస్, వాషింగ్టన్, డి.సి. లోని కాపిటల్ హిల్ పైన స్థాపించారు. ఇది 1800వ సంవత్సరం ఏప్రిల్ 24న స్థాపితమైంది.", - "openstreetmap":"ఓపెన్ స్ట్రీట్ మేప్ అనేది స్వేచ్ఛగా సవరించగలిగే, స్వేచ్ఛగా వాడుకొనగలిగే ప్రపంచ పటాలను రూపొందించడానికి ఒక సహకార ప్రాజెక్ట్. మ్యాప్ కంటే, ప్రాజెక్ట్ ద్వారా ఉత్పత్తి చేయబడిన డేటా ప్రాథమిక ఉత్పత్తిగా పరిగణించబడుతుంది. OSM సృష్టి, పెరుగుదల, ప్రపంచంలోని మ్యాప్ సమాచారం ఉపయోగం లేదా లభ్యతపై పరిమితులు, చవకైన వెంటతీసుకొనివెళ్లగల ఉపగ్రహ నావిగేషన్ పరికరాల (GPS) లభ్యంకావడంపై ఆధారపడింది. స్వచ్ఛంద భౌగోళిక సమాచారానికి OSM ఒక ప్రముఖ ఉదాహరణగా పరిగణించబడుతుంది.", - "pinterest":[ - "ప్రయత్నించడానికి వంటకాలు, ఇంటి ఆలోచనలు, శైలి ప్రేరణ మరియు ఇతర ఆలోచనలను కనుగొనండి.", - "https://www.pinterest.com/" - ], - "reddit":"రెడ్డిట్ అనేది సామాజిక వార్తల సముదాయం మరియు చర్చా వెబ్‌సైట్, ఇక్కడ నమోదిత వినియోగదారులు టెక్స్ట్ పోస్ట్‌లు లేదా లింక్‌లు వంటి కంటెంట్‌ను సమర్పించవచ్చు మరియు సమర్పించిన కంటెంట్‌పై ఓటు వేయవచ్చు, ఇది ఇతర వినియోగదారులకు ఓటింగ్ ఆధారంగా ఎక్కువగా లేదా తక్కువగా కనిపిస్తుంది. కంటెంట్ సబ్‌రెడిట్‌లుగా పిలువబడే సంఘాలుగా నిర్వహించబడుతుంది, ప్రతి ఒక్కటి వార్తలు, సైన్స్, గేమింగ్ లేదా చలనచిత్రాలు వంటి నిర్దిష్ట అంశానికి అంకితం చేయబడింది.", - "youtube":"యూట్యూబ్ అనేది అంతర్జాలంలో వీడియోలను ఇతరులతో పంచుకోవడాని వీలుకల్పించే ఒక అంతర్జాతీయ సేవ. దీని ప్రధాన కార్యాలయం అమెరికాలోని, కాలిఫోర్నియా రాష్ట్రం, శాన్ బ్రూనో అనే నగరంలో ఉంది.", - "wikibooks":"వికీబుక్స్ స్వేచ్ఛానకలుహక్కులతో సమష్టిగా తయారు చేయగల పుస్తకాల జాల స్థలి. ఇది 2004 ఆగస్టు 13న ప్రారంభమైంది. వికీ ప్రాజెక్టులన్నిటిలోఅతితక్కువ వ్యాసపేజీలు ఉన్నాయి. దీనిలో ఉబుంటు వాడుకరి మార్గదర్శిని పూర్తికాబడిన పుస్తకం. దీనిలో ఉబుంటుతో తెలుగులో టైపు చేయడం దగ్గరనుండి, ఉత్తరములు వ్రాయుట, ప్రదర్శన పత్రములు చేయుట, వివిధ రకాల ధ్వని, దృశ్య శ్రవణ మాధ్యమములను నడుపుట, వాడబడే విహరిణులు లాంటివన్నీ ఎలా చేయవచ్చో వివరించటమైనది. ఇంకా వంట పుస్తకం ప్రారంభించబడింది. వికీసోర్స్ లో ఉండవలసిన కొన్ని వ్యాసాలు పొరపాటున వికీబుక్స్ లో సృష్టించబడినవి. ఈ ప్రాజెక్టు ప్రధాన ఉద్దేశం పాఠ్యపుస్తకాలు సమష్టిగా వృద్ధిచేయటం. ఏప్రిల్ 2010 అలెక్సా లెక్కల ప్రకారం ప్రపంచంలోని జాలస్థలులన్నిటిలో 2,462వ స్థానములోఉన్నది.", - "wikinews":"వికీన్యూస్ అనేది ఉచిత-కంటెంట్ న్యూస్ వికీ మరియు సహకార జర్నలిజం ద్వారా పనిచేసే వికీమీడియా ఫౌండేషన్ ప్రాజెక్ట్. వికీపీడియా సహ వ్యవస్థాపకుడు జిమ్మీ వేల్స్, \"వికీన్యూస్‌లో, ప్రతి కథను ఎన్‌సైక్లోపీడియా కథనానికి విరుద్ధంగా వార్తా కథనంగా వ్రాయాలి\" అని చెప్పడం ద్వారా వికీపీడియా నుండి వికీన్యూస్‌ను వేరు చేశారు. వికీన్యూస్ యొక్క తటస్థ దృక్కోణం విధానం దీనిని ఇతర సిటిజన్ జర్నలిజం ప్రయత్నాలైన ఇండిమీడియా మరియు ఓమీన్యూస్ నుండి వేరు చేయడం లక్ష్యంగా పెట్టుకుంది. చాలా వికీమీడియా ఫౌండేషన్ ప్రాజెక్ట్‌లకు విరుద్ధంగా, వికీన్యూస్ అసలైన పనిని ఒరిజినల్ రిపోర్టింగ్ మరియు ఇంటర్వ్యూల రూపంలో అనుమతిస్తుంది.", - "wikiquote":"వికీకోట్ అనగా వికీవ్యాఖ్య .వికీమీడియా ఫౌండేషను ఆధ్వర్యములో మీడియావికీ సాఫ్టువేరుతో నడిచే వికీ ఆధారిత ప్రాజెక్టు కుటుంబములో ఒక ప్రాజెక్టు. డేనియల్ ఆల్స్టన్ యొక్క ఆలోచనను బ్రయన్ విబ్బర్ కార్యాచరణలో పెట్టగా రూపొందిన ఈ ప్రాజెక్టు యొక్క లక్ష్యం సమిష్టి సమన్వయ కృషితో వివిధ ప్రముఖ వ్యక్తులు, పుస్తకాలు, సామెతలనుండి సేకరించిన వ్యాఖ్యల యొక్క విస్తృత వనరును తయారుచేసి వాటికి సంబంధించిన వివరాలు పొందుపరచడం. అనేక అన్లైన్ వ్యాఖ్యల సేకరణలు ఉన్నప్పటికీ సందర్శకులను సేకరణ ప్రక్రియలో పాలుపంచుకొనే అవకాశము ఇస్తున్న అతికొద్ది వాటిల్లో వికీవ్యాఖ్య ఒకటిగా విశిష్ఠత సంపాదించుకొన్నది.", - "wikisource":"వికీసోర్స్ స్వేచ్ఛా నకలు హక్కుల రచనలను ప్రచురించుటకు సముదాయసభ్యులు సేకరించి, నిర్వహించుచున్న ఒక స్వేచ్ఛాయుత గ్రంథాలయము. దీనిని 2005 ఆగస్టు 19 న ప్రారంభమైంది. ప్రారంభంలో విశేషంగా కృషిచేసినవాడుకరులు అన్వేషి, రాజ్, రాజశేఖర్ (Rajasekhar1961), మల్లిన నరసింహారావు, తాడేపల్లి (Tadepally), వైఙాసత్య, రాకేశ్వర, సురేష్ (Sureshkvolam), సుజాత. అన్వేషి ఏప్రిల్ నుండి డిసెంబరు 2007 మధ్య శతకాలు, భగవద్గీత, వాల్మీకి రామాయణం మొదలగునవి వికీసోర్స్ లో చేర్చాడు. తరువాత వికీసోర్స్ కి కావలసిన మూసలు తెలుగుసేత, డాక్యుమెంటేషన్ పేజీలు తయారుచేయడం, రచనలు చేర్చడం మొదలగు మెరుగులుచేశాడు. ఫ్రూఫ్ రీడ్ ఎక్స్టెన్షన్ వాడుటకు చేసిన ప్రయత్నం మధ్యలో ఆగిపోయింది. 2012లో అది పూర్తి కావించబడింది. వైఙాసత్య దీనిలో తెలుగు నేరుగా టైపు చేసేసౌకర్యం కలిగించాడు, మొల్ల రామాయణం చేర్చటానికి కృషి చేసాడు.", - "wiktionary":"విక్షనరీ, వికీపీడియా యొక్క సోదర వెబ్ సైట్. ఈ పదం వికి, డిక్షనరి పదాలను కలుపగా తయారయ్యినది. ఇది తెలుగు పదాలను వివిధమైన వ్యాకరణ, వాడుక, నానార్ధ, వ్యతిరేఖార్థ లాంటి వివరణలతో నిక్షిప్తం చేసే మాధ్యమము (నిఘంటువు). అయితే పుస్తక రూపంలో వుండే నిఘంటువులు మహా అయితే మూడు భాషలలో వుంటాయి. దీనిలో తెలుగు-తెలుగు, ఇంగ్లీషు-తెలుగుతో పాటు ఇతర విక్షనరీలోని సమాన అర్థం గల పదాలకు లింకులుండటంవలన, మీకు ప్రపంచంలోని వికీ భాషలన్నిటిలో సమాన అర్థంగల పదాలను తెలుసుకునే వీలుండటంతో, దీనిని బహుభాష నిఘంటువుగా పేర్కొనవచ్చు. తెలుగు వికీపీడియాలో లాగా, ఇందులో ఎవరైనా తెలుగు పదాలకు పేజీలను సృష్టించవచ్చు లేక మార్పులు చేయవచ్చు.", - "wikicommons.images":"వికీమీడియా కామన్స్ అనేది స్వేచ్ఛా-వినియోగ చిత్రాలు, శబ్దాలు, ఇతర మీడియా, జెసన్ (JSON) ఫైళ్ళ యొక్క ఆన్‌లైన్ నిల్వ. ఇది వికీమీడియా ఫౌండేషన్ వారి ప్రాజెక్టు.", - "wttr.in":[ - "వాతావరణ సమాచారము: Boydton, Virginia, United States", - "https://wttr.in" - ] - }, - "th":{ - "9gag":"9แก๊ก เป็นเว็บไซต์ขำขันภาษาอังกฤษซึ่งดำเนินการโดยกลุ่ม Rollin' Egg โดยเป็นที่รู้จักเนื่องจากเว็บไซต์นี้มักนำอินเทอร์เน็ตมีมมาใช้บ่อยครั้งเพื่อสร้างความบันเทิง", - "apple app store":"แอปสโตร์ เป็นโปรแกรมดิจิตอลแพลตฟอร์มจัดจำหน่ายสำหรับระบบปฏิบัติการไอโอเอสและไอแพดโอเอส พัฒนาและปรับปรุงโดยแอปเปิล การบริการช่วยให้ผู้ใช้เรียกดูและดาวน์โหลดแอปพลิเคชันจากร้านไอทูนส์ ซึ่งถูกพัฒนาขึ้นด้วยไอโอเอส เอสดีเค ที่เผยแพร่ผ่านทางแอปเปิล", - "artic":"สถาบันศิลปะแห่งชิคาโก เป็นพิพิธภัณฑ์ศิลปะ ที่ตั้งอยู่ที่เมืองชิคาโก รัฐอิลลินอย ประเทศสหรัฐอเมริกา สถาบันศิลปะแห่งนี้เป็นพิพิธภัณฑ์มีชื่อเสียงเกี่ยวกับงานสะสมในลัทธิประทับใจและลัทธิประทับใจยุคหลังที่ดีที่สุดสถาบันหนึ่งในโลก นอกจากนี้ยังมีงานชิ้นสำคัญ ๆ ของศิลปินชั้นครูในประวัติศาสตร์ศิลปะเป็นจำนวนมาก, ศิลปะอเมริกัน, ศิลปะตกแต่งของทั้งยุโรปและสหรัฐอเมริกา, ศิลปะเอเชีย, ศิลปะสมัยใหม่ และศิลปะร่วมสมัย สถาบันศิลปะเป็นส่วนหนึ่งของโรงเรียนสถาบันศิลปะแห่งชิคาโก ที่มีเนื้อที่หนึ่งล้านตารางฟุต และเป็นพิพิธภัณฑ์ที่ใหญ่เป็นอันดับสองของสหรัฐอเมริกา รองจากพิพิธภัณฑ์ศิลปะเมโทรโพลิทันในนครนิวยอร์ก", - "bandcamp":"แบนด์แคมป์ เป็นบริษัทเพลงออนไลน์สัญชาติอเมริกัน ก่อตั้งในปี 2007 โดย อีธาน ไดมอนด์ ชอว์น กรันเบอร์เกอร์ โจ โอลต์ และ นีล ทักเกอร์ มีสำนักงานใหญ่อยู่ที่ซีแรนซ์ รัฐแคลิฟอร์เนีย แบนด์แคมป์เปิดตัวอย่างเป็นทางการในปี 2008 ที่อนุญาตให้ศิลปินสามารถจำหน่ายและขายเพลงในรูปแบบไมโครไซต์ ส่วนใหญ่มักเป็นศิลปินอินดี้", - "wikipedia":"วิกิพีเดีย เป็นสารานุกรมเนื้อหาเสรีหลายภาษาบนเว็บไซต์ ซึ่งได้รับการสนับสนุนจากมูลนิธิวิกิมีเดีย องค์กรไม่แสวงผลกำไร เนื้อหากว่า 35 ล้านบทความ เกิดขึ้นจากการร่วมเขียนของอาสาสมัครทั่วโลก ทุกคนที่สามารถเข้าถึงวิกิพีเดียสามารถร่วมแก้ไขได้แทบทุกบทความได้อย่างเสรี โดยมีผู้เขียนประจำราว 100,000 คน จนถึงเดือนเมษายน พ.ศ. 2556 วิกิพีเดียมี 286 รุ่นภาษา และได้กลายมาเป็นงานอ้างอิงทั่วไปที่ใหญ่ที่สุดและได้รับความนิยมมากที่สุดบนอินเทอร์เน็ต จนถูกจัดเป็นเว็บที่มีผู้เข้าชมมากที่สุดในโลกอันดับที่ 6 ตามการจัดอันดับของอเล็กซา ด้วยจำนวนผู้อ่านกว่า 365 ล้านคน มีการประเมินว่าวิกิพีเดียมีการเรียกดูหน้าถึง 2,700 ล้านครั้งต่อเดือนในสหรัฐอเมริกาประเทศเดียว", - "bilibili":"ปีลีปีลี มีชื่อเล่นว่า B Site (B站) ในประเทศจีน เป็นเว็บไซต์แบ่งปันวิดีทัศน์ของจีนซึ่งมีฐานในเซี่ยงไฮ้ มีแนววิดีโอที่เกี่ยวข้องกับแอนิเมชั่น คอมิก และเกม (ACG) ซึ่งผู้ใช้สามารถอัปโหลด, ชม และเขียนความเห็นซ้อนทับบนวิดีโอได้ ปีลีปีลีใช้โปรแกรมเล่น Adobe Flash และ HTML5 ในการเล่นวิดีโอ ประกอบกับระบบความเห็นเลื่อนได้ซึ่งมีชื่อเล่นว่า \"ม่านกระสุน\" อ้างอิงจากเกมประเภท bullet hell ที่เป็นประเภทย่อยของวิดีโอเกมแนว ชูตเอ็มอัป", - "bing":"ไมโครซอฟท์ บิง หรือที่รู้จักกันทั่วไปว่า บิง เป็นบริการเสิร์ชเอนจินโดยมีไมโครซอฟท์เป็นเจ้าของและเป็นผู้ดำเนินการ บริการนี้มีต้นกำเนิดมาจากเอ็มเอสเอ็น เสิร์ช วินโดวส์ ไลฟ์ เสิร์ช และไลฟ์ เสิร์ช ซึ่งเป็นเสิร์ชเอนจินก่อนหน้าโดยไมโครซอฟท์ บิงให้บริการการค้นหาที่หลากหลายรวมถึง เว็บไซต์ วิดีโอ รูปภาพ ผลิตภัณฑ์ และแผนที่ บิงได้รับการพัฒนาโดยใช้เอเอสพีดอตเน็ต (ASP.NET)", - "bing images":[ - "bing:th", - "ref" - ], - "bing news":[ - "ข่าวสารจากแหล่งข่าวทั่วโลก ในประเทศและท้องถิ่น เพื่อนำข่าวเชิงลึกที่ครอบคลุมทั้งข่าวกีฬา บันเทิง ธุรกิจ การเมือง การพยากรณ์อากาศ และอื่นๆ อีกมากมายมาให้คุณ", - "https://www.bing.com/news" - ], - "bing videos":[ - "การค้นหาอัจฉริยะของ Bing ช่วยให้การค้นหาสิ่งที่คุณต้องการอย่างรวดเร็วทำได้ง่ายขึ้น และคุณยังได้รับรางวัลอีกด้วย", - "https://www.bing.com/videos" - ], - "currency":"ดักดักโก เป็นบริษัทที่ให้บริการเสิร์ชเอนจินที่มุ่งเน้นเรื่องความเป็นส่วนตัวและมีตัวกรองไม่ให้มีผลการค้นหาเฉพาะบุคคล โดยทางดักดักโกใช้ API ร่วมกับเว็บไซต์อื่น ๆ เพื่อแสดงผลการสืบค้นข้อมูลอย่างรวดเร็ว นอจากนั้น ดึงผลการสืบค้นจากแหล่งอื่น ๆ เพิ่มเติม และใช้โปรแกรมรวบรวมข้อมูลของตัวเอง นอกจากนั้น ดักดักโกถือเป็นหนึ่งในบริการที่ถูกรัฐบาลจีนปิดกั้นการใช้งานจากประเทศจีน", - "deviantart":"ดีเวียนต์อาร์ต เป็นชุมชนออนไลน์สัญชาติอเมริกันที่นำเสนองานศิลปะ, ภาพเคลื่อนไหว และภาพถ่าย ได้รับการเปิดตัวในวันที่ 7 สิงหาคม ค.ศ. 2000 โดยแอนเจโล โซติรา, สก็อตต์ จาร์กออฟ, แมทธิว สตีเฟนส์ และคนอื่น ๆ ผลงานต่าง ๆ จะได้รับการจัดเรียงในหมวดหมู่ ได้แก่ การถ่ายภาพ, ศิลปะดิจิทัล, ศิลปะแบบดั้งเดิม, วรรณกรรม, แฟลช, การผลิตภาพยนตร์, สกินสำหรับแอปพลิเคชัน, โปรแกรมอรรถประโยชน์สำหรับปรับแต่งระบบปฏิบัติการ และอื่น ๆ พร้อมกับทรัพยากรที่สามารถดาวน์โหลดได้ เช่น บทเรียนและคลังภาพถ่าย คุณสมบัติเพิ่มเติมได้แก่ วารสาร, การหยั่งเสียง, กลุ่ม และแฟ้มสะสมผลงาน", - "ddg definitions":[ - "currency:th", - "ref" - ], - "wikidata":"วิกิสนเทศ เป็นหนึ่งในโครงการของมูลนิธิวิกิมีเดีย ออกแบบมาเพื่อทำหน้าที่เป็นแหล่งข้อมูลร่วมกันสำหรับข้อมูลบางประเภท เช่น วันเกิด เป็นข้อมูลที่ตรวจสอบแล้ว และสามารถใช้ได้ในโครงการอื่น ๆ ของมูลนิธิวิกิมีเดีย เช่น วิกิพีเดีย การใช้ข้อมูลร่วมกันเช่นนี้คล้ายกับการที่วิกิมีเดียคอมมอนส์เป็นที่รวมไฟล์สื่อสำหรับโครงการอื่นในวิกิมีเดีย", - "duckduckgo":[ - "currency:th", - "ref" - ], - "duckduckgo images":[ - "currency:th", - "ref" - ], - "duckduckgo videos":[ - "currency:th", - "ref" - ], - "duckduckgo news":[ - "currency:th", - "ref" - ], - "duckduckgo weather":[ - "currency:th", - "ref" - ], - "flickr":"ฟลิคเกอร์ เป็น เว็บไซต์สำหรับเก็บรูปภาพดิจิทัล โดยอัปโหลดจากผู้ใช้งาน และสามารถแบ่งปันให้ผู้อื่นดูได้", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"กิตฮับ เป็นเว็บบริการพื้นที่ทางอินเทอร์เน็ต สำหรับเก็บการควบคุมการปรับปรุงแก้ไข โดยใช้กิต (Git) โดยมากจะใช้จัดเก็บรหัสต้นฉบับ แต่ยังคงคุณสมบัติเดิมของกิตไว้ อย่างการให้สิทธิ์ควบคุมและปรับปรุงแก้ไข และระบบการจัดการรหัสต้นฉบับรวมถึงทางกิตฮับได้เพิ่มเติมคุณสมบัติอื่นๆผนวกไว้ด้วย เช่น การควบคุมการเข้าถึงรหัสต้นฉบับ และ คุณสมบัติด้านความร่วมมือเช่น ติดตามข้อบกพร่อง, การร้องขอให้เพิ่มคุณสมบัติอื่นๆ, ระบบจัดการงาน และวิกิสำหรับทุกโครงการ", - "google":"กูเกิล เสิร์ช เป็นเสิร์ชเอนจินจากกูเกิล และเป็นเสิร์ชเอนจินที่มีคนใช้งานมากที่สุดในโลก โดยมีการค้นหามากกว่า หนึ่งร้อยล้านครั้งต่อวัน โดยมีผู้ใช้งานกว่า 1.643 พันล้านคนต่อปี จากผลการสำรวจในปี 2551", - "google images":[ - "Google Photos การค้นหารูปภาพที่ครอบคลุมที่สุดบนเว็บ", - "https://images.google.com" - ], - "google news":[ - "รายงานข่าวครอบคลุมทันเหตุการณ์ รวบรวมจากแหล่งข่าวทั่วโลกโดย Google News", - "https://news.google.com" - ], - "google scholar":[ - "Google Scholar ให้วิธีที่ง่ายต่อการค้นหาวรรณกรรมทางวิชาการอย่างครอบคลุม ค้นหาในสาขาและแหล่งข้อมูลที่หลากหลาย เช่น บทความ วิทยานิพนธ์ หนังสือ บทคัดย่อ และความเห็นของศาล", - "https://scholar.google.com" - ], - "google play apps":"กูเกิล เพลย์ เป็นบริการซื้อขายสื่อดิจิทัลจากกูเกิล รวมไปถึงร้านค้าออนไลน์ที่มีเพลง ภาพยนตร์ หนังสือ เกม และแอนดรอยด์แอปพลิเคชัน ซึ่งในมือถือที่ใช้ระบบปฏิบัติการแอนดรอยด์จะมีชื่อแอปพลิเคชันว่า Play สโตร์ โดยการซื้อ-ขายก็เปิดบริการทางมือถือด้วยเช่นกัน", - "google play movies":[ - "google play apps:th", - "ref" - ], - "hoogle":"ภาษาแฮสเคิล เป็นภาษาโปรแกรมที่มีวัตถุประสงค์เพื่อใช้การใช้งานที่หลากหลาย ที่มีการไทป์แบบคงที่ ภาษาแฮสเคิลเป็นภาษาโปรแกรมเชิงฟังก์ชั่นแบบบริสุทธ์ ที่มีลักษณะพิเศษคือการคาดคะเนไทป์ และการประเมินผลแบบขี้เกียจ. ภาษาแฮสเคิลพัฒนาขึ้นเพื่อการเรียนการสอน การวิจัย รวมไปถึงการประยุกต์ใช้ในเชิงธุรกิจและอุตสาหกรรม ภาษาแฮสเคิลเป็นแรงบันดาลใจให้กับภาษาโปรแกรมอื่น ๆ ที่มีความซับซ้อนอีกหลายภาษาให้มีฟีเจอร์แบบไทป์คลาส ซึ่งทำให้ป้องกันการเออเรอร์ของไทป์ ทำให้การโอเปอเรเตอร์โอเวอร์โหลดดิ้ง มีความปลอดภัยในการใช้ไทป์ หรือ มีไทป์เซฟตี้ มากขึ้น คอมไพเลอร์หลักสำหรับภาษาแฮสเคิลคือ คอมไพเลอร์กลาสโกลว์แฮสเคิล ภาษาแฮสเคิลตั้งชื่อตามนักตรรกศาสตร์ชาวอเมริกัน แฮสเคิล เคอร์รี่", - "imdb":"ดิอินเทอร์เน็ตมูวีเดตาเบส เป็นฐานข้อมูลออนไลน์รวบรวมเกี่ยวกับเรื่องราวของ นักแสดง ผู้กำกับ และบุคคลที่เกี่ยวข้องในวงการภาพยนตร์ IMDb เปิดให้บริการตั้งแต่ปี พ.ศ. 2533 และกลายเป็นส่วนหนึ่งของ Amazon.com ตั้งแต่ปี พ.ศ. 2541 นอกจากข้อมูลแล้ว IMDb ยังเป็นศูนย์รวมของคนดูภาพยนตร์ เพราะนอกจากข้อมูลของภาพยนตร์, ประวัตินักแสดง-ผู้กำกับภาพยนตร์-ทีมงานภาพยนตร์แล้ว ยังได้รวบรวมคลิปของตัวอย่างภาพยนตร์เรื่องต่าง ๆ ไว้ และยังเปิดโอกาสให้ผู้ชมได้แสดงความเห็นเกี่ยวกับภาพยนตร์เรื่องต่าง ๆ ด้วยการให้คะแนนอีกด้วย", - "library genesis":"ไลบรารี เจเนซิส (อังกฤษ: Library Genesis) หรือ ลิบเจน (LibGen) คือโปรแกรมค้นหาสำหรับบทความทางวิทยาศาสตร์ และหนังสือ ซึ่งให้การเข้าถึงข้อมูลที่ปกติแล้วมีค่าใช้จ่าย โดยเว็ปไซต์ได้อัปโหลดข้อมูลจาก เว็บไซต์พอร์ทัล ไซแอนซ์ ไดเร็ค ของแอ็ลเซอเฟียร์ ในรูปแบบของ PDF", - "library of congress":"หอสมุดรัฐสภา สถาบันด้านวัฒนธรรมที่เก่าแก่ที่สุดของสหรัฐอเมริกาและเป็นหอสมุดแห่งชาติ ก่อตั้งเมื่อปี ค.ศ. 1800 ตามกฎหมายของรัฐสภาอเมริกัน เป็นหน่วยงานที่แต่งตั้งโดยประธานาธิบดีภายใต้ความเห็นชอบของสภาสูงเพื่อให้เป็นแหล่งข้อมูลด้านกฎหมายของรัฐบาล ตั้งอยู่ในพื้นที่อาคาร 3 หลังในวอชิงตันดีซี ถือเป็นหอสมุดที่ใหญ่ที่สุดในโลกว่าด้วยชั้นหนังสือและจำนวนหนังสือที่มากที่สุด มีหัวหน้าคนปัจจุบันคือ คาร์ลา เฮย์เดน", - "mastodon users":"มาสโตดอน เป็นซอฟต์แวร์เสรีและโอเพนซอร์สสำหรับการทำงานบริการเครือข่ายสังคมที่โฮสต์ด้วยตนเอง มีคุณสมบัติไมโครบล็อกคล้ายกับทวิตเตอร์ ซึ่งให้บริการโดยโหนดที่ทำงานโดยอิสระจำนวนมากที่เรียกว่าอินสแตนซ์ (instances) แต่ละโหนดมีหลักปฏิบัติ เงื่อนไขการบริการ นโยบายความเป็นส่วนตัว ตัวเลือกความเป็นส่วนตัว และนโยบายการกลั่นกรองเนื้อหาของตนเอง", - "mastodon hashtags":[ - "mastodon users:th", - "ref" - ], - "openstreetmap":"โอเพินสตรีตแมป เป็นโครงการความร่วมมือเพื่อสร้างแผนที่เสรีที่แก้ไขได้ของโลก", - "pinterest":"พินเทอเรสต์ เป็นบริการการแบ่งปันรูปภาพและบริการโซเชียลมีเดียที่ออกแบบมาเพื่อเปิดใช้งานการบันทึกและค้นหาข้อมูล บนเวิลด์ไวด์เว็บโดยใช้รูปภาพ และในขนาดเล็กกว่า กิฟและวิดีโอ ในรูปแบบของพินบอร์ด เว็บไซต์นี้สร้างโดยเบน ซิลเบอร์แมน, พอล สเกียร์รา และอีวาน ชาร์ป และมีผู้ใช้งานรายเดือน 300 ล้านคนในเดือนสิงหาคม ค.ศ. 2019 บริการนี้ดำเนินการโดยพินเทอเรสต์ อิงค์ ซึ่งตั้งอยู่ในซานฟรานซิสโก", - "piratebay":"เดอะไพเรตเบย์ เป็นเว็บไซต์สัญชาติสวีเดนที่ให้บริการบิตทอร์เรนต์ ซึ่งเปิดให้บริการมาตั้งแต่เดือนพฤศจิกายน พ.ศ. 2546 และกล่าวอ้างว่าเป็น \"เว็บไซต์บิตทอร์เรนต์แทร็กเกอร์ที่ใหญ่ที่สุดในโลก\" ได้รับการจัดอันดับจากอเล็กซา ให้เป็นเว็บไซต์ที่มีผู้เข้าชมมากเป็นอันดับที่ 106 เมื่อวันที่ 15 พฤศจิกายน พ.ศ. 2551 ทางเว็บไซต์ได้ประกาศว่ามีจำนวนผู้ใช้พร้อมกันถึง 25 ล้านเพียร์ และมีจำนวนผู้ใช้ที่ลงทะเบียนเข้าใช้งานทั้งสิ้น 3,500,000 ล้านชื่อ โดยในปัจจุบันเดอะไพเรตเบย์ได้ปิดระบบสมัครสมาชิกและอัปโหลดแบบไร้บัญชีไปแล้วเนึ่องจากมีไฟล์ทอร์เรนต์ที่ฝังไวรัสคอมพิวเตอร์มากเกินไป และในปี พ.ศ. 2565 เดอะไพเรตเบย์มีไฟล์ทอร์เรนต์รวมกันทั้งหมดถึง 6.7 เพตะไบต์ และไฟล์ทอร์เรนต์ที่มีการ Seed อยู่ถึง 2.5 เพตะไบต์", - "reddit":"เรดดิต เป็นเว็บรวบรวมข่าวสาร จัดลำดับข้อมูลออนไลน์ และเว็บสนทนาสัญชาติอเมริกัน ผู้ใช้ที่ลงทะเบียนแล้วสามารถโพสต์เนื้อหา เช่น ลิงก์ ข้อความ และรูปภาพ ให้ผู้ใช้อื่น ๆ สามารถโหวตขึ้นหรือลงได้ โพสต์ถูกแบ่งตามหมวดหมู่จัดโดยผู้ใช้ เรียกว่า \"ซับเรดดิต” ซึ่งมีหมวดหมู่หลากหลาย เช่น ข่าวสาร กีฬา หนัง เกม ดนตรี หนังสือ การออกกำลังกาย อาหาร ภาพถ่าย เป็นต้น โพสต์ที่ได้รับโหวตขึ้นมาก ๆ จะมีโอกาสอยู่บนหน้าแรก ๆ ของซับเรดดิตนั้น ๆ และหากได้รับความนิยมมาก ๆ จะสามารถขึ้นไปยังหน้าแรกของเรดดิตในที่สุด แม้จะมีกฎป้องกันการดูหมิ่นออนไลน์อยู่มาก ผู้ดูแลของเรดดิตใช้เวลามากในการดูแลเรดดิต", - "soundcloud":"ซาวด์คลาวด์ เป็นบริการฐานเพลงออนไลน์ ตั้งอยู่ในกรุงเบอร์ลิน ประเทศเยอรมนี ที่ให้ผู้ใช้สามารถอัปโหลด โฆษณาประชาสัมพันธ์ และแบ่งปันผลงานเพลงต้นฉบับของพวกเขา", - "semantic scholar":"เซอมานทิกสกอลาร์ เป็นเสิร์ชเอนจินที่ประยุกต์ใช้ปัญญาประดิษฐ์สำหรับสิ่งตีพิมพ์ทางวิชาการ สถาบันอัลเลนเพื่อปัญญาประดิษฐ์ เป็นผู้พัฒนาขึ้นแล้วให้เริ่มใช้ในเดือนพฤศจิกายน พ.ศ. 2558 จุดเด่นก็คือการใช้การประมวลภาษาธรรมชาติ (NLP) เพื่อสร้างความย่อสำหรับงานวิชาการต่าง ๆ", - "tagesschau":"ทาเกิสเชา เป็นรายการข่าวของสถานีโทรทัศน์ช่องที่หนึ่งแห่งเยอรมนี ออกอากาศครั้งแรกวันที่ 26 ธันวาคม ค.ศ. 1952 เวลา 20.00 น. ตามเวลาในประเทศเยอรมนี ตรงกับเวลา 01.00 น. ตามเวลาในประเทศไทย", - "youtube":"ยูทูบ ตามสำเนียงอเมริกัน หรือ ยูทิวบ์ ตามสำเนียงบริเตน เป็นเว็บไซต์เผยแพร่วิดีโอโดยมีสำนักงานอยู่ที่แซนบรูโน แคลิฟอร์เนีย สหรัฐอเมริกา ผู้สร้างเว็บไซต์ดังกล่าว คือ อดีตพนักงาน 3 คนในบริษัทเพย์แพล อันประกอบด้วยแชด เฮอร์ลีย์ สตีฟ เชน และยาวีด คาริม โดยสร้างในเดือนกุมภาพันธ์ 2548 ในเดือนพฤศจิกายน 2549 กูเกิลซื้อยูทูบซื้อไปในราคา 1.65 พันล้านดอลลาร์สหรัฐ ยูทูบเป็นหนึ่งในบริษัทย่อยของกูเกิล เว็บไซต์ยังสามารถให้ผู้ใช้งานสามารถอัปโหลด ดู หรือแบ่งปันวิดีโอได้", - "vimeo":"วิมีโอ เป็นแพลตฟอร์มเผยแพร่วิดีโอซึ่งมีสำนักงานอยู่ที่นครนิวยอร์ก ก่อตั้งโดย เจค ลอดวิก และ แซค ไคลน์ เมื่อปี ค.ศ. 2004 โดยเน้นนำเสนอวิดีโอความละเอียดสูงแก่ผู้ใช้บนอุปกรณ์หลากหลายประเภท มีตัวแบบธุรกิจเป็นซอฟต์แวร์บริการ โดยมีรายได้มาจากการเรียกเก็บค่าธรรมเนียมจากการสมัครสมาชิกของผู้ใช้ และมีเครื่องมือให้ผู้ใช้สามารถสร้าง ตัดต่อ และเผยแพร่วิดีโอได้", - "wikibooks":"วิกิตำรา เป็นโครงการหนึ่งในโครงการของมูลนิธิวิกิมีเดีย โดยมีเป้าหมายรวบรวมคู่มือ หนังสือตำรา คู่มือ วิธีทำ และตำราอาหารจากทั่วมุมโลก โดยภาษาในวิกิตำราไทยทั้งหมดจะเป็นภาษาไทย ซึ่งข้อความบางส่วนดัดแปลง หรือแปลความมาจากวิกิตำราในภาษาอื่น วิกิตำราใช้ซอฟต์แวร์ มีเดียวิกิซึ่งเป็นซอฟต์แวร์เดียวกันกับวิกิพีเดีย", - "wikinews":"วิกิข่าว เป็นแหล่งข้อมูลข่าวแบบเนื้อหาเสรี และเป็นโครงการของมูลนิธิวิกิมีเดีย มูลนิธิเดียวกับที่ดูแลสารานุกรมวิกิพีเดีย ใช้ซอฟต์แวร์มีเดียวิกิ โดยสัญญาอนุญาตที่ใช้ในวิกิข่าว จะเป็นครีเอทีฟคอมมอนส์ 2.5 แตกต่างจาก GFDL และ CC-BY-SA 3.0", - "wikiquote":"วิกิคำคม เป็นหนึ่งในโครงการของมูลนิธิวิกิมีเดีย โดยมีเป้าหมายรวบรวมคำคมจากบุคคลสำคัญ คำสุภาษิตและคำพังเพยจากทั่วมุมโลก โดยในวิกิคำคมจะมีการใช้งานทั้งหมดเป็นภาษาไทย ซึ่งข้อความบางส่วนดัดแปลง หรือแปลความมาจากวิกิคำคมในภาษาอื่น วิกิคำคมใช้ซอฟต์แวร์มีเดียวิกิ ซึ่งเป็นซอฟต์แวร์เดียวกันกับวิกิพีเดีย", - "wikisource":"วิกิซอร์ซ เป็นหนึ่งในโครงการของมูลนิธิวิกิมีเดีย และเป็นโครงการพี่น้องกับ วิกิพีเดีย และเปิดเสรี เป็นห้องสมุดดิจิทัลออนไลน์ที่รวบรวมเอกสารต้นทาง ในทุกๆ ภาษา ที่เป็นสาธารณสมบัติ หรืออนุญาตให้ใช้ได้ ภายใต้สัญญาอนุญาตเสรี", - "wikispecies":"วิกิสปีชีส์ เป็นโครงการที่ได้รับการสนับสนุนจากมูลนิธิวิกิมีเดีย ที่ให้โอกาสผู้เขียน เข้ามาแก้ไขเพิ่มเติม เป็นสารบบของสปีชีส์ที่เปิดกว้างและใช้ได้", - "wiktionary":"วิกิพจนานุกรม เป็นโครงการหนึ่งของมูลนิธิวิกิมีเดียที่มีเป้าหมายรวบรวมคำศัพท์ วลี หรือประโยค พร้อมคำอ่าน ความหมาย คำที่เกี่ยวข้อง และคำแปลในภาษาอื่น เปรียบเสมือนพจนานุกรมทุกภาษาในที่เดียวกัน โดยมีให้ใช้งานถึง 182 ภาษา การทำงานของเว็บไซต์คล้ายกับวิกิพีเดียที่เปิดให้ใครก็ได้สามารถเพิ่มและแก้ไขเนื้อหา โดยรับรองตัวอักษรของทุกภาษาที่รหัสยูนิโคดรองรับ วิกิพจนานุกรมใช้ซอฟต์แวร์มีเดียวิกิเช่นเดียวกับวิกิพีเดีย", - "wikiversity":"วิกิวิทยาลัย เป็นโครงการหนึ่งของมูลนิธิวิกิมีเดีย โดยมีเป้าหมายรวบรวมความรู้ต่าง ๆ คล้ายมหาวิทยาลัย โดยวิกิวิทยาลัยยังไม่มีแบบภาษาไทย วิกิวิทยาลัยใช้ซอฟต์แวร์มีเดียวิกิซึ่งเป็นซอฟต์แวร์เดียวกันกับวิกิพีเดีย และเผยแพร่ภายใต้ GFDL และ CC-BY-SA", - "wikivoyage":"วิกิท่องเที่ยว เป็นคู่มือท่องเที่ยวออนไลน์สำหรับแหล่งท่องเที่ยวและหัวข้อท่องเที่ยวที่เขียนโดยอาสาสมัคร ชื่อของโครงการนี้ในภาษาอังกฤษประกอบด้วย \"Wiki\" และ \"Voyage\" คำภาษาฝรังเศสที่หมายถึงการท่องเที่ยว การเดินทาง", - "wikicommons.images":"วิกิมีเดียคอมมอนส์ เป็นหนึ่งในโครงการของ มูลนิธิวิกิมีเดีย โดยจัดเก็บเนื้อหาที่เป็นรูปภาพ ไฟล์เสียง ไฟล์วิดีโอ โดยเนื้อหาที่สามารถเก็บได้จะเป็นลิขสิทธิ์เสรีเท่านั้น และไม่มีการใช้ลิขสิทธิ์ของผู้อื่นโดยชอบ", - "wttr.in":[ - "รายงานสภาพอากาศ: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"เบรฟ เป็นเว็บเบราว์เซอร์ ฟรีและโอเพนซอร์สที่พัฒนาโดย Brave Software, Inc. โดยมีพืนฐานมาจากเว็บเบราว์เซอร์โครเมียม ตัวเบราว์เซอร์มีการปิดกั้นโฆษณาและเครื่องมือติดตามเว็บไซต์ และมีช่องทางให้ผู้ใช้สนับสนุนโดยการส่งคริปโทเคอร์เรนซีในรูปแบบ Basic Attention Tokens ไปยังเว็บไซต์และผู้สร้างเนื้อหา", - "brave.images":[ - "brave:th", - "ref" - ], - "brave.videos":[ - "brave:th", - "ref" - ], - "brave.news":[ - "brave:th", - "ref" - ] - }, - "tr":{ - "9gag":"9GAG, Inc. kendi platformunu yöneten online bir sosyal medya sitesidir. Kullanıcılar kendi yaptıkları içeriği veya başka sitelerden buldukları içerikleri paylaşırlar. 9GAG'in ana merkezi Mountain View, Kaliforniya'da kurulmuştur. 23 Nisan 2008'deki kuruluşundan beri popülaritesi bir hayli yükselmiştir. Facebook'ta 26 milyon kez \"like\" edilmiştir ve Twitter'da eylül 2015 raporlarına göre 5 milyon takipçisi vardır.", - "annas archive":"Anna'nın Arşivi , anonim arşivcilerden oluşan bir ekip tarafından oluşturulmuş, çeşitli kitap kaynaklarına çeşitli sunucular üzerinden erişim sağlayan, kar amacı gütmeyen ücretsiz bir çevrimiçi gölge kitaplık meta arama motorudur. Anna'nın Arşivi, Kasım 2022'de Z-Library'yi kapatmak için The Publishers Association ve Authors Guild tarafından resmî olarak desteklenmiş kolluk kuvvetlerinin çabalarına karşılık başlatıldı.", - "apple app store":"Bu madde iOS işletim sistemiyle yüklü gelen App Store içindir. Mac App Store ile karıştırılmamalıdır.", - "artic":"Art Institute of Chicago veya AIC, Chicago’nun Illinois Grant Park’ından yer alan bir güzel sanatlar müzesidir.", - "arxiv":"arXiv; matematik, fizik, bilgisayar bilimleri, nicel biyoloji, istatistik nicel finans alanlarındaki bilimsel çalışmaların elektronik önbasımları için bir arşivdir. 1991 yılında fizikçi Paul Ginsparg tarafından kurulmuştur. Çoğu matematik ve fizik alanındaki tüm bilimsel çalışmalar, arXiv üzerinde kendiliğinden arşivlenir. arXiv.org, 3 Ekim 2008'de yarım milyon makaleyi geçti. 2014 yılı sonlarında bu sayı bir milyonu geçmiştir. Önbasım arşivi, 14 Ağustos 2011'de 20. yılını doldurdu.", - "bandcamp":"Bandcamp, özellikle bağımsız müzisyenlerin, yaptıkları müzikleri satışa çıkarabildikleri veya ücretsiz yayınlayabildikleri müzik akışı ve müzik satın alma servisi.", - "wikipedia":"Vikipedi, kullanıcıları tarafından ortaklaşa olarak birçok dilde hazırlanan; özgür, bağımsız, ücretsiz, reklamsız ve kâr amacı gütmeyen bir internet ansiklopedisidir. MediaWiki yazılımı kullanılarak hazırlanmaktadır. Sürekli eklemeler ve değişiklikler yapıldığı için hiçbir zaman tamamlanmayacağı varsayılmaktadır.", - "bilibili":"Bilibili, Çince: 哔哩哔哩; pinyin: bìlībìlī olarak stilize edilen; Çince: B站 takma adıyla bilinen, anlamı \"B sitesi\" NASDAQ: BILI) olan bir video paylaşım sitesidir. Çin merkezli olan sitede, genel olarak animasyon, çizgi roman ve oyun (ACG) temalı içerikler paylaşılır. Kullanıcılar, videolara altyazı gönderebilir, videodaki altyazıları görüntüleyebilir ve altyazılara yorum yapabilir. Bilibili, manuel olarak değiştirilebilen Adobe Flash ve HTML5 oynatıcılarını kullanır. Bu sayede hem siteye yüklenen videoları, hem de üçüncü taraf kaynaklı videoları oynatabilir. Etkileşimli oynatma deneyimi için gerçek zamanlı bir altyazı sistemine sahiptir.", - "bing":"Microsoft Bing, Microsoft tarafından kullanıma sunulan bir arama motorudur.", - "bing images":[ - "bing:tr", - "ref" - ], - "bing news":"Bing Haberler Microsoft'un Microsoft'un Bing arama motoru bir parçasıdır. Bu, New York Times, Washington Post, MSNBC ve Reuters de dahil olmak üzere, güvenilir ve inandırıcı internet haber kaynaklarının çeşitli aracılığıyla haber makaleleri için bir arama motoru ve toplayıcısıdır.", - "bing videos":"Bing Videos Microsoft'un Bing arama motorunun bir parçası ve video arama hizmetidir. Hizmet, kullanıcılara çeşitli web sitelerindeki videoları aramasına ve görüntülemesine olanak tanır. Bing Videos resmi olarak 26 Eylül 2007'de Live Search Video olarak yayınlandı ve 1 Haziran 2009'da Bing Videos olarak yeniden markalandı.", - "bitbucket":"Bitbucket, Git sürüm kontrol sistemi kullanan projeler için bir ağ depolama servisi olup Django kullanılarak Python programlama dili ile yazılmıştır.", - "currency":"DuckDuckGo kişisel gizliliğe önem veren açık kaynaklı bir web arama motoru ve mobil web tarayıcısıdır. Şirketin adı \"duck, duck, goose\" adlı çocuk oyununa bir göndermedir. Kullanıcıların IP adreslerini ve kişisel bilgilerini kaydetmemektedir. Arama motoru Gabriel Weinberg tarafından ABD'de kurulmuştur. DuckDuckGo Perl dilinde programlanmıştır ve FreeBSD üzerinde çalışmaktadır.", - "deezer":"Deezer web tabanlı bir müzik yayını servisidir. Kullanıcıların çevrimiçi veya çevrimdışı olarak çeşitli cihazlarda müzik dinlemelerini sağlar. Paris, Fransa'da oluşturulmuştur. Deezer 56 milyondan fazla lisanslı müzik parçası, 30.000'den fazla radyo kanalı ve 12 milyon aylık aktif kullanıcıya sahiptir.", - "deviantart":"DeviantART,, İsrailli Wix.com şirketinin sanat eseri, videografi ve fotoğraf yan kuruluşu olan Amerikan çevrimiçi sanat topluluğudur. Ağustos 2000'de Scott Jarkoff ve Matthew Stephens tarafından kurulmuştur. DeviantART'ın şimdiki CEO'su Angelo Sotira'dır. 23 Şubat 2017'de şirket, Wix.com tarafından 36 milyon dolarlık bir anlaşmayla satın alındığını duyurdu.", - "ddg definitions":[ - "currency:tr", - "ref" - ], - "erowid":"Erowid ya da diğer adıyla Erowid Center, psikoaktif bitkiler ve kimyasalların yanı sıra, meditasyon, lüsid rüya, transkraniyal manyetik stimülasyon ve elektrosötikal gibi farklılaşmış bilinç halleri üreten faaliyetler ve teknolojiler hakkında bilgi sağlayan kâr amacı gütmeyen bir eğitim kuruluşudur.", - "wikidata":"Vikiveri veya İngilizce özgün adıyla Wikidata, Vikipedi gibi Vikimedya projelerini desteklemek üzere iş birliği içinde düzenlenebilir veritabanı sağlamak amacıyla başlatılmış bir projedir. Vikiveri projesi, 29 Ekim 2012 tarihinde Vikimedya Almanya tarafından Wikimedia Commons ve benzeri sistemlerde ortak belirli veri türlerini, örneğin doğum tarihleri ve geçerli diğer sınıfları bir araya toplamak üzere başlatılmıştır. Proje Wikimedia Vakfının 2006 yılından bu yana başlattığı ilk yeni proje olmuştur.", - "duckduckgo":[ - "currency:tr", - "ref" - ], - "duckduckgo images":[ - "currency:tr", - "ref" - ], - "duckduckgo videos":[ - "currency:tr", - "ref" - ], - "duckduckgo news":[ - "currency:tr", - "ref" - ], - "duckduckgo weather":[ - "currency:tr", - "ref" - ], - "apple maps":"Apple Haritalar Apple Inc. tarafından geliştirilen bir web haritalama servisidir. Bu, iOS, macOS ve watchOS'un varsayılan harita sistemidir. Otomobil, yaya ve toplu taşıma navigasyonu için yol tarifi ve tahmini varış saatlerini sağlar. Apple Haritalar ayrıca, kullanıcının binaların ve yapıların modellerinden oluşan 3D bir manzara içinde yoğun nüfuslu şehir merkezlerini keşfetmesini sağlayan benzersiz Flyovers modunu da içeriyor.", - "etymonline":"Online Etymology Dictionary, İngilizce sözcüklerin etimolojik kökenlerini inceleyen ücretsiz modern sözlük.", - "fdroid":"F-Droid Android için Play Store'a benzer bir yazılım deposudur. Proje tarafından barındırılan depo, proje gereği yalnızca özgür yazılım uygulamalarını içerir. Uygulamalar, bir hesap ile kayıt olma gerektirmeden F-Droid web sitesinden veya istemci uygulamasından taranabilir ve yüklenebilir. Reklam, kullanıcı takibi veya özgür olmayan yazılıma bağımlılık gibi \"anti-özellikler\", uygulama açıklamalarında işaretlenmiştir. Web sitesi ayrıca, barındırdığı uygulamaların kaynak kodunun yanı sıra F-Droid sunucusunu çalıştıran yazılımlar sunarak herkesin kendi uygulama havuzunu kurabilmesini sağlar.", - "flickr":"Flickr, Şubat 2004'te Ludicorp tarafından kurulan ve 20 Mart 2005 tarihinde Yahoo tarafından 35 milyon dolara satın alınan bir internet sitesidir. Fotoğraf, video paylaşım ve barındırma hizmeti sunmaktadır.", - "genius":"Genius, Kuzey Amerika merkezli dijital medya şirketi. Ağustos 2009'da Tom Lehman, Ilan Zechory ve Mahbod Moghadam tarafından kurulan site, kullanıcıların şarkı sözleri, haber metinleri, şiirler ve çeşitli dokümanlara açıklama ve yorum eklemesine olanak tanımaktadır.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab, web tabanlı bir Git depo yönetimi uygulamasıdır. Sürekli entegrasyon (CI), sürekli teslimat (CD), hata kayıt, kod gözden geçirme ve viki desteği bulunur. Ağustos 2017 itibarıyla 31 farklı ülkede 171 takım üyesi tarafından geliştirilmektedir. Bunun yanında toplamda 1200'den fazla kişi katkı sağlamıştır. Şu anda geliştirmesi GitLab Inc. firması tarafından sürdürülmektedir.", - "github":"GitHub, sürüm kontrol sistemi olarak Git kullanan yazılım geliştirme projeleri için web tabanlı bir depolama servisidir. 8 Şubat 2008 tarihinde Tom Preston-Werner, Chris Wanstrath, P. J. Hyett, Scott Chacon tarafından kuruldu. GitHub özel depolar için ücretli üyelik seçenekleri sunarken, açık kaynaklı projeler için ücretsizdir. Mayıs 2011 itibarıyla GitHub açık kaynaklı projeler tarafından tercih edilen en popüler depolama servisidir.", - "google":"Google Arama, Google Inc. tarafından hizmete sokulan ve en popüler arama motorudur. Google Arama Motoru günde 20 bin terabyte'lık veri işlemektedir.", - "google images":"Google Görseller, Google'ın Aralık 2001'de hizmete aldığı, kullanıcıların her türlü ve boyda görsel aramalarını kolaylaştıran arama motoru. Bu hizmetin hazırlanmasında Jennifer Lopez'in 2000 Grammy Ödülleri'nde giydiği elbisenin de etkisi olmuştur.", - "google news":"Google Haberler, Eylül 2002'de Google tarafından hizmete sokulan ve sürekli güncellenen 4000 farklı haber kaynağının içinde kullanıcıların aradıklarını bulmalarını sağlayan servistir.", - "google videos":"Google Video, Google tarafından işletilen, video dosyaları arşividir. Kuruluş tarihi ise 16 Haziran 2004'tür. 8 Temmuz 2012 tarihinde kapanmıştır.", - "google scholar":"Google Akademik, 20 Kasım 2004 tarihinde Google tarafından hizmete alınan ve sadece akademik makaleler ve konularda arama yapan bir arama motorudur. Google Akademik genellikle makale sonuçlarını pdf dosya biçiminde verir.", - "google play apps":"Google Play, Google'ın Android işletim sistemi için geliştirdiği bir paket yöneticisi ve elektronik medya dağıtım/satış platformudur. Kullanıcılara Android SDK ile geliştirilen ve Google üzerinden yayınlanan uygulamalara göz atmasına ve indirmesine olanak tanır ve Android işletim sisteminin resmi uygulama mağazası olarak hizmet vermektedir.", - "google play movies":[ - "google play apps:tr", - "ref" - ], - "hoogle":"Haskell, isim babası matematikçi Haskell Curry olan arı işlevsel programlama dilidir. Haskell'i birçok programlama dilinden ayıran özellikleri tembel değerlendirme, monadlar ve tür sınıflarıdır. Haskell, Miranda dilinin semantikleri üzerine kuruludur. Akademide yoğun olarak kullanılmasıyla birlikte endüstride de kullanılmaktadır.", - "imdb":"IMDb ; filmler, diziler, televizyon programları, video oyunları ve internet içerikleri hakkında bilgiler barındıran çevrimiçi bir bilgi bankasıdır. Sinema ve televizyon yapımları hakkında oyuncu kadrosu, yapım ekibi, biyografiler, özetler, ilginç bilgiler, puanlar ve eleştiriler gibi bilgileri içerir. İlk kurulduğunda amatör sinemaseverler tarafından yönetilen IMDb, günümüzde Amazon'un alt kuruluşu IMDb.com Inc. tarafından yönetilmektedir.", - "imgur":"Imgur Alan Schaaf tarafından 2009 yılında kurulan Amerikan çevrimiçi görüntü paylaşım topluluğu ve görüntü barındırma sitesi.", - "kickass":"KickassTorrents bir dizin için torrent dosyaları ve magnet bağlantıları kullanarak kullanıcıdan kullanıcıya dosya paylaşımı yöntemini sunan ve BitTorrent protokolünü kullanan bir web sitesi idi. Site 2008'de kuruldu ve 20 Temmuz 2016'da Amerika Birleşik Devletleri Hükümeti tarafından alan adına el konularak kullanıma kapatıldı. Sitenin vekil sunucuları da çalışanlar tarafından yayından kaldırıldı.", - "library genesis":"Library Genesis (Libgen), bilimsel dergi makaleleri, akademik ve genel ilgi kitapları, resimler, çizgi romanlar ve dergiler için bir dosya paylaşım web sitesidir. Kısmen, site başka türlü ödeme duvarı olan veya başka bir yerde dijitalleştirilmeyen içeriğe ücretsiz erişim sağlar. Libgen kendisini \"kamuya açık internet kaynaklarından toplanan\" ve kullanıcılar tarafından yüklenen araştırılabilir makale, kitap ve resim veri tabanı sağlayan bir \"link toplayıcı\" olarak tanımlamaktadır.", - "library of congress":"Amerika Birleşik Devletleri Kongre Kütüphanesi, ABD'nin ulusal kütüphanesidir. Dünyanın en büyük ve en önemli kütüphanelerinden olan kongre kütüphanesi Washington'da bulunmaktadır. Ayrıca ABD’de yer alan en eski federal kültür yapısıdır.", - "mastodon users":"Mastodon, kendi kendine barındırılan sosyal ağ hizmetlerini çalıştırmak için ücretsiz ve açık kaynaklı bir yazılımdır. Her biri kendi davranış kuralları, hizmet şartları, gizlilik seçenekleri ve modernasyon politikaları olan, örnek olarak bilinen çok sayıda bağımsız çalışan düğüm tarafından sunulan Twitter hizmetine benzer mikroblog özelliklerine sahiptir.", - "mastodon hashtags":[ - "mastodon users:tr", - "ref" - ], - "npm":"npm javascript betik dili için geliştirilmiş olan ve Node.js'in standart olarak kabul ettiği bir paket yönetim sistemidir. npm komut satırından çalıştırılır ve uygulamalar için bağımlılık yönetimi sağlar. Ayrıca geliştiricilerin merkezi bir npm kaynağından var olan paketleri kurmasına imkân verir. npm tamamen javascript dili kullanılarak Isaac Z. Schuleter tarafından, PHP'nin PEAR ve Perl'in CPAN sistemlerinden esinlenilerek geliştirilmiştir.", - "openstreetmap":"OpenStreetMap, özgür yazılım şartları altında oluşturulan özgür ve açık kaynaklı bir dünya çapında harita oluşturma projesidir. GPS alıcılarıyla ve diğer kamu malı kaynaklardan toplanan bilgiler ile oluşturulur.", - "pinterest":"Pinterest, görüntü paylaşımı özellikli, her türlü görselin paylaşıldığı ve pano sistemiyle çalışan bir sosyal ağ platformudur. İlk kez Aralık 2009'da Ben Silbermann, Evan Sharp ve Paul Sciarra tarafından kavramsallaştırılmıştır. Görüntüleri ve daha küçük ölçekte GIF'leri ve videoları bülten tahtası biçiminde kullanır. 2010 yılında sosyal medya platformları arasına dahil olan Pinterest, 2011 yılında büyük bir patlama ile popülerlik kazanmıştır. 70 milyon üzeri kullanıcıya sahiptir. Kullanıcıların çoğunluğunu kadınlar oluşturmaktadır, ancak yayın yaptığı birçok kategori ile erkeklerin de ilgisini rahatlıkla çekebilecek bir sitedir. Ağustos 2020 itibarıyla 400 milyonun üzerinde aylık aktif kullanıcıya sahipti. Pinterest 2016 yılında Instapaper, 2017 yılında Jelly uygulamasını satın almıştır.", - "piratebay":"The Pirate Bay, dünyanın en büyük Bittorrent izleyicisidir ve 2008'in en çok ziyaret edilen torrent sitesi seçilmiştir. Pirate bay, korsan koyu anlamına gelir. İsveç'teki merkezine yapılan polis baskınıyla kapatılmıştır.", - "pubmed":"MEDLINE, 1950 yılına kadar uzanan gazete ve dergi makalelerine yapılmış atıflara ait bir bibliyografik veri tabanıdır. Veritabanı, klinik tıp ve biyomedikal araştırmalarına ait 4,600’den fazla uluslararası yayını içermekte olup, aynı zamanda diş hekimliği, hemşirelik, kimya, farmakoloji, biyoloji, fizik, beslenme, sağlık teslimat, psikiyatri, psikoloji, çevre sağlığı, sosyal bilimler ve eğitim konularını da kapsar. Medline veritabanı, kayıtlardan oluşan koleksiyonu tarama özelliğine sahip olmanın yanı sıra, 13 milyon’dan daha fazla atıfı içerdiği için de etkili bir biçimde tarama yapmak önemlidir.", - "pypi":"Python Paket Dizini, PyPI olarak kısaltılır ve Peynir Dükkanı olarak da bilinir, Python için resmi bir üçüncü taraf yazılım deposudur. Perl için CPAN deposuna ve R için CRAN deposuna benzer. PyPI, bir hayır kurumu olan Python Software Foundation tarafından işletilmektedir. Bazı paket yöneticileri, pip dahil, PyPI'yi paketler ve bağımlılıkları için varsayılan kaynak olarak kullanır.", - "qwant":"Qwant, 2013 Temmuz tarihinde hizmet vermeye başlayan Fransa merkezli internet arama motorudur. Kendisine ait indeksleme motoru olan birkaç AB Merkezli arama motoru firmasındandır. Firma kullanıcılarının gizliliğine önem vermektedir. Arama sonuçları ve kullanıcılara ait veriler kişiselleştirilmemekte ve takip edilmemektedir.", - "qwant news":[ - "qwant:tr", - "ref" - ], - "qwant images":[ - "qwant:tr", - "ref" - ], - "qwant videos":[ - "qwant:tr", - "ref" - ], - "reddit":"Reddit, bir Amerikan sosyal haber, tartışma sitesidir. Siteye kayıtlı kullanıcılar bağlantı, metin, fotoğraf, anket ve video içerebilen gönderiler paylaşabilir, diğer kullanıcılar da bu gönderileri oylayarak gönderinin sayfada üste çıkmasını veya alta inmesini sağlayabilirler. Reddit'te gönderiler kullanıcılar tarafından oluşturulmuş; spor, oyun, müzik, yemek, fotoğrafçılık, haber gibi farklı konuları ele alan, \"subreddit\" denilen alt gruplarda paylaşılır. Bir subreddit'te paylaşılmış gönderi yeteri kadar oy alırsa bu gönderi Reddit'in ana sayfasına çıkar. Siteye kayıtlı her kullanıcı kendi subreddit'ini oluşturabilir.", - "soundcloud":"SoundCloud, İsveç'te kurulan ve Berlin'den yönetilen çevrimiçi ses dağıtım platformu ve müzik paylaşım sitesi. Kullanıcıların ses dosyalarını yükleyip tanıtmasına ve paylaşmasına, dinleyicilerin bu dosyaları web üzerinden dinlemesine olanak sağlar. 2007'de Alexander Ljung ve Eric Wahlforss tarafından kurulan SoundCloud zaman içinde dünyanın en büyük müzik akış servislerinden biri oldu. Ücretsiz ve ücretli üyelik seçenekleri bulunmakta, bilgisayar ve mobil cihazlarda kullanılabilmektedir. 200 milyon şarkı ve 20 milyondan fazla sanatçıdan oluşan küresel bir topluluktur.", - "stackoverflow":"Stack Exchange, çeşitli konularda soru-cevap sitelerini bir araya getiren site ağı. Stack Exchange, aralarında Matematik, İstatistik, Din, Astronomi, Bilgisayar programcılığı gibi belirli konularda özelleşmiş 130'un üzerinde soru-cevap sitelerini barındırmaktadır.", - "askubuntu":[ - "stackoverflow:tr", - "ref" - ], - "superuser":[ - "stackoverflow:tr", - "ref" - ], - "semantic scholar":"Semantic Scholar, Allen Yapay Zeka Enstitüsü'nde geliştirilen ve Kasım 2015'te halka açık olarak yayınlanan bilimsel literatür için yapay zekâ destekli bir araştırma aracıdır. Bilimsel makaleler için özetler sağlamak üzere doğal dil işlemedeki gelişmeleri kullanır. Semantic Scholar ekibi, yapay zekanın doğal dil işleme, makine öğrenimi, İnsan-bilgisayar etkileşimi ve bilgi çekme alanlarında kullanımını aktif olarak araştırmaktadır.", - "startpage":"Startpage, Hollanda merkezli, gizlilik odaklı bir arama motoru şirketidir. Web sitesi, kullanıcıların verilerinin depolanmadan ve izleyiciler tarafından takip edilmeden Google Arama sonuçlarına erişmesine olanak sağlar. Startpage.com ayrıca, kullanıcıların daha fazla anonimlik için proxy aracılığıyla arama sonuçlarını açmasına olanak tanıyan bir Anonim Görünüm tarama özelliği içerir. Şirketin merkezi Hollanda'da olduğundan, Hollanda ve Avrupa Birliği gizlilik yasaları tarafından korunmaktadır ve bu nedenle PRISM gibi Amerika Birleşik Devletleri gözetim programlarına tabi değildir.", - "yahoo news":"Yahoo! News, Yahoo!'ya bağlı olarak İnternet tabanlı bir RSS okuyucu olarak faaliyet gösteren bir web sitesidir. Ağustos 1996'da kurulan sitedeki haberler Associated Press, Reuters, Fox News, Al Jazeera, ABC News, USA Today, CNN ve BBC News gibi haber kaynaklarından gelir. 19 Aralık 2006'ya kadar haberlerde yorum yapılmasına izin veren site, 2 Mart 2010'da bu özelliği geri getirmiştir.", - "youtube":"YouTube, Google'a ait bir Amerikan çevrimiçi video paylaşım ve sosyal medya platformudur. Merkezi San Bruno, Kaliforniya'da olan platform; 15 Şubat 2005'te üç eski PayPal çalışanı tarafından kuruldu. Platform; kullanıcılarına video yükleme, izleme ve paylaşma imkânı sunmakta olup medya şirketleri ve kullanıcı üretimi videoların gösterimi için WebM, H.264 ve Adobe Flash Video teknolojilerini kullanır. Genel olarak video klipler, televizyon klipleri, müzik videoları, video bloglar, kısa özgün videolar ve eğitim videoları gibi içerikler yayınlanmaktadır.", - "dailymotion":"Dailymotion, 2005 yılının Mart ayında, Benjamin Bejbaum ve Olivier Poitrey tarafından Fransa'nın Paris şehrinde kurulmuş olan bir video barındırma web sitesidir. Sitenin yapımına Poitrey'nin evinin oturma odasında başlamışlardır. 15 Mart 2005'te yayına girmiştir ve kısa sürede popüler bir video paylaşım sitesi olmuştur.", - "vimeo":"Vimeo, ABD tabanlı video paylaşım sitesidir. Zach Klein ve Jake Lodwick tarafından Kasım 2004'te kurulmuştur. Vimeo, Youtube'a doğrudan bir rakip olarak hizmet vermektedir. Ancak Youtube'a göre odağında daha çok film gibi uzun videolar vardır.", - "wikibooks":"Vikikitap (Wikibooks), Wikimedia Vakfı'nın projelerinden biridir. Burada kullanıcıların katkıları ile özgür, açık içerikli kitaplar, kılavuzlar, çeşitli yazılar hazırlanmaktadır. Türkçe VikiKitap21 Mayıs 2008 tarihinde Wayback Machine sitesinde arşivlendi.'ta 25 Aralık 2016'ya kadar 1.152 kitap maddesi ve yaklaşık 85 kitap hazırlanmıştır.", - "wikinews":"Vikihaber (Wikinews) bir açık kaynak haber kaynağı vikisi ve bir Wikimedia Kuruluşu projesidir. Site işbirlikçi gazetecilik ile idame ettirilmektedir.", - "wikiquote":"Vikisöz (Wikiquote), Vikipedi'nin bir kardeş projesidir ve aynı MediaWiki programını kullanır. Wikimedia Vakfı'nın projelerinden biridir. Daniel Alston'un fikri ve Brion Vibber'in uygulaması ile hayata geçirilmiş ve amacı şahısların, kitapların, atasözleri ve deyimler hakkında büyük bir kaynak çıkarmak ve bilgi vermektir.", - "wikisource":"Vikikaynak (Wikisource), Wikimedia Vakfı'nın projelerinden biridir. Şiir, ayet, bildiri, yasa ve telif hakkı koruması kalkmış kitaplar gibi kaynak metinlerin katılımcılar tarafından eklendiği özgür bir kütüphanedir.", - "wikispecies":"Vikitür viki tabanlı bir Wikimedia Vakfı tarafından desteklenen çevrimiçi bir projedir. Amacı, tüm türler için kapsamlı bir ücretsiz içerik kataloğu oluşturmaktır; proje genel halka değil bilim adamlarına yöneliktir. Jimmy Wales editörlerin derecelerine faks göndermeleri gerekmediğini, ancak gönderimlerin teknik bir izleyici ile toplanması gerektiğini belirtti. Vikitür GNU Özgür Belgeleme Lisansı ve CC BY-SA 3.0 altında bulunabilir.", - "wiktionary":"Vikisözlük (Wiktionary), Wikimedia Vakfı'nın projelerinden olup her dilde özgür birer sözlük oluşturma amacıyla 12 Aralık 2002 tarihinde başlatılmıştır. Vikipedi'nin kardeş projelerindendir. Türkçe Vikisözlük ise 2 Mayıs 2004 tarihinde başlatılmıştır.", - "wikiversity":"Vikiversite; öğrenme topluluklarını ve bunlara ait araç ve gereçleri destekleyen Wikimedia Foundation projesidir. Projenin Wikipedia gibi daha sağlam yapılı projelerden ayrılan yönü, içeriği kullanıcıya doğrudan sunmak yerine bir dizi rehber ve ders içeriyor oluşudur.", - "wikivoyage":"Wikivoyage, gezi yerleri ve seyahat konularının gönüllüler tarafından yazıldığı ücretsiz web tabanlı seyahat rehberidir.", - "wikicommons.images":"Wikimedia Commons, kullanımı serbest olan resim, ses ve diğer çoklu ortam belgeleri deposudur.", - "wolframalpha":"Wolfram Alpha, Matematiksel hesaplar yapan bilim insanlarının tercihlerinden biri olan Mathematica yazılımının geliştiricisi Stephen Wolfram'ın sahibi olduğu Wolfram Research tarafından geliştirilen bir bilgi motorudur.", - "dictzone":[ - "Çevrimiçi sözlükler: İngilizce, Almanca, Macarca... Favori sözlüğünüzü seçin!", - "https://dictzone.com/" - ], - "1337x":"1337x, BitTorrent protokolü ile peer-to-peer dosya paylaşımı için kullanılan torrent dosyalarının ve magnet bağlantılarının dizinini sağlayan bir web sitesidir. TorrentFreak haber bloguna göre; 1337x, 2018 itibarıyla üçüncü en popüler torrent sitesidir.", - "seznam":"Seznam.cz, Çekya merkezli arama motoru ve internet portalıdır.", - "mojeek":"Mojeek, internet sansürü barındırmayan, gizlilik dostu bir arama motorudur. İngiltere'de ortaya çıkan bir projedir ve Marc Smith Mojeek'in kurucusudur. Arama motoru C programlama dili ile yazılmıştır ve 2021 yılında 4 milyar sayfa hedefini geçmiştir.", - "naver":"Naver, Güney Kore merkezli bir arama motoru ve internet portalıdır. Site, Haziran 1999 tarihinde eski Samsung çalışanları tarafından kurulmuş olup Güney Kore'nin kendi arama motoruna sahip ilk internet portalıdır. Günümüzde Naver Corporation bünyesinde faaliyet göstermektedir.", - "peertube":"PeerTube, WebTorrent tarafından desteklenen, dağıtık, ActivityPub federasyonlu ve ücretsiz ve açık kaynak kodlu bir video platformudur. Peer-to-peer teknolojisini kullanarak video izlerken sunucuların yükünü azaltır.", - "brave":"Brave açık kaynak kodlu, Chromium üzerine inşa edilmiş web tarayıcı yazılımı.", - "brave.images":[ - "brave:tr", - "ref" - ], - "brave.videos":[ - "brave:tr", - "ref" - ], - "brave.news":[ - "brave:tr", - "ref" - ] - }, - "uk":{ - "9gag":"9GAG — розважальний сайт розташований в Гонконзі, в основі котрого лежать смішні зображення або відео, що завантажені користувачами. Відвідуваність сайту досягла 1 мільярда переглядів сторінок на місяць, за даними на грудень 2011.", - "annas archive":"Anna's Archive — це безкоштовна некомерційна метапошукова система тіньової бібліотеки в Інтернеті, яка надає доступ до різноманітних книжкових ресурсів, створена командою анонімних архівістів, і був запущений як пряма відповідь на зусилля правоохоронних органів за офіційної підтримки Асоціації видавців і Гільдії авторів щодо закриття Z-Library у листопаді 2022 року", - "apple app store":"App Store — платформа цифрової дистрибуції, що розроблена і підтримувана Apple Inc. для комп'ютерних програм та мобільних застосунків на своїх операційних системах. Є розділом Інтернет-магазину iTunes Store, що продає власникам смартфонів iPhone, плеєрів iPod Touch та планшетних комп'ютерів iPad різний вміст.", - "artic":"Художній інститут у місті Чикаго, штат Іллінойс, США — другий за розмірами серед найбільших і найбагатших музеїв Сполучених Штатів. Більшим за нього є тільки МЕТ — Метрополітен-музей в місті Нью-Йорк.", - "arxiv":"arXiv.org — найбільший безкоштовний архів електронних публікацій наукових статей та їх препринтів. ArXiv підтримується бібліотекою Корнелльського університету під керівництвом науково-консультативної ради архіву та консультативної групи щодо стійкості архіву, а також за допомогою численних модераторів тем. Наукова тематика архіву включає астрономію, фізику, математику, інформатику, кількісну біологію, статистику та фінансову математику.", - "bandcamp":"Bandcamp — приватна компанія, заснована колишніми співзасновниками сервісу Oddpost, а саме Ітаном Даймондом і Шоном Ґрюнберґером у 2007 році разом з програмістами Джо Голтом і Нілом Такером. У 2008 році компанія запустила інтернет-магазин музики, який є також платформою для розкрутки музикантів. Музиканти, що використовують Bandcamp, можуть скористатися інтерфейсом сайту, а також опублікувати власні композиції. Всі композиції доступні для користувачів безкоштовно, при цьому найчастіше надається можливість придбати альбом або конкретний трек за гнучкими цінами.", - "wikipedia":"Вікіпе́дія — загальнодоступна вільна багатомовна онлайн-енциклопедія, якою опікується неприбуткова організація «Фонд Вікімедіа».", - "bilibili":[ - "китайський вебсайт для обміну відео", - "wikidata" - ], - "bing":"Bing — пошукова система, що належить компанії Microsoft. Цей пошуковий сервіс змінив попередні пошукові, що розроблялись корпорацією: MSN Search, Windows Live Search та пізніше Live Search. Bing виконує пошук тексту, зображень, відео або географічних об'єктів, які потім показує на мапі. Сервіс працює на платформі ASP.NET.", - "bing images":[ - "bing:uk", - "ref" - ], - "bing news":[ - "Канали новин світового масштабу, національні, а також місцеві канали впорядковано, щоб забезпечити детальний огляд новин спорту, шоу-бізнесу, ділових новин, політики, погоди тощо.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Інтелектуальний пошук у Bing дає змогу швидко знаходити потрібне й отримувати винагороди.", - "https://www.bing.com/videos" - ], - "bitbucket":"Bitbucket — вебсервіс для хостингу проєктів на базі систем керування версіями: Mercurial та Git. Bitbucket надає як безкоштовні так і платні послуги. Є аналогом GitHub, однак, на відміну від GitHub, який до січня 2019 року зберігав файли безкоштовних профілів лише у відкритому доступі, Bitbucket від самого початку дозволяв безкоштовно створювати приватні репозиторії з можливістю спільної роботи з файлами до 5-ти користувачів. Bitbucket інтегрований з іншими програмними продуктами Atlassian, такими як, JIRA, Confluence, Bamboo та HipChat.", - "btdigg":"BTDigg (укр.:БТДиґ)— це перша BitTorrent DHT пошукова система. Ця DHT пошукова система бере участь в BitTorrent DHT мережі, підтримує мережі і робить відповідності між magnet-посиланнями і кількома торент-атрибутами, які проіндексовані і вставляються в базу даних. BTDigg забезпечує повнотекстовий пошук по базі даних через вебінтерфейс. Вебчастина пошукової системи отримує необхідну інформацію від тексту запиту користувача. Вебпошук підтримує запити європейських і азійських мов. Назва проекту є абревіатурою від BitTorrent Digger.", - "crossref":"Crossref — це об'єднання видавців наукових публікацій, створене з метою розробки та підтримки всесвітньої високотехнологічної інфраструктури наукових комунікацій. Головним завданням CrossRef є сприяння широкому використанню інноваційних технологій для прискорення і полегшення наукових досліджень.", - "currency":"DuckDuckGo — пошукова система з відкритим початковим кодом, що використовує інформацію з багатьох джерел для надання точних та різноманітних результатів. Компанія маніфестує, що не використовує приватну інформацію про своїх користувачів накопичену через історію пошуку та історію покупок, а монетизацію своєї діяльності забезпечує з контекстних оголошень базованих на результатах пошуку. Пошуковик позиціює себе як альтернативу Google та іншим схожим системам вебпошуку. Заснована у вересні 2008 року Гебріелом Вайнбергом. З 2022 року — веб-браузер для систем на базі macOS, з червня 2023 року — веб-браузер у вигляді бета-версії для користувачів Windows. За даними The Verge, є найзахищенішим браузером в світі.", - "deezer":"Deezer — вебсайт для прослуховування музики в потоковому форматі. Дозволяє користувачам слухати на різних пристроях онлайн чи офлайн записи найбільших лейблів, як Sony, EMI, Warner Music Group, Universal Music Group. Сайт створений у Франції 2007 року. В його бібліотеці станом на серпень 2018 року представлено понад 53 млн ліцензованих треків, понад 2 млн альбомів, понад 30 тис. радіоканалів, та понад 100 млн плейлистів. Також Deezer складає чарти найпопулярніших пісень як в світовому масштабі, так і за країнами, зокрема і в Україні. Його щомісячна аудиторія, станом на 2018 рік, сягає 14 млн користувачів і 6 млн абонентів. Має застосунки для мобільних пристроїв на iOS, Android, Windows Phone та розумних годинників Garmin.", - "deviantart":"DeviantArt — соціальна мережа для митців і комерційна онлайн-галерея. Надає можливість демонструвати свої твори, продавати їх, обговорювати чужі. DeviantArt було запущено 7 серпня 2000 року і відтоді він періодично оновлюється, додаючи нові функції. Українською сайт не перекладений, проте має україномовні спільноти. Офіційний маскот сайту — робот-кішка Фелла (Fella). DeviantArt іноді скорочують до абревіатури «dA»", - "ddg definitions":[ - "currency:uk", - "ref" - ], - "wikidata":"Wikidata — загальне централізоване сховище для різних типів даних, як-от інтервікі-посилання, метричні параметри, кількісні параметри та будь-яка статистична верифікована інформація, що може бути використана на сторінках проєктів фонду Wikimedia. Розробка проєкту розпочата на Wikimedia Deutschland. Проєкт запущений 30 жовтня 2012 року, що дало йому змогу стати першим новим проєктом Wikimedia Foundation з 2006 року.", - "duckduckgo":[ - "currency:uk", - "ref" - ], - "duckduckgo images":[ - "currency:uk", - "ref" - ], - "duckduckgo videos":[ - "currency:uk", - "ref" - ], - "duckduckgo news":[ - "currency:uk", - "ref" - ], - "duckduckgo weather":[ - "currency:uk", - "ref" - ], - "apple maps":"Карти — служба вебкарт, розроблена компанією Apple Inc. Вона є системою карт за замовчуванням для iOS, iPadOS, macOS і watchOS, надаючи маршрути та орієнтовний час прибуття для навігації автомобілем, пішки, велосипедом чи громадським транспортом. Функція «Flyover» дозволяє переглядати певні густонаселені міські центри та інші визначні місця у вигляді 3D-карти, що складається з моделей будівель і споруд.", - "tineye":"TinEye — пошукова система, що спеціалізується на пошуку зображень в Інтернеті.", - "fdroid":"F-Droid — централізований каталог програмних застосунків для електронних пристроїв з операційною системою Android. Основною особливістю проекту є те, що основний каталог містить тільки вільне ПЗ. Каталог також позначає в описі застосунку: використання реклами, відстеження користувачів, залежність від комерційного або обмеженого у використанні ПЗ, посилання на сайти або репозитарії із сирцевим кодом самого мобільного застосунку.", - "flickr":"Flickr — вебсайт для розміщення фотографій та відеоматеріалів, їх перегляду, обговорення, оцінки та архівування. Flickr популярний завдяки зручній та простій системі завантаження та пошуку фотографій. Дозволяє спілкуватися та створювати тематичні групи, соціальні мережі.", - "genius":"Genius — американський вебсайт, заснований у серпні 2009 року Томом Леманом, Іленом Зекорі та Мебодом Магедом. Сайт дає можливість користувачам надавати анотації та інтерпретації до текстів пісень, додавати новини, джерела інформації, поезії та документи.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "gitlab":"GitLab — сайт та система керування репозиторіями програмного коду для Git, з додаткових можливостей: власна вікі та система відстеження помилок.", - "github":"GitHub — один з найбільших вебсервісів для спільної розробки програмного забезпечення. Існують платні та безплатні тарифні плани користування. Базується на системі керування версіями Git і розроблений на Ruby on Rails і Erlang компанією GitHub, Inc.", - "google":"Google Search або Google — найбільша пошукова система, що належить корпорації Google Inc., яка в свою чергу, входить до міжнародного конгломерату компаній Alphabet Inc..", - "google images":[ - "Зображення Google. Найповніша система пошуку зображень у мережі.", - "https://images.google.com" - ], - "google news":"Google Новини — це безкоштовний агрегатор новин, який підтримується та керується Google, що вибирає найактуальніші новини з тисяч публікацій.", - "google videos":"Google Відео — безкоштовний сервіс компанії Google, який становить собою пошукову систему з відеороликів. Раніше він був місцем для розміщення відеофайлів. Кожен зареєстрований користувач міг додавати свої відеофрагменти, але Google перестав додавати відео зі всіх акаунтів. Деякі відео могли продаватися через систему Google Зберігання відео. Користувачі сервісу мають можливість як програвати відеофайли безпосередньо, так і викачувати їх собі на комп'ютер. Також відеофрагменти можуть бути впроваджені безпосередньо в HTML-код будь-якої вебсторінки.", - "google scholar":"Google Scholar або Google Академія — вільна доступна пошукова система, яка індексує повний текст наукових публікацій всіх форматів і дисциплін. Дата виходу бета-версії — листопад 2004 року. Індекс Google Scholar включає в себе більшість рецензованих онлайн-журналів Європи та Америки найбільших наукових видавництв. За функціями він схожий на вільно доступні системи Scirus від Elsevier, CiteSeerX і getCITED. Також він схожий на інструменти, засновані на підписці, такі як Elsevier в Scopus і Thomson ISI's Web of Science. Рекламний слоган Google Scholar — «стояти на плечах гігантів» — це данина вченим, які внесли свій вклад у свої галузі протягом століть, забезпечуючи основу для нових наукових досягнень.", - "google play apps":"Google Play — крамниця застосунків від Google, що дозволяє власникам пристроїв з мобільною операційною системою Android та іншими завантажувати і купувати різні застосунки, книги, фільми і музику.", - "google play movies":[ - "google play apps:uk", - "ref" - ], - "habrahabr":"Хабрахабр (Хабр) — вебсайт, який поєднує ознаки соціальної мережі і колективного блогу, створений для публікації новин, аналітичних статей, думок, пов'язаних із інформаційними технологіями, бізнесом та Інтернетом.", - "hackernews":"Hacker News — соціальний агрегатор новин зі сфери IT та підприємництва. Проект інвестиційного фонду та інкубатора Y Combinator, яким на час заснування у 2007 році керував Пол Грем. Загалом, контент, що вітається на сайті визначений як «все, що задовольнить вашу інтелектуальну допитливість».", - "hoogle":"Haskell — стандартизована, винятково функційна мова програмування з нестрогою семантикою. Названа на честь американського математика Гаскелла Каррі, роботи якого в галузі математичної логіки є базовими для функційного програмування. Гаскель базується на лямбда численні. Найважливішими реалізаціями є компілятор Glasgow Haskell Compiler (GHC) та оснований на ньому компілятор GHCJS, що компілює Гаскель-код у скрипт мовою JavaScript. Історично важливим також є інтерпретатор Hugs, але на сьогодні він не підтримується.", - "imdb":"База даних фільмів в Інтернеті — найбільша база даних та вебсайт про кінематограф. База даних значною мірою заповнюється добровольцями, це чимось нагадує концепцію вікі. У базі зараз зібрана інформація про 10,1 млн фільмів і телесеріалів, є інформація майже про 11,5 млн акторів, режисерів та інших професіоналів кіно зі всього світу.", - "imgur":"Imgur - онлайн-сервіс завантаження, зберігання та обміну фото-зображень.", - "kickass":"KickassTorrents — у минулому одна з найбільших Bittorent-толок світу що проіснувала з 2008 по липень 2016 року. Сайт трекеру працював як пошуковий індекс для .torrent файлів та magnet-посилань). Станом на липень 2016 року сайт займав 68 місце за відвідуваністю у світі згідно з глобальним рейтингом Alexa. Один з серверів ресурсу було розміщено в США.", - "lemmy communities":"Lemmy — це безкоштовне програмне забезпечення з відкритим вихідним кодом для запуску агрегаторів соціальних новин та дискусійних форумів на самостійному хостингу.", - "lemmy users":[ - "lemmy communities:uk", - "ref" - ], - "lemmy posts":[ - "lemmy communities:uk", - "ref" - ], - "lemmy comments":[ - "lemmy communities:uk", - "ref" - ], - "library genesis":"Library Genesis або LibGen — вебсайт та онлайн-сховище, що нелегально надає безкоштовний доступ до наукових статей, книг, та наукових праць захищених авторським правом. Окрім іншого, на сайті розміщено PDF-файли з сайту ScienceDirect.", - "z-library":"Z-Library — онлайн-бібліотека та проєкт спільного використання файлів для наукових статей. Z-Library заявляє, що проєкт надає доступ до понад 6 754 720 книг та 80 759 561 стаття на 2021 рік. Станом на кінець листопада 2022 року сайт заблокований згідно з рішенням Департаменту Юстиції Федерального Бюро Розслідувань США.", - "library of congress":"Бібліотека Конгресу — національна бібліотека Сполучених Штатів Америки та дослідницький підрозділ Конгресу США. Є найбільшим за площею книгосховищем та однією з найважливіших бібліотек світу. Розташована у Вашингтоні, має три основні будівлі.", - "mastodon users":"Mastodon — це розподілена та федеративна соціальна мережа, подібна до сервісу мікроблогів Твіттер, але керована як децентралізована федерація незалежних серверів зі встановленим на них відповідним вільним програмним забезпеченням. Користувачі реєструються на окремих серверах мережі Mastodon, які називають екземплярами та можуть під'єднуватися й спілкуватися з іншими серверами безперешкодно. Коротке повідомлення називається «дмух». Маскот сервісу — брунатний або сірий хоботний, часом зображається з мобільним пристроєм в лапах.", - "mastodon hashtags":[ - "mastodon users:uk", - "ref" - ], - "metacpan":"CPAN — архів документації та програмного забезпечення, написаного на мові програмування Perl. Цей інтернет-архів був заснований в 1995 році. Станом на 2011 рік у CPAN зареєстровано понад 23000 пакетів з модулями, у створенні яких взяло участь понад 9 тисяч розробників; загальне число всіх представлених в CPAN модулів подолало стотисячний рубіж.", - "mixcloud":"Mixcloud онлайн сервіс зі стримінгу музики, який забезпечує прослуховування і розповсюдження радіо-шоу, DJ-міксів і подкастів, які надаються його ж зареєстрованими користувачами.", - "npm":"npm - це менеджер пакунків для мови програмування JavaScript. Для середовища виконання Node.js це менеджер пакунків за замовчуванням. Включає в себе клієнт командного рядка, який також називається npm, а також онлайн-базу даних публічних та приватних пакунків, яка називається реєстром npm. Реєстр доступний через клієнт, а доступні пакунки можна переглядати та шукати через вебсайт npm. Менеджер пакунків та реєстр керуються npm, Inc.", - "openstreetmap":"OpenStreetMap — це відкритий проєкт, спрямований на збір, збереження та розповсюдження загальнодоступних геопросторових даних, створення інструментів для роботи з ними силами спільноти волонтерів.", - "pinterest":"Pinterest — соціальний фотосервіс. Після того, як зображення завантажені на Pinterest, вони називаються пінами, а колекції, до яких вони належать, — дошки. Місія сайту звучить, як «об'єднати весь світ за допомогою речей, які їм цікаві». Засновник сайту — Бен Зільберманн з міста Вест-Де-Мойн штату Айова. Власник сервісу — однойменна американська компанія, заснована 2008 року Беном Сілберманом.", - "piratebay":"The Pirate Bay — це вебсайт, засновники якого позиціонують його як «найбільший у світі BitTorrent-трекер». Він також служить як пошуковий індекс для .torrent файлів. ThePirateBay.org знаходиться на 101 місці року в світовому рейтингу вебсайтів Alexa та на 258 в рейтингу від Quantcast. The Pirate Bay був започаткований шведською організацією Piratbyrån в листопаді 2003, але з початку жовтня 2004 почав існувати як окрема організація. Зараз сайт підтримується Готфрідом Свартгольмом («anakata»), Фредеріком Нейжом («TiAMO») та Петером Сунде («brokep»).", - "pubmed":"MEDLINE — це бібліографічна база даних про біологічні науки та біомедичну інформацію. Включає бібліографічну інформацію для статей з академічних журналів, що охоплюють медицину, сестринську справу, фармацію, стоматологію, ветеринарію та охорону здоров'я. MEDLINE також охоплює значну частину літератури з біології та біохімії, а також таких галузей, як молекулярна еволюція.", - "pypi":"PyPI — каталог програмного забезпечення, написаного на мові програмування Python. У поєднанні з системами управління бібліотечними пакетами аналогічні PEAR для PHP і CPAN для Perl. За даними лічильника на головній сторінці в липні 2014 містив дані про більш ніж 46000 пакетів, тоді як в 2010 році пакетів було всього близько 10000.", - "qwant":"Qwant - це пошукова система, розроблена однойменною французькою компанією, яка декламує захист персональних даних.", - "qwant news":[ - "qwant:uk", - "ref" - ], - "qwant images":[ - "qwant:uk", - "ref" - ], - "qwant videos":[ - "qwant:uk", - "ref" - ], - "reddit":"Редит (Reddit, ) — це розважальний, новинний онлайновий сервіс, а також інтернет-змі, де зареєстровані члени громади можуть додавати свій контент, такий як текстові пости або прямі посилання і обговорювати їх (BBS). Зареєстровані користувачі можуть голосувати за чи проти, таким чином сортуючи пости. Від оцінок залежить позиція посту на сторінках сайту. Найпопулярніші пости показуються угорі відповідних категорій. Контент організовано за допомогою осередків за інтересами, які звуться «сабредити» (subreddits). Тематика сабредитів досить широка: новини, ігри, кіно, музика, книги, спорт, їжа, фотографії, аніме, порнографія та безліч інших.", - "soundcloud":"SoundCloud — стримінгова платформа та вебсайт для розповсюдження оцифрованої звукової інформації, володіє функціями соціальної мережі та однойменної організації.", - "stackoverflow":"Stack Exchange — це мережа вебсайтів для питань і відповідей з різних тем, в якій питання, відповіді і користувачі мають рейтинг. Першим і одним з найвідоміших сайтів мережі є Stack Overflow, що присвячений питанням з програмування. Система рейтингів дозволяє сайтам мережі бути самомодерованими. Питання і відповіді користувачів публікуються під вільною ліцензією Creative Commons Attribution-ShareAlike 3.0 Unported.", - "askubuntu":[ - "stackoverflow:uk", - "ref" - ], - "superuser":[ - "stackoverflow:uk", - "ref" - ], - "semantic scholar":"Семантичне вчення[джерело?], англ. Semantic Scholar — це дослідницький інструмент для наукової літератури на основі штучного інтелекту, розроблений в Інституті ШІ ім. Аллена та оприлюднений у листопаді 2015 року. Він використовує досягнення в обробці природної мови для створення резюме для наукових робіт. Команда Semantic Scholar активно досліджує використання штучного інтелекту в оброблянні природної мови, машинному навчанні, взаємодії людини з комп'ютером і пошуку інформації.", - "startpage":"Startpage — нідерландська пошукова система, що позиціонує себе як конфіденційний засіб пошуку в інтернеті. Сайт надає результати запитів Google, захищаючи право конфіденційності користувача, не зберігаючи особисті або пошукові дані. Також пошукова система має функцію анонімного перегляду, що надає результати через проксі-сервер для підвищення рівня анонімності. Особливою перевагою Startpage є базування у Нідерландах, що свідчить про захист законами ЄС конфіденційності, запобігаючи стеження з боку державних програм, як, приміром, PRISM.", - "yahoo news":"Yahoo! News — це новинний сайт, який виник як агрегатор новин від Yahoo! Сайт було створено програмістом Бредом Клоузі в серпні 1996 року. Спочатку статті надходили з таких служб новин, як Associated Press, Reuters, Fox News, Al Jazeera, ABC News, USA Today, CNN і BBC News.", - "youtube":"YouTube — популярний відеохостинг, що надає послуги розміщення відеоматеріалів. Заснований 14 лютого 2005 року трьома працівниками PayPal: Чадом Герлі, Стівеном Чені та Джаведом Карімом. Зараз є підрозділом компанії Google. Станом на серпень 2019 року YouTube є другим за відвідуваністю сайтом в Інтернеті.", - "dailymotion":"Dailymotion — французький відеохостинг. Головний офіс компанії знаходиться у 17-му окрузі Парижа. Dailymotion є третім за відвідуваністю відео обмінником, після YouTube і Vimeo.", - "vimeo":"Vimeo — сервіс, що надає послуги в збереженні та трансляції відеоматеріалів в мережі Інтернет за допомогою протоколу HTTPS.", - "wikibooks":"Вікіпідру́чник — вебсайт для колективного написання навчальної та іншої літератури, що працює за технологією «вікі» на принципах свободи інформації: кожен може створити і змінити будь-яку сторінку будь-якого підручника, і кожен може безкоштовно читати, копіювати, видаляти і змінювати його зміст.", - "wikinews":"Вікіновини — відкрите новинне інтернет-видання, яке створюється неоплачуваними дописувачами. Технологія й принципи написання новинних статей у Вікіновинах такі ж, як в інших виданнях фонду «Вікімедіа», — некомерційної організації, що підтримує Вікіновини.", - "wikiquote":"Вікіцитати — вільне інтернет-зібрання цитат відомих осіб, висловів із книг, фільмів тощо. Сайт створений фондом «Вікімедія» із застосуванням технології «Вікі». Усі розміщені у Вікіцитатах цитати можна використовувати за умовами ліцензії GNU Free Documentation License.", - "wikisource":"Вікіджерела — це інтернет-бібліотека вільних текстових джерел у вікі, що керується Фондом Вікімедіа. Вікіджерела — це назва проєкту в цілому і назва для кожного екземпляра цього проєкту ; декілька Вікіджерел становлять загальний проєкт Вікіджерела. Метою проєкту є розміщення всіх форм вільного тексту багатьма мовами й перекладах. Спочатку задуманий як архів для зберігання корисних або важливих історичних текстів, він розширився і став бібліотекою загального змісту. Офіційний початок проєкту започатковано 24 листопада 2003 року під назвою англ. Project Sourceberg, гра слів з назвою знаменитого Проєкт «Гутенберг», де source в перекладі з англійської — джерело. Назва «Вікіджерела» була прийнята в тому ж році, а через сім місяців проєкт отримав власне доменне ім'я.", - "wikispecies":"Віківи́ди — довідник із таксономії біологічних видів, заснований на технології вікі. Один із проєктів «Фонду Вікімедіа».", - "wiktionary":"Вікісловни́к — багатомовний онлайн-словник довільного наповнення — україномовний розділ проєкту Wiktionary. Тут зібрали й повсякчас поповнюють тлумачення й переклади українських слів, а ще переклади слів і висловів з інших мов.", - "wikiversity":"Віківерсите́т — проект фонду «Вікімедіа», що позиціонує себе як нова форма інтерактивної освіти і ведення відкритих наукових проектів. Освіта та звершення відкриттів — необхідні сторони життя будь-якої людини і суспільства в цілому. Віківерситет фонду Wikimedia спрямований на сприяння відкриттю та поширенню знань найприроднішим шляхом: допомагаючи людям навчатися і ділитися освітніми матеріалами.", - "wikivoyage":"Вікімандри — інтернет-портал, присвячений туризму. Використовує вікі-технології і вільні ліцензії. Створюється добровольцями, зацікавленими в цій темі.", - "wikicommons.images":"Вікісховище — загальне централізоване сховище для зображень, звукозаписів, відеороликів та інших файлів, які надаються на умовах вільних ліцензій.", - "wolframalpha":"Wolfram|Alpha — база знань і набір обчислювальних алгоритмів. Не є пошуковою системою. Запущено 15 травня 2009.", - "dictzone":[ - "Онлайн-словники: англійська, іспанська, німецька, французька, італійська, угорська... Виберіть свій улюблений словник!", - "https://dictzone.com/" - ], - "1337x":"1337x — це веб-сайт, який надає каталог торрент-файлів і magnet-посилань, які використовуються для peer-to-peer обміну файлами через протокол BitTorrent. Згідно з новинним блогом TorrentFreak, 1337x є другим за популярністю торрент-сайтом станом на 2023 рік.", - "seznam":"Seznam.cz — вебпортал та пошукова система в Чехії.", - "naver":"Навіер або Найвер, ориг. Naver від англ. navigate – направляти — найбільший інтернет-портал і найпопулярніша пошукова система в Південній Кореї, що належить корпорації Naver Corporation. Був запущений у червні 1999 року групою колишніх співробітників Samsung. Дебютував в якості першого порталу який використовував свої власні алгоритми пошуку. Займав у 2011 році – 70%, 77% в 2015 р. а в 2017 вже 74,7% пошукового ринку країни.", - "rubygems":[ - "система керування пакунками", - "wikidata" - ], - "peertube":"PeerTube — децентралізований, федеративний відеохостинг з відкритим початковим кодом, заснований на технологіях ActivityPub та WebTorrent. Створений в 2017 році розробником з ніком Chocobozzz, у подальшому підтримку розробки взяла на себе французька некомерційна організація Framasoft.", - "yacy":"YaCy вільна пошукова машина та пошукова система, побудована на принципах однорангової (P2P) мережі. Пошукова система складається з окремих вузлів — примірників програмного забезпечення, написаного на Java, яке користувачі встановлюють на свої комп'ютери з доступом до Інтернет. Кожен вузол самостійно збирає, аналізує та індексує сторінки Інтернет та обмінюється результатами індексації в мережі, формуючи загальну базу даних, яка зберігається розподілено та використовується разом з іншими вузлами. За допомогою YaCY також можна створити пошуковий портал для внутрішньої мережі або пошуковий портал для власних вебсторінок.", - "yacy images":[ - "yacy:uk", - "ref" - ], - "wttr.in":[ - "Прогноз погоди для: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave («Брейв») — інтернет-браузер із відкритим вихідним кодом, розроблений компанією Brave Software Inc. на основі браузера Chromium. Браузер блокує оголошення та відстежувальні програми вебсайтів. Для майбутньої версії вебпереглядача компанія пропонує застосувати бізнес-модель pay-to-surf.", - "brave.images":[ - "brave:uk", - "ref" - ], - "brave.videos":[ - "brave:uk", - "ref" - ], - "brave.news":[ - "brave:uk", - "ref" - ] - }, - "vi":{ - "9gag":"9GAG là một trang web giải trí có trụ sở chính tại Hồng Kông với chủ đề là các hình ảnh do người dùng cung cấp cho phép người dùng tải lên và chia sẻ nội dung do chính người dùng tạo hoặc những nội dung khác từ các nền tảng mạng xã hội trực tuyến bên ngoài. Được ra mắt vào ngày 11 tháng 4 năm 2008, trang web đã đạt một tỷ lượt xem vào tháng 12 năm 2011 và đã trở nên phổ biến trên các nền tảng mạng xã hội trực tuyến như Facebook, Twitter và Instagram.", - "apple app store":"App Store là nền tảng phân phối kỹ thuật số các ứng dụng, hay Chợ ứng dụng cho các thiết bị chạy hệ điều hành iOS, phát triển và duy trì bởi Apple Inc. Cửa hàng App Store cho phép người dùng tìm kiếm, tải xuống cũng như đánh giá các ứng dụng được phát triển bằng bộ phát triển phần mềm iOS và iPadOS của Apple. Các ứng dụng có thể được tải xuống trên điện thoại thông minh iPhone, máy nghe nhạc iPod Touch, máy tính bảng iPad, đồng hồ thông minh Apple Watch và Apple TV thế hệ thứ 4 hoặc mới hơn. App Store được đánh giá cao với sự kiểm duyệt nội dung khắt khe đối với ứng dụng được đăng lên, tính bảo mật và không chứa các ứng dụng có thể gây hại phần cứng và phần mềm của thiết bị.", - "artic":"Viện Nghệ thuật Chicago là một bảo tàng mỹ thuật nằm tại công viên Grant Park, thành phố Chicago, Hoa Kỳ. Viện thành lập năm 1879, là một trong những bảo tàng nghệ thuật lâu đời và lớn nhất thế giới. Viện được công nhận cho những nỗ lực quản lý và sự nổi tiếng, bảo tàng đón khoảng 1,5 triệu khách hàng năm. Bộ sưu tập được quản lý bởi 11 bộ phận giám tuyển, là bách khoa toàn thư, và bao gồm các tác phẩm mang tính biểu tượng như A Sunday on La Grande Jatte của Georges Seurat, The Old Guitarist của Pablo Picasso, Nighthawks của Edward Hopper và American Gothic của Grant Wood. Bộ sưu tập vĩnh viễn gồm gần 300.000 tác phẩm nghệ thuật được bổ sung bởi hơn 30 cuộc triển lãm đặc biệt tổ chức hàng năm nhằm làm sáng tỏ các khía cạnh của bộ sưu tập và hiện tại là giám tuyển và nghiên cứu khoa học tiên tiến.", - "arxiv":"Trang web arXiv là một cơ sở dữ liệu lưu trữ điện tử dạng tiền in ấn của các bài báo khoa học trong các lĩnh vực toán học, vật lý, khoa học máy tính, sinh học định lượng và thống kê mà mọi người có thể truy cập miễn phí trên world wide web. Trong nhiều ngành của toán học và vật lý, hầu hết các bài báo khoa học đều được lưu ở arXiv. Ngày 3 tháng 10 năm 2008, arXiv.org vượt qua mốc lưu trữ nửa triệu bài báo, với gần 5 nghìn bản điện tử mới được thêm vào hàng tháng.", - "wikipedia":"Wikipedia là một bách khoa toàn thư mở trực tuyến đa ngôn ngữ được sáng lập và duy trì bởi một cộng đồng biên tập viên tình nguyện và chạy trên nền tảng wiki.", - "bilibili":"Bilibili là một trang web chia sẻ video xoay quanh chủ đề hoạt hình, truyện tranh và trò chơi của Trung Quốc, nơi người dùng có thể gửi, xem và bình luận về video. Bilibili sử dụng trình phát Adobe Flash hoặc HTML5, có thể chuyển đổi thủ công, để phát các video do người dùng tải lên được chính họ hoặc bên thứ ba lưu trữ. Ngoài ra, từ Bilibili còn bắt nguồn từ biri biri, do người sáng lập của Bilibili - Từ Dật - là fan của series này.", - "bing":"Microsoft Bing, thường được gọi là Bing, là một công cụ tìm kiếm trên web do Microsoft sở hữu và vận hành. Dịch vụ này có nguồn gốc từ các công cụ tìm kiếm trước đó của Microsoft, bao gồm MSN Search, Windows Live Search và Live Search. Bing cung cấp một loạt các dịch vụ tìm kiếm, bao gồm tìm kiếm trên web, video, hình ảnh và bản đồ, tất cả đều được phát triển bằng ASP.NET.", - "bing images":[ - "bing:vi", - "ref" - ], - "bing news":[ - "Tin tức từ nguồn tin tức thế giới, quốc gia và địa phương, được tổ chức để cung cấp cho bạn tin tức chuyên sâu về thể thao, giải trí, kinh doanh, chính trị, thời tiết và nhiều nội dung khác.", - "https://www.bing.com/news" - ], - "bing videos":[ - "Tìm kiếm thông minh từ Bing giúp bạn dễ dàng tìm thấy những gì bạn đang tìm kiếm hơn và trao thưởng cho bạn.", - "https://www.bing.com/videos" - ], - "currency":"DuckDuckGo là một công cụ truy vấn dữ liệu Internet đặt trọng tâm vào việc bảo vệ sự riêng tư người tìm kiếm và không cung cấp thông tin người dùng. DuckDuckGo cũng phân biệt nó với các công cụ tìm kiếm khác bằng cách không lập hồ sơ kết quả tìm kiếm. DuckDuckGo nhấn mạnh lấy thông tin từ các nguồn tốt nhất chứ không phải từ đa số các nguồn, tạo ra kết quả tìm kiếm của mình từ chính các trang web được quần chúng đóng góp như Wikipedia và từ quan hệ đối tác với các công cụ tìm kiếm khác như Yandex, Yahoo, Bing, và Yummly.", - "deezer":"Deezer là một dịch vụ nghe nhạc trực tuyến trên Internet. Nó cho phép người dùng có thể nghe các bản nhạc từ các hãng thu như Sony, Universal Music, và Warner Music Group trên nhiều thiết bị kể cả khi đang trực tuyến hay ngoại tuyến. Deezer được sáng lập tại Paris, Pháp và hiện đang có 53 triệu bài hát được cấp phép trong kho nhạc, cùng với hơn 30.000 kênh radio, 14 triệu người dùng hằng tháng, và 6 triệu thuê bao trả phí tính đến ngày 3 tháng 4 năm 2018. Deezer khả dụng cho Web, Android, iOS, Windows Phone, BlackBerry và Windows.", - "ddg definitions":[ - "currency:vi", - "ref" - ], - "wikidata":"Wikidata được thành lập ngày 30 tháng 10 năm 2012 và là dự án mới đầu tiên của Wikimedia Foundation kể từ năm 2006.", - "duckduckgo":[ - "currency:vi", - "ref" - ], - "duckduckgo images":[ - "currency:vi", - "ref" - ], - "duckduckgo videos":[ - "currency:vi", - "ref" - ], - "duckduckgo news":[ - "currency:vi", - "ref" - ], - "duckduckgo weather":[ - "currency:vi", - "ref" - ], - "apple maps":"Apple Maps là một dịch vụ ứng dụng và công nghệ bản đồ trực tuyến trên web miễn phí do Apple Inc. cung cấp. Ứng dụng này được cài mặt định trên các thiết bị chạy hệ điều hành iOS, OS X và watchOS. Apple Maps có thể hướng dẫn đường đi và thời gian lái xe dự kiến ​​cho ô tô, người đi bộ, hướng dẫn chuyển hướng giao thông công cộng.. Ngoài ra, ứng dụng còn có tính năng 3D Flyover xem dạng vệ tinh, cho phép người sử dụng có thể xoay bản đồ dạng 3D và xem ở các góc độ khác nhau.", - "etymonline":[ - "Từ điển từ nguyên tiếng Anh trực tuyến", - "wikidata" - ], - "flickr":"Flickr là một trang mạng và bộ dịch vụ web chia sẻ hình ảnh, và một nền tảng cộng đồng trực tuyến, được xem như một kiểu mẫu sớm nhất cho ứng dụng Web 2.0. Flickr được tạo bởi Ludicorp vào năm 2004. Qua vài lần thay đổi chủ sở hữu, trong đó nổi tiếng nhất là Yahoo!, SmugMug đã mua lại Flickr vào ngày 20 tháng 4 năm 2018 từ Verizon's Oath, công ty chủ quản của Yahoo!.", - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":"GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa trên nền web cho các dự án phát triển phần mềm. GitHub cung cấp cả phiên bản trả tiền lẫn miễn phí cho các tài khoản. Các dự án mã nguồn mở sẽ được cung cấp kho lưu trữ miễn phí. Tính đến tháng 4 năm 2016, GitHub có hơn 14 triệu người sử dụng với hơn 35 triệu kho mã nguồn, làm cho nó trở thành máy chủ chứa mã nguồn lớn trên thế giới.", - "google":"Google Tìm kiếm, cũng được gọi với tên tiếng Anh phổ biến là Google Search hay đơn giản là Google, là dịch vụ cung cấp chính và quan trọng nhất của công ty Google. Dịch vụ này cho phép người truy cập tìm kiếm thông tin về trên Internet bằng cách sử dụng công cụ tìm kiếm Google, bao gồm các trang Web, hình ảnh & nhiều thông tin khác.", - "google images":"Google Images là một dịch vụ tìm kiếm của Google cho phép người dùng tìm hình ảnh trên các trang web. Tính năng này được hoàn chỉnh vào tháng 12 năm 2001. Những từ khóa để tìm kiếm hình ảnh được dựa theo tên của file hình ảnh, đoạn văn bản chứa đường link đến hình ảnh và những đoạn nằm gần bức ảnh. Khi tìm kiếm hình ảnh, hình ảnh thu nhỏ của mỗi tấm hình khớp với từ khóa tìm kiếm sẽ được hiển thị. Khi nhấp vào hình thu nhỏ, hình ảnh sẽ được hiển thị trong một khung ở phía trên trang. Trang web chứa hình ảnh đó sẽ được hiển thị trong khung bên dưới cho ta dễ dàng để thấy được nơi mà tấm hình xuất hiện.", - "google news":"Google News là một trang web tổng hợp tin tức tự động được cung cấp bởi Google. Ý tưởng ban đầu được hình thành từ việc xếp hạng trang web của Google, được phát triển bởi Krishna Bharat vào năm 2001, trưởng bộ phận Nghiên cứu của Google. Không ai được thay thế trang chủ hoặc nội dung của nó. Tất cả đều được thực hiện bằng các giải thuật tổng hợp tin. Google News trở thành bản chính thức vào tháng 1 năm 2006. Hiện trang đã có phiên bản tiếng Việt tại địa chỉ http://news.google.com.vn.", - "google videos":"Google Video là một dịch vụ chia sẻ video trực tuyến của Google cho phép mọi người tải các đoạn clip của mình lên máy chủ của Google mà không tốn bất kỳ phí nào, đồng thời có thể chia sẻ cho mọi người hoặc bán các đoạn video clip của mình thông qua các cửa hàng online của Google Video.", - "google scholar":"Google Scholar là một dịch vụ tìm kiếm miễn phí đánh chỉ mục toàn văn các tài liệu học thuật trong các nội dung đã xuất bản ở nhiều định dạng. Xuất hiện dưới bản beta từ tháng 11 năm 2004, GS đánh chỉ mục cho hầu hết các tạp chí và sách học thuật trực tuyến được phản biện mở (peer-review), các bài báo hội nghị, luận văn và luận án, bản thảo, bản tóm tắt, báo cáo kỹ thuật và các tài liệu học thuật khác, bao gồm cả ý kiến ​​của tòa án và bằng sáng chế. Tính năng của nó tương tự Scirus từ Elsevier, CiteSeer, và getCITED. Nó cũng tương tự các công cụ cơ bản, Scopus của Elsevier và Web of Science của Thomson ISI. Tuy nhiên, GS vẫn chứa nhiều trang web, nhiều tạp chí và nhiều ngôn ngữ hơn. Slogan của nó là - \"Stand on the shoulders of giants\", là một sự ghi nhớ công ơn của những nhà học thuật đã đóng góp công sức của họ trong các lĩnh vực suốt bao thế kỷ qua, đã tạo nền tảng cho sự thành công mới ngày hôm nay.", - "google play apps":"Google Play trước đây là Android Market, là một nền tảng phân phối kỹ thuật số các ứng dụng cho hệ điều hành Android và cửa hàng truyền thông kỹ thuật số, điều hành bởi Google. Dịch vụ cho phép người dùng duyệt và tải về các ứng dụng phát triển bởi Android SDK và được đăng tải thông qua Google, như nhạc, tạp chí, sách, phim, chương trình truyền hình. Người dùng có thể mua phần cứng như Chromebook, Google Nexus, Chromecast, phụ kiện, thông qua Google Play.", - "google play movies":[ - "google play apps:vi", - "ref" - ], - "hoogle":"Haskell là một ngôn ngữ lập trình thuần hàm, đặt theo tên của Haskell Curry. Vì là ngôn ngữ lập trình hàm, trong Haskell, hàm là \"cư dân hạng nhất\", với hầu hết các cấu trúc điều khiển là hàm.", - "imdb":"Internet Movie Database là một trang cơ sở dữ liệu trực tuyến về điện ảnh thế giới. Nó cung cấp thông tin về phim, diễn viên, đạo diễn, nhà làm phim,... và tất cả những người, công ty trong lĩnh vực sản xuất phim, phim truyền hình và cả trò chơi video.", - "imgur":"Imgur là một cộng đồng chia sẻ hình ảnh trực tuyến và dịch vụ lưu trữ hình ảnh của Mỹ được thành lập bởi Alan Schaaf năm 2009. Dịch vụ này đã trở nên phổ biến với việc lưu trữ hình ảnh và meme lan truyền, đặc biệt là những hình ảnh được đăng trên Reddit.", - "library genesis":"Library Genesis hay Libgen là một trang web chia sẻ tập tin (file-sharing) kiểu thư viện ngầm. Trang web này cho phép người dùng truy cập một kho lưu trữ đồ sộ các ấn phẩm học thuật, sách báo nhiều thể loại, audiobook, truyện tranh và tạp chí, đáng lý ra là bị chặn bởi tường phí (paywall) hoặc chưa được số hóa trên mạng.", - "library of congress":"Thư viện Quốc hội, trên thực tế là thư viện quốc gia của Hoa Kỳ, là đơn vị nghiên cứu của Quốc hội Hoa Kỳ. Với trụ sở gồm 3 tòa nhà đóng tại Washington, D.C., đây là thư viện lớn nhất theo diện tích để sách và một trong những thư viện quan trọng nhất trên thế giới. Kho tư liệu của nó bao gồm hơn 30 triệu cuốn sách được phân loại và các tài liệu in ấn khác được viết bằng 470 thứ tiếng; hơn 61 triệu bản thảo viết tay; bộ sưu tập các cuốn sách hiếm lớn nhất Bắc Mỹ, bao gồm bản sơ thảo Tuyên ngôn Độc lập Hoa Kỳ, Kinh Thánh Gutenberg ; hơn 1 triệu ấn bản các văn kiện của Chính phủ Hoa Kỳ; 1 triệu ấn bản báo chí thế giới trong suốt 3 thế kỷ qua; 33.000 bộ nhật báo đóng tập; 500.000 cuộn microfilm; hơn 6.000 tựa truyện tranh; cơ sở dữ liệu luật lớn nhất thế giới; các bộ phim; hơn 4,8 triệu bản đồ, bản nhạc; 2,7 triệu bản ghi âm; hơn 13,7 triệu hình in và chụp bao gồm các tác phẩm nghệ thuật chuyên nghiệp và nghệ thuật quần chúng, các bản vẽ kiến trúc; cây vĩ cầm cổ Betts Stradivarius; và cây viola Cassavetti Stradivarius;", - "mastodon users":"Mastodon là một dịch vụ mạng xã hội tự do nguồn mở hoạt động với hình thức tự lưu trữ (self-hosting). Nó cho phép bất cứ ai cũng có thể xây dựng một hệ thống máy chủ độc lập bên trong mạng lưới. Thành viên trong một hệ thống máy chủ có thể kết nối liền mạch với thành viên những hệ thống máy chủ khác.", - "mastodon hashtags":[ - "mastodon users:vi", - "ref" - ], - "npm":"NPM là chương trình quản lý thư viện ngầm định trong môi trường Node.js. Nó bao gồm một trình gọi dòng lệnh từ máy khách Client với tên gọi là npm, và cơ sở dữ liệu trực tuyến chứa các gói public và private còn được gọi là npm registry. Npm registry được gọi từ npm client và trên web browser. Tất cả được quản lý trực tiếp từ NPM, inc.", - "openstreetmap":"OpenStreetMap là một dịch vụ bản đồ thế giới trực tuyến có nội dung mở. OpenStreetMap nhằm mục đích cung cấp dữ liệu địa lý do nhiều người cùng cộng tác với nhau trên hệ thống wiki. Nó thường được gọi \"Wikipedia của bản đồ\". Dự án OpenStreetMap được sáng lập năm 2004, chủ yếu để cạnh tranh với các công ty và cơ quan chính phủ cung cấp dữ liệu địa lý theo các điều khoản sử dụng được coi là quá chặt chẽ.", - "pinterest":"Pinterest là website chia sẻ ảnh theo dạng mạng xã hội, post và phân loại dưới dạng các tấm bảng dán ảnh. Người dùng tạo ra và quản lý các bộ sưu tập ảnh theo các chủ đề khác nhau, như theo các sự kiện, sở thích... Người dùng có thể xem các bộ sưu tập của người khác, repin đính vào các bộ sưu tập của mình, hoặc \"like\" ảnh. Pinterest kết nối được với Facebook và Twitter. Được thành lập ban đầu bởi Ben Silbermann, vùng West Des Moines, Iowa, Mỹ. Trang web này hiện được quản lý bởi Cold Brew Labs và được tài trợ bởi một nhóm nhỏ doanh nhân và nhà đầu tư.", - "piratebay":"The Pirate Bay là một trang web chia sẻ dữ liệu số, người dùng có thể tìm kiếm, tải dữ liệu qua Magnet link và file torrent, sử dụng giao thức BitTorrent.", - "pubmed":"MEDLINE là một cơ sở dữ liệu hỗn hợp của các ngành khoa học sự sống và y sinh học. Các lĩnh vực phục vụ của MEDLINE bào gồm y học, kỹ thuật điều dưỡng, nha khoa, thú y và tổ chức y tế. Với mục đích cung cấp lượng thông tin tối đa, các ngành liên quan như sinh học và hóa sinh học đã được đưa vào cơ sở dữ liệu, thậm chí cả một số ngành không trực tiếp phục vụ y học như tiến hóa phân tử.", - "reddit":"Reddit , hay cách điệu là reddit, là một trang web giải trí, dịch vụ giao tiếp xã hội, tin tức xã hội và tin tức trực tuyến, nơi mà cộng đồng các thành viên đã đăng ký có thể gửi lên nhiều loại nội dung, chẳng hạn như bài đăng chữ hay đường dẫn trực tiếp. Chỉ có các thành viên đăng ký sau đó mới có thể bầu chọn bằng mũi tên lên và mũi tên xuống cho những nội dung được gửi lên để sắp xếp các bài đăng và quyết định vị trí của nó trên các trang của trang web. Các mục nội dung được tổ chức theo lĩnh vực quan tâm gọi là các \"subreddit\" mà người dùng đăng ký có thể tự do tạo ra cộng đồng thảo luận của riêng mình với bất kì ngôn ngữ nào.", - "soundcloud":"SoundCloud là dịch vụ chia sẻ âm nhạc trực tuyến cho phép người dùng tải lên, quảng bá và chia sẻ âm thanh. Được thành lập vào năm 2007 bởi Alexander Ljung và Eric Wahlforss, SoundCloud là một trong những dịch vụ phát nhạc trực tuyến lớn nhất thế giới và có sẵn trên 190 quốc gia và vùng lãnh thổ. SoundCloud có hơn 76 triệu người dùng hằng tháng và hơn 200 triệu bài nhạc tính tới tháng 11 năm 2021. Dịch vụ cung cấp các gói thành viên miễn phí và trả phí trên nền tảng, có sẵn cho máy tính để bàn, thiết bị di động và Xbox. SoundCloud cũng đã phát triển từ một nền tảng phát trực tuyến truyền thống thành một công ty giải trí.", - "stackoverflow":"Stack Exchange là mạng lưới các trang web hỏi và trả lời (Q&A) về các chủ đề trong các lĩnh vực đa dạng, mỗi trang bao gồm một chủ đề cụ thể, nơi các câu hỏi, câu trả lời và người dùng phải tuân theo quy trình thưởng danh tiếng. Hệ thống danh tiếng cho phép các trang web tự kiểm duyệt. Kể từ tháng 8 năm 2019, ba trang web được xem tích cực nhất trong mạng là Stack Overflow, Super User và Ask Ubuntu.", - "askubuntu":[ - "stackoverflow:vi", - "ref" - ], - "superuser":[ - "stackoverflow:vi", - "ref" - ], - "semantic scholar":"Semantic Scholar là một công cụ tìm kiếm được hỗ trợ bởi trí thông minh nhân tạo cho các ấn phẩm học thuật được phát triển tại Viện Trí tuệ Nhân tạo Allen và được phát hành công khai vào tháng 11 năm 2015. Dự án sử dụng sự kết hợp của máy học, xử lý ngôn ngữ tự nhiên và thị giác máy để thêm một lớp phân tích ngữ nghĩa vào các phương pháp phân tích trích dẫn truyền thống và trích xuất các số liệu, thực thể và địa điểm có liên quan từ các bài báo.Liu, Ying; Gayle, Albert A; Wilder-Smith, Annelies; Rocklöv, Joacim. “The reproductive number of COVID-19 is higher compared to SARS coronavirus”. Journal of Travel Medicine. 27 (2). doi:10.1093/jtm/taaa021. PMC 7074654. PMID 32052846. S2CID 211099356 .", - "youtube":"YouTube là một nền tảng chia sẻ video trực tuyến của Mỹ có trụ sở chính tại San Bruno, California. Nền tảng này được tạo ra vào tháng 2 năm 2005 bởi ba nhân viên cũ của PayPal — Chad Hurley, Steve Chen và Jawed Karim — đã được Google mua lại vào tháng 11 năm 2006 với giá 1,65 tỷ đô la Mỹ và hiện hoạt động như một trong những công ty con của Google. YouTube là trang web được truy cập nhiều thứ hai sau Google Tìm kiếm, theo xếp hạng của Alexa Internet.", - "dailymotion":"Dailymotion là một trang web dịch vụ chia sẻ video của Pháp được sở hữu và quản lý bởi Vivendi; có trụ sở tại Quận 18, Paris, Pháp. Theo comScore, Dailymotion là trang web video lớn thứ hai thế giới, sau YouTube. Hiện Dailymotion đã có phiên bản của hơn 183 ngôn ngữ và 43 phiên bản bản địa phương khác nhau với các trang chủ và nội dung riêng trên toàn thế giới. Trang web hiện giờ đã có hơn 300 triệu người dùng hàng tháng.", - "wikibooks":"Wikibooks – từ ghép tiếng Anh của wiki và books (sách); trước đây cũng được gọi là Dự án Sách giáo khoa tự do của Wikimedia và Sách giáo khoa Wikimedia – là một trong những dự án liên quan với Wikipedia của Quỹ Hỗ Trợ Wikimedia, nó bắt đầu vào ngày 10 tháng 7 năm 2003.", - "wikinews":"Wikinews là nguồn tin tức mở và là dự án wiki của Wikimedia Foundation. Dự án hoạt động với sự hợp tác của các nhà báo trên toàn thế giới. Nguyên tắc trung lập của Wikinews là một đặc điểm đáng chú ý, phân biệt nó với các trang báo cộng đồng khác như Indymedia và OhmyNews.", - "wikiquote":"Wikiquote là một dự án thuộc Quỹ Hỗ trợ Wikimedia, là nơi sưu tầm các trích dẫn, câu ca dao, tục ngữ. Hiện nay người dùng có thể tự do đăng lên những câu thơ, câu ca dao nói về một chủ đề bất kỳ. Dự án này chính thức thành lập từ năm 2002. Vào năm 2004, hai phiên bản tiếng Pháp và tiếng Ba Lan đã đi vào hoạt động. Phiên bản tiếng Việt chính thức hoạt động vào năm 2005. Dự án được tạo ra dựa theo ý tưởng ban đầu của Daniel Alston.", - "wikisource":"Wikisource là một thư viện trực tuyến gồm những văn bản gốc có nội dung mở, được Wikimedia Foundation điều hành. Mục tiêu của nó là lưu giữ tất cả mọi hình thức văn bản tự do, trong mọi thứ tiếng. Hiện nay trang Wikisource cũng cung cấp những bản dịch.", - "wikispecies":"Wikispecies là dự án wiki của Wikimedia Foundation. Mục đích chính của wiki này là một bảng phân loại sinh học mở cho các nhà sinh học thay vì cho công chúng. Được thành lập vào tháng 8, năm 2004, với sự đóng góp của các nhà sinh học trên toàn thế giới dự án đã có khoảng 800.000 trang nội dung.", - "wiktionary":"Wiktionary là một trong những dự án trực thuộc Quỹ Hỗ trợ Wikimedia, cùng với Wikipedia, để biên soạn một bộ từ điển nội dung mở dùng hệ thống wiki, bao gồm nhiều ngôn ngữ. Dựa vào ý tưởng của ông Daniel Alston, nó được thành lập vào ngày 12 tháng 12 năm 2002. Vào ngày 29 tháng 3 năm 2004, hai phiên bản ngôn ngữ đầu tiên của Wiktionary được mở cửa, tiếng Pháp và tiếng Ba Lan. Sau đó, nhiều phiên bản ngôn ngữ khác được bắt đầu và đang được phát triển. Wiktionary đã ở một địa chỉ tạm đến ngày 1 tháng 5 năm 2004, khi nó được di chuyển đến địa chỉ chính của nó. Wiktionary tiếng Anh đã có hơn 896.000 mục từ và Wiktionary tiếng Việt là phiên bản ngôn ngữ lớn thứ năm có hơn 228.000 mục từ.", - "wikiversity":"Wikiversity là một dự án của Wikimedia Foundation cung cấp các học liệu trực tuyến và các bài giảng cho mọi người với giấy phép tự do. Tuy nhiên, Wikiversity không phải là một bách khoa toàn thư như Wikipedia.", - "wikivoyage":"Wikivoyage một dự án xây dựng cẩm nang du lịch trực tuyến có nội dung tự do. Là một dự án \"chị em\" với Wikipedia, nó trực thuộc tổ chức Wikimedia Foundation và cho phép mọi người tham gia biên tập. Dự án tách ra khỏi Wikitravel tiếng Đức ngày 10 tháng 12 năm 2006 sau khi công ty Internet Brands mua Wikitravel. Họ thành lập tổ chức Wikivoyage e.V. tại Đức để quản lý dự án. Vào giữa năm 2012, đa số thành viên Wikitravel tiếng Anh, bao gồm phần nhiều bảo quản viên, quyết định hợp nhất các cộng đồng Wikitravel và Wikivoyage vào một dự án phi lợi nhuận mới. Wikivoyage yêu cầu gia nhập vào Wikimedia Foundation và Wikimedia phê chuẩn vào tháng 10 năm 2012.", - "wikicommons.images":"Wikimedia Commons là kho hình ảnh, âm thanh, và tập tin phương tiện khác có nội dung tự do. Dự án này trực thuộc Quỹ Hỗ trợ Wikimedia. Các tập tin được truyền lên kho này được sử dụng ở các wiki khác của Wikimedia, kể cả Wikipedia, Wikibooks, và Wikinews, giống như các tập tin được truyền thẳng lên các wiki đó.", - "wolframalpha":"WolframAlpha là một máy trả lời do Wolfram Research phát triển. Đây là một dịch vụ trực tuyến có nhiệm vụ trả lời các câu hỏi nhập vào trực tiếp bằng cách tính toán câu trả lời từ các dữ liệu có cấu trúc, chứ không chỉ cung cấp một danh sách các tài liệu hoặc trang có web có thể chứa câu trả lời như cách máy tìm kiếm thường làm. Website này được Stephen Wolfram công bố vào tháng 3 năm 2009, và được phát hành cho công chúng ngày 15 tháng 5 năm 2009.", - "naver":"Naver là một nền tảng trực tuyến của Hàn Quốc được điều hành bởi Naver Corporation. Được ra mắt lần đầu năm 1999, Naver vốn là cổng thông tin điện tử đầu tiên tại Hàn Quốc, sau đó được phát triển thành một công cụ tìm kiếm riêng. Đây cũng là nhà điều hành đầu tiên trên thế giới ra mắt tính năng tìm kiếm toàn diện, tính toán các kết quả tìm kiếm từ nhiều danh mục tìm kiếm khác nhau và trình bày chúng trong một trang duy nhất. Từ đó, Naver cũng đã xây dựng thêm vô số các dịch vụ từ cơ bản như e-mail, tin tức đến nền tảng trực tuyến Q&A đầu tiên trên thế giới Knowledge iN.", - "peertube":"PeerTube là một nền tảng chia sẻ video liên hợp, tự do và nguồn mở hoạt động với hình thức tự lưu trữ (self-hosting). Nền tảng này sử dụng giao thức ActivityPub và WebTorrent, một công nghệ P2P tiết kiệm tài nguyên cho các máy chủ cá nhân.", - "wttr.in":[ - "Báo cáo thời tiết: Boydton, Virginia, United States", - "https://wttr.in" - ], - "brave":"Brave là một trình duyệt web tự do nguồn mở được phát triển bởi Brave Software Inc. dựa trên trình duyệt web Chromium. Trình duyệt này có tính năng chặn quảng cáo và theo dõi trang web. Trong phiên bản tương lai của trình duyệt, công ty dự định sẽ áp dụng một mô hình kinh doanh pay-to-surf.", - "brave.images":[ - "brave:vi", - "ref" - ], - "brave.videos":[ - "brave:vi", - "ref" - ], - "brave.news":[ - "brave:vi", - "ref" - ] - }, - "zh-Hans-CN":{ - "apple app store":[ - "apple app store:zh-HK", - "ref" - ], - "artic":[ - "artic:zh-HK", - "ref" - ], - "arxiv":[ - "arxiv:zh-HK", - "ref" - ], - "bandcamp":[ - "bandcamp:zh-HK", - "ref" - ], - "wikipedia":[ - "wikipedia:zh-HK", - "ref" - ], - "bing":[ - "bing:zh-HK", - "ref" - ], - "bing images":[ - "bing:zh-HK", - "ref" - ], - "bing videos":[ - "Bing 的智慧型搜尋可讓您更輕而易舉找到想找的資訊,同時還因此獲得獎勵。", - "https://www.bing.com/videos" - ], - "crossref":[ - "crossref:zh-HK", - "ref" - ], - "deezer":[ - "deezer:zh-HK", - "ref" - ], - "etymonline":[ - "etymonline:zh-HK", - "ref" - ], - "fdroid":[ - "fdroid:zh-HK", - "ref" - ], - "flickr":[ - "flickr:zh-HK", - "ref" - ], - "free software directory":[ - "free software directory:zh-HK", - "ref" - ], - "genius":[ - "genius:zh-HK", - "ref" - ], - "gentoo":[ - "gentoo:ru", - "ref" - ], - "github":[ - "github:zh-HK", - "ref" - ], - "google images":[ - "google images:zh-HK", - "ref" - ], - "google news":[ - "google news:zh-HK", - "ref" - ], - "google videos":[ - "google videos:zh-HK", - "ref" - ], - "google scholar":[ - "Google 學術搜尋可讓你輕鬆地搜尋大範圍的學術文獻。你可以廣泛搜尋多種學門和來源的文獻,例如文章、論文、書籍、摘要以及法院判決理由。", - "https://scholar.google.com" - ], - "google play apps":[ - "google play apps:zh-HK", - "ref" - ], - "google play movies":[ - "google play apps:zh-HK", - "ref" - ], - "hackernews":[ - "hackernews:zh-HK", - "ref" - ], - "hoogle":[ - "hoogle:zh-HK", - "ref" - ], - "imdb":[ - "imdb:zh-HK", - "ref" - ], - "ina":[ - "ina:zh-HK", - "ref" - ], - "library genesis":[ - "library genesis:zh-HK", - "ref" - ], - "z-library":[ - "z-library:zh-HK", - "ref" - ], - "metacpan":[ - "metacpan:zh-HK", - "ref" - ], - "npm":[ - "npm:zh-HK", - "ref" - ], - "openstreetmap":[ - "openstreetmap:zh-HK", - "ref" - ], - "piratebay":[ - "piratebay:zh-HK", - "ref" - ], - "pubmed":[ - "pubmed:zh-HK", - "ref" - ], - "pypi":[ - "pypi:zh-HK", - "ref" - ], - "reddit":[ - "reddit:zh-HK", - "ref" - ], - "stackoverflow":[ - "stackoverflow:zh-HK", - "ref" - ], - "askubuntu":[ - "stackoverflow:zh-HK", - "ref" - ], - "superuser":[ - "stackoverflow:zh-HK", - "ref" - ], - "semantic scholar":[ - "semantic scholar:zh-HK", - "ref" - ], - "startpage":[ - "startpage:zh-HK", - "ref" - ], - "unsplash":[ - "unsplash:zh-HK", - "ref" - ], - "youtube":[ - "YouTube 上盡享你喜愛的影片和音樂、上載原創內容,並與親友和世界各地的人分享。", - "https://www.youtube.com/" - ], - "dailymotion":[ - "dailymotion:zh-HK", - "ref" - ], - "wikibooks":[ - "wikibooks:zh-HK", - "ref" - ], - "wikinews":[ - "wikinews:zh-HK", - "ref" - ], - "wiktionary":[ - "wiktionary:zh-HK", - "ref" - ], - "wikivoyage":[ - "wikivoyage:zh-HK", - "ref" - ], - "wikicommons.images":[ - "wikicommons.images:zh-HK", - "ref" - ], - "wolframalpha":[ - "wolframalpha:zh-HK", - "ref" - ], - "naver":[ - "naver:zh-HK", - "ref" - ], - "rubygems":[ - "rubygems:zh-HK", - "ref" - ], - "rumble":[ - "rumble:zh-HK", - "ref" - ], - "wttr.in":[ - "天气预报: Boydton, Virginia, United States", - "https://wttr.in" - ], - "goo":[ - "goo:zh-HK", - "ref" - ] - }, - "zh-Hant-TW":{ - "apple app store":[ - "apple app store:zh-HK", - "ref" - ], - "artic":[ - "artic:zh-HK", - "ref" - ], - "arxiv":[ - "arxiv:zh-HK", - "ref" - ], - "bandcamp":[ - "bandcamp:zh-HK", - "ref" - ], - "wikipedia":[ - "wikipedia:zh-HK", - "ref" - ], - "bing":[ - "bing:zh-HK", - "ref" - ], - "bing images":[ - "bing:zh-HK", - "ref" - ], - "crossref":[ - "crossref:zh-HK", - "ref" - ], - "deezer":[ - "deezer:zh-HK", - "ref" - ], - "etymonline":[ - "etymonline:zh-HK", - "ref" - ], - "fdroid":[ - "fdroid:zh-HK", - "ref" - ], - "flickr":[ - "flickr:zh-HK", - "ref" - ], - "free software directory":[ - "free software directory:zh-HK", - "ref" - ], - "genius":[ - "genius:zh-HK", - "ref" - ], - "github":[ - "github:zh-HK", - "ref" - ], - "google images":[ - "google images:zh-HK", - "ref" - ], - "google news":[ - "google news:zh-HK", - "ref" - ], - "google videos":[ - "google videos:zh-HK", - "ref" - ], - "google play apps":[ - "google play apps:zh-HK", - "ref" - ], - "google play movies":[ - "google play apps:zh-HK", - "ref" - ], - "hackernews":[ - "hackernews:zh-HK", - "ref" - ], - "hoogle":[ - "hoogle:zh-HK", - "ref" - ], - "imdb":[ - "imdb:zh-HK", - "ref" - ], - "ina":[ - "ina:zh-HK", - "ref" - ], - "library genesis":[ - "library genesis:zh-HK", - "ref" - ], - "z-library":[ - "z-library:zh-HK", - "ref" - ], - "metacpan":[ - "metacpan:zh-HK", - "ref" - ], - "npm":[ - "npm:zh-HK", - "ref" - ], - "openstreetmap":[ - "openstreetmap:zh-HK", - "ref" - ], - "piratebay":[ - "piratebay:zh-HK", - "ref" - ], - "pubmed":[ - "pubmed:zh-HK", - "ref" - ], - "pypi":[ - "pypi:zh-HK", - "ref" - ], - "reddit":[ - "reddit:zh-HK", - "ref" - ], - "stackoverflow":[ - "stackoverflow:zh-HK", - "ref" - ], - "askubuntu":[ - "stackoverflow:zh-HK", - "ref" - ], - "superuser":[ - "stackoverflow:zh-HK", - "ref" - ], - "semantic scholar":[ - "semantic scholar:zh-HK", - "ref" - ], - "startpage":[ - "startpage:zh-HK", - "ref" - ], - "unsplash":[ - "unsplash:zh-HK", - "ref" - ], - "dailymotion":[ - "dailymotion:zh-HK", - "ref" - ], - "wikibooks":[ - "wikibooks:zh-HK", - "ref" - ], - "wikinews":[ - "wikinews:zh-HK", - "ref" - ], - "wiktionary":[ - "wiktionary:zh-HK", - "ref" - ], - "wikivoyage":[ - "wikivoyage:zh-HK", - "ref" - ], - "wikicommons.images":[ - "wikicommons.images:zh-HK", - "ref" - ], - "wolframalpha":[ - "wolframalpha:zh-HK", - "ref" - ], - "naver":[ - "naver:zh-HK", - "ref" - ], - "rubygems":[ - "rubygems:zh-HK", - "ref" - ], - "rumble":[ - "rumble:zh-HK", - "ref" - ], - "goo":[ - "goo:zh-HK", - "ref" - ] - } -} \ No newline at end of file diff --git a/searx/data/engine_traits.json b/searx/data/engine_traits.json deleted file mode 100644 index 826209b36..000000000 --- a/searx/data/engine_traits.json +++ /dev/null @@ -1,7026 +0,0 @@ -{ - "annas archive": { - "all_locale": "", - "custom": { - "content": [ - "book_nonfiction", - "book_fiction", - "book_unknown", - "journal_article", - "book_comic", - "magazine", - "standards_document" - ], - "ext": [ - "pdf", - "epub", - "cbr", - "mobi", - "fb2", - "cbz", - "azw3", - "djvu", - "fb2.zip" - ], - "sort": [ - "", - "newest", - "oldest", - "largest", - "smallest" - ] - }, - "data_type": "traits_v1", - "languages": { - "af": "af", - "ar": "ar", - "be": "be", - "bg": "bg", - "bn": "bn", - "ca": "ca", - "cs": "cs", - "cy": "cy", - "da": "da", - "de": "de", - "el": "el", - "en": "en", - "es": "es", - "fa": "fa", - "fr": "fr", - "ga": "ga", - "he": "he", - "hi": "hi", - "hr": "hr", - "hu": "hu", - "id": "id", - "it": "it", - "ja": "ja", - "jv": "jv", - "kk": "kk", - "ko": "ko", - "lt": "lt", - "lv": "lv", - "nl": "nl", - "no": "no", - "pl": "pl", - "pt": "pt", - "ro": "ro", - "ru": "ru", - "rw": "rw", - "sr": "sr", - "sv": "sv", - "ta": "ta", - "tr": "tr", - "uk": "uk", - "ur": "ur", - "vi": "vi", - "zh": "zh", - "zh_Hant": "zh-Hant" - }, - "regions": {} - }, - "arch linux wiki": { - "all_locale": null, - "custom": { - "title": { - "de": "Spezial:Suche", - "fa": "\u0648\u06cc\u0698\u0647:\u062c\u0633\u062a\u062c\u0648", - "ja": "\u7279\u5225:\u691c\u7d22", - "zh": "Special:\u641c\u7d22" - }, - "wiki_netloc": { - "de": "wiki.archlinux.de", - "fa": "wiki.archusers.ir", - "ja": "wiki.archlinux.jp", - "zh": "wiki.archlinuxcn.org" - } - }, - "data_type": "traits_v1", - "languages": { - "ar": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629", - "bg": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438", - "bs": "Bosanski", - "cs": "\u010ce\u0161tina", - "da": "Dansk", - "de": "Deutsch", - "el": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac", - "en": "English", - "es": "Espa\u00f1ol", - "fa": "\u0641\u0627\u0631\u0633\u06cc", - "fi": "Suomi", - "fr": "Fran\u00e7ais", - "he": "\u05e2\u05d1\u05e8\u05d9\u05ea", - "hr": "Hrvatski", - "hu": "Magyar", - "id": "Bahasa Indonesia", - "it": "Italiano", - "ja": "\u65e5\u672c\u8a9e", - "ko": "\ud55c\uad6d\uc5b4", - "lt": "Lietuvi\u0173", - "nl": "Nederlands", - "pl": "Polski", - "pt": "Portugu\u00eas", - "ru": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439", - "sk": "Sloven\u010dina", - "sr": "\u0421\u0440\u043f\u0441\u043a\u0438 / srpski", - "sv": "Svenska", - "th": "\u0e44\u0e17\u0e22", - "tr": "T\u00fcrk\u00e7e", - "uk": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430", - "zh": "\u4e2d\u6587\uff08\u7e41\u9ad4\uff09" - }, - "regions": {} - }, - "bing": { - "all_locale": "clear", - "custom": {}, - "data_type": "traits_v1", - "languages": { - "af": "af-af", - "am": "am-am", - "ar": "ar-ar", - "as": "as-as", - "az_Latn": "az-latn", - "be": "be-be", - "bg": "bg-bg", - "bn": "bn-bn", - "bs_Latn": "bs-latn", - "ca": "ca-ca", - "chr": "chr-cher", - "cs": "cs-cs", - "cy": "cy-cy", - "da": "da-dk", - "de": "de-de", - "el": "el-el", - "en": "en-us", - "es": "es-es", - "et": "et-et", - "eu": "eu-eu", - "fa": "prs-prs", - "fi": "fi-fi", - "fil": "fil-fil", - "fr": "fr-fr", - "ga": "ga-ga", - "gd": "gd-gd", - "gl": "gl-gl", - "gu": "gu-gu", - "ha": "ha-latn", - "he": "he-he", - "hi": "hi-hi", - "hr": "hr-hr", - "hu": "hu-hu", - "hy": "hy-hy", - "id": "id-id", - "ig": "ig-ig", - "is": "is-is", - "it": "it-it", - "ja": "ja-ja", - "ka": "ka-ka", - "kk": "kk-kk", - "km": "km-km", - "kn": "kn-kn", - "ko": "ko-ko", - "kok": "kok-kok", - "ku": "ku-arab", - "ky": "ky-ky", - "lb": "lb-lb", - "lo": "lo-lo", - "lt": "lt-lt", - "lv": "lv-lv", - "mi": "mi-mi", - "mk": "mk-mk", - "ml": "ml-ml", - "mn": "mn-cyrl-mn", - "mr": "mr-mr", - "ms": "ms-ms", - "mt": "mt-mt", - "nb": "nb-nb", - "ne": "ne-ne", - "nl": "nl-nl", - "nn": "nn-nn", - "or": "or-or", - "pa_Arab": "pa-arab", - "pa_Guru": "pa-guru", - "pl": "pl-pl", - "pt": "pt-br", - "qu": "quz-quz", - "ro": "ro-ro", - "ru": "ru-ru", - "rw": "rw-rw", - "sd_Arab": "sd-arab", - "si": "si-si", - "sk": "sk-sk", - "sl": "sl-sl", - "sq": "sq-sq", - "sr_Cyrl": "sr-cyrl", - "sr_Latn": "sr-latn", - "sv": "sv-sv", - "sw": "sw-sw", - "ta": "ta-ta", - "te": "te-te", - "tg": "tg-cyrl", - "th": "th-th", - "ti": "ti-ti", - "tk": "tk-tk", - "tr": "tr-tr", - "tt": "tt-tt", - "ug": "ug-ug", - "uk": "uk-uk", - "ur": "ur-ur", - "uz_Latn": "uz-latn", - "vi": "vi-vi", - "wo": "wo-wo", - "xh": "xh-xh", - "yo": "yo-yo", - "zh": "zh-hans", - "zh_Hans": "zh-hans", - "zh_Hant": "zh-hant", - "zu": "zu-zu" - }, - "regions": { - "am-ET": "am-et", - "ar-AE": "ar-ae", - "ar-BH": "ar-bh", - "ar-DJ": "ar-dj", - "ar-DZ": "ar-dz", - "ar-EG": "ar-eg", - "ar-ER": "ar-er", - "ar-IL": "ar-il", - "ar-IQ": "ar-iq", - "ar-JO": "ar-jo", - "ar-KM": "ar-km", - "ar-KW": "ar-kw", - "ar-LB": "ar-lb", - "ar-LY": "ar-ly", - "ar-MA": "ar-ma", - "ar-MR": "ar-mr", - "ar-OM": "ar-om", - "ar-PS": "ar-ps", - "ar-QA": "ar-qa", - "ar-SA": "ar-sa", - "ar-SD": "ar-sd", - "ar-SO": "ar-so", - "ar-SY": "ar-sy", - "ar-TD": "ar-td", - "ar-TN": "ar-tn", - "ar-YE": "ar-ye", - "be-BY": "be-by", - "bg-BG": "bg-bg", - "bn-BD": "bn-bd", - "ca-AD": "ca-ad", - "cs-CZ": "cs-cz", - "da-DK": "da-dk", - "de-AT": "de-at", - "de-BE": "de-be", - "de-CH": "de-ch", - "de-DE": "de-de", - "de-LI": "de-li", - "de-LU": "de-lu", - "el-CY": "el-cy", - "el-GR": "el-gr", - "en-AG": "en-ag", - "en-AI": "en-ai", - "en-AS": "en-as", - "en-AU": "en-au", - "en-BB": "en-bb", - "en-BI": "en-bi", - "en-BM": "en-bm", - "en-BS": "en-bs", - "en-BW": "en-bw", - "en-BZ": "en-bz", - "en-CA": "en-ca", - "en-CC": "en-cc", - "en-CK": "en-ck", - "en-CM": "en-cm", - "en-CX": "en-cx", - "en-DM": "en-dm", - "en-ER": "en-er", - "en-FJ": "en-fj", - "en-FK": "en-fk", - "en-FM": "en-fm", - "en-GB": "en-gb", - "en-GD": "en-gd", - "en-GG": "en-gg", - "en-GH": "en-gh", - "en-GI": "en-gi", - "en-GM": "en-gm", - "en-GU": "en-gu", - "en-GY": "en-gy", - "en-HK": "en-hk", - "en-IE": "en-ie", - "en-IN": "en-in", - "en-JE": "en-je", - "en-JM": "en-jm", - "en-KE": "en-ke", - "en-KI": "en-ki", - "en-KN": "en-kn", - "en-KY": "en-ky", - "en-LC": "en-lc", - "en-LR": "en-lr", - "en-LS": "en-ls", - "en-MG": "en-mg", - "en-MH": "en-mh", - "en-MP": "en-mp", - "en-MS": "en-ms", - "en-MT": "en-mt", - "en-MU": "en-mu", - "en-MW": "en-mw", - "en-NA": "en-na", - "en-NF": "en-nf", - "en-NG": "en-ng", - "en-NR": "en-nr", - "en-NU": "en-nu", - "en-NZ": "en-nz", - "en-PG": "en-pg", - "en-PH": "en-ph", - "en-PK": "en-pk", - "en-PN": "en-pn", - "en-PR": "en-pr", - "en-PW": "en-pw", - "en-RW": "en-rw", - "en-SB": "en-sb", - "en-SC": "en-sc", - "en-SD": "en-sd", - "en-SG": "en-sg", - "en-SH": "en-sh", - "en-SL": "en-sl", - "en-SS": "en-ss", - "en-SX": "en-sx", - "en-SZ": "en-sz", - "en-TC": "en-tc", - "en-TK": "en-tk", - "en-TO": "en-to", - "en-TT": "en-tt", - "en-TV": "en-tv", - "en-TZ": "en-tz", - "en-UG": "en-ug", - "en-US": "en-us", - "en-VC": "en-vc", - "en-VG": "en-vg", - "en-VI": "en-vi", - "en-VU": "en-vu", - "en-WS": "en-ws", - "en-ZA": "en-za", - "en-ZM": "en-zm", - "en-ZW": "en-zw", - "es-AR": "es-ar", - "es-BO": "es-bo", - "es-CL": "es-cl", - "es-CO": "es-co", - "es-CR": "es-cr", - "es-DO": "es-do", - "es-EC": "es-ec", - "es-ES": "es-es", - "es-GQ": "es-gq", - "es-GT": "es-gt", - "es-HN": "es-hn", - "es-MX": "es-mx", - "es-NI": "es-ni", - "es-PA": "es-pa", - "es-PE": "es-pe", - "es-PR": "es-pr", - "es-PY": "es-py", - "es-SV": "es-sv", - "es-UY": "es-uy", - "es-VE": "es-ve", - "et-EE": "et-ee", - "fa-AF": "fa-af", - "fa-IR": "fa-ir", - "fi-FI": "fi-fi", - "fil-PH": "fil-ph", - "fr-BE": "fr-be", - "fr-BF": "fr-bf", - "fr-BI": "fr-bi", - "fr-BJ": "fr-bj", - "fr-BL": "fr-bl", - "fr-CA": "fr-ca", - "fr-CD": "fr-cd", - "fr-CF": "fr-cf", - "fr-CG": "fr-cg", - "fr-CH": "fr-ch", - "fr-CI": "fr-ci", - "fr-CM": "fr-cm", - "fr-DJ": "fr-dj", - "fr-DZ": "fr-dz", - "fr-FR": "fr-fr", - "fr-GA": "fr-ga", - "fr-GF": "fr-gf", - "fr-GN": "fr-gn", - "fr-GP": "fr-gp", - "fr-GQ": "fr-gq", - "fr-HT": "fr-ht", - "fr-KM": "fr-km", - "fr-LU": "fr-lu", - "fr-MA": "fr-ma", - "fr-MC": "fr-mc", - "fr-MF": "fr-mf", - "fr-MG": "fr-mg", - "fr-ML": "fr-ml", - "fr-MQ": "fr-mq", - "fr-MU": "fr-mu", - "fr-NC": "fr-nc", - "fr-NE": "fr-ne", - "fr-PF": "fr-pf", - "fr-PM": "fr-pm", - "fr-RE": "fr-re", - "fr-RW": "fr-rw", - "fr-SC": "fr-sc", - "fr-SN": "fr-sn", - "fr-SY": "fr-sy", - "fr-TD": "fr-td", - "fr-TG": "fr-tg", - "fr-TN": "fr-tn", - "fr-VU": "fr-vu", - "fr-WF": "fr-wf", - "fr-YT": "fr-yt", - "ga-IE": "ga-ie", - "he-IL": "he-il", - "hi-IN": "hi-in", - "hr-BA": "hr-ba", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "hy-AM": "hy-am", - "id-ID": "id-id", - "is-IS": "is-is", - "it-CH": "it-ch", - "it-IT": "it-it", - "it-SM": "it-sm", - "it-VA": "it-va", - "ja-JP": "ja-jp", - "ka-GE": "ka-ge", - "kk-KZ": "kk-kz", - "km-KH": "km-kh", - "ko-KR": "ko-kr", - "ky-KG": "ky-kg", - "lb-LU": "lb-lu", - "lo-LA": "lo-la", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "mi-NZ": "mi-nz", - "mk-MK": "mk-mk", - "mn-MN": "mn-mn", - "ms-BN": "ms-bn", - "ms-MY": "ms-my", - "ms-SG": "ms-sg", - "mt-MT": "mt-mt", - "nb-NO": "nb-no", - "ne-NP": "ne-np", - "nl-AW": "nl-aw", - "nl-BE": "nl-be", - "nl-CW": "nl-cw", - "nl-NL": "nl-nl", - "nl-SR": "nl-sr", - "nl-SX": "nl-sx", - "nn-NO": "nn-no", - "pl-PL": "pl-pl", - "pt-AO": "pt-ao", - "pt-BR": "pt-br", - "pt-CV": "pt-cv", - "pt-GQ": "pt-gq", - "pt-GW": "pt-gw", - "pt-MO": "pt-mo", - "pt-MZ": "pt-mz", - "pt-PT": "pt-pt", - "pt-ST": "pt-st", - "qu-BO": "qu-bo", - "qu-EC": "qu-ec", - "qu-PE": "qu-pe", - "ro-MD": "ro-md", - "ro-RO": "ro-ro", - "ru-BY": "ru-by", - "ru-KG": "ru-kg", - "ru-KZ": "ru-kz", - "ru-RU": "ru-ru", - "ru-UA": "ru-ua", - "rw-RW": "rw-rw", - "si-LK": "si-lk", - "sk-SK": "sk-sk", - "sl-SI": "sl-si", - "sq-AL": "sq-al", - "sr-BA": "sr-ba", - "sr-ME": "sr-me", - "sr-RS": "sr-rs", - "sv-FI": "sv-fi", - "sv-SE": "sv-se", - "sw-KE": "sw-ke", - "sw-TZ": "sw-tz", - "sw-UG": "sw-ug", - "ta-LK": "ta-lk", - "ta-SG": "ta-sg", - "tg-TJ": "tg-tj", - "th-TH": "th-th", - "ti-ER": "ti-er", - "tk-TM": "tk-tm", - "tr-CY": "tr-cy", - "tr-TR": "tr-tr", - "uk-UA": "uk-ua", - "ur-PK": "ur-pk", - "vi-VN": "vi-vn", - "wo-SN": "wo-sn", - "yo-NG": "yo-ng", - "zh-CN": "zh-cn", - "zh-HK": "en-hk", - "zh-MO": "zh-mo", - "zh-SG": "zh-sg", - "zh-TW": "zh-tw" - } - }, - "bing images": { - "all_locale": "clear", - "custom": {}, - "data_type": "traits_v1", - "languages": { - "af": "af-af", - "am": "am-am", - "ar": "ar-ar", - "as": "as-as", - "az_Latn": "az-latn", - "be": "be-be", - "bg": "bg-bg", - "bn": "bn-bn", - "bs_Latn": "bs-latn", - "ca": "ca-ca", - "chr": "chr-cher", - "cs": "cs-cs", - "cy": "cy-cy", - "da": "da-dk", - "de": "de-de", - "el": "el-el", - "en": "en-us", - "es": "es-es", - "et": "et-et", - "eu": "eu-eu", - "fa": "prs-prs", - "fi": "fi-fi", - "fil": "fil-fil", - "fr": "fr-fr", - "ga": "ga-ga", - "gd": "gd-gd", - "gl": "gl-gl", - "gu": "gu-gu", - "ha": "ha-latn", - "he": "he-he", - "hi": "hi-hi", - "hr": "hr-hr", - "hu": "hu-hu", - "hy": "hy-hy", - "id": "id-id", - "ig": "ig-ig", - "is": "is-is", - "it": "it-it", - "ja": "ja-ja", - "ka": "ka-ka", - "kk": "kk-kk", - "km": "km-km", - "kn": "kn-kn", - "ko": "ko-ko", - "kok": "kok-kok", - "ku": "ku-arab", - "ky": "ky-ky", - "lb": "lb-lb", - "lo": "lo-lo", - "lt": "lt-lt", - "lv": "lv-lv", - "mi": "mi-mi", - "mk": "mk-mk", - "ml": "ml-ml", - "mn": "mn-cyrl-mn", - "mr": "mr-mr", - "ms": "ms-ms", - "mt": "mt-mt", - "nb": "nb-nb", - "ne": "ne-ne", - "nl": "nl-nl", - "nn": "nn-nn", - "or": "or-or", - "pa_Arab": "pa-arab", - "pa_Guru": "pa-guru", - "pl": "pl-pl", - "pt": "pt-br", - "qu": "quz-quz", - "ro": "ro-ro", - "ru": "ru-ru", - "rw": "rw-rw", - "sd_Arab": "sd-arab", - "si": "si-si", - "sk": "sk-sk", - "sl": "sl-sl", - "sq": "sq-sq", - "sr_Cyrl": "sr-cyrl", - "sr_Latn": "sr-latn", - "sv": "sv-sv", - "sw": "sw-sw", - "ta": "ta-ta", - "te": "te-te", - "tg": "tg-cyrl", - "th": "th-th", - "ti": "ti-ti", - "tk": "tk-tk", - "tr": "tr-tr", - "tt": "tt-tt", - "ug": "ug-ug", - "uk": "uk-uk", - "ur": "ur-ur", - "uz_Latn": "uz-latn", - "vi": "vi-vi", - "wo": "wo-wo", - "xh": "xh-xh", - "yo": "yo-yo", - "zh": "zh-hans", - "zh_Hans": "zh-hans", - "zh_Hant": "zh-hant", - "zu": "zu-zu" - }, - "regions": { - "am-ET": "am-et", - "ar-AE": "ar-ae", - "ar-BH": "ar-bh", - "ar-DJ": "ar-dj", - "ar-DZ": "ar-dz", - "ar-EG": "ar-eg", - "ar-ER": "ar-er", - "ar-IL": "ar-il", - "ar-IQ": "ar-iq", - "ar-JO": "ar-jo", - "ar-KM": "ar-km", - "ar-KW": "ar-kw", - "ar-LB": "ar-lb", - "ar-LY": "ar-ly", - "ar-MA": "ar-ma", - "ar-MR": "ar-mr", - "ar-OM": "ar-om", - "ar-PS": "ar-ps", - "ar-QA": "ar-qa", - "ar-SA": "ar-sa", - "ar-SD": "ar-sd", - "ar-SO": "ar-so", - "ar-SY": "ar-sy", - "ar-TD": "ar-td", - "ar-TN": "ar-tn", - "ar-YE": "ar-ye", - "be-BY": "be-by", - "bg-BG": "bg-bg", - "bn-BD": "bn-bd", - "ca-AD": "ca-ad", - "cs-CZ": "cs-cz", - "da-DK": "da-dk", - "de-AT": "de-at", - "de-BE": "de-be", - "de-CH": "de-ch", - "de-DE": "de-de", - "de-LI": "de-li", - "de-LU": "de-lu", - "el-CY": "el-cy", - "el-GR": "el-gr", - "en-AG": "en-ag", - "en-AI": "en-ai", - "en-AS": "en-as", - "en-AU": "en-au", - "en-BB": "en-bb", - "en-BI": "en-bi", - "en-BM": "en-bm", - "en-BS": "en-bs", - "en-BW": "en-bw", - "en-BZ": "en-bz", - "en-CA": "en-ca", - "en-CC": "en-cc", - "en-CK": "en-ck", - "en-CM": "en-cm", - "en-CX": "en-cx", - "en-DM": "en-dm", - "en-ER": "en-er", - "en-FJ": "en-fj", - "en-FK": "en-fk", - "en-FM": "en-fm", - "en-GB": "en-gb", - "en-GD": "en-gd", - "en-GG": "en-gg", - "en-GH": "en-gh", - "en-GI": "en-gi", - "en-GM": "en-gm", - "en-GU": "en-gu", - "en-GY": "en-gy", - "en-HK": "en-hk", - "en-IE": "en-ie", - "en-IN": "en-in", - "en-JE": "en-je", - "en-JM": "en-jm", - "en-KE": "en-ke", - "en-KI": "en-ki", - "en-KN": "en-kn", - "en-KY": "en-ky", - "en-LC": "en-lc", - "en-LR": "en-lr", - "en-LS": "en-ls", - "en-MG": "en-mg", - "en-MH": "en-mh", - "en-MP": "en-mp", - "en-MS": "en-ms", - "en-MT": "en-mt", - "en-MU": "en-mu", - "en-MW": "en-mw", - "en-NA": "en-na", - "en-NF": "en-nf", - "en-NG": "en-ng", - "en-NR": "en-nr", - "en-NU": "en-nu", - "en-NZ": "en-nz", - "en-PG": "en-pg", - "en-PH": "en-ph", - "en-PK": "en-pk", - "en-PN": "en-pn", - "en-PR": "en-pr", - "en-PW": "en-pw", - "en-RW": "en-rw", - "en-SB": "en-sb", - "en-SC": "en-sc", - "en-SD": "en-sd", - "en-SG": "en-sg", - "en-SH": "en-sh", - "en-SL": "en-sl", - "en-SS": "en-ss", - "en-SX": "en-sx", - "en-SZ": "en-sz", - "en-TC": "en-tc", - "en-TK": "en-tk", - "en-TO": "en-to", - "en-TT": "en-tt", - "en-TV": "en-tv", - "en-TZ": "en-tz", - "en-UG": "en-ug", - "en-US": "en-us", - "en-VC": "en-vc", - "en-VG": "en-vg", - "en-VI": "en-vi", - "en-VU": "en-vu", - "en-WS": "en-ws", - "en-ZA": "en-za", - "en-ZM": "en-zm", - "en-ZW": "en-zw", - "es-AR": "es-ar", - "es-BO": "es-bo", - "es-CL": "es-cl", - "es-CO": "es-co", - "es-CR": "es-cr", - "es-DO": "es-do", - "es-EC": "es-ec", - "es-ES": "es-es", - "es-GQ": "es-gq", - "es-GT": "es-gt", - "es-HN": "es-hn", - "es-MX": "es-mx", - "es-NI": "es-ni", - "es-PA": "es-pa", - "es-PE": "es-pe", - "es-PR": "es-pr", - "es-PY": "es-py", - "es-SV": "es-sv", - "es-UY": "es-uy", - "es-VE": "es-ve", - "et-EE": "et-ee", - "fa-AF": "fa-af", - "fa-IR": "fa-ir", - "fi-FI": "fi-fi", - "fil-PH": "fil-ph", - "fr-BE": "fr-be", - "fr-BF": "fr-bf", - "fr-BI": "fr-bi", - "fr-BJ": "fr-bj", - "fr-BL": "fr-bl", - "fr-CA": "fr-ca", - "fr-CD": "fr-cd", - "fr-CF": "fr-cf", - "fr-CG": "fr-cg", - "fr-CH": "fr-ch", - "fr-CI": "fr-ci", - "fr-CM": "fr-cm", - "fr-DJ": "fr-dj", - "fr-DZ": "fr-dz", - "fr-FR": "fr-fr", - "fr-GA": "fr-ga", - "fr-GF": "fr-gf", - "fr-GN": "fr-gn", - "fr-GP": "fr-gp", - "fr-GQ": "fr-gq", - "fr-HT": "fr-ht", - "fr-KM": "fr-km", - "fr-LU": "fr-lu", - "fr-MA": "fr-ma", - "fr-MC": "fr-mc", - "fr-MF": "fr-mf", - "fr-MG": "fr-mg", - "fr-ML": "fr-ml", - "fr-MQ": "fr-mq", - "fr-MU": "fr-mu", - "fr-NC": "fr-nc", - "fr-NE": "fr-ne", - "fr-PF": "fr-pf", - "fr-PM": "fr-pm", - "fr-RE": "fr-re", - "fr-RW": "fr-rw", - "fr-SC": "fr-sc", - "fr-SN": "fr-sn", - "fr-SY": "fr-sy", - "fr-TD": "fr-td", - "fr-TG": "fr-tg", - "fr-TN": "fr-tn", - "fr-VU": "fr-vu", - "fr-WF": "fr-wf", - "fr-YT": "fr-yt", - "ga-IE": "ga-ie", - "he-IL": "he-il", - "hi-IN": "hi-in", - "hr-BA": "hr-ba", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "hy-AM": "hy-am", - "id-ID": "id-id", - "is-IS": "is-is", - "it-CH": "it-ch", - "it-IT": "it-it", - "it-SM": "it-sm", - "it-VA": "it-va", - "ja-JP": "ja-jp", - "ka-GE": "ka-ge", - "kk-KZ": "kk-kz", - "km-KH": "km-kh", - "ko-KR": "ko-kr", - "ky-KG": "ky-kg", - "lb-LU": "lb-lu", - "lo-LA": "lo-la", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "mi-NZ": "mi-nz", - "mk-MK": "mk-mk", - "mn-MN": "mn-mn", - "ms-BN": "ms-bn", - "ms-MY": "ms-my", - "ms-SG": "ms-sg", - "mt-MT": "mt-mt", - "nb-NO": "nb-no", - "ne-NP": "ne-np", - "nl-AW": "nl-aw", - "nl-BE": "nl-be", - "nl-CW": "nl-cw", - "nl-NL": "nl-nl", - "nl-SR": "nl-sr", - "nl-SX": "nl-sx", - "nn-NO": "nn-no", - "pl-PL": "pl-pl", - "pt-AO": "pt-ao", - "pt-BR": "pt-br", - "pt-CV": "pt-cv", - "pt-GQ": "pt-gq", - "pt-GW": "pt-gw", - "pt-MO": "pt-mo", - "pt-MZ": "pt-mz", - "pt-PT": "pt-pt", - "pt-ST": "pt-st", - "qu-BO": "qu-bo", - "qu-EC": "qu-ec", - "qu-PE": "qu-pe", - "ro-MD": "ro-md", - "ro-RO": "ro-ro", - "ru-BY": "ru-by", - "ru-KG": "ru-kg", - "ru-KZ": "ru-kz", - "ru-RU": "ru-ru", - "ru-UA": "ru-ua", - "rw-RW": "rw-rw", - "si-LK": "si-lk", - "sk-SK": "sk-sk", - "sl-SI": "sl-si", - "sq-AL": "sq-al", - "sr-BA": "sr-ba", - "sr-ME": "sr-me", - "sr-RS": "sr-rs", - "sv-FI": "sv-fi", - "sv-SE": "sv-se", - "sw-KE": "sw-ke", - "sw-TZ": "sw-tz", - "sw-UG": "sw-ug", - "ta-LK": "ta-lk", - "ta-SG": "ta-sg", - "tg-TJ": "tg-tj", - "th-TH": "th-th", - "ti-ER": "ti-er", - "tk-TM": "tk-tm", - "tr-CY": "tr-cy", - "tr-TR": "tr-tr", - "uk-UA": "uk-ua", - "ur-PK": "ur-pk", - "vi-VN": "vi-vn", - "wo-SN": "wo-sn", - "yo-NG": "yo-ng", - "zh-CN": "zh-cn", - "zh-HK": "en-hk", - "zh-MO": "zh-mo", - "zh-SG": "zh-sg", - "zh-TW": "zh-tw" - } - }, - "bing news": { - "all_locale": "clear", - "custom": {}, - "data_type": "traits_v1", - "languages": { - "af": "af-af", - "am": "am-am", - "ar": "ar-ar", - "as": "as-as", - "az_Latn": "az-latn", - "be": "be-be", - "bg": "bg-bg", - "bn": "bn-bn", - "bs_Latn": "bs-latn", - "ca": "ca-ca", - "chr": "chr-cher", - "cs": "cs-cs", - "cy": "cy-cy", - "da": "da-dk", - "de": "de-de", - "el": "el-el", - "en": "en-us", - "es": "es-es", - "et": "et-et", - "eu": "eu-eu", - "fa": "prs-prs", - "fi": "fi-fi", - "fil": "fil-fil", - "fr": "fr-fr", - "ga": "ga-ga", - "gd": "gd-gd", - "gl": "gl-gl", - "gu": "gu-gu", - "ha": "ha-latn", - "he": "he-he", - "hi": "hi-hi", - "hr": "hr-hr", - "hu": "hu-hu", - "hy": "hy-hy", - "id": "id-id", - "ig": "ig-ig", - "is": "is-is", - "it": "it-it", - "ja": "ja-ja", - "ka": "ka-ka", - "kk": "kk-kk", - "km": "km-km", - "kn": "kn-kn", - "ko": "ko-ko", - "kok": "kok-kok", - "ku": "ku-arab", - "ky": "ky-ky", - "lb": "lb-lb", - "lo": "lo-lo", - "lt": "lt-lt", - "lv": "lv-lv", - "mi": "mi-mi", - "mk": "mk-mk", - "ml": "ml-ml", - "mn": "mn-cyrl-mn", - "mr": "mr-mr", - "ms": "ms-ms", - "mt": "mt-mt", - "nb": "nb-nb", - "ne": "ne-ne", - "nl": "nl-nl", - "nn": "nn-nn", - "or": "or-or", - "pa_Arab": "pa-arab", - "pa_Guru": "pa-guru", - "pl": "pl-pl", - "pt": "pt-br", - "qu": "quz-quz", - "ro": "ro-ro", - "ru": "ru-ru", - "rw": "rw-rw", - "sd_Arab": "sd-arab", - "si": "si-si", - "sk": "sk-sk", - "sl": "sl-sl", - "sq": "sq-sq", - "sr_Cyrl": "sr-cyrl", - "sr_Latn": "sr-latn", - "sv": "sv-sv", - "sw": "sw-sw", - "ta": "ta-ta", - "te": "te-te", - "tg": "tg-cyrl", - "th": "th-th", - "ti": "ti-ti", - "tk": "tk-tk", - "tr": "tr-tr", - "tt": "tt-tt", - "ug": "ug-ug", - "uk": "uk-uk", - "ur": "ur-ur", - "uz_Latn": "uz-latn", - "vi": "vi-vi", - "wo": "wo-wo", - "xh": "xh-xh", - "yo": "yo-yo", - "zh": "zh-hans", - "zh_Hans": "zh-hans", - "zh_Hant": "zh-hant", - "zu": "zu-zu" - }, - "regions": { - "am-ET": "am-et", - "ar-AE": "ar-ae", - "ar-BH": "ar-bh", - "ar-DJ": "ar-dj", - "ar-DZ": "ar-dz", - "ar-EG": "ar-eg", - "ar-ER": "ar-er", - "ar-IL": "ar-il", - "ar-IQ": "ar-iq", - "ar-JO": "ar-jo", - "ar-KM": "ar-km", - "ar-KW": "ar-kw", - "ar-LB": "ar-lb", - "ar-LY": "ar-ly", - "ar-MA": "ar-ma", - "ar-MR": "ar-mr", - "ar-OM": "ar-om", - "ar-PS": "ar-ps", - "ar-QA": "ar-qa", - "ar-SA": "ar-sa", - "ar-SD": "ar-sd", - "ar-SO": "ar-so", - "ar-SY": "ar-sy", - "ar-TD": "ar-td", - "ar-TN": "ar-tn", - "ar-YE": "ar-ye", - "be-BY": "be-by", - "bg-BG": "bg-bg", - "bn-BD": "bn-bd", - "ca-AD": "ca-ad", - "cs-CZ": "cs-cz", - "da-DK": "da-dk", - "de-AT": "de-at", - "de-BE": "de-be", - "de-CH": "de-ch", - "de-DE": "de-de", - "de-LI": "de-li", - "de-LU": "de-lu", - "el-CY": "el-cy", - "el-GR": "el-gr", - "en-AG": "en-ag", - "en-AI": "en-ai", - "en-AS": "en-as", - "en-AU": "en-au", - "en-BB": "en-bb", - "en-BI": "en-bi", - "en-BM": "en-bm", - "en-BS": "en-bs", - "en-BW": "en-bw", - "en-BZ": "en-bz", - "en-CA": "en-ca", - "en-CC": "en-cc", - "en-CK": "en-ck", - "en-CM": "en-cm", - "en-CX": "en-cx", - "en-DM": "en-dm", - "en-ER": "en-er", - "en-FJ": "en-fj", - "en-FK": "en-fk", - "en-FM": "en-fm", - "en-GB": "en-gb", - "en-GD": "en-gd", - "en-GG": "en-gg", - "en-GH": "en-gh", - "en-GI": "en-gi", - "en-GM": "en-gm", - "en-GU": "en-gu", - "en-GY": "en-gy", - "en-HK": "en-hk", - "en-IE": "en-ie", - "en-IN": "en-in", - "en-JE": "en-je", - "en-JM": "en-jm", - "en-KE": "en-ke", - "en-KI": "en-ki", - "en-KN": "en-kn", - "en-KY": "en-ky", - "en-LC": "en-lc", - "en-LR": "en-lr", - "en-LS": "en-ls", - "en-MG": "en-mg", - "en-MH": "en-mh", - "en-MP": "en-mp", - "en-MS": "en-ms", - "en-MT": "en-mt", - "en-MU": "en-mu", - "en-MW": "en-mw", - "en-NA": "en-na", - "en-NF": "en-nf", - "en-NG": "en-ng", - "en-NR": "en-nr", - "en-NU": "en-nu", - "en-NZ": "en-nz", - "en-PG": "en-pg", - "en-PH": "en-ph", - "en-PK": "en-pk", - "en-PN": "en-pn", - "en-PR": "en-pr", - "en-PW": "en-pw", - "en-RW": "en-rw", - "en-SB": "en-sb", - "en-SC": "en-sc", - "en-SD": "en-sd", - "en-SG": "en-sg", - "en-SH": "en-sh", - "en-SL": "en-sl", - "en-SS": "en-ss", - "en-SX": "en-sx", - "en-SZ": "en-sz", - "en-TC": "en-tc", - "en-TK": "en-tk", - "en-TO": "en-to", - "en-TT": "en-tt", - "en-TV": "en-tv", - "en-TZ": "en-tz", - "en-UG": "en-ug", - "en-US": "en-us", - "en-VC": "en-vc", - "en-VG": "en-vg", - "en-VI": "en-vi", - "en-VU": "en-vu", - "en-WS": "en-ws", - "en-ZA": "en-za", - "en-ZM": "en-zm", - "en-ZW": "en-zw", - "es-AR": "es-ar", - "es-BO": "es-bo", - "es-CL": "es-cl", - "es-CO": "es-co", - "es-CR": "es-cr", - "es-DO": "es-do", - "es-EC": "es-ec", - "es-ES": "es-es", - "es-GQ": "es-gq", - "es-GT": "es-gt", - "es-HN": "es-hn", - "es-MX": "es-mx", - "es-NI": "es-ni", - "es-PA": "es-pa", - "es-PE": "es-pe", - "es-PR": "es-pr", - "es-PY": "es-py", - "es-SV": "es-sv", - "es-UY": "es-uy", - "es-VE": "es-ve", - "et-EE": "et-ee", - "fa-AF": "fa-af", - "fa-IR": "fa-ir", - "fi-FI": "fi-fi", - "fil-PH": "fil-ph", - "fr-BE": "fr-be", - "fr-BF": "fr-bf", - "fr-BI": "fr-bi", - "fr-BJ": "fr-bj", - "fr-BL": "fr-bl", - "fr-CA": "fr-ca", - "fr-CD": "fr-cd", - "fr-CF": "fr-cf", - "fr-CG": "fr-cg", - "fr-CH": "fr-ch", - "fr-CI": "fr-ci", - "fr-CM": "fr-cm", - "fr-DJ": "fr-dj", - "fr-DZ": "fr-dz", - "fr-FR": "fr-fr", - "fr-GA": "fr-ga", - "fr-GF": "fr-gf", - "fr-GN": "fr-gn", - "fr-GP": "fr-gp", - "fr-GQ": "fr-gq", - "fr-HT": "fr-ht", - "fr-KM": "fr-km", - "fr-LU": "fr-lu", - "fr-MA": "fr-ma", - "fr-MC": "fr-mc", - "fr-MF": "fr-mf", - "fr-MG": "fr-mg", - "fr-ML": "fr-ml", - "fr-MQ": "fr-mq", - "fr-MU": "fr-mu", - "fr-NC": "fr-nc", - "fr-NE": "fr-ne", - "fr-PF": "fr-pf", - "fr-PM": "fr-pm", - "fr-RE": "fr-re", - "fr-RW": "fr-rw", - "fr-SC": "fr-sc", - "fr-SN": "fr-sn", - "fr-SY": "fr-sy", - "fr-TD": "fr-td", - "fr-TG": "fr-tg", - "fr-TN": "fr-tn", - "fr-VU": "fr-vu", - "fr-WF": "fr-wf", - "fr-YT": "fr-yt", - "ga-IE": "ga-ie", - "he-IL": "he-il", - "hi-IN": "hi-in", - "hr-BA": "hr-ba", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "hy-AM": "hy-am", - "id-ID": "id-id", - "is-IS": "is-is", - "it-CH": "it-ch", - "it-IT": "it-it", - "it-SM": "it-sm", - "it-VA": "it-va", - "ja-JP": "ja-jp", - "ka-GE": "ka-ge", - "kk-KZ": "kk-kz", - "km-KH": "km-kh", - "ko-KR": "ko-kr", - "ky-KG": "ky-kg", - "lb-LU": "lb-lu", - "lo-LA": "lo-la", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "mi-NZ": "mi-nz", - "mk-MK": "mk-mk", - "mn-MN": "mn-mn", - "ms-BN": "ms-bn", - "ms-MY": "ms-my", - "ms-SG": "ms-sg", - "mt-MT": "mt-mt", - "nb-NO": "nb-no", - "ne-NP": "ne-np", - "nl-AW": "nl-aw", - "nl-BE": "nl-be", - "nl-CW": "nl-cw", - "nl-NL": "nl-nl", - "nl-SR": "nl-sr", - "nl-SX": "nl-sx", - "nn-NO": "nn-no", - "pl-PL": "pl-pl", - "pt-AO": "pt-ao", - "pt-BR": "pt-br", - "pt-CV": "pt-cv", - "pt-GQ": "pt-gq", - "pt-GW": "pt-gw", - "pt-MO": "pt-mo", - "pt-MZ": "pt-mz", - "pt-PT": "pt-pt", - "pt-ST": "pt-st", - "qu-BO": "qu-bo", - "qu-EC": "qu-ec", - "qu-PE": "qu-pe", - "ro-MD": "ro-md", - "ro-RO": "ro-ro", - "ru-BY": "ru-by", - "ru-KG": "ru-kg", - "ru-KZ": "ru-kz", - "ru-RU": "ru-ru", - "ru-UA": "ru-ua", - "rw-RW": "rw-rw", - "si-LK": "si-lk", - "sk-SK": "sk-sk", - "sl-SI": "sl-si", - "sq-AL": "sq-al", - "sr-BA": "sr-ba", - "sr-ME": "sr-me", - "sr-RS": "sr-rs", - "sv-FI": "sv-fi", - "sv-SE": "sv-se", - "sw-KE": "sw-ke", - "sw-TZ": "sw-tz", - "sw-UG": "sw-ug", - "ta-LK": "ta-lk", - "ta-SG": "ta-sg", - "tg-TJ": "tg-tj", - "th-TH": "th-th", - "ti-ER": "ti-er", - "tk-TM": "tk-tm", - "tr-CY": "tr-cy", - "tr-TR": "tr-tr", - "uk-UA": "uk-ua", - "ur-PK": "ur-pk", - "vi-VN": "vi-vn", - "wo-SN": "wo-sn", - "yo-NG": "yo-ng", - "zh-CN": "en-hk", - "zh-HK": "en-hk", - "zh-MO": "zh-mo", - "zh-SG": "zh-sg", - "zh-TW": "zh-tw" - } - }, - "bing videos": { - "all_locale": "clear", - "custom": {}, - "data_type": "traits_v1", - "languages": { - "af": "af-af", - "am": "am-am", - "ar": "ar-ar", - "as": "as-as", - "az_Latn": "az-latn", - "be": "be-be", - "bg": "bg-bg", - "bn": "bn-bn", - "bs_Latn": "bs-latn", - "ca": "ca-ca", - "chr": "chr-cher", - "cs": "cs-cs", - "cy": "cy-cy", - "da": "da-dk", - "de": "de-de", - "el": "el-el", - "en": "en-us", - "es": "es-es", - "et": "et-et", - "eu": "eu-eu", - "fa": "prs-prs", - "fi": "fi-fi", - "fil": "fil-fil", - "fr": "fr-fr", - "ga": "ga-ga", - "gd": "gd-gd", - "gl": "gl-gl", - "gu": "gu-gu", - "ha": "ha-latn", - "he": "he-he", - "hi": "hi-hi", - "hr": "hr-hr", - "hu": "hu-hu", - "hy": "hy-hy", - "id": "id-id", - "ig": "ig-ig", - "is": "is-is", - "it": "it-it", - "ja": "ja-ja", - "ka": "ka-ka", - "kk": "kk-kk", - "km": "km-km", - "kn": "kn-kn", - "ko": "ko-ko", - "kok": "kok-kok", - "ku": "ku-arab", - "ky": "ky-ky", - "lb": "lb-lb", - "lo": "lo-lo", - "lt": "lt-lt", - "lv": "lv-lv", - "mi": "mi-mi", - "mk": "mk-mk", - "ml": "ml-ml", - "mn": "mn-cyrl-mn", - "mr": "mr-mr", - "ms": "ms-ms", - "mt": "mt-mt", - "nb": "nb-nb", - "ne": "ne-ne", - "nl": "nl-nl", - "nn": "nn-nn", - "or": "or-or", - "pa_Arab": "pa-arab", - "pa_Guru": "pa-guru", - "pl": "pl-pl", - "pt": "pt-br", - "qu": "quz-quz", - "ro": "ro-ro", - "ru": "ru-ru", - "rw": "rw-rw", - "sd_Arab": "sd-arab", - "si": "si-si", - "sk": "sk-sk", - "sl": "sl-sl", - "sq": "sq-sq", - "sr_Cyrl": "sr-cyrl", - "sr_Latn": "sr-latn", - "sv": "sv-sv", - "sw": "sw-sw", - "ta": "ta-ta", - "te": "te-te", - "tg": "tg-cyrl", - "th": "th-th", - "ti": "ti-ti", - "tk": "tk-tk", - "tr": "tr-tr", - "tt": "tt-tt", - "ug": "ug-ug", - "uk": "uk-uk", - "ur": "ur-ur", - "uz_Latn": "uz-latn", - "vi": "vi-vi", - "wo": "wo-wo", - "xh": "xh-xh", - "yo": "yo-yo", - "zh": "zh-hans", - "zh_Hans": "zh-hans", - "zh_Hant": "zh-hant", - "zu": "zu-zu" - }, - "regions": { - "am-ET": "am-et", - "ar-AE": "ar-ae", - "ar-BH": "ar-bh", - "ar-DJ": "ar-dj", - "ar-DZ": "ar-dz", - "ar-EG": "ar-eg", - "ar-ER": "ar-er", - "ar-IL": "ar-il", - "ar-IQ": "ar-iq", - "ar-JO": "ar-jo", - "ar-KM": "ar-km", - "ar-KW": "ar-kw", - "ar-LB": "ar-lb", - "ar-LY": "ar-ly", - "ar-MA": "ar-ma", - "ar-MR": "ar-mr", - "ar-OM": "ar-om", - "ar-PS": "ar-ps", - "ar-QA": "ar-qa", - "ar-SA": "ar-sa", - "ar-SD": "ar-sd", - "ar-SO": "ar-so", - "ar-SY": "ar-sy", - "ar-TD": "ar-td", - "ar-TN": "ar-tn", - "ar-YE": "ar-ye", - "be-BY": "be-by", - "bg-BG": "bg-bg", - "bn-BD": "bn-bd", - "ca-AD": "ca-ad", - "cs-CZ": "cs-cz", - "da-DK": "da-dk", - "de-AT": "de-at", - "de-BE": "de-be", - "de-CH": "de-ch", - "de-DE": "de-de", - "de-LI": "de-li", - "de-LU": "de-lu", - "el-CY": "el-cy", - "el-GR": "el-gr", - "en-AG": "en-ag", - "en-AI": "en-ai", - "en-AS": "en-as", - "en-AU": "en-au", - "en-BB": "en-bb", - "en-BI": "en-bi", - "en-BM": "en-bm", - "en-BS": "en-bs", - "en-BW": "en-bw", - "en-BZ": "en-bz", - "en-CA": "en-ca", - "en-CC": "en-cc", - "en-CK": "en-ck", - "en-CM": "en-cm", - "en-CX": "en-cx", - "en-DM": "en-dm", - "en-ER": "en-er", - "en-FJ": "en-fj", - "en-FK": "en-fk", - "en-FM": "en-fm", - "en-GB": "en-gb", - "en-GD": "en-gd", - "en-GG": "en-gg", - "en-GH": "en-gh", - "en-GI": "en-gi", - "en-GM": "en-gm", - "en-GU": "en-gu", - "en-GY": "en-gy", - "en-HK": "en-hk", - "en-IE": "en-ie", - "en-IN": "en-in", - "en-JE": "en-je", - "en-JM": "en-jm", - "en-KE": "en-ke", - "en-KI": "en-ki", - "en-KN": "en-kn", - "en-KY": "en-ky", - "en-LC": "en-lc", - "en-LR": "en-lr", - "en-LS": "en-ls", - "en-MG": "en-mg", - "en-MH": "en-mh", - "en-MP": "en-mp", - "en-MS": "en-ms", - "en-MT": "en-mt", - "en-MU": "en-mu", - "en-MW": "en-mw", - "en-NA": "en-na", - "en-NF": "en-nf", - "en-NG": "en-ng", - "en-NR": "en-nr", - "en-NU": "en-nu", - "en-NZ": "en-nz", - "en-PG": "en-pg", - "en-PH": "en-ph", - "en-PK": "en-pk", - "en-PN": "en-pn", - "en-PR": "en-pr", - "en-PW": "en-pw", - "en-RW": "en-rw", - "en-SB": "en-sb", - "en-SC": "en-sc", - "en-SD": "en-sd", - "en-SG": "en-sg", - "en-SH": "en-sh", - "en-SL": "en-sl", - "en-SS": "en-ss", - "en-SX": "en-sx", - "en-SZ": "en-sz", - "en-TC": "en-tc", - "en-TK": "en-tk", - "en-TO": "en-to", - "en-TT": "en-tt", - "en-TV": "en-tv", - "en-TZ": "en-tz", - "en-UG": "en-ug", - "en-US": "en-us", - "en-VC": "en-vc", - "en-VG": "en-vg", - "en-VI": "en-vi", - "en-VU": "en-vu", - "en-WS": "en-ws", - "en-ZA": "en-za", - "en-ZM": "en-zm", - "en-ZW": "en-zw", - "es-AR": "es-ar", - "es-BO": "es-bo", - "es-CL": "es-cl", - "es-CO": "es-co", - "es-CR": "es-cr", - "es-DO": "es-do", - "es-EC": "es-ec", - "es-ES": "es-es", - "es-GQ": "es-gq", - "es-GT": "es-gt", - "es-HN": "es-hn", - "es-MX": "es-mx", - "es-NI": "es-ni", - "es-PA": "es-pa", - "es-PE": "es-pe", - "es-PR": "es-pr", - "es-PY": "es-py", - "es-SV": "es-sv", - "es-UY": "es-uy", - "es-VE": "es-ve", - "et-EE": "et-ee", - "fa-AF": "fa-af", - "fa-IR": "fa-ir", - "fi-FI": "fi-fi", - "fil-PH": "fil-ph", - "fr-BE": "fr-be", - "fr-BF": "fr-bf", - "fr-BI": "fr-bi", - "fr-BJ": "fr-bj", - "fr-BL": "fr-bl", - "fr-CA": "fr-ca", - "fr-CD": "fr-cd", - "fr-CF": "fr-cf", - "fr-CG": "fr-cg", - "fr-CH": "fr-ch", - "fr-CI": "fr-ci", - "fr-CM": "fr-cm", - "fr-DJ": "fr-dj", - "fr-DZ": "fr-dz", - "fr-FR": "fr-fr", - "fr-GA": "fr-ga", - "fr-GF": "fr-gf", - "fr-GN": "fr-gn", - "fr-GP": "fr-gp", - "fr-GQ": "fr-gq", - "fr-HT": "fr-ht", - "fr-KM": "fr-km", - "fr-LU": "fr-lu", - "fr-MA": "fr-ma", - "fr-MC": "fr-mc", - "fr-MF": "fr-mf", - "fr-MG": "fr-mg", - "fr-ML": "fr-ml", - "fr-MQ": "fr-mq", - "fr-MU": "fr-mu", - "fr-NC": "fr-nc", - "fr-NE": "fr-ne", - "fr-PF": "fr-pf", - "fr-PM": "fr-pm", - "fr-RE": "fr-re", - "fr-RW": "fr-rw", - "fr-SC": "fr-sc", - "fr-SN": "fr-sn", - "fr-SY": "fr-sy", - "fr-TD": "fr-td", - "fr-TG": "fr-tg", - "fr-TN": "fr-tn", - "fr-VU": "fr-vu", - "fr-WF": "fr-wf", - "fr-YT": "fr-yt", - "ga-IE": "ga-ie", - "he-IL": "he-il", - "hi-IN": "hi-in", - "hr-BA": "hr-ba", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "hy-AM": "hy-am", - "id-ID": "id-id", - "is-IS": "is-is", - "it-CH": "it-ch", - "it-IT": "it-it", - "it-SM": "it-sm", - "it-VA": "it-va", - "ja-JP": "ja-jp", - "ka-GE": "ka-ge", - "kk-KZ": "kk-kz", - "km-KH": "km-kh", - "ko-KR": "ko-kr", - "ky-KG": "ky-kg", - "lb-LU": "lb-lu", - "lo-LA": "lo-la", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "mi-NZ": "mi-nz", - "mk-MK": "mk-mk", - "mn-MN": "mn-mn", - "ms-BN": "ms-bn", - "ms-MY": "ms-my", - "ms-SG": "ms-sg", - "mt-MT": "mt-mt", - "nb-NO": "nb-no", - "ne-NP": "ne-np", - "nl-AW": "nl-aw", - "nl-BE": "nl-be", - "nl-CW": "nl-cw", - "nl-NL": "nl-nl", - "nl-SR": "nl-sr", - "nl-SX": "nl-sx", - "nn-NO": "nn-no", - "pl-PL": "pl-pl", - "pt-AO": "pt-ao", - "pt-BR": "pt-br", - "pt-CV": "pt-cv", - "pt-GQ": "pt-gq", - "pt-GW": "pt-gw", - "pt-MO": "pt-mo", - "pt-MZ": "pt-mz", - "pt-PT": "pt-pt", - "pt-ST": "pt-st", - "qu-BO": "qu-bo", - "qu-EC": "qu-ec", - "qu-PE": "qu-pe", - "ro-MD": "ro-md", - "ro-RO": "ro-ro", - "ru-BY": "ru-by", - "ru-KG": "ru-kg", - "ru-KZ": "ru-kz", - "ru-RU": "ru-ru", - "ru-UA": "ru-ua", - "rw-RW": "rw-rw", - "si-LK": "si-lk", - "sk-SK": "sk-sk", - "sl-SI": "sl-si", - "sq-AL": "sq-al", - "sr-BA": "sr-ba", - "sr-ME": "sr-me", - "sr-RS": "sr-rs", - "sv-FI": "sv-fi", - "sv-SE": "sv-se", - "sw-KE": "sw-ke", - "sw-TZ": "sw-tz", - "sw-UG": "sw-ug", - "ta-LK": "ta-lk", - "ta-SG": "ta-sg", - "tg-TJ": "tg-tj", - "th-TH": "th-th", - "ti-ER": "ti-er", - "tk-TM": "tk-tm", - "tr-CY": "tr-cy", - "tr-TR": "tr-tr", - "uk-UA": "uk-ua", - "ur-PK": "ur-pk", - "vi-VN": "vi-vn", - "wo-SN": "wo-sn", - "yo-NG": "yo-ng", - "zh-CN": "zh-cn", - "zh-HK": "en-hk", - "zh-MO": "zh-mo", - "zh-SG": "zh-sg", - "zh-TW": "zh-tw" - } - }, - "brave": { - "all_locale": "all", - "custom": { - "ui_lang": { - "ca": "ca", - "de-DE": "de-de", - "en-CA": "en-ca", - "en-GB": "en-gb", - "en-US": "en-us", - "es": "es", - "fr-CA": "fr-ca", - "fr-FR": "fr-fr", - "ja-JP": "ja-jp", - "pt-BR": "pt-br", - "sq-AL": "sq-al" - } - }, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "ar-SA": "sa", - "da-DK": "dk", - "de-AT": "at", - "de-BE": "be", - "de-CH": "ch", - "de-DE": "de", - "en-AU": "au", - "en-CA": "ca", - "en-GB": "gb", - "en-HK": "hk", - "en-IN": "in", - "en-NZ": "nz", - "en-PH": "ph", - "en-US": "us", - "en-ZA": "za", - "es-AR": "ar", - "es-CL": "cl", - "es-ES": "es", - "es-MX": "mx", - "fi-FI": "fi", - "fil-PH": "ph", - "fr-BE": "be", - "fr-CA": "ca", - "fr-CH": "ch", - "fr-FR": "fr", - "gsw-CH": "ch", - "hi-IN": "in", - "id-ID": "id", - "it-CH": "ch", - "it-IT": "it", - "ja-JP": "jp", - "ko-KR": "kr", - "mi-NZ": "nz", - "ms-MY": "my", - "nb-NO": "no", - "nl-BE": "be", - "nl-NL": "nl", - "nn-NO": "no", - "pl-PL": "pl", - "pt-BR": "br", - "pt-PT": "pt", - "ru-RU": "ru", - "sv-FI": "fi", - "sv-SE": "se", - "tr-TR": "tr", - "zh-CN": "cn", - "zh-HK": "hk", - "zh-TW": "tw" - } - }, - "brave.images": { - "all_locale": "all", - "custom": { - "ui_lang": { - "ca": "ca", - "de-DE": "de-de", - "en-CA": "en-ca", - "en-GB": "en-gb", - "en-US": "en-us", - "es": "es", - "fr-CA": "fr-ca", - "fr-FR": "fr-fr", - "ja-JP": "ja-jp", - "pt-BR": "pt-br", - "sq-AL": "sq-al" - } - }, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "ar-SA": "sa", - "da-DK": "dk", - "de-AT": "at", - "de-BE": "be", - "de-CH": "ch", - "de-DE": "de", - "en-AU": "au", - "en-CA": "ca", - "en-GB": "gb", - "en-HK": "hk", - "en-IN": "in", - "en-NZ": "nz", - "en-PH": "ph", - "en-US": "us", - "en-ZA": "za", - "es-AR": "ar", - "es-CL": "cl", - "es-ES": "es", - "es-MX": "mx", - "fi-FI": "fi", - "fil-PH": "ph", - "fr-BE": "be", - "fr-CA": "ca", - "fr-CH": "ch", - "fr-FR": "fr", - "gsw-CH": "ch", - "hi-IN": "in", - "id-ID": "id", - "it-CH": "ch", - "it-IT": "it", - "ja-JP": "jp", - "ko-KR": "kr", - "mi-NZ": "nz", - "ms-MY": "my", - "nb-NO": "no", - "nl-BE": "be", - "nl-NL": "nl", - "nn-NO": "no", - "pl-PL": "pl", - "pt-BR": "br", - "pt-PT": "pt", - "ru-RU": "ru", - "sv-FI": "fi", - "sv-SE": "se", - "tr-TR": "tr", - "zh-CN": "cn", - "zh-HK": "hk", - "zh-TW": "tw" - } - }, - "brave.news": { - "all_locale": "all", - "custom": { - "ui_lang": { - "ca": "ca", - "de-DE": "de-de", - "en-CA": "en-ca", - "en-GB": "en-gb", - "en-US": "en-us", - "es": "es", - "fr-CA": "fr-ca", - "fr-FR": "fr-fr", - "ja-JP": "ja-jp", - "pt-BR": "pt-br", - "sq-AL": "sq-al" - } - }, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "ar-SA": "sa", - "da-DK": "dk", - "de-AT": "at", - "de-BE": "be", - "de-CH": "ch", - "de-DE": "de", - "en-AU": "au", - "en-CA": "ca", - "en-GB": "gb", - "en-HK": "hk", - "en-IN": "in", - "en-NZ": "nz", - "en-PH": "ph", - "en-US": "us", - "en-ZA": "za", - "es-AR": "ar", - "es-CL": "cl", - "es-ES": "es", - "es-MX": "mx", - "fi-FI": "fi", - "fil-PH": "ph", - "fr-BE": "be", - "fr-CA": "ca", - "fr-CH": "ch", - "fr-FR": "fr", - "gsw-CH": "ch", - "hi-IN": "in", - "id-ID": "id", - "it-CH": "ch", - "it-IT": "it", - "ja-JP": "jp", - "ko-KR": "kr", - "mi-NZ": "nz", - "ms-MY": "my", - "nb-NO": "no", - "nl-BE": "be", - "nl-NL": "nl", - "nn-NO": "no", - "pl-PL": "pl", - "pt-BR": "br", - "pt-PT": "pt", - "ru-RU": "ru", - "sv-FI": "fi", - "sv-SE": "se", - "tr-TR": "tr", - "zh-CN": "cn", - "zh-HK": "hk", - "zh-TW": "tw" - } - }, - "brave.videos": { - "all_locale": "all", - "custom": { - "ui_lang": { - "ca": "ca", - "de-DE": "de-de", - "en-CA": "en-ca", - "en-GB": "en-gb", - "en-US": "en-us", - "es": "es", - "fr-CA": "fr-ca", - "fr-FR": "fr-fr", - "ja-JP": "ja-jp", - "pt-BR": "pt-br", - "sq-AL": "sq-al" - } - }, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "ar-SA": "sa", - "da-DK": "dk", - "de-AT": "at", - "de-BE": "be", - "de-CH": "ch", - "de-DE": "de", - "en-AU": "au", - "en-CA": "ca", - "en-GB": "gb", - "en-HK": "hk", - "en-IN": "in", - "en-NZ": "nz", - "en-PH": "ph", - "en-US": "us", - "en-ZA": "za", - "es-AR": "ar", - "es-CL": "cl", - "es-ES": "es", - "es-MX": "mx", - "fi-FI": "fi", - "fil-PH": "ph", - "fr-BE": "be", - "fr-CA": "ca", - "fr-CH": "ch", - "fr-FR": "fr", - "gsw-CH": "ch", - "hi-IN": "in", - "id-ID": "id", - "it-CH": "ch", - "it-IT": "it", - "ja-JP": "jp", - "ko-KR": "kr", - "mi-NZ": "nz", - "ms-MY": "my", - "nb-NO": "no", - "nl-BE": "be", - "nl-NL": "nl", - "nn-NO": "no", - "pl-PL": "pl", - "pt-BR": "br", - "pt-PT": "pt", - "ru-RU": "ru", - "sv-FI": "fi", - "sv-SE": "se", - "tr-TR": "tr", - "zh-CN": "cn", - "zh-HK": "hk", - "zh-TW": "tw" - } - }, - "dailymotion": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": { - "ar": "ar", - "de": "de", - "el": "el", - "en": "en", - "es": "es", - "fr": "fr", - "id": "id", - "it": "it", - "ja": "ja", - "ko": "ko", - "ms": "ms", - "nl": "nl", - "pl": "pl", - "pt": "pt", - "ro": "ro", - "ru": "ru", - "th": "th", - "tr": "tr", - "vi": "vi", - "zh": "zh" - }, - "regions": { - "ar-AE": "ar_AE", - "ar-EG": "ar_EG", - "ar-SA": "ar_SA", - "de-AT": "de_AT", - "de-CH": "de_CH", - "de-DE": "de_DE", - "el-GR": "el_GR", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "en-HK": "en_HK", - "en-IE": "en_IE", - "en-IN": "en_IN", - "en-NG": "en_NG", - "en-PH": "en_PH", - "en-PK": "en_PK", - "en-SG": "en_SG", - "en-US": "en_US", - "en-ZA": "en_ZA", - "es-AR": "es_AR", - "es-ES": "es_ES", - "es-MX": "es_MX", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "fr-CI": "fr_CI", - "fr-FR": "fr_FR", - "fr-MA": "fr_MA", - "fr-SN": "fr_SN", - "fr-TN": "fr_TN", - "id-ID": "id_ID", - "it-CH": "it_CH", - "it-IT": "it_IT", - "ja-JP": "ja_JP", - "ko-KR": "ko_KR", - "ms-MY": "ms_MY", - "nl-BE": "nl_BE", - "nl-NL": "nl_NL", - "pl-PL": "pl_PL", - "pt-BR": "pt_BR", - "pt-PT": "pt_PT", - "ro-RO": "ro_RO", - "ru-RU": "ru_RU", - "th-TH": "th_TH", - "tr-TR": "tr_TR", - "vi-VN": "vi_VN", - "zh-CN": "zh_CN", - "zh-TW": "zh_TW" - } - }, - "duckduckgo": { - "all_locale": "wt-wt", - "custom": { - "lang_region": { - "ar-DZ": "ar_DZ", - "ar-JO": "ar_JO", - "ar-SA": "ar_SA", - "bn-IN": "bn_IN", - "de-CH": "de_CH", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-CO": "es_CO", - "es-CR": "es_CR", - "es-EC": "es_EC", - "es-MX": "es_MX", - "es-PE": "es_PE", - "es-UY": "es_UY", - "es-VE": "es_VE", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "nl-BE": "nl_BE", - "pt-BR": "pt_BR" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "af_ZA", - "ar": "ar_EG", - "ast": "ast_ES", - "az_Latn": "az_AZ", - "be": "be_BY", - "bg": "bg_BG", - "bn": "bn_BD", - "br": "br_FR", - "bs_Latn": "bs_BA", - "ca": "ca_ES", - "cs": "cs_CZ", - "cy": "cy_GB", - "da": "da_DK", - "de": "de_DE", - "el": "el_GR", - "en": "en_US", - "eo": "eo_XX", - "es": "es_ES", - "et": "et_EE", - "eu": "eu_ES", - "fa": "fa_IR", - "fi": "fi_FI", - "fil": "tl_PH", - "fr": "fr_FR", - "ga": "ga_IE", - "gd": "gd_GB", - "gl": "gl_ES", - "he": "he_IL", - "hi": "hi_IN", - "hr": "hr_HR", - "hu": "hu_HU", - "hy": "hy_AM", - "id": "id_ID", - "is": "is_IS", - "it": "it_IT", - "ja": "ja_JP", - "kab": "kab_DZ", - "kn": "kn_IN", - "ko": "ko_KR", - "ku": "ku", - "kw": "kw_GB", - "lt": "lt_LT", - "lv": "lv_LV", - "ml": "ml_IN", - "mr": "mr_IN", - "ms": "ms_MY", - "nb": "nb_NO", - "nl": "nl_NL", - "nn": "nn_NO", - "pl": "pl_PL", - "pt": "pt_PT", - "ro": "ro_RO", - "ru": "ru_RU", - "sc": "sc_IT", - "si": "si_LK", - "sk": "sk_SK", - "sl": "sl_SI", - "sq": "sq_AL", - "sr_Cyrl": "sr_RS", - "sv": "sv_SE", - "ta": "ta_IN", - "te": "te_IN", - "th": "th_TH", - "tr": "tr_TR", - "uk": "uk_UA", - "ur": "ur_PK", - "vi": "vi_VN", - "zh_Hans": "zh_CN", - "zh_Hant": "zh_TW" - }, - "regions": { - "ar-SA": "xa-ar", - "bg-BG": "bg-bg", - "ca-ES": "es-ca", - "cs-CZ": "cz-cs", - "da-DK": "dk-da", - "de-AT": "at-de", - "de-CH": "ch-de", - "de-DE": "de-de", - "el-GR": "gr-el", - "en-AU": "au-en", - "en-CA": "ca-en", - "en-GB": "uk-en", - "en-IE": "ie-en", - "en-IL": "il-en", - "en-IN": "in-en", - "en-MY": "my-en", - "en-NZ": "nz-en", - "en-PH": "ph-en", - "en-PK": "pk-en", - "en-SG": "sg-en", - "en-US": "us-en", - "en-ZA": "za-en", - "es-AR": "ar-es", - "es-CL": "cl-es", - "es-CO": "co-es", - "es-ES": "es-es", - "es-MX": "mx-es", - "es-PE": "pe-es", - "es-US": "us-es", - "et-EE": "ee-et", - "fi-FI": "fi-fi", - "fr-BE": "be-fr", - "fr-CA": "ca-fr", - "fr-CH": "ch-fr", - "fr-FR": "fr-fr", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "id-ID": "id-en", - "it-IT": "it-it", - "ja-JP": "jp-jp", - "ko-KR": "kr-kr", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "nb-NO": "no-no", - "nl-BE": "be-nl", - "nl-NL": "nl-nl", - "pl-PL": "pl-pl", - "pt-BR": "br-pt", - "pt-PT": "pt-pt", - "ro-RO": "ro-ro", - "ru-RU": "ru-ru", - "sk-SK": "sk-sk", - "sl-SI": "sl-sl", - "sv-SE": "se-sv", - "th-TH": "th-en", - "tr-TR": "tr-tr", - "uk-UA": "ua-uk", - "vi-VN": "vn-en", - "zh-CN": "cn-zh", - "zh-HK": "hk-tzh", - "zh-TW": "tw-tzh" - } - }, - "duckduckgo images": { - "all_locale": "wt-wt", - "custom": { - "lang_region": { - "ar-DZ": "ar_DZ", - "ar-JO": "ar_JO", - "ar-SA": "ar_SA", - "bn-IN": "bn_IN", - "de-CH": "de_CH", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-CO": "es_CO", - "es-CR": "es_CR", - "es-EC": "es_EC", - "es-MX": "es_MX", - "es-PE": "es_PE", - "es-UY": "es_UY", - "es-VE": "es_VE", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "nl-BE": "nl_BE", - "pt-BR": "pt_BR" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "af_ZA", - "ar": "ar_EG", - "ast": "ast_ES", - "az_Latn": "az_AZ", - "be": "be_BY", - "bg": "bg_BG", - "bn": "bn_BD", - "br": "br_FR", - "bs_Latn": "bs_BA", - "ca": "ca_ES", - "cs": "cs_CZ", - "cy": "cy_GB", - "da": "da_DK", - "de": "de_DE", - "el": "el_GR", - "en": "en_US", - "eo": "eo_XX", - "es": "es_ES", - "et": "et_EE", - "eu": "eu_ES", - "fa": "fa_IR", - "fi": "fi_FI", - "fil": "tl_PH", - "fr": "fr_FR", - "ga": "ga_IE", - "gd": "gd_GB", - "gl": "gl_ES", - "he": "he_IL", - "hi": "hi_IN", - "hr": "hr_HR", - "hu": "hu_HU", - "hy": "hy_AM", - "id": "id_ID", - "is": "is_IS", - "it": "it_IT", - "ja": "ja_JP", - "kab": "kab_DZ", - "kn": "kn_IN", - "ko": "ko_KR", - "ku": "ku", - "kw": "kw_GB", - "lt": "lt_LT", - "lv": "lv_LV", - "ml": "ml_IN", - "mr": "mr_IN", - "ms": "ms_MY", - "nb": "nb_NO", - "nl": "nl_NL", - "nn": "nn_NO", - "pl": "pl_PL", - "pt": "pt_PT", - "ro": "ro_RO", - "ru": "ru_RU", - "sc": "sc_IT", - "si": "si_LK", - "sk": "sk_SK", - "sl": "sl_SI", - "sq": "sq_AL", - "sr_Cyrl": "sr_RS", - "sv": "sv_SE", - "ta": "ta_IN", - "te": "te_IN", - "th": "th_TH", - "tr": "tr_TR", - "uk": "uk_UA", - "ur": "ur_PK", - "vi": "vi_VN", - "zh_Hans": "zh_CN", - "zh_Hant": "zh_TW" - }, - "regions": { - "ar-SA": "xa-ar", - "bg-BG": "bg-bg", - "ca-ES": "es-ca", - "cs-CZ": "cz-cs", - "da-DK": "dk-da", - "de-AT": "at-de", - "de-CH": "ch-de", - "de-DE": "de-de", - "el-GR": "gr-el", - "en-AU": "au-en", - "en-CA": "ca-en", - "en-GB": "uk-en", - "en-IE": "ie-en", - "en-IL": "il-en", - "en-IN": "in-en", - "en-MY": "my-en", - "en-NZ": "nz-en", - "en-PH": "ph-en", - "en-PK": "pk-en", - "en-SG": "sg-en", - "en-US": "us-en", - "en-ZA": "za-en", - "es-AR": "ar-es", - "es-CL": "cl-es", - "es-CO": "co-es", - "es-ES": "es-es", - "es-MX": "mx-es", - "es-PE": "pe-es", - "es-US": "us-es", - "et-EE": "ee-et", - "fi-FI": "fi-fi", - "fr-BE": "be-fr", - "fr-CA": "ca-fr", - "fr-CH": "ch-fr", - "fr-FR": "fr-fr", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "id-ID": "id-en", - "it-IT": "it-it", - "ja-JP": "jp-jp", - "ko-KR": "kr-kr", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "nb-NO": "no-no", - "nl-BE": "be-nl", - "nl-NL": "nl-nl", - "pl-PL": "pl-pl", - "pt-BR": "br-pt", - "pt-PT": "pt-pt", - "ro-RO": "ro-ro", - "ru-RU": "ru-ru", - "sk-SK": "sk-sk", - "sl-SI": "sl-sl", - "sv-SE": "se-sv", - "th-TH": "th-en", - "tr-TR": "tr-tr", - "uk-UA": "ua-uk", - "vi-VN": "vn-en", - "zh-CN": "cn-zh", - "zh-HK": "hk-tzh", - "zh-TW": "tw-tzh" - } - }, - "duckduckgo news": { - "all_locale": "wt-wt", - "custom": { - "lang_region": { - "ar-DZ": "ar_DZ", - "ar-JO": "ar_JO", - "ar-SA": "ar_SA", - "bn-IN": "bn_IN", - "de-CH": "de_CH", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-CO": "es_CO", - "es-CR": "es_CR", - "es-EC": "es_EC", - "es-MX": "es_MX", - "es-PE": "es_PE", - "es-UY": "es_UY", - "es-VE": "es_VE", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "nl-BE": "nl_BE", - "pt-BR": "pt_BR" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "af_ZA", - "ar": "ar_EG", - "ast": "ast_ES", - "az_Latn": "az_AZ", - "be": "be_BY", - "bg": "bg_BG", - "bn": "bn_BD", - "br": "br_FR", - "bs_Latn": "bs_BA", - "ca": "ca_ES", - "cs": "cs_CZ", - "cy": "cy_GB", - "da": "da_DK", - "de": "de_DE", - "el": "el_GR", - "en": "en_US", - "eo": "eo_XX", - "es": "es_ES", - "et": "et_EE", - "eu": "eu_ES", - "fa": "fa_IR", - "fi": "fi_FI", - "fil": "tl_PH", - "fr": "fr_FR", - "ga": "ga_IE", - "gd": "gd_GB", - "gl": "gl_ES", - "he": "he_IL", - "hi": "hi_IN", - "hr": "hr_HR", - "hu": "hu_HU", - "hy": "hy_AM", - "id": "id_ID", - "is": "is_IS", - "it": "it_IT", - "ja": "ja_JP", - "kab": "kab_DZ", - "kn": "kn_IN", - "ko": "ko_KR", - "ku": "ku", - "kw": "kw_GB", - "lt": "lt_LT", - "lv": "lv_LV", - "ml": "ml_IN", - "mr": "mr_IN", - "ms": "ms_MY", - "nb": "nb_NO", - "nl": "nl_NL", - "nn": "nn_NO", - "pl": "pl_PL", - "pt": "pt_PT", - "ro": "ro_RO", - "ru": "ru_RU", - "sc": "sc_IT", - "si": "si_LK", - "sk": "sk_SK", - "sl": "sl_SI", - "sq": "sq_AL", - "sr_Cyrl": "sr_RS", - "sv": "sv_SE", - "ta": "ta_IN", - "te": "te_IN", - "th": "th_TH", - "tr": "tr_TR", - "uk": "uk_UA", - "ur": "ur_PK", - "vi": "vi_VN", - "zh_Hans": "zh_CN", - "zh_Hant": "zh_TW" - }, - "regions": { - "ar-SA": "xa-ar", - "bg-BG": "bg-bg", - "ca-ES": "es-ca", - "cs-CZ": "cz-cs", - "da-DK": "dk-da", - "de-AT": "at-de", - "de-CH": "ch-de", - "de-DE": "de-de", - "el-GR": "gr-el", - "en-AU": "au-en", - "en-CA": "ca-en", - "en-GB": "uk-en", - "en-IE": "ie-en", - "en-IL": "il-en", - "en-IN": "in-en", - "en-MY": "my-en", - "en-NZ": "nz-en", - "en-PH": "ph-en", - "en-PK": "pk-en", - "en-SG": "sg-en", - "en-US": "us-en", - "en-ZA": "za-en", - "es-AR": "ar-es", - "es-CL": "cl-es", - "es-CO": "co-es", - "es-ES": "es-es", - "es-MX": "mx-es", - "es-PE": "pe-es", - "es-US": "us-es", - "et-EE": "ee-et", - "fi-FI": "fi-fi", - "fr-BE": "be-fr", - "fr-CA": "ca-fr", - "fr-CH": "ch-fr", - "fr-FR": "fr-fr", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "id-ID": "id-en", - "it-IT": "it-it", - "ja-JP": "jp-jp", - "ko-KR": "kr-kr", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "nb-NO": "no-no", - "nl-BE": "be-nl", - "nl-NL": "nl-nl", - "pl-PL": "pl-pl", - "pt-BR": "br-pt", - "pt-PT": "pt-pt", - "ro-RO": "ro-ro", - "ru-RU": "ru-ru", - "sk-SK": "sk-sk", - "sl-SI": "sl-sl", - "sv-SE": "se-sv", - "th-TH": "th-en", - "tr-TR": "tr-tr", - "uk-UA": "ua-uk", - "vi-VN": "vn-en", - "zh-CN": "cn-zh", - "zh-HK": "hk-tzh", - "zh-TW": "tw-tzh" - } - }, - "duckduckgo videos": { - "all_locale": "wt-wt", - "custom": { - "lang_region": { - "ar-DZ": "ar_DZ", - "ar-JO": "ar_JO", - "ar-SA": "ar_SA", - "bn-IN": "bn_IN", - "de-CH": "de_CH", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-CO": "es_CO", - "es-CR": "es_CR", - "es-EC": "es_EC", - "es-MX": "es_MX", - "es-PE": "es_PE", - "es-UY": "es_UY", - "es-VE": "es_VE", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "nl-BE": "nl_BE", - "pt-BR": "pt_BR" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "af_ZA", - "ar": "ar_EG", - "ast": "ast_ES", - "az_Latn": "az_AZ", - "be": "be_BY", - "bg": "bg_BG", - "bn": "bn_BD", - "br": "br_FR", - "bs_Latn": "bs_BA", - "ca": "ca_ES", - "cs": "cs_CZ", - "cy": "cy_GB", - "da": "da_DK", - "de": "de_DE", - "el": "el_GR", - "en": "en_US", - "eo": "eo_XX", - "es": "es_ES", - "et": "et_EE", - "eu": "eu_ES", - "fa": "fa_IR", - "fi": "fi_FI", - "fil": "tl_PH", - "fr": "fr_FR", - "ga": "ga_IE", - "gd": "gd_GB", - "gl": "gl_ES", - "he": "he_IL", - "hi": "hi_IN", - "hr": "hr_HR", - "hu": "hu_HU", - "hy": "hy_AM", - "id": "id_ID", - "is": "is_IS", - "it": "it_IT", - "ja": "ja_JP", - "kab": "kab_DZ", - "kn": "kn_IN", - "ko": "ko_KR", - "ku": "ku", - "kw": "kw_GB", - "lt": "lt_LT", - "lv": "lv_LV", - "ml": "ml_IN", - "mr": "mr_IN", - "ms": "ms_MY", - "nb": "nb_NO", - "nl": "nl_NL", - "nn": "nn_NO", - "pl": "pl_PL", - "pt": "pt_PT", - "ro": "ro_RO", - "ru": "ru_RU", - "sc": "sc_IT", - "si": "si_LK", - "sk": "sk_SK", - "sl": "sl_SI", - "sq": "sq_AL", - "sr_Cyrl": "sr_RS", - "sv": "sv_SE", - "ta": "ta_IN", - "te": "te_IN", - "th": "th_TH", - "tr": "tr_TR", - "uk": "uk_UA", - "ur": "ur_PK", - "vi": "vi_VN", - "zh_Hans": "zh_CN", - "zh_Hant": "zh_TW" - }, - "regions": { - "ar-SA": "xa-ar", - "bg-BG": "bg-bg", - "ca-ES": "es-ca", - "cs-CZ": "cz-cs", - "da-DK": "dk-da", - "de-AT": "at-de", - "de-CH": "ch-de", - "de-DE": "de-de", - "el-GR": "gr-el", - "en-AU": "au-en", - "en-CA": "ca-en", - "en-GB": "uk-en", - "en-IE": "ie-en", - "en-IL": "il-en", - "en-IN": "in-en", - "en-MY": "my-en", - "en-NZ": "nz-en", - "en-PH": "ph-en", - "en-PK": "pk-en", - "en-SG": "sg-en", - "en-US": "us-en", - "en-ZA": "za-en", - "es-AR": "ar-es", - "es-CL": "cl-es", - "es-CO": "co-es", - "es-ES": "es-es", - "es-MX": "mx-es", - "es-PE": "pe-es", - "es-US": "us-es", - "et-EE": "ee-et", - "fi-FI": "fi-fi", - "fr-BE": "be-fr", - "fr-CA": "ca-fr", - "fr-CH": "ch-fr", - "fr-FR": "fr-fr", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "id-ID": "id-en", - "it-IT": "it-it", - "ja-JP": "jp-jp", - "ko-KR": "kr-kr", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "nb-NO": "no-no", - "nl-BE": "be-nl", - "nl-NL": "nl-nl", - "pl-PL": "pl-pl", - "pt-BR": "br-pt", - "pt-PT": "pt-pt", - "ro-RO": "ro-ro", - "ru-RU": "ru-ru", - "sk-SK": "sk-sk", - "sl-SI": "sl-sl", - "sv-SE": "se-sv", - "th-TH": "th-en", - "tr-TR": "tr-tr", - "uk-UA": "ua-uk", - "vi-VN": "vn-en", - "zh-CN": "cn-zh", - "zh-HK": "hk-tzh", - "zh-TW": "tw-tzh" - } - }, - "duckduckgo weather": { - "all_locale": "wt-wt", - "custom": { - "lang_region": { - "ar-DZ": "ar_DZ", - "ar-JO": "ar_JO", - "ar-SA": "ar_SA", - "bn-IN": "bn_IN", - "de-CH": "de_CH", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-CO": "es_CO", - "es-CR": "es_CR", - "es-EC": "es_EC", - "es-MX": "es_MX", - "es-PE": "es_PE", - "es-UY": "es_UY", - "es-VE": "es_VE", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "nl-BE": "nl_BE", - "pt-BR": "pt_BR" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "af_ZA", - "ar": "ar_EG", - "ast": "ast_ES", - "az_Latn": "az_AZ", - "be": "be_BY", - "bg": "bg_BG", - "bn": "bn_BD", - "br": "br_FR", - "bs_Latn": "bs_BA", - "ca": "ca_ES", - "cs": "cs_CZ", - "cy": "cy_GB", - "da": "da_DK", - "de": "de_DE", - "el": "el_GR", - "en": "en_US", - "eo": "eo_XX", - "es": "es_ES", - "et": "et_EE", - "eu": "eu_ES", - "fa": "fa_IR", - "fi": "fi_FI", - "fil": "tl_PH", - "fr": "fr_FR", - "ga": "ga_IE", - "gd": "gd_GB", - "gl": "gl_ES", - "he": "he_IL", - "hi": "hi_IN", - "hr": "hr_HR", - "hu": "hu_HU", - "hy": "hy_AM", - "id": "id_ID", - "is": "is_IS", - "it": "it_IT", - "ja": "ja_JP", - "kab": "kab_DZ", - "kn": "kn_IN", - "ko": "ko_KR", - "ku": "ku", - "kw": "kw_GB", - "lt": "lt_LT", - "lv": "lv_LV", - "ml": "ml_IN", - "mr": "mr_IN", - "ms": "ms_MY", - "nb": "nb_NO", - "nl": "nl_NL", - "nn": "nn_NO", - "pl": "pl_PL", - "pt": "pt_PT", - "ro": "ro_RO", - "ru": "ru_RU", - "sc": "sc_IT", - "si": "si_LK", - "sk": "sk_SK", - "sl": "sl_SI", - "sq": "sq_AL", - "sr_Cyrl": "sr_RS", - "sv": "sv_SE", - "ta": "ta_IN", - "te": "te_IN", - "th": "th_TH", - "tr": "tr_TR", - "uk": "uk_UA", - "ur": "ur_PK", - "vi": "vi_VN", - "zh_Hans": "zh_CN", - "zh_Hant": "zh_TW" - }, - "regions": { - "ar-SA": "xa-ar", - "bg-BG": "bg-bg", - "ca-ES": "es-ca", - "cs-CZ": "cz-cs", - "da-DK": "dk-da", - "de-AT": "at-de", - "de-CH": "ch-de", - "de-DE": "de-de", - "el-GR": "gr-el", - "en-AU": "au-en", - "en-CA": "ca-en", - "en-GB": "uk-en", - "en-IE": "ie-en", - "en-IL": "il-en", - "en-IN": "in-en", - "en-MY": "my-en", - "en-NZ": "nz-en", - "en-PH": "ph-en", - "en-PK": "pk-en", - "en-SG": "sg-en", - "en-US": "us-en", - "en-ZA": "za-en", - "es-AR": "ar-es", - "es-CL": "cl-es", - "es-CO": "co-es", - "es-ES": "es-es", - "es-MX": "mx-es", - "es-PE": "pe-es", - "es-US": "us-es", - "et-EE": "ee-et", - "fi-FI": "fi-fi", - "fr-BE": "be-fr", - "fr-CA": "ca-fr", - "fr-CH": "ch-fr", - "fr-FR": "fr-fr", - "hr-HR": "hr-hr", - "hu-HU": "hu-hu", - "id-ID": "id-en", - "it-IT": "it-it", - "ja-JP": "jp-jp", - "ko-KR": "kr-kr", - "lt-LT": "lt-lt", - "lv-LV": "lv-lv", - "nb-NO": "no-no", - "nl-BE": "be-nl", - "nl-NL": "nl-nl", - "pl-PL": "pl-pl", - "pt-BR": "br-pt", - "pt-PT": "pt-pt", - "ro-RO": "ro-ro", - "ru-RU": "ru-ru", - "sk-SK": "sk-sk", - "sl-SI": "sl-sl", - "sv-SE": "se-sv", - "th-TH": "th-en", - "tr-TR": "tr-tr", - "uk-UA": "ua-uk", - "vi-VN": "vn-en", - "zh-CN": "cn-zh", - "zh-HK": "hk-tzh", - "zh-TW": "tw-tzh" - } - }, - "google": { - "all_locale": "ZZ", - "custom": { - "supported_domains": { - "AD": "www.google.ad", - "AE": "www.google.ae", - "AF": "www.google.com.af", - "AG": "www.google.com.ag", - "AL": "www.google.al", - "AM": "www.google.am", - "AO": "www.google.co.ao", - "AR": "www.google.com.ar", - "AS": "www.google.as", - "AT": "www.google.at", - "AU": "www.google.com.au", - "AZ": "www.google.az", - "BA": "www.google.ba", - "BD": "www.google.com.bd", - "BE": "www.google.be", - "BF": "www.google.bf", - "BG": "www.google.bg", - "BH": "www.google.com.bh", - "BI": "www.google.bi", - "BJ": "www.google.bj", - "BN": "www.google.com.bn", - "BO": "www.google.com.bo", - "BR": "www.google.com.br", - "BS": "www.google.bs", - "BT": "www.google.bt", - "BW": "www.google.co.bw", - "BY": "www.google.by", - "BZ": "www.google.com.bz", - "CA": "www.google.ca", - "CAT": "www.google.cat", - "CD": "www.google.cd", - "CF": "www.google.cf", - "CG": "www.google.cg", - "CH": "www.google.ch", - "CI": "www.google.ci", - "CK": "www.google.co.ck", - "CL": "www.google.cl", - "CM": "www.google.cm", - "CN": "www.google.com.hk", - "CO": "www.google.com.co", - "CR": "www.google.co.cr", - "CU": "www.google.com.cu", - "CV": "www.google.cv", - "CY": "www.google.com.cy", - "CZ": "www.google.cz", - "DE": "www.google.de", - "DJ": "www.google.dj", - "DK": "www.google.dk", - "DM": "www.google.dm", - "DO": "www.google.com.do", - "DZ": "www.google.dz", - "EC": "www.google.com.ec", - "EE": "www.google.ee", - "EG": "www.google.com.eg", - "ES": "www.google.es", - "ET": "www.google.com.et", - "FI": "www.google.fi", - "FJ": "www.google.com.fj", - "FM": "www.google.fm", - "FR": "www.google.fr", - "GA": "www.google.ga", - "GE": "www.google.ge", - "GG": "www.google.gg", - "GH": "www.google.com.gh", - "GI": "www.google.com.gi", - "GL": "www.google.gl", - "GM": "www.google.gm", - "GR": "www.google.gr", - "GT": "www.google.com.gt", - "GY": "www.google.gy", - "HK": "www.google.com.hk", - "HN": "www.google.hn", - "HR": "www.google.hr", - "HT": "www.google.ht", - "HU": "www.google.hu", - "ID": "www.google.co.id", - "IE": "www.google.ie", - "IL": "www.google.co.il", - "IM": "www.google.im", - "IN": "www.google.co.in", - "IQ": "www.google.iq", - "IS": "www.google.is", - "IT": "www.google.it", - "JE": "www.google.je", - "JM": "www.google.com.jm", - "JO": "www.google.jo", - "JP": "www.google.co.jp", - "KE": "www.google.co.ke", - "KG": "www.google.kg", - "KH": "www.google.com.kh", - "KI": "www.google.ki", - "KR": "www.google.co.kr", - "KW": "www.google.com.kw", - "KZ": "www.google.kz", - "LA": "www.google.la", - "LB": "www.google.com.lb", - "LI": "www.google.li", - "LK": "www.google.lk", - "LS": "www.google.co.ls", - "LT": "www.google.lt", - "LU": "www.google.lu", - "LV": "www.google.lv", - "LY": "www.google.com.ly", - "MA": "www.google.co.ma", - "MD": "www.google.md", - "ME": "www.google.me", - "MG": "www.google.mg", - "MK": "www.google.mk", - "ML": "www.google.ml", - "MM": "www.google.com.mm", - "MN": "www.google.mn", - "MT": "www.google.com.mt", - "MU": "www.google.mu", - "MV": "www.google.mv", - "MW": "www.google.mw", - "MX": "www.google.com.mx", - "MY": "www.google.com.my", - "MZ": "www.google.co.mz", - "NA": "www.google.com.na", - "NE": "www.google.ne", - "NG": "www.google.com.ng", - "NI": "www.google.com.ni", - "NL": "www.google.nl", - "NO": "www.google.no", - "NP": "www.google.com.np", - "NR": "www.google.nr", - "NU": "www.google.nu", - "NZ": "www.google.co.nz", - "OM": "www.google.com.om", - "PA": "www.google.com.pa", - "PE": "www.google.com.pe", - "PG": "www.google.com.pg", - "PH": "www.google.com.ph", - "PK": "www.google.com.pk", - "PL": "www.google.pl", - "PN": "www.google.pn", - "PR": "www.google.com.pr", - "PS": "www.google.ps", - "PT": "www.google.pt", - "PY": "www.google.com.py", - "QA": "www.google.com.qa", - "RO": "www.google.ro", - "RS": "www.google.rs", - "RU": "www.google.ru", - "RW": "www.google.rw", - "SA": "www.google.com.sa", - "SB": "www.google.com.sb", - "SC": "www.google.sc", - "SE": "www.google.se", - "SG": "www.google.com.sg", - "SH": "www.google.sh", - "SI": "www.google.si", - "SK": "www.google.sk", - "SL": "www.google.com.sl", - "SM": "www.google.sm", - "SN": "www.google.sn", - "SO": "www.google.so", - "SR": "www.google.sr", - "ST": "www.google.st", - "SV": "www.google.com.sv", - "TD": "www.google.td", - "TG": "www.google.tg", - "TH": "www.google.co.th", - "TJ": "www.google.com.tj", - "TL": "www.google.tl", - "TM": "www.google.tm", - "TN": "www.google.tn", - "TO": "www.google.to", - "TR": "www.google.com.tr", - "TT": "www.google.tt", - "TW": "www.google.com.tw", - "TZ": "www.google.co.tz", - "UA": "www.google.com.ua", - "UG": "www.google.co.ug", - "UK": "www.google.co.uk", - "UY": "www.google.com.uy", - "UZ": "www.google.co.uz", - "VC": "www.google.com.vc", - "VE": "www.google.co.ve", - "VI": "www.google.co.vi", - "VN": "www.google.com.vn", - "VU": "www.google.vu", - "WS": "www.google.ws", - "ZA": "www.google.co.za", - "ZM": "www.google.co.zm", - "ZW": "www.google.co.zw" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "lang_af", - "ar": "lang_ar", - "be": "lang_be", - "bg": "lang_bg", - "ca": "lang_ca", - "cs": "lang_cs", - "da": "lang_da", - "de": "lang_de", - "el": "lang_el", - "en": "lang_en", - "eo": "lang_eo", - "es": "lang_es", - "et": "lang_et", - "fa": "lang_fa", - "fi": "lang_fi", - "fil": "lang_tl", - "fr": "lang_fr", - "he": "lang_iw", - "hi": "lang_hi", - "hr": "lang_hr", - "hu": "lang_hu", - "hy": "lang_hy", - "id": "lang_id", - "is": "lang_is", - "it": "lang_it", - "ja": "lang_ja", - "ko": "lang_ko", - "lt": "lang_lt", - "lv": "lang_lv", - "nb": "lang_no", - "nl": "lang_nl", - "pl": "lang_pl", - "pt": "lang_pt", - "ro": "lang_ro", - "ru": "lang_ru", - "sk": "lang_sk", - "sl": "lang_sl", - "sr": "lang_sr", - "sv": "lang_sv", - "sw": "lang_sw", - "th": "lang_th", - "tr": "lang_tr", - "uk": "lang_uk", - "vi": "lang_vi", - "zh": "lang_zh-CN", - "zh_Hans": "lang_zh-CN", - "zh_Hant": "lang_zh-TW" - }, - "regions": { - "af-ZA": "ZA", - "ar-AE": "AE", - "ar-BH": "BH", - "ar-DJ": "DJ", - "ar-DZ": "DZ", - "ar-EG": "EG", - "ar-IL": "IL", - "ar-IQ": "IQ", - "ar-JO": "JO", - "ar-KW": "KW", - "ar-LB": "LB", - "ar-LY": "LY", - "ar-MA": "MA", - "ar-OM": "OM", - "ar-PS": "PS", - "ar-QA": "QA", - "ar-SA": "SA", - "ar-SO": "SO", - "ar-TD": "TD", - "ar-TN": "TN", - "be-BY": "BY", - "bg-BG": "BG", - "ca-AD": "AD", - "ca-ES": "ES", - "cs-CZ": "CZ", - "da-DK": "DK", - "de-AT": "AT", - "de-BE": "BE", - "de-CH": "CH", - "de-DE": "DE", - "de-LI": "LI", - "de-LU": "LU", - "el-CY": "CY", - "el-GR": "GR", - "en-AG": "AG", - "en-AS": "AS", - "en-AU": "AU", - "en-BI": "BI", - "en-BS": "BS", - "en-BW": "BW", - "en-BZ": "BZ", - "en-CA": "CA", - "en-CK": "CK", - "en-CM": "CM", - "en-DM": "DM", - "en-FJ": "FJ", - "en-FM": "FM", - "en-GB": "GB", - "en-GG": "GG", - "en-GH": "GH", - "en-GI": "GI", - "en-GM": "GM", - "en-GY": "GY", - "en-HK": "HK", - "en-IE": "IE", - "en-IM": "IM", - "en-IN": "IN", - "en-JE": "JE", - "en-JM": "JM", - "en-KE": "KE", - "en-KI": "KI", - "en-LS": "LS", - "en-MG": "MG", - "en-MT": "MT", - "en-MU": "MU", - "en-MW": "MW", - "en-NA": "NA", - "en-NG": "NG", - "en-NR": "NR", - "en-NU": "NU", - "en-NZ": "NZ", - "en-PG": "PG", - "en-PH": "PH", - "en-PK": "PK", - "en-PN": "PN", - "en-PR": "PR", - "en-RW": "RW", - "en-SB": "SB", - "en-SC": "SC", - "en-SG": "SG", - "en-SH": "SH", - "en-SL": "SL", - "en-TO": "TO", - "en-TT": "TT", - "en-TZ": "TZ", - "en-UG": "UG", - "en-US": "US", - "en-VC": "VC", - "en-VI": "VI", - "en-VU": "VU", - "en-WS": "WS", - "en-ZA": "ZA", - "en-ZM": "ZM", - "en-ZW": "ZW", - "es-AR": "AR", - "es-BO": "BO", - "es-CL": "CL", - "es-CO": "CO", - "es-CR": "CR", - "es-CU": "CU", - "es-DO": "DO", - "es-EC": "EC", - "es-ES": "ES", - "es-GT": "GT", - "es-HN": "HN", - "es-MX": "MX", - "es-NI": "NI", - "es-PA": "PA", - "es-PE": "PE", - "es-PR": "PR", - "es-PY": "PY", - "es-SV": "SV", - "es-US": "US", - "es-UY": "UY", - "es-VE": "VE", - "et-EE": "EE", - "fa-AF": "AF", - "fi-FI": "FI", - "fil-PH": "PH", - "fr-BE": "BE", - "fr-BF": "BF", - "fr-BI": "BI", - "fr-BJ": "BJ", - "fr-CA": "CA", - "fr-CD": "CD", - "fr-CF": "CF", - "fr-CG": "CG", - "fr-CH": "CH", - "fr-CI": "CI", - "fr-CM": "CM", - "fr-DJ": "DJ", - "fr-DZ": "DZ", - "fr-FR": "FR", - "fr-GA": "GA", - "fr-HT": "HT", - "fr-LU": "LU", - "fr-MA": "MA", - "fr-MG": "MG", - "fr-ML": "ML", - "fr-MU": "MU", - "fr-NE": "NE", - "fr-RW": "RW", - "fr-SC": "SC", - "fr-SN": "SN", - "fr-TD": "TD", - "fr-TG": "TG", - "fr-TN": "TN", - "fr-VU": "VU", - "he-IL": "IL", - "hi-IN": "IN", - "hr-BA": "BA", - "hr-HR": "HR", - "hu-HU": "HU", - "hy-AM": "AM", - "id-ID": "ID", - "is-IS": "IS", - "it-CH": "CH", - "it-IT": "IT", - "it-SM": "SM", - "ja-JP": "JP", - "ko-KR": "KR", - "lt-LT": "LT", - "lv-LV": "LV", - "nb-NO": "NO", - "nl-BE": "BE", - "nl-NL": "NL", - "nl-SR": "SR", - "pl-PL": "PL", - "pt-AO": "AO", - "pt-BR": "BR", - "pt-CV": "CV", - "pt-MZ": "MZ", - "pt-PT": "PT", - "pt-ST": "ST", - "pt-TL": "TL", - "ro-MD": "MD", - "ro-RO": "RO", - "ru-BY": "BY", - "ru-KG": "KG", - "ru-KZ": "KZ", - "ru-RU": "RU", - "ru-UA": "UA", - "sk-SK": "SK", - "sl-SI": "SI", - "sr-BA": "BA", - "sr-RS": "RS", - "sv-FI": "FI", - "sv-SE": "SE", - "sw-CD": "CD", - "sw-KE": "KE", - "sw-TZ": "TZ", - "sw-UG": "UG", - "th-TH": "TH", - "tr-CY": "CY", - "tr-TR": "TR", - "uk-UA": "UA", - "vi-VN": "VN", - "zh-CN": "HK", - "zh-HK": "HK", - "zh-SG": "SG", - "zh-TW": "TW" - } - }, - "google images": { - "all_locale": "ZZ", - "custom": { - "supported_domains": { - "AD": "www.google.ad", - "AE": "www.google.ae", - "AF": "www.google.com.af", - "AG": "www.google.com.ag", - "AL": "www.google.al", - "AM": "www.google.am", - "AO": "www.google.co.ao", - "AR": "www.google.com.ar", - "AS": "www.google.as", - "AT": "www.google.at", - "AU": "www.google.com.au", - "AZ": "www.google.az", - "BA": "www.google.ba", - "BD": "www.google.com.bd", - "BE": "www.google.be", - "BF": "www.google.bf", - "BG": "www.google.bg", - "BH": "www.google.com.bh", - "BI": "www.google.bi", - "BJ": "www.google.bj", - "BN": "www.google.com.bn", - "BO": "www.google.com.bo", - "BR": "www.google.com.br", - "BS": "www.google.bs", - "BT": "www.google.bt", - "BW": "www.google.co.bw", - "BY": "www.google.by", - "BZ": "www.google.com.bz", - "CA": "www.google.ca", - "CAT": "www.google.cat", - "CD": "www.google.cd", - "CF": "www.google.cf", - "CG": "www.google.cg", - "CH": "www.google.ch", - "CI": "www.google.ci", - "CK": "www.google.co.ck", - "CL": "www.google.cl", - "CM": "www.google.cm", - "CN": "www.google.com.hk", - "CO": "www.google.com.co", - "CR": "www.google.co.cr", - "CU": "www.google.com.cu", - "CV": "www.google.cv", - "CY": "www.google.com.cy", - "CZ": "www.google.cz", - "DE": "www.google.de", - "DJ": "www.google.dj", - "DK": "www.google.dk", - "DM": "www.google.dm", - "DO": "www.google.com.do", - "DZ": "www.google.dz", - "EC": "www.google.com.ec", - "EE": "www.google.ee", - "EG": "www.google.com.eg", - "ES": "www.google.es", - "ET": "www.google.com.et", - "FI": "www.google.fi", - "FJ": "www.google.com.fj", - "FM": "www.google.fm", - "FR": "www.google.fr", - "GA": "www.google.ga", - "GE": "www.google.ge", - "GG": "www.google.gg", - "GH": "www.google.com.gh", - "GI": "www.google.com.gi", - "GL": "www.google.gl", - "GM": "www.google.gm", - "GR": "www.google.gr", - "GT": "www.google.com.gt", - "GY": "www.google.gy", - "HK": "www.google.com.hk", - "HN": "www.google.hn", - "HR": "www.google.hr", - "HT": "www.google.ht", - "HU": "www.google.hu", - "ID": "www.google.co.id", - "IE": "www.google.ie", - "IL": "www.google.co.il", - "IM": "www.google.im", - "IN": "www.google.co.in", - "IQ": "www.google.iq", - "IS": "www.google.is", - "IT": "www.google.it", - "JE": "www.google.je", - "JM": "www.google.com.jm", - "JO": "www.google.jo", - "JP": "www.google.co.jp", - "KE": "www.google.co.ke", - "KG": "www.google.kg", - "KH": "www.google.com.kh", - "KI": "www.google.ki", - "KR": "www.google.co.kr", - "KW": "www.google.com.kw", - "KZ": "www.google.kz", - "LA": "www.google.la", - "LB": "www.google.com.lb", - "LI": "www.google.li", - "LK": "www.google.lk", - "LS": "www.google.co.ls", - "LT": "www.google.lt", - "LU": "www.google.lu", - "LV": "www.google.lv", - "LY": "www.google.com.ly", - "MA": "www.google.co.ma", - "MD": "www.google.md", - "ME": "www.google.me", - "MG": "www.google.mg", - "MK": "www.google.mk", - "ML": "www.google.ml", - "MM": "www.google.com.mm", - "MN": "www.google.mn", - "MT": "www.google.com.mt", - "MU": "www.google.mu", - "MV": "www.google.mv", - "MW": "www.google.mw", - "MX": "www.google.com.mx", - "MY": "www.google.com.my", - "MZ": "www.google.co.mz", - "NA": "www.google.com.na", - "NE": "www.google.ne", - "NG": "www.google.com.ng", - "NI": "www.google.com.ni", - "NL": "www.google.nl", - "NO": "www.google.no", - "NP": "www.google.com.np", - "NR": "www.google.nr", - "NU": "www.google.nu", - "NZ": "www.google.co.nz", - "OM": "www.google.com.om", - "PA": "www.google.com.pa", - "PE": "www.google.com.pe", - "PG": "www.google.com.pg", - "PH": "www.google.com.ph", - "PK": "www.google.com.pk", - "PL": "www.google.pl", - "PN": "www.google.pn", - "PR": "www.google.com.pr", - "PS": "www.google.ps", - "PT": "www.google.pt", - "PY": "www.google.com.py", - "QA": "www.google.com.qa", - "RO": "www.google.ro", - "RS": "www.google.rs", - "RU": "www.google.ru", - "RW": "www.google.rw", - "SA": "www.google.com.sa", - "SB": "www.google.com.sb", - "SC": "www.google.sc", - "SE": "www.google.se", - "SG": "www.google.com.sg", - "SH": "www.google.sh", - "SI": "www.google.si", - "SK": "www.google.sk", - "SL": "www.google.com.sl", - "SM": "www.google.sm", - "SN": "www.google.sn", - "SO": "www.google.so", - "SR": "www.google.sr", - "ST": "www.google.st", - "SV": "www.google.com.sv", - "TD": "www.google.td", - "TG": "www.google.tg", - "TH": "www.google.co.th", - "TJ": "www.google.com.tj", - "TL": "www.google.tl", - "TM": "www.google.tm", - "TN": "www.google.tn", - "TO": "www.google.to", - "TR": "www.google.com.tr", - "TT": "www.google.tt", - "TW": "www.google.com.tw", - "TZ": "www.google.co.tz", - "UA": "www.google.com.ua", - "UG": "www.google.co.ug", - "UK": "www.google.co.uk", - "UY": "www.google.com.uy", - "UZ": "www.google.co.uz", - "VC": "www.google.com.vc", - "VE": "www.google.co.ve", - "VI": "www.google.co.vi", - "VN": "www.google.com.vn", - "VU": "www.google.vu", - "WS": "www.google.ws", - "ZA": "www.google.co.za", - "ZM": "www.google.co.zm", - "ZW": "www.google.co.zw" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "lang_af", - "ar": "lang_ar", - "be": "lang_be", - "bg": "lang_bg", - "ca": "lang_ca", - "cs": "lang_cs", - "da": "lang_da", - "de": "lang_de", - "el": "lang_el", - "en": "lang_en", - "eo": "lang_eo", - "es": "lang_es", - "et": "lang_et", - "fa": "lang_fa", - "fi": "lang_fi", - "fil": "lang_tl", - "fr": "lang_fr", - "he": "lang_iw", - "hi": "lang_hi", - "hr": "lang_hr", - "hu": "lang_hu", - "hy": "lang_hy", - "id": "lang_id", - "is": "lang_is", - "it": "lang_it", - "ja": "lang_ja", - "ko": "lang_ko", - "lt": "lang_lt", - "lv": "lang_lv", - "nb": "lang_no", - "nl": "lang_nl", - "pl": "lang_pl", - "pt": "lang_pt", - "ro": "lang_ro", - "ru": "lang_ru", - "sk": "lang_sk", - "sl": "lang_sl", - "sr": "lang_sr", - "sv": "lang_sv", - "sw": "lang_sw", - "th": "lang_th", - "tr": "lang_tr", - "uk": "lang_uk", - "vi": "lang_vi", - "zh": "lang_zh-CN", - "zh_Hans": "lang_zh-CN", - "zh_Hant": "lang_zh-TW" - }, - "regions": { - "af-ZA": "ZA", - "ar-AE": "AE", - "ar-BH": "BH", - "ar-DJ": "DJ", - "ar-DZ": "DZ", - "ar-EG": "EG", - "ar-IL": "IL", - "ar-IQ": "IQ", - "ar-JO": "JO", - "ar-KW": "KW", - "ar-LB": "LB", - "ar-LY": "LY", - "ar-MA": "MA", - "ar-OM": "OM", - "ar-PS": "PS", - "ar-QA": "QA", - "ar-SA": "SA", - "ar-SO": "SO", - "ar-TD": "TD", - "ar-TN": "TN", - "be-BY": "BY", - "bg-BG": "BG", - "ca-AD": "AD", - "ca-ES": "ES", - "cs-CZ": "CZ", - "da-DK": "DK", - "de-AT": "AT", - "de-BE": "BE", - "de-CH": "CH", - "de-DE": "DE", - "de-LI": "LI", - "de-LU": "LU", - "el-CY": "CY", - "el-GR": "GR", - "en-AG": "AG", - "en-AS": "AS", - "en-AU": "AU", - "en-BI": "BI", - "en-BS": "BS", - "en-BW": "BW", - "en-BZ": "BZ", - "en-CA": "CA", - "en-CK": "CK", - "en-CM": "CM", - "en-DM": "DM", - "en-FJ": "FJ", - "en-FM": "FM", - "en-GB": "GB", - "en-GG": "GG", - "en-GH": "GH", - "en-GI": "GI", - "en-GM": "GM", - "en-GY": "GY", - "en-HK": "HK", - "en-IE": "IE", - "en-IM": "IM", - "en-IN": "IN", - "en-JE": "JE", - "en-JM": "JM", - "en-KE": "KE", - "en-KI": "KI", - "en-LS": "LS", - "en-MG": "MG", - "en-MT": "MT", - "en-MU": "MU", - "en-MW": "MW", - "en-NA": "NA", - "en-NG": "NG", - "en-NR": "NR", - "en-NU": "NU", - "en-NZ": "NZ", - "en-PG": "PG", - "en-PH": "PH", - "en-PK": "PK", - "en-PN": "PN", - "en-PR": "PR", - "en-RW": "RW", - "en-SB": "SB", - "en-SC": "SC", - "en-SG": "SG", - "en-SH": "SH", - "en-SL": "SL", - "en-TO": "TO", - "en-TT": "TT", - "en-TZ": "TZ", - "en-UG": "UG", - "en-US": "US", - "en-VC": "VC", - "en-VI": "VI", - "en-VU": "VU", - "en-WS": "WS", - "en-ZA": "ZA", - "en-ZM": "ZM", - "en-ZW": "ZW", - "es-AR": "AR", - "es-BO": "BO", - "es-CL": "CL", - "es-CO": "CO", - "es-CR": "CR", - "es-CU": "CU", - "es-DO": "DO", - "es-EC": "EC", - "es-ES": "ES", - "es-GT": "GT", - "es-HN": "HN", - "es-MX": "MX", - "es-NI": "NI", - "es-PA": "PA", - "es-PE": "PE", - "es-PR": "PR", - "es-PY": "PY", - "es-SV": "SV", - "es-US": "US", - "es-UY": "UY", - "es-VE": "VE", - "et-EE": "EE", - "fa-AF": "AF", - "fi-FI": "FI", - "fil-PH": "PH", - "fr-BE": "BE", - "fr-BF": "BF", - "fr-BI": "BI", - "fr-BJ": "BJ", - "fr-CA": "CA", - "fr-CD": "CD", - "fr-CF": "CF", - "fr-CG": "CG", - "fr-CH": "CH", - "fr-CI": "CI", - "fr-CM": "CM", - "fr-DJ": "DJ", - "fr-DZ": "DZ", - "fr-FR": "FR", - "fr-GA": "GA", - "fr-HT": "HT", - "fr-LU": "LU", - "fr-MA": "MA", - "fr-MG": "MG", - "fr-ML": "ML", - "fr-MU": "MU", - "fr-NE": "NE", - "fr-RW": "RW", - "fr-SC": "SC", - "fr-SN": "SN", - "fr-TD": "TD", - "fr-TG": "TG", - "fr-TN": "TN", - "fr-VU": "VU", - "he-IL": "IL", - "hi-IN": "IN", - "hr-BA": "BA", - "hr-HR": "HR", - "hu-HU": "HU", - "hy-AM": "AM", - "id-ID": "ID", - "is-IS": "IS", - "it-CH": "CH", - "it-IT": "IT", - "it-SM": "SM", - "ja-JP": "JP", - "ko-KR": "KR", - "lt-LT": "LT", - "lv-LV": "LV", - "nb-NO": "NO", - "nl-BE": "BE", - "nl-NL": "NL", - "nl-SR": "SR", - "pl-PL": "PL", - "pt-AO": "AO", - "pt-BR": "BR", - "pt-CV": "CV", - "pt-MZ": "MZ", - "pt-PT": "PT", - "pt-ST": "ST", - "pt-TL": "TL", - "ro-MD": "MD", - "ro-RO": "RO", - "ru-BY": "BY", - "ru-KG": "KG", - "ru-KZ": "KZ", - "ru-RU": "RU", - "ru-UA": "UA", - "sk-SK": "SK", - "sl-SI": "SI", - "sr-BA": "BA", - "sr-RS": "RS", - "sv-FI": "FI", - "sv-SE": "SE", - "sw-CD": "CD", - "sw-KE": "KE", - "sw-TZ": "TZ", - "sw-UG": "UG", - "th-TH": "TH", - "tr-CY": "CY", - "tr-TR": "TR", - "uk-UA": "UA", - "vi-VN": "VN", - "zh-CN": "HK", - "zh-HK": "HK", - "zh-SG": "SG", - "zh-TW": "TW" - } - }, - "google news": { - "all_locale": "ZZ", - "custom": { - "ceid": { - "ar-AE": "AE:ar", - "ar-EG": "EG:ar", - "ar-LB": "LB:ar", - "ar-SA": "SA:ar", - "bg-BG": "BG:bg", - "bn-BD": "BD:bn", - "bn-IN": "IN:bn", - "cs-CZ": "CZ:cs", - "de-AT": "AT:de", - "de-CH": "CH:de", - "de-DE": "DE:de", - "el-GR": "GR:el", - "en-AU": "AU:en", - "en-BW": "BW:en", - "en-CA": "CA:en", - "en-GB": "GB:en", - "en-GH": "GH:en", - "en-IE": "IE:en", - "en-IL": "IL:en", - "en-IN": "IN:en", - "en-KE": "KE:en", - "en-MY": "MY:en", - "en-NA": "NA:en", - "en-NG": "NG:en", - "en-NZ": "NZ:en", - "en-PH": "PH:en", - "en-PK": "PK:en", - "en-SG": "SG:en", - "en-TZ": "TZ:en", - "en-UG": "UG:en", - "en-US": "US:en", - "en-ZA": "ZA:en", - "en-ZW": "ZW:en", - "es-AR": "AR:es-419", - "es-CL": "CL:es-419", - "es-CO": "CO:es-419", - "es-CU": "CU:es-419", - "es-ES": "ES:es", - "es-MX": "MX:es-419", - "es-PE": "PE:es-419", - "es-US": "US:es-419", - "es-VE": "VE:es-419", - "fr-BE": "BE:fr", - "fr-CA": "CA:fr", - "fr-CH": "CH:fr", - "fr-FR": "FR:fr", - "fr-MA": "MA:fr", - "fr-SN": "SN:fr", - "he-IL": "IL:he", - "hi-IN": "IN:hi", - "hu-HU": "HU:hu", - "id-ID": "ID:id", - "it-IT": "IT:it", - "ja-JP": "JP:ja", - "ko-KR": "KR:ko", - "lt-LT": "LT:lt", - "lv-LV": "LV:lv", - "ml-IN": "IN:ml", - "mr-IN": "IN:mr", - "nb-NO": "NO:no", - "nl-BE": "BE:nl", - "nl-NL": "NL:nl", - "pl-PL": "PL:pl", - "pt-BR": "BR:pt-419", - "pt-PT": "PT:pt-150", - "ro-RO": "RO:ro", - "ru-RU": "RU:ru", - "ru-UA": "UA:ru", - "sk-SK": "SK:sk", - "sl-SI": "SI:sl", - "sr-RS": "RS:sr", - "sv-SE": "SE:sv", - "ta-IN": "IN:ta", - "te-IN": "IN:te", - "th-TH": "TH:th", - "tr-TR": "TR:tr", - "uk-UA": "UA:uk", - "vi-VN": "VN:vi", - "zh-CN": "CN:zh-Hans", - "zh-HK": "HK:zh-Hant", - "zh-TW": "TW:zh-Hant" - }, - "supported_domains": {} - }, - "data_type": "traits_v1", - "languages": { - "af": "lang_af", - "ar": "lang_ar", - "be": "lang_be", - "bg": "lang_bg", - "ca": "lang_ca", - "cs": "lang_cs", - "da": "lang_da", - "de": "lang_de", - "el": "lang_el", - "en": "lang_en", - "eo": "lang_eo", - "es": "lang_es", - "et": "lang_et", - "fa": "lang_fa", - "fi": "lang_fi", - "fil": "lang_tl", - "fr": "lang_fr", - "he": "lang_iw", - "hi": "lang_hi", - "hr": "lang_hr", - "hu": "lang_hu", - "hy": "lang_hy", - "id": "lang_id", - "is": "lang_is", - "it": "lang_it", - "ja": "lang_ja", - "ko": "lang_ko", - "lt": "lang_lt", - "lv": "lang_lv", - "nb": "lang_no", - "nl": "lang_nl", - "pl": "lang_pl", - "pt": "lang_pt", - "ro": "lang_ro", - "ru": "lang_ru", - "sk": "lang_sk", - "sl": "lang_sl", - "sr": "lang_sr", - "sv": "lang_sv", - "sw": "lang_sw", - "th": "lang_th", - "tr": "lang_tr", - "uk": "lang_uk", - "vi": "lang_vi", - "zh": "lang_zh-CN", - "zh_Hans": "lang_zh-CN", - "zh_Hant": "lang_zh-TW" - }, - "regions": { - "af-ZA": "ZA", - "ar-AE": "AE", - "ar-BH": "BH", - "ar-DJ": "DJ", - "ar-DZ": "DZ", - "ar-EG": "EG", - "ar-IL": "IL", - "ar-IQ": "IQ", - "ar-JO": "JO", - "ar-KW": "KW", - "ar-LB": "LB", - "ar-LY": "LY", - "ar-MA": "MA", - "ar-OM": "OM", - "ar-PS": "PS", - "ar-QA": "QA", - "ar-SA": "SA", - "ar-SO": "SO", - "ar-TD": "TD", - "ar-TN": "TN", - "be-BY": "BY", - "bg-BG": "BG", - "ca-AD": "AD", - "ca-ES": "ES", - "cs-CZ": "CZ", - "da-DK": "DK", - "de-AT": "AT", - "de-BE": "BE", - "de-CH": "CH", - "de-DE": "DE", - "de-LI": "LI", - "de-LU": "LU", - "el-CY": "CY", - "el-GR": "GR", - "en-AG": "AG", - "en-AS": "AS", - "en-AU": "AU", - "en-BI": "BI", - "en-BS": "BS", - "en-BW": "BW", - "en-BZ": "BZ", - "en-CA": "CA", - "en-CK": "CK", - "en-CM": "CM", - "en-DM": "DM", - "en-FJ": "FJ", - "en-FM": "FM", - "en-GB": "GB", - "en-GG": "GG", - "en-GH": "GH", - "en-GI": "GI", - "en-GM": "GM", - "en-GY": "GY", - "en-HK": "HK", - "en-IE": "IE", - "en-IM": "IM", - "en-IN": "IN", - "en-JE": "JE", - "en-JM": "JM", - "en-KE": "KE", - "en-KI": "KI", - "en-LS": "LS", - "en-MG": "MG", - "en-MT": "MT", - "en-MU": "MU", - "en-MW": "MW", - "en-NA": "NA", - "en-NG": "NG", - "en-NR": "NR", - "en-NU": "NU", - "en-NZ": "NZ", - "en-PG": "PG", - "en-PH": "PH", - "en-PK": "PK", - "en-PN": "PN", - "en-PR": "PR", - "en-RW": "RW", - "en-SB": "SB", - "en-SC": "SC", - "en-SG": "SG", - "en-SH": "SH", - "en-SL": "SL", - "en-TO": "TO", - "en-TT": "TT", - "en-TZ": "TZ", - "en-UG": "UG", - "en-US": "US", - "en-VC": "VC", - "en-VI": "VI", - "en-VU": "VU", - "en-WS": "WS", - "en-ZA": "ZA", - "en-ZM": "ZM", - "en-ZW": "ZW", - "es-AR": "AR", - "es-BO": "BO", - "es-CL": "CL", - "es-CO": "CO", - "es-CR": "CR", - "es-CU": "CU", - "es-DO": "DO", - "es-EC": "EC", - "es-ES": "ES", - "es-GT": "GT", - "es-HN": "HN", - "es-MX": "MX", - "es-NI": "NI", - "es-PA": "PA", - "es-PE": "PE", - "es-PR": "PR", - "es-PY": "PY", - "es-SV": "SV", - "es-US": "US", - "es-UY": "UY", - "es-VE": "VE", - "et-EE": "EE", - "fa-AF": "AF", - "fi-FI": "FI", - "fil-PH": "PH", - "fr-BE": "BE", - "fr-BF": "BF", - "fr-BI": "BI", - "fr-BJ": "BJ", - "fr-CA": "CA", - "fr-CD": "CD", - "fr-CF": "CF", - "fr-CG": "CG", - "fr-CH": "CH", - "fr-CI": "CI", - "fr-CM": "CM", - "fr-DJ": "DJ", - "fr-DZ": "DZ", - "fr-FR": "FR", - "fr-GA": "GA", - "fr-HT": "HT", - "fr-LU": "LU", - "fr-MA": "MA", - "fr-MG": "MG", - "fr-ML": "ML", - "fr-MU": "MU", - "fr-NE": "NE", - "fr-RW": "RW", - "fr-SC": "SC", - "fr-SN": "SN", - "fr-TD": "TD", - "fr-TG": "TG", - "fr-TN": "TN", - "fr-VU": "VU", - "he-IL": "IL", - "hi-IN": "IN", - "hr-BA": "BA", - "hr-HR": "HR", - "hu-HU": "HU", - "hy-AM": "AM", - "id-ID": "ID", - "is-IS": "IS", - "it-CH": "CH", - "it-IT": "IT", - "it-SM": "SM", - "ja-JP": "JP", - "ko-KR": "KR", - "lt-LT": "LT", - "lv-LV": "LV", - "nb-NO": "NO", - "nl-BE": "BE", - "nl-NL": "NL", - "nl-SR": "SR", - "pl-PL": "PL", - "pt-AO": "AO", - "pt-BR": "BR", - "pt-CV": "CV", - "pt-MZ": "MZ", - "pt-PT": "PT", - "pt-ST": "ST", - "pt-TL": "TL", - "ro-MD": "MD", - "ro-RO": "RO", - "ru-BY": "BY", - "ru-KG": "KG", - "ru-KZ": "KZ", - "ru-RU": "RU", - "ru-UA": "UA", - "sk-SK": "SK", - "sl-SI": "SI", - "sr-BA": "BA", - "sr-RS": "RS", - "sv-FI": "FI", - "sv-SE": "SE", - "sw-CD": "CD", - "sw-KE": "KE", - "sw-TZ": "TZ", - "sw-UG": "UG", - "th-TH": "TH", - "tr-CY": "CY", - "tr-TR": "TR", - "uk-UA": "UA", - "vi-VN": "VN", - "zh-CN": "HK", - "zh-HK": "HK", - "zh-SG": "SG", - "zh-TW": "TW" - } - }, - "google scholar": { - "all_locale": "ZZ", - "custom": { - "supported_domains": { - "AD": "www.google.ad", - "AE": "www.google.ae", - "AF": "www.google.com.af", - "AG": "www.google.com.ag", - "AL": "www.google.al", - "AM": "www.google.am", - "AO": "www.google.co.ao", - "AR": "www.google.com.ar", - "AS": "www.google.as", - "AT": "www.google.at", - "AU": "www.google.com.au", - "AZ": "www.google.az", - "BA": "www.google.ba", - "BD": "www.google.com.bd", - "BE": "www.google.be", - "BF": "www.google.bf", - "BG": "www.google.bg", - "BH": "www.google.com.bh", - "BI": "www.google.bi", - "BJ": "www.google.bj", - "BN": "www.google.com.bn", - "BO": "www.google.com.bo", - "BR": "www.google.com.br", - "BS": "www.google.bs", - "BT": "www.google.bt", - "BW": "www.google.co.bw", - "BY": "www.google.by", - "BZ": "www.google.com.bz", - "CA": "www.google.ca", - "CAT": "www.google.cat", - "CD": "www.google.cd", - "CF": "www.google.cf", - "CG": "www.google.cg", - "CH": "www.google.ch", - "CI": "www.google.ci", - "CK": "www.google.co.ck", - "CL": "www.google.cl", - "CM": "www.google.cm", - "CN": "www.google.com.hk", - "CO": "www.google.com.co", - "CR": "www.google.co.cr", - "CU": "www.google.com.cu", - "CV": "www.google.cv", - "CY": "www.google.com.cy", - "CZ": "www.google.cz", - "DE": "www.google.de", - "DJ": "www.google.dj", - "DK": "www.google.dk", - "DM": "www.google.dm", - "DO": "www.google.com.do", - "DZ": "www.google.dz", - "EC": "www.google.com.ec", - "EE": "www.google.ee", - "EG": "www.google.com.eg", - "ES": "www.google.es", - "ET": "www.google.com.et", - "FI": "www.google.fi", - "FJ": "www.google.com.fj", - "FM": "www.google.fm", - "FR": "www.google.fr", - "GA": "www.google.ga", - "GE": "www.google.ge", - "GG": "www.google.gg", - "GH": "www.google.com.gh", - "GI": "www.google.com.gi", - "GL": "www.google.gl", - "GM": "www.google.gm", - "GR": "www.google.gr", - "GT": "www.google.com.gt", - "GY": "www.google.gy", - "HK": "www.google.com.hk", - "HN": "www.google.hn", - "HR": "www.google.hr", - "HT": "www.google.ht", - "HU": "www.google.hu", - "ID": "www.google.co.id", - "IE": "www.google.ie", - "IL": "www.google.co.il", - "IM": "www.google.im", - "IN": "www.google.co.in", - "IQ": "www.google.iq", - "IS": "www.google.is", - "IT": "www.google.it", - "JE": "www.google.je", - "JM": "www.google.com.jm", - "JO": "www.google.jo", - "JP": "www.google.co.jp", - "KE": "www.google.co.ke", - "KG": "www.google.kg", - "KH": "www.google.com.kh", - "KI": "www.google.ki", - "KR": "www.google.co.kr", - "KW": "www.google.com.kw", - "KZ": "www.google.kz", - "LA": "www.google.la", - "LB": "www.google.com.lb", - "LI": "www.google.li", - "LK": "www.google.lk", - "LS": "www.google.co.ls", - "LT": "www.google.lt", - "LU": "www.google.lu", - "LV": "www.google.lv", - "LY": "www.google.com.ly", - "MA": "www.google.co.ma", - "MD": "www.google.md", - "ME": "www.google.me", - "MG": "www.google.mg", - "MK": "www.google.mk", - "ML": "www.google.ml", - "MM": "www.google.com.mm", - "MN": "www.google.mn", - "MT": "www.google.com.mt", - "MU": "www.google.mu", - "MV": "www.google.mv", - "MW": "www.google.mw", - "MX": "www.google.com.mx", - "MY": "www.google.com.my", - "MZ": "www.google.co.mz", - "NA": "www.google.com.na", - "NE": "www.google.ne", - "NG": "www.google.com.ng", - "NI": "www.google.com.ni", - "NL": "www.google.nl", - "NO": "www.google.no", - "NP": "www.google.com.np", - "NR": "www.google.nr", - "NU": "www.google.nu", - "NZ": "www.google.co.nz", - "OM": "www.google.com.om", - "PA": "www.google.com.pa", - "PE": "www.google.com.pe", - "PG": "www.google.com.pg", - "PH": "www.google.com.ph", - "PK": "www.google.com.pk", - "PL": "www.google.pl", - "PN": "www.google.pn", - "PR": "www.google.com.pr", - "PS": "www.google.ps", - "PT": "www.google.pt", - "PY": "www.google.com.py", - "QA": "www.google.com.qa", - "RO": "www.google.ro", - "RS": "www.google.rs", - "RU": "www.google.ru", - "RW": "www.google.rw", - "SA": "www.google.com.sa", - "SB": "www.google.com.sb", - "SC": "www.google.sc", - "SE": "www.google.se", - "SG": "www.google.com.sg", - "SH": "www.google.sh", - "SI": "www.google.si", - "SK": "www.google.sk", - "SL": "www.google.com.sl", - "SM": "www.google.sm", - "SN": "www.google.sn", - "SO": "www.google.so", - "SR": "www.google.sr", - "ST": "www.google.st", - "SV": "www.google.com.sv", - "TD": "www.google.td", - "TG": "www.google.tg", - "TH": "www.google.co.th", - "TJ": "www.google.com.tj", - "TL": "www.google.tl", - "TM": "www.google.tm", - "TN": "www.google.tn", - "TO": "www.google.to", - "TR": "www.google.com.tr", - "TT": "www.google.tt", - "TW": "www.google.com.tw", - "TZ": "www.google.co.tz", - "UA": "www.google.com.ua", - "UG": "www.google.co.ug", - "UK": "www.google.co.uk", - "UY": "www.google.com.uy", - "UZ": "www.google.co.uz", - "VC": "www.google.com.vc", - "VE": "www.google.co.ve", - "VI": "www.google.co.vi", - "VN": "www.google.com.vn", - "VU": "www.google.vu", - "WS": "www.google.ws", - "ZA": "www.google.co.za", - "ZM": "www.google.co.zm", - "ZW": "www.google.co.zw" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "lang_af", - "ar": "lang_ar", - "be": "lang_be", - "bg": "lang_bg", - "ca": "lang_ca", - "cs": "lang_cs", - "da": "lang_da", - "de": "lang_de", - "el": "lang_el", - "en": "lang_en", - "eo": "lang_eo", - "es": "lang_es", - "et": "lang_et", - "fa": "lang_fa", - "fi": "lang_fi", - "fil": "lang_tl", - "fr": "lang_fr", - "he": "lang_iw", - "hi": "lang_hi", - "hr": "lang_hr", - "hu": "lang_hu", - "hy": "lang_hy", - "id": "lang_id", - "is": "lang_is", - "it": "lang_it", - "ja": "lang_ja", - "ko": "lang_ko", - "lt": "lang_lt", - "lv": "lang_lv", - "nb": "lang_no", - "nl": "lang_nl", - "pl": "lang_pl", - "pt": "lang_pt", - "ro": "lang_ro", - "ru": "lang_ru", - "sk": "lang_sk", - "sl": "lang_sl", - "sr": "lang_sr", - "sv": "lang_sv", - "sw": "lang_sw", - "th": "lang_th", - "tr": "lang_tr", - "uk": "lang_uk", - "vi": "lang_vi", - "zh": "lang_zh-CN", - "zh_Hans": "lang_zh-CN", - "zh_Hant": "lang_zh-TW" - }, - "regions": { - "af-ZA": "ZA", - "ar-AE": "AE", - "ar-BH": "BH", - "ar-DJ": "DJ", - "ar-DZ": "DZ", - "ar-EG": "EG", - "ar-IL": "IL", - "ar-IQ": "IQ", - "ar-JO": "JO", - "ar-KW": "KW", - "ar-LB": "LB", - "ar-LY": "LY", - "ar-MA": "MA", - "ar-OM": "OM", - "ar-PS": "PS", - "ar-QA": "QA", - "ar-SA": "SA", - "ar-SO": "SO", - "ar-TD": "TD", - "ar-TN": "TN", - "be-BY": "BY", - "bg-BG": "BG", - "ca-AD": "AD", - "ca-ES": "ES", - "cs-CZ": "CZ", - "da-DK": "DK", - "de-AT": "AT", - "de-BE": "BE", - "de-CH": "CH", - "de-DE": "DE", - "de-LI": "LI", - "de-LU": "LU", - "el-CY": "CY", - "el-GR": "GR", - "en-AG": "AG", - "en-AS": "AS", - "en-AU": "AU", - "en-BI": "BI", - "en-BS": "BS", - "en-BW": "BW", - "en-BZ": "BZ", - "en-CA": "CA", - "en-CK": "CK", - "en-CM": "CM", - "en-DM": "DM", - "en-FJ": "FJ", - "en-FM": "FM", - "en-GB": "GB", - "en-GG": "GG", - "en-GH": "GH", - "en-GI": "GI", - "en-GM": "GM", - "en-GY": "GY", - "en-HK": "HK", - "en-IE": "IE", - "en-IM": "IM", - "en-IN": "IN", - "en-JE": "JE", - "en-JM": "JM", - "en-KE": "KE", - "en-KI": "KI", - "en-LS": "LS", - "en-MG": "MG", - "en-MT": "MT", - "en-MU": "MU", - "en-MW": "MW", - "en-NA": "NA", - "en-NG": "NG", - "en-NR": "NR", - "en-NU": "NU", - "en-NZ": "NZ", - "en-PG": "PG", - "en-PH": "PH", - "en-PK": "PK", - "en-PN": "PN", - "en-PR": "PR", - "en-RW": "RW", - "en-SB": "SB", - "en-SC": "SC", - "en-SG": "SG", - "en-SH": "SH", - "en-SL": "SL", - "en-TO": "TO", - "en-TT": "TT", - "en-TZ": "TZ", - "en-UG": "UG", - "en-US": "US", - "en-VC": "VC", - "en-VI": "VI", - "en-VU": "VU", - "en-WS": "WS", - "en-ZA": "ZA", - "en-ZM": "ZM", - "en-ZW": "ZW", - "es-AR": "AR", - "es-BO": "BO", - "es-CL": "CL", - "es-CO": "CO", - "es-CR": "CR", - "es-CU": "CU", - "es-DO": "DO", - "es-EC": "EC", - "es-ES": "ES", - "es-GT": "GT", - "es-HN": "HN", - "es-MX": "MX", - "es-NI": "NI", - "es-PA": "PA", - "es-PE": "PE", - "es-PR": "PR", - "es-PY": "PY", - "es-SV": "SV", - "es-US": "US", - "es-UY": "UY", - "es-VE": "VE", - "et-EE": "EE", - "fa-AF": "AF", - "fi-FI": "FI", - "fil-PH": "PH", - "fr-BE": "BE", - "fr-BF": "BF", - "fr-BI": "BI", - "fr-BJ": "BJ", - "fr-CA": "CA", - "fr-CD": "CD", - "fr-CF": "CF", - "fr-CG": "CG", - "fr-CH": "CH", - "fr-CI": "CI", - "fr-CM": "CM", - "fr-DJ": "DJ", - "fr-DZ": "DZ", - "fr-FR": "FR", - "fr-GA": "GA", - "fr-HT": "HT", - "fr-LU": "LU", - "fr-MA": "MA", - "fr-MG": "MG", - "fr-ML": "ML", - "fr-MU": "MU", - "fr-NE": "NE", - "fr-RW": "RW", - "fr-SC": "SC", - "fr-SN": "SN", - "fr-TD": "TD", - "fr-TG": "TG", - "fr-TN": "TN", - "fr-VU": "VU", - "he-IL": "IL", - "hi-IN": "IN", - "hr-BA": "BA", - "hr-HR": "HR", - "hu-HU": "HU", - "hy-AM": "AM", - "id-ID": "ID", - "is-IS": "IS", - "it-CH": "CH", - "it-IT": "IT", - "it-SM": "SM", - "ja-JP": "JP", - "ko-KR": "KR", - "lt-LT": "LT", - "lv-LV": "LV", - "nb-NO": "NO", - "nl-BE": "BE", - "nl-NL": "NL", - "nl-SR": "SR", - "pl-PL": "PL", - "pt-AO": "AO", - "pt-BR": "BR", - "pt-CV": "CV", - "pt-MZ": "MZ", - "pt-PT": "PT", - "pt-ST": "ST", - "pt-TL": "TL", - "ro-MD": "MD", - "ro-RO": "RO", - "ru-BY": "BY", - "ru-KG": "KG", - "ru-KZ": "KZ", - "ru-RU": "RU", - "ru-UA": "UA", - "sk-SK": "SK", - "sl-SI": "SI", - "sr-BA": "BA", - "sr-RS": "RS", - "sv-FI": "FI", - "sv-SE": "SE", - "sw-CD": "CD", - "sw-KE": "KE", - "sw-TZ": "TZ", - "sw-UG": "UG", - "th-TH": "TH", - "tr-CY": "CY", - "tr-TR": "TR", - "uk-UA": "UA", - "vi-VN": "VN", - "zh-CN": "HK", - "zh-HK": "HK", - "zh-SG": "SG", - "zh-TW": "TW" - } - }, - "google videos": { - "all_locale": "ZZ", - "custom": { - "supported_domains": { - "AD": "www.google.ad", - "AE": "www.google.ae", - "AF": "www.google.com.af", - "AG": "www.google.com.ag", - "AL": "www.google.al", - "AM": "www.google.am", - "AO": "www.google.co.ao", - "AR": "www.google.com.ar", - "AS": "www.google.as", - "AT": "www.google.at", - "AU": "www.google.com.au", - "AZ": "www.google.az", - "BA": "www.google.ba", - "BD": "www.google.com.bd", - "BE": "www.google.be", - "BF": "www.google.bf", - "BG": "www.google.bg", - "BH": "www.google.com.bh", - "BI": "www.google.bi", - "BJ": "www.google.bj", - "BN": "www.google.com.bn", - "BO": "www.google.com.bo", - "BR": "www.google.com.br", - "BS": "www.google.bs", - "BT": "www.google.bt", - "BW": "www.google.co.bw", - "BY": "www.google.by", - "BZ": "www.google.com.bz", - "CA": "www.google.ca", - "CAT": "www.google.cat", - "CD": "www.google.cd", - "CF": "www.google.cf", - "CG": "www.google.cg", - "CH": "www.google.ch", - "CI": "www.google.ci", - "CK": "www.google.co.ck", - "CL": "www.google.cl", - "CM": "www.google.cm", - "CN": "www.google.com.hk", - "CO": "www.google.com.co", - "CR": "www.google.co.cr", - "CU": "www.google.com.cu", - "CV": "www.google.cv", - "CY": "www.google.com.cy", - "CZ": "www.google.cz", - "DE": "www.google.de", - "DJ": "www.google.dj", - "DK": "www.google.dk", - "DM": "www.google.dm", - "DO": "www.google.com.do", - "DZ": "www.google.dz", - "EC": "www.google.com.ec", - "EE": "www.google.ee", - "EG": "www.google.com.eg", - "ES": "www.google.es", - "ET": "www.google.com.et", - "FI": "www.google.fi", - "FJ": "www.google.com.fj", - "FM": "www.google.fm", - "FR": "www.google.fr", - "GA": "www.google.ga", - "GE": "www.google.ge", - "GG": "www.google.gg", - "GH": "www.google.com.gh", - "GI": "www.google.com.gi", - "GL": "www.google.gl", - "GM": "www.google.gm", - "GR": "www.google.gr", - "GT": "www.google.com.gt", - "GY": "www.google.gy", - "HK": "www.google.com.hk", - "HN": "www.google.hn", - "HR": "www.google.hr", - "HT": "www.google.ht", - "HU": "www.google.hu", - "ID": "www.google.co.id", - "IE": "www.google.ie", - "IL": "www.google.co.il", - "IM": "www.google.im", - "IN": "www.google.co.in", - "IQ": "www.google.iq", - "IS": "www.google.is", - "IT": "www.google.it", - "JE": "www.google.je", - "JM": "www.google.com.jm", - "JO": "www.google.jo", - "JP": "www.google.co.jp", - "KE": "www.google.co.ke", - "KG": "www.google.kg", - "KH": "www.google.com.kh", - "KI": "www.google.ki", - "KR": "www.google.co.kr", - "KW": "www.google.com.kw", - "KZ": "www.google.kz", - "LA": "www.google.la", - "LB": "www.google.com.lb", - "LI": "www.google.li", - "LK": "www.google.lk", - "LS": "www.google.co.ls", - "LT": "www.google.lt", - "LU": "www.google.lu", - "LV": "www.google.lv", - "LY": "www.google.com.ly", - "MA": "www.google.co.ma", - "MD": "www.google.md", - "ME": "www.google.me", - "MG": "www.google.mg", - "MK": "www.google.mk", - "ML": "www.google.ml", - "MM": "www.google.com.mm", - "MN": "www.google.mn", - "MT": "www.google.com.mt", - "MU": "www.google.mu", - "MV": "www.google.mv", - "MW": "www.google.mw", - "MX": "www.google.com.mx", - "MY": "www.google.com.my", - "MZ": "www.google.co.mz", - "NA": "www.google.com.na", - "NE": "www.google.ne", - "NG": "www.google.com.ng", - "NI": "www.google.com.ni", - "NL": "www.google.nl", - "NO": "www.google.no", - "NP": "www.google.com.np", - "NR": "www.google.nr", - "NU": "www.google.nu", - "NZ": "www.google.co.nz", - "OM": "www.google.com.om", - "PA": "www.google.com.pa", - "PE": "www.google.com.pe", - "PG": "www.google.com.pg", - "PH": "www.google.com.ph", - "PK": "www.google.com.pk", - "PL": "www.google.pl", - "PN": "www.google.pn", - "PR": "www.google.com.pr", - "PS": "www.google.ps", - "PT": "www.google.pt", - "PY": "www.google.com.py", - "QA": "www.google.com.qa", - "RO": "www.google.ro", - "RS": "www.google.rs", - "RU": "www.google.ru", - "RW": "www.google.rw", - "SA": "www.google.com.sa", - "SB": "www.google.com.sb", - "SC": "www.google.sc", - "SE": "www.google.se", - "SG": "www.google.com.sg", - "SH": "www.google.sh", - "SI": "www.google.si", - "SK": "www.google.sk", - "SL": "www.google.com.sl", - "SM": "www.google.sm", - "SN": "www.google.sn", - "SO": "www.google.so", - "SR": "www.google.sr", - "ST": "www.google.st", - "SV": "www.google.com.sv", - "TD": "www.google.td", - "TG": "www.google.tg", - "TH": "www.google.co.th", - "TJ": "www.google.com.tj", - "TL": "www.google.tl", - "TM": "www.google.tm", - "TN": "www.google.tn", - "TO": "www.google.to", - "TR": "www.google.com.tr", - "TT": "www.google.tt", - "TW": "www.google.com.tw", - "TZ": "www.google.co.tz", - "UA": "www.google.com.ua", - "UG": "www.google.co.ug", - "UK": "www.google.co.uk", - "UY": "www.google.com.uy", - "UZ": "www.google.co.uz", - "VC": "www.google.com.vc", - "VE": "www.google.co.ve", - "VI": "www.google.co.vi", - "VN": "www.google.com.vn", - "VU": "www.google.vu", - "WS": "www.google.ws", - "ZA": "www.google.co.za", - "ZM": "www.google.co.zm", - "ZW": "www.google.co.zw" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "lang_af", - "ar": "lang_ar", - "be": "lang_be", - "bg": "lang_bg", - "ca": "lang_ca", - "cs": "lang_cs", - "da": "lang_da", - "de": "lang_de", - "el": "lang_el", - "en": "lang_en", - "eo": "lang_eo", - "es": "lang_es", - "et": "lang_et", - "fa": "lang_fa", - "fi": "lang_fi", - "fil": "lang_tl", - "fr": "lang_fr", - "he": "lang_iw", - "hi": "lang_hi", - "hr": "lang_hr", - "hu": "lang_hu", - "hy": "lang_hy", - "id": "lang_id", - "is": "lang_is", - "it": "lang_it", - "ja": "lang_ja", - "ko": "lang_ko", - "lt": "lang_lt", - "lv": "lang_lv", - "nb": "lang_no", - "nl": "lang_nl", - "pl": "lang_pl", - "pt": "lang_pt", - "ro": "lang_ro", - "ru": "lang_ru", - "sk": "lang_sk", - "sl": "lang_sl", - "sr": "lang_sr", - "sv": "lang_sv", - "sw": "lang_sw", - "th": "lang_th", - "tr": "lang_tr", - "uk": "lang_uk", - "vi": "lang_vi", - "zh": "lang_zh-CN", - "zh_Hans": "lang_zh-CN", - "zh_Hant": "lang_zh-TW" - }, - "regions": { - "af-ZA": "ZA", - "ar-AE": "AE", - "ar-BH": "BH", - "ar-DJ": "DJ", - "ar-DZ": "DZ", - "ar-EG": "EG", - "ar-IL": "IL", - "ar-IQ": "IQ", - "ar-JO": "JO", - "ar-KW": "KW", - "ar-LB": "LB", - "ar-LY": "LY", - "ar-MA": "MA", - "ar-OM": "OM", - "ar-PS": "PS", - "ar-QA": "QA", - "ar-SA": "SA", - "ar-SO": "SO", - "ar-TD": "TD", - "ar-TN": "TN", - "be-BY": "BY", - "bg-BG": "BG", - "ca-AD": "AD", - "ca-ES": "ES", - "cs-CZ": "CZ", - "da-DK": "DK", - "de-AT": "AT", - "de-BE": "BE", - "de-CH": "CH", - "de-DE": "DE", - "de-LI": "LI", - "de-LU": "LU", - "el-CY": "CY", - "el-GR": "GR", - "en-AG": "AG", - "en-AS": "AS", - "en-AU": "AU", - "en-BI": "BI", - "en-BS": "BS", - "en-BW": "BW", - "en-BZ": "BZ", - "en-CA": "CA", - "en-CK": "CK", - "en-CM": "CM", - "en-DM": "DM", - "en-FJ": "FJ", - "en-FM": "FM", - "en-GB": "GB", - "en-GG": "GG", - "en-GH": "GH", - "en-GI": "GI", - "en-GM": "GM", - "en-GY": "GY", - "en-HK": "HK", - "en-IE": "IE", - "en-IM": "IM", - "en-IN": "IN", - "en-JE": "JE", - "en-JM": "JM", - "en-KE": "KE", - "en-KI": "KI", - "en-LS": "LS", - "en-MG": "MG", - "en-MT": "MT", - "en-MU": "MU", - "en-MW": "MW", - "en-NA": "NA", - "en-NG": "NG", - "en-NR": "NR", - "en-NU": "NU", - "en-NZ": "NZ", - "en-PG": "PG", - "en-PH": "PH", - "en-PK": "PK", - "en-PN": "PN", - "en-PR": "PR", - "en-RW": "RW", - "en-SB": "SB", - "en-SC": "SC", - "en-SG": "SG", - "en-SH": "SH", - "en-SL": "SL", - "en-TO": "TO", - "en-TT": "TT", - "en-TZ": "TZ", - "en-UG": "UG", - "en-US": "US", - "en-VC": "VC", - "en-VI": "VI", - "en-VU": "VU", - "en-WS": "WS", - "en-ZA": "ZA", - "en-ZM": "ZM", - "en-ZW": "ZW", - "es-AR": "AR", - "es-BO": "BO", - "es-CL": "CL", - "es-CO": "CO", - "es-CR": "CR", - "es-CU": "CU", - "es-DO": "DO", - "es-EC": "EC", - "es-ES": "ES", - "es-GT": "GT", - "es-HN": "HN", - "es-MX": "MX", - "es-NI": "NI", - "es-PA": "PA", - "es-PE": "PE", - "es-PR": "PR", - "es-PY": "PY", - "es-SV": "SV", - "es-US": "US", - "es-UY": "UY", - "es-VE": "VE", - "et-EE": "EE", - "fa-AF": "AF", - "fi-FI": "FI", - "fil-PH": "PH", - "fr-BE": "BE", - "fr-BF": "BF", - "fr-BI": "BI", - "fr-BJ": "BJ", - "fr-CA": "CA", - "fr-CD": "CD", - "fr-CF": "CF", - "fr-CG": "CG", - "fr-CH": "CH", - "fr-CI": "CI", - "fr-CM": "CM", - "fr-DJ": "DJ", - "fr-DZ": "DZ", - "fr-FR": "FR", - "fr-GA": "GA", - "fr-HT": "HT", - "fr-LU": "LU", - "fr-MA": "MA", - "fr-MG": "MG", - "fr-ML": "ML", - "fr-MU": "MU", - "fr-NE": "NE", - "fr-RW": "RW", - "fr-SC": "SC", - "fr-SN": "SN", - "fr-TD": "TD", - "fr-TG": "TG", - "fr-TN": "TN", - "fr-VU": "VU", - "he-IL": "IL", - "hi-IN": "IN", - "hr-BA": "BA", - "hr-HR": "HR", - "hu-HU": "HU", - "hy-AM": "AM", - "id-ID": "ID", - "is-IS": "IS", - "it-CH": "CH", - "it-IT": "IT", - "it-SM": "SM", - "ja-JP": "JP", - "ko-KR": "KR", - "lt-LT": "LT", - "lv-LV": "LV", - "nb-NO": "NO", - "nl-BE": "BE", - "nl-NL": "NL", - "nl-SR": "SR", - "pl-PL": "PL", - "pt-AO": "AO", - "pt-BR": "BR", - "pt-CV": "CV", - "pt-MZ": "MZ", - "pt-PT": "PT", - "pt-ST": "ST", - "pt-TL": "TL", - "ro-MD": "MD", - "ro-RO": "RO", - "ru-BY": "BY", - "ru-KG": "KG", - "ru-KZ": "KZ", - "ru-RU": "RU", - "ru-UA": "UA", - "sk-SK": "SK", - "sl-SI": "SI", - "sr-BA": "BA", - "sr-RS": "RS", - "sv-FI": "FI", - "sv-SE": "SE", - "sw-CD": "CD", - "sw-KE": "KE", - "sw-TZ": "TZ", - "sw-UG": "UG", - "th-TH": "TH", - "tr-CY": "CY", - "tr-TR": "TR", - "uk-UA": "UA", - "vi-VN": "VN", - "zh-CN": "HK", - "zh-HK": "HK", - "zh-SG": "SG", - "zh-TW": "TW" - } - }, - "odysee": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": { - "af": "af", - "ca": "ca", - "cs": "cs", - "da": "da", - "de": "de", - "en": "en", - "es": "es", - "fi": "fi", - "fil": "fil", - "fr": "fr", - "gu": "gu", - "hi": "hi", - "hr": "hr", - "hu": "hu", - "id": "id", - "it": "it", - "ja": "ja", - "jv": "jv", - "kn": "kn", - "ml": "ml", - "mr": "mr", - "ms": "ms", - "nl": "nl", - "no": "no", - "pa": "pa", - "pl": "pl", - "pt": "pt", - "ro": "ro", - "ru": "ru", - "sk": "sk", - "sr": "sr", - "sv": "sv", - "th": "th", - "tr": "tr", - "uk": "uk", - "ur": "ur", - "vi": "vi", - "zh_Hans": "zh-CN", - "zh_Hant": "zh-TW" - }, - "regions": {} - }, - "peertube": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": { - "ca": "ca", - "cs": "cs", - "de": "de", - "el": "el", - "en": "en", - "eo": "eo", - "es": "es", - "eu": "eu", - "fi": "fi", - "fr": "fr", - "gd": "gd", - "it": "it", - "ja": "ja", - "nl": "nl", - "pl": "pl", - "pt": "pt", - "ru": "ru", - "sv": "sv", - "zh": "zh", - "zh_Hans": "zh", - "zh_Hant": "zh" - }, - "regions": {} - }, - "qwant": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "bg-BG": "bg_BG", - "ca-ES": "ca_ES", - "cs-CZ": "cs_CZ", - "da-DK": "da_DK", - "de-AT": "de_AT", - "de-CH": "de_CH", - "de-DE": "de_DE", - "el-GR": "el_GR", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "en-IE": "en_IE", - "en-MY": "en_MY", - "en-NZ": "en_NZ", - "en-US": "en_US", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-ES": "es_ES", - "es-MX": "es_MX", - "et-EE": "et_EE", - "fi-FI": "fi_FI", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "fr-FR": "fr_FR", - "he-IL": "he_IL", - "hu-HU": "hu_HU", - "it-CH": "it_CH", - "it-IT": "it_IT", - "ko-KR": "ko_KR", - "nb-NO": "nb_NO", - "nl-BE": "nl_BE", - "nl-NL": "nl_NL", - "pl-PL": "pl_PL", - "pt-PT": "pt_PT", - "ro-RO": "ro_RO", - "sv-SE": "sv_SE", - "th-TH": "th_TH", - "zh-CN": "zh_CN", - "zh-HK": "zh_HK" - } - }, - "qwant images": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "bg-BG": "bg_BG", - "ca-ES": "ca_ES", - "cs-CZ": "cs_CZ", - "da-DK": "da_DK", - "de-AT": "de_AT", - "de-CH": "de_CH", - "de-DE": "de_DE", - "el-GR": "el_GR", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "en-IE": "en_IE", - "en-MY": "en_MY", - "en-NZ": "en_NZ", - "en-US": "en_US", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-ES": "es_ES", - "es-MX": "es_MX", - "et-EE": "et_EE", - "fi-FI": "fi_FI", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "fr-FR": "fr_FR", - "he-IL": "he_IL", - "hu-HU": "hu_HU", - "it-CH": "it_CH", - "it-IT": "it_IT", - "ko-KR": "ko_KR", - "nb-NO": "nb_NO", - "nl-BE": "nl_BE", - "nl-NL": "nl_NL", - "pl-PL": "pl_PL", - "pt-PT": "pt_PT", - "ro-RO": "ro_RO", - "sv-SE": "sv_SE", - "th-TH": "th_TH", - "zh-CN": "zh_CN", - "zh-HK": "zh_HK" - } - }, - "qwant news": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "ca-ES": "ca_ES", - "de-AT": "de_AT", - "de-CH": "de_CH", - "de-DE": "de_DE", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "en-IE": "en_IE", - "en-MY": "en_MY", - "en-NZ": "en_NZ", - "en-US": "en_US", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-ES": "es_ES", - "es-MX": "es_MX", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "fr-FR": "fr_FR", - "it-CH": "it_CH", - "it-IT": "it_IT", - "nl-BE": "nl_BE", - "nl-NL": "nl_NL", - "pt-PT": "pt_PT" - } - }, - "qwant videos": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": {}, - "regions": { - "bg-BG": "bg_BG", - "ca-ES": "ca_ES", - "cs-CZ": "cs_CZ", - "da-DK": "da_DK", - "de-AT": "de_AT", - "de-CH": "de_CH", - "de-DE": "de_DE", - "el-GR": "el_GR", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en_GB", - "en-IE": "en_IE", - "en-MY": "en_MY", - "en-NZ": "en_NZ", - "en-US": "en_US", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-ES": "es_ES", - "es-MX": "es_MX", - "et-EE": "et_EE", - "fi-FI": "fi_FI", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "fr-FR": "fr_FR", - "he-IL": "he_IL", - "hu-HU": "hu_HU", - "it-CH": "it_CH", - "it-IT": "it_IT", - "ko-KR": "ko_KR", - "nb-NO": "nb_NO", - "nl-BE": "nl_BE", - "nl-NL": "nl_NL", - "pl-PL": "pl_PL", - "pt-PT": "pt_PT", - "ro-RO": "ro_RO", - "sv-SE": "sv_SE", - "th-TH": "th_TH", - "zh-CN": "zh_CN", - "zh-HK": "zh_HK" - } - }, - "radio browser": { - "all_locale": null, - "custom": { - "countrycodes": [ - "AD", - "AE", - "AF", - "AG", - "AL", - "AM", - "AO", - "AQ", - "AR", - "AS", - "AT", - "AU", - "AW", - "AZ", - "BA", - "BB", - "BD", - "BE", - "BF", - "BG", - "BH", - "BI", - "BJ", - "BM", - "BN", - "BO", - "BQ", - "BR", - "BS", - "BT", - "BW", - "BY", - "BZ", - "CA", - "CC", - "CD", - "CF", - "CG", - "CH", - "CI", - "CK", - "CL", - "CM", - "CN", - "CO", - "CR", - "CU", - "CV", - "CW", - "CY", - "CZ", - "DE", - "DK", - "DM", - "DO", - "DZ", - "EC", - "EE", - "EG", - "ES", - "ET", - "FI", - "FJ", - "FK", - "FO", - "FR", - "GA", - "GB", - "GD", - "GE", - "GF", - "GG", - "GH", - "GI", - "GL", - "GN", - "GP", - "GQ", - "GR", - "GS", - "GT", - "GU", - "GW", - "GY", - "HK", - "HN", - "HR", - "HT", - "HU", - "ID", - "IE", - "IL", - "IM", - "IN", - "IO", - "IQ", - "IR", - "IS", - "IT", - "JM", - "JO", - "JP", - "KE", - "KG", - "KH", - "KM", - "KN", - "KP", - "KR", - "KW", - "KY", - "KZ", - "LB", - "LC", - "LK", - "LS", - "LT", - "LU", - "LV", - "LY", - "MA", - "MC", - "MD", - "ME", - "MG", - "MK", - "ML", - "MM", - "MN", - "MO", - "MQ", - "MT", - "MU", - "MW", - "MX", - "MY", - "MZ", - "NA", - "NC", - "NE", - "NF", - "NG", - "NI", - "NL", - "NO", - "NP", - "NZ", - "OM", - "PA", - "PE", - "PF", - "PH", - "PK", - "PL", - "PM", - "PR", - "PS", - "PT", - "PY", - "QA", - "RE", - "RO", - "RS", - "RU", - "RW", - "SA", - "SC", - "SD", - "SE", - "SG", - "SH", - "SI", - "SJ", - "SK", - "SL", - "SM", - "SN", - "SO", - "SR", - "ST", - "SV", - "SY", - "SZ", - "TC", - "TD", - "TF", - "TG", - "TH", - "TJ", - "TM", - "TN", - "TO", - "TR", - "TT", - "TW", - "TZ", - "UA", - "UG", - "UM", - "US", - "UY", - "UZ", - "VA", - "VC", - "VE", - "VG", - "VI", - "VN", - "VU", - "WF", - "XK", - "YE", - "YT", - "ZA", - "ZM", - "ZW" - ] - }, - "data_type": "traits_v1", - "languages": { - "af": "afrikaans", - "ak": "akan", - "am": "amharic", - "ar": "arabic", - "as": "assamese", - "ast": "asturian", - "az": "azerbaijani", - "be": "belarusian", - "bg": "bulgarian", - "bm": "bambara", - "bn": "bengali", - "bo": "tibetan", - "br": "breton", - "bs": "bosnian", - "ca": "catalan", - "cs": "czech", - "cv": "chuvash", - "cy": "welsh", - "da": "danish", - "de": "german", - "dsb": "lower sorbian", - "dz": "dzongkha", - "el": "greek", - "en": "english", - "eo": "esperanto", - "es": "spanish", - "et": "estonian", - "eu": "basque", - "fa": "persian", - "fi": "finnish", - "fil": "tagalog", - "fo": "faroese", - "fr": "french", - "ga": "irish", - "gd": "gaelic", - "gl": "galician", - "gsw": "swiss german", - "gu": "gujarati", - "gv": "manx", - "ha": "hausa", - "he": "hebrew", - "hi": "hindi", - "hr": "croatian", - "hsb": "upper sorbian", - "hu": "hungarian", - "hy": "armenian", - "id": "indonesian", - "is": "icelandic", - "it": "italian", - "ja": "japanese", - "jv": "javanese", - "ka": "georgian", - "kk": "kazakh", - "kl": "kalaallisut", - "km": "khmer", - "kn": "kannada", - "ko": "korean", - "ku": "kurdish", - "lb": "luxembourgish", - "ln": "lingala", - "lt": "lithuanian", - "lv": "latvian", - "mg": "malagasy", - "mk": "macedonian", - "ml": "malayalam", - "mn": "mongolian", - "mr": "marathi", - "ms": "malay", - "mt": "maltese", - "my": "burmese", - "nds": "low german", - "ne": "nepali", - "nl": "dutch", - "no": "norwegian", - "oc": "occitan", - "om": "oromo", - "os": "ossetian", - "pa": "panjabi", - "pl": "polish", - "pt": "portuguese", - "qu": "quechua", - "rm": "romansh", - "ro": "romanian", - "ru": "russian", - "rw": "kinyarwanda", - "sa": "sanskrit", - "sc": "sardinian", - "sd": "sindhi", - "si": "sinhala", - "sk": "slovak", - "sl": "slovenian", - "so": "somali", - "sq": "albanian", - "sr": "serbian", - "sv": "swedish", - "sw": "swahili", - "ta": "tamil", - "te": "telugu", - "tg": "tajik", - "th": "thai", - "tk": "turkmen", - "tr": "turkish", - "tt": "tatar", - "uk": "ukrainian", - "ur": "urdu", - "uz": "uzbek", - "vi": "vietnamese", - "wo": "wolof", - "xh": "xhosa", - "yi": "yiddish", - "yue": "cantonese", - "zh": "chinese", - "zh_Hans": "mandarin" - }, - "regions": {} - }, - "sepiasearch": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": { - "ca": "ca", - "cs": "cs", - "de": "de", - "el": "el", - "en": "en", - "eo": "eo", - "es": "es", - "eu": "eu", - "fi": "fi", - "fr": "fr", - "gd": "gd", - "it": "it", - "ja": "ja", - "nl": "nl", - "pl": "pl", - "pt": "pt", - "ru": "ru", - "sv": "sv", - "zh": "zh", - "zh_Hans": "zh", - "zh_Hant": "zh" - }, - "regions": {} - }, - "startpage": { - "all_locale": null, - "custom": {}, - "data_type": "traits_v1", - "languages": { - "af": "afrikaans", - "am": "amharic", - "ar": "arabic", - "az": "azerbaijani", - "be": "belarusian", - "bg": "bulgarian", - "bn": "bengali", - "bs": "bosnian", - "ca": "catalan", - "cs": "czech", - "cy": "welsh", - "da": "dansk", - "de": "deutsch", - "el": "greek", - "en": "english", - "eo": "esperanto", - "es": "espanol", - "et": "estonian", - "eu": "basque", - "fa": "persian", - "fi": "suomi", - "fo": "faroese", - "fr": "francais", - "fy": "frisian", - "ga": "irish", - "gd": "gaelic", - "gl": "galician", - "gu": "gujarati", - "he": "hebrew", - "hi": "hindi", - "hr": "croatian", - "hu": "hungarian", - "ia": "interlingua", - "id": "indonesian", - "is": "icelandic", - "it": "italiano", - "ja": "nihongo", - "jv": "javanese", - "ka": "georgian", - "kn": "kannada", - "ko": "hangul", - "la": "latin", - "lt": "lithuanian", - "lv": "latvian", - "mai": "bihari", - "mk": "macedonian", - "ml": "malayalam", - "mr": "marathi", - "ms": "malay", - "mt": "maltese", - "nb": "norsk", - "ne": "nepali", - "nl": "nederlands", - "oc": "occitan", - "pa": "punjabi", - "pl": "polski", - "pt": "portugues", - "ro": "romanian", - "ru": "russian", - "si": "sinhalese", - "sk": "slovak", - "sl": "slovenian", - "sq": "albanian", - "sr": "serbian", - "su": "sudanese", - "sv": "svenska", - "sw": "swahili", - "ta": "tamil", - "te": "telugu", - "th": "thai", - "ti": "tigrinya", - "tl": "tagalog", - "tr": "turkce", - "uk": "ukrainian", - "ur": "urdu", - "uz": "uzbek", - "vi": "vietnamese", - "xh": "xhosa", - "zh": "jiantizhongwen", - "zh_Hant": "fantizhengwen", - "zu": "zulu" - }, - "regions": { - "ar-EG": "ar_EG", - "bg-BG": "bg_BG", - "ca-ES": "ca_ES", - "cs-CZ": "cs_CZ", - "da-DK": "da_DK", - "de-AT": "de_AT", - "de-CH": "de_CH", - "de-DE": "de_DE", - "el-GR": "el_GR", - "en-AU": "en_AU", - "en-CA": "en_CA", - "en-GB": "en-GB_GB", - "en-IE": "en_IE", - "en-IN": "en_IN", - "en-MY": "en_MY", - "en-NZ": "en_NZ", - "en-PH": "en_PH", - "en-SG": "en_SG", - "en-US": "en_US", - "en-ZA": "en_ZA", - "es-AR": "es_AR", - "es-CL": "es_CL", - "es-CO": "es_CO", - "es-ES": "es_ES", - "es-MX": "es_MX", - "es-PE": "es_PE", - "es-US": "es_US", - "es-UY": "es_UY", - "es-VE": "es_VE", - "et-EE": "et_EE", - "fi-FI": "fi_FI", - "fil-PH": "fil_PH", - "fr-BE": "fr_BE", - "fr-CA": "fr_CA", - "fr-CH": "fr_CH", - "fr-FR": "fr_FR", - "hi-IN": "hi_IN", - "hu-HU": "hu_HU", - "id-ID": "id_ID", - "it-CH": "it_CH", - "it-IT": "it_IT", - "ja-JP": "ja_JP", - "ko-KR": "ko_KR", - "ms-MY": "ms_MY", - "ms-SG": "ms_SG", - "nb-NO": "no_NO", - "nl-BE": "nl_BE", - "nl-NL": "nl_NL", - "pl-PL": "pl_PL", - "pt-BR": "pt-BR_BR", - "pt-PT": "pt_PT", - "ro-RO": "ro_RO", - "ru-BY": "ru_BY", - "ru-RU": "ru_RU", - "sv-SE": "sv_SE", - "tr-TR": "tr_TR", - "uk-UA": "uk_UA", - "vi-VN": "vi_VN", - "zh-CN": "zh-CN_CN", - "zh-HK": "zh-TW_HK", - "zh-TW": "zh-TW_TW" - } - }, - "wikidata": { - "all_locale": null, - "custom": { - "WIKIPEDIA_LANGUAGES": [], - "wiki_netloc": {} - }, - "data_type": "traits_v1", - "languages": { - "af": "af", - "am": "am", - "ar": "ar", - "as": "as", - "az": "az", - "be": "be", - "bg": "bg", - "bn": "bn", - "bs": "bs", - "ca": "ca", - "ckb": "ckb", - "cs": "cs", - "da": "da", - "de": "de", - "el": "el", - "en": "en", - "es": "es", - "et": "et", - "fa": "fa", - "fi": "fi", - "fil": "tl", - "fo": "fo", - "fr": "fr", - "fy": "fy", - "gl": "gl", - "gsw": "als", - "gu": "gu", - "he": "he", - "hi": "hi", - "hsb": "hsb", - "hu": "hu", - "hy": "hy", - "id": "id", - "is": "is", - "it": "it", - "ja": "ja", - "jv": "jv", - "ka": "ka", - "km": "km", - "kn": "kn", - "ko": "ko", - "lb": "lb", - "lt": "lt", - "lv": "lv", - "mai": "mai", - "mk": "mk", - "ml": "ml", - "mn": "mn", - "mr": "mr", - "ms": "ms", - "nb": "no", - "ne": "ne", - "or": "or", - "os": "os", - "pa": "pa", - "pl": "pl", - "ps": "ps", - "pt": "pt", - "qu": "qu", - "ro": "ro", - "ru": "ru", - "sa": "sa", - "sah": "sah", - "sd": "sd", - "si": "si", - "sk": "sk", - "sl": "sl", - "sq": "sq", - "sr": "sr", - "ta": "ta", - "te": "te", - "th": "th", - "tr": "tr", - "uk": "uk", - "ur": "ur", - "uz": "uz", - "vi": "vi", - "yi": "yi", - "zh": "zh", - "zh_Hans": "zh", - "zh_Hant": "zh" - }, - "regions": { - "zh-CN": "zh", - "zh-HK": "zh", - "zh-MO": "zh", - "zh-MY": "zh", - "zh-SG": "zh", - "zh-TW": "zh", - "zh-classical": "zh-classical" - } - }, - "wikipedia": { - "all_locale": null, - "custom": { - "WIKIPEDIA_LANGUAGES": [ - "ab", - "ace", - "ady", - "af", - "als", - "alt", - "am", - "ami", - "an", - "ang", - "anp", - "ar", - "arc", - "ary", - "arz", - "as", - "ast", - "atj", - "av", - "avk", - "awa", - "ay", - "az", - "azb", - "ba", - "ban", - "bar", - "bat-smg", - "bcl", - "be", - "be-tarask", - "bg", - "bh", - "bi", - "bjn", - "blk", - "bm", - "bn", - "bo", - "bpy", - "br", - "bs", - "bug", - "bxr", - "ca", - "cbk-zam", - "cdo", - "ce", - "ceb", - "ch", - "chr", - "chy", - "ckb", - "co", - "cr", - "crh", - "cs", - "csb", - "cu", - "cv", - "cy", - "da", - "dag", - "de", - "din", - "diq", - "dsb", - "dty", - "dv", - "dz", - "ee", - "el", - "eml", - "en", - "eo", - "es", - "et", - "eu", - "ext", - "fa", - "fat", - "ff", - "fi", - "fiu-vro", - "fj", - "fo", - "fon", - "fr", - "frp", - "frr", - "fur", - "fy", - "ga", - "gag", - "gan", - "gcr", - "gd", - "gl", - "glk", - "gn", - "gom", - "gor", - "got", - "gpe", - "gu", - "guc", - "gur", - "guw", - "gv", - "ha", - "hak", - "haw", - "he", - "hi", - "hif", - "hr", - "hsb", - "ht", - "hu", - "hy", - "hyw", - "ia", - "id", - "ie", - "ig", - "ik", - "ilo", - "inh", - "io", - "is", - "it", - "iu", - "ja", - "jam", - "jbo", - "jv", - "ka", - "kaa", - "kab", - "kbd", - "kbp", - "kcg", - "kg", - "ki", - "kk", - "kl", - "km", - "kn", - "ko", - "koi", - "krc", - "ks", - "ksh", - "ku", - "kv", - "kw", - "ky", - "la", - "lad", - "lb", - "lbe", - "lez", - "lfn", - "lg", - "li", - "lij", - "lld", - "lmo", - "ln", - "lo", - "lt", - "ltg", - "lv", - "lzh", - "mad", - "mai", - "map-bms", - "mdf", - "mg", - "mhr", - "mi", - "min", - "mk", - "ml", - "mn", - "mni", - "mnw", - "mr", - "mrj", - "ms", - "mt", - "mwl", - "my", - "myv", - "mzn", - "nah", - "nan", - "nap", - "nds", - "nds-nl", - "ne", - "new", - "nia", - "nl", - "nn", - "no", - "nov", - "nqo", - "nrm", - "nso", - "nv", - "ny", - "oc", - "olo", - "om", - "or", - "os", - "pa", - "pag", - "pam", - "pap", - "pcd", - "pcm", - "pdc", - "pfl", - "pi", - "pih", - "pl", - "pms", - "pnb", - "pnt", - "ps", - "pt", - "pwn", - "qu", - "rm", - "rmy", - "rn", - "ro", - "roa-rup", - "roa-tara", - "ru", - "rue", - "rw", - "sa", - "sah", - "sat", - "sc", - "scn", - "sco", - "sd", - "se", - "sg", - "sh", - "shi", - "shn", - "si", - "simple", - "sk", - "skr", - "sl", - "sm", - "smn", - "sn", - "so", - "sq", - "sr", - "srn", - "ss", - "st", - "stq", - "su", - "sv", - "sw", - "szl", - "szy", - "ta", - "tay", - "tcy", - "te", - "tet", - "tg", - "th", - "ti", - "tk", - "tl", - "tly", - "tn", - "to", - "tpi", - "tr", - "trv", - "ts", - "tt", - "tum", - "tw", - "ty", - "tyv", - "udm", - "ug", - "uk", - "ur", - "uz", - "ve", - "vec", - "vep", - "vi", - "vls", - "vo", - "wa", - "war", - "wo", - "wuu", - "xal", - "xh", - "xmf", - "yi", - "yo", - "yue", - "za", - "zea", - "zh", - "zu" - ], - "wiki_netloc": { - "af": "af.wikipedia.org", - "als": "als.wikipedia.org", - "am": "am.wikipedia.org", - "ar": "ar.wikipedia.org", - "as": "as.wikipedia.org", - "az": "az.wikipedia.org", - "be": "be.wikipedia.org", - "bg": "bg.wikipedia.org", - "bn": "bn.wikipedia.org", - "bs": "bs.wikipedia.org", - "ca": "ca.wikipedia.org", - "ckb": "ckb.wikipedia.org", - "cs": "cs.wikipedia.org", - "da": "da.wikipedia.org", - "de": "de.wikipedia.org", - "el": "el.wikipedia.org", - "en": "en.wikipedia.org", - "es": "es.wikipedia.org", - "et": "et.wikipedia.org", - "fa": "fa.wikipedia.org", - "fi": "fi.wikipedia.org", - "fo": "fo.wikipedia.org", - "fr": "fr.wikipedia.org", - "fy": "fy.wikipedia.org", - "gl": "gl.wikipedia.org", - "gu": "gu.wikipedia.org", - "he": "he.wikipedia.org", - "hi": "hi.wikipedia.org", - "hsb": "hsb.wikipedia.org", - "hu": "hu.wikipedia.org", - "hy": "hy.wikipedia.org", - "id": "id.wikipedia.org", - "is": "is.wikipedia.org", - "it": "it.wikipedia.org", - "ja": "ja.wikipedia.org", - "jv": "jv.wikipedia.org", - "ka": "ka.wikipedia.org", - "km": "km.wikipedia.org", - "kn": "kn.wikipedia.org", - "ko": "ko.wikipedia.org", - "lb": "lb.wikipedia.org", - "lt": "lt.wikipedia.org", - "lv": "lv.wikipedia.org", - "mai": "mai.wikipedia.org", - "mk": "mk.wikipedia.org", - "ml": "ml.wikipedia.org", - "mn": "mn.wikipedia.org", - "mr": "mr.wikipedia.org", - "ms": "ms.wikipedia.org", - "ne": "ne.wikipedia.org", - "no": "no.wikipedia.org", - "or": "or.wikipedia.org", - "os": "os.wikipedia.org", - "pa": "pa.wikipedia.org", - "pl": "pl.wikipedia.org", - "ps": "ps.wikipedia.org", - "pt": "pt.wikipedia.org", - "qu": "qu.wikipedia.org", - "ro": "ro.wikipedia.org", - "ru": "ru.wikipedia.org", - "sa": "sa.wikipedia.org", - "sah": "sah.wikipedia.org", - "sd": "sd.wikipedia.org", - "si": "si.wikipedia.org", - "sk": "sk.wikipedia.org", - "sl": "sl.wikipedia.org", - "sq": "sq.wikipedia.org", - "sr": "sr.wikipedia.org", - "ta": "ta.wikipedia.org", - "te": "te.wikipedia.org", - "th": "th.wikipedia.org", - "tl": "tl.wikipedia.org", - "tr": "tr.wikipedia.org", - "uk": "uk.wikipedia.org", - "ur": "ur.wikipedia.org", - "uz": "uz.wikipedia.org", - "vi": "vi.wikipedia.org", - "yi": "yi.wikipedia.org", - "zh": "zh.wikipedia.org" - } - }, - "data_type": "traits_v1", - "languages": { - "af": "af", - "am": "am", - "ar": "ar", - "as": "as", - "az": "az", - "be": "be", - "bg": "bg", - "bn": "bn", - "bs": "bs", - "ca": "ca", - "ckb": "ckb", - "cs": "cs", - "da": "da", - "de": "de", - "el": "el", - "en": "en", - "es": "es", - "et": "et", - "fa": "fa", - "fi": "fi", - "fil": "tl", - "fo": "fo", - "fr": "fr", - "fy": "fy", - "gl": "gl", - "gsw": "als", - "gu": "gu", - "he": "he", - "hi": "hi", - "hsb": "hsb", - "hu": "hu", - "hy": "hy", - "id": "id", - "is": "is", - "it": "it", - "ja": "ja", - "jv": "jv", - "ka": "ka", - "km": "km", - "kn": "kn", - "ko": "ko", - "lb": "lb", - "lt": "lt", - "lv": "lv", - "mai": "mai", - "mk": "mk", - "ml": "ml", - "mn": "mn", - "mr": "mr", - "ms": "ms", - "nb": "no", - "ne": "ne", - "or": "or", - "os": "os", - "pa": "pa", - "pl": "pl", - "ps": "ps", - "pt": "pt", - "qu": "qu", - "ro": "ro", - "ru": "ru", - "sa": "sa", - "sah": "sah", - "sd": "sd", - "si": "si", - "sk": "sk", - "sl": "sl", - "sq": "sq", - "sr": "sr", - "ta": "ta", - "te": "te", - "th": "th", - "tr": "tr", - "uk": "uk", - "ur": "ur", - "uz": "uz", - "vi": "vi", - "yi": "yi", - "zh": "zh", - "zh_Hans": "zh", - "zh_Hant": "zh" - }, - "regions": { - "zh-CN": "zh", - "zh-HK": "zh", - "zh-MO": "zh", - "zh-MY": "zh", - "zh-SG": "zh", - "zh-TW": "zh", - "zh-classical": "zh-classical" - } - }, - "yahoo": { - "all_locale": "any", - "custom": {}, - "data_type": "traits_v1", - "languages": { - "ar": "ar", - "bg": "bg", - "cs": "cs", - "da": "da", - "de": "de", - "el": "el", - "en": "en", - "es": "es", - "et": "et", - "fi": "fi", - "fr": "fr", - "he": "he", - "hr": "hr", - "hu": "hu", - "it": "it", - "ja": "ja", - "ko": "ko", - "lt": "lt", - "lv": "lv", - "nl": "nl", - "no": "no", - "pl": "pl", - "pt": "pt", - "ro": "ro", - "ru": "ru", - "sk": "sk", - "sl": "sl", - "sv": "sv", - "th": "th", - "tr": "tr", - "zh_Hans": "zh_chs", - "zh_Hant": "zh_cht" - }, - "regions": {} - }, - "z-library": { - "all_locale": "", - "custom": { - "ext": [ - "", - "TXT", - "PDF", - "FB2", - "EPUB", - "LIT", - "MOBI", - "RTF", - "DJV", - "DJVU", - "AZW", - "AZW3" - ], - "year_from": [ - "", - "2023", - "2022", - "2021", - "2020", - "2019", - "2018", - "2017", - "2016", - "2015", - "2014", - "2013", - "2012", - "2011", - "2010", - "2009", - "2008", - "2007", - "2006", - "2005", - "2004", - "2003", - "2002", - "2001", - "2000", - "1999", - "1998", - "1997", - "1996", - "1995", - "1994", - "1993", - "1992", - "1991", - "1990", - "1989", - "1988", - "1987", - "1986", - "1985", - "1984", - "1983", - "1982", - "1981", - "1980", - "1979", - "1978", - "1977", - "1976", - "1975", - "1974", - "1973", - "1972", - "1971", - "1970", - "1969", - "1968", - "1967", - "1966", - "1965", - "1964", - "1963", - "1962", - "1961", - "1960", - "1959", - "1958", - "1957", - "1956", - "1955", - "1954", - "1953", - "1952", - "1951", - "1950", - "1949", - "1948", - "1947", - "1946", - "1945", - "1944", - "1943", - "1942", - "1941", - "1940", - "1939", - "1938", - "1937", - "1936", - "1935", - "1934", - "1933", - "1932", - "1931", - "1930", - "1929", - "1928", - "1927", - "1926", - "1925", - "1924", - "1923", - "1922", - "1921", - "1920", - "1919", - "1918", - "1917", - "1916", - "1915", - "1914", - "1913", - "1912", - "1911", - "1910", - "1909", - "1908", - "1907", - "1906", - "1905", - "1904", - "1903", - "1902", - "1901", - "1900", - "1899", - "1898", - "1897", - "1896", - "1895", - "1894", - "1893", - "1892", - "1891", - "1890", - "1889", - "1888", - "1887", - "1886", - "1885", - "1884", - "1883", - "1882", - "1881", - "1880", - "1879", - "1878", - "1877", - "1876", - "1875", - "1874", - "1873", - "1872", - "1871", - "1870", - "1869", - "1868", - "1867", - "1866", - "1865", - "1864", - "1863", - "1862", - "1861", - "1860", - "1859", - "1858", - "1857", - "1856", - "1855", - "1854", - "1853", - "1852", - "1851", - "1850", - "1849", - "1848", - "1847", - "1846", - "1845", - "1844", - "1843", - "1842", - "1841", - "1840", - "1839", - "1838", - "1837", - "1836", - "1835", - "1834", - "1833", - "1832", - "1831", - "1830", - "1829", - "1828", - "1827", - "1826", - "1825", - "1824", - "1823", - "1822", - "1821", - "1820", - "1819", - "1818", - "1817", - "1816", - "1815", - "1814", - "1813", - "1812", - "1811", - "1810", - "1809", - "1808", - "1807", - "1806", - "1805", - "1804", - "1803", - "1802", - "1801", - "1800" - ], - "year_to": [ - "", - "2023", - "2022", - "2021", - "2020", - "2019", - "2018", - "2017", - "2016", - "2015", - "2014", - "2013", - "2012", - "2011", - "2010", - "2009", - "2008", - "2007", - "2006", - "2005", - "2004", - "2003", - "2002", - "2001", - "2000", - "1999", - "1998", - "1997", - "1996", - "1995", - "1994", - "1993", - "1992", - "1991", - "1990", - "1989", - "1988", - "1987", - "1986", - "1985", - "1984", - "1983", - "1982", - "1981", - "1980", - "1979", - "1978", - "1977", - "1976", - "1975", - "1974", - "1973", - "1972", - "1971", - "1970", - "1969", - "1968", - "1967", - "1966", - "1965", - "1964", - "1963", - "1962", - "1961", - "1960", - "1959", - "1958", - "1957", - "1956", - "1955", - "1954", - "1953", - "1952", - "1951", - "1950", - "1949", - "1948", - "1947", - "1946", - "1945", - "1944", - "1943", - "1942", - "1941", - "1940", - "1939", - "1938", - "1937", - "1936", - "1935", - "1934", - "1933", - "1932", - "1931", - "1930", - "1929", - "1928", - "1927", - "1926", - "1925", - "1924", - "1923", - "1922", - "1921", - "1920", - "1919", - "1918", - "1917", - "1916", - "1915", - "1914", - "1913", - "1912", - "1911", - "1910", - "1909", - "1908", - "1907", - "1906", - "1905", - "1904", - "1903", - "1902", - "1901", - "1900", - "1899", - "1898", - "1897", - "1896", - "1895", - "1894", - "1893", - "1892", - "1891", - "1890", - "1889", - "1888", - "1887", - "1886", - "1885", - "1884", - "1883", - "1882", - "1881", - "1880", - "1879", - "1878", - "1877", - "1876", - "1875", - "1874", - "1873", - "1872", - "1871", - "1870", - "1869", - "1868", - "1867", - "1866", - "1865", - "1864", - "1863", - "1862", - "1861", - "1860", - "1859", - "1858", - "1857", - "1856", - "1855", - "1854", - "1853", - "1852", - "1851", - "1850", - "1849", - "1848", - "1847", - "1846", - "1845", - "1844", - "1843", - "1842", - "1841", - "1840", - "1839", - "1838", - "1837", - "1836", - "1835", - "1834", - "1833", - "1832", - "1831", - "1830", - "1829", - "1828", - "1827", - "1826", - "1825", - "1824", - "1823", - "1822", - "1821", - "1820", - "1819", - "1818", - "1817", - "1816", - "1815", - "1814", - "1813", - "1812", - "1811", - "1810", - "1809", - "1808", - "1807", - "1806", - "1805", - "1804", - "1803", - "1802", - "1801", - "1800" - ] - }, - "data_type": "traits_v1", - "languages": { - "af": "afrikaans", - "ak": "akan", - "am": "amharic", - "ar": "arabic", - "as": "assamese", - "az": "azerbaijani", - "be": "belarusian", - "bg": "bulgarian", - "bm": "bambara", - "bo": "tibetan", - "br": "breton", - "bs": "bosnian", - "ca": "catalan", - "ce": "chechen", - "cs": "czech", - "cv": "chuvash", - "cy": "welsh", - "da": "danish", - "de": "german", - "dz": "dzongkha", - "ee": "ewe", - "el": "greek", - "en": "english", - "eo": "esperanto", - "es": "spanish", - "et": "estonian", - "eu": "basque", - "fa": "persian", - "fi": "finnish", - "fo": "faroese", - "fr": "french", - "ga": "irish", - "gl": "galician", - "gu": "gujarati", - "gv": "manx", - "ha": "hausa", - "he": "hebrew", - "hi": "hindi", - "hr": "croatian", - "hu": "hungarian", - "hy": "armenian", - "ia": "interlingua", - "id": "indonesian", - "ig": "igbo", - "is": "icelandic", - "it": "italian", - "ja": "japanese", - "jv": "javanese", - "ka": "georgian", - "ki": "kikuyu", - "kk": "kazakh", - "kl": "kalaallisut", - "kn": "kannada", - "ko": "korean", - "ks": "kashmiri", - "ku": "kurdish", - "kw": "cornish", - "ky": "kyrgyz", - "lb": "luxembourgish", - "lg": "ganda", - "ln": "lingala", - "lo": "lao", - "lt": "lithuanian", - "lu": "luba-katanga", - "lv": "latvian", - "mg": "malagasy", - "mk": "macedonian", - "ml": "malayalam", - "mn": "mongolian", - "mr": "marathi", - "mt": "maltese", - "my": "burmese", - "ne": "nepali", - "nl": "dutch", - "no": "norwegian", - "oc": "occitan", - "om": "oromo", - "or": "odia", - "pa": "punjabi", - "pl": "polish", - "ps": "pashto", - "pt": "portuguese", - "qu": "quechua", - "rm": "romansh", - "rn": "rundi", - "ro": "romanian", - "ru": "russian", - "rw": "kinyarwanda", - "sa": "sanskrit", - "sc": "sardinian", - "sd": "sindhi", - "sg": "sango", - "si": "sinhala", - "sk": "slovak", - "sl": "slovenian", - "sn": "shona", - "so": "somali", - "sq": "albanian", - "sr": "serbian", - "su": "sundanese", - "sv": "swedish", - "sw": "swahili", - "ta": "tamil", - "te": "telugu", - "tg": "tajik", - "th": "thai", - "ti": "tigrinya", - "tk": "turkmen", - "tr": "turkish", - "tt": "tatar", - "uk": "ukrainian", - "ur": "urdu", - "uz": "uzbek", - "vi": "vietnamese", - "wo": "wolof", - "xh": "xhosa", - "yi": "yiddish", - "yo": "yoruba", - "zh": "chinese", - "zu": "zulu" - }, - "regions": {} - } -} \ No newline at end of file diff --git a/searx/data/external_bangs.json b/searx/data/external_bangs.json deleted file mode 100644 index ed2cedc5c..000000000 --- a/searx/data/external_bangs.json +++ /dev/null @@ -1,19067 +0,0 @@ -{ - "version": "260", - "trie": { - "4": { - "2": "//profile.intra.42.fr/searches/search?query=\u0002\u000139", - "\u0010": "//www.4fitnessrules.com/workout-videos/?frm_search=\u0002\u000151", - "7": "//www.47news.jp/search?phrase=\u0002\u00010", - "g": { - "\u0010": "http://4chan.org/g/\u0002\u000135", - "a": "//archive.rebeccablacktech.com/g/search/text/\u0002/\u00018" - }, - "_b": "http://boards.4chan.org/b/catalog#s=\u0002\u00010", - "cc": "http://implyingrigged.info/w/index.php?search=\u0002\u00010", - "ch": { - "\u0010": "//4chan.org/\u0002\u00011126", - "a": { - "\u0010": "//boards.4chan.org/a/catalog#s=\u0002\u00015", - "n": { - "\u0010": "//duckduckgo.com/?q=\u0002+site%3A4chan.org&t=ffsb\u000146", - "b": "http://4chan.org/b/\u0002\u000160" - } - }, - "c": "//boards.4chan.org/\u0002/catalog\u000197", - "g": "//boards.4chan.org/g/catalog#s=\u0002\u00016", - "n": { - "\u0010": "//archive.nyafuu.org/n/search/text/\u0002/\u00010", - "ews": "//boards.4chan.org/news/catalog#s=\u0002\u00010" - }, - "v": "//boards.4chan.org/v/catalog#s=\u0002\u00010", - "fa": "//boards.4chan.org/fa/catalog#s=\u0002\u00014", - "mu": "//boards.4chan.org/mu/catalog#s=\u0002\u00010", - "int": "//boards.4chan.org/int/catalog#s=\u0002\u00010", - "r9k": "//boards.4chan.org/r9k/catalog#s=\u0002\u00010", - "random": "//boards.4chan.org/b/catalog#s=\u0002\u00010", - "search": "//4chansearch.com/?q=\u0002\u00016" - }, - "pl": { - "\u0010": "http://www.4players.de/4players.php/suchergebnis/Allgemein/4players/?s=\u0002\u00010", - "ayers": "http://www.4players.de/4players.php/suchergebnis/Allgemein/4players/?s=\u0002\u00010", - "ebs": "//archive.4plebs.org/_/search/text/\u0002/\u0001499" - }, - "sq": "//foursquare.com/explore?mode=url&nearGeoId=&q=\u0002\u00010", - "01games": "//store.401games.ca/pages/search-results?q=\u0002\u00010", - "cvg": "http://boards.4chan.org/vg/catalog#s=\u0002\u0001146", - "pda": "http://4pda.ru/forum/index.php?act=search&source=all&forums[]=all&query=\u0002&x=0&y=0\u000117", - "shared": "http://search.4shared.com/q/CCAD/1/\u0002\u00010", - "sound": "http://www.4sound.dk/search/\u0002\u00010", - "x4community": "http://www.4x4community.co.za/forum/threadloom/threadloom.php?query=\u0002\u00010", - "x4direct": "http://www.4x4direct.co.za/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010" - }, - "5": { - "2": "http://food52.com/recipes/search?q=\u0002\u00017", - "a": "//www.quintoandar.com.br/alugar/imovel/\u0002/\u00010", - "e": { - "\u0010": "http://engl393-dnd5th.wikia.com/wiki/Special:Search?query=\u0002\u00013", - "w": "http://dnd5e.wikidot.com/search:site/a/p/q/\u0002\u00013" - }, - "\u0010": "http://fiverr.com/gigs/search?query=\u0002\u000140", - "00": { - "\u0010": "//prime.500px.com/search/keywords=\u0002\u00013", - "px": "//500px.com/search?q=\u0002\u00014" - }, - "38": "http://fivethirtyeight.com/?s=\u0002\u000185", - "ch": { - "\u0010": "//find.5ch.net/search?q=\u0002\u0001283", - "annel": "//find.5ch.net/search?q=\u0002\u0001283" - }, - "mods": "//www.gta5-mods.com/search/\u0002\u00010" - }, - "9": { - "1": { - "1": { - "\u0010": "http://www.911tabs.com/search.php?search=\u0002&type=band\u00014", - "s": "http://www.911tabs.com/search.php?search=\u0002&type=song\u00010" - }, - "\u0010": "http://www.91mobiles.com/topic/\u0002/all\u00010" - }, - "3": { - "\u0010": "//hermetic.com/index?do=search&id=\u0002\u00010", - "1women": "//931women.com/?s=\u0002: \u00015" - }, - "\u0010": "http://9pp.co/search?q=\u0002\u000120", - "g": { - "\u0010": "http://9gag.com/search?query=\u0002\u000193", - "ag": "//9gag.com/search?query=\u0002\u0001349" - }, - "5g": { - "\u0010": "//cse.google.com/cse?cx=008464549922976904202:uxmexxzm3k4&q=\u0002\u00010", - "oogle": "//9to5google.com/?s=\u0002\u00016" - }, - "90": "http://990finder.foundationcenter.org/990results.aspx?990_type=&fn=\u0002&st=&zp=&ei=&fy=&action=Search\u00013", - "99": "//999.md/ru/search?query=\u0002\u00010", - "5mac": "http://9to5mac.com/?s=\u0002\u000137", - "9quotes": "//99quotes.me/search?q=\u0002\u00013" - }, - "a": { - "2": "http://alternativeto.net/browse/search/?q=\u0002&ignoreExactMatch=true\u0001206", - "5": "//v5.angular.io/api?query=\u0002\u00010", - "6": "//v6.angular.io/api?query=\u0002\u00010", - "7": "//v7.angular.io/api?query=\u0002\u00010", - "a": { - "a": "//careers-calstate.aaa.com/search-results?keywords=\u0002\u000118", - "\u0010": "http://www.amazon.com/s/&url=search-alias%3Dautomotive&field-keywords=\u0002\u000118", - "e": "http://www.albumartexchange.com/covers.php?q=\u0002\u00010", - "j": "//www.allaboutjazz.com/php/article_center.php?in_artist=\u0002&in_album=&in_label=&in_author=&in_type=0&orderby=dt_pub\u00019", - "m": { - "\u0010": "//careers.aam.com/us/en/search-results?keywords=\u0002\u00010", - "ulehti": "//duckduckgo.com/?sites=www.aamulehti.fi&kh=1&q=\u0002&ia=web\u00010" - }, - "t": "http://www.getty.edu/vow/AATServlet?english=N&find=\u0002&logic=AND&page=1¬e=\u000117", - "u": "//www.amazon.com.au/s?k=\u0002\u0001211", - "w": "http://aceattorney.wikia.com/wiki/\u0002\u000117", - "x": "http://www.albumartexchange.com/covers.php?q=\u0002\u00010", - "dl": "http://www.aadl.org/catalog/search/keyword/\u0002\u00010", - "kb": "//www.aakb.dk/search/ting/\u0002?\u00010", - "pt": "http://www.aptoide.com/search/view?search_top= \u0002 &x=0&y=0\u00010", - "rd": "http://www.aardwolf.com/wiki/index.php/Site/Search?q=\u0002\u00010", - "re": "//aare.edu.ee/dictionary.html?query=\u0002&lang=ee\u00010" - }, - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "b": { - "\u0010": "http://airbitz.co/search?term=\u0002\u000111", - "b": { - "\u0010": "//new.abb.com/search/results#query=\u0002\u00010", - "r": "http://www.abbreviations.com/\u0002\u000129", - "uc": "http://www.abbuc.de/component/search/?searchword=\u0002\u00010", - "ott": "//www.jobs.abbott/us/en/search-results?keywords=\u0002\u00010" - }, - "c": { - "\u0010": "http://abcnotation.com/searchTunes?q=\u0002\u00017", - "am": "//www.abcam.com/products?keywords=\u0002\u00010", - "au": "http://search.abc.net.au/s/search.html?query=\u0002&collection=abcall_meta&form=simple\u00015", - "ya": "//www.abcya.com/search/?term=\u0002&type=\u0002\u00010", - "games": "http://www.abcgames.cz/?p=sekcia_hladaj&key=\u0002\u00010", - "news": "http://abcnews.go.com/search?searchtext=\u0002\u000147", - "notation": "http://abcnotation.com/searchTunes?q=\u0002&f=c&o=a&s=0\u00010" - }, - "e": { - "\u0010": "http://www.abesmarket.com/catalogsearch/result/?cat=5&order=relevance&dir=desc&q=\u0002\u00019", - "uk": "http://www.abebooks.co.uk/servlet/SearchResults?kn=\u0002\u00013", - "books": { - "\u0010": "http://www.abebooks.com/servlet/SearchResults?kn=\u0002\u000184", - "de": "http://www.abebooks.de/servlet/SearchResults?kn=\u0002&sts=t&x=0&y=0\u00016" - } - }, - "n": { - "\u0010": "http://abr.business.gov.au/Search.aspx?SearchText=\u0002\u00017", - "b": "//www.airbnb.com/s/\u0002/all\u000110" - }, - "r": { - "\u0010": "//www.amazon.com.br/s?k=\u0002 \u0001377", - "etelibro": "http://www.abretelibro.com/foro/search.php?keywords=\u0002&sf=titleonly\u00010" - }, - "s": { - "\u0010": "http://www.allbookstores.com/search?q=\u0002\u00013", - "hire": "http://aberdeenshire.gov.uk/search?search=\u0002\u00010" - }, - "ol": "//abo.finna.fi/Search/Results?lookfor=\u0002&type=AllFields\u00010", - "adise": "//dictionary.abadis.ir/?LnType=entofa&Word=\u0002\u00010", - "adisf": "//dictionary.abadis.ir/?lntype=fatoen&word=\u0002\u00016", - "andonia": "http://www.abandonia.com/en/search_abandonia/\u0002\u00016", - "-er": "http://www.lingvo-online.ru/en/Translate/en-ru/\u0002\u00010", - "fahrt": "//mobile.bahn.de/bin/mobil/bhftafel.exe/dox?input=\u0002&productsFilter=1111111111000000&time=actual&maxJourneys=40&start=Suchen&boardType=Abfahrt&rt=1\u00010", - "iunity": "//www.abiunity.de/datenbank.php?boardid=48#!v=searchdb&search=\u0002&boardid=48\u00010", - "out": "http://search.about.com/fullsearch.htm?terms=\u0002\u00018", - "uela": "http://miabuelavende.com/?s=\u0002&post_type=product\u00010", - "useip": "//www.abuseipdb.com/check/\u0002\u00010", - "yss": "http://wall.alphacoders.com/search.php?search=\u0002\u000113" - }, - "c": { - "a": { - "\u0010": "//www.amazon.ca/s?k=\u0002\u0001666", - "d": { - "\u0010": "http://dic.academic.ru/searchall.php?SWord=\u0002\u00018", - "emia": "http://www.academia.edu/people/search?utf8=%E2%9C%93&q=\u0002\u000111", - "emicearth": "//academicearth.org/?s=\u0002\u00010" - } - }, - "\u0010": "http://www.allocine.fr/recherche/?q=\u0002\u000119", - "b": "//americancustomboxes.com/?s=\u0002\u00013", - "c": { - "\u0010": "//aleth.io/account/\u0002\u00010", - "c": "//www.accc.gov.au/site-search/\u0002\u00010", - "ountcia": "//www.accountcia.com/?geodir_search=1&stype=gd_place&sgd_placecategory%5B%5D=&s=\u0002\u00010", - "ountkiller": "http://www.accountkiller.com/en/delete-\u0002-account\u00014", - "uweather": "http://www.accuweather.com/us-city-list.asp?zipcode=\u0002\u000144" - }, - "e": { - "\u0010": "http://www.acehardware.com/search/index.jsp?kwCatId=&kw=\u0002&origkw=\u0002&f=Taxonomy/ACE/19541496&sr=1\u00010", - "r": "http://us.acer.com/ac/en/US/search?q=\u0002\u00010", - "forum": "http://forum.acelaboratory.com/search.php?keywords=\u0002\u00010" - }, - "h": "http://www.archchinese.com/chinese_english_dictionary.html?find=\u0002\u000118", - "l": { - "\u0010": "//www.aclweb.org/anthology/search/?q=\u0002\u00014", - "u": "//www.aclu.org/search/\u0002?show_aff=1\u00010" - }, - "m": { - "\u0010": "http://dl.acm.org/results.cfm?dlr=GUIDE&query=\u0002\u00015", - "dl": "//dl.acm.org/results.cfm?query=\u0002\u00010" - }, - "n": { - "\u0010": "//www.amazon.cn/s?k=\u0002\u00010", - "e": "//www.acne.org/search.php?i=&q=\u0002\u00010", - "l": "//applecoach.nl/?s=\u0002\u00010" - }, - "p": "http://plugins.cordova.io/#/search?search=\u0002\u00010", - "r": { - "\u0010": "http://www.acronymfinder.com/\u0002.html\u00018", - "o": { - "\u0010": "http://www.acronymfinder.com/~/search/af.aspx?string=exact&Acronym=\u0002\u000159", - "nym": { - "\u0010": "http://www.acronymfinder.com/~/search/af.aspx?string=exact&Acronym=\u0002\u000159", - "s": "http://www.acronymfinder.com/~/search/af.aspx?string=exact&Acronym=\u0002\u000159" - } - } - }, - "s": "http://pubs.acs.org/action/doSearch?AllField=\u0002\u00010", - "w": { - "\u0010": "http://animalcrossing.wikia.com/wiki/Special:Search?query=\u0002\u000116", - "iki": "//assassinscreed.fandom.com/wiki/Special:Search?query=\u0002\u00013" - }, - "fun": "http://www.acfun.cn/search/?#query=\u0002 \u00013", - "kuc": "//www.amarchitrakatha.com/us/catalogsearch/result/?cat=0&q=\u0002\u00010", - "ortar": "http://cortas.elpais.com/encode.pl?u=http://\u0002\u00010", - "quiredby": "//acquiredby.co/?s=\u0002\u00010", - "tivestate": "http://www.activestate.com/search/index.html?cx=005567415255730122040%3Aiof7ftsiexy&cof=FORID%3A11&sa.x=0&sa.y=0&q=\u0002#1013\u00010", - "tuly": "//www.actuly.fr/?s=\u0002\u00010", - "urazine": "http://acurazine.com/forums/search.php?do=showgcs&query=\u0002\u00010" - }, - "d": { - "a": { - "\u0010": "http://www.ada-auth.org/search-rm05.cgi?SearchA=\u0002&SearchO=&SearchN=\u00014", - "blog": "//blog.adafruit.com/?s=\u0002\u00010", - "derana": "http://adaderana.lk/search_results.php?mode=1&show=1&query=\u0002\u00010", - "fruit": "//www.adafruit.com/?q=\u0002\u000120", - "gio": "http://www.adagio.com/search/index.html?query=\u0002\u00010" - }, - "\u0010": "http://apple.stackexchange.com/search?q=\u0002\u000117", - "b": "http://arquivodabola.com.br/busca.html?termo=\u0002\u00010", - "c": "//developer.apple.com/search/index.php?q=\u0002\u00010", - "e": { - "\u0010": "//www.amazon.de/s?k=\u0002\u00010", - "s": "//smile.amazon.de/s/ref=nb_sb_noss?field-keywords=\u0002\u000119", - "v": "//developer.apple.com/search/?q=\u0002\u000188", - "fb": "//www.amazon.de/s?k=\u0002&i=english-books\u00010", - "lung": "http://woerterbuchnetz.de/Adelung/?lemma=\u0002\u00010" - }, - "f": "//forums.developer.apple.com/search.jspa?q=\u0002\u00010", - "i": { - "\u0010": "//www.adiglobaldistribution.us/search?criteria=\u0002\u00010", - "das": "http://www.adidas.fr/search?q=\u0002\u00013" - }, - "n": "http://animedigitalnetwork.fr/video#search=\u0002\u00010", - "r": "//adrenaline.uol.com.br/site/pesquisa/\u0002\u00017", - "s": { - "\u0010": "//ui.adsabs.harvard.edu/#search/q=\u0002\u0001190", - "k": "http://forums.autodesk.com/t5/forums/searchpage/tab/message?q=\u0002\u00010", - "r": { - "\u0010": "//www.adsrsounds.com/?src=\u0002\u00010", - "ef": "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?db_key=ALL&bibcode=\u0002 \u00010" - }, - "abs": "http://adsabs.harvard.edu//cgi-bin/basic_connect?qsearch=\u0002\u00018", - "beta": "//ui.adsabs.harvard.edu/#search/q=\u0002\u0001190", - "labs": "http://labs.adsabs.harvard.edu/ui/cgi-bin/topicSearch?q=\u0002\u00010" - }, - "v": { - "\u0010": "//duckduckgo.com/?q=site%3Aadvrider.com+\u0002\u00010", - "fn": "http://uk.advfn.com/p.php?pid=qkquote&symbol=\u0002 \u00010", - "erts": "http://www.adverts.ie/for-sale/q_\u0002/\u00010", - "gta": "//advancedgta.com/?s=\u0002\u00010" - }, - "z": { - "\u0010": "//www.audeze.com/search?q=\u0002*\u00010", - "una": "//www.adzuna.co.uk/jobs/search?q=\u0002 \u00010" - }, - "me": "//www.adme.ru/search/?q=\u0002\u00010", - "oc": "//docs.ansible.com/ansible/latest/search.html?q=\u0002\u000111", - "om": "http://ancardia.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "or": "//www.adorama.com/l/?searchinfo=\u0002\u00010", - "dgene": "//www.addgene.org/search/advanced/?q=\u0002\u00017", - "dicting": { - "\u0010": "http://www.addictinggames.com/search/games.jsp?gameKeyword=\u0002\u00010", - "-games": "http://www.addictinggames.com/search/games.jsp?gameKeyword=\u0002\u00010" - }, - "dons": "http://addons.prestashop.com/fr/recherche?search_query=\u0002\u000115", - "dtopocket": "//getpocket.com/edit?url=\u0002\u00010", - "jective": "http://adjective1.com/?s=\u0002\u00010", - "libris": { - "\u0010": "//www.adlibris.com/se/sok?q=\u0002\u00017", - "dk": "http://www.adlibris.com/dk/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010", - "fi": "http://www.adlibris.com/fi/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010", - "no": "http://www.adlibris.com/no/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010", - "se": "http://www.adlibris.com/se/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010" - }, - "minwiki": "//www.adminwiki.fr/start?do=search&id=\u0002\u00010", - "obe": "http://www.adobe.com/cfusion/search/index.cfm?loc=en_us&term=\u0002\u000110", - "talem": "//careers.adtalem.com/us/en/search-results?keywords=\u0002\u00010" - }, - "e": { - "\u0010": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001233", - "o": "//www.ae.com/search/\u0002\u00010", - "q": "http://ae7q.com/query/data/CallHistory.php?CALL=\u0002\u00010", - "s": "//www.amazon.es/s?k=\u0002\u000179", - "iou": "//austria-forum.org/Search.jsp?category=Austria-Forum&sname=name%2Csuchbegriff&query=\u0002+&searchType=default&useShortcuts=y&useSynonyms=n&doFuzzy=y&minResults=15\u00010", - "met": "http://www.aemet.es/es/buscador?modo=and&orden=n&tipo=sta&str=\u0002\u000134", - "ris": "//duckduckgo.com/?q=site%3Aimirhil.fr+\u0002\u00010", - "robis": "//www.aerobis.com/en/?s=\u0002\u00010" - }, - "f": { - "\u0010": "http://www.acronymfinder.com/\u0002.html\u00018", - "c": { - "\u0010": "//www.arsenal.com/search?search=\u0002\u00010", - "ind": "//www.afcindustries.com/products/search.aspx?search=\u0002\u00010" - }, - "h": "//androidfilehost.com/?w=search&s=\u0002\u00010", - "l": "//learn.adafruit.com/search?q=\u0002\u00010", - "p": { - "\u0010": "http://www.afpforum.com/AFPForum/Search/Results.aspx?pn=1&smd=8&fst=\u0002&fto=7&mui=3&t=2\u00010", - "f": "http://www.afpforum.com/AFPForum/Search/Results.aspx?pn=1&smd=8&fst=\u0002&fto=7&mui=3&t=2\u00010", - "ls": "http://afpl.ent.sirsi.net/client/default/search/results?qu=\u0002&te=ILS\u00010", - "ubs": "http://www.e-publishing.af.mil/index.asp?txtSearchWord=\u0002&rdoFormPub=rdoPub\u00010" - }, - "r": "//www.amazon.fr/s?k=\u0002\u00012123", - "t": { - "\u0010": "//www.adafruit.com/search?q=\u0002\u000112", - "ership": "//track.aftership.com/\u0002\u00018", - "vhacks": "//aftvhacks.de/?s=\u0002\u00010" - }, - "inna": "//aalto.finna.fi/Search/Results?lookfor=\u0002\u00010", - "wiki": "//af.wikipedia.org/w/index.php?search=\u0002&title=Spesiaal%3ASoek&go=Wys\u00014" - }, - "g": { - "\u0010": "http://www.android.gs/?s=&q=\u0002\u000113", - "e": { - "\u0010": "//www.amazon.de/s?k=\u0002\u00010", - "r": { - "\u0010": "//www.amazon.de/s?k=\u0002\u00010", - "rit": "//android-review.googlesource.com/q/\u0002\u00010" - } - }, - "s": "//adventuregamers.com/games/search?keywords=\u0002\u00010", - "dl": "http://duckduckgo.com/?q=\u0002+site:artsites.ucsc.edu/GDead/agdl/+!\u00010", - "ri": { - "\u0010": "//www.agrireseau.net/documents?r=\u0002\u00010", - "cola": "//agricola.nal.usda.gov/vwebv/search?searchArg=\u0002&searchCode=GKEY%5E&setLimit=1&recCount=10&searchType=1&page.search.search.button=Search\u00010" - }, - "ame": { - "\u0010": "http://www.agame.com/search?searchTerm=\u0002\u00013", - "s": "//www.anaitgames.com/buscador.php?search=\u0002\u00010" - }, - "oga": "//www.arturogoga.com/?s=\u0002\u00010", - "ora": { - "\u0010": "http://agora.gg/search/\u0002\u00010", - "il": "//agora.co.il/toGet.asp?iseek=\u0002\u00010" - } - }, - "h": { - "\u0010": "//www.ah.nl/zoeken?rq=\u0002\u000128", - "d": { - "\u0010": "//ahdictionary.com/word/search.html?q=\u0002&submit.x=0&submit.y=0\u000140", - "b": "//arkhamdb.com/find?q=\u0002\u000111" - }, - "k": "http://www.autohotkey.com/search/search.php?site=4&refine=0&template_demo=phpdig.html&result_page=search.php&search=Go+...&limite=100&option=start&path=docs/&query_string=\u0002\u00013", - "w": "http://www.arkhamhorrorwiki.com/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "metcadirci": "//ahmetcadirci.com.tr/search/?q=\u0002\u00010", - "mia": "//ahmia.fi/search/?q=\u0002\u00018", - "refs": "//ahrefs.com/site-explorer/overview/v2/subdomains/recent?target=\u0002\u00013" - }, - "i": { - "n": "//www.amazon.in/s?k=\u0002\u000195", - "p": "http://scitation.aip.org/search?value1=\u0002&option1=fulltext\u00010", - "s": { - "\u0010": "http://archive.is/\u0002\u0001410", - "h": "http://www.aish.com/search/?keywords=\u0002\u00010", - "tars": "http://aikatsustars.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "t": { - "\u0010": "//www.amazon.it/s?k=\u0002\u0001961", - "opics": "//aitopics.org/search?q=\u0002\u00010" - }, - "\u0010": "//www.amazon.in/s?k=\u0002 \u0001536", - "on": "http://aion.wikia.com/wiki/index.php?search=\u0002&fulltext=0\u00010", - "r1": "http://www.air1.com/search.aspx?searchterm=\u0002\u00010", - "rn": { - "\u0010": "//airnav.com/airport/\u0002\u00013", - "av": "//airnav.com/airport/\u0002\u00013" - }, - "daily": "//www.aidaily.co.uk/search?q=\u0002\u00010", - "den": "//aidenpromotions.com/blog/?s=phones \u0002\u00010", - "fit": "http://www.aifittings.com/searchResults?q=\u0002\u00010", - "friends": "http://aikatsu-friends.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "hit": "//www.aihitdata.com/search/companies?i=\u0002\u00010", - "jobs": "//ai-jobs.net/?search_keywords=\u0002\u00010", - "katsu": "http://aikatsu.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "rbnb": "//www.airbnb.com/s/\u0002\u000152", - "rforums": "http://airforums.com/?=\u0002:\u00010", - "rframes": "http://www.airframes.org/reg/\u0002\u00010", - "rlinehyd": "//www.airlinehyd.com/Results.aspx?srh=\u0002\u00010", - "rliners": "http://www.airliners.net/search?keywords=\u0002\u00013", - "rmo": "//air.mozilla.org/search/?q=\u0002\u00010", - "rquality": "//www.goodtobreathein.com/?zipcode=\u0002\u00010", - "rsoftdb": "//www.airsoftdb.com/search/?q=\u0002\u00010" - }, - "j": { - "a": { - "\u0010": "http://america.aljazeera.com/search.html?q=\u0002\u00010", - "tt": "http://www.alljapaneseallthetime.com/blog/?s=\u0002\u00010" - }, - "b": "http://www.achajogobarato.com.br/search.html?query=\u0002\u00010", - "e": "http://www.aljazeera.com/Search/?q=\u0002\u00010", - "\u0010": "//www.amazon.co.jp/s?k=\u0002\u0001679", - "l": "//www.amazon.co.jp/s?k=\u0002\u0001679", - "p": "//www.amazon.co.jp/s?k=\u0002\u0001679" - }, - "k": { - "\u0010": "//www.accountkiller.com/en/delete-\u0002-account\u00016", - "c": "//www.akc.org/?s=\u0002\u00013", - "s": "http://www.allkeyshop.com/blog/catalogue/search-\u0002/\u0001140", - "akce": "http://www.akakce.com/arama/?q=\u0002\u000156", - "iduki": "http://akizukidenshi.com/catalog/goods/search.aspx?keyword= \u0002&goods=&number=&name=&min_price=&max_price=&search.x=0&search.y=0\u00010", - "tualne": "//www.aktualne.cz/hledani/?query=\u0002\u00010", - "tuality": "//www.aktuality.sk/vyhladavanie/?q=\u0002\u00010" - }, - "l": { - "a": { - "\u0010": "http://www.alamaula.com/q/\u0002/S0\u00010", - "di": { - "\u0010": "//aladi.diba.cat/search*cat/-\u0002\u00010", - "n": "http://www.aladin.co.kr/search/wsearchresult.aspx?SearchTarget=All&SearchWord=\u0002\u00017" - }, - "us": "//bie.ala.org.au/search?q=\u0002\u00010", - "rmpkg": "//archlinuxarm.org/packages/?q=\u0002\u00010", - "test": "http://alatest.de/searchaction.html?keyword1=\u0002\u00010" - }, - "\u0010": "//anilist.co/search/anime?search=\u0002\u0001457", - "b": { - "\u0010": "//www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=\u0002\u00013", - "ex": "http://www.albumartexchange.com/covers.php?q=\u0002 \u00010", - "um": { - "\u0010": "http://www.allmusic.com/search/albums/\u0002\u00013", - "s": "http://www.allmusic.com/search/albums/\u0002\u00013", - "art": { - "\u0010": "//bendodson.com/projects/itunes-artwork-finder/index.html?entity=album&country=us&query=\u0002\u00015", - "cd": "http://www.albumart.org/index.php?skey=\u0002&itempage=1&newsearch=1&searchindex=Music\u00010", - "dvd": "http://www.albumart.org/index.php?skey=\u0002&itempage=1&newsearch=1&searchindex=DVD\u00010" - } - }, - "erta": "//www.alberta.ca/search-results.aspx?q=\u0002\u00010", - "erthein": "//www.ah.nl/zoeken?rq=\u0002\u000128" - }, - "c": "http://eow.alc.co.jp/search?q=\u0002\u0001245", - "f": { - "\u0010": "//www.alfinsight.com/app/SearchResults?quickSearch=\u0002 \u00010", - "red": "//www.alfredapp.com/search/?q=\u0002\u00010" - }, - "g": { - "\u0010": "http://www.algomation.com/search?q=\u0002\u00010", - "o": "//algorithmia.com/search?q=\u0002\u00010" - }, - "i": { - "\u0010": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001233", - "b": { - "\u0010": "//discover.elgar.govt.nz/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng&suite=def\u00010", - "ro": { - "\u0010": "http://www.abretelibro.com/foro/search.php?keywords=\u0002&sf=titleonly\u00010", - "s": "http://www.abretelibro.com/foro/search.php?keywords=\u0002\u00010" - }, - "aba": "http://www.alibaba.com/trade/search?SearchText=\u0002\u000116", - "ris": "http://www.alibris.com/booksearch?keyword=\u0002\u00015" - }, - "m": "//m.aliexpress.com/search.htm?keywords=\u0002\u00010", - "cemail": "//mail.alice.it/?q=\u0002\u00010", - "exp": { - "\u0010": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001233", - "ress": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001233" - }, - "ght": "//careers.alight.com/search-results?keywords=\u0002\u00010", - "paczka": "//alipaczka.pl/?track=\u0002\u00010", - "seeks": "http://aliseeks.com/search?SearchText=\u0002\u00010" - }, - "l": { - "\u0010": "http://all-io.net/?q=\u0002\u000110", - "o": { - "\u0010": "http://www.allocine.fr/recherche/?q=\u0002\u000119", - "cine": "http://www.allocine.fr/recherche/?q=\u0002\u000119", - "ciné": "http://www.allocine.fr/recherche/?q=\u0002\u000119" - }, - "abolag": "//www.allabolag.se/what/\u0002\u000112", - "aboutcircuits": "http://www.allaboutcircuits.com/scripts/search.html?cx=006978388026519765659%3Ahg719j5vhl8&cof=FORID%3A9&q=\u0002&sa=Find\u00010", - "acronyms": "//www.allacronyms.com/\u0002\u00010", - "biz": "http://www.all.biz/search/goods/?q=\u0002\u00010", - "bibles": "http://biblez.com/search.php?q=\u0002\u00010", - "egro": "http://allegro.pl/listing.php/search?string=\u0002\u00011109", - "elec": "http://www.allelectronics.com/index.php?page=seek&id%5Bm%5D=pattern&id%5Bq%5D=\u0002\u00010", - "erhande": "//www.ah.nl/allerhande/recepten-zoeken?Ntt=\u0002\u00010", - "erstorfer": "//www.allerstorfer.at/?s=\u0002\u00010", - "experts": "http://en.allexperts.com/sitesearch.htm?terms=\u0002\u00010", - "iance": "//alliancechampions.com/?s=\u0002\u00010", - "iedelec": "http://www.alliedelec.com/search/results.aspx?term=\u0002\u00010", - "movie": "http://allmovie.com/search/all/\u0002\u000118", - "mus": { - "\u0010": "//www.allmusic.com/search/all/\u0002\u00010", - "ic": "//www.allmusic.com/search/all/\u0002\u00010" - }, - "posters": "http://www.allposters.com/gallery.asp?txtSearch=\u0002\u00010", - "recipes": "http://allrecipes.com/search/results/?wt=\u0002\u00016", - "sides": "//www.allsides.com/allsides-search-results?search_api_views_fulltext=\u0002\u00010", - "songs": "http://allsongs.tv/search/?q=\u0002\u00010" - }, - "p": { - "\u0010": "//www.archlinux.org/packages/?sort=&q=\u0002\u0001209", - "ha": "http://www.wolframalpha.com/input/?i=\u0002\u0001153", - "ine": "http://pkgs.alpinelinux.org/packages?name=\u0002\u0001210" - }, - "t": { - "\u0010": "http://alternativeto.net/SearchResult.aspx?search=\u0002\u00011096", - "o": "http://alternativeto.net/browse/search?q=\u0002 \u0001433", - "be": "//www.alternate.be/html/search.html?query=\u0002\u00010", - "ex": "//altex.ro/cauta/?q=\u0002\u00010", - "ro": "http://www.altroconsumo.it/Serp/ShowResults?keyword=\u0002\u00010", - "ru": "//altru.greatjob.net/search-results?keywords=\u0002\u00010", - "to": "http://alternativeto.net/browse/search?q=\u0002\u0001440", - "ernate": { - "\u0010": "http://www.alternate.de/html/search.html?searchCriteria=\u0002\u000115", - "nl": "//www.alternate.nl/html/search.html?query=\u0002\u00010" - }, - "ernative": { - "\u0010": "http://alternativeto.net/searchresult.aspx?search=\u0002\u0001126", - "to": "http://alternativeto.net/browse/search?q=\u0002\u0001440" - }, - "ernet": "//www.alternet.org/search/site/\u0002\u00010", - "ium": "http://techdocs.altium.com/search/wikinode/\u0002\u00010" - }, - "w": "//wiki.alpinelinux.org/w/index.php?search=\u0002\u000140", - "ko": "//www.alko.fi/INTERSHOP/web/WFS/Alko-OnlineShop-Site/fi_FI/-/EUR/ViewParametricSearchBySearchIndex-SimpleGenericSearch?SearchTerm=\u0002\u00016", - "za": "//www.alza.cz/search.htm?exps=\u0002\u000121", - "ert": "http://biznesalert.pl/?s=\u0002\u00010", - "esund": "http://www.alesund.kommune.no/component/finder/search?q=\u0002&Itemid=406\u00010", - "exa": { - "\u0010": "http://alexa.com/search?q=\u0002\u00010", - "lt": "//www.alexalt.es/?s=\u0002\u00010", - "si": "http://www.alexa.com/siteinfo/\u0002\u00010" - }, - "exion": "http://alexion.nl/?s=\u0002&post_type=faq\u00010", - "exshoes": "http://www.alexshoes.com.br/buscacomfab.asp?chaves=\u0002\u00010", - "jazeera": "http://english.aljazeera.net/Services/Search/?q=\u0002\u000118", - "maanyar": "http://www.almaany.com/ar/dict/ar-ar/\u0002\u00010", - "maanyen": "http://www.almaany.com/ar/dict/ar-en/\u0002/\u00010", - "maanyfa": "//www.almaany.com/ar/dict/ar-fa/\u0002/\u00010", - "manac": "http://www.almanac.com/store/product-search?keys=\u0002\u00010", - "medina": "//www.almedina.net/search.php?query=\u0002\u00010", - "naturade": "http://www.alnatura.de/de-de/suche?q=\u0002\u00010", - "obg": "//www.alo.bg/searchq/?q=\u0002\u00010", - "ugha": "//alugha.com/search?q=\u0002\u00010", - "vanista": "http://alvanista.com/search?s=\u0002\u00010" - }, - "m": { - "a": { - "\u0010": "//www.amazon.de/s?k=\u0002\u00010", - "u": "//www.amazon.com.au/s?k=\u0002\u0001211", - "nz": "//amanz.my/?s=\u0002\u00010", - "ps": "http://maps.apple.com/?q=\u0002\u000128", - "ra": "http://www.amara.org/search/#/?q=\u0002\u00010", - "demp3": "//www.amazon.de/s?k=\u0002&i=digital-music\u00010", - "lexa": "//www.amazon.com/s?k=\u0002&i=alexa-skills\u00010", - "zon": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "au": "//www.amazon.com.au/s?k=\u0002\u0001211", - "ca": "//www.amazon.ca/s?k=\u0002\u0001666", - "cn": "//www.amazon.cn/s?k=\u0002\u00010", - "de": "//www.amazon.de/s?k=\u0002\u00010", - "es": "//www.amazon.es/s?k=\u0002\u000179", - "fr": "//www.amazon.fr/s?k=\u0002\u00012123", - "in": "//www.amazon.in/s?k=\u0002\u000195", - "it": "//www.amazon.it/s/s?k=\u0002\u00018", - "jp": "//www.amazon.co.jp/s?k=\u0002\u0001679", - "mx": "//www.amazon.com.mx/s?k=\u0002\u000147", - "nl": "//www.amazon.nl/s?k=\u0002\u000189", - "tr": "//www.amazon.com.tr/s?k=\u0002\u00010", - "uk": "//www.amazon.co.uk/s?k=\u0002\u0001441", - "_de": "//www.amazon.de/s?k=\u0002\u00010", - ".in": "//www.amazon.in/s?k=\u0002\u000195", - ".it": "//www.amazon.it/s/s?k=\u0002\u00018", - "mp3": "//www.amazon.com/s?k=\u0002&i=digital-music\u00010", - "orders": "//www.amazon.com/gp/your-account/order-history/ref=oh_aui_search?opt=ab&search=\u0002 \u00013" - } - }, - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "c": { - "a": "//www.amazon.ca/s?k=\u0002\u0001666", - "\u0010": "http://www.amctv.com/search#q=\u0002\u00014", - "n": "//www.amazon.cn/s?k=\u0002\u00010", - "loud": "//www.amazon.com/clouddrive/#G=0&path=\u0002\u00010" - }, - "d": { - "\u0010": "http://search.amd.com/en-us/Pages/results-all.aspx?k=\u0002\u000117", - "e": "//www.amazon.de/s?k=\u0002\u00010" - }, - "f": { - "\u0010": "http://ask.metafilter.com/search.mefi?q=\u0002\u00019", - "r": "//www.amazon.fr/s?k=\u0002\u00012123" - }, - "g": { - "\u0010": "//www.allmusic.com/search/all/\u0002\u00010", - "uy": "//www.angrymetalguy.com/?s=\u0002\u00010", - "lobal": "//www.amazon.com/s?k=\u0002&i=us-worldwide-shipping-aps\u00010" - }, - "n": { - "\u0010": "//jobs.amncareers.com/search-results?keywords=\u0002\u00010", - "esty": "//www.amnesty.org/en/search/?q=\u0002\u00010" - }, - "o": { - "\u0010": "//addons.mozilla.org/firefox/search/?q=\u0002&cat=all\u0001174", - "eba": "//www.amoeba.com/search/all/?s=\u0002\u00010" - }, - "s": { - "\u0010": "http://smile.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=\u0002\u000161", - "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000120" - }, - "x": "//www.amazon.com.mx/s?k=\u0002\u000147", - "z": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "bks": "//www.amazon.com/s?k=\u0002&i=stripbooks\u000115", - "nde": "//www.amazon.de/s?k=\u0002\u00010", - "nin": "//www.amazon.in/s?k=\u0002\u000195" - }, - "es": "//www.amazon.es/s?k=\u0002\u000179", - "in": { - "\u0010": "//www.amazon.in/s?k=\u0002\u000195", - "et": "http://aminet.net/search?query=\u0002\u00010" - }, - "it": "//www.amazon.it/s?k=\u0002\u0001961", - "jp": "//www.amazon.co.jp/s?k=\u0002\u0001679", - "kt": "//marketplace.atlassian.com/search?q=\u0002\u00013", - "mo": "http://www.ammodepottx.com/#sthash.Bx8Cvh8l.dpbs=\u0002:\u00010", - "p3": "//www.amazon.com/s?k=\u0002&i=digital-music\u00010", - "uk": { - "\u0010": "//www.amazon.co.uk/s?k=\u0002\u0001441", - "mp3": "//www.amazon.co.uk/s?k=\u0002&i=digital-music\u00010" - }, - "us": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "ic": "//music.amazon.com/search/\u0002\u00016", - "ing": "//www.google.com/cse?cx=partner-pub-4049870445958322%3Apxmbpw-atgu&ie=ISO-8859-1&q=\u0002\u00010" - }, - ".ca": "//www.amazon.ca/s?k=\u0002\u0001666", - "eblo": "http://search.ameba.jp/search.html?q=\u0002\u00010", - "egy": "//careers.amegybank.com/search-results?keywords=\u0002\u00010", - "erican": "//agentcareers.americannational.com/search-results?keywords=\u0002\u00014", - "ericastestkitchen": "http://americastestkitchen.com/search?q=\u0002\u00010", - "etsoc": "//journals.ametsoc.org/action/doSearch?AllField=\u0002\u00010", - "iami": "http://slist.amiami.com/top/search/list?s_keywords=\u0002\u00010", - "ipwned": "//haveibeenpwned.com/account/\u0002\u00014", - "plify": "//careers.amplifysnacks.com/search-results?keywords=\u0002\u00010", - "pnet": "http://www.auto-medienportal.net/artikel/quicksearch/?searchterm=\u0002\u00010", - "pparit": "http://www.ampparit.com/haku?q=\u0002\u00010", - "p-what": "http://www.amp-what.com/unicode/search/\u0002\u00010", - "pwhat": "http://www.amp-what.com/unicode/search/\u0002\u00010", - "vid": { - "\u0010": "//www.amazon.com/s/url=search-alias%3Dinstant-video&field-keywords=\u0002\u00010", - "de": "http://www.amazon.de/s/url=search-alias%3Dinstant-video&field-keywords=\u0002\u00010" - }, - "way": "//www.amway.com/Shop/Search/SearchResults.aspx?searchkeyword=\u0002\u00010" - }, - "n": { - "\u0010": "http://anilist.co/search?q=\u0002\u00010", - "f": "//www.abercrombie.com/webapp/wcs/stores/servlet/Search?storeId=10051&catalogId=10901&langId=-1&departmentCategoryId=10000&search-field=\u0002\u00010", - "g": { - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Aangular.io\u00010", - "ry": "//www.angrymetalguy.com/?s=\u0002\u00010", - "elajey": "//www.angelajey.com/index.php?route=product/search&search=\u0002\u00010", - "elhalowiki": "http://www.rigvedawiki.net/r1/wiki.php/\u0002\u00010", - "ellist": "//angel.co/search?q=\u0002\u00010", - "hami": "//www.anghami.com/search/\u0002\u00010", - "lenews": "//www.anglenews.com/?s=\u0002\u00010", - "ular": { - "\u0010": "//angular.io/api?query=\u0002\u00019", - "js": "//docs.angularjs.org/?as_q=\u0002\u00010" - }, - "uscatalogue": "http://library.angus.gov.uk/ipac20/ipac.jsp?session=138BN7L458484.310312&menu=search&aspect=subtab184&npp=10&ipp=20&spp=20&profile=ang--7&ri=&term=\u0002&index=.AW&x=-354&y=-218&aspect=subtab184&term=&index=.TW&term=&index=.SE&term=&index=.SW&term=&index=BSTLLR&sort=\u00010" - }, - "i": { - "\u0010": "//anilist.co/search/anime?sort=SEARCH_MATCH&search=\u0002\u0001108", - "db": "//anidb.net/perl-bin/animedb.pl?adb.search=\u0002&show=animelist&do.search=search\u0001320", - "me": { - "\u0010": "//anidb.net/perl-bin/animedb.pl?show=animelist&adb.search=\u0002\u000171", - "s": "//kitsu.io/anime?text=\u0002\u00013", - "ka": "http://animeka.com/search/index.html?req=\u0002\u00010", - "filler": "http://www.animefillerlist.com/search/node/\u0002\u00010", - "lyrics": "http://www.animelyrics.com/search.php?q=\u0002\u00010", - "newsnetwork": "http://www.animenewsnetwork.com/search?cx=016604166282602569737:znd1ysjewre&cof=FORID:11&q=\u0002\u00010", - "-planet": "http://www.anime-planet.com/anime/all?name=\u0002\u00017", - "planet": "http://www.anime-planet.com/anime/all?name=\u0002\u00017" - }, - "bara": "http://anime.akihabara.cz/vyhledavani/\u0002\u00010", - "bin": "//anibin.blogspot.com/search?q=\u0002\u00010", - "fit": "//katzothek.provital.com/content/partners/katzothek/futtershop/de/article_search?article_name=\u0002\u00010", - "list": "//anilist.co/search/anime?sort=SEARCH_MATCH&search=\u0002\u0001108", - "lyrics": "//anilyrics.com/?s=\u0002\u00010", - "msi": "//animesimple.com/search?q=\u0002\u00010", - "search": "//www.anisearch.com/search?q=\u0002\u00019" - }, - "j": "http://www.actionnewsjax.com/?q=\u0002\u00010", - "n": { - "\u0010": "http://www.animenewsnetwork.com/search?cx=016604166282602569737:znd1ysjewre&cof=FORID:11&q=\u0002\u00010", - "e": { - "\u0010": "http://www.animenewsnetwork.com/encyclopedia/search/name?only=anime&q=\u0002\u000113", - "x.931women": "//annex.931women.com/?s=\u0002: \u00010" - }, - "ie": "http://www.appannie.com/search/?q=\u0002\u00013" - }, - "u": { - "\u0010": "http://find.anu.edu.au/search?filter=0&client=anu_frontend&proxystylesheet=anu_frontend&site=default_collection&btnG=Search&q=\u0002&search1=Go\u00010", - "lib": "http://anu.summon.serialssolutions.com/search?q=\u0002\u00010" - }, - "w": "http://anw.inl.nl/search?type=simple&q=\u0002\u00010", - "ag": { - "\u0010": "//new.wordsmith.org/anagram/anagram.cgi?anagram=\u0002&t=500&a=n\u00018", - "ram": "http://www.oneacross.com/cgi-bin/search_anagram.cgi?p0=\u0002&c0=&s=+Go+\u00016" - }, - "au": "http://www.androidauthority.com/?q=\u0002\u00010", - "ki": "//ankiweb.net/shared/decks/\u0002\u00018", - "sa": "http://www.ansa.it/ricerca/index.jsp?si=1&ns=10&sb=date&lang=it&home=%2Fweb&search=1&c=webarchive&qt=\u0002&radio-search=ansa&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23009C41%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A10578b%3BLC%3A10578b%3BT%3A000000%3BGFNT%3A10578b%3BGIMP%3A10578b%3BFORID%3A11&hl=it&client=pub-2538762546398839\u0001141", - "101": "http://anarchy101.org/search?q=\u0002\u00010", - "aconda": "//anaconda.org/search?q=\u0002\u000115", - "alog": "//careers.analog.com/search-results?keywords=\u0002\u00010", - "alyser": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Flarmarange.github.io%2Fanalyse-R\u00010", - "andtech": "http://anandtech.com/SearchResults?q=\u0002\u00013", - "aped": "http://en.anarchopedia.org/index.php?title=Special:Search&search=\u0002\u00010", - "archistlib": "http://theanarchistlibrary.org/search?query=\u0002\u00010", - "archopedia": "http://anarchopedia.org/Special:Search?search=\u0002\u00010", - "cestry": "//www.ancestry.com/search/?keyword=\u0002\u00010", - "dar": "//android-arsenal.com/search?q=\u0002\u00010", - "dce": "//www.androidcentral.com/search/\u0002\u00010", - "dev": "//developer.android.com/s/results/?q=\u0002\u00010", - "dpol": "http://www.androidpolice.com/?s=\u0002\u00017", - "droid": { - "\u0010": "//developer.android.com/s/results/?q=\u0002\u00010", - "pit": { - "\u0010": "http://www.androidpit.com/en/android/search?st=\u0002\u00010", - "fr": "http://www.androidpit.fr/search?st=\u0002\u00010" - } - }, - "evry": "http://www.anevry.com/?s=\u0002\u00010", - "laf": "//www.apertium.org/index.eng.html?dir=nld-afr&q=\u0002\u00010", - "lamı": "http://nedir-sozluk.com/ara/\u0002\u00010", - "mat": "http://www.anmat.gov.ar/resultados.asp?cx=018082787451070703178%3Arx-vbt5pdfu&cof=FORID%3A10&ie=UTF-8&q=\u0002\u00010", - "obii": "http://www.anobii.com/search?s=1&keyword=\u0002\u00015", - "oikis": "http://anoik.is/systems/\u0002\u00010", - "otchortwo": "http://anotchortwo.com/?s=\u0002\u00010", - "sible": { - "\u0010": "//docs.ansible.com/ansible/latest/#stq=\u0002&stp=1\u0001134", - "-galaxy": "//galaxy.ansible.com/list#/roles?page=1&page_size=10&autocomplete=\u0002\u00010", - "mod": "http://docs.ansible.com/ansible/\u0002_module.html\u00010" - }, - "s.splunk": "//answers.splunk.com/search.html?q=\u0002\u00010", - "swer": { - "s": { - "\u0010": "http://www.answers.com/\u0002\u00010", - "ingenesis": "//answersingenesis.org/search/?q=\u0002\u00010", - ".splunk": "http://answers.splunk.com/search/?q=\u0002&Submit=Search\u00010" - }, - "\u0010": "http://answers.yahoo.com/search/search_result;_ylt=AmLr_DtDPVmDQzOuA2T6sxAjzKIX;_ylv=3?p=\u0002&submit-go=Search+Y!+Answers\u00010" - }, - "tiwar": "http://news.antiwar.com/?s=\u0002\u00010", - "tonimo": { - "\u0010": "http://www.antonimos.net/?termino=\u0002&btnG=Ant%F3nimos\u00010", - "s": "//www.antonimos.com.br/busca.php?q=\u0002\u00010" - }, - "tonym": "http://www.synonyms.net/antonyms/\u0002\u000118", - "tyweb": "http://antyweb.pl/?s=\u0002\u00010" - }, - "o": { - "3": { - "\u0010": "//archiveofourown.org/works/search?utf8=%E2%9C%93&work_search%5Bquery%5D=\u0002\u0001938", - "tags": "//archiveofourown.org/tags/search?query[name]=\u0002\u00016" - }, - "\u0010": "//www.amazon.com/gp/your-account/order-history/ref=oh_aui_search?opt=ab&search=\u0002\u000147", - "e": { - "\u0010": "http://ageofempires.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "2r": "//www.reddit.com/r/aoe2/search?q=\u0002&restrict_sr=1\u00010" - }, - "l": "http://search.aol.com/aol/search?enabled_terms=&s_it=comsearch&q=\u0002\u00010", - "m": "http://www.artofmanliness.com/?s=\u0002\u000115", - "ps": { - "\u0010": "http://artofproblemsolving.com/wiki/index.php?title=Special%3ASearch&fulltext=Search&search=\u0002\u000110", - "comm": "//artofproblemsolving.com/community/search/\u0002\u00014" - }, - "ty": "//www.albumoftheyear.org/search.php?q=\u0002\u000167", - "wow": "http://db.vanillagaming.org/?search=\u0002\u00010" - }, - "p": { - "a": { - "\u0010": "http://apastyle.org/search.aspx?query=\u0002\u00010", - "che": "//duckduckgo.com/?q=\u0002+site%3Ahttps%3A%2F%2Fhttpd.apache.org%2Fdocs%2Fcurrent%2F\u00014", - "ckages": "http://www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&last_update=&flagged=&limit=50\u000111", - "rat": "http://www.aparat.com/result/\u0002\u00010" - }, - "\u0010": "http://ap.org/Search/SearchResults?searchkeywords=\u0002\u000129", - "c": { - "\u0010": "//auspost.com.au/search?q=\u0002\u00013", - "k": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&last_update=&flagged=&limit=50\u000137", - "entral": "//apstudent.collegeboard.org/search?searchq=\u0002&searchType=aps_site&tp=aps_site\u00010" - }, - "h": "http://ArcadePrehacks.com/\u0002\u00010", - "i": { - "\u0010": "//api.duckduckgo.com/?q=\u0002&o=json&pretty=1&no_html=1&no_redirect=1\u00018", - "n": { - "\u0010": "//academicprogress.in/library/search/?q=\u0002\u00010", - "c": "//careers.activision.com/search-results?keywords=\u0002\u00010" - }, - "v": "//www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dprime-instant-video&field-keywords=\u0002\u00010", - "dockrails": "http://apidock.com/rails/search/quick?query=\u0002\u00010", - "dockruby": "http://apidock.com/ruby/search/quick?query=\u0002 \u00017", - "lity": "//apility.io/search/\u0002\u00010", - "platform": "//duckduckgo.com/?q=\u0002+site%3Aapi-platform.com&t=canonical&ia=web\u00010" - }, - "k": { - "\u0010": "http://apps.evozi.com/apk-downloader/?id=\u0002\u000126", - "d": "//apkpure.com/search?q=\u0002\u000112", - "g": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&flagged=\u0001556", - "m": { - "\u0010": "//www.apkmirror.com/?s=\u0002\u000128", - "irror": "//www.apkmirror.com/?s=\u0002\u000128" - }, - "pure": "//apkpure.com/search?q=\u0002\u000112" - }, - "l": { - "\u0010": "http://scitation.aip.org/search?value1=\u0002&option1=all\u00010", - "n": "//www.anime-planet.com/anime/all?name=\u0002\u00010", - "ib": "//austin.bibliocommons.com/v2/search?query=\u0002&searchType=smart\u00010", - "cart": "//aplcart.info/?q=\u0002\u00013" - }, - "m": { - "\u0010": "//atom.io/packages/search?q=\u0002\u00010", - "ex": "http://www.apmex.com/search?q=\u0002\u00013" - }, - "o": { - "d": "//apod.nasa.gov/apod/ap\u0002.html\u00010", - "\u0010": "//addons.palemoon.org/search/?terms=\u0002\u00010", - "lloduck": "http://www.apolloduck.com/search.phtml?search=\u0002&exact=1&sr=1&q=1\u00010" - }, - "p": { - "\u0010": "//www.amazon.com/s/search-alias%3Dpantry&field-keywords=\u0002\u00017", - "db": "http://www.winehq.org/search?cx=partner-pub-0971840239976722%3Aw9sqbcsxtyf&cof=FORID%3A10&ie=UTF-8&q=\u0002&siteurl=appdb.winehq.org%2F&ref=www.winehq.org%2Fsearch%2F%3Fcx%3Dpartner-pub-0971840239976722%253Aw9sqbcsxtyf%26cof%3DFORID%253A10%26ie%3DUTF-8%26q%3Dsomething&ss=674j114846j5\u00017", - "ex": "//appexchange.salesforce.com/results?keywords=\u0002\u00010", - "ie": "//www.ah.nl/zoeken?rq=\u0002\u000128", - "le": { - "\u0010": "http://www.apple.com/search/?q=\u0002\u0001115", - "br": "//www.apple.com/br/search/\u0002\u00010", - "se": "http://apple.stackexchange.com/search?q=\u0002\u000117", - "tv": "//duckduckgo.com/?q=\u0002%20site%3Atv.apple.com\u00014", - "base": "//applebase.net/Search.html?term=\u0002&cat=1\u00010", - "daily": { - "\u0010": "//hk.appledaily.com/search/\u0002?q=\u0002\u00010", - "tw": "//tw.appledaily.com/search/result?querystrS=\u0002\u00010" - }, - "dev": "//developer.apple.com/search/index.php?q=\u0002 \u000117", - "discuss": "//discussions.apple.com/search.jspa?peopleEnabled=true&userID=&containerType=&container=&spotlight=true&q=\u0002\u00010", - "fritter": "//www.applefritter.com/search/node/\u0002\u00010", - "insider": "http://appleinsider.com/search/\u0002\u00010", - "maps": "http://maps.apple.com/?q=\u0002\u000128", - "music": "//itunes.apple.com/search?term=\u0002&entity=musicTrack\u00018", - "realty": "http://applesold.com/search?q=\u0002\u00010", - "software": "//support.apple.com/en_US/downloads/\u0002\u00015", - "support": "http://support.apple.com/kb/index?page=search&product=&q=\u0002&src=support_site.kbase.search.searchresults\u00010", - "trailer": "http://duckduckgo.com/?q=site:trailers.apple.com%20\u0002\u00010" - }, - "nr": "http://appnr.com/search/\u0002\u00010", - "vv": "http://www.appvv.com/search.htm?search=\u0002&device=1\u00010", - "brain": "http://www.appbrain.com/search?q=\u0002\u00010", - "cel": "http://developer.appcelerator.com/apidoc/search/mobile/latest?q=\u0002\u00010", - "ear": "//appear.in/\u0002\u000112", - "engine": "http://code.google.com/query/#p=appengine&q=\u0002\u00010", - "inn": "//search.appinn.com/cse/search?q=\u0002&s=5999676002387380177&source=www.appinn.com\u00010", - "pedia": "http://programs.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "shopper": "http://appshopper.com/search/?search=\u0002\u00010", - "sliced": "http://appsliced.co/apps?search=\u0002\u00017", - "s.splunk": "http://apps.splunk.com/apps/#/search/\u0002\u00010", - "store": "/?q=site%3Aitunes.apple.com%2Fus%2Fapp%2F+\u0002\u000119" - }, - "s": "http://journals.aps.org/search?q=\u0002\u000110", - "t": { - "\u0010": "//packages.ubuntu.com/search?keywords=\u0002&searchon=all&suite=all§ion=all\u000171", - "browse": "//www.apt-browse.org/search/?query=\u0002\u00010", - "oide": "//en.aptoide.com/search?query=\u0002\u00013" - }, - "ro": "//aprohirdetesingyen.hu/osszes-hirdetes/kereses--\u0002\u00010", - "ert-en-es": "//www.apertium.org/index.spa.html?dir=eng-spa&q=\u0002#translation\u00010", - "ertium": "http://wiki.apertium.org/w/index.php?title=Special:Search&search=\u0002&go=Go\u00013", - "nic": "//wq.apnic.net/static/search.html?query=\u0002\u00016", - "ril": "//www.april.org/search/node/\u0002\u00010", - "rsfi": "http://aprs.fi/#!mt=roadmap&z=11&call=a%2F\u0002&timerange=3600&tail=3600\u00010", - "vde": "//www.amazon.de/s?k=\u0002&i=instant-video\u00016" - }, - "r": { - "a": { - "\u0010": "http://www.ara.cat/cercador/?text=\u0002\u00010", - "bic": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=ar\u00010", - "bnews": "http://www.arabnews.com/search/google/\u0002\u00010", - "geek": "http://www.arageek.com/?s=\u0002\u00010", - "mex": "//www.aramex.com/track-results-multiple.aspx?ShipmentNumber=\u0002\u00010" - }, - "\u0010": "http://allrecipes.com/search/default.aspx?qt=k&wt=\u0002&rt=r&origin=Recipe%20Search%20Results\u000112", - "b": { - "\u0010": "//ruby.libhunt.com/search?query=\u0002\u00010", - "eitsagentur": "//con.arbeitsagentur.de/prod/jobboerse/jobsuche-ui/?VOLLTEXT=\u0002&FCT.ANGEBOTSART=ARBEIT&FCT.AKTUALITAET=100&FCT.BEHINDERUNG=AUS&page=1&size=10&sort=Relevanz&s=5\u00010" - }, - "d": { - "\u0010": "//www.ardmediathek.de/ard/search/\u0002\u000151", - "a": "http://www.glyphweb.com/arda/search.asp?search=\u0002\u00017", - "moor": "//www.ardmoor.co.uk/search/\u0002\u00010", - "uino": { - "\u0010": "http://arduino.stackexchange.com/search?q=\u0002\u00019", - "reference": "//duckduckgo.com/?q=\u0002+site%3Aarduino.cc&ia=web\u00010" - } - }, - "f": "//duckduckgo.com/?q=\u0002+site%3Aar15.com&ia=web\u00014", - "k": { - "\u0010": "//ark.intel.com/search?q=\u0002\u0001168", - "pedia": "http://ark.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "wiki": "http://ark.gamepedia.com/index.php?search=\u0002\u00010" - }, - "l": "http://aynrandlexicon.com/searchresults/index.html?cx=013104633629966810561%3Ag5jt9ka8qre&cof=FORID%3A11&q=\u0002\u00010", - "r": { - "\u0010": "http://ffxiv.gamerescape.com/wiki/Special:Search?search=\u0002\u000124", - "ow": { - "\u0010": "//www.arrow.com/en/products/search?q=\u0002\u00013", - "-wikia": "http://arrow.wikia.com/wiki/Special:Search?query=\u0002\u00010" - } - }, - "s": { - "\u0010": "//arstechnica.com/search/?ie=UTF-8&q=\u0002\u0001374", - "uk": "http://arstechnica.co.uk/search/?query=\u0002\u00010", - "technica": { - "\u0010": "//arstechnica.com/search/?q=\u0002\u000129", - "uk": "http://arstechnica.co.uk/search/?query=\u0002\u00010" - } - }, - "t": { - "d": { - "\u0010": "//www.artdiscount.co.uk/catalogsearch/result/?cat=0&q=\u0002 \u00010", - "iscount": "//www.artdiscount.co.uk/catalogsearch/result/?cat=0&q=\u0002\u00010" - }, - "e": "//www.arte.tv/fr/search/?q=\u0002&page=1\u000118", - "\u0010": "//www.aparatorul.md/?s=\u0002\u00019", - "fire": "http://www.artfire.com/browse/?term=\u0002\u00010", - "ifact": "//artifact.gamepedia.com/index.php?search=\u0002\u00010", - "ist": "http://www.artcyclopedia.com/scripts/tsearch.pl?type=1&t=\u0002\u00010", - "smia": "//collections.artsmia.org/index.php?page=search#query=\u0002\u00010", - "stor": "//library.artstor.org/#/search/\u0002;page=1;size=48\u00010", - "station": "//www.artstation.com/search?q=\u0002&sorting=recent\u000156", - "urogoga": "//www.arturogoga.com/?s=\u0002\u00010", - "work": "http://www.artcyclopedia.com/scripts/tsearch.pl?t=\u0002&type=2\u00010" - }, - "u": { - "\u0010": "//www.arukereso.hu/CategorySearch.php?st=\u0002\u000122", - "ba": "//community.arubanetworks.com/t5/forums/searchpage/tab/message?q=\u0002\u00010", - "kereso": "//www.arukereso.hu/CategorySearch.php?st=\u0002\u000122" - }, - "x": { - "\u0010": "http://arxiv.org/search?query=\u0002&searchtype=all\u0001117", - "iv": "http://arxiv.org/search?query=\u0002&searchtype=all\u0001117" - }, - "ch": { - "\u0010": "//wiki.archlinux.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00015643", - "i": { - "\u0010": "http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=?q=\u0002:\u00010", - "ve": { - "d": { - "\u0010": "//web.archive.org/web/*/\u0002\u000157", - "moe": "//archived.moe/_/search/text/\u0002\u00018" - }, - "\u0010": "//archive.org/search.php?query=\u0002\u00011035", - "is": "http://archive.is/search/?q=\u0002\u0001329", - "tv": "//archive.org/details/tv?q=\u0002\u00010", - "team": "http://www.archiveteam.org/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010", - "web": "//web.archive.org/web/*/\u0002\u000157" - }, - "pel": "http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?menu=search&aspect=subtab26&npp=10&ipp=20&spp=20&profile=sicd&ri=&index=.GK&term=\u0002\u00010", - "plus": "http://univtoulouse.summon.serialssolutions.com/search?s.q=\u0002\u00010" - }, - "ch": { - "\u0010": "http://www.archchinese.com/chinese_english_dictionary.html?find=\u0002\u000118", - "ine": "http://www.archchinese.com/chinese_english_dictionary.html?find=\u0002 \u00010" - }, - "de": "//wiki.archlinux.de/index.php?search=\u0002\u00010", - "fr": "http://wiki.archlinux.fr/index.php?title=Sp%C3%A9cial%3ARecherche&profile=default&search=\u0002&fulltext=Search\u00010", - "jp": "//wiki.archlinux.jp/index.php?search=\u0002\u000128", - "pl": "//wiki.archlinux.org/index.php/\u0002 _(Polski)\u00010", - "angels": "//heavenlyarchangels.wordpress.com/?s=\u0002\u00010", - "aur": "//aur.archlinux.org/packages.php?O=0&K=\u0002&do_Search=Go\u000124", - "bugs": "//bugs.archlinux.org/index.php?string=\u0002&project=0\u000115", - "daily": "//www.archdaily.com/search/all?q=\u0002\u00010", - "forums": "//bbs.archlinux.org/search.php?action=search&keywords=\u0002&author=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics&search=Submit\u00017", - "linux": { - "\u0010": "//bbs.archlinux.org/search.php?action=search&keywords=\u0002&author=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics&search=Submit\u00017", - "fr": "//wiki.archlinux.fr/index.php?title=Spécial%3ARecherche&profile=default&fulltext=Search&search=\u0002\u00010", - "it": "//wiki.archlinux.org/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "man": "http://jlk.fjfi.cvut.cz/arch/manpages/search?q=\u0002\u0001301", - "packages": "//www.archlinux.org/packages/?q=\u0002\u000175", - "pkg": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&flagged=\u0001556", - "wiki": "//wiki.archlinux.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00011579" - }, - "ia": "http://www.aria.co.uk/Products?search=\u0002\u00010", - "in": "http://whois.arin.net/rest/nets;q=\u0002?showDetails=true&showARIN=false&ext=netref2\u000114", - "ms": { - "\u0010": "//armswiki.org/wiki/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "list": "//www.armslist.com/classifieds/search?search=\u0002&location=usa&category=all&posttype=7&ships=\u00010" - }, - "-15": "//veriforcetactical.com/?s=\u0002\u00010", - "-ar": "http://www.almaany.com/ar/dict/ar-ar/\u0002\u00010", - "-en": "//www.almaany.com/ar/dict/ar-en/\u0002\u00010", - "2en": "//translate.google.com/#ar/en/\u0002\u000113", - "cadeotaku": "//wiki.arcadeotaku.com/index.php?search=\u0002\u00010", - "cblog": "//www.esri.com/en-us/search/?q=\u0002\u00010", - "cdev": "//developers.arcgis.com/search/?q=\u0002\u00010", - "cdoc": "//doc.arcgis.com/search/?q=\u0002\u00010", - "cgis": { - "\u0010": "http://www.arcgis.com/home/search.html?q=\u0002\u00010", - "res": "http://resources.arcgis.com/content/search-result?searchKeyWord=\u0002\u00010" - }, - "cgames": "http://www.arcgames.com/en/games/all-games/query/\u0002\u00010", - "ea51": "http://discuss.area51.stackexchange.com/search?q= \u0002\u00010", - "eena": "http://haku.yle.fi/?q=\u0002&category=Areena\u00016", - "ena": "//www.are.na/search/\u0002\u00010", - "gep": "http://www.argep.hu/main.aspx?suche=\u0002&x=0&y=0\u00010", - "gos": { - "\u0010": "http://www.argos.co.uk/search/\u0002\u000130", - "ie": "http://www.argos.ie/webapp/wcs/stores/servlet/Search?storeId=10152&catalogId=14551&langId=111&searchTerms=\u0002\u00010" - }, - "got": "http://www.speakinglatino.com/?s=\u0002&advanced=0&search_type=&posts_country=&posts_category=&words_country=&words_category=&words_letter=CHOOSE+A+STARTING+LETTER&all_country=&all_letter=CHOOSE+A+STARTING+LETTER\u00010", - "madeus": "http://www.armadeus.com/wiki/index.php?search=\u0002\u00010", - "morgames": "http://armorgames.com/search/games?type=games&q=\u0002\u00010", - "mtemp": "//azure.microsoft.com/de-de/resources/templates/?term=\u0002\u00010", - "noldbusck": "//www.arnoldbusck.dk/soeg?s=\u0002&cid=alle\u00010", - "nzenarms": "//secure.arnzenarms.com/catalog-search?fulltext=\u0002\u00010" - }, - "s": { - "a": { - "\u0010": "//sysadmin.libhunt.com/search?query=\u0002\u00010", - "hi": "http://sitesearch.asahi.com/.cgi/sitesearch/sitesearch.pl?Keywords=\u0002\u00010", - "na": "//app.asana.com/0/search/\u0002\u000129", - "psupplies": "//www.asap-supplies.com/catalogsearch/result/?q=\u0002\u00010" - }, - "\u0010": "http://smile.amazon.com/s?url=search-alias%3Daps&field-keywords=\u0002\u00011446", - "b": "//astrobites.org/?s=\u0002\u00010", - "d": { - "a": "//groceries.asda.com/asda-webstore/landing/home.shtml#/search/\u0002\u000113", - "\u0010": "//smile.amazon.de/s?url=search-alias%3Daps&field-keywords=\u0002\u000193", - "e": "//smile.amazon.de/s/field-keywords=\u0002\u00010" - }, - "g": "//smile.amazon.de/s/?field-keywords=\u0002\u000120", - "h": { - "a": "//ashadidi.com/search/\u0002\u00010", - "\u0010": "//selfhosted.libhunt.com/search?query=\u0002\u00010" - }, - "i": { - "\u0010": "http://www.asihablamos.com/www/significado/palabra/\u0002\u00013", - "n": "//www.amazon.com/dp/\u0002\u00010", - "cs": "http://www.asics.com/us/en-us/search?text=\u0002\u00010", - "anwiki": "http://asianwiki.com/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010", - "avape": "//asiavape.co/?s=\u0002&post_type=product\u00010" - }, - "k": { - "\u0010": "http://www.ask.com/web?q=\u0002\u000111", - "d": "http://apple.stackexchange.com/search?\u0002\u00010", - "u": { - "\u0010": "http://askubuntu.com/search?q=\u0002\u00010", - "bnt": "http://askubuntu.com/search?q=\u0002\u00010", - "buntu": "http://askubuntu.com/search?q=\u0002\u00010" - }, - "f5": "//support.f5.com/kb/en-us/search.res.html?productList=big-ip%2Cbc%2Cfp%2C3-dns%2Clc%2Cts%2Cwj%2Cwa_5_x%2Csam%2Clinerate-eol&versionList=all%2C&searchType=basic&isFromGSASearch=false&query=\u0002&site=support_external&client=support-f5-com&q=\u0002&prodName=ALL&prodVersText=&docTypeName=ALL&includeArchived=false&submit_form=&product=all&eolProducts=all&documentType=all\u00010", - "vg": "http://www.askvg.com/?s=\u0002\u00010", - "apatient": "http://www.askapatient.com/searchresults.asp?searchField=\u0002 \u00010", - "fedora": "//ask.fedoraproject.org/en/questions/scope:all/sort:activity-desc/page:1/query:\u0002/\u00010", - "imam": "http://askimam.org/public/processsearch/Question.keywords:\u0002/Question.type:1\u00010", - "men": "http://ca.askmen.com/search?q=\u0002\u00010", - "reddit": "//www.reddit.com/r/AskReddit/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010", - "steem": "//www.asksteem.com/search?q=\u0002\u00010", - "sutra": "http://www.asksutra.com/en/serp.php?cx=006191677038902776655%3Akobzooodbpy&cof=FORID%3A11&q=\u0002\u00010" - }, - "m": { - "\u0010": "http://smile.amazon.com/s/?field-keywords=\u0002\u000152", - "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000120", - "mrg": "//www.asthamobileshop.ml/_/search?query=\u0002\u00010" - }, - "s": "//smile.amazon.com/s?url=srs%3D5856181011&field-keywords=\u0002\u00010", - "x": "//search.asx.com.au/s/search.html?query=\u0002&collection=asx-meta&profile=web\u00010", - "cl": "http://ascl.net/code/search/\u0002\u00013", - "ee": "//peer.asee.org/?q=\u0002\u00010", - "os": "http://www.asos.com/search/?q=\u0002\u00016", - "tk": "//stock.adobe.com/search?k=\u0002\u00010", - "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000120", - "us": "http://www.asus.com/us/Search/?SearchKey=\u0002\u00015", - "cent": "//www.ascent.co.nz/search.aspx?query=\u0002&sortBy=products\u00010", - "earchoficeandfire": "//asearchoficeandfire.com/?q=\u0002\u000129", - "number": "//www.ultratools.com/tools/asnInfoResult?domainName=\u0002\u00010", - "oiaf": "http://awoiaf.westeros.org/index.php?search=\u0002\u000145", - "terisk": "//duckduckgo.com/?q=\u0002+site%3Awiki.asterisk.org&ia=web\u00010", - "tock": "//stock.adobe.com/fr/search?k=\u0002\u00010", - "tray": "http://www.astray.com/recipes/?search=\u0002\u00010", - "trobin": "http://www.astrobin.com/search/?q=\u0002&search_type=1&solar_system_main_subject=&telescope_type=any&camera_type=any&aperture_min=&aperture_max=&pixel_size_min=&pixel_size_max=&start_date=&end_date=&integration_min=&integration_max=&moon_phase_min=&moon_phase_max=\u00010" - }, - "t": { - "\u0010": "http://www.addictivetips.com/archives/search/?cx=015974260755795457590%3Akigcmyffu6y&cof=FORID%3A11&ie=UTF-8&q=\u0002&s=Search\u000120", - "d": "http://allthingsd.com/?s=\u0002:\u00010", - "h": "//www.athletic.net/Search.aspx#?q=\u0002\u00015", - "i": { - "\u0010": "http://www.accesstoinsight.org/search_results.html?cx=015061908441090246348%3Adj4lxnh4dda&cof=FORID%3A9%3BNB%3A1&ie=UTF-8&q=\u0002&sa=Search\u00010", - "lf": "//academie.atilf.fr/9/consulter/\u0002?page=1\u00010" - }, - "k": "//www.americastestkitchen.com/search?q=\u0002\u000124", - "l": { - "\u0010": "http://atlwiki.net/Special:Search/\u0002\u00010", - "as": { - "\u0010": "//atlas.torproject.org/#search/\u0002\u00010", - "o": "//www.atlasobscura.com/search?q=\u0002&kind=keyword\u00010", - "piv": "http://www.atlaspiv.cz/?beername=\u0002 \u00010" - }, - "antis": "//www.atlantistime.com/?s=\u0002\u00010", - "ona": "http://atlona.com/?s=\u0002\u00010" - }, - "o": { - "\u0010": "//alternativeto.net/browse/search/?q=\u0002\u0001185", - "m": { - "\u0010": "//www.atomtickets.com/search?query=\u0002\u00010", - "io": "//atom.io/packages/search?utf8=%E2%9C%93&q=\u0002\u00010", - "packages": "//atom.io/packages/search?q=\u0002\u00010", - "themes": "//atom.io/themes/search?q=\u0002\u00010" - } - }, - "p": "http://www.atpworldtour.com/Search/Site.aspx?q=\u0002\u00010", - "s": "http://www.abovetopsecret.com/forum/index.php \u0002\u00010", - "t": "http://www.advancedtautactica.com/search.php?keywords=\u0002\u00010", - "x": "http://atomix.vg/?s=\u0002\u00010", - "40": "http://www.at40.com/?q=\u0002\u00010", - "js": "//atmospherejs.com/?q=\u0002\u00010", - "comp": "//www.atcmarket.cz/zbozi?hledani=true&zb=\u0002\u00010", - "matix": "//www.atmatix.pl/patterns/all?q=\u0002\u00010", - "mospherejs": "//atmospherejs.com/?q=\u0002\u00010" - }, - "u": { - "3": "//www.autoitscript.com/forum/search/?q=\u0002\u00010", - "\u0010": "//aur.archlinux.org/packages/?K=\u0002\u000138", - "b": { - "\u0010": "http://primo.aub.aau.dk/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=default_tab&indx=1&dum=true&srt=rank&vid=desktop&frbg=&vl%28freeText0%29=\u0002&scp.scps=scope%3A%28AUB_PROJEKT_DC%29%2Cscope%3A%28AUB_SFX%29%2Cscope%3A%28AUB_AAL%29%2Cscope%3A%28AUB_ESB%29%2Cscope%3A%28AUB_KBH%29%2Cscope%3A%28AUB_VBN%29%2Cprimo_central_multiple_fe&vl%2857399062UI1%29=all_items&vl%281UIStartWith0%29=contains&vl%2857399064UI0%29=any&vl%2857399064UI0%29=title&vl%2857399064UI0%29=any\u00010", - "untu": "http://askubuntu.com/search?q=\u0002\u00010" - }, - "k": { - "\u0010": "//www.amazon.co.uk/s?k=\u0002\u0001441", - "ro": "http://aukro.cz/listing.php/search?string=\u0002\u00010" - }, - "r": { - "4": "//aur4.archlinux.org/packages/?K=\u0002\u00010", - "\u0010": "//aur.archlinux.org/packages/?K=\u0002\u000138", - "p": "//aur.archlinux.org/packages/\u0002\u00016" - }, - "s": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "gov": "http://australia.gov.au/search?collection=gov_all&coverage=all&num_ranks=3&extra_all_num_ranks=3&form=simple&query=\u0002\u00010", - "med": "http://www.ausmed.com.au/sitesearch?q=\u0002\u00010", - "open": "//ausopen.com/search?search=\u0002\u00010", - "post": "http://auspost.com.au/track/track.html?id=\u0002\u00014", - "tlii": "http://www.austlii.edu.au/cgi-bin/sinosrch.cgi?query=\u0002&results=50&submit=Search&mask_world=&mask_path=&callback=on&method=auto&meta=%2Fau\u00010", - "tralian": "//www.theaustralian.com.au/search-results?q=\u0002\u00010" - }, - "df": "//forum.audacityteam.org/search.php?keywords=\u0002\u00010", - "di": { - "\u0010": "http://www.audi.de/de/brand/de/tools/search.html#search=\u0002\u00010", - "ble": { - "\u0010": "http://www.audible.com/search?advsearchKeywords=\u0002\u0001114", - "de": "http://www.audible.de/search?advsearchKeywords=\u0002\u00010", - "uk": "http://www.audible.co.uk/search/?advsearchKeywords=\u0002&filterby=field-keywords&x=0&y=0\u00014", - ".com": "http://www.audible.com/search?advsearchKeywords=\u0002\u0001114", - ".de": "http://www.audible.de/search?advsearchKeywords=\u0002\u00010" - }, - "obookjp": "//audiobook.jp/search?q=\u0002\u00010", - "ofanzine": "http://fr.audiofanzine.com/recherche/\u0002.html\u00010", - "ogon": "//app.audiogon.com/listings?&global_search_text=\u0002\u00010", - "ojungle": "http://audiojungle.net/search?utf8=%E2%9C%93&term=\u0002\u00010", - "onetwork": "http://www.audionetwork.com/show-production-results.aspx?stype=4&keywords=\u0002\u00010" - }, - "d2usd": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=AUD&To=USD\u00010", - "dubon": { - "b": "http://birds.audubon.org/search/node?keys=\u0002\u00010", - "\u0010": "http://www.audubon.org/search/node?keys=\u0002\u00010", - "mag": "http://www.audubonmagazine.org/search/node?keys=\u0002\u00010" - }, - "lete": "http://www.aulete.com.br/\u0002\u00016", - "one": "http://search.auone.jp/?q=\u0002\u00010", - "tos": { - "\u0010": "http://www.autocosmos.com.mx/search?q=\u0002\u00010", - "ar": "//www.autosar.org/nc/document-search/?tx_sysgsearch_pi1%5Bquery%5D=\u0002\u00010" - }, - "toanything": "http://www.autoanything.com/shop/\u0002\u00010", - "toblip": "http://www.autoblip.com/used/\u0002 \u00010", - "tobus": "http://seznam-autobusu.cz/seznam?numberPlateOrNumber=\u0002\u00019", - "tocar": "http://www.autocar.co.uk/SearchResults.aspx?q=\u0002\u00010", - "tozone": "http://www.autozone.com/searchresult?searchText=\u0002\u00019" - }, - "v": { - "\u0010": "//www.avclub.com/search?q=\u0002\u000133", - "c": { - "\u0010": "http://www.avclub.com/search/?q=\u0002\u00010", - "lub": "//www.avclub.com/search?q=\u0002\u000133" - }, - "g": { - "\u0010": "http://search.avg.com/search?q=\u0002\u00010", - "kb": "http://kb.avg.com/pkb_Home?q=\u0002\u00010" - }, - "i": { - "\u0010": "//avicultura.com/?s=\u0002\u00010", - "s": "//www.applevis.com/search?search_api_views_fulltext=\u0002\u00010", - "to": "//www.avito.ru/rossiya?q=\u0002\u000162" - }, - "w": "http://anevandos.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "ax": { - "\u0010": "http://avxsearch.se/search?q=\u0002:\u00010", - "h": "http://avaxsearch.net/avaxhome_search?q=\u0002 &a=&commit=Search&c=&l=&sort_by=\u00010" - }, - "tm": "http://www.adamvstheman.com/?s=\u0002 \u00010", - "vo": "//www.avvo.com/search?query=\u0002&commit=Search\u00010", - "aktiv": "//www.alpenvereinaktiv.com/en/search/?q=\u0002\u00010", - "anza": "//www.avanza.se/sok.html?query=\u0002\u000110", - "atar": { - "\u0010": "http://avatar.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "press": "http://www.avatarpress.com/?s=\u0002\u00010" - }, - "echi": "//avechi.com/catalogsearch/result/?q=\u0002\u00010", - "entrix": "//www.aventrix.com/?q=\u0002\u00010", - "enwiki": "http://www.asexuality.org/wiki/index.php?search=\u0002\u00010", - "pod": "//avpodcast.net/?s=\u0002\u00010", - "toprom": "//avtoprom.org/search.php?keywords=\u0002\u00010" - }, - "w": { - "\u0010": "//wiki.archlinux.org/index.php?title=Special%3ASearch&search=\u0002\u00010", - "d": { - "\u0010": "//www.amazon.com/s/url=search-alias%3Dwarehouse-deals&field-keywords=\u0002\u00010", - "e": "//wiki.archlinux.de/index.php?title=Spezial%3ASuche&search=\u0002\u00010" - }, - "s": "//docs.aws.amazon.com/search/doc-search.html?searchPath=documentation&searchQuery=\u0002 \u000188", - "ad": "http://wordsmith.org/awad/search.html?cx=partner-pub-0068747404870456%3A118gxl-7atb&cof=FORID%3A11&q=\u0002&sa=Search\u00010", - "ay": "//www.getawaygear.com/index.php?page=search&sPattern=\u0002\u00013", - "are": "http://flightaware.com/live/airport/\u0002\u00010", - "erb": "//ruby.libhunt.com/search?query=\u0002\u00010", - "esomecow": "http://awesomecow.com/index.php?ieska=\u0002\u00010", - "esomenauts": "http://awesomenauts.gamepedia.com/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010", - "iki": "//www.augsburgwiki.de/index.php/AugsburgWiki/Suchergebnisse?q=\u0002\u00010", - "img": "http://images.search.yahoo.com/search/images;_ylt=A0PDoS1.milPyVkAh7OJzbkF?p=\u0002&fr=alltheweb&ei=utf-8&n=30&x=wrt&y=Search\u00016", - "isdom": "//www.ancientwisdom.biz/search.php?q=\u0002\u00010", - "oiaf": "http://awoiaf.westeros.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000116" - }, - "x": "http://androidxref.com/5.1.0_r1/search?&project=abi&project=art&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=developers&project=development&project=device&project=docs&project=external&project=frameworks&project=hardware&project=libcore&project=libnativehelper&project=ndk&project=packages&project=pdk&project=prebuilts&project=sdk&project=system&project=tools&q=\u0002\u00016", - "y": { - "\u0010": "//www.aboutyou.de/suche?term=\u0002&search_source=ddgo\u00014", - "rne": "//ayrne.io/?s=\u0002\u00010" - }, - "z": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "d": "//www.amazon.de/s?k=\u0002\u00010", - "e": "//www.amazon.es/s?k=\u0002\u000179", - "f": { - "\u0010": "//www.amazon.fr/s?k=\u0002\u00012123", - "onts": "//www.azfonts.net/search.html?query=\u0002\u00010" - }, - "l": { - "\u0010": "http://search.azlyrics.com/search.php?q=\u0002\u000185", - "ane": "//azurlane.koumakan.jp/w/index.php?search=\u0002\u00019", - "yrics": "http://search.azlyrics.com/search.php?q=\u0002\u000185" - }, - "m": "//www.azom.com/search.aspx?q=\u0002&site=all&fsb=1\u00010", - "s": "//azspot.net/search/\u0002\u00010", - "ol": "http://azol.de/suche/?q=\u0002\u00010", - "om": "//www.azom.com/search.aspx?q=\u0002&site=all&fsb=1\u00010", - "uk": "//www.amazon.co.uk/s?k=\u0002\u0001441", - "ure": "//azure.microsoft.com/en-us/search/?q=\u0002\u00019" - }, - ".a": { - "\u0010": "//aktueladam.com/?s=\u0002 \u00010", - "t": "//www.amazon.de/s?k=\u0002\u00010" - }, - ".t": "//arcade.tokyo/?s=\u0002\u00010", - ".de": "//www.amazon.de/s?k=\u0002\u00010", - ".es": "//www.amazon.es/s?k=\u0002\u000179", - ".in": "//www.amazon.in/s?k=\u0002\u000195", - ".it": "//www.amazon.it/s?k=\u0002\u0001961", - ".uk": "//www.amazon.co.uk/s?k=\u0002\u0001441", - "NOW": "//primenow.amazon.com/search?k=\u0002 \u00010", - "qasha": "//www.aqasha.de/search/result?term=\u0002\u00010", - "qicn": "http://aqicn.org/city/\u0002\u00010", - "-tm": "http://forum.a-tm.co.jp/search?q=hello&searchJSON={%22keywords%22%3A%22\u0002%22}\u00010" - }, - "b": { - "5": "http://babylon5.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "a": { - "b": { - "a": "//www.alibaba.com/trade/search?IndexArea=product_en&CatId=&SearchText=\u0002\u00010", - "\u0010": "http://www.babla.fr/anglais-francais/\u0002\u00010", - "p": { - "\u0010": "//en.bab.la/dictionary/polish-english/\u0002\u00010", - "l": { - "\u0010": "http://pl.bab.la/slownik/angielski-polski/\u0002\u0001103", - "ru": "//pl.bab.la/slownik/polski-rosyjski/\u0002\u00010" - } - }, - "cs": "//en.bab.la/dictionary/english-czech/\u0002\u00010", - "el": { - "\u0010": "http://nl.bab.la/woordenboek/nederlands-engels/\u0002\u000120", - "net": "http://live.babelnet.org/search?word=\u0002&lang=EN\u00010" - }, - "sv": "http://sv.bab.la/lexikon/engelsk-svensk/\u0002\u000129", - "dedk": "http://fr.bab.la/dictionnaire/danois-allemand/\u0002\u00010", - "ende": "http://en.bab.la/dictionary/english-german/\u0002\u00010", - "eneo": "http://en.bab.la/dictionary/english-esperanto/\u0002\u00010", - "ensw": "//en.bab.la/dictionary/english-swedish/\u0002\u00010", - "esde": "http://de.bab.la/woerterbuch/spanisch-deutsch/\u0002\u00010", - "idoo": "//babidoo.de/?s=\u0002\u00010", - "ylonee": "http://traductor.babylon-software.com/ingles/a-espanol/\u0002\u00010", - "ymigo": "//babymigo.com/search/questions?query=\u0002\u00010" - }, - "\u0010": "http://beeradvocate.com/search?q=\u0002&qt=beer\u00015", - "c": { - "\u0010": "http://buenosairesconnect.com/?s=\u0002\u00019", - "on": "http://oracleofbacon.org/cgi-bin/movielinks?a=Kevin+Bacon&b=\u0002\u00010", - "kpack": { - "\u0010": "http://backpack.tf/id/\u0002\u000122", - "er": "//www.backpacker.com/search?query=\u0002\u00010" - } - }, - "m": { - "\u0010": "http://www.booksamillion.com/search?query=\u0002\u00010", - "bali": "//duckduckgo.com/?q=site%3Abambali.net+\u0002\u00010" - }, - "x": "http://www.bax-shop.nl/assortiment?keyword=\u0002&avz=true\u00013", - "di": "//badi.com/us/s/\u0002\u00010", - "hn": "http://reiseauskunft.bahn.de/bin/query.exe/dn?S=&Z=\u0002\u000150", - "ng": { - "\u0010": "/bang?q=\u0002\u00011180", - "s": "//duckduckgo.com/bang?q=\u0002\u0001495", - "lg": "http://de.pons.com/übersetzung?q=\u0002&l=dela&in=&lf=de\u00010", - "fren": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=enfr&in=&lf=fr\u00010", - "good": "http://www.banggood.com/index.php?keywords=\u0002&cat_id=0&com=search\u00016" - }, - "nq": "http://www.banq.qc.ca/techno/recherche/rms.html?keyword=\u0002&Recherche=tout&fonction=chercher&afficherPortail=checked&afficherIris=checked&afficherPistard=checked&afficherColNum=checked\u00010", - "nt": "//archive.nyafuu.org/bant/search/text/\u0002/\u00010", - "se": { - "\u0010": "//www.base-search.net/Search/Results?lookfor=\u0002&type=all&oaboost=1&ling=1&name=&newsearch=1&refid=dcbasen\u00010", - "64e": "//cryptography.cc/convert?text=\u0002&algorithm=base64encode\u00013", - "ballreference": "http://www.baseball-reference.com/pl/player_search.cgi?search=\u0002\u00018", - "notes": "http://www.basenotes.net/fragrancedirectory/?search=\u0002\u00010", - "search": "http://www.base-search.net/Search/Results?lookfor=\u0002&refid=duckduckgo\u00010" - }, - "sh": "http://duckduckgo.com/?q=\u0002+site:mywiki.wooledge.org,wiki.bash-hackers.org\u000110", - "to": { - "\u0010": "http://bato.to/search?name=\u0002&name_cond=c\u0001164", - "to": "http://bato.to/search?name=\u0002&name_cond=c\u0001164" - }, - "eldung": "//www.baeldung.com/?s=\u0002\u00017", - "idu": "http://www.baidu.com/s?wd=\u0002&cl=3\u0001307", - "ilii": "http://www.bailii.org/cgi-bin/sino_search_1.cgi?sort=rank&query=\u0002\u00010", - "ixaki": "http://www.baixaki.com.br/busca.asp?q=\u0002\u00010", - "katsuki": "//www.baka-tsuki.org/project/index.php?search=\u0002\u00010", - "kaupdatesmanga": "//www.mangaupdates.com/search.html?search=\u0002\u00010", - "llot": "//ballotpedia.org/wiki/index.php?search=\u0002\u00016", - "ncodata": "//bancodata.com.br/busca/?i=\u0002\u00010", - "ndq": "//www.diy.com/search?Ntt=\u0002\u00010", - "ndband": "//band-band.com/?s=\u0002\u00010", - "ndcamp": "//bandcamp.com/search?q=\u0002\u0001548", - "neks": "//baneks.site/search/\u0002\u00010", - "nned": "//banned.video/?q=\u0002\u00013", - "rchive": "//thebarchive.com/_/search/text/\u0002\u00010", - "rgain": "http://www.shopping-bargains.com/?s=\u0002\u00010", - "rnesandnoble": "//www.barnesandnoble.com/s/\u0002\u00019", - "rnivore": "http://www.barnivore.com/search?keyword=\u0002\u00018", - "rtender": "http://www.webtender.com/cgi-bin/search?name=\u0002&show=15&verbose=on\u00010", - "rtlets": "//www.bartleby.com/search?q=\u0002\u00010", - "scan": "http://duckduckgo.com/?q=\u0002+site:www.lyc-bascan-rambouillet.ac-versailles.fr\u00010", - "sketballreference": "//www.basketball-reference.com/search/search.fcgi?hint=&search=\u0002\u00010", - "tman": "http://batman.wikia.com/wiki/\u0002\u00010", - "ttledex": "//pokemongohub.net/?s=\u0002\u00010", - "ttlenet": "http://eu.battle.net/en/search?q=\u0002\u00010", - "y12": "//duckduckgo.com/?q=\u0002+site%3Abay12games.com\u00010", - "ygel": "//www.baygel.de/baygel.php?query=\u0002 \u00010", - "zar": { - "\u0010": "http://cafebazaar.ir/search/?l=&q=\u0002\u00010", - "bg": "//bazar.bg/obiavi?q=\u0002\u00010" - }, - "zel": "//docs.bazel.build/search.html?q=\u0002\u00010", - "zos": "http://www.bazos.cz/search.php?hledat=\u0002\u000114" - }, - "b": { - "b": "http://www.bbb.org/us/Find-Business-Reviews/name/\u0002\u00010", - "\u0010": "//bitbucket.org/repo/all/?name=\u0002\u000140", - "c": { - "\u0010": "http://www.bbc.co.uk/search/?q=\u0002\u0001618", - "i": "http://www.bbc.co.uk/iplayer/search?q=\u0002\u00014", - "m": { - "\u0010": "http://www.bbc.co.uk/mundo/search/?q=\u0002\u00013", - "usic": "http://www.bbc.co.uk/music/search-results?q=\u0002\u00010" - }, - "r": "http://www.bbc.co.uk/search?q=\u0002\u00010", - "s": { - "\u0010": "//bitbucket.org/search?q=\u0002\u00010", - "port": "http://www.bbc.co.uk/search/sport/\u0002?video=on&audio=on&text=on\u00010" - }, - "w": "//www.bbc.co.uk/weather/search?s=\u0002\u000131", - "gf": "http://www.bbcgoodfood.com/search/recipes?query=\u0002\u00010", - "om": "//search.bodybuilding.com/slp/full?context=all&query=\u0002\u00010", - "food": "http://www.bbc.co.uk/food/recipes/search?keywords=\u0002&x=0&y=0\u00010", - "news": "http://www.bbc.co.uk/search/news/?q=\u0002\u000140" - }, - "m": { - "\u0010": "//digital.bbm.usp.br/simple-search?location=&query=\u0002\u00010", - "x": "//www.bestbuy.com.mx/c/buscar-best-buy/buscar?query=\u0002\u00010" - }, - "r": { - "\u0010": "http://www.basketball-reference.com/player_search.cgi?search=\u0002\u000132", - "ef": "//www.baseball-reference.com/search/search.fcgi?hint=&search=\u0002\u0001171" - }, - "t": "//www.bbt.com/search-results.html?query=\u0002\u00018", - "y": { - "\u0010": "http://www.bestbuy.com/site/olspage.jsp?id=pcat17071&type=page&st=\u0002&sc=Global&cp=1&nrp=15&sp=&qp=&list=n&iht=y&usc=All+Categories&ks=960\u000165", - "c": "//m.bestbuy.ca/en-CA/search?search=\u0002\u000120" - }, - "fc": "http://www.bbfc.co.uk/search/releases/\u0002\u00013", - "js": "//doc.babylonjs.com/search/?bjsq=\u0002\u000114", - "us": { - "\u0010": "//bitbucket.org/\u0002/\u00010", - "p": "//digital.bbm.usp.br/simple-search?location=&query= \u0002 &rpp=100\u00010" - }, - "uy": "http://www.bestbuy.com/site/Brands/Apple/pcmcat128500050005.c?id=pcmcat128500050005&pageType=REDIRECT&issolr=1&searchterm=\u0002\u00010", - "allref": "//www.basketball-reference.com/search/search.fcgi?hint=&search=\u0002&pid=&idx= \u00017", - "apps": "http://appworld.blackberry.com/webstore/search/\u0002\u00010", - "art": "http://www.breitbart.com/search/?s=\u0002\u00010", - "dev": "//developer.blackberry.com/native/search/?search=\u0002&searchaction=Search\u00010", - "qpb": "//bbqpitboys.com/?s=\u0002&post_type=post\u00010", - "sfr": "http://www.bbs-consultant.net/search/node/\u0002\u00010" - }, - "\u0010": "//www.bing.com/search?q=\u0002\u00018900", - "c": { - "\u0010": "http://blockchain.info/search/\u0002 \u000124", - "c": "http://www.bcc.nl/search?fh_location=%2F%2Fcatalog01%2Fnl_NL%2Fchannel%3E%7Bm2ebcc2enl%7D&search=\u0002\u00010", - "e": "//cn.bing.com/dict/search?q=\u0002\u00010", - "l": "//boston.craigslist.org/search/sss?query=\u0002\u00010", - "m": { - "\u0010": "http://www.brawlcustommusic.com/index.php?song=\u0002&submit=Search\u00010", - "oe": "http://because.moe/?q=\u0002\u00010" - }, - "o": "http://boardcrewcial.org/search/thread/\u0002/\u00010", - "p": "http://tools.ietf.org/html/bcp\u0002\u00010", - "t": { - "\u0010": "http://bct.comperio.it/opac/search/lst?q=\u0002\u00010", - "ag": "http://bandcamp.com/tag/\u0002\u00010" - }, - "w": { - "\u0010": "//boxcritters.wiki/?search=\u0002\u00010", - "alls": "//www.blockchainwalls.com/category/\u0002\u00010", - "iki": "//en.bitcoin.it/w/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "db": "http://www.bcdb.com/bcdb/search.cgi?query=\u0002&bool=and&substring=1\u00010", - "amp": "//bandcamp.com/search?q=\u0002\u0001548", - "b-atm": "//bcb-atm.com/map?keyword=\u0002\u00010", - "bsla": "//www.bcbsla.com/search/Results.aspx?k=\u0002\u00010", - "hain": "//blockchain.info/address/\u0002\u00010", - "site": "//sitereview.bluecoat.com/sitereview.jsp#/?search=\u0002\u00010", - "spca": "http://www.spca.bc.ca/search.html?q=\u0002\u00010" - }, - "d": { - "\u0010": "http://www.baidu.com/s?wd=\u0002\u0001677", - "b": { - "\u0010": "//baddogbooks.com/?s=\u0002&post_type=product\u00010", - "k": "//wapbaike.baidu.com/search/word?word=\u0002\u00010", - "aike": "//baike.baidu.com/item/\u0002\u00010" - }, - "e": { - "\u0010": "http://dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010", - "als": "http://www.bradsdeals.com/search?query=\u0002\u00010" - }, - "g": { - "\u0010": "http://www.bedetheque.com/search/tout?RechTexte=\u0002&RechWhere=0 \u00010", - "c": "//www.bitdegree.org/search?q=\u0002&src=ukw\u00010", - "l": "//www.bitdegree.org/learn/search?query=\u0002\u00010" - }, - "h": "http://www.leblogduhacker.fr/?s=\u0002\u00010", - "i": { - "\u0010": "//cn.bing.com/dict/search?q=\u0002\u00010", - "ca": "//www.boadica.com.br/busca-resultado?q=\u0002\u00010", - "mg": "//image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111111&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=\u0002&oq=test&rsp=-1\u00010", - "ctionary": "http://www.businessdictionary.com/search.php?q=\u0002\u00010" - }, - "l": { - "\u0010": "http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=\u0002&T3.x=0&T3.y=0\u00010", - "p": "http://dblp.uni-trier.de/search?q=\u0002\u00010" - }, - "t": { - "\u0010": "http://www.bedetheque.com/search/tout?RechTexte=\u0002&RechWhere=0\u00010", - "r": "//fanyi.baidu.com/#en/zh/\u0002\u00017" - }, - "ay": "//www.bing.com/search?q=\u0002&filters=ex1%3a\"\"ez1\"\"\u00010" - }, - "e": { - "\u0010": "//blockexplorer.com/searchgo/\u0002\u000112", - "l": { - "\u0010": "//kgov.com/search?query=\u0002\u00010", - "l": { - "\u0010": "http://www.bell.ca/Search?q=\u0002\u00010", - "evuecollege": "http://www.bellevuecollege.edu/search/?txtQuery=\u0002&search=Search\u00010", - "issimi.bg": "http://bellissimi.bg/index.php?route=product/search&search=\u0002\u00010" - }, - "kin": "http://www.belkin.com/us/search?text=\u0002\u00010", - "simpel": "//www.belsimpel.nl/zoeken?s=\u0002\u00010" - }, - "o": { - "\u0010": "http://dict.tu-chemnitz.de/dings.cgi?service=deen&query=\u0002\u000141", - "es": "http://dict.tu-chemnitz.de/dings.cgi?service=dees&query=\u0002\u00010", - "pt": "http://dict.tu-chemnitz.de/dings.cgi?service=dept&query=\u0002\u00010", - "lingus": "http://dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010" - }, - "u": "//bertholdsson.eu/?s=\u0002\u00010", - "am": "http://www.beammachine.net/de/qsearch.php?q=\u0002&strict=1\u00010", - "ck": { - "\u0010": "//beck-online.beck.de/Search?words=\u0002\u000131", - "shop": "http://www.beck-shop.de/trefferliste.aspx?q=\u0002&action=search&page=0\u00010" - }, - "er": { - "\u0010": "http://beeradvocate.com/search?q=\u0002&qt=beer\u00015", - "advocate": "//www.beeradvocate.com/search/?q=\u0002\u00014" - }, - "et": "//beets.readthedocs.io/en/latest/search.html?q=\u0002\u00010", - "atport": "//www.beatport.com/search?q=\u0002\u000110", - "autyheaven": "//www.beautyheaven.com.au/search?term=\u0002\u00010", - "autymnl": "//beautymnl.com/search?utf8=%E2%9C%93&q=\u0002\u00010", - "autypedia": "//www.beautypedia.com/skin-care-reviews/?Ntt=\u0002\u00010", - "cause": "http://because.moe/?q=\u0002\u00010", - "cho": "//www.bournemouthecho.co.uk/search/?search=\u0002\u00010", - "dbath": "http://www.bedbathandbeyond.com/store/s/\u0002\u00013", - "detheque": "http://www.bedetheque.com/search/tout?RechTexte=\u0002&RechWhere=0\u00010", - "drock": "//bedrockgranitecompany.com/?s=\u0002\u00010", - "ebom": "//beebom.com/?s=\u0002\u00010", - "ewigs": "//beewigs.com/search?q=\u0002\u00010", - "ezer": "http://www.beezer.com.au/search?type=product&q=\u0002\u00010", - "foreiplay": "http://beforeiplay.com/index.php?search=\u0002\u00010", - "geek": "http://www.begeek.fr/?s=\u0002\u00010", - "hance": "http://www.behance.net/search?search=\u0002\u000147", - "hindsurname": "http://surnames.behindthename.com/name/\u0002 \u00013", - "hindthename": "http://www.behindthename.com/name/\u0002\u000126", - "insa": "http://beinsa.bg/search.php?q=\u0002&submit=ТЪРСИ&s_type=all&id=&status=1\u00010", - "n10": "http://ben10.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "ndixking": "//bendixkingradios.com/catalogsearch/result/?q=\u0002\u00010", - "neco": "http://luzonmorningsun.com/?s=\u0002\u00010", - "rekenen": "http://www.berekenhet.nl/zoeken.html?q=\u0002\u00010", - "rgdorf": "http://www.bergdorfgoodman.com/search.jsp?N=0&Ntt=\u0002\u00010", - "rgfex": "http://www.bergfex.com/sommer/suchen/?q=\u0002\u00010", - "rgfreunde": "http://www.bergfreunde.de/s/*/?searchparam=\u0002\u00010", - "rita": "//katasapa.com/vanessa?q=\u0002\u00010", - "rlingske": "http://b.dk/search/\u0002\u00010", - "rlinmap": "http://www.berlin.de/stadtplan/?ADR_STREET=\u0002\u00010", - "rmuda": "http://bermuda.io/dataset?q=\u0002\u00010", - "rneri": "http://circoloberneri.indivia.net/?s=\u0002\u00010", - "rtrand": "//www.bertrand.pt/pesquisa/\u0002\u00010", - "rufenet": "//berufenet.arbeitsagentur.de/berufenet/faces/index?path=null/suchergebnisse&such=\u0002\u00010", - "sch": "http://conjugueur.bescherelle.com/ConjugueurWeb/index.jsf?term=\u0002\u00010", - "slist": "http://www.beslist.nl/products/r/\u0002/\u00010", - "stbuy": { - "\u0010": "http://www.bestbuy.com/site/olspage.jsp?id=pcat17071&type=page&st=\u0002&sc=Global&cp=1&nrp=15&sp=&qp=&list=n&iht=y&usc=All+Categories&ks=960\u000165", - "ca": "//www.bestbuy.ca/en-ca/search?search=\u0002\u00017" - }, - "steveralbums": "//www.besteveralbums.com/search.php?s_o=all&s_q=\u0002\u00019", - "stprice": "http://www.bestprice.gr/search?q=\u0002\u00013", - "stsellinglover": "//www.bestsellinglover.com/search-now?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010", - "talist": "http://betalist.com/search?q=\u0002\u00010", - "tches": "http://www.betches.com/search/\u0002\u00010", - "tterworldbooks": "//betterworldbooks.com/?q=\u0002\u00010", - "ver": "//www.bever.nl/lister.html?q=\u0002\u00010", - "vmo": "http://www.bevmo.com/Shop/ProductList.aspx/_/D-\u0002/N-/Ntt-\u0002?DNID=Home&Dx=mode%2Bmatchany&fromsearch=true&Ntk=All&Ntx=mode%2Bmatchany\u00010", - "vvy": "//bevvy.co/search?q=\u0002\u00010" - }, - "f": { - "\u0010": "http://www.buzzfeed.com/search?q=\u0002\u000125", - "i": "//www.bfi.org.uk/search/search-bfi/\u0002\u00010", - "x": "//www.bergfex.at/suchen/?q=\u0002\u000117", - "de": "http://www.babelfish.de/dict?query=\u0002&src=auto&dst=en&submit=übersetzen\u00010", - "m899": "//www.bfm.my/podcast.html?qseaid=\u0002&pseaid=latest&iseaid=all&dsseaid=&deseaid=&tag=&prg=\u00010" - }, - "g": { - "\u0010": "http://www.biblegateway.com/passage/?search=\u0002\u0001226", - "c": "//www.bankgirot.se/en/sok-bg-nr/?company=\u0002\u00010", - "g": { - "\u0010": "//boardgamegeek.com/geeksearch.php?action=search&objecttype=boardgame&q=\u0002&B1=Go\u00012539", - "gm": "http://boardgamegeek.com/geekmarket/search?q=\u0002\u00010" - }, - "l": "//www.babygearlab.com/search?ftr=\u0002\u00010", - "m": "//bgm.tv/subject_search/\u0002?cat=all\u000189", - "n": "//www.bankgirot.se/en/sok-bg-nr/?bgnr=\u0002\u00010", - "o": "//www.bankgirot.se/en/sok-bg-nr/?orgnr=\u0002\u00010", - "p": { - "\u0010": "http://bgp.he.net/search?search%5Bsearch%5D=\u0002&commit=Search\u000128", - "uk": "//boardgameprices.co.uk/item/search?search=\u0002\u000172" - }, - "s": "http://www.boardgamesearch.com.au/#!/search/\u0002\u00010", - "w": "http://www.biblegateway.com/keyword/?search=\u0002\u000120", - "ea": "http://billygraham.org/?s=\u0002\u00010", - "kj": { - "\u0010": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=KJV\u00010", - "v": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=KJV\u00010" - }, - "unikat": "//bgunikat.eu/index.php?route=product/search&search=\u0002\u00010" - }, - "h": { - "b": "http://biblehub.net/search.php?q=\u0002\u000110", - "\u0010": "http://www.bhphotovideo.com/c/search?Ntt=\u0002\u0001322", - "o": "http://www.british-history.ac.uk/search?query=\u0002\u00010", - "t": "http://baheth.info/all.jsp?term=\u0002\u00010", - "ive": "//www.bhive.org/?s=\u0002\u00010", - "photovideo": "//www.bhphotovideo.com/c/search?Ntt=\u0002&N=0&InitialSearch=yes&sts=ma&typedValue=&Top+Nav-Search=\u00010" - }, - "i": { - "\u0010": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00013266", - "l": { - "\u0010": "//www.billiger.de/search?searchstring=\u0002\u00010", - "i": { - "\u0010": "http://www.bilibili.com/search?keyword=\u0002:\u0001149", - "bili": "http://search.bilibili.com/all?keyword=\u0002 \u0001169" - }, - "ka": "//www.bilka.dk/s%C3%B8g?tekst=\u0002\u00010", - "liger": "//www.billiger.de/search?searchstring=\u0002\u00010", - "lygraham": "//billygraham.org/?s=\u0002\u00010", - "priser": "http://www.bilpriser.se/bilvardering?regnr=\u0002\u00010", - "tema": "http://www.biltema.se/sv/Sok/?query=\u0002\u00010", - "uppg": "//biluppgifter.se/fordon/\u0002\u00010" - }, - "m": { - "\u0010": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00013266", - "ages": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00013266" - }, - "n": { - "\u0010": "http://bin.arnastofnun.is/leit/?q=\u0002\u000130", - "g": { - "\u0010": "//www.bing.com/search?q=\u0002\u00018900", - "gif": "http://www.bing.com/images/search?&q=\u0002&qft=+filterui:photo-animatedgif&FORM=R5IR25\u00010", - "images": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00013266", - "maps": "//www.bing.com/maps/?q=\u0002&obox=1\u000112", - "videos": "//www.bing.com/videos/search?q=\u0002\u000152" - }, - "nys": "http://www.binnys.com/all/\u0002\u00010", - "tray": "//bintray.com/search?query=\u0002\u00010" - }, - "o": { - "\u0010": "http://www.biography.com/search?query=\u0002\u00010", - "c": "http://bioconductor.org/help/search/index.html?q=\u0002\u00010", - "belp": "//www.biohelp-profi.at/store-search-result.php?keywords=\u0002\u00010", - "grid": "http://thebiogrid.org/search.php?search=\u0002\u00010", - "graphy": "//www.biography.com/search?query=\u0002\u00010", - "logy": "//allyouneedisbiology.wordpress.com/?s=\u0002\u00010", - "-online": "http://www.biology-online.org/search.php?search=\u0002\u00010", - "rxiv": "http://biorxiv.org/search/\u0002\u00019" - }, - "r": { - "\u0010": "//www.bing.com/images/search?q=imgurl:\u0002&view=detailv2&iss=sbi&FORM=IRSBIQ#enterInsights\u00010", - "d": { - "\u0010": "//www.allaboutbirds.org/search/?q=\u0002\u00013", - "s": "//www.allaboutbirds.org/search/?q=\u0002\u00013" - }, - "ikim": "http://www.birikimdergisi.com/arama/\u0002\u00010" - }, - "z": { - "\u0010": "//incfact.com/company/search/?q=\u0002\u00010", - "dic": "http://www.businessdictionary.com/search.php?q=\u0002\u00010", - "gift": "//bizgift.vn/?s=\u0002\u00010", - "nar": "http://www.biznar.com/biznar/result-list/fullRecord:\u0002\u00010", - "rate": "http://www.bizrate.com/classify?search_box=1&keyword=\u0002&originalKeyword=&SEARCH_GO=\u00010" - }, - "ch": "//bitinfocharts.com/comparison/marketcap-\u0002.html#log\u00010", - "fr": "http://bioinfo-fr.net/?s=\u0002\u00010", - "gw": { - "\u0010": "//www.bigw.com.au/search/?text=\u0002&category=\u00014", - "ords": "http://www5.bigwords.com/search/easy-search/?producttype=all&searchtype=isbn&searchstring=\u0002&buySell=\u00010" - }, - "ke": { - "\u0010": "http://sheldonbrown.com/searchResults.html?cx=partner-pub-1229949690989515%3A1174459614&cof=FORID%3A10&q=\u0002\u00013", - "24": "//www.bike24.com/1.php?content=13&search=\u0002\u00016", - "dsct": "//www.bike-discount.de/de/suche?q=\u0002\u00010", - "net": "//bikenet.nl/occasions/?zoeken=\u0002\u00010" - }, - "sa": "//www.bisafans.de/suchbisa.php?q=\u0002\u00010", - "sp": "//www.bisp-surf.de/Search/Results?type=AllFields&lookfor=\u0002&submit=Suchen&limit=20&sort=relevance\u00010", - "tc": { - "\u0010": "//www.bitchute.com/search/?q=\u0002&sort=date_created+desc\u00010", - "h": { - "\u0010": "//www.bitchute.com/search/?q=\u0002&sort=date_created+desc\u00010", - "ute": "//www.bitchute.com/search/?q=\u0002&sort=date_created+desc\u00010" - }, - "oin": "//blockchain.info/search?search=\u0002\u00019" - }, - "ben": "http://www.biblestudytools.com/search/?s=references&q=\u0002&rc=ENC&rc2=\u00010", - "berfurt": "http://opac.uni-erfurt.de/DB=1/SET=3/TTL=11/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010", - "bgent": "http://zoeken.gent.bibliotheek.be/?q=\u0002\u00010", - "bhub": "http://biblehub.net/search.php?q=\u0002\u000110", - "ble": { - "\u0010": "http://www.biblegateway.com/keyword/?search=\u0002&searchtype=all\u0001259", - "atlas": "http://biblehub.net/searchatlas.php?q=\u0002\u00010", - "com": "//www.bible.com/search/bible?q=\u0002\u00010", - "gateway": "http://www.biblegateway.com/keyword/?search=\u0002&version1=47&searchtype=all\u000116", - "hub": "http://biblemenus.com/search.php?q=\u0002\u00019", - "server": "http://bibleserver.com/search/LUT/\u0002/1\u00018", - "tools": "http://www.biblestudytools.com/search/?q=\u0002\u00010" - }, - "blio": { - "\u0010": "http://biblio.com/search.php?keyisbn=\u0002\u00014", - "mi": "//milano.biblioteche.it/opac/search/lst?q=\u0002\u00010", - "netka": "http://www.biblionetka.pl/search.aspx?searchType=book_catalog&searchPhrase=\u0002\u00010", - "tek": { - "\u0010": "//bibliotek.dk/search/work/\u0002\u00010", - "kavlinge": "http://bibliotek.kavlinge.se/search?query=\u0002\u00010" - } - }, - "blija": "http://www.biblija.net/biblija.cgi?m=\u0002 \u00010", - "blsrv": "http://www.bibleserver.com/search/\u0002\u00010", - "bnet": "http://www.biblionet.gr/main.asp?page=results&key=\u0002\u00010", - "bparis": "//bibliotheques.paris.fr/Default/search.aspx?SC=CATALOGUE&QUERY=\u0002\u00010", - "bsonomy": "http://www.bibsonomy.org/search/\u0002\u00010", - "bunipi": "http://onesearch.unipi.it/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=default_tab&indx=1&dum=true&srt=rank&vid=39UPI_V1&frbg=&tb=t&vl(freeText0)=\u0002&scp.scps=scope%3A(39UPI)%2C39UPI_EbscoLocal%2Cprimo_central_multiple_fe\u00010", - "dorbuy": "http://www.bidorbuy.co.za/search/\u0002 \u00010", - "dvoy": "http://bidvoy.net/%22\u0002 \u00010", - "gbasket": "http://bigbasket.com/ps/?q=\u0002\u00010", - "genc": "//bigenc.ru/search?q=\u0002\u00010", - "gfish": "http://www.bigfishgames.com/download-games/search.html?search=\u0002\u00010", - "gfuture": "//bigfuture.collegeboard.org/sitesearch?searchType=bf_site&tp=bf&q=\u0002\u00010", - "ghuge": "http://words.bighugelabs.com/\u0002\u00010", - "goven": "http://www.bigoven.com/recipes/\u0002/best\u00010", - "gstock": "http://www.bigstockphoto.com/search/\u0002/\u00010", - "jbel": "//www.debijbel.nl/zoeken/?q=\u0002&v=NBV&t=bible\u00010", - "sbn": "http://bookprice.co/isbn/\u0002\u00010", - "taps": "//bitaps.com/\u0002\u00010", - "tbucket": "//bitbucket.org/repo/all/?name=\u0002\u000140", - "tesizegcse": "http://www.bbc.co.uk/schools/gcsebitesize/search/index.shtml?scope=gcsebitesize_include&q=\u0002\u00010", - "tly": "//bitly.com/?url=\u0002\u00018", - "tlair": "//wiki.bitlair.nl/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "tref": "//bitref.com/\u0002\u00010", - "ttrust": "http://bittrust.org/search#stq=\u0002\u00010", - "tview": "http://www.bitview.net/results.php?search=\u0002&t=Search+Videos\u00013", - "vol": "//search.bivol.bg/?q=\u0002#results\u00010" - }, - "k": { - "\u0010": "//www.bluekangaroo.com/products?term=\u0002\u00010", - "l": "http://search.books.com.tw/search/query/key/\u0002/cat/all\u00010", - "r": { - "\u0010": "http://www.basketball-reference.com/player_search.cgi?search=\u0002\u000132", - "ef": "http://www.basketball-reference.com/search/search.fcgi?hint=\u0002&search=\u0002&pid=&idx=\u000159", - "adio": "//bendixkingradios.com/catalogsearch/result/?q=\u0002\u00010" - }, - "adda": "http://www.bookadda.com/general-search?searchkey=\u0002\u00010", - "kpost": "//search.bangkokpost.com/search/result_advanced?category=all&xChannel=&q=\u0002\u00010", - "share": "//www.bookshare.org/search?keyword=\u0002\u00010" - }, - "l": { - "a": { - "\u0010": "http://blackle.com/results/?cx=partner-pub-8993703457585266%3A4862972284&cof=FORID%3A10&ie=UTF-8&q= \u0002&sa=+#gsc.tab=0&gsc.q= \u0002&gsc.page=1\u00010", - "nd": "//bland.is/classified/default.aspx?q=\u0002\u00010", - "ze": "http://www.theblaze.com/?s=\u0002\u00010", - "blacar": "//www.blablacar.fr/trajets/vers-\u0002\u00010", - "ckbook": { - "\u0010": "http://www.blackbookmag.com/search/articles#keywords:\u0002\u00013", - "mag": "http://www.blackbookmag.com/search/articles#keywords:\u0002\u00013" - }, - "cklist": "http://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a\u0002&run=toolpage\u00010", - "ckwells": "//blackwells.co.uk/bookshop/search/?keyword=\u0002\u00014", - "dehq": "//www.bladehq.com/?search=\u0002\u00010" - }, - "b": { - "\u0010": "http://www.blb.org/search/preSearch.cfm?plugin=yes&Criteria=\u0002\u000190", - "l": "http://www.bilibili.com/search?keyword=\u0002\u00017" - }, - "d": "http://thelawdictionary.org/search2/?cx=partner-pub-4620319056007131%3A7293005414&cof=FORID%3A11&ie=UTF-8&q=\u0002}\u00010", - "e": { - "\u0010": "//bluetoothle.wiki/start?do=search&id=start&q=\u0002\u00010", - "x": "http://blender.stackexchange.com/search?q=\u0002\u00010", - "ep": { - "\u0010": "//bleep.com/search/query?q=\u0002\u00010", - "ingpc": "//www.bleepingcomputer.com/search/?q=\u0002\u00010" - }, - "ach": "http://bleach.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "nder": { - "\u0010": "http://blender.org/manual/search.html?check_keywords=yes&q=\u0002\u00016", - "api": "//docs.blender.org/api/current/search.html?q=\u0002\u00010", - "guru": "http://www.blenderguru.com/?s=\u0002&submit.x=0&submit.y=0\u00014" - }, - "ndle": "//blendle.nl/search/\u0002\u00010", - "ndapi": "//docs.blender.org/api/current/search.html?q=\u0002&check_keywords=yes&area=default\u00010" - }, - "f": "http://budgetlightforum.com/search?q_as=\u0002\u00010", - "g": "http://www.blenderguru.com/?s=\u0002&submit.x=0&submit.y=0\u00014", - "k": "//www.booklooker.de/Bücher/Angebote/infotext=\u0002\u00010", - "m": { - "b": "http://www.bloomberg.com/search?query=\u0002\u00013", - "\u0010": "http://blogmotion.fr/?utm_source=duckduckgo&utm_medium=bang&s=\u0002\u00010", - "s": "http://searcharchives.bl.uk/primo_library/libweb/action/search.do?fn=search&vl(freeText0)=\u0002\u00010" - }, - "n": "//www.blendernation.com/?s=\u0002\u00010", - "\u0010": "http://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&vl(freeText0)=\u0002\u00010", - "x": "http://www.blox.pl/html?page=blogPublicSearch&container_search=\u0002\u00010", - "cy": "//live.blockcypher.com/btc/address/\u0002\u00010", - "og": { - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Aduck.co%2Fblog\u00010", - "anchoi": "http://bloganchoi.com/?s=\u0002\u00010", - "spot": "/?q=\u0002+site:blogspot.com\u000114", - "s.splunk": "http://blogs.splunk.com/?s=\u0002\u00010", - "talkradio": "http://blogtalkradio.com/search/\u0002\u00010", - "udir": "//www.blogudir.com/search?q=\u0002\u00010" - }, - "uk": "http://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&vl(freeText0)=\u0002\u00010", - "ickaa": "http://www.blickamabend.ch/suche/?q=\u0002\u00010", - "indekuh": "http://www.blinde-kuh.de/bksearch.cgi?input=bksearchbox+start&query=\u0002\u00010", - "ockchain": "//blockchain.info/en/search?search=\u0002\u00013", - "ockchair": "//blockchair.com/search?q=\u0002\u00014", - "ocket": "http://www.blocket.se/hela_sverige?q=\u0002&cg=0&w=3&st=s&st=u&st=b&ca=11&l=0&md=th\u00019", - "oom": "//www.bloomberg.com/search?query=\u0002\u000125", - "oodcat": "//bloodcat.com/osu/?q=\u0002&c=b&s=&m=&g=&l=\u00010", - "oonswiki": "http://bloons.wikia.com/search?query=\u0002\u00010", - "ueapron": "http://blueapron.com/?q=\u0002\u00010", - "uehive": "//www.bluehive.com/providers/search/\u0002\u00010", - "ueletterbible": "http://www.blueletterbible.org/search/search.cfm?Criteria=\u0002&t=KJV#s=s_primary_0_1\u00010", - "ueline": "//rsw.me.uk/blueline/methods/search?q=\u0002\u00010", - "uelight": "http://cse.google.com/cse?cx=009513296995230692334:6ksgwcos37i&q=\u0002\u00010", - "uray": "http://www.blu-ray.com/search/?quicksearch=1&quicksearch_country=all&quicksearch_keyword=\u0002§ion=bluraymovies\u000160" - }, - "m": { - "\u0010": "//www.bing.com/maps/?q=\u0002&obox=1\u000112", - "j": { - "\u0010": "//www.bmj.com/search/advanced/\u0002\u00010", - "bp": "//bestpractice.bmj.com/search?q=\u0002\u00010" - }, - "k": "//blendermarket.com/search?q=\u0002\u00010", - "o": { - "\u0010": "//bugzilla.mozilla.org/buglist.cgi?quicksearch=\u0002\u00014", - "notes": "//www.bmonotes.com/Search/GeneralSearch?query=\u0002\u00010", - "nth": "//www.bing.com/search?q=\u0002&filters=ex1%3a\"\"ez3\"\"\u00010" - }, - "p": "//bookmyparts.com/?s=\u0002&post_type=product\u00010", - "r": "http://bluemoonrising.com/?s=\u0002\u00010", - "s": "http://in.bookmyshow.com/search/results/?_s=0.2&search=\u0002\u000111", - "de": "//www.brickmerge.de/?find=\u0002\u00010", - "aps": "//www.bing.com/maps/?q=\u0002&obox=1\u000112", - "wparts": "//www.getbmwparts.com/search?search_str=\u0002\u00010" - }, - "n": { - "a": "http://www.bna.com.ar/Buscador?q=\u0002\u00010", - "\u0010": "//www.barnesandnoble.com/s/\u0002\u00019", - "f": "http://catalogue.bnf.fr/rechercher.do?motRecherche=\u0002\u00010", - "l": "//www.bing.com/search?q=\u0002&cc=nl\u00010", - "r": "http://www.bnrmetal.com/v5/search/search/\u0002\u00010", - "s": "//bokunoshumi.wordpress.com/?s=\u0002\u00010", - "br": "http://www.bing.com/search?q=\u0002&rf=1&qpvt=\u0002\u00010", - "dc": "//bandcamp.com/search?q=\u0002\u0001548", - "ha": "http://bokunoheroacademia.wikia.com/wiki/Special:Search?go&query=\u0002\u00014", - "il": "http://www.baileynurseries.com/imagelibrary/gallery/search/?name=\u0002&brand=All&plant_type=All&height_lo=&height=f&spread_lo=&spread=f&exposure=All&zone=All&foliage=&dosearch=Do+Search\u00010", - "ews": "//www.bing.com/news/search?q=\u0002\u000135" - }, - "o": { - "\u0010": "http://www.boerse-online.de/suchergebnisse?_search=\u0002\u00016", - "i": { - "\u0010": "http://bindingofisaacrebirth.gamepedia.com/index.php?search=\u0002\u000126", - "ngboing": "http://www.google.com/cse?cx=partner-pub-2170174688585464:d58nno-rqp8&ie=ISO-8859-1&q=\u0002&sa=GO&siteurl=www.boingboing.net/\u00013" - }, - "l": { - "a": { - "\u0010": "//wiki.parabola.nu/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "pkg": "//www.parabola.nu/packages/?q=\u0002\u000113" - }, - "\u0010": "//www.bol.com/nl/s/?searchtext=\u0002\u0001269", - "ha": "http://www.bolha.com/iskanje?q=\u0002\u00010", - "or": "http://www.bolor-toli.com/dictionary/word?search=\u0002\u00010" - }, - "m": { - "\u0010": "http://www.boxofficemojo.com/search/?q=\u0002\u00014", - "negocio": "http://www.bomnegocio.com/brasil?q=\u0002\u00010" - }, - "o": { - "k": { - "\u0010": "http://www.booking.com/searchresults.html?ss=\u0002&si=ai\u000187", - "o": "http://booko.com.au/books/search?q=\u0002\u000136", - "s": { - "\u0010": "//www.amazon.com/s?k=\u0002&i=stripbooks\u000115", - "etc": "http://www.booksetc.co.uk/books/search?q=\u0002\u00010" - }, - "baz": "http://bookbaz.ir/?s=\u0002 \u00010", - "brainz": "//bookbrainz.org/search?q=\u0002\u00010", - "crossing": "http://bookcrossing.by/books?find=\u0002\u00010", - "dep": { - "\u0010": "http://bookdepository.com/search?searchTerm=\u0002&search=Find+book\u000154", - "ository": "//www.bookdepository.com/search?searchTerm=\u0002&search=Find+book\u00018" - }, - "een": "//www.bookeenstore.com/search?words=\u0002\u00010", - "finder": "http://www.bookfinder.com/search/?author=&title=\u0002&lang=en&submit=Begin+search&new_used=*&destination=us¤cy=USD&mode=basic&st=sr&ac=qr\u000110", - "flavor": "http://bookflavor.com/#!\u0002\u00010", - "ing": { - "\u0010": "http://www.booking.com/searchresults.html?ss=\u0002&si=ai\u000187", - "es": "//www.booking.com/search.es.html?ss=\u0002\u00010" - }, - "live": "http://booklive.jp/search/keyword?keyword=\u0002\u000116", - "looker": "http://www.booklooker.de/B%C3%BCcher/Angebote/infotext=\u0002?lid=1\u00013", - "myshow": "http://in.bookmyshow.com/search/results/?_s=0.2&search=\u0002\u000111", - "net": "http://www.booknet.co.il/subc.asp?serin=3&c=3947&ser=\u0002\u00010" - }, - "m": { - "\u0010": "http://www.websmartboomer.com/?q=\u0002\u00010", - "kat": "http://boomkat.com/search?q=\u0002\u00010" - }, - "\u0010": "//bugzilla.opensuse.org/buglist.cgi?quicksearch=\u0002\u000179", - "t": { - "\u0010": "//getbootstrap.com/docs/4.0/components/\u0002/\u00010", - "leg": "http://bootleggames.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "st": "/?q=\u0002+site:boost.org\u000119" - }, - "do": "//www.bodo.de/suche.html?tx_kesearch_pi1[sword]=\u0002\u00010", - "na": "//www.bona.co.za/?s=\u0002\u00010", - "tb": "//duckduckgo.com/?q=site%3Abattleofthebits.org+\u0002\u00013", - "ards": "http://www.boards.ie/search/submit/?query=\u0002\u00010", - "ardgame": { - "\u0010": "//boardgamegeek.com/geeksearch.php?action=search&objecttype=boardgame&q=\u0002&B1=Go\u00012539", - "geek": "http://boardgamegeek.com/geeksearch.php?action=search&objecttype=boardgame&q=\u0002\u00016", - "prices": "http://www.boardgameprices.com/compare-prices-for?q=\u0002\u00010" - }, - "ardman": "http://dillonboardman.wordpress.com/?s=\u0002&submit=Search\u00010", - "bdylan": "//www.bobdylan.com/?s=\u0002\u00010", - "cca": "//bestonlinecasinoca.com/?s=\u0002\u00010", - "cpages": "http://bocpages.org/w/index.php?search=\u0002\u00010", - "deka": "http://bodeka.org/?s=\u0002\u00010", - "dycare": "//www.bodycarereviews.com/?s=\u0002\u00010", - "dyfit": "http://www.bodyenfitshop.nl/#twn|?tn_q=\u0002\u00010", - "gle": "http://www.bogleheads.org/w/index.php?search=\u0002\u00010", - "kmålsordboka": "http://ordbok.uib.no/perl/ordbok.cgi?OPP=+\u0002&ant_bokmaal=5&ant_nynorsk=5&bokmaal=+&ordbok=bokmaal\u00010", - "kus": "http://www.bokus.com/cgi-bin/product_search.cgi?ac_used=no&search_word=\u0002\u00019", - "ndfaro": "http://www.bondfaro.com.br/cprocura?produto=\u0002\u00010", - "nfire": "//www.bonfire.com/results/\u0002\u00010", - "nnus": "//bonnus.ulb.uni-bonn.de/Summon/Search?lookfor=\u0002&type=AllFields&submit=Suchen\u00010", - "rderlands": "http://borderlands.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "stonglobe": "http://www.bostonglobe.com/queryResult/search?q=\u0002\u00010", - "stonpubliclibrary": "//bpl.bibliocommons.com/search?q=\u0002&t=smart&search_category=keyword&commit=Search&submitsearch=go&se=catalog\u00010", - "tlist": "//botlist.co/search?query=\u0002\u00010", - "to3": "//boto3.readthedocs.io/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00014", - "ulet": "http://www.bouletcorp.com/?s=\u0002\u00010", - "ulanger": "http://www.boulanger.com/resultats?tr=\u0002\u00013", - "untysource": "//www.bountysource.com/search?query=\u0002\u00010", - "urbon": "http://bourbon.io/docs/?q=\u0002\u00010", - "wer": "//libraries.io/search?q=\u0002&platforms=Bower&sort=rank&sort=rank\u00010", - "xoh": "http://boxoh.com/?t=\u0002\u00016", - "yslife": "http://boyslife.org/search/?q=\u0002 \u00010" - }, - "p": { - "a": { - "\u0010": "http://bulbapedia.bulbagarden.net/wiki/\u0002\u000171", - "nda": "//www.boredpanda.com/?s=\u0002\u00010" - }, - "b": "http://www.bpb.de/suche/?suchwort=\u0002&suchen=Suchen\u00010", - "\u0010": "http://beautifulpixels.com/?s=\u0002 \u00010", - "i": "http://products.bpiworld.org/companies?title=&field_industry_category_tid=&field_member_id_value=\u0002\u00010", - "l": "http://www.backpackinglight.com/cgi-bin/backpackinglight/search.html?q=\u0002\u00010", - "m": "//songbpm.com/\u0002\u00010", - "o": { - "i": "//bugs.python.org/issue\u0002\u00010", - "p": "//www.brainpop.com/search/?keyword=\u0002\u00010", - "\u0010": "//bugs.python.org/issue?%40columns=id%2Cactivity%2Ctitle%2Ccreator%2Cassignee%2Cstatus%2Ctype&%40sort=-activity&%40filter=status&%40action=searchid&ignore=file%3Acontent&%40search_text=\u0002&submit=search&status=-1%2C1%2C2%2C3\u00010", - "st": "http://track.bpost.be/btr/web/#/search?itemCode=\u0002\u00010" - }, - "p": { - "\u0010": "//bibliotheques.paris.fr/Default/search.aspx?SC=CATALOGUE&QUERY=\u0002&QUERY_LABEL=\u00010", - "n": "http://katalog.bppn.waw.pl/F?func=find-b&request=\u0002&find_code=WRD&adjacent=N&local_base=PRA01&x=0&y=0&filter_code_1=WLN&filter_request_1=&filter_code_2=WYR&filter_request_2=&filter_code_3=WYR&filter_request_3=&filter_code_4=WFM&filter_request_4=&filter_code_5=WSL&filter_request_5=\u00010", - "ro": "//pro.beatport.com/search?q=\u0002\u00010" - }, - "t": "//www.brownpapertickets.com/browse.html?keywords=\u0002\u00010", - "ro": "//legacy.baseballprospectus.com/player_search.php?search_name=\u0002\u00010", - "edia": "http://bulbapedia.bulbagarden.net/w/index.php?title=Special:Search&search=\u0002&go=Go\u00010" - }, - "q": "//www.bloombergquint.com/search?q=\u0002\u00010", - "r": { - "\u0010": "http://www.baseball-reference.com/pl/player_search.cgi?search=\u0002\u00018", - "d": "//boardreader.com/s/\u0002.html\u00010", - "i": { - "\u0010": "//www.bing.com/images/search?q=imgurl:\u0002&view=detailv2&iss=sbi&FORM=IRSBIQ#enterInsights\u00010", - "m": "http://www.bricksinmotion.com/forums/search/?action=search&keywords=\u0002&search=Submit+search&show_as=topics\u00010", - "t": { - "\u0010": "//www.britannica.com/search?query=\u0002\u000116", - "annica": { - "\u0010": "http://www.britannica.com/search?query=\u0002\u000134", - "schoole": "http://school.eb.com/levels/elementary/search/articles?query=\u0002\u00010", - "schoolh": "http://school.eb.com/levels/high/search/articles?query=\u0002\u00010", - "schoolm": "http://school.eb.com/levels/middle/search/articles?query=\u0002\u00010" - }, - "imgq": "http://quest.eb.com/search/\u0002\u00010", - "ish": "http://www.britishslang.co.uk/search/default.aspx?q=\u0002\u00010", - "sche": "http://school.eb.com/levels/elementary/search/articles?query=\u0002\u00010", - "schh": "http://school.eb.com/levels/high/search/articles?query=\u0002\u00010", - "schm": "http://school.eb.com/levels/middle/search/articles?query=\u0002\u00010" - }, - "cklink": { - "\u0010": "http://www.bricklink.com/search.asp?q=\u0002\u00010", - "cat": "http://www.bricklink.com/catalogList.asp?q=\u0002\u000113" - }, - "ckpart": "http://brickset.com/parts?query=\u0002\u00010", - "ckset": "http://brickset.com/sets?query=\u0002\u000136", - "coman": "//www.bricoman.it/search/?q=\u0002\u00010", - "ghtstorm": "http://www.brightstorm.com/search/?k=\u0002\u00010" - }, - "k": "http://www.bruun-rasmussen.dk/search.do?q=\u0002\u00010", - "o": { - "\u0010": "http://bropages.org/\u0002\u00013", - "ok": "//www.brookings.edu/search/?s=\u0002\u00013", - "wn": { - "\u0010": "//search.library.brown.edu/?utf8=✓&q=\u0002\u00013", - "ells": "//www.brownells.com/search/index.htm?k=\u0002\u00013", - "lib": "//search.library.brown.edu/?utf8=✓&q=\u0002\u00013" - }, - "adsign": "//duckduckgo.com/?q=site%3Abroadsign.com+\u0002\u00010", - "ckhaus": "//brockhaus.de/search/?t=enzy&q=\u0002\u00010", - "-ids": "//www.bro.org/sphinx/search.html?check_keywords=yes&q=\u0002\u00010", - "nco": "http://broncowine.com/woocommerce-search/?cat_in=&rs=\u0002&search_in=product&search_other=product\u00010" - }, - "t": { - "\u0010": "//www.britannica.com/search?query=\u0002\u000116", - "m": "//www.baroteam.fr/?s=\u0002\u00010" - }, - "ew": { - "f": "//formulae.brew.sh/formula/\u0002\u000126", - "\u0010": "http://brewformulas.org/search?search%5Bterm%5D=\u0002\u000147" - }, - "ly": "//brainly.com/app/ask?entry=hero&q=\u0002\u000114", - "st": "//brawlstars.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "ack": "//www.brack.ch/search?query=\u0002\u00010", - "ainpop": { - "\u0010": "//www.brainpop.com/search/search.weml?keyword=\u0002\u00010", - "educators": "http://educators.brainpop.com/search/?q=\u0002\u00010" - }, - "ainyquote": "//www.brainyquote.com/search_results.html?q=\u0002\u00010", - "akdag": "//brakdag.nl/?s=\u0002\u00010", - "ands": "http://www.brandsoftheworld.com/search/logo?search_api_views_fulltext=\u0002\u00010", - "atabase": "http://www.bratabase.com/search/?q=\u0002\u00010", - "ave": "//search.brave.com/search?q=\u0002\u00011544", - "eitbart": "http://www.breitbart.com/search/?s=\u0002\u00010", - "ettspiele": "http://www.brettspiel-angebote.de/spiele/?s=\u0002&t=\u000113", - "l2eur": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=BRL&To=EUR\u00010", - "l2gbp": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=BRL&To=GBP\u00010", - "l2usd": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=BRL&To=USD\u00010", - "reg": "http://w2.brreg.no/enhet/sok/treffliste.jsp?navn=\u0002 &orgform=0&fylke=0&kommune=0\u00016", - "umario": "http://brumario.usal.es/search/?searchtype=X&searcharg=\u0002 &op=Buscar&SORT=D&searchscope=\u00010", - "ussels": "//welovebrussels.org/?s=\u0002\u00010", - "utsel": "//www.brutsellog.nl/?s=\u0002\u00010" - }, - "s": { - "4": "//www.crummy.com/software/BeautifulSoup/bs4/doc/search.html?q=\u0002\u00010", - "a": { - "\u0010": "//www.biblesociety.org.au/?s=\u0002&x=0&y=0\u00010", - "g": "//www.bsag.de/index.php?q=\u0002\u00010", - "ber": "//bsaber.com/?s=\u0002\u00013" - }, - "b": "//opacplus.bsb-muenchen.de/InfoGuideClient/start.do?Login=opacext&BaseURL=https%3a%2f%2fopacplus.bsb-muenchen.de%2fInfoGuideClient%2fstart.do%3fLogin%3dopacext&Query=-1=%22\u0002%22\u00010", - "\u0010": "//www.bing.com/shop?q=\u0002\u000118", - "i": { - "\u0010": "http://www.businessinsider.com/s?q=\u0002\u000110", - "shop": "//shop.bsigroup.com/SearchResults/?q=\u0002\u00010" - }, - "l": "http://www.signbsl.com/sign/\u0002\u00010", - "p": "//www.blendswap.com/blends/search?keywords=\u0002\u00010", - "r": "http://www.blueskyrotor.com/performance/search/index.php?keyword=\u0002\u00017", - "t": { - "\u0010": "http://www.barbershoptags.com/dbpage.php?pg=tags&go=Go&_searchq=\u0002\u00010", - "ar": { - "\u0010": "//www.biostars.org/local/search/page/?q=\u0002\u00010", - "s": "//www.bundlestars.com/en/games?search=\u0002\u00010" - } - }, - "w": "//bladeandsoul.gamepedia.com/index.php?search=\u0002\u00010", - "dman": "http://www.freebsd.org/cgi/man.cgi?query=\u0002\u00016", - "ocial": "//www.bing.com/social/search/updates?q=\u0002\u00017" - }, - "t": { - "c": { - "\u0010": "//www.blockchain.com/search?search=\u0002\u000119", - "m": "http://bitcoinity.org/markets/\u0002/USD\u00010", - "addr": "//www.blockchain.com/btc/address/\u0002\u00013" - }, - "\u0010": "//www.bing.com/translator?text=\u0002\u000191", - "s": "//bugs.debian.org/cgi-bin/bugreport.cgi?bug=\u0002\u000110", - "tf": "http://bttf.duckduckgo.com/?q=\u0002\u00013", - "abs": "http://www.ultimate-guitar.com/search.php?s=\u0002&w=songs\u00010", - "name": "//www.behindthename.com/names/search.php?terms=\u0002&type=\u000136", - "rfs": "//btrfs.wiki.kernel.org/index.php?title=Special%3ASearch&search=\u0002\u00014", - "url": "http://www.microsofttranslator.com/bv.aspx?a=\u0002\u00016" - }, - "u": { - "b": "//www.bookbub.com/search?search=\u0002\u00010", - "\u0010": "//bulbapedia.bulbagarden.net/w/index.php?title=Special%3ASearch&search=\u0002\u0001225", - "m": "//www.mangaupdates.com/search.html?search=\u0002\u00010", - "y": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "ee": "http://buyee.jp/item/search?query=\u0002 \u00010", - "cott": "http://www.buycott.com/search/all?query=\u0002\u00010", - "truckwheels": "http://www.buytruckwheels.com/index.php?route=product/search&filter_name=\u0002 \u00010" - }, - "z": { - "\u0010": "//www.buzer.de/s1.htm?a=&g=\u0002\u00010", - "z": { - "\u0010": "http://www.playbuzz.com/search?query=\u0002\u00010", - "feed": "//www.buzzfeed.com/search?q=\u0002\u00010" - } - }, - "ch": { - "7": "//www.buch7.de/store/simple_search_results?utf8=%E2%9C%93&navkat=&search=\u0002&commit.x=0&commit.y=0\u00010", - "\u0010": "//buchonline.info/?s=\u0002\u00010", - "preis24": "//www.buchpreis24.de/stichwort/\u0002\u00010" - }, - "ej": "//buprimo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=BU&lang=en_US&offset=0\u00010", - "nd": { - "\u0010": "//www.bund.net/service/suchergebnis/?L=0&q=\u0002\u00010", - "le": { - "\u0010": "//bundlephobia.com/result?p=\u0002\u00013", - "s": "//www.bundlestars.com/en/games?search=\u0002\u00010", - "phobia": "//bundlephobia.com/result?p=\u0002\u00013" - } - }, - "ng": "http://www.lawyersaroundme.com/search/?term=\u0002\u00014", - "nq": "//together.bunq.com/?q=\u0002\u00010", - "p8": "http://catalogue.bu.univ-paris8.fr/cgi-bin/koha/opac-search.pl?idx=&q=\u0002\u00010", - "sa": "http://www.basketusa.com/?s=\u0002\u00010", - "cea": "http://ucm.summon.serialssolutions.com/es-ES/#!/search?ho=t&fvf=ContentType,Newspaper%20Article,t&l=es-ES&q=\u0002&pg=buscador&utf8=%E2%9C%93\u00010", - "dgetbytes": "http://www.budgetbytes.com/?s=\u0002\u00016", - "ffy": "http://buffy.wikia.com/wiki/Special:Search?search= \u0002&go=Go\u00010", - "ffalolib": "//www.buffalolib.org/vufind/Union/Search?lookfor=\u0002&type=keyword&submit=Find&sort=title\u00010", - "gforum": "//www.bug.hr/forum/search/topic/?txt=\u0002\u00010", - "gguide": "http://bugguide.net/index.php?q=search&keys=\u0002\u00010", - "gzilla": "//bugzilla.mozilla.org/buglist.cgi?quicksearch=\u0002 \u00010", - "ien": "http://www.buienalarm.nl/location/\u0002\u00010", - "ild": "http://www.build.com/index.cfm?page=search:browse&term=\u0002\u00013", - "ilt": { - "\u0010": "//builtwith.com/?\u0002\u000128", - "with": "//builtwith.com/?\u0002\u000128" - }, - "kalapak": "//www.bukalapak.com/products?utf8=%E2%9C%93&search%5Bkeywords%5D=\u0002\u000112", - "kdev": "http://dev.bukkit.org/search/?search=\u0002\u00010", - "kkit": "//www.curseforge.com/minecraft/bukkit-plugins/search?search=\u0002\u00010", - "lba": { - "\u0010": "//bulbapedia.bulbagarden.net/w/index.php?title=Special%3ASearch&search=\u0002\u0001225", - "pedia": "http://bulbapedia.bulbagarden.net/w/index.php?title=Special:Search&search=\u0002&go=Go\u00010" - }, - "lletproof": "//blog.bulletproof.com/?s=\u0002\u00010", - "llmoose": "http://www.bullmoose.com/search?q=\u0002&SC=1\u00017", - "nnings": "//www.bunnings.com.au/search/products?q=\u0002&redirectFrom=Any\u000117", - "nware": "http://www.bunnings.com.au/search/products?q=\u0002 &redirectFrom=Any\u00010", - "rbuja": "http://www.burbuja.info/inmobiliaria/search.php?do=process&query=\u0002\u00010", - "rst": "//burst.shopify.com/photos/search?utf8=✓&q=\u0002\u00010", - "scape": "http://www.buscape.com.br/cprocura?produto=\u0002\u00014", - "sinessgovau": "//www.business.gov.au/search?q=\u0002\u00010", - "stimes": "//bustimes.org/search?q=\u0002\u00014" - }, - "v": { - "\u0010": "//www.bing.com/videos?q=\u0002\u00011864", - "g": "//fahrinfo.bvg.de/Fahrinfo/bin/query.bin/?pk_campaign=BVG.de_Eingabe&from=\u0002 \u00017", - "s": "http://pesquisa.bvsalud.org/regional/?q=\u0002\u00010", - "ideo": { - "\u0010": "//www.bing.com/videos?q=\u0002\u00011864", - "s": "//www.bing.com/videos?q=\u0002\u00011864" - } - }, - "w": { - "\u0010": "//www.bing.com/weather/forecast?q=\u0002\u000112", - "c": "http://belfrycomics.net/pg/?searchtype=Titles&searchpat=\u0002\u00010", - "s": "//bws.com.au/search?searchTerm=\u0002\u00010", - "books": "http://www.betterworldbooks.com/\u0002-H0.aspx?SearchTerm=\u0002 \u00017", - "eek": "//www.bing.com/search?q=\u0002&filters=ex1%3a\"\"ez2\"\"\u00010" - }, - "0b": "http://b0b.fr/?s=\u0002\u00010", - "4x": "//www.b4x.com/android/forum/pages/results/?query=\u0002\u00010", - "jj": "//www.bjjheroes.com/?s=\u0002\u00010", - "jp": "http://www.bjp.org/?searchword=\u0002&searchphrase=exact&limit=20&ordering=newest&view=search&option=com_search\u00010", - "&n": "//www.barnesandnoble.com/s/\u0002\u00019", - "xr": "http://bxr.su/search?refs=\u0002\u00010", - "yu": { - "\u0010": "//www.byu.edu/search-all?q=\u0002\u00010", - "i": "//www.byui.edu/search/result?q=\u0002\u00010" - }, - "3ta": "http://b3ta.com/search/posts?q=\u0002\u00010", - "4kids": "http://www.biology4kids.com/search.html?cx=partner-pub-9168758629909687%3A9553394167&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search\u00010", - "-rhymes": "http://www.b-rhymes.com/rhyme/word/\u0002\u00015", - "yggahus": "//www.byggahus.se/sokresultat/?q=\u0002 \u00010", - "yond": "http://www.byond.com/games/?text=\u0002\u00010", - "yte": "//www.byte-post.com/?s=\u0002\u00010", - "ztch": "//yadda.icm.edu.pl/baztech/search/page.action?q=sc.general*c_0all_0eq.\u0002*l_0&qt=SEARCH\u00010" - }, - "c": { - "2": { - "1": "//www.channel21.de/catalogsearch/result/?q=\u0002\u00010", - "4": "//www.chrono24.com/search/index.htm?watchTypes=&query=\u0002&dosearch=true&searchexplain=1&accessoryTypes=\u00013", - "c": { - "\u0010": "http://www.camptocamp.org/summits/list/snam/\u0002\u00010", - "forum": "http://www.camptocamp.org/documents/search?type=forums&q=\u0002 \u00010", - "site": "http://www.camptocamp.org/documents/search?type=sites&q=\u0002\u00010", - "summit": "http://www.camptocamp.org/documents/search?type=summits&q=\u0002\u00010" - }, - "e": "//translate.google.com/#cs/en/\u0002\u000110", - "\u0010": "http://c2.com/cgi/fullSearch?search=\u0002\u00010" - }, - "4": "http://www.channel4.com/search/?q=\u0002\u00016", - "a": { - "a": "http://www.caa.ca/?s=\u0002&submit=Search&lang=en\u00010", - "\u0010": "//www.amazon.ca/s?k=\u0002\u0001666", - "d": { - "\u0010": "//www.caddetails.com/search?q=\u0002\u00010", - "ence": "//www.cadence.com/content/cadence-www/global/en_US/home/search.html?k=\u0002\u00010" - }, - "h": { - "\u0010": "http://michaelyingling.com/random/calvin_and_hobbes/search.php?phrase=\u0002\u00010", - "o": "//www.cardhoarder.com/cards?data[search]=\u0002\u00010" - }, - "m": { - "d": "http://dictionary.cambridge.org/search/american-english/direct/?q=\u0002\u0001438", - "g": "http://dictionary.cambridge.org/us/grammar/british-grammar/\u0002\u00010", - "\u0010": "http://search.cam.ac.uk/web?query=\u0002\u00016", - "el": { - "\u0010": "http://camelcamelcamel.com/products?sq=\u0002 \u000172", - "de": "//de.camelcamelcamel.com/products?sq=\u0002\u00010", - "fr": "//fr.camelcamelcamel.com/search?sq=\u0002\u00010" - }, - "pl": { - "\u0010": "http://dictionary.cambridge.org/dictionary/english-polish/\u0002\u00010", - "en": "//dictionary.cambridge.org/dictionary/polish-english/\u0002\u00010" - }, - "tw": "//dictionary.cambridge.org/dictionary/english-chinese-traditional/\u0002\u00018", - "aro": "//www.z28.com/search/search?keywords=\u0002&order=relevance\u00010", - "bridge": "http://dictionary.cambridge.org/dictionary/english/\u0002\u0001311", - "erapb": "//www.camerapricebuster.co.uk/Search?q=\u0002\u00010", - "esen": "//dictionary.cambridge.org/dictionary/spanish-english/\u0002\u00010", - "fren": "//dictionary.cambridge.org/dictionary/french-english/\u0002\u00010", - "lib": "http://idiscover.lib.cam.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=cam_lib_coll&search_scope=SCOP_CAM_ALL&vid=44CAM_PROD&lang=en_US&offset=0\u00010", - "pus": { - "\u0010": "//accucampus.net/search?q=\u0002\u00014", - "nav": "//navigator.tu-dresden.de/erweitertesuche/\u0002\u00010" - } - }, - "n": { - "\u0010": "//recherche-search.gc.ca/rGs/s_r?cdn=canada&st=s&num=10&langs=eng&st1rt=0&s5bm3ts21rch=x&q=\u0002\u00010", - "on": "//www.usa.canon.com/internet/portal/us/home/searchresults?query=\u0002&searchTab=products\u00010", - "oo": "http://www.canoonet.eu/services/Controller?input=\u0002\u00010", - "to": { - "\u0010": "http://cantonese.org/search.php?q=\u0002\u000129", - "dict": "http://www.cantonese.sheik.co.uk/dictionary/search/?searchtype=1&text=\u0002\u00014" - }, - "ada": { - "\u0010": "//recherche-search.gc.ca/rGs/s_r?cdn=canada&st=s&num=10&langs=eng&st1rt=0&s5bm3ts21rch=x&q=\u0002\u00010", - "computers": "http://www.canadacomputers.com/advanced_search_result.php?keywords=\u0002 \u000113", - "post": "//www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber?trackingNumber=\u0002&LOCALE=en&LOCALE2=en\u00016" - }, - "adiantire": "http://www.canadiantire.ca/en/search-results.html?searchByTerm=true&q=\u0002\u00010", - "dade": "//www.c-and-a.com/webapp/wcs/stores/servlet/SearchDisplay?catalogId=10001&storeId=10153&langId=-3&articleSearch=false&searchTerm=\u0002&x=0&y=0\u00010", - "dlestickpatterns": "http://www.candlestickpatterns.org/?s=\u0002\u00010", - "istream": { - "\u0010": "http://www.canistream.it/search/term/\u0002\u00014", - "it": "http://www.canistream.it/search/term/\u0002\u00014", - "tv": "http://www.canistream.it/search/tv/\u0002\u00010", - "movie": "http://www.canistream.it/search/movie/\u0002\u00010" - }, - "iuse": "http://caniuse.com/#search=\u0002\u0001323", - "lii": "http://www.canlii.ca/en/search/search.do?all=\u0002\u00010", - "nabis": "//www.andcannabis.com/?s=\u0002\u00010", - "opener": "http://11foot8.com/?s=\u0002\u00014" - }, - "p": { - "\u0010": "//coinmarketcap.com/search/?q=\u0002\u000137", - "f": "//www.capfriendly.com/search?s=\u0002\u00010", - "p": "http://www.cappusa.com/catalogsearch/result/?q=\u0002\u00010", - "ital": "//www.capital.bg/search.php?stext=\u0002\u00010", - "ost": "http://www.canadapost.ca//cpotools/apps/track/personal/findByTrackNumber?trackingNumber=\u0002\u00013" - }, - "r": { - "\u0010": "http://www.carmagazine.co.uk/GLOBAL/Search-Results/?N=0&Ntx=mode%20matchallpartial&Ntk=site&Ntt=\u0002\u00014", - "bs": "http://www.calorieking.com.au/foods/search.php?keywords=\u0002&showresults=yes&go=Search\u00010", - "go": "//crates.io/search?q=\u0002\u00011162", - "anddriver": "http://caranddriver.com/search/\u0002\u00010", - "dboard": "//www.cardboardconnection.com/search-results?q=\u0002\u00010", - "dkingdom": "//www.cardkingdom.com/catalog/search?search=header&filter%5Bname%5D=\u0002\u00010", - "eerbuilder": "http://www.careerbuilder.com/Jobseeker/Jobs/JobResults.aspx?IPath=QH&ch=&rs=&s_rawwords=\u0002&s_jobtypes=ALL&s_freshness=30&s_education=DRNS&s_freeloc=&qsbButton=Find+Jobs+%3E%3E\u00010", - "jam": "//carjam.co.nz/car/?plate=\u0002\u00013", - "mag": "http://www.carmagazine.co.uk/GLOBAL/Search-Results/?N=0&Ntx=mode%20matchallpartial&Ntk=site&Ntt=\u0002\u00014", - "max": "//www.carmax.com/search#FreeText=\u0002\u00010", - "ousell": "//carousell.com/search/products/?query=\u0002 \u00010", - "rot": "http://search.carrot2.org/stable/search?source=web&view=folders&skin=fancy-compact&query=\u0002&results=100&algorithm=lingo\u00010", - "sales": "//www.carsales.com.au/cars/results/?q=CarAll.keyword(\u0002).&area=Stock&vertical=car&WT.z_srchsrcx=makemodel\u00010", - "toonnetwork": "http://www.cartoonnetwork.com/search/index.html?keywords=\u0002\u00010" - }, - "s": { - "\u0010": "http://www.commonchemistry.org/ChemicalDetail.aspx?ref=\u0002\u00010", - "chy": "http://stadt-bremerhaven.de/?s=\u0002\u000130", - "etext": "//casetext.com/search?q=\u0002\u00013", - "hoverflow": "http://www.cashoverflow.in/?s=\u0002 \u00010", - "tbox": "//castbox.fm/podcasts/\u0002\u00010" - }, - "t": { - "h": { - "\u0010": "http://www.cathdb.info/search?q=\u0002\u00010", - "olic": { - "\u0010": "http://www.catholic.com/search/content/\u0002\u00010", - "store": "//www.zieglers.com/search.php?search_query=\u0002\u00010" - } - }, - "\u0010": "//dlc.iec.cat/results.asp?txtEntrada=\u0002\u000115", - "alandictionary": "http://www.catalandictionary.org/en/search/?q=\u0002\u00010", - "awikibe": "//www.catawiki.be/search?q=\u0002\u00010" - }, - "bq": "http://www.cabq.gov/searchresults?q=\u0002\u00010", - "ct": { - "\u0010": "http://conjd.cactus2000.de/index.php?q=\u0002\u00010", - "us": { - "\u0010": "//shop.cactusmart.com/search?q=\u0002\u00010", - "mart": "//shop.cactusmart.com/search?q=\u0002\u00010" - } - }, - "fr": "http://www.carrefour.fr/?q=\u0002\u00010", - "ke": { - "2": { - "\u0010": "http://book.cakephp.org/2.0/en/search.html?q=\u0002\u00010", - "book": "http://book.cakephp.org/2.0/en/search.html?q=\u0002 \u00010" - }, - "\u0010": "http://api.cakephp.org/search/\u0002\u00010", - "book": "//book.cakephp.org/3.0/en/search.html?check_keywords=yes&area=default&q=\u0002\u00010" - }, - "lc": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=calculator\u000198", - "ulator": "//duckduckgo.com/?ia=calculator&q=\u0002\u00016" - }, - "ld": "http://dictionary.cambridge.org/search/british/?source=duckduckgo&q=\u0002\u0001395", - "ll": { - "\u0010": "http://qrzcq.com/?q=\u0002&action=search&page=search\u00010", - "ook": "http://callook.info/\u0002\u00013" - }, - "ls": "//www.caloriecount.com/search/foods?searchpro=\u0002\u00010", - "che": { - "d": { - "\u0010": "//webcache.googleusercontent.com/search?q=cache:\u0002\u000151", - "view": "//webcache.googleusercontent.com/search?q=cache:\u0002\u000151" - }, - "\u0010": "//webcache.googleusercontent.com/search?q=cache:\u0002\u000151" - }, - "fepress": "//www.cafepress.com/+\u0002\u00010", - "gematch": "http://www.cagematch.net/?id=666&search=\u0002\u00015", - "irn": "http://www.cairn.info/resultats_recherche.php?searchTerm=\u0002\u00016", - "lendar": "//www.google.com/calendar/b/0/render?q=\u0002\u000163", - "lvinandhobbes": "http://michaelyingling.com/random/calvin_and_hobbes/search.php?phrase=\u0002\u00010" - }, - "b": { - "c": "//www.cbc.ca/search?q=\u0002\u000130", - "\u0010": "//www.crunchbase.com/textsearch?q=\u0002\u000182", - "d": { - "\u0010": "http://www.christianbook.com/Christian/Books/easy_find?Ntt=\u0002&N=0&Ntk=keywords&action=Search&Ne=0\u00014", - "bcz": "//cbdb.cz/hledat?text=\u0002\u00010", - "oil": "//cbd-oil-canada.ca/?s=/\u0002\u00010" - }, - "k": "http://carminbook.com/?s=\u0002\u00010", - "n": "http://www1.cbn.com/cbn-search?search_term=\u0002&site=default_collection\u00010", - "r": "http://comicbookroundup.com/search_results.php?f_search=\u0002\u00013", - "s": { - "\u0010": "//www.cbs.nl/nl-nl/zoeken/?query=\u0002\u00010", - "ervice": "http://www.cbservicedetersivi.it/?s=\u0002\u00010", - "news": "http://search.cbsnews.com/?source=cbs&q=\u0002\u00010", - "sports": "http://www.sportsline.com/info/search?q=\u0002\u00010" - }, - "x": "http://choualbox.com/recherche?q=\u0002\u00014", - "br": "//www.sports-reference.com/cbb/search/search.fcgi?hint=&search=\u0002&pid=&idx=\u00014", - "ase": "http://www.computerbase.de/suche/?q=\u0002\u00010", - "lue": "//www.coolblue.nl/zoeken?query=\u0002\u00010", - "ottle": "//codebottle.io/?q=\u0002\u00010", - "tnuggets": "//www.cbtnuggets.com/search?q=\u0002\u00010", - "wiki": "http://combineoverwiki.net/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010" - }, - "c": { - "b": "//www.climbbybike.com/climbs_selection.asp?Mountainname=\u0002\u00010", - "c": { - "c": { - "a": "//ca.camelcamelcamel.com/search?sq=\u0002\u00013", - "\u0010": "http://ccc.scborromeo.org.master.com/texis/master/search/?sufs=0&q=\u0002\u00010" - }, - "\u0010": "http://camelcamelcamel.com/search?sq=\u0002\u0001455", - "de": "//de.camelcamelcamel.com/search?sq=\u0002\u00010", - "uk": "http://uk.camelcamelcamel.com/search?sq=\u0002\u000155" - }, - "\u0010": "//search.creativecommons.org/search?q=\u0002\u000143", - "d": "http://hamster.foxhollow.ca/ccd/index.php?keywords=\u0002 \u00010", - "k": "http://cinemaclock.com/search?r=bri&m=Vancouver&key=\u0002 \u00010", - "l": { - "\u0010": "http://www.cclonline.com/search/?q=\u0002\u00010", - "y": "//colorcodedlyrics.com/?s=\u0002\u00010" - }, - "m": "//coinmarketcap.com/currencies/search/?q=\u0002\u00010", - "p": { - "\u0010": "http://canadiancouchpotato.com/?s=\u0002&submit=Search\u00010", - "lace": "//www.coworking.coffee/places?q=\u0002\u00010" - }, - "r": "//ccr.chakralinux.org/packages.php?O=0&K=\u0002&do_Search=+Go+\u00010", - "u": "//coincheckup.com/coins/\u0002\u00010", - "ap": "//coinmarketcap.com/currencies/search/?q=\u0002\u00010", - "el": "http://www.ccel.org/search/fulltext/\u0002\u00010", - "nz": "//www.cheapies.nz/search/node/\u0002\u00010", - "st": "http://css-tricks.com/search-results/?q=\u0002\u00010", - "tv": "http://so.cntv.cn/language/english/?qtext=\u0002\u00010", - "grforum": "//www.christcenteredgamer.com/phpBB3/search.php?keywords=\u0002&submit=Search\u00010", - "grreviews": "//www.christcenteredgamer.com/index.php/component/search/?searchword=\u0002&ordering=newest&searchphrase=all&areas[0]=blogs\u00010", - "heck": "//www.codecheck.info/product.search?q=\u0002&OK=Suchen\u00010", - "ode": "http://www.country-codes.org/\u0002\u00010", - "onst": "http://recherche.conseil-constitutionnel.fr/?q=\u0002\u00010", - "ook": "http://www.cybercook.com.br/receitas/\u0002\u00010", - "search": "//ccsearch.creativecommons.org/search?q=\u0002\u000118", - "trl": "//www.class-central.com/search?q=\u0002 \u00010", - "wiki": "http://computercraft.info/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010" - }, - "\u0010": "http://www.cnet.com/1770-5_1-0.html?query=\u0002\u0001234", - "d": { - "a": { - "\u0010": "http://cda.chronomania.net/search.php?search=\u0002\u00010", - "ndlp": "http://www.cdandlp.com/en/search/?q=\u0002\u00010" - }, - "b": "//chess-db.com/public/execute.jsp?name=\u0002\u00010", - "c": "http://www.cdc.gov/search.do?queryText=\u0002\u00010", - "\u0010": "http://www.collinsdictionary.com/dictionary/english/\u0002?showCookiePolicy=true\u0001126", - "d": { - "a": { - "\u0010": "http://cddawiki.chezzo.com/cdda_wiki/index.php?search=\u0002\u000116", - "i": "http://cdda-trunk.chezzo.com/search?q=\u0002\u00010", - "w": "http://cddawiki.chezzo.com/cdda_wiki/index.php?search=\u0002\u000116" - }, - "\u0010": "//cheapdigitaldownload.com/catalog/search-\u0002\u000110" - }, - "e": { - "\u0010": "http://lookup.computerlanguage.com/host_app/search?cid=C999999&term=\u0002&lookup.x=0&lookup.y=0\u00010", - "en": "http://www.collinsdictionary.com/spellcheck/english-german?q=\u0002 \u00010", - "nde": "//dictionary.cambridge.org/dictionary/english-german/\u0002\u00010", - "nes": "//dictionary.cambridge.org/dictionary/english-spanish/\u0002\u000113" - }, - "i": { - "c": { - "\u0010": "//dictionary.cambridge.org/spellcheck/english/?q=\u0002\u000182", - "t": "//cdict.net/?q=\u0002\u00010" - }, - "\u0010": "//www.dictionary.com/browse/\u0002\u00010", - "rect": "//www.comdirect.de/inf/search/general.html?SEARCH_VALUE=\u0002\u00010", - "scount": "http://www.cdiscount.com/search/10/\u0002.html\u00018", - "ver": "//chronodivers.com/?s=\u0002\u00010" - }, - "j": "http://www.cdjapan.co.jp/products?q=\u0002\u00010", - "l": "http://www.collinsdictionary.com/dictionary/english-cobuild-learners/\u0002\u00010", - "m": "http://www.cdm.me/pretraga/\u0002\u00010", - "n": { - "\u0010": "http://www.cdnjs.com/#/search/\u0002 \u00014", - "js": "//cdnjs.com/#q=\u0002\u00014", - "finder": "http://www.cdnplanet.com/tools/cdnfinder/#host:\u0002 \u00010" - }, - "p": "//www.cdp.net/en/responses?utf8=✓&queries[name]=\u0002\u00010", - "s": "http://cdsportal.u-strasbg.fr/#\u0002\u00010", - "t": "//www.collinsdictionary.com/dictionary/english-thesaurus/\u0002\u00010", - "u": "http://www.cduniverse.com/sresult.asp?HT_Search_Info=\u0002\u00010", - "w": { - "\u0010": "http://www.cdw.com/shop/search/result.aspx?key=\u0002\u000114", - "ca": "//www.cdw.ca/shop/search/result.aspx?key=\u0002}&wclsscat=&b=&p=&ctlgfilter=&searchscope=all&sr=1\u00010" - }, - "on": { - "\u0010": "http://cdon.se/search?q=\u0002\u00010", - "dk": "http://cdon.dk/search?q=\u0002\u00010", - "eu": "http://cdon.eu/search?q=\u0002\u00010", - "fi": "http://cdon.fi/search?q=\u0002\u00010", - "no": "http://cdon.no/search?q=\u0002\u00010", - "se": "http://cdon.se/search?q=\u0002\u00010" - }, - "gdic": "http://dictionary.cambridge.org/dictionary/learner-english/\u0002_1?q=\u0002\u00010", - "keys": "//www.cdkeys.com/catalogsearch/result/?q=\u0002\u000117", - "own": "http://currentlydown.com/\u0002\u00010" - }, - "e": { - "b": "//www.ebay.com/csc/items/?_nkw=\u0002+&LH_Complete=1\u00010", - "\u0010": "http://forum.cheatengine.org/search.php?q=\u0002\u00013", - "p": "http://www.consultarcep.com.br/resultados.html?cx=partner-pub-6657933402951336%3A8478085485&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=%C2%A0\u00010", - "v": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=CEV\u00013", - "x": "//uk.webuy.com/search/index.php?stext=\u0002\u0001100", - "rb": "//www.cerberusbyte.com/?s=\u0002\u00010", - "rl": "http://thesaurus.cerl.org/cgi-bin/search.pl?type=l&type=i&type=p&type=c&query=\u0002\u00010", - "rn": { - "\u0010": "//phonebook.cern.ch/phonebook/#search/?query=\u0002\u00010", - "map": "//maps.cern.ch/mapsearch/mapsearch.htm?n=[%27\u0002%27]\u00010" - }, - "cmed": "//www.cecmed.cu/search/node?keys=\u0002\u00010", - "ekjp": "http://www.ceek.jp/search.cgi?q=\u0002\u00010", - "leb": { - "\u0010": "//wikisceleb.com/?s=\u0002\u00010", - "rity": "//celebrity.tn/?s=\u0002\u00010" - }, - "llartracker": "http://www.cellartracker.com/list.asp?fInStock=0&Table=List&iUserOverride=0&szSearch=\u0002\u00010", - "lticpodcast": "http://celticmusicpodcast.com/?s=\u0002\u00010", - "neo": "http://www.ceneo.pl/;szukaj-\u0002\u0001270", - "nes": "//www.collinsdictionary.com/dictionary/english-spanish/\u0002\u00010", - "neje": "//www.ceneje.si/Iskanje/Izdelki?q=\u0002\u00010", - "nfr": "http://www.collinsdictionary.com/dictionary/english-french/\u0002\u000119", - "nsys": "//www.censys.io/ipv4?q=\u0002\u00010", - "ntredailytimes": "http://www.centredaily.com/search/?q=\u0002\u00010", - "rcavino": "http://cercavino.com/cerca?vino=\u0002\u00010" - }, - "g": { - "\u0010": "http://hub.culturegraph.org/search?query=\u0002\u00017", - "g": "http://champion.gg/champion/\u0002\u00010", - "l": "//pittsburgh.craigslist.org/search/sss?query=\u0002\u00014", - "p": "http://catalog.gpo.gov/F?func=find-b&find_code=WRD&request=\u0002\u00010", - "t": "//www.cgtrader.com/3d-models?keywords=\u0002\u00010", - "w": "//resources.allsetlearning.com/gramwiki/?search=\u0002\u00010" - }, - "h": { - "\u0010": "http://chequeado.com/?s=\u0002\u00010", - "d": "http://camphikedrive.blogspot.com.au/search?q=\u0002&m=1\u00010", - "e": { - "\u0010": "//chrome.google.com/webstore/search/\u0002?_category=extensions\u000115", - "f": { - "\u0010": "http://www.chefkoch.de/rs/s0/\u0002/Rezepte.html\u00019", - "io": "//docs.chef.io/search.html#stq=\u0002&stp=1\u00010", - "doc": "//docs.chef.io/search.html#stq=\u0002&stp=1\u00010", - "koch": { - "\u0010": "//www.chefkoch.de/suche.php?wo=2&suche=\u0002\u000156", - "vegan": "http://www.chefkoch.de/rs/s0t57/\u0002/Vegan-Rezepte.html\u00010" - } - }, - "at": { - "\u0010": "//devhints.io/\u0002\u00017", - "cc": "http://www.cheatcc.com/search_results.html?sitesearch=CheatCC.com&domains=CheatCC.com&q=\u0002&sa=Google+Search&client=pub-7081624040320322&forid=1&ie=UTF8&oe=UTF8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%230000FF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A0%3BLW%3A0%3BL%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Fccclink.gif%3BS%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Findex2.html%3BFORID%3A11\u00010", - "codes": "http://www.cheatcc.com/search_results.html?sitesearch=CheatCC.com&domains=CheatCC.com&q=\u0002&sa=Google+Search&client=pub-7081624040320322&forid=1&ie=UTF8&oe=UTF8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%230000FF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A0%3BLW%3A0%3BL%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Fccclink.gif%3BS%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Findex2.html%3BFORID%3A11\u00010", - "ography": "http://www.cheatography.com/explore/search/?q=\u0002\u00010" - }, - "gg": "http://www.chegg.com/search/\u0002\u000132", - "ss": { - "\u0010": "//www.chess.com/topic/\u0002\u000136", - "games": "http://www.chessgames.com/perl/ezsearch.pl?search=\u0002\u00010" - }, - "wy": "http://www.chewy.com/s?dept=all&query=\u0002\u00018", - "apassgamer": "http://www.cheapassgamer.com/query.php?keywords=\u0002\u00010", - "ck24": "//preisvergleich.check24.de/suche.html?query=\u0002\u00010", - "ckhost": "//check-host.net/ip-info?host=\u0002\u00010", - "ddar": "//cheddar.com/search?q=\u0002\u00010", - "ese": "http://www.cheese.com/?q=\u0002\u00010", - "ezburger": "http://search.cheezburger.com/?q=\u0002\u00010", - "micalize": "http://www.chemicalize.org/structure/#!mol=\u0002&source=fp\u00010", - "mie.de": "http://www.chemie.de/search/?q=\u0002\u00010", - "mse": "http://chemistry.stackexchange.com/search?q=\u0002\u00010", - "mspider": "http://www.chemspider.com/Search.aspx?q=\u0002\u00010", - "mwiki": "http://chemwiki.ucdavis.edu/Special:Search?search=\u0002&qid=&fpid=1285&fpth=\u00010" - }, - "l": { - "\u0010": "http://churchhistorycatalog.lds.org/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=chl&indx=1&dum=true&srt=rank&vid=CHL_PUBLIC&frbg=&tb=t&vl%28freeText0%29=\u0002&scp.scps=scope%3A%28PEAD%29%2Cscope%3A%28PARCHIVES%29%2Cscope%3A%28PLIBRARY%29%2Cscope%3A%28ALEPH-PCPX%29%2Cscope%3A%28ALEPH-JHX%29%2Cscope%3A%28ALEPH-CAX%29&vl%2830857204UI1%29=all_items&vl%281UIStartWith0%29=contains&vl%2830857210UI0%29=any&vl%2830857210UI0%29=title&vl%2830857210UI0%29=any\u00010", - "ib": "http://chalmers.summon.serialssolutions.com/en/search?ho=t&q=\u0002\u00010" - }, - "m": { - "\u0010": "//www.lachainemeteo.com/synthese-previsions-meteo-\u0002\u00010", - "od": "//chmodcommand.com/chmod-\u0002/\u00010" - }, - "p": "//www.computerhope.com/search2.htm?q=\u0002\u00010", - "s": "//chain.so/address/\u0002\u00010", - "ar": { - "\u0010": "http://charcod.es/#\u0002\u00013", - "t": "//hub.helm.sh/charts?q=\u0002\u000119", - "ge": "http://initialcharge.net/?s=\u0002 \u00010", - "bara": "http://postavy.akihabara.cz/vyhledavani/\u0002\u00010", - "ity": { - "\u0010": "http://www.charitynavigator.org/index.cfm?bay=search.results&keyword_list=\u0002\u00010", - "navigator": "http://www.charitynavigator.org/index.cfm?bay=search.results&keyword_list=\u0002\u00010" - }, - "lotteslaw": "//www.charlotteslaw.nl/?s=\u0002\u00010", - "med": "http://charmed.wikia.com/wiki/Special:Search?search=\u0002 \u00010" - }, - "gg": "http://champion.gg/champion/\u0002\u00010", - "ip": { - "\u0010": "http://suche.chip.de/?q=\u0002&it=1&submit.x=0&submit.y=0\u00010", - "db": "http://www.msarnoff.org/chipdb/\u0002\u00010", - "oteka": "//www.chipoteka.hr/search?q=\u0002\u00010" - }, - "oc": { - "\u0010": "//chocolatecoveredkatie.com/?s=\u0002\u00010", - "o": { - "\u0010": "//chocolatey.org/packages?q=\u0002\u0001334", - "latey": "//chocolatey.org/packages?q=\u0002\u0001334" - } - }, - "ow": "http://www.chow.com/search?type=Topic&from_date=1+year+ago&query=\u0002\u00010", - "uk": "//beta.companieshouse.gov.uk/search?q=\u0002\u000111", - "abad": "http://www.chabad.org/search/results.asp?searchWord=\u0002\u00010", - "airish": "//www.chairish.com/search?q=\u0002 \u00010", - "akraforum": "http://chakraos.org/forum/search.php?action=search&keywords=\u0002&author=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics&search=Submit\u00017", - "akrapkg": "http://www.chakraos.org/packages/index.php?act=search&subdir=&sortby=date&order=descending&searchpattern=\u0002\u00010", - "akrawiki": "http://chakraos.org/wiki/index.php?search=\u0002&go=Go\u00014", - "ambers": "http://chambers.co.uk/search.php?query=\u0002&title=21st\u00010", - "ampion": { - "\u0010": "//championrunner.com/?s=\u0002\u00010", - "gg": "http://champion.gg/champion/\u0002\u00010" - }, - "ampssports": "http://www.champssports.com/_-_/keyword-\u0002\u00010", - "ange": "//www.change.org/search?q=\u0002\u00013", - "annel4": "http://www.channel4.com/search/?q=\u0002\u00016", - "annel5": "http://www.channel5.com/search?q=\u0002\u00010", - "apo": "//www.reddit.com/r/ChapoTrapHouse/search?q=\u0002&restrict_sr=1\u00010", - "atters": "//chatters.ca/catalogsearch/result/?q=\u0002\u00010", - "icagotribune": "http://www.chicagotribune.com/search/dispatcher.front?Query=\u0002&sortby=display_time+descending&subheader-search-button=Go&target=article\u00010", - "ichester": "http://www.chichester.gov.uk/article/23353/Search?q=\u0002\u00010", - "icken": "//wiki.call-cc.org/search?text=\u0002\u00010", - "ief": "//www.chiefdelphi.com/search?expanded=true&q=\u0002\u0001132", - "ilango": "//www.chilango.com/?s=\u0002\u00010", - "illingeffects": "//www.chillingeffects.org/notices/search?&term=\u0002\u00010", - "imerarevo": "http://www.chimerarevo.com/search/\u0002\u00010", - "inook": "http://ucblibraries.summon.serialssolutions.com/search?q=\u0002\u00010", - "oice": "//www.choice.com.au/search?q=\u0002\u00010", - "ollo": "//www.chollometro.com/search?q=\u0002\u00010", - "ords": "http://www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u000132", - "ordie": "http://www.chordie.com/?q=\u0002\u00010", - "ordify": "//chordify.net/?search=\u0002\u00014", - "ordwiki": "//ja.chordwiki.org/search.html?q=\u0002\u00010", - "osun": "http://nsearch.chosun.com/search/total.search?query=\u0002\u00010", - "oual": { - "\u0010": "//choualbox.com/recherche?q=\u0002\u00010", - "box": "//choualbox.com/recherche?q=\u0002\u00010" - }, - "rome": { - "\u0010": "//chrome.google.com/webstore/search/\u0002\u000194", - "store": "//chrome.google.com/webstore/search/\u0002\u000194", - "webstore": "//chrome.google.com/webstore/search/\u0002\u000194" - }, - "ronopost": "http://www.chronopost.fr/fr/chrono_suivi_search?lang=fr&listeNumerosLT=\u0002\u00013", - "tsh": "//cheat.sh/\u0002\u00010", - "uck": "http://chuck-nbc.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "urchclarity": "//www.churchclarity.org/search?query=\u0002\u00010", - "urchofsatan": "http://www.churchofsatan.com/search-results.php?q=\u0002\u00010" - }, - "i": { - "a": { - "\u0010": "//www.cia.gov/search?q=\u0002&site=WORLD_FACTBOOK&btnG=Search&x=0&y=0&output=xml_no_dtd&client=CIA&myAction=%2Fsearch&proxystylesheet=CIA&submitMethod=get&sort=date%3AD%3AL%3Ad1&oe=UTF-8&ie=UTF-8&ud=1&exclude_apps=1\u00014", - "o": "http://www.ciao.de/sr/q-\u0002\u00010" - }, - "b": { - "\u0010": "http://web2.wipo.int/classifications/ipc/ipcpub/#lang=fr&menulang=FR&refresh=page&fipcpc=yes&indexes=yes¬ion=scheme&version=20160101&symbol=\u0002\u00010", - "erduvidas": "//ciberduvidas.iscte-iul.pt/pesquisa?termo=\u0002\u00010" - }, - "\u0010": "//www.codeigniter.com/user_guide/search.html?q=\u0002\u00016", - "e": "//paper.sc/search/?as=page&query=\u0002\u00010", - "f": { - "\u0010": "http://www.cinemainfocus.com/search?q=\u0002\u00010", - "raclub": "http://www.cifraclub.com.br/?q=\u0002\u000111" - }, - "o": "//company.info/organisations/search?q=\u0002\u00010", - "u": { - "\u0010": "http://caniuse.com/#search=\u0002\u0001323", - "s": "//caniuse.com/#search=\u0002\u00010", - "py3": "//caniusepython3.com/project/\u0002\u00010" - }, - "v": { - "\u0010": "http://civilization.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000111", - "ilization": "http://civilization.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000111" - }, - "ne": { - "\u0010": "http://cinemassacre.com/?s=\u0002&search.x=0&search.y=0\u00010", - "magay": "http://www.cinemagay.it/ricerca.asp?tipo=0&campo=\u0002&Submit=Cerca\u00010", - "ycortosgay": "http://www.cineycortosgay.com/search?q=\u0002\u00013" - }, - "ti": { - "\u0010": "http://citizendium.org/wiki?search=\u0002&title=Special%3ASearch&go=Go+To+Page\u00010", - "zenes": "http://www.citizen.es/search?s=\u0002\u00010" - }, - "ied": "http://ciied.xyz/?s=\u0002\u00010", - "nst": "//chocolatey.org/packages?q=\u0002\u0001334", - "nta": "//www.lirikcinta.com/result/?q=\u0002\u00010", - "rcuit": { - "\u0010": "http://racingcircuits.info/misc/search-results.html?search=\u0002\u00010", - "-help-ph": "//www.circuit-help.com.ph/?s=\u0002\u00010" - }, - "sco": "//search.cisco.com/search?query=\u0002\u00015", - "sne": "http://cisne.sim.ucm.es/search*spi~S/X?SEARCH=\u0002\u00010", - "tatum": "//www.citatum.hu/kereso.php?kereses=\u0002\u00010", - "teul": "http://www.citeulike.org/search/all?q=\u0002\u00010", - "teseer": "http://citeseer.ist.psu.edu/search?q=\u0002&submit=Search&sort=rlv&t=doc\u00010", - "troenc3owners": "http://citroenc3owners.com/search.php?keywords=\u0002&terms=all&author=&fid[]=5&sc=1&sf=all&sk=t&sd=d&sr=posts&st=0&ch=300&t=0&submit=Search\u00010" - }, - "j": { - "\u0010": "//conjour.world/?s=\u0002\u00010", - "eu": "http://curia.europa.eu/juris/liste.jsf?language=en&num=\u0002\u00010" - }, - "k": { - "2": "//ck2.paradoxwikis.com/index.php?search=\u0002\u00013", - "\u0010": "http://www.chefkoch.de/rs/s0/\u0002/Rezepte.html\u00019", - "t": { - "\u0010": "http://www.creationkit.com/index.php?search=\u0002\u00018", - "l": "http://www.1001cocktails.com/cocktails/rechercheCocktailsNom.php?mot=\u0002\u00010" - }, - "12": "//www.ck12.org/search/?q=\u0002&referrer=top_nav&autoComplete=false\u00010", - "lt": "http://www.cookinglight.com/search?q=\u0002\u00010", - "eys": "http://craftkeys.com/site-info/\u0002\u00010", - "iiwiki": "//ck2.paradoxwikis.com/index.php?search=\u0002\u00013" - }, - "l": { - "c": "//clcnederland.com/producten/zoeken?sq=\u0002\u00010", - "\u0010": "//www.craigslist.org/search/sss?query=\u0002\u0001230", - "d": "//support.cloudinary.com/hc/en-us/search?utf8=%E2%9C%93&query=\u0002\u00010", - "f": { - "\u0010": "http://www.commandlinefu.com/commands/matching/\u0002/bys=/sort-by-votes\u00010", - "p": "//www.charlotteslaw.nl/?s=\u0002\u00010" - }, - "j": { - "\u0010": "//clojuredocs.org/search?q=\u0002\u0001143", - "doc": "//cljdoc.org/search?q=\u0002\u00016" - }, - "r": "//clearlinux.org/search?search=\u0002\u00010", - "t": "//calil.jp/local/search?csid=tokyo&q=\u0002\u00010", - "u": { - "\u0010": "//catalogue.leidenuniv.nl/primo-explore/search?query=any,contains,\u0002&tab=all_content&search_scope=All_Content&vid=UBL_V1&lang=en_US&offset=0\u00010", - "bic": "http://www.clubic.com/r/\u0002\u00010" - }, - "as": { - "\u0010": "//www.clasohlson.com/se/view/content/search?searchKey=All&search_prefix=\u0002\u00010", - "fi": "//www.clasohlson.com/fi/view/content/search?N=0&Ntk=All&Ntt=\u0002&Nty=1&D=\u0002&Ntx=mode+matchpartial&Dx=mode+matchpartial&showTabs=true\u00010", - "no": "//www.clasohlson.com/no/view/content/search?searchKey=All&search_prefix=\u0002\u00010", - "hofclans": "http://clashofclans.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00014", - "sicdb": "http://classicdb.ch/?search=\u0002\u00010", - "srr": "//www.classrr.com/classroom/list?q=\u0002\u00013" - }, - "hs": "http://www.lispworks.com/cgi-bin/search.cgi?q=\u0002&cmd=Search%21&t=-D--HB-\u0001154", - "io": "//clio.columbia.edu/catalog?q=\u0002\u00015", - "wb": "//clwb.net/?post_type=event&s=\u0002\u00010", - "amps": "//www.encole.com/search/\u0002\u00010", - "anky": "//clanky.seznam.cz/?q=\u0002\u00010", - "ark": { - "\u0010": "//clark.com/search/?q=\u0002\u00010", - "s": "//www.clarks.co.uk/search/?text=\u0002\u00013" - }, - "arin": "//www.clarin.com/buscador/?q=\u0002\u00010", - "eanfreak": "//www.cleanfreak.com/catalogsearch/result/?q=\u0002\u00010", - "eanuptheworld": "http://www.cleanuptheworld.org/en/search.html?kw=\u0002\u00010", - "early": "//www.clearly.ca/eyewear/search?query=\u0002\u00010", - "earweb": "http://www.clearwebstats.com/process.php?q=\u0002\u00013", - "ickforce": "//clickforce.com.au/?s=\u0002\u00010", - "icrbs": "http://www.clicrbs.com.br/busca/rs/?q=\u0002 \u00010", - "ien": "//www.clien.net/service/search?q=\u0002\u0001157", - "iggo": "//www.music.cliggo.com/search/\u0002\u00010", - "iki": "http://cliki.net/site/search?query=\u0002\u00010", - "imatecounts": "http://climatecounts.org/searchresults.php?p=term&term=\u0002\u00010", - "imatempo": "http://www.climatempo.com.br/?q=\u0002\u00014", - "inical": "//jobs.advancedclinical.com/search-results?keywords=\u0002\u00010", - "inicas": "//clinicasyhospitales.com.co/buscar?q=\u0002\u00010", - "ipart": "http://office.microsoft.com/en-us/clipart/results.aspx?qu=\u0002&sc=20\u00010", - "ipstijl": "http://www.clipstijl.nl/zoeken.php?zoek=\u0002 \u00010", - "iqz": "//beta.cliqz.com/search?q=\u0002&lang=en\u00010", - "iqist": "http://cliqist.com/?s=\u0002\u00010", - "ker": "http://www.clker.com/search/\u0002\u00010", - "ockworksynergy": "http://www.clockworksynergy.com/?s=\u0002 &post_type=product\u00010", - "ojars": "//clojars.org/search?q=\u0002\u0001300", - "ojure": { - "\u0010": "http://clojuredocs.org/search?x=0&y=0&q=\u0002\u0001307", - "docs": "http://clojuredocs.org/search?x=0&y=0&q=\u0002\u0001307" - }, - "oogle": "http://cloogle.org/#\u0002\u00015", - "osebook": "//www.worldcat.org/search?qt=worldcat_org_bks&q=\u0002&fq=dt%3Abks\u00010", - "oudformation": "//docs.aws.amazon.com/search/doc-search.html?searchPath=documentation-guide&searchQuery=\u0002&this_doc_product=AWS+CloudFormation&this_doc_guide=User+Guide&doc_locale=en_us#facet_doc_product=AWS CloudFormation&facet_doc_guide=User Guide\u00010", - "oudron": "//cloudron.io/appstore.html?search=\u0002\u00010", - "oudsdale": "//www.cloudsdale.org/explore/clouds/search?q=\u0002\u00010", - "ovia.app": "//nightwear.clovia.com/search/?q=\u0002\u00010" - }, - "m": { - "c": { - "\u0010": "//coinmarketcap.com/currencies/\u0002\u00016", - "ap": "//coinmarketcap.com/currencies/\u0002\u00016" - }, - "\u0010": "//cm.center/catalog/?q=\u0002\u00013", - "e": "//www.chicagomusicexchange.com/search?query=\u0002\u00010", - "i": "http://library.cmi.ac.in/cgi-bin/koha/opac-search.pl?q=\u0002\u00019", - "l": "http://catalog.clcohio.org/polaris/search/searchresults.aspx?term=\u0002\u00010", - "s": { - "\u0010": "http://www.chicagomanualofstyle.org/search.epl?q=\u0002\u00010", - "sw": "http://cmslxr.fnal.gov/search?_filestring=&_string=\u0002\u00010" - }, - "mm": { - "\u0010": "//www.cmmmanager.com/forum/search.php?keywords=\u0002\u00010", - "gr": "//www.cmmmanager.com/forum/search.php?keywords=\u0002\u00010" - }, - "ake": { - "\u0010": "//cmake.org/cmake/help/latest/search.html?q=\u0002&check_keywords=yes&area=default\u0001182", - "30": "http://www.cmake.org/cmake/help/v3.0/search.html?q=\u0002\u00010" - }, - "peu": "http://compare.eu/?fs=\u0002\u00010" - }, - "n": { - "\u0010": "http://www.charitynavigator.org/index.cfm?bay=search.results&keyword_list=\u0002\u00010", - "h": "//www.conservativehome.com/?s=\u0002\u00010", - "m": "//www.cnm.edu/@@gcse-searchresults?q=\u0002\u00010", - "n": { - "\u0010": "http://www.cnn.com/search/?q=\u0002\u0001234", - "e": "http://cnnespanol.cnn.com/?s=\u0002\u00010" - }, - "t": { - "\u0010": "http://casinonews.today/?s=\u0002 \u00010", - "rl": "http://www.cnrtl.fr/definition/\u0002\u0001284", - "rp": "//www.counterpunch.org/search-results/?q=\u0002\u00010" - }, - "w": "//cannanewswire.co/?s=\u0002\u00010", - "z": "//www.cheapies.nz/search/node/\u0002\u00010", - "ba": "http://cnba.uba.ar/search/node/\u0002\u00010", - "bc": "http://search.cnbc.com/main.do?target=all&keywords=\u0002\u00015", - "et": { - "\u0010": "http://www.cnet.com/1770-5_1-0.html?query=\u0002&tag=srch&target=nw\u000110", - "e": "http://www.cnet.com/es/busqueda/?query=\u0002\u00010", - "uk": "http://www.cnet.com/search/?query=\u0002\u00010" - }, - "dic": "http://cndic.naver.com/search/all?q=\u0002\u00016", - "plx": "http://www.cineplex.com/search-2015?search-query=\u0002\u00010", - "rtl": { - "a": "http://www.cnrtl.fr/antonymie/\u0002\u00010", - "c": "http://www.cnrtl.fr/concordance/\u0002\u00010", - "\u0010": "http://www.cnrtl.fr/definition/\u0002\u0001284", - "d": "http://www.cnrtl.fr/definition/\u0002\u0001284", - "e": "http://www.cnrtl.fr/etymologie/\u0002\u00010", - "m": "http://www.cnrtl.fr/morphologie/\u0002\u00010", - "p": "http://www.cnrtl.fr/proxemie/\u0002\u00010", - "s": "http://www.cnrtl.fr/synonymie/\u0002\u00015" - }, - "y2eur": "//www.xe.com/currencyconverter/convert/?From=CNY&To=EUR&Amount=\u0002\u00010" - }, - "p": { - "b": "//www.passmark.com/search/zoomsearch.php?zoom_query=\u0002\u00016", - "c": "http://cpc.farnell.com/search?st=\u0002\u00010", - "g": "//cygwin.com/cgi-bin2/package-grep.cgi?grep=\u0002\u00010", - "\u0010": "//coinpaprika.com/?sort=\u0002\u000135", - "l": { - "\u0010": "//chipublib.bibliocommons.com/search?&t=title&search_category=title&q=\u0002\u00016", - "usplus": "http://www.cplusplus.com/query/search.cgi?q=\u0002\u00013" - }, - "p": { - "\u0010": "http://en.cppreference.com/mwiki/index.php?search=\u0002\u00013665", - "r": { - "\u0010": "http://en.cppreference.com/mwiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001289", - "ef": { - "\u0010": "http://en.cppreference.com/mwiki/index.php?title=Special:Search&search=\u0002\u0001162", - "erence": "http://cppreference.com/w/?search=\u0002\u0001134" - } - }, - "de": "http://de.cppreference.com/mwiki/index.php?title=Spezial%3ASuche&search=\u0002\u00010", - "samples": "http://www.cppsamples.com/#/search/\u0002\u00010" - }, - "t": { - "\u0010": "//coder.aapc.com/cpt-codes/\u0002\u00010", - "en": "//www.collinsdictionary.com/dictionary/portuguese-english/\u0002\u00010" - }, - "u": { - "\u0010": "//www.cpugeek.co.uk/search?q=\u0002\u00010", - "world": "http://www.cpu-world.com/cgi-bin/SearchSite.pl?SEARCH=\u0002&PROCESS=Search\u00014" - }, - "an": { - "1": "//metacpan.org/search?q=\u0002&lucky=1\u00010", - "\u0010": "http://metacpan.org/search?q=\u0002\u0001225", - "m": "http://metacpan.org/search?q=\u0002\u0001225", - "deps": "http://deps.cpantesters.org/?module=\u0002&perl=any+version&os=any+OS\u00010" - }, - "ap": "http://www.cpap.com/productSearch.php?q=1&query=\u0002\u00010", - "dl": "http://www1.cpdl.org/wiki/index.php/Special:Search?search=\u0002&fulltext=Keyword+search\u00010", - "en": "http://codepen.io/search?q=\u0002&limit=all&depth=everything&show_forks=false\u00010", - "ost": "//www.postaonline.cz/trackandtrace/-/zasilka/cislo?parcelNumbers=\u0002\u00010", - "roj": "http://www.codeproject.com/search.aspx?q=\u0002\u00010" - }, - "q": { - "\u0010": "http://qrzcq.com/call/\u0002\u00010", - "rq": "//www.rollcall.com/page/search?keyword=\u0002&advanced=false&sort=relevance\u00010" - }, - "r": { - "c": { - "\u0010": "http://www.chainreactioncycles.com/s?q=\u0002&sort=pricelow\u00013", - "om": "//www.cloudretails.com/search?q=\u0002\u00010" - }, - "\u0010": "http://codereview.stackexchange.com/search?q=\u0002\u000112", - "i": { - "c": { - "\u0010": "//www.criterionchannel.com/search?q=\u0002\u00010", - "buzz": "//www.cricbuzz.com/search?q=\u0002\u0001169", - "info": "http://search.espncricinfo.com/ci/content/site/search.html?search=\u0002&gblsearch=\u000153", - "khero": "//crickhero.blogspot.com/search/?q=\u0002\u00010" - }, - "\u0010": "//www.criterion.com/search#stq=\u0002\u00010", - "sco": "http://www.crisco.unicaen.fr/des/synonymes/\u0002\u000129", - "tiki": "//critiki.com/search/?t=\u0002\u00010", - "ticker": "//www.criticker.com/?search=\u0002&type=films\u000119", - "tique": "//critiquebrainz.org/search/?query=\u0002&type=artist\u00010", - "trole": "http://criticalrole.wikia.com/wiki/Special:Search?query=\u0002\u00014" - }, - "r": "http://chemsearch.kovsky.net/index.php?q=\u0002\u00010", - "s": { - "\u0010": "http://www.crunchyroll.com/search?from=&q=\u0002\u000173", - "h": "//crystalshards.xyz/?filter=\u0002\u00010" - }, - "t": "//crt.sh/?q=\u0002\u000110", - "w": "//clashroyale.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "x": { - "\u0010": "//chrome.google.com/webstore/search?q=\u0002\u000127", - "viewer": "//robwu.nl/crxviewer/?crx=\u0002\u00010" - }, - "am": "http://www.cram.com/search?query=\u0002&submit=Search\u00010", - "an": { - "\u0010": "http://finzi.psych.upenn.edu/cgi-bin/namazu.cgi?query=\u0002&max=100&result=normal&sort=score&idxname=functions&idxname=vignettes&idxname=views\u000112", - "n": "//crystal-ann.com/?query=\u0002\u00010" - }, - "db": "//www.cockroachlabs.com/docs/search.html?q=\u0002\u00010", - "ep": { - "\u0010": "//www.consumerreports.org/search/?query=\u0002\u00010", - "s": "//www.consumerreports.org/search/?query=\u0002\u00010" - }, - "ol": "//www.crol.hr/index.php/search?searchword=\u0002&searchphrase=all\u00010", - "on": { - "\u0010": "//crontab.guru/#\u0002\u00014", - "ista": "//www.cronista.com/buscar/\u0002\u00010" - }, - "ux": "http://crux.nu/portdb/?a=search&q=\u0002\u000129", - "ackberry": "http://crackberry.com/search/google/\u0002?query=\u0002\u00010", - "acked": "http://www.cracked.com/search/search.php?sa=search&q=\u0002\u000114", - "afts": { - "\u0010": "//wikidiy.org/?s=\u0002\u00010", - "y": "//www.craftsy.com/search?query=\u0002\u00010" - }, - "aigslist": "http://craigslist.org/search/sss?query=\u0002\u000130", - "ate": { - "\u0010": "//crate.io/docs/stable/search.html?check_keywords=yes&area=default&q=\u0002\u000186", - "s": "//crates.io/search?q=\u0002\u00011162" - }, - "awl": { - "\u0010": "http://crawl.chaosforge.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000133", - "db": "//loom.shalott.org/learndb.html#\u0002\u00010" - }, - "bug": "//bugs.chromium.org/p/chromium/issues/list?q=\u0002\u00010", - "doc": "//crystal-lang.org/docs/?q=\u0002\u00010", - "eacables": "//www.creative-cables.nl/zoeken?controller=search&orderby=position&orderway=desc&search_query=\u0002\u00010", - "eation": "//creation.com/search?q=\u0002\u00010", - "eativecow": { - "\u0010": "http://forums.creativecow.net/search.php?content=F&q=\u0002\u00010", - "lib": "http://library.creativecow.net/search.php?q=\u0002\u00010" - }, - "ocker": "//www.bettycrocker.com/search?term=\u0002 \u00010", - "ossclj": "http://crossclj.info/search?q=\u0002\u00010", - "ossover": "http://www.codeweavers.com/compatibility/search/?name=\u0002&search=app\u00010", - "ossref": "http://search.crossref.org/?q=\u0002\u00010", - "ossvalidated": "http://stats.stackexchange.com/search?q=\u0002\u00010", - "ossword": "http://www.wordfun.ca/words/fw?q=\u0002\u00010", - "owdin": "//crowdin.com/projects?q=\u0002#advanced-search\u00010", - "owdsupply": "//www.crowdsupply.com/search?q=\u0002\u00010", - "unch": { - "\u0010": "//www.crunchbase.com/textsearch/?q=\u0002\u00016", - "base": "//www.crunchbase.com/textsearch?q=\u0002\u000182", - "yroll": "http://www.crunchyroll.com/search?q=\u0002\u000165" - }, - "ush": "//www.crushwineco.com/catalogsearch/result/?q=\u0002\u00010", - "ypto": { - "\u0010": "http://crypto.stackexchange.com/search?q=\u0002\u00010", - "analyst": "//www.cryptoanalyst.co/?s=\u0002\u00010", - "coinspy": "//cryptocoinspy.com/?s=\u0002\u00010" - } - }, - "s": { - "c": "http://api.call-cc.org/cdoc?q=\u0002&query-regex=Regexp\u00017", - "\u0010": "http://www.cheapshark.com/search?q=\u0002\u000121", - "i": { - "\u0010": "http://www.coolstuffinc.com/main_search.php?pa=searchOnName&page=1&resultsPerPage=25&q=\u0002\u00010", - "nfo": "//ciphersuite.info/search/?q=\u0002 \u00010" - }, - "m": { - "\u0010": "//www.commonsensemedia.org/search/\u0002\u000174", - "onitor": "http://www.csmonitor.com/content/search?SearchText=\u0002&SearchButton=Search\u00010" - }, - "n": "http://cisne.sim.ucm.es/search*spi~S/X?SEARCH=\u0002&sort=D\u00010", - "s": { - "\u0010": "//developer.mozilla.org/en-US/search?q=\u0002&topic=css\u000174", - "e": "http://cs.stackexchange.com/search?q=\u0002\u00010", - "t": { - "\u0010": "//css-tricks.com/?s=\u0002\u00013", - "ricks": "//css-tricks.com/search-results/?q=\u0002\u00013" - } - }, - "u": { - "\u0010": "http://checkshorturl.com/expand.php?u=\u0002\u00013", - "rf": "//www.couchsurfing.com/?q=\u0002\u00010" - }, - "v": "//www.csv.de/artsearchresult.php?STICHWORT=\u0002\u00014", - "w": { - "\u0010": "http://wiki.call-cc.org/search?text=\u0002&ident=\u00010", - "iki": "http://cs.wikipedia.org/wiki/\u0002\u00017" - }, - "db": "http://noname.c64.org/csdb/search/?seinsel=all&search=\u0002\u00013", - "fd": "//www.csfd.cz/hledat/?q=\u0002\u0001199", - "go": { - "\u0010": "//www.reddit.com/r/GlobalOffensive/search/?q=\u0002&restrict_sr=1\u00010", - "stats": "//csgo-stats.net/search?q=\u0002\u00010" - }, - "lq": "http://wiki.teamliquid.net/counterstrike/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00015", - "bno": "http://webopac.csbno.net/opac/search/lst?q=\u0002\u00017", - "harp": "http://social.msdn.microsoft.com/Search/en-US?query=\u0002&Refinement=126&ac=8\u00014", - "ound": "http://www.csounds.com/manual/html/\u0002.html\u00010", - "pan": "http://www.c-span.org/search.aspx?For=\u0002\u00010", - "pen": "//www.collinsdictionary.com/dictionary/spanish-english/\u0002\u00010", - "theory": "http://cstheory.stackexchange.com/search?q=\u0002\u00010", - "tore": "//chrome.google.com/webstore/search/\u0002\u000194", - "trade": "//www.reddit.com/r/GlobalOffensiveTrade/search?q=\u0002&restrict_sr=on&sort=new&t=all\u00010" - }, - "t": { - "\u0010": "http://www.canadiantire.ca/en/search-results.html?q=\u0002\u00018", - "d": "http://www.cheaperthandirt.com/SolrSearchResults.aspx?site=All+Products&num=15&q=\u0002\u00010", - "h": "//www.collinsdictionary.com/dictionary/english-thesaurus/\u0002\u00010", - "t": "//www.ctt.pt/feapl_2/app/open/objectSearch/objectSearch.jspx?objects=\u0002\u00010", - "v": { - "\u0010": "http://www.ctv.ca/searchResult.aspx?q=\u0002\u00010", - "news": "http://www.ctvnews.ca/search-results/search-ctv-news-7.137?q=\u0002\u00015" - }, - "an": "http://ctan.org/search/?phrase=\u0002&x=1&PORTAL=on&PKG=on&AUTHORS=on&TOPICS=on&max=16\u0001339", - "extd": "http://ctext.org/dictionary.pl?if=en&char=\u0002\u00015", - "gov": "//clinicaltrials.gov/ct2/results?term=\u0002\u00010", - "imes": "//www.collegiatetimes.com/search/?q=\u0002\u00010" - }, - "u": { - "b": { - "\u0010": "//cubash.com/users?filter=0&query=\u0002\u00010", - "anet": "http://www.cubanet.org/?s=\u0002\u00010", - "ehero": "//cubehero.com/search?q=\u0002\u00010", - "icles": "http://www.skutchi.com/catalogsearch/result/?q=\u0002\u00010" - }, - "\u0010": "//caniuse.com/#search=\u0002\u00010", - "l": { - "\u0010": "//newcatalog.library.cornell.edu/search?q=\u0002\u00013", - "y": "http://www.culy.nl/?s=\u0002\u00010", - "ib": { - "\u0010": "//newcatalog.library.cornell.edu/catalog?q=\u0002\u00010", - "rary": "http://libraries.clemson.edu/?s=\u0002\u00010" - }, - "tofmac": "http://www.cultofmac.com/?s=\u0002\u00010", - "tpens": "//www.cultpens.com/s?q=\u0002\u00010", - "ts3d": "//cults3d.com/fr/recherche?utf8=%E2%9C%93&q=\u0002\u00010", - "tureunplugged": "http://www.cultureunplugged.com/festival/gsearch.php?cx=006605354541519765965:qm01kqkdyrq&cof=FORID:10;NB:1&ie=UTF-8&q=\u0002&sa.x=0&sa.y=0\u00010" - }, - "p": { - "\u0010": "//www.cambridge.org/gb/search?query=\u0002\u00010", - "rinoluk": "http://www.cuprinol.co.uk/servlet/SiteAdvancedSearchHandler?searchtype=all&searchString=\u0002\u00010" - }, - "dl": "//cudl.lib.cam.ac.uk/search?keyword=\u0002\u00010", - "antocabron": "http://www.cuantocabron.com/busqueda/0/\u0002\u00010", - "chilleriaalbacete": "//cuchilleriaalbacete.com/articulos-buscar.php?busco=\u0002\u00010", - "ria": { - "c": "http://curia.europa.eu/juris/liste.jsf?pro=&lgrec=en&nat=&oqp=&dates=&lg=&language=en&jur=C%2CT%2CF&cit=none%252CC%252CCJ%252CR%252C2008E%252C%252C%252C%252C%252C%252C%252C%252C%252C%252Ctrue%252Cfalse%252Cfalse&num=\u0002&td=ALL&pcs=O&avg=&page=1&mat=or&jge=&for=&cid=114819\u00010", - "\u0010": "http://curia.europa.eu/juris/liste.jsf?&num=\u0002\u000122", - "n": "http://curia.europa.eu/juris/liste.jsf?pro=&nat=&oqp=&dates=&lg=&language=en&jur=C%2CT%2CF&cit=none%252CC%252CCJ%252CR%252C2008E%252C%252C%252C%252C%252C%252C%252C%252C%252C%252Ctrue%252Cfalse%252Cfalse&td=ALL&pcs=O&avg=&page=1&mat=or&parties=\u0002&jge=&for=&cid=114819\u00010" - }, - "rrclick": "http://www.currclick.com/browse.php?keywords=\u0002\u00010", - "rse": { - "\u0010": "//www.curseforge.com/wow/addons/search?search=\u0002\u000111", - "forge": "//duckduckgo.com/?q=\u0002+site%3Acurseforge.com\u000134" - }, - "rsos": "http://www.gesformacion.es/buscar?controller=search&search_query=\u0002\u00010", - "spide": "http://www.cuspide.com/resultados.aspx?c=\u0002\u00010" - }, - "v": { - "\u0010": "//stats.stackexchange.com/search?q=\u0002\u00014", - "e": { - "\u0010": "//cve.mitre.org/cgi-bin/cvekey.cgi?keyword=\u0002\u000126", - "d": { - "\u0010": "http://cvedetails.com/cve-details.php?t=1&cve_id=\u0002\u00010", - "tls": "//www.cvedetails.com/google-search-results.php?q=\u0002&sa=Search\u00010" - } - }, - "m": { - "\u0010": "http://www.cvmarket.lt/joboffers.php?op=search&search%5Bkeyword%5D=\u0002\u00010", - "cia": "http://cvmweb.cvm.gov.br/SWB/Sistemas/SCW/CPublica/CiaAb/ResultBuscaParticCiaAb.aspx?CNPJNome=\u0002&TipoConsult=C\u00010" - }, - "o": { - "\u0010": "http://www.cvo.co.uk/?s=\u0002\u00010", - "fire": "//www.cvo.co.uk/?s=\u0002\u00010" - }, - "r": "//datacvr.virk.dk/data/visninger?soeg=\u0002\u00010", - "s": "http://www.cvs.com/search/_/N-0?searchTerm=\u0002&pt=global\u000115" - }, - "w": { - "\u0010": "//www.codewars.com/kata/search/?q=\u0002\u00019", - "e": { - "\u0010": "//cse.google.com/cse?oe=utf8&ie=utf8&source=uds&q=\u0002&start=0&cx=012899561505164599335:tb0er0xsk_o\u00010", - "n": "//en.wikipedia.org/wiki/Special:CiteThisPage?page=\u0002\u00010", - "bstore": "//chrome.google.com/webstore/search/\u0002\u000194" - }, - "j": "//www.cwjobs.co.uk/jobs/\u0002\u00010", - "s": "//chrome.google.com/webstore/search/\u0002\u000194", - "t": "http://crosswordtracker.com/answer/\u0002/\u00010", - "de": "//de.wikipedia.org/w/index.php?title=Spezial:Zitierhilfe&page=\u0002\u00010", - "ow": "//classic.wowhead.com/search?q=\u0002\u00010" - }, - "z": { - "c": "http://www.czc.cz/search?q-fulltext=\u0002\u000111", - "\u0010": "//complexityzoo.uwaterloo.ca/index.php?search=\u0002&title=Special%3ASearch\u00010", - "k2eur": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=CZK&To=EUR\u00010" - }, - "74": "//cycling74.com/search/page/1/\u0002\u00010", - "++": { - "\u0010": "http://www.cplusplus.com/search.do?q=\u0002\u00010", - "ref": "http://en.cppreference.com/mwiki/index.php?search=Special%3ASearch&search=\u0002\u00010" - }, - "fa": "//www.cfainstitute.org/en/search#q=\u0002\u00010", - "fb": { - "\u0010": "http://store.channelfireball.com/products/search?query=\u0002\u00010", - "r": "http://www.sports-reference.com/cfb/search/search.fcgi?search=\u0002\u00010" - }, - "fd": "//cfdocs.org/\u0002\u000112", - "fe": "//www.codingforentrepreneurs.com/search/?q=\u0002\u00010", - "fn": "http://docs.aws.amazon.com/search/doc-search.html?searchPath=documentation-guide&searchQuery=\u0002&this_doc_product=AWS+CloudFormation&this_doc_guide=User+Guide&doc_locale=en_us#facet_doc_product=AWS%20CloudFormation&facet_doc_guide=User%20Guide\u00016", - "fp": { - "\u0010": "http://wikicfp.com/cfp/servlet/tool.search?q=\u0002&year=f\u00010", - "forum": "//forum.curvefever.pro/search?q=\u0002\u00010" - }, - "fr": { - "\u0010": "http://www.ecfr.gov/cgi-bin/searchECFR?q1=\u0002\u00010", - "en": "http://www.collinsdictionary.com/dictionary/french-english/\u0002\u000191" - }, - "og": "//www.cloudofgoods.com/s/products?query=\u0002\u00010", - "ol": { - "\u0010": "//www.colourbox.com/search/find?q=\u0002\u00010", - "es": "//shop.coles.com.au/a/a-national/everything/search/\u0002?pageNumber=1\u00019", - "or": { - "\u0010": "http://www.colorhexa.com/\u0002\u000111", - "mango": "http://www.colormango.com/search/index.asp?keyword=\u0002\u00010" - }, - "dfusion": "http://community.adobe.com/help/search.html?searchterm=\u0002&go=go&q=\u0002&l=coldfusion_product_adobelr&x=0&y=0&area=0&lr=en_US\u00010", - "legeboard": "//www.collegeboard.org/search?tp=usearch&x=15&x1=t4&y=13&searchType=site&word=\u0002\u00010", - "legeconfidential": "http://www.collegeconfidential.com/search_results.htm?q=\u0002&sa=Google+Search&userInput=&sitesearch=collegeconfidential.com&cx=013579521852154800353%3Avvp1k6kluvq&cof=FORID%3A9 \u00010", - "lins": { - "\u0010": "//www.collinsdictionary.com/dictionary/english/\u0002\u00010", - "ge": "//www.collinsdictionary.com/dictionary/german-english/\u0002\u00010" - }, - "loq": "//colloq.io/search?query=\u0002\u00010", - "location": "http://oxforddictionary.so8848.com/search1?word=\u0002\u00010" - }, - "om": { - "c": "//www.comc.com/Cards,=\u0002\u00010", - "\u0010": "//computernewb.com/w/index.php?search=\u0002\u00016", - "s": "//www.conference-service.com/conferences/conference-search.html?searchwords=\u0002\u00010", - "fy": "//comfy.ua/catalogsearch/result?q=\u0002\u00010", - "ix": { - "\u0010": "//www.comixology.com/search?search=\u0002\u00010", - "eu": "//www.comixology.eu/search?search=\u0002 \u00010", - "uk": "//www.comixology.co.uk/search?search=\u0002&submit=Submit\u00010" - }, - "bodeck": "http://combodeck.net/Query/\u0002 \u00017", - "icrocket": "//www.comic-rocket.com/search?q=\u0002\u00010", - "icvine": "http://www.comicvine.com/search/?q=\u0002\u00017", - "mitstrip": "http://www.commitstrip.com/?s=\u0002\u00013", - "mons": { - "\u0010": "//commons.wikimedia.org/w/index.php?search=\u0002\u0001128", - "ensemedia": "http://www.commonsensemedia.org/search/\u0002\u000125" - }, - "pass": "http://compass-style.org/search/?q=\u0002\u00010", - "panieshouse": "//beta.companieshouse.gov.uk/search/companies?q=\u0002\u000120", - "paregames": "http://www.comparegames.com.br/comprar/\u0002 \u00010", - "pfight": "http://compfight.com/search/\u0002 /\u00010", - "pose": "//mail.google.com/mail/?view=cm&to=&su=\u0002\u00013", - "ptoirsecu": "http://www.comptoirsecu.fr/?s=\u0002\u00010", - "pumundo": "//www.compumundo.com.ar/q/\u0002/srch?q=\u0002\u00010", - "puterhope": "//www.computerhope.com/search2.htm?q=\u0002\u00010", - "putrabajo": "http://www.computrabajo.com.ar/ofertas-de-trabajo/?q=\u0002\u00010" - }, - "oq": "//coq.inria.fr/distrib/current/refman/search.html?q=\u0002\u00019", - "or": { - "\u0010": "//www.cornishdictionary.org.uk/home?locale=en#\u0002\u00010", - "e": "//core.ac.uk/search?q=\u0002\u00013", - "p": "//opencorporates.com/companies?q=\u0002\u000142", - "dovapl": "http://plugins.cordova.io/#/search?search=\u0002\u00010", - "ona": "//coronalabs.com/?s=\u0002\u00010", - "reos": "http://www.correos.es/ss/Satellite/site/aplicacion-4000003383089-herramientas_y_apps/detalle_app-sidioma=es_ES?numero=\u0002\u00010", - "reios": "//www.linkcorreios.com.br/\u0002\u000123", - "riere": "http://sitesearch.corriere.it/forward.jsp?q=\u0002\u00014" - }, - "os": { - "\u0010": "http://consequenceofsound.net/?s=\u0002\u00010", - "dna": "http://www.cosdna.com/eng/product.php?q=\u0002\u00010", - "moty": "http://www.cosmoty.de/suche/\u0002/\u00010", - "tco": { - "\u0010": "http://www.costco.com/CatalogSearch?storeId=10301&catalogId=10701&langId=-1&keyword=\u0002\u0001129", - "ca": "//www.costco.ca/CatalogSearch?dept=All&keyword=\u0002\u00010" - } - }, - "ow": { - "\u0010": "http://combineoverwiki.net/index.php?search=\u0002&button=&title=Special%3ASearch\u00014", - "boylyrics": "//www.cowboylyrics.com/search.html?cx=partner-pub-1248082249428003%3A7921416976&ie=UTF-8&q=\u0002&cof=FORID%3A10&siteurl=cowboylyrics.com%2F&ref=&ss=346j47246j4\u00010" - }, - "xx": "http://www.cplusplus.com/search.do?q=\u0002\u00010", - "yb": { - "\u0010": "//cyberlearn.hes-so.ch/course/search.php?search=\u0002\u00013", - "l": "//cyberleninka.ru/search?q=\u0002\u00010", - "er": { - "\u0010": "//www.cyberscoop.com/?s=\u0002\u00010", - "port": "http://www.cyberport.de/?EVENT=itemsearch&query=\u0002\u00010" - }, - "rhome": "//www.cybrhome.com/search?q=\u0002\u00013" - }, - "ye": { - "\u0010": "http://www.chooseyourevent.co.uk/keywordsearch.asp?searchterms=\u0002\u00010", - "n": "//translate.google.com/#cy/en/\u0002\u00010" - }, - "yt": "//cadence.gq/cloudtube/search?q=\u0002&sort_by=relevance\u00010", - "1024": "http://www.commander1024.de/wordpress/?s=\u0002\u00010", - "3tv": "//media.ccc.de/search/?q=\u0002\u00013", - "64wde": "http://www.c64-wiki.de/index.php?title=Spezial%3ASuche&go=Seite&search=\u0002\u00010", - "oastercrazy": "http://www.coastercrazy.com/forums/search.php?keywords=\u0002\u00010", - "ocoa": { - "\u0010": "//developer.apple.com/search/index.php?q=\u0002 \u000117", - "pods": "http://cocoapods.org/?q=\u0002\u00010" - }, - "ocatalog": { - "\u0010": "http://cocatalog.loc.gov/cgi-bin/Pwebrecon.cgi?Search_Arg=\u0002&Search_Code=TALL&CNT=25&HIST=1\u00010", - "n": "http://cocatalog.loc.gov/cgi-bin/Pwebrecon.cgi?Search_Arg=\u0002&Search_Code=NALL&CNT=25&HIST=1\u00010" - }, - "occoc": "http://coccoc.com/search#query=\u0002\u00017", - "ocklestorm": "http://www.cocklestorm.com/catalogsearch/result/?q=\u0002 \u00010", - "ode": { - "\u0010": "http://www.searchco.de/?q=\u0002&cs=on\u00018", - "x": "http://codex.wordpress.org/?search=\u0002\u00013", - "42": "//support.code42.com/Special:Search?search=\u0002\u00010", - "kx": "//code.kx.com/q/search?query=\u0002\u00010", - "bottle": "//codebottle.io/?q=\u0002\u00010", - "canyon": "http://codecanyon.net/search?utf8=%E2%9C%93&term=\u0002\u00010", - "dgar": "//codedgar.com.ve/?s=\u0002\u00010", - "forces": "http://codeforces.com/search?query=\u0002\u00018", - "gov": "//code.gov/search?query=\u0002\u00010", - "pen": "//codepen.io/search/pens?q=\u0002&limit=all&type=type-pens\u00019", - "points": "http://codepoints.net/search?q=\u0002\u00010", - "weavers": "http://www.codeweavers.com/compatibility/search/?name=\u0002\u00010" - }, - "odi": { - "\u0010": "//www.collinsdictionary.com/dictionary/english/\u0002\u00010", - "nglove": "http://thecodinglove.com/search/\u0002\u00010" - }, - "odw": "http://callofduty.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "odat": { - "a": "//physics.nist.gov/cgi-bin/cuu/Results?search_for=\u0002\u00010", - "\u0010": "//coda.io/templates/productivity?search=\u0002\u00010" - }, - "odpedia": "//cod.esportspedia.com/index.php?search=\u0002\u00010", - "odrops": "http://tympanus.net/codrops/?s=\u0002\u00013", - "offeeshop": "//getsmokin.nl/coffeeshops?shopsearch=\u0002\u00010", - "oho": "http://bookmanager.com/760081x/index.php?q=h.tviewer&using_sb=status&qsb=keyword&so=oh&searchtype=keyword&qs=\u0002&x=0&y=0&qs_file=\u00010", - "oin": { - "\u0010": "//coinmarketcap.com/search/?q=\u0002\u000137", - "s": "http://www.londoncoins.co.uk/?page=Pastresults&searchterm=\u0002&searchtype=1\u00010", - "mc": "//coinmarketcap.com/currencies/search/?q=\u0002\u00010", - "gecko": "//www.coingecko.com/en/search/bang?query=\u0002\u000127", - "marketcap": "//coinmarketcap.com/search/?q=\u0002\u000137" - }, - "onj": { - "\u0010": "//leconjugueur.lefigaro.fr/conjugaison/verbe/\u0002\u000139", - "en": "http://conjugator.reverso.net/conjugation-english-verb-\u0002.html\u00010", - "es": "http://www.spanishdict.com/conjugate/\u0002\u00010", - "fr": "http://conjugueur.reverso.net/conjugaison-francais-verbe-\u0002.html\u00016", - "uga": { - "\u0010": "http://www.conjuga-me.net/verbo-\u0002\u00010", - "cao": "//www.conjugacao.com.br/busca.php?q=\u0002\u00010" - }, - "uguer": "http://leconjugueur.lefigaro.fr/conjugaison/verbe/\u0002.html\u00010" - }, - "onv": { - "\u0010": "//theconversation.com/search?q=\u0002\u00010", - "ert": "http://www.clipconverter.cc/?url=\u0002\u00015", - "ersa": "http://www.conversadesofa.com/?s=\u0002\u00010" - }, - "onda": "//anaconda.org/search?q=\u0002\u000115", - "onfi": { - "\u0010": "http://www.elconfidencial.com/buscar/2-6-1-3/0/1/10/desc/\u0002/\u00010", - "g": "//config.lk/?s=\u0002\u00010" - }, - "onaff": "//www.consumeraffairs.com/search.html?q=\u0002&cat=homepage\u00010", - "onarte": "http://conarte.org.mx/?s=\u0002\u00010", - "oncerts": "http://www.pollstar.com/tour/searchall.pl?By=All&Content=\u0002&go_green.x=0&go_green.y=0\u00010", - "onfrank": { - "\u0010": "http://portal.core.edu.au/conf-ranks/?search=\u0002&by=all&source=all&sort=atitle&page=1\u00010", - "s": "http://www.conferenceranks.com/?searchall=\u0002\u00010" - }, - "ongress": "//www.congress.gov/search?q={%22source%22%3A%22legislation%22%2C%22search%22%3A%22\u0002%22}\u00010", - "onnectny": "http://www.connectny.info/search/?searchtype=X&SORT=D&searcharg=\u0002\u00010", - "onrad": { - "\u0010": "http://www.conrad.de/ce/de/Search.html?search=\u0002\u000122", - "at": "//www.conrad.at/de/Search.html?searchType=REGULAR&search=\u0002\u00010" - }, - "onsent": "//consent.games/?s=\u0002\u00010", - "onservapedia": "http://www.conservapedia.com/index.php?search=\u0002\u000133", - "onsplus": "//www.consultant.ru/search/?q=\u0002\u00010", - "onsumer": { - "\u0010": "//www.consumerreports.org/search/?query=\u0002\u00010", - "lab": "//www.consumerlab.com/Search/\u0002\u00010" - }, - "ontacts": "//contacts.google.com/search/\u0002\u00017", - "ontamet": "http://contamet.wordpress.com/?s=\u0002\u00010", - "ontinente": "http://www.continente.pt/stores/continente/pt-pt/public/Pages/searchResults.aspx?k=\u0002\u00010", - "ook": { - "\u0010": "http://www.cooks.com/?/q=\u0002\u00010", - "s": { - "c": "http://www.cookscountry.com/search/?type=&q=\u0002\u00010", - "\u0010": "http://www.cooks.com/rec/search?q=\u0002\u00010", - "i": "http://www.cooksillustrated.com/search/results.asp?query=\u0002\u00010" - }, - "book": "//supermarket.chef.io/cookbooks?q=\u0002\u00010", - "ing": "//cooking.nytimes.com/search?q=\u0002\u00010", - "pad": "http://cookpad.com/search/\u0002\u00010" - }, - "ool": { - "\u0010": "http://cooljugator.com/lt/\u0002\u00015", - "blue": { - "\u0010": "//www.coolblue.nl/zoeken?query=\u0002\u00010", - "be": "//www.coolblue.be/zoeken?query=\u0002\u00014", - "nl": "//www.coolblue.nl/zoeken?query=\u0002\u00010" - }, - "inarika": "//www.coolinarika.com/recepti/pretrazivanje/?upit=\u0002\u00010", - "math": "//duckduckgo.com/?q=site%3Acoolmathgames.com+\u0002&ia=web\u00013", - "shop": "//www.coolshop.dk/s/?q=\u0002\u00010", - "stuffinc": "http://www.coolstuffinc.com/main_search.php?pa=searchOnName&page=1&resultsPerPage=25&q=\u0002\u00010" - }, - "oop": { - "\u0010": "//www.coop.se/handla-online/sok/?q=\u0002\u00010", - "athome": "//www.coopathome.ch/search/?text=\u0002\u00010", - "_de": "http://www.coop.ch/pb/site/search/search/2057/Lde/index.html?qs=\u0002&fr=coop2012&SuchButton.x=0&SuchButton.y=0&search=search&backend=backend_coop2012&la=de&_sid=4aea1684-910e-4741-9099-86fff3d8a570\u00010", - "_fr": "http://www.coop.ch/pb/site/search/search/2057/Lfr/index.html?qs=\u0002&fr=coop2012&SuchButton.x=0&SuchButton.y=0&search=search&backend=backend_coop2012&la=fr&_sid=2fae98df-7f08-49a8-86b5-38148b71ebdb\u00010", - "_it": "http://www.coop.ch/pb/site/search/search/2057/Lit/index.html?qs=\u0002&fr=coop2012&SuchButton.x=0&SuchButton.y=0&search=search&backend=backend_coop2012&la=it&_sid=537d493c-9c35-41dc-8881-d878b57e702f\u00010", - "_se": "//www.coop.se/Sok/Receptsok/\u0002\u00010" - }, - "oobook": "//supermarket.chef.io/cookbooks?utf8=%E2%9C%93&q=\u0002\u00010", - "opr": "http://copr.fedoraproject.org/coprs/fulltext/?fulltext=\u0002\u00019", - "opac": "http://copac.ac.uk/search?&title=\u0002\u00010", - "optr": "http://coptr.digipres.org/index.php?search=\u0002\u00010", - "op2usd": "http://www.xe.com/currencyconverter/convert/?From=COP&To=USD&Amount=\u0002\u00010", - "oppermind": "http://coppermind.net/wiki/Special:Search?search=\u0002\u000146", - "ottages": "//selfcater.com/find?query=\u0002\u00010", - "ottrillcompassblog": "http://cottrillcompass.com/blog/?s=\u0002\u00010", - "oub": "http://coub.com/search?q=\u0002\u000125", - "ouch": "//www.couchsurfing.org/?q=\u0002\u00013", - "ouleur": "http://couleur-science.eu/index.php?q=\u0002\u00010", - "ountry": "//www.countrycode.org/\u0002\u00016", - "ountdown": "http://cd.justinjc.com/\u0002\u00014", - "oupang": "//www.coupang.com/np/search?component=&q=\u0002\u000147", - "oupons": { - "\u0010": "http://www.dealtaker.com/site/search?q=\u0002\u00010", - "urfer": "http://www.couponsurfer.com/coupon_search.cfm?q=\u0002\u00010" - }, - "ouponcabin": "http://www.couponcabin.com/ps/\u0002/1/\u00010", - "ouponmeup": "http://www.couponmeup.com/cgi-bin/display.pl?search=1&q=\u0002 \u00010", - "ourant": "http://www.courant.com/search/dispatcher.front?target=article&sortby=display_time++descending&Query=\u0002 \u00010", - "ourrierint": "http://www.courrierinternational.com/search/result/\u0002\u00010", - "oursera": "//www.coursera.org/search?query=\u0002\u000128", - "ourttv": "//www.courttv.com/?s=\u0002\u00010", - "oveo": "http://www.coveo.com/en/search#q=\u0002\u00010", - "ovot": "http://www.covot.net/dictionary?search=\u0002\u00010", - "ozydays": "//www.cozydays.com/search.aspx?q=\u0002\u00010", - "yanide": "/?q=\u0002+site:explosm.net\u00010", - "ycletec": "//www.cycletec.ch/index.php?route=product/search&search=\u0002\u00010", - "yclingweekly": "//www.cyclingweekly.com/?s=\u0002\u00010", - "yg64": "//cygwin.com/cgi-bin2/package-grep.cgi?grep=\u0002&arch=x86_64\u00010", - "ygwin": "//cygwin.com/cgi-bin2/package-grep.cgi?grep=\u0002\u00010", - "ymon": "//cymon.io/\u0002\u00010", - "ymath": "http://www.cymath.com/answer.php?q=\u0002\u00010" - }, - "d": { - "2": { - "0": { - "\u0010": "http://www.d20srd.org/search.htm?q=\u0002\u00010", - "pfsrd": "http://www.d20pfsrd.com/system/app/pages/search?scope=search-site&q=\u0002\u00016", - "srd": "http://www.d20srd.org/search.htm?q=\u0002\u00010" - }, - "\u0010": "//www.light.gg/db/search/?q=\u0002\u000112", - "r": "//www.drive2.ru/search?text=\u0002\u00010", - "w": "http://diablo2.diablowiki.net/index.php?title=Special%3ASearch&redirs=1&search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010", - "gp": "http://dota2.gamepedia.com/Special:Search/\u0002\u00010" - }, - "3": "//dirty.ru/search/?query=\u0002\u00014", - "a": { - "\u0010": "http://www.deviantart.com/browse/all/?section=&global=1&q=\u0002\u00011186", - "l": { - "\u0010": "//duckduckgo.com/?q=\u0002+site:abretelibro.com\u00010", - "la": { - "\u0010": "http://asturianu.elahorcado.net/search.php?search=\u0002\u00010", - "snews": "//www.dallasnews.com/search?q=\u0002\u00010" - } - }, - "x": "http://duckduckgo.com/?q=\u0002\u00013", - "y": "//duckduckgo.com/?q=\u0002&df=d\u00015", - "en": "//translate.google.com/#da/en/\u0002\u00017", - "ne": "http://dane.ac-dijon.fr/?s=\u0002\u00010", - "nm": { - "\u0010": "//www.nexusmods.com/dragonage/search/?gsearch=\u0002&gsearchtype=mods\u00010", - "urphys": "//www.danmurphys.com.au/search?searchTerm=\u0002\u00010" - }, - "pi": "//api.drupal.org/api/drupal/latest/search/\u0002\u00010", - "rc": "//www.d-archive.org/?s=\u0002\u00010", - "rk": { - "\u0010": "//duckduckgo.com/?q=\u0002&kae=d\u000117", - "horse": "http://www.darkhorse.com/Search/\u0002\u00010", - "lyrics": "http://www.darklyrics.com/search?q=\u0002\u00014", - "netmarkets": "//www.darknetmarkets.net/?s=\u0002\u00014" - }, - "rt": { - "\u0010": "http://www.dartlang.org/search.html?q=\u0002\u00014", - "y": "http://www.darty.com/nav/recherche?text=\u0002\u00015", - "lib": "http://libcat.dartmouth.edu/search/X?\u0002\u00010", - "pub": "//pub.dartlang.org/packages?q=\u0002\u00017" - }, - "ru": "http://dic.academic.ru/searchall.php?SWord=\u0002&from=xx&to=ru&did=&stype=0\u00010", - "sh": { - "\u0010": "http://dash.harvard.edu/search?scope=%2F&query=\u0002&rpp=10&sort_by=0&order=DESC\u00010", - "radio": "http://dashradio.com/?q=\u0002\u00010" - }, - "ta": { - "\u0010": "//toolbox.google.com/datasetsearch/search?query=\u0002\u00015", - "baze-her": "http://www.databaze-her.cz/hledani/?fraze=\u0002\u00010", - "blogger": "//www.data-blogger.com/?s=\u0002&submit=Search\u00010", - "cite": "//search.datacite.org/works?query=\u0002\u00010", - "deer": "//datadeer.net/search/index.php?q=\u0002\u00010", - "gov": { - "\u0010": "http://catalog.data.gov/dataset?q=\u0002&sort=score+desc%2C+name+asc\u00013", - "au": "http://data.gov.au/dataset?q=\u0002\u00010" - }, - "gouv": "//www.data.gouv.fr/fr/search/?q=\u0002\u00010", - "search": "//toolbox.google.com/datasetsearch/search?query=\u0002\u00015", - "sheetarchive": "http://www.datasheetarchive.com/\u0002-datasheet.html\u00010", - "vicgov": "//www.data.vic.gov.au/data/dataset?q=\u0002\u00010", - "zar": "//www.datazar.com/search/data/?q=\u0002\u00010" - }, - "um": { - "\u0010": "http://search.daum.net/search?w=tot&q=\u0002\u0001285", - "dic": "http://dic.daum.net/search.do?q=\u0002\u000159" - }, - "cardworld": "http://www.dacardworld.com/search?Search=\u0002\u00010", - "ccaa": "//daccaa.com/results/?q=\u0002\u00010", - "ddyknows": "//daddyknows.ru/?s=\u0002\u00010", - "dtribe": "//dadtribe.in/?s=\u0002\u00010", - "font": "http://www.dafont.com/search.php?psize=m&q=\u0002\u00014", - "foodmall": "http://www.dafoodmall.com/goods/search.asp?sword=\u0002\u00010", - "gen": "http://www.dagen.se/search-7.157994?sortby=date&q=\u0002\u00010", - "gjeweg": "//www.dagjeweg.nl/zoeken?dq=\u0002\u00010", - "gobah": "http://dagobah.net/?search=\u0002\u00010", - "ilycollegian": "http://www.collegian.psu.edu/search/?f=html&q=\u0002\u00010", - "ilymed": "//dailymed.nlm.nih.gov/dailymed/search.cfm?labeltype=all&query=\u0002\u00010", - "ilymail": "//www.dailymail.co.uk/home/search.html?sel=site&searchPhrase=\u0002\u00017", - "ilymotion": "//www.dailymotion.com/search/\u0002\u000154", - "ilytimes": "http://www.delcotimes.com/search?text=\u0002\u00010", - "ilywriting": "//www.dailywritingtips.com/?s=\u0002\u00010", - "nas": "//www.danas.rs/?s=\u0002\u00010", - "nawa": "http://search.danawa.com/dsearch.php?query=\u0002\u000157", - "nbooru": "//danbooru.donmai.us/posts?tags=\u0002+rating:safe\u0001285", - "ndyfellow": "//www.dandyfellow.com/search/\u0002\u00010", - "nielha": "//danielha.tk/search.html?query=\u0002\u00010", - "nielshomecenter": "//www.danielshomecenter.com/catalogsearch/result/?q=\u0002\u00010", - "niweb": "//www.daniweb.com/search/index?q=\u0002\u00010", - "nsverine": "//www.dansverine.com/search?q=\u0002\u00010", - "ria": "http://www.dariawiki.org/wiki/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "riusf": "//dariusforoux.com/?s=\u0002\u00010", - "tev": "//www.datev.de/web/de/suche/?query=\u0002\u00010", - "tpiff": "http://datpiff.com/mixtapes-search?criteria=\u0002&sort=rating\u00010", - "user": "http://\u0002.deviantart.com\u00018", - "vesgarden": "http://davesgarden.com/sitewidesearch.php?q=\u0002\u00010", - "vetiyebaski": "http://www.davetiyebaski.net/arama?q=\u0002\u00010", - "vidnesher": "http://davidnesher.com.ar/?q=\u0002:\u00010", - "vidsw": "http://davidsw.com/?s=\u0002&post_type=product\u00010", - "viswiki": "//daviswiki.org/_rsearch/?q=\u0002\u00010", - "wiki": "//dragonage.fandom.com/wiki/Special:Search?query=\u0002\u00017" - }, - "b": { - "a": { - "\u0010": "http://www.dba.dk/soeg/?soeg=\u0002\u000114", - "sx": "http://dba.stackexchange.com/search?q=\u0002\u00010" - }, - "d": "//deadbydaylight.gamepedia.com/index.php?search=\u0002&title=Special:Search&go=Go\u000124", - "\u0010": "//m.douban.com/search/?query=\u0002\u000115", - "k": "http://www.databazeknih.cz/search?q=\u0002\u00010", - "l": { - "\u0010": "//discordbots.org/search?q=\u0002\u00010", - "p": { - "\u0010": "//dblp.uni-trier.de/search?q=\u0002\u0001289", - ".pub": "http://dblp.uni-trier.de/search/publ?q=\u0002 \u00010" - } - }, - "m": { - "\u0010": "//movie.douban.com/subject_search?search_text=\u0002\u00014", - "ovie": "//movie.douban.com/subject_search?search_text=\u0002&cat=1002\u00010", - "usic": "//music.douban.com/subject_search?search_text=\u0002&cat=1003\u00010" - }, - "o": { - "\u0010": "http://dev.bukkit.org/search/?search=\u0002\u00010", - "ts": "//discord.bots.gg/search?q=\u0002\u00010", - "ats": "//discord.boats/bots?search=\u0002\u00010" - }, - "p": { - "\u0010": "//paper.dropbox.com/?q=\u0002\u00014", - "edia": "http://wiki.dbpedia.org/Search?phrase=\u0002\u00010" - }, - "r": { - "\u0010": "//danbooru.donmai.us/posts?tags=\u0002+rating:safe\u0001285", - "artist": "//danbooru.donmai.us/artists?commit=Search&search%5Bany_name_matches%5D=\u0002&search%5Border%5D=created_at&utf8=%E2%9C%93\u00010", - "ead": "//read.douban.com/search?q=\u0002\u00010" - }, - "v": "http://dragonbolt-vanguard.wikia.com/search?query=\u0002\u00010", - "2z": "//www.ibm.com/support/knowledgecenter/search/\u0002?scope=SSEPEK_11.0.0\u00010", - "gb": "http://dejure.org/gesetze/BGB/\u0002.html\u00010", - "nf": "http://data.bnf.fr/search?term=\u0002\u00010", - "nl": "http://dbnl.nl/zoeken/zoekeninteksten/index.php?zoek=\u0002\u00010", - "ts": "//bugs.debian.org/\u0002\u00010", - "book": "//book.douban.com/subject_search?search_text=\u0002&cat=1001\u00010", - "gap": "//www.ncbi.nlm.nih.gov/gap/?term=\u0002\u00010", - "guide": "//www.dotabuff.com/heroes/\u0002/guides\u00010", - "snp": "http://www.ncbi.nlm.nih.gov/snp?term=\u0002\u00013", - "uch": "http://diebuchsuche.de/r.php?q=\u0002\u00010", - "uff": "http://www.dotabuff.com/search?utf8=%E2%9C%93&q=\u0002\u00010", - "ugs": "//bugs.debian.org/\u0002\u00010", - "wiki": "http://deathbattle.wikia.com/wiki/Special:Search?fulltext=Search&search=\u0002\u00010", - "yte": "http://int.darkbyte.ru/\u0002\u00010" - }, - "c": { - "c": { - "\u0010": "http://www.dict.cc/?s=\u0002\u00012244", - "omics": "http://www.dccomics.com/search/node/\u0002\u00010" - }, - "\u0010": "//duck.co/forum/search?q=\u0002\u000112", - "n": { - "\u0010": "http://dict.cn/\u0002\u00013", - "r": "http://www.apps.dcnr.state.pa.us/search.aspx?cx=008544532008978746929:8o8oxsc28a8&cof=FORID:11&ie=UTF-8&q=\u0002\u00010" - }, - "p": "http://docs.anakeen.com/dynacase/stable/#\u0002\u00010", - "r": "http://www.dcrainmaker.com/?s=\u0002 \u00010", - "s": { - "\u0010": "//dcs.rutgers.edu/search/node/\u0002\u00010", - "s": "http://crawl.chaosforge.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u000129" - }, - "w": { - "\u0010": "http://wiki.dcinside.com/wiki/\u0002\u000142", - "iki": "http://dc.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "om": "//www.dictionary.com/browse/\u0002\u00010", - "ul": "//capitadiscovery.co.uk/dcu/items?query=\u0002\u00010", - "inside": "http://search.dcinside.com/combine/q/\u0002\u000122" - }, - "d": { - "b": "//www.deutsche-digitale-bibliothek.de/searchresults?query=\u0002\u00010", - "d": "http://sli.uvigo.gal/ddd/ddd_pescuda.php?pescuda=\u0002&tipo_busca=lema\u00010", - "\u0010": "//devdocs.io/#q=\u0002\u0001165", - "e": { - "\u0010": "//duckduckgo.com/?kl=de-de&q=\u0002\u000155", - "v": "//qa.debian.org/developer.php?login=\u0002\u00010" - }, - "f": "//duckduckgo.com/?q=\u0002+site%3Aforums.dansdeals.com\u00013", - "g": { - "c": "//duckduckgo.com/?q=\u0002&ia=calculator\u000198", - "d": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=definition\u00010", - "e": "//duckduckgo.com/?kl=de-de&q=\u0002\u000155" - }, - "\u0010": "http://duckduckgo.com/?q=\u0002\u00013", - "f": "http://duckduckgo.com/?kl=fr-fr&q=\u0002\u0001127", - "i": "//duckduckgo.com/?q=\u0002&iax=images&ia=images\u0001877", - "m": "//duckduckgo.com/?q=\u0002&iaxm=maps\u000186", - "n": { - "\u0010": "http://duckduckgo.com/?q=\u0002&iar=news&ia=news\u000129", - "l": "//duckduckgo.com/?q=\u0002&kl=nl-nl\u00010", - "o": "//duckduckgo.com/?kl=no-no&q=\u0002\u00010" - }, - "r": "//duckduckgo.com/?q=site:reddit.com+\u0002\u0001146", - "v": "//duckduckgo.com/?q=\u0002&iar=videos&iax=videos&ia=videos\u0001224", - "al": "//duckduckgo.com/?t=palemoon&kl=xl-es&ko=1&k1=1&q=\u0002\u00010", - "ar": "//duckduckgo.com/?t=palemoon&kl=ar-es&ko=1&k1=1&q=\u0002\u00010", - "br": "//duckduckgo.com/?q=\u0002&kp=-1&kl=br-pt\u00010", - "ee": "//duckduckgo.com/?kl=ee-et&q=\u0002\u00010", - "hu": "http://duckduckgo.com/?kl=hu-hu&q=\u0002\u00010", - "ja": "//duckduckgo.com/?q=\u0002&kl=jp-jp&kp=-1\u00016", - "pd": "//duckduckgo.com/?df=d&q=\u0002\u00010", - "eue": "//duckduckgo.com/?kl=ue-es&q=\u0002\u00010" - }, - "h": { - "1": { - "0": "http://ddh10.duckduckgo.com/?q=\u0002\u00010", - "\u0010": "http://ddh1.duckduckgo.com/?q=\u0002\u00010" - }, - "2": "http://ddh2.duckduckgo.com/?q=\u0002\u00010", - "3": "http://ddh3.duckduckgo.com/?q=\u0002\u00010", - "4": "http://ddh4.duckduckgo.com/?q=\u0002\u00010", - "5": "http://ddh5.duckduckgo.com/?q=\u0002\u00010", - "6": "http://ddh6.duckduckgo.com/?q=\u0002\u00010", - "7": "http://ddh7.duckduckgo.com/?q=\u0002\u00010", - "8": "http://ddh8.duckduckgo.com/?q=\u0002\u00010", - "9": "http://ddh9.duckduckgo.com/?q=\u0002\u00013", - "\u0010": "//duck.co/ia?q=\u0002\u00017", - "u": "http://duckduckhack.com/u/\u0002\u00015", - "doc": "http://docs.duckduckhack.com/?q=\u0002\u00013" - }, - "i": { - "c": "http://dic.daum.net/search.do?q=\u0002\u000159", - "\u0010": "//duckduckgo.com/?q=\u0002&iax=images&ia=images\u0001877" - }, - "n": { - "\u0010": "//www.daytondailynews.com/google-search/?q=\u0002\u00010", - "et": "//ddnet.tw/players/\u0002\u00010" - }, - "o": "http://ordnet.dk/ddo/ordbog?query=\u0002 \u0001225", - "t": "//duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/?q=\u0002\u00016", - "w": { - "\u0010": "//www.deepdotweb.com/?s=\u0002\u00013", - "rt": "http://www.dd-wrt.com/wiki/index.php/Special:Search?search=\u0002\u00010", - "iki": "//darkestdungeon.gamepedia.com/index.php?search=\u0002\u00010" - }, - "jt": "//www.digitaldjtips.com/?s=\u0002\u00010", - "ms": "//duckduckgo.com/?q= \u0002+site%3Adansdeals.com\u00010", - "so": "//duckduckgo.com/?q=\u0002+site:stackoverflow.com\u000114", - "uknow": "http://www.dduknow.com/?s=\u0002\u00010" - }, - "*": { - "\u0010": "//www.joindiaspora.com/people?utf8=✓&q=\u0002\u00010", - "t": "//www.joindiaspora.com/tags/\u0002 \u00010" - }, - "e": { - "b": { - "\u0010": "//packages.debian.org/search?keywords=\u0002\u0001607", - "g": "//translate.google.com/#view=home&op=translate&sl=de&tl=bg&text=\u0002\u00010", - "ml": { - "a": "http://lists.debian.org/debian-\u0002/\u00010", - "\u0010": "http://lists.debian.org/cgi-bin/search?query=\u0002&DEFAULTOP=and&author=&sort=relevance&HITSPERPAGE=10&language=en\u00013" - }, - "pc": "//qa.debian.org/popcon.php?package=\u0002\u00010", - "ate": "http://www.debate.org/search?q=\u0002\u00010", - "bug": "//bugs.debian.org/\u0002\u00010", - "buildd": "http://buildd.debian.org/status/package.php?p=\u0002\u00013", - "content": "//packages.debian.org/search?searchon=contents&keywords=\u0002&mode=path&suite=unstable&arch=any\u00010", - "enhams": "http://www.debenhams.com/search/\u0002\u00010", - "files": "//packages.debian.org/search?searchon=contents&keywords=\u0002\u00018", - "ian": { - "\u0010": "http://search.debian.org/cgi-bin/omega?DB=en&P=\u0002\u000128", - "fr": "http://www.google.com/cse?cx=007724375775369850404%3Ajwpah_hbbjk&ie=UTF-8&q=\u0002&sa=Rechercher&siteurl=www.google.com%2Fcse%2Fhome%3Fcx%3D007724375775369850404%3Ajwpah_hbbjk\u00013", - "forums": "http://forums.debian.net/search.php?keywords=\u0002\u00010", - "izzati": "http://forum.debianizzati.org/search.php?keywords=\u0002\u00010", - "pack": "//packages.debian.org/search?keywords=\u0002\u0001607" - }, - "man": "//dyn.manpages.debian.org/jump?q=\u0002\u000188", - "packages": "//packages.debian.org/search?keywords=\u0002\u0001607", - "snap": "http://snapshot.debian.org/binary/\u0002/\u00010", - "tracker": "//tracker.debian.org/search?package_name=\u0002\u00017", - "wiki": "http://wiki.debian.org/FrontPage?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00015" - }, - "d": { - "\u0010": "http://dedalus.usp.br/F/2GT4AME1FV9M25Q886NF9PCLB2BK39NF8XMFRXNHCQIL1JX5IG-19193?func=find-b&request=\u0002&find_code=WRD&adjacent=N&local_base=USP01&x=39&y=11&filter_code_1=WLN&filter_request_1=&filter_code_2=WYR&filter_request_2=&filter_code_3=WYR&filter_request_3=&filter_code_4=WMA&filter_request_4=&filter_code_5=WBA&filter_request_5=\u00010", - "alus": "http://dedalus.usp.br/F/?func=find-b&request=\u0002\u00010" - }, - "f": { - "r": "http://defr.dict.cc/?s=\u0002\u000117", - "\u0010": "http://www.thefreedictionary.com/\u0002\u0001835", - "ine": { - "\u0010": "http://www.thefreedictionary.com/\u0002\u0001835", - "kids": "//kids.wordsmyth.net/we/?ent=\u0002\u00010" - }, - "key": "//defkey.com/search?irq=\u0002\u00010" - }, - "\u0010": "http://dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010", - "i": { - "c": "//sok.deichman.no/search?query=\u0002\u00010", - "\u0010": "http://www.deichmann.com/DE/de/shop/search.html?q=\u0002\u00010", - "t": "http://deit.dict.cc/?s=\u0002\u00015" - }, - "s": { - "c": "http://descriptionari.com/q/\u0002\u00010", - "i": { - "\u0010": "//www.desiclik.com/_search.php?page=1&q=\u0002\u00010", - "clik": "//www.desiclik.com/_search.php?page=1&q=\u0002\u00010", - "gndirectory": "http://www.dexigner.com/directory/search.html?q=\u0002\u00010", - "gnernews": "//www.designernews.co/search?q=\u0002\u00010" - }, - "\u0010": "http://es.thefreedictionary.com/\u0002\u000116", - "v": "http://desv.dict.cc/?s=\u0002\u000120", - "tinonegocio": "http://destinonegocio.com/search/\u0002\u00010", - "tructoid": "http://www.destructoid.com/search.phtml?cx=009275597616460404995%3A_iu6yjvsnom&cof=FORID%3A11&q=\u0002&sa=Search&siteurl=http%3A%2F%2Fwww.destructoid.com%2F\u00010" - }, - "v": { - "\u0010": "//devdocs.io/#q=\u0002\u0001165", - "o": { - "\u0010": "http://dev.opera.com/search?q=\u0002\u00010", - "nforum": "http://forum.devontechnologies.com/search.php?keywords=\u0002\u00010", - "tee": "http://devot-ee.com/search/results?keywords=\u0002&addon_version_support=ee2\u00010" - }, - "to": "//dev.to/search?q=\u0002\u00010", - "apple": "//developer.apple.com/search/index.php?q=\u0002\u00010", - "docs": "//devdocs.io/#q=\u0002\u0001165", - "eloppez": "http://www.developpez.com/recherche/?q=\u0002&sa.x=0&sa.y=0&sa=Go&cx=006424388311999799839:-31tnf0iuqy&cof=FORID:9&ie=ISO-8859-1&siteurl=www.developpez.com/\u00010", - "hints": "//devhints.io/?q=\u0002\u00010", - "iantart": "http://www.deviantart.com/browse/all/?section=&global=1&q=\u0002\u00011186", - "rant": "//devrant.com/search?term=\u0002\u00010", - ".splunk": "http://dev.splunk.com/search/dev?q=\u0002\u00010", - ".to": "//dev.to/search?q=\u0002\u00010", - "tube": "http://dev.tube?q=\u0002\u00010" - }, - "w": { - "\u0010": "//de.wikipedia.org/wiki/\u0002\u000125", - "iki": { - "\u0010": "http://de.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000139", - "how": "http://de.wikihow.com/Special:GoogSearch?ie=UTF-8&q=\u0002&sa=Suche\u00010" - } - }, - "x": { - "\u0010": "http://index.hu/24ora/?word=1&pepe=1&tol=1999-01-01&ig=2016-01-18&s=\u0002\u00014", - "6g": "//www.pokebip.com/pokedex/index.php?phppage=recherche&req=\u0002\u00010", - "igner": "http://www.dexigner.com/search?q=\u0002\u00010", - "online": "http://dexonline.ro/definitie/\u0002\u000187" - }, - "al": { - "\u0010": "http://dealbook.nytimes.com/?s=\u0002\u00010", - "s": { - "\u0010": "//www.reddit.com/r/deals/search/?q=\u0002&restrict_sr=1\u00014", - "pricer": "http://www.dealspricer.com/search?q=\u0002&utm_source=ddgbang&utm_medium=organic\u00010" - }, - "abs": "http://www.dealabs.com/search/?q=\u0002\u000135", - "agora": "//www.dealagora.com/recherche?q=\u0002\u00010", - "extreme": "http://dx.com/s/\u0002\u00010", - "news": "http://dealnews.com/search.html?search=\u0002\u00010" - }, - "co": { - "\u0010": "//decoracion2.com/search/\u0002\u00010", - "de": "//urldecode.org/?text=\u0002&mode=decode\u000110" - }, - "en": "http://www.dict.cc/?s=\u0002\u00012244", - "eo": "//deeo.dict.cc/?s=\u0002\u00010", - "es": "http://dees.dict.cc/?s=\u0002\u00019", - "hr": "//dehr.dict.cc/?s=\u0002\u00010", - "hu": "http://translate.google.com/#de/hu/\u0002\u00010", - "ll": { - "\u0010": "http://search.dell.com/results.aspx?s=gen&c=us&l=en&cs=&k=\u0002&cat=all\u000111", - "sp": "//www.dell.com/support/search/us/en/19#q=\u0002&sort=relevancy&f:langFacet=[en]\u00010", - "st": "http://www.dell.com/support/home/us/en/19/product-support/servicetag/\u0002\u000121", - "uk": "http://search.euro.dell.com/results.aspx?s=gen&c=uk&l=en&cs=&k=\u0002&cat=all&x=0&y=0\u00010" - }, - "nl": "http://denl.dict.cc/?s=\u0002\u00016", - "no": "//deno.dict.cc/?s=\u0002\u00016", - "nv": "//forum.dragen-en-voeden.nl/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Zoek\u00010", - "pl": "//translate.google.com/#de/pl/\u0002\u000119", - "ru": "//translate.google.com/#view=home&op=translate&sl=de&tl=ru&text=\u0002\u00013", - "2fr": "//translate.google.com/#de/fr/\u0002\u00010", - "adline": "//deadline.com/results/#?q=\u0002 \u00010", - "adspin": "http://deadspin.com/search?q=\u0002\u00010", - "akin": "http://library.deakin.edu.au/search/?searchtype=X&SORT=D&searcharg=\u0002&searchscope=1\u00010", - "cathlon": { - "\u0010": "http://www.decathlon.co.uk/Buy/\u0002\u00014", - "es": "//www.decathlon.es/Comprar/\u0002\u00010", - "fr": "http://www.decathlon.fr/Acheter/\u0002\u00010", - "it": "http://www.decathlon.it/Comprare/\u0002\u00010" - }, - "cde": "//www.decathlon.de/search?Ntt=\u0002\u00010", - "citre": "http://www.decitre.fr/rechercher/result/?q=\u0002\u00015", - "cks": "//www.decks.de/decks/workfloor/search_db.php?such=\u0002\u00010", - "epl": { - "\u0010": "//www.deepl.com/translator#xx/en/\u0002\u00019084", - "ef": "//www.deepl.com/translator#en/fr/\u0002\u000118", - "eg": "//www.deepl.com/translator#en/de/\u0002\u00018", - "en": { - "\u0010": "//www.deepl.com/translator#es/en/\u0002\u000184", - "es": "//www.deepl.com/translator#en/es/\u0002\u000139", - "pt": "//www.deepl.com/translator#de/pt/\u0002\u000118" - }, - "es": "//www.deepl.com/translator#en/es/\u0002\u000139", - "fr": "//www.deepl.com/translator#fr/en/\u0002\u000113", - "ge": "//www.deepl.com/translator#de/en/\u0002\u00015", - "ru": "//www.deepl.com/ru/translator#en/ru/\u0002\u000128", - "een": "//www.deepl.com/translator#es/en/\u0002\u000184", - "pten": "//www.deepl.com/translator#pt/en/\u0002\u00010" - }, - "epdyve": "//www.deepdyve.com/search?query=\u0002\u00010", - "epthidevaki": "//dd.thekkedam.org/search/?q=\u0002\u00010", - "ezer": "//www.deezer.com/search/\u0002\u0001141", - "jure": "//dejure.org/cgi-bin/suche?Suchenach=\u0002\u000130", - "lcat": "//delcat.worldcat.org/search?qt=wc_org_delcat&q=\u0002&scope=0&oldscope=0&wcsbtn2w=Search&fq=&dblist=1461%2C1542%2C638\u00010", - "lcotimes": "http://www.delcotimes.com/search?text=\u0002\u00010", - "lectable": "//delectable.com/search/\u0002\u00010", - "lfi": { - "\u0010": "http://www.delfi.lt/paieska/?q=\u0002\u00010", - "ee": "http://otsing.delfi.ee/find?c=dns&q=\u0002 &x=0&y=0\u00010" - }, - "lflt": "http://www.delfi.lt/paieska/?q=\u0002\u00010", - "lfruit": "http://delicious-fruit.com/ratings/full.php?s=\u0002\u000115", - "lib": "http://dlc.lib.de.us/client/default/search/results?qu=\u0002&te=\u00010", - "lijn": "//www.delijn.be/nl/zoekresultaten/index.html?searchtext=\u0002\u00010", - "livery": "http://www.yelp.com/search?&rpp=10&find_loc=&start=0&attrs=RestaurantsDelivery&find_desc=\u0002\u00010", - "lphi": "http://www.delphibasics.co.uk/RTL.asp?Name=\u0002\u00010", - "ltaco": "//www.deltaco.se/Sidor/SearchResults.aspx?k=\u0002\u00010", - "mauro": "//dizionario.internazionale.it/parola/\u0002\u00010", - "meureetjardin": "http://www.demeure-et-jardin.com/?q=\u0002\u00010", - "mocracynow": "http://www.democracynow.org/search?query=\u0002\u00013", - "nde": "//www.dict.cc/?s=\u0002\u00019", - "nicheur": "http://ledenicheur.fr/#rparams=ss=\u0002 \u00010", - "nru": "//www.deepl.com/translator#en/ru/\u0002%0A\u000126", - "openthesaurus": "//www.openthesaurus.de/synonyme/?q=\u0002\u00010", - "pop": "//www.depop.com/search/?q=\u0002\u000119", - "redactie": "http://deredactie.be/cm/vrtnieuws/1.516538?text=\u0002&action=submit\u00010", - "rpi": { - "\u0010": "//derpibooru.org/search?q=\u0002\u000189", - "booru": { - "\u0010": "//derpibooru.org/search?utf8=%E2%9C%93&sbq=\u0002\u00013", - "org": "//derpibooru.org/search?utf8=✓&sbq= \u0002\u00016" - } - }, - "rstandard": "//www.derstandard.at/search?query=\u0002\u00010", - "tfd": "http://de.tfd.com/\u0002\u00010", - "tik": "//www.detik.com/search/searchall?query=\u0002\u00010", - "uturk": "//deutsch-tuerkisch.net/suche/\u0002\u00010" - }, - "f": { - "a": "//www.dogfoodadvisor.com/?s=\u0002\u00015", - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Adaringfireball.net\u00019", - "w": { - "\u0010": "http://dwarffortresswiki.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000129", - "iki": "http://dwarffortresswiki.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000129" - }, - "eojm": "//downforeveryoneorjustme.com/\u0002\u00010", - "iles": "http://packages.debian.org/search?section=all&arch=any&searchon=contents&keywords=\u0002 \u00010", - "man": "http://leaf.dragonflybsd.org/cgi/web-man?command=\u0002§ion=ANY\u00013", - "ren": "//enfr.dict.cc/?s=\u0002\u00010" - }, - "g": { - "\u0010": "http://www.desiringgod.org/search/results?utf8=%E2%9C%93&search_source=navbar&q=\u0002#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u000131", - "g": { - "\u0010": "http://dejure.org/gesetze/GG/\u0002.html\u00017", - "i": "//duckduckgo.com/?q=\u0002&ia=images\u000112" - }, - "i": "//duckduckgo.com/?q=\u0002&iar=images&iax=images&ia=images\u0001275", - "s": "http://www.degulesider.dk/person/resultat/\u0002\u00015", - "ky": "//www.digikey.com/products/en?keywords=\u0002\u000172", - "l4": "//duckduckgo.com/?q=site%3Adocs.gl%2Fgl4+\u0002\u00013" - }, - "h": { - "c": "http://delhihighcourt.nic.in/SiteSearch.asp?zoom_query= \u0002\u00010", - "\u0010": "//hub.docker.com/search/?q=\u0002&page=1&isAutomated=0&isOfficial=0&starCount=0&pullCount=0\u0001739", - "g": { - "\u0010": "http://www.dhgate.com/wholesale/search.do?act=search&sus=&searchkey=\u0002\u00010", - "ate": "http://www.dhgate.com/wholesale/search.do?act=search&supplierid=&isfactory=&sus=&searchkey=\u0002&catalog=#search\u00010" - }, - "l": { - "\u0010": "http://www.dhl-usa.com/content/us/en/express/tracking.shtml?AWB=\u0002\u000164", - "f": "//activetracing.dhl.com/DatPublic/datSelection.do?search=consignmentId&at=cons_ordercode&valueShipmentOrderField=\u0002&focus=search2&searchConsignmentId=track\u00010", - "de": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=\u0002&rfn=&extendedSearch=true\u000120", - "gm": "http://webtrack.dhlglobalmail.com/?trackingnumber=\u0002\u00010" - }, - "bb": "http://www.fgv.br/cpdoc/acervo/arquivo?busca= \u0002 &TipoUD=0&MacroTipoUD=0&nItens=100\u00010", - "ub": "//hub.docker.com/search/?q=\u0002\u000144", - "docs": "//docs.docker.com/search/?q=\u0002\u00013", - "net": "http://www.dhnet.be/search/?query=\u0002\u00010" - }, - "i": { - "a": { - "\u0010": "//duck.co/ia?q=\u0002\u00017", - "blo": "http://diablo.wikia.com/wiki/Special:Search?query=\u0002\u000112", - "lnet": "http://dialnet.unirioja.es/buscar/documentos?querysDismax.DOCUMENTAL_TODO=\u0002\u000112", - "sporatags": "//joindiaspora.com/tags/\u0002\u00010" - }, - "c": { - "\u0010": "http://www.merriam-webster.com/dictionary/\u0002\u0001174", - "n": { - "\u0010": "http://dict.cn/\u0002 \u00010", - "ico": "//dic.nicovideo.jp/a/\u0002\u000116" - }, - "o": { - "\u0010": "//dicoado.org/wiki/index.php?search=\u0002\u00010", - "z": "http://www.dicoz.fr/?s=\u0002\u00010", - "iscenfr": "http://dico.isc.cnrs.fr/dico/tr/chercher_en?r=\u0002\u00010", - "iscfren": "http://dico.isc.cnrs.fr/dico/tr/chercher_fr?r=\u0002\u00010" - }, - "t": { - "\u0010": "http://www.dict.org/bin/Dict?Form=Dict2&Database=*&Query=\u0002\u0001280", - "n": "http://dict-navi.com/en/dictionary/list/?type=search&search_term=\u0002\u00010", - "cc": "//www.dict.cc/?s=\u0002\u00019", - "gr": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=\u0002\u00010", - "pl": "http://dict.pl/dict?word=\u0002\u00010", - "re": "http://www.dict.org/bin/Dict?Form=Dict1&Database=*&Strategy=re&Query=^\u0002$\u00010", - ".cc": "//www.dict.cc/?s=\u0002\u00019", - "ionary": { - "r": "http://dictionary.reference.com/browse/\u0002\u00019", - "\u0010": "http://www.thefreedictionary.com/\u0002\u0001835" - }, - "leode": "http://dict.leo.org/ende?cmpType=relaxed&search=\u0002\u00019", - "zonespma": "http://dictzone.com/spanyol-magyar-szotar/\u0002\u00010" - }, - "io": "//www.dicio.com.br/pesquisa.php?q=\u0002\u0001131", - "pt": "//www.infopedia.pt/dicionarios/lingua-portuguesa/\u0002\u000115", - "cionari": "http://www.diccionari.cat/cgi-bin/AppDLC3.exe?APP=CERCADLC&GECART=\u0002\u00010", - "info": "//www.dicionarioinformal.com.br/\u0002/\u00010", - "pixiv": "http://dic.pixiv.net/a/\u0002\u00017", - "-ptbr": "http://michaelis.uol.com.br/moderno-portugues/busca/portugues-brasileiro/\u0002\u00010" - }, - "\u0010": "//www.dictionary.com/browse/\u0002\u00010", - "e": { - "c": "//dlc.iec.cat/results.asp?txtEntrada=\u0002\u000115", - "\u0010": "http://www.die.net/search/?q=\u0002&sa=Search&ie=ISO-8859-1&cx=partner-pub-5823754184406795%3A54htp1rtx5u&cof=FORID%3A9\u000137", - "presse": "http://diepresse.com/user/search.do?resetForm=1&resultsPage=0&searchText=\u0002&x=0&y=0\u00010", - "renkruiden": "//www.dierenkruiden.nl/search?s=\u0002 \u00010" - }, - "g": { - "\u0010": "http://networking.ringofsaturn.com/Tools/dig.php?domain=ANY+\u0002\u000112", - "g": "http://digg.com/search?q=\u0002\u000142", - "i": { - "\u0010": "//www.digi.no/sok?query=\u0002\u00013", - "24": "//www.digi24.ro/cautare?q=\u0002\u00010", - "ato": "http://digiato.com/?q=\u0002: \u00010", - "bron": "//www.digibron.nl/search/results?q=\u0002\u00010", - "kala": "//www.digikala.com/Search?q=\u0002\u00010", - "key": "http://www.digikey.com/product-search/en?x=17&y=13&lang=en&site=us&KeyWords=\u0002\u0001138", - "talcomics": "http://digitalcomicmuseum.com/index.php?ACT=dosearch&terms=\u0002\u00010", - "talcomicmuseum": "http://digitalcomicmuseum.com/index.php?ACT=dosearch&terms=\u0002\u00010", - "talspy": "http://www.digitalspy.com/search/\u0002\u00013", - "taltrends": "http://www.digitaltrends.com/?s=\u0002\u00010", - "tec": "//www.digitec.ch/Search?q=\u0002\u000181", - "tick": "http://www.digitick.com/fr/recherche?query=\u0002\u00010" - }, - "ra": "//igranje.hr/?s=\u0002\u00010" - }, - "m": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "ensions": "//app.dimensions.ai/discover/publication?search_text=\u0002&search_type=kws&search_field=full_search\u00013" - }, - "n": { - "\u0010": "http://www.dicionarioinformal.com.br/\u0002\u00014", - "g": "//dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010" - }, - "o": "//invidio.us/search?q=\u0002\u000120", - "r": { - "\u0010": "//www.google.de/maps/dir/\u0002\u00010", - "ae": "http://dirae.es/palabras/?q=\u0002\u00010", - "py": "http://www.dirpy.com/studio?url=\u0002\u00010", - "ble": "http://dirble.com/search?q=\u0002\u00010", - "encnet": "//www.direnc.net/arama?q=\u0002\u00010" - }, - "s": { - "\u0010": "//www.discogs.com/search/?q=\u0002&type=all\u0001382", - "t": { - "\u0010": "http://www.distrelec.de/search?q=\u0002\u00010", - "ch": "//www.distrelec.ch/search?q=\u0002\u00010", - "ro": { - "\u0010": "http://distrowatch.com/table.php?distribution=\u0002\u000120", - "watch": "http://distrowatch.com/table.php?distribution=\u0002\u000120" - } - }, - "co": { - "\u0010": "http://discoverygc.com/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "gs": "http://www.discogs.com/search?q=\u0002&btn=&type=all\u00011936", - "rd": "//discordapp.com/invite/\u0002\u0001673", - "nnect": { - "\u0010": "http://search.disconnect.me/searchTerms/search?query=\u0002&ses=Google\u00017", - "img": "//search.disconnect.me/searchTerms/search?query=\u0002&option=Images\u00010" - }, - "untoffice": "//discountoffice.co.nz/search?type=product&q=\u0002*\u00010", - "urse": "//meta.discourse.org/search?q=\u0002\u00010", - "very": "http://dsc.discovery.com/search.htm?terms=\u0002\u00010" - }, - "pt": "http://www.dispostable.com/inbox/\u0002/\u00010", - "board": "//disboard.org/search?keyword=\u0002\u00015", - "closetv": "http://www.disclose.tv/search/desk?title=\u0002\u00010", - "cme": "//discord.me/servers/1/\u0002\u00015", - "cussscratch": "http://scratch.mit.edu/search/google_results/?q=\u0002&date=anytime&sort_by=datetime_shared\u00010", - "cworld": "http://discworld.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "ney": "http://search.disney.go.com/?q=\u0002\u00013", - "sent": "//dissenter.com/search?q=\u0002\u00010" - }, - "t": "//dizionario.internazionale.it/parola/\u0002\u00010", - "y": { - "\u0010": "http://www.diynetwork.com/search/\u0002\u00016", - "org": "/?q=site:diy.org+\u0002\u00010" - }, - "be": "http://www.differencebetween.net/search/?q=\u0002\u00010", - "bs": "//www.1stdibs.com/search/?q=\u0002\u00010", - "ff": "//duckduckgo.com/?q=difference+between+\u0002&ia=qa\u000112", - "fm": "//www.di.fm/search?q=\u0002\u00018", - "ki": { - "\u0010": "//www.diki.pl/slownik-angielskiego/?q=\u0002\u0001439", - "de": "//www.diki.pl/slownik-niemieckiego?q=\u0002\u00017" - }, - "va": { - "\u0010": "//www.diva-portal.org/smash/resultList.jsf?dswid=8805&language=en&searchType=SIMPLE&query=\u0002&af=%5B%5D&aq=%5B%5B%5D%5D&aq2=%5B%5B%5D%5D&aqe=%5B%5D&noOfRows=50&sortOrder=author_sort_asc&sortOrder2=title_sort_asc&onlyFullText=false&sf=all\u00010", - "liu": "http://liu.diva-portal.org/smash/resultList.jsf?searchType=SIMPLE&query=\u0002\u00010", - "zus": "//divazus.com/?s=\u0002\u00010" - }, - "vi": { - "\u0010": "//www.elegantthemes.com/documentation/?s=\u0002&submit.x=0&submit.y=0\u00010", - "i": "http://www.divii.org/search?q= \u0002\u00010", - "nipedia": "http://kidicarus.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "ddal": "http://portail.atilf.fr/cgi-bin/search2e?title=\u0002&author=&class=&speech=&objtype=&word=&CONJUNCT=PHRASE&PROXY=moins+de&DISTANCE=3&OUTPUT=conc&SYSTEM_DIR=%2Fvar%2Fartfla%2Fencyclopedie%2Ftextdata%2FIMAGE%2F\u00010", - "igo": "http://www.diigo.com/search/my?q=\u0002\u00018", - "igt": "//www.diigo.com/tag/\u0002?year=2\u00010", - "lbert": "//dilbert.com/search_results?terms=\u0002\u00010", - "plo": "http://www.monde-diplomatique.fr/recherche?s=\u0002\u00010", - "zint": "http://dizionario.internazionale.it/cerca/\u0002\u00010" - }, - "j": { - "\u0010": "//docs.djangoproject.com/search/?q=\u0002\u000175", - "i": "//store.dji.com/product-search?q=\u0002\u00010", - "s": "//discord.js.org/#/docs/main/stable/search?q=\u0002\u00017", - "ay": "http://www.deejay.de/\u0002\u00010", - "tt": "http://www.djtechtools.com/?s=\u0002\u00010", - "ango": { - "\u0010": "http://docs.djangoproject.com/search/?q=\u0002\u0001197", - "doc": "//docs.djangoproject.com/en/1.8/search/?q=\u0002\u00010" - }, - "ent": "//www.djentmag.com/?s=\u0002\u00010", - "lts": "//docs.djangoproject.com/en/2.2/search/?q=\u0002\u00010", - "ones": "//search.www.davidjones.com/search?w=\u0002\u00010", - "packages": "http://djangopackages.com/search/?q=\u0002\u00010", - "ticket": "//code.djangoproject.com/ticket/\u0002\u00010", - "trans": "http://www.dictjuggler.net/en/yakugo/?word=\u0002\u00010" - }, - "k": { - "c": "http://www.digikey.ca/product-search/en?x=-1308&y=-74&lang=en&site=ca&KeyWords=\u0002 \u000154", - "\u0010": "//store.docker.com/search?q=\u0002\u000123", - "p": "//diksiyonaryo.ph/search/\u0002\u00010", - "y": "//www.digikey.com/products/en?keywords=\u0002\u000172", - "es": "//www.digikey.es/products/es?keywords=\u0002\u00010", - "fr": "http://www.digikey.fr/product-search/fr?keywords=\u0002\u00010", - "it": "http://www.digikey.it/products/it?keywords=\u0002\u00010", - "wk": "http://www.dokuwiki.org/start?do=search&id=\u0002\u00010", - "ord": "http://ordnet.dk/ddo/ordbog?query=\u0002\u00010", - "store": "//store.docker.com/search?q=\u0002\u000123" - }, - "l": { - "c": { - "\u0010": "http://www.dlcompare.com/search?q=\u0002\u00010", - "at": "http://mdlc.iec.cat/results.asp?txtEntrada=\u0002&operEntrada=0\u00010" - }, - "\u0010": "http://blog.desdelinux.net/?s=\u0002\u000120", - "e": { - "\u0010": "http://dle.rae.es/?w=\u0002\u0001236", - "s": "//www.deepl.com/translator#au/es/\u0002\u000122", - "ague": "http://dleague.nba.com/?q=\u0002\u00010", - "nes": "//www.deepl.com/translator#en/es/\u0002\u000139" - }, - "f": "http://www.deutschlandfunk.de/suchergebnisse.448.de.html?search%5Bsubmit%5D=1&search%5BwithNews%5D%5B%5D=WithNews&search%5Bword%5D=\u0002\u00014", - "l": "http://www.dll-files.com/search.php?q=\u0002\u00010", - "o": "//dict.leo.org/german-english/\u0002\u000120", - "ib": "http://discipleshiplibrary.com/search.php?a=1&e=1&m=0&p=0&n=0&s=topic1&t=TOPIC%20A&ss=\u0002&st=all&ssf=\u00010", - "mf": "http://dlmf.nist.gov/search/search?q=\u0002\u00010", - "po": { - "c": "//www.priberam.pt/dlpo/Conjugar/\u0002\u00010", - "\u0010": "//www.priberam.pt/dlpo/\u0002\u000179" - }, - "ss": "http://duke.summon.serialssolutions.com/?summonVersion=2.0#!/search?ho=t&fvf=SourceType,Library%20Catalog,f%7CContentType,Book%20%2F%20eBook,f&q=\u0002&l=en\u00010", - "ang": "//duckduckgo.com/?q=site%3Adlang.org+\u0002\u000119", - "antrad": "http://traducciones-videojuegos.clandlan.net/index.php?page=academia%2Fsearch&search=\u0002\u00010", - "ive": "//dlive.tv/s/search/\u0002\u00010" - }, - "m": { - "\u0010": "//www.dailymotion.com/search/\u0002\u000154", - "e": "//eikaiwa.dmm.com/uknow/search/?keyword=\u0002\u00010", - "f": "http://www.cnrtl.fr/definition/dmf/\u0002\u00010", - "g": "//www.digitalinmarket.com/search?q=\u0002\u00010", - "i": { - "\u0010": "http://www.dmi.dk/byindex?by=\u0002\u00010", - "by": "http://www.dmi.dk/byindex?by=\u0002\u00010" - }, - "o": "//duckduckgo.com/?q=\u0002+site%3Adeb-multimedia.org%2Fpool%2F\u00010", - "w": "//www.merriam-webster.com/dictionary/\u0002\u000171", - "an": "//dyn.manpages.debian.org/jump?q=\u0002\u000188", - "ap": "http://map.daum.net/?q=\u0002\u00010", - "de": "//www.dm.de/search/468652.html?type=product&q=\u0002\u00010", - "aciasblog": "http://dmaciasblog.com/?s=\u0002\u00010", - "arc": "//mxtoolbox.com/SuperTool.aspx?action=dmarc%3a\u0002&run=networktools\u00010" - }, - "n": { - "b": "//portal.dnb.de/opac.htm?query=\u0002&method=simpleSearch\u00016", - "\u0010": "//www.dn.se/sok/?q=\u0002&page=1&sort=relevance\u00010", - "d": { - "\u0010": "//www.dndbeyond.com/search?q=\u0002\u00010", - "e": "http://dict-navi.com/de/dictionary/list/?type=search&search_term=\u0002\u00010", - "beyond": "//www.dndbeyond.com/search?q=\u0002\u00010", - "wiki": "http://dungeons.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "f": "//dnf.readthedocs.io/en/latest/search.html?q=\u0002\u00013", - "p": "http://referenceworks.brillonline.com/search?s.q=\u0002&s.f.s2_parent=s.f.book.der-neue-pauly\u00010", - "s": { - "\u0010": "http://mxtoolbox.com/SuperTool.aspx?action=a%3a\u0002&run=toolpage\u000122", - "shop": "http://www.dns-shop.ru/search/?q=\u0002\u00015" - }, - "t": "//www.dnt.no/søk/?q=\u0002\u00010", - "v": "http://www.avl.gva.es/lexicval/dnv?paraula=\u0002\u00010", - "w": "http://search.danawa.com/dsearch.php?k1=\u0002\u000132", - "ab": "//docs.microsoft.com/en-us/dotnet/api/?term=\u0002\u00010", - "evnik": "//www.dnevnik.bg/search/\u0002\u00010", - "ews": "//www.designernews.co/search#stq=\u0002&stp=1\u00010" - }, - "o": { - "c": { - "c": { - "\u0010": "http://m.flexikon.doccheck.com/en/search/?q=\u0002\u00010", - "de": "http://flexikon.doccheck.com/de/index.php?title=Spezial:Suche&q=\u0002\u00010", - "heck": "http://www.doccheck.com/de/search/?q=\u0002\u00010" - }, - "\u0010": "//www.doctorofcredit.com/?s=\u0002\u00018", - "o": "http://www.donationcoder.com/forum/index.php?action=search2&search=\u0002 \u00010", - "s": { - "\u0010": "http://www.scribd.com/search?query=\u0002\u000154", - "rs": "//docs.rs/releases/search?query=\u0002\u00011045", - ".rs": "//docs.rs/releases/search?query=\u0002\u00011045", - ".splunk": "//docs.splunk.com/Special:SplunkSearch/docs?q=\u0002\u00010" - }, - "book5": "http://docbook.org/search/?cx=008085259838719972531%3Atqmky0g0tbo&q=\u0002&sa=DocBook+Search&cof=FORID%3A9&siteurl=docbook.org%2F&ref=&ss=551j84183j5\u00010", - "ker": { - "\u0010": "//store.docker.com/search?q=\u0002\u000123", - "hub": "//hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=\u0002&starCount=0\u0001435" - }, - "ksal": "//docksal.readthedocs.io/en/master/search.html?q=\u0002\u00010", - "trine": "//www.doctrine.fr/?q=\u0002\u00013", - "ubu": { - "\u0010": "//help.ubuntu.com/search.html?cof=FORID%3A9&cx=004599128559784038176%3Avj_p0xo-nng&ie=UTF-8&q=\u0002&sa=Search\u00010", - "fr": "//duckduckgo.com/?q=\u0002+site%3Adoc.ubuntu-fr.org\u00010" - }, - "umentary": "http://documentaryheaven.com/find/?q=\u0002\u00010" - }, - "\u0010": "//www.digitalocean.com/community/search?q=\u0002\u000122", - "e": "http://www.dasoertliche.de/Controller?form_name=search_inv&page=5&context=4&action=43&ph=\u0002\u00010", - "g": { - "\u0010": "http://canigivemydog.com/?s=\u0002 \u00015", - "ob": "http://www.dogobooks.com/search/\u0002\u00010", - "om": "http://www.dogomovies.com/search/\u0002\u00010", - "echain": "http://dogechain.info/address/\u0002\u00010", - "pedia": "http://www.dogpedia.org/?s=\u0002\u00010", - "pile": "http://results.dogpile.com/search/web?q=\u0002&ql=&topSearchSubmit.x=0&topSearchSubmit.y=0&fcoid=417&fcop=topnav&fpid=27&om_nextpage=True\u000118", - "sing": "//dogsing.com/results/?q=\u0002\u00010" - }, - "i": { - "\u0010": "//doi.org/\u0002\u0001350", - "t": "//www.doityourself.com/search?dsp=how-to&psearch=\u0002\u00010" - }, - "m": { - "\u0010": "//developer.mozilla.org/en-US/search?topic=api&q=\u0002\u000115", - "u": "//www.domu.com/chicago/apartment-search2?domu_search=\u0002\u00010", - "w": "http://wiki.dominionstrategy.com/index.php?search=\u0002&go=Go&title=Special%3ASearch\u000116", - "ain": { - "\u0010": "http://www.namecheap.com/domains/domain-name-search/results.aspx?domain=\u0002\u000110", - "r": "//domainr.com/?q=\u0002\u00014", - "dossier": "http://centralops.net/co/DomainDossier.aspx?addr=\u0002&dom_whois=true&dom_dns=true&traceroute=true&net_whois=true&svc_scan=true\u00013", - "sbot": "http://domainsbot.com/?q=\u0002 \u00010" - }, - "ein": "//domeinwinkel.hosting/?domain=\u0002\u00010", - "ize.com": "//domize.com/?q=\u0002\u00010" - }, - "t": { - "a": { - "2": "http://wiki.teamliquid.net/dota2/index.php?search=\u0002\u000198", - "\u0010": "http://dota2.gamepedia.com/index.php?search=\u0002 \u0001173", - "buff": "http://www.dotabuff.com/search?q=\u0002\u000116" - }, - "\u0010": "//www.digitalocean.com/community/tutorials?q=\u0002\u00010", - "tk": "http://my.dot.tk/registration/register?domainname=\u0002\u00010", - "lan": "http://evemaps.dotlan.net/search?q=\u0002\u00010", - "net": { - "\u0010": "//docs.microsoft.com/en-us/search/index?search=\u0002&scope=.NET\u000141", - "api": "//docs.microsoft.com/en-us/dotnet/api/?term=\u0002\u00010" - }, - "what": "http://dotwhat.net/search/\u0002\u00010" - }, - "x": "//www.amdocs.com/search?search=\u0002\u00013", - "ai": "http://doai.io/\u0002\u00010", - "aj": "//www.doaj.org/search?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A%22\u0002%22%2C%22default_operator%22%3A%22AND%22%7D%7D%2C%22from%22%3A0%2C%22size%22%3A10%7D\u00010", - "hp": "//dohp.com/search?q=\u0002\u00010", - "om": { - "\u0010": "http://doomwiki.org/wiki/Special:Search?search=\u0002\u000189", - "sday": "//www.doomsdayprep.com/?s=\u0002&post_type=product\u00010" - }, - "rf": { - "\u0010": "http://dwarffortresswiki.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000129", - "or": "//www.steinberg.net/forums/search.php?keywords=\u0002&fid%5B0%5D=246\u00010" - }, - "wn": { - "d": "//downdetector.co.uk/search/?q=\u0002\u00017", - "\u0010": "//downforeveryoneorjustme.com/\u0002\u00010", - "4me": "//downforeveryoneorjustme.com/\u0002\u00010", - "for": { - "\u0010": "//downforeveryoneorjustme.com/\u0002\u00010", - "me": "//downforeveryoneorjustme.com/\u0002\u00010" - }, - "load": { - "\u0010": "http://download.cnet.com/1770-20_4-0.html?searchtype=downloads&query=\u0002&tg=dl-20&search.x=0&search.y=0&search=+Go%252521\u000115", - "cnet": "http://download.cnet.com/1770-20_4-0.html?query=\u0002&platformSelect=&tag=srch&searchtype=downloads&filterName=platform%3DWindows%2CMobile%2CMac%2CWebware&filter=platform%3DWindows%2CMobile%2CMac%2CWebware\u00010" - }, - "pour": "http://www.downpour.com/catalogsearch/result/?q=\u0002\u00019" - }, - "bber": "//dobberhockey.com/?s=\u0002&orderby=post_date\u00010", - "breknihy": "http://www.dobre-knihy.cz/vyhledavani/?q=\u0002\u00010", - "daxit": "//www.dodax.it/it-it/search/?s=\u0002\u00010", - "fus": "//dofuswiki.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "lphin": "//wiki.dolphin-emu.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00015", - "nedeal": "//www.donedeal.ie/all?words=\u0002\u00010", - "ntstarve": "http://dont-starve-game.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "peclics": "http://www.dopeclics.com/search?q=\u0002\u00010", - "rabara": "http://dorama.akihabara.cz/vyhledavani/\u0002\u00010", - "uban": { - "\u0010": "http://www.douban.com/search?q=\u0002\u000122", - "movie": "//movie.douban.com/subject_search?search_text=\u0002\u00014" - }, - "ubtbox": "//www.doubtbox.online/search/?q=\u0002\u00010", - "uga": "http://en.niconico.sarashi.com/?\u0002\u00010", - "uglas": "//www.douglas.nl/douglas/search.html?query=\u0002&searchType=search&init=true\u00010", - "ugscripts": "http://dougscripts.com/itunes/itinfo/searchform.php?my_srch_term=\u0002\u00010", - "ujinshi": "http://www.doujinshi.org/search/simple/?T=objects&sn=\u0002\u00010", - "ver": "http://search.doverpublications.com/search?keywords=\u0002\u00010" - }, - "p": { - "b": "//derpibooru.org/search?q=\u0002\u000189", - "c": { - "\u0010": "http://dvdpascher.net/recherche/?q=\u0002\u00010", - "s": "//duckduckgo.com/?q=\u0002+site:doc.pcsoft.fr&ia=web\u00010" - }, - "d": { - "\u0010": "http://lema.rae.es/dpd/?key=\u0002\u000115", - "t": "//tracking.dpd.de/cgi-bin/delistrack?typ=1&pknr=\u0002\u00010", - "post": "http://tracking.dpd.de/parcelstatus?query=\u0002&locale=en_DE\u00010" - }, - "\u0010": "http://www.duckduckgo.com/?q=site%3Adlang.org+\u0002\u000120", - "g": "//www.dpg-verhandlungen.de/year/2019/conference/regensburg/search?query=\u0002&submit=Search\u00010", - "i": "http://www.dogpile.com/search/images?q=\u0002\u00010", - "l": { - "a": "http://dp.la/search?utf8=✓&q=\u0002\u00010", - "b": "http://www.dblp.org/search/index.php#query=\u0002\u00010", - "\u0010": "//www.deepl.com/translator#xx/en/\u0002\u00019084", - "g": "http://ilg.usc.es/pronuncia/?pq=&q=\u0002&l=1&c[]=0\u00010", - "docs": "//dpldocs.info/locate?q=\u0002\u000128" - }, - "n": "http://www.dogpile.com/search/news?q=\u0002\u00010", - "r": { - "\u0010": "http://www.dpreview.com/search/?query=\u0002 \u00010", - "eview": "http://www.dpreview.com/search/?query=\u0002&terms=\u0002\u00010" - }, - "t": { - "\u0010": "http://www.dicio.com.br/\u0002\u00010", - "s": "//tracker.debian.org/pkg/\u0002\u0001116", - "br": "http://michaelis.uol.com.br/moderno-portugues/busca/portugues-brasileiro/\u0002\u00010" - }, - "v": "http://www.dogpile.com/search/video?q=\u0002\u00010", - "w": "http://www.dogpile.com/search/web?q=\u0002\u00010", - "kg": "//packages.debian.org/search?keywords=\u0002\u0001607", - "mt": "//anonscm.debian.org/git/python-modules/packages/\u0002.git\u00010", - "ub": "http://pub.dartlang.org/search?q=\u0002\u00010", - "ackages": "//packages.debian.org/search?keywords=\u0002\u0001607", - "olicy": "//www.debian.org/doc/debian-policy \u0002\u00010" - }, - "q": "http://dragon-quest.org/w/index.php?search=\u0002\u000199", - "r": { - "\u0010": "http://dribbble.com/search?q=\u0002\u000126", - "f": "http://www.django-rest-framework.org/?q=\u0002\u00013", - "o": { - "m": "//www.drom.ru/search/?q=\u0002\u00010", - "p": { - "\u0010": "//www.maildrop.cc/inbox/\u0002\u000121", - "box": "//www.dropbox.com/search/personal?query=\u0002\u000120" - }, - "\u0010": "//dsn.dk/?retskriv=\u0002\u00010" - }, - "s": "//docs.rs/\u0002\u0001924", - "w": "http://drw-www.adw.uni-heidelberg.de/drw-cgi/zeige?term=\u0002&index=lemmata\u00010", - "ae": "http://dle.rae.es/srv/fetch?w=\u0002&m=30\u0001160", - "ag": { - "\u0010": "http://academia.gal/dicionario_rag/searchNoun.do?nounTitle=\u0002\u00010", - "ball": "//dragonball.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "cave": "http://dragcave.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "onflyman": "//leaf.dragonflybsd.org/cgi/web-man?command=\u0002\u00010" - }, - "db": { - "a": "http://dr.loudness-war.info/album/list?album=\u0002\u00010", - "\u0010": "http://dr.loudness-war.info/album/list?artist=\u0002\u00010" - }, - "dk": "http://www.dr.dk/search/Result?query=\u0002\u00010", - "ef": "http://dictionary.reference.com/browse/\u0002\u00019", - "eg": "//www.diarioregistrado.com/search?text=\u0002\u00010", - "ly": "http://www.directlyrics.com/search/?q=direct+lyrics&ie=utf-8&q=\u0002\u00010", - "tv": "//www.dr.dk/tv/soeg/\u0002\u00010", - "adio": "http://www.deutschlandradio.de/text-und-audio-suche.287.de.html?search%5Bsubmit%5D=1&search%5Bword%5D=\u0002\u00010", - "aftexpress": "http://www.draftexpress.com/search/term/\u0002\u00010", - "aomai": "//violettacyra.blogspot.com/search/?term=\u0002\u00010", - "argapress": "http://www.drargapress.com/?s=\u0002\u00010", - "axe": "//draxe.com/?s=\u0002\u00010", - "eam": { - "\u0010": "http://dreammoods.com/cgibin/dreamdictionarysearch.pl?method=exact&header=dreamsymbol&search=\u0002\u00010", - "bible": "http://www.dreambible.com/search.php?q=\u0002\u00010", - "careerbuilder": "//www.dreamcareerbuilder.com/findjob.php?keyword=\u0002\u00010", - "incode": "http://www.dreamincode.net/forums/index.php?app=core&module=search§ion=search&do=quick_search&search_app=core&fromsearch=1&search_term=\u0002&search_app=forums\u00010" - }, - "emio": "//community.dremio.com/search?q=\u0002\u00010", - "eye": "//yun.dreye.com/dict_new/dict.php?w=\u0002\u00010", - "ibbble": "http://dribbble.com/search?q=\u0002\u000126", - "ibble": "http://dribbble.com/search?q=\u0002\u000126", - "ill": "http://www.drillsource.com/?s=\u0002\u00010", - "inkify": "http://www.drinkify.org/\u0002\u00010", - "ive": { - "\u0010": "//drive.google.com/drive/search?q=\u0002 \u00012795", - "tribe": "//drivetribe.com/search/\u0002\u00010" - }, - "nerdlove": "http://www.doctornerdlove.com/?s=\u0002\u00010", - "udge": "http://www.drudgereportarchives.com/dsp/search.htm?searchFor=\u0002\u00013", - "ugs": { - "\u0010": "http://www.drugs.com/search.php?&searchterm=\u0002\u000115", - ".com": "//www.drugs.com/search.php?searchterm=\u0002\u00010" - }, - "ugbank": "http://www.drugbank.ca/search?query=\u0002 \u00017", - "upp": "http://drupal.org/project/\u0002\u000112", - "upal": { - "\u0010": "http://drupal.org/search/apachesolr_search/\u0002\u00015", - "api": "//api.drupal.org/api/drupal/includes%21common.inc/function/\u0002/7.x\u00010", - "code": "//cgit.drupalcode.org/\u0002\u00010" - }, - "upmod": "//www.drupal.org/project/project_module/token?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=\u0002&solrsort=iss_project_release_usage+desc&op=Search\u00010" - }, - "s": { - "1": "//darksouls.wiki.fextralife.com/\u0002\u00010", - "a": { - "\u0010": "http://wiki-aventurica.de/wiki/index.php?title=Spezial:Suche&search=\u0002\u00018", - "rw": "http://www.ulisses-regelwiki.de/index.php/suche.html?keywords=\u0002\u00010" - }, - "c": "//screenshots.debian.net/packages?utf8=✓&search=\u0002\u00013", - "d": "http://www.denstoredanske.dk/Special:Opslag?q=\u0002\u00010", - "\u0010": "http://www.standaard.be/zoeken?keyword=\u0002 \u000110", - "n": "//dsn.dk/?retskriv=\u0002&ae=0\u00010", - "r": { - "\u0010": "//www.reddit.com/r/DotA2/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00016", - "t": "//search.disroot.org/?q=\u0002\u00014" - }, - "t": { - "\u0010": "//security-tracker.debian.org/tracker/\u0002\u00010", - "e": "//www.d-seite.de/vis/vis.php?lemma=\u0002\u00010", - "r": "//dontsweattherecipe.com/?s=\u0002\u00010", - "gb": "http://dejure.org/gesetze/StGB/\u0002.html\u00010", - "arve": "http://dont-starve-game.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010" - }, - "v": "http://dsv.su.se/s%C3%B6k?q=\u0002\u00010", - "w": { - "\u0010": "http://darksouls.wikidot.com/search:site/q/\u0002\u00016", - "iki": "//www.datenschutz-wiki.de/index.php?search=\u0002\u00010" - }, - "2w": "http://darksouls2.wikidot.com/search:site/q/\u0002\u00010", - "3w": "http://darksouls3.wikidot.com/search:site/a/p/q/\u0002\u00010", - "bin": "http://snapshot.debian.org/binary/?bin=\u0002\u00010", - "gvo": "//www.datenschutz-wiki.de/index.php?search=\u0002&ns3000=1\u00010", - "mcz": "http://dsmcz.com/prestashop/en/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010", - "mrf": "//www.dsmrf.com/?s=\u0002\u00010", - "ource": "//codesearch.debian.net/search?q=\u0002\u00010", - "pse": "http://dsp.stackexchange.com/search?q=\u0002\u00010", - "src": "http://snapshot.debian.org/package/?src=\u0002\u00010" - }, - "t": { - "c": "http://danstonchat.com/search.html?search= \u0002\u00014", - "\u0010": "//deskthority.net/wiki/index.php?search=\u0002\u00017", - "g": "//www.data.gouv.fr/search/?q=\u0002\u00010", - "n": "http://www.discoverthenetworks.org/search/?q=\u0002&cof=FORID%3A11&cx=013255222075609514560%3Avfcebs4vcuo\u00010", - "r": { - "\u0010": "//tracker.debian.org/pkg/\u0002\u0001116", - "pg": "//www.drivethrurpg.com/browse.php?keywords=\u0002\u000172" - }, - "ag": { - "\u0010": "http://debtags.debian.net/search/?q=\u0002\u00010", - "s": "//www.joindiaspora.com/tags/\u0002\u00010" - }, - "es": "http://translate.reference.com/english/spanish/\u0002/\u00010", - "deals": "http://www.doubletakedeals.com/searchresults?srch=\u0002\u00010", - "hority": "http://deskthority.net/w/index.php?search=\u0002\u00010", - "ube": "//d.tube/#!/s/\u0002\u000113", - "wiki": "//deskthority.net/wiki/\u0002\u00010" - }, - "\u0010": "http://www.thefreedictionary.com/\u0002\u0001835", - "v": { - "b": "//m.dvb.de/de/verbindungsauskunft/verbindungen.do?vaform%5Bstartname%5D=\u0002\u00010", - "\u0010": "http://www.ikonet.com/fr/ledictionnairevisuel/static/qc/searchresults?cx=partner-pub-7156007925185226%3Atd1ipa-ejn8&cof=FORID%3A9&ie=UTF-8&q=\u0002&siteurl=www.ikonet.com%2Ffr%2Fledictionnairevisuel%2F&ref=www.ikonet.com%2Ffr%2Fledictionnairevisuel%2Fstatic%2Fqc%2Fsearchresults%3Fcx%3Dpartner-pub-7156007925185226%253Atd1ipa-ejn8%26cof%3DFORID%253A9%26ie%3DUTF-8%26q%3Dfraise%26siteurl%3Dwww.ikonet.com%252Ffr%252Fledictionnairevisuel%252Fstatic%252Fqc%252Fvisuel%26ref%3D%26ss%3D607j79921j6&ss=648j91840j6\u00010", - "p": "http://www.developpez.com/recherche/?cx=006424388311999799839%3A-31tnf0iuqy&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=Rechercher\u00010", - "r": "http://xboxdvr.com/gamer/\u0002\u00010", - "lp": "http://www.developpez.com/recherche/?q=\u0002&sa.x=-1376&sa.y=-2&cx=006424388311999799839%3A-31tnf0iuqy&cof=FORID%3A9&ie=ISO-8859-1&siteurl=www.developpez.com%2F%3Fq%3Dmicrosoft&ref=&ss=1463j290467j10\u00010", - "247": "http://www.dv247.com/search/0/0/Relevance/Descending/\u0002/1/\u00010", - "dfr": "http://www.dvdfr.com/search/search.php?produit=all&title=\u0002\u00010", - "dupc": "//www.dvdupc.com/find?find=\u0002\u00010" - }, - "w": { - "b": "http://woerterbuchnetz.de/DWB/?lemma=\u0002\u00015", - "d": { - "\u0010": "//www.dwd.de/DE/wetter/warnungen/warnWetter_node.html?ort=\u0002\u00010", - "l": "http://www.dwdl.de/features/suche/?suche=\u0002 \u00010", - "s": "http://www.dwds.de/?qu=\u0002\u000187" - }, - "\u0010": "//wiki.d-addicts.com/index.php?search=\u0002\u00018", - "e": { - "\u0010": "http://www.dw.com/search/es?languageCode=es&item=\u0002\u000134", - "ll": "//www.dwell.com/query/\u0002\u00010" - }, - "w": "http://tardis.wikia.com/wiki/index.php?search=\u0002\u00010", - "ru": "http://dark-world.ru/search/?q=\u0002\u00010", - "arf": "http://dwarffortresswiki.org/index.php?search=\u0002\u000128", - "iki": "//daviswiki.org/_rsearch/?q=\u0002\u00010" - }, - "x": { - "\u0010": "http://www.dx.com/s/\u0002\u00010", - "n": "http://www.dictionary.com/browse/\u0002?s=ts\u000112", - "o": "http://www.dxomark.com/content/search/?SearchText=\u0002 \u00010", - "r": "//dxr.mozilla.org/mozilla-central/search?q=\u0002\u00010" - }, - "z": "//www.deezer.com/search/\u0002\u0001141", - "4u": "http://datasheet4u.com/share_search.php?sWord=\u0002\u00014", - "66": "//d66.nl/?s=\u0002\u00010", - "&d": "//www.dndbeyond.com/search?q=\u0002\u00010", - "&r": "//www.dr.com.tr/search?q=\u0002\u00010", - "ub": { - "\u0010": "http://code.dlang.org/search?q=\u0002\u000112", - "izzle": "http://dubai.dubizzle.com/search/?keywords=\u0002&is_basic_search_widget=1&is_search=1\u00010" - }, - "uc": { - "\u0010": "//find.library.duke.edu/?search_field=all_fields&q=\u0002\u00010", - "x": "http://help.appducx.com/index.php?topic=doc/Search-Result/index_en.htm&q=\u0002\u00010", - "k.co": "//duck.co/search/\u0002\u00013", - "kco": "//duck.co/search/\u0002\u00013", - "kduckgo": "//duckduckgo.com/?q=\u0002\u0001214", - "kgoes": "//duckduckgo.com/?q=\u0002&kp=-1&k5=1&kah=wt-wt&kl=xl-es&kad=es_ES\u00010" - }, - "uk": "//duckduckgo.com/?q=\u0002&kah=uk-en&kl=uk-en&ia=web\u00014", - "ul": { - "\u0010": "http://library.duke.edu/find/all?Ntt=\u0002 \u00010", - "uxdc": "http://www.duluxdecoratorcentre.co.uk/servlet/SiteAdvancedSearchHandler?searchString=\u0002\u00010", - "uxuk": "//www.dulux.co.uk/en/search?s=\u0002\u00010" - }, - "yn": { - "\u0010": "//dynasty-scans.com/search?q=\u0002\u000143", - "amicrange": { - "a": "http://www.dr.loudness-war.info/index.php?search_album=\u0002\u00010", - "\u0010": "http://www.dr.loudness-war.info/index.php?search_artist=\u0002\u00010" - }, - "amite": "http://dynamite.com/htmlfiles/search2.html?0=19&next0=&KMPZ=\u0002\u00010" - }, - "1pkg": "//pkginfo.devuan.org/cgi-bin/d1pkgweb-query?search=\u0002&release=any\u00010", - ".com": "http://dictionary.reference.com/browse/\u0002?s=t\u00015", - "örner": "//buecher-doerner.buchhandlung.de/shop/quickSearch?searchString=\u0002\u00010", - "ualb": "//board.dualthegame.com/index.php?/search/&q=\u0002\u00010", - "uden": "http://www.duden.de/suchen/dudenonline/\u0002\u00011117", - "uet": "//duet3d.dozuki.com/Search?query=\u0002\u00010", - "uedil": "//www.duedil.com/companies/search?query=\u0002&op=Companies\u00010", - "uff": "http://www.dotabuff.com/search?q=\u0002\u000116", - "ummi": { - "\u0010": "http://www.dummies.com/search.html?query=\u0002\u00010", - "es": "//www.dummies.com/?s=\u0002\u00010" - }, - "umpert": "http://www.dumpert.nl/tag/\u0002/\u000118", - "urhg": "//dejure.org/cgi-bin/suche?Suchenach=\u0002\u000130", - "uss": "//kulturkaufhaus.buchhandlung.de/shop/quickSearch?searchString=\u0002\u00010", - "ustin": "//www.dustin.se/search/\u0002\u00013", - "ustloop": "http://www.dustloop.com/wiki/index.php?search=\u0002\u000123", - "uunitori": "//duunitori.fi/tyopaikat/?haku=\u0002\u00010", - "ymocks": "//www.dymocks.com.au/books/?term=\u0002\u00010" - }, - "?": "//duckduckgo.com/?q=\u0002\u0001214", - "e": { - "1": "//www.e1.ru/news/search/?search=\u0002\u00010", - "2": { - "c": "//translate.google.com/#en/cs/\u0002\u000112", - "\u0010": "http://everything2.com/title/\u0002?searchy=search\u00016", - "u": "//e2u.org.ua/s?w=\u0002&dicts=all&highlight=on\u00010" - }, - "b": { - "c": { - "a": "//www.ebay.ca/sch/items/?_nkw=\u0002\u000195", - "\u0010": "//www.ebay.ca/sch/\u0002\u00017", - "h": "//www.ebay.ch/sch/items/?_nkw=\u0002\u00010" - }, - "d": { - "\u0010": "http://www.eatbydate.com/search/?q=\u0002\u00010", - "e": "//www.ebay.de/sch/items/?_nkw=\u0002\u0001334" - }, - "\u0010": "//www.ebay.com/sch/items/?_nkw=\u0002\u00015790", - "e": { - "\u0010": "//www.befr.ebay.be/sch/items/?_nkw=\u0002\u000111", - "s": "//www.ebay.es/sch/items/?_nkw=\u0002\u000154", - "rt": "//www.rogerebert.com/search?utf8=%E2%9C%93&q=\u0002\u000112" - }, - "g": { - "\u0010": "//ebgames.com.au/any/any?q=\u0002\u00010", - "r": "http://search.eim.ebay.gr/?kw=\u0002\u00010", - "amesca": "//www.ebgames.ca/SearchResult/QuickSearch?q=\u0002\u00010", - "amesaustralia": "//www.ebgames.com.au/any/any?q=\u0002\u00010" - }, - "i": { - "e": "//www.ebay.ie/sch/items/?_nkw=\u0002\u000132", - "\u0010": "//www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=\u0002&requestFrom=duckduckgo\u00010", - "n": "http://shop.ebay.in/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "t": "//www.ebay.it/sch/items/?_nkw=\u0002\u000147" - }, - "at": { - "\u0010": "//www.ebay.at/sch/i.html?_nkw=\u0002\u00010", - "es": { - "\u0010": "http://www.ebates.com/search/all.htm?query=\u0002&position=submit&type=suggest&store_name=\u0002\u00010", - "ca": "//www.ebates.ca/srch/all?query=\u0002\u00010" - } - }, - "au": "//www.ebay.com.au/sch/items/?_nkw=\u0002\u0001103", - "ay": { - "\u0010": "//www.ebay.com/sch/items/?_nkw=\u0002\u00015790", - "at": "//www.ebay.at/sch/items/?_nkw=\u0002\u00010", - "au": "//www.ebay.com.au/sch/items/?_nkw=\u0002\u0001103", - "be": "//www.befr.ebay.be/sch/items/?_nkw=\u0002\u000111", - "ca": "//www.ebay.ca/sch/items/?_nkw=\u0002\u000195", - "ch": "//www.ebay.ch/sch/items/?_nkw=\u0002\u00010", - "de": "//www.ebay.de/sch/items/?_nkw=\u0002\u0001334", - "es": "//www.ebay.es/sch/items/?_nkw=\u0002\u000154", - "fr": "//www.ebay.fr/sch/items/?_nkw=\u0002\u000160", - "gr": "http://search.eim.ebay.gr/?kw=\u0002\u00010", - "hk": "http://shop.ebay.com.hk/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "ie": "//www.ebay.ie/sch/items/?_nkw=\u0002\u000132", - "in": "http://shop.ebay.in/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "it": "//www.ebay.it/sch/items/?_nkw=\u0002\u000147", - "my": "http://shop.ebay.com.my/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "nl": "//www.ebay.nl/sch/items/?_nkw=\u0002\u00013", - "ph": "http://shop.ebay.ph/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "pl": "http://shop.ebay.pl/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "sg": "http://shop.ebay.com.sg/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "uk": "//www.ebay.co.uk/sch/items/?_nkw=\u0002\u0001563", - "kleinanzeigen": "//www.ebay-kleinanzeigen.de/s-\u0002/k0\u000136" - }, - "be": "//www.befr.ebay.be/sch/items/?_nkw=\u0002\u000111", - "fr": "//www.ebay.fr/sch/items/?_nkw=\u0002\u000160", - "hk": "http://shop.ebay.com.hk/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "my": "http://shop.ebay.com.my/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "nl": "//www.ebay.nl/sch/items/?_nkw=\u0002\u00013", - "ph": "http://shop.ebay.ph/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "pl": "http://shop.ebay.pl/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "sg": "http://shop.ebay.com.sg/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "th": "//www.ebth.com/search?q=\u0002\u00010", - "uk": { - "\u0010": "//www.ebay.co.uk/sch/items/?_nkw=\u0002\u0001563", - "aokoriesblog": "//ebukaokorie.blogspot.com/search?q=\u0002\u00010" - }, - "ooki": "//ebooki.swiatczytnikow.pl/szukaj/\u0002\u00010", - "ooko": "//booko.com.au/products/search?product_type=3&q=\u0002\u00010", - "ookde": "//www.ebook.de/de/quickSearch?searchString=\u0002\u00010", - "rary": "http://site.ebrary.com/lib/alltitles/search.action?p00=\u0002 \u00010", - "rit": "//www.britannica.com/search?query=\u0002\u000116", - "seller": "http://www.ebay.com/sch/\u0002/m.html\u00010", - "sold": "//ebay.com/sch/i.html?isRefine=true&_nkw=\u0002&LH_Sold=1\u00017", - "uild": { - "\u0010": "http://gpo.zugaina.org/Search?search=\u0002\u00018", - "s": "http://gpo.zugaina.org/Search?search=\u0002\u00018" - }, - "uyer": "//www.ebuyer.com/search?q=\u0002\u00010", - "yrec": "//www.ebay.com/sch/176985/i.html?_nkw=\u0002\u00010" - }, - "c": { - "a": "//www.ebay.ca/sch/items/?_nkw=\u0002\u000195", - "\u0010": "http://www.ecosia.org/search?q=\u0002\u0001345", - "h": "//www.ebay.ch/sch/items/?_nkw=\u0002\u00010", - "i": { - "a": "http://www.eciaauthorized.com/search?pn=\u0002\u00010", - "\u0010": "http://www.elcorteingles.es/search?s=\u0002\u00010", - "m": "//www.ecosia.org/images?q=\u0002\u00013" - }, - "o": { - "b": "//www.ecobookstore.de/shop/quickSearch?searchString=\u0002\u00010", - "\u0010": "//www.ecosia.org/search?q=\u0002\u0001382", - "m": { - "\u0010": "//community.e-spirit.com/search.jspa?peopleEnabled=true&userID=&containerType=&container=&spotlight=true&q=\u0002\u00010", - "es": "//ecomes.org/?s=\u0002\u00010" - }, - "lo": "http://www.ecolo.be/spip.php?recherche=\u0002&page=recherche\u00010", - "dices": "http://www.e-codices.unifr.ch/en/search/all?sQueryString=\u0002\u00010", - "lab": "http://www.ecolab.com/search/#q=\u0002&sort=relevancy\u00010", - "le-club": "//www.ecole-club.ch/Cours/recherche@\u0002\u00010", - "nbiz": "http://www.econbiz.de/Search/Results?lookfor=\u0002&type=AllFields&submit=Suchen\u00010", - "nlib": "http://econlib.org/cgi-bin/fullsearch.pl?query=\u0002\u00010", - "nomist": "//www.economist.com/search?q=\u0002\u00013", - "shopper": "http://www.ecoshopper.de/ecoshopper2/faces/SuchErgebnis.jsp?query=\u0002&brancheDropDown=alle&preisspanneDropDown=0&_charset_=UTF-8&suchen=Suchen&searchrange=namen\u00010", - "sia": "//www.ecosia.org/search?q=\u0002\u0001382", - "timesindia": "//economictimes.indiatimes.com/topic/\u0002\u00010", - "wiki": "//eco.gamepedia.com/index.php?search=\u0002&title=Special:Search\u00010" - }, - "s": "//secure.ecs.soton.ac.uk/kb/search/?q=\u0002&s=1\u00010", - "li": { - "\u0010": "http://curia.europa.eu/juris/liste.jsf?critereEcli=\u0002\u000134", - "psewiki": "//wiki.eclipse.org/index.php?search=\u0002&fulltext=search\u00010" - }, - "cpd": "http://www.encyclo.nl/zoek.php?woord=\u0002\u00010", - "lair": "http://eclair.md/search?type=product&q=\u0002\u00010", - "uavisa": "//www.ecuavisa.com/busqueda?search_api_views_fulltext=\u0002\u00010" - }, - "d": { - "b": { - "c": "//www.exploit-db.com/search/?action=search&text=\u0002\u00013", - "\u0010": "//www.exploit-db.com/search/?action=search&description=\u0002\u00016", - "priser": "http://www.edbpriser.dk/Search/General.aspx?q=\u0002}\u00010" - }, - "c": "http://everydaycarry.com/search\u0002\u00010", - "e": "//www.ebay.de/sch/items/?_nkw=\u0002\u0001334", - "\u0010": "//encyclopediadramatica.rs/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000110", - "f": { - "\u0010": "//forums.frontier.co.uk/search.php?do=process&query=\u0002\u00010", - "eminism": "http://everydayfeminism.com/?s=\u0002\u00010" - }, - "h": { - "\u0010": "//www.elsalvador.com/search?s=\u0002\u00010", - "rec": "//edhrec.com/cards/\u0002\u000132" - }, - "m": { - "\u0010": "http://edmofy.com/?s=\u0002\u00010", - "o": { - "\u0010": "//new.edmodo.com/search?q=\u0002\u00010", - "do": "//spotlight.edmodo.com/Browse?search=true&q=\u0002\u00010" - }, - "sauce": "//www.edmsauce.com/?s=\u0002\u00010" - }, - "w": { - "\u0010": "http://elite-dangerous.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00018", - "eb": "http://www.eldestapeweb.com/\u0002-s\u00010", - "eek": "http://www.edweek.org/search.html?q=\u0002\u00010" - }, - "x": "//www.edx.org/course?search_query=\u0002\u00010", - "ut": { - "\u0010": "http://edutin.com/cursos/buscar/\u0002\u00010", - "alk": "//edutalk.id/?s=\u0002\u00010" - }, - "diebauer": "//www.eddiebauer.com/search/a-search.jsp?sTerm=\u0002\u00010", - "gar": { - "\u0010": "http://www.sec.gov/cgi-bin/browse-edgar?company=\u0002&CIK=&filenum=&State=&SIC=&owner=include&action=getcompany\u00010", - "t": "http://www.sec.gov/cgi-bin/browse-edgar?company=&match=&CIK=\u0002&filenum=&State=&Country=&SIC=&owner=exclude&Find=Find+Companies&action=getcompany\u00010" - }, - "inburgh": "http://www.edinburgh.gov.uk/site/scripts/google_results.php?q=\u0002\u00010", - "itus": "http://www.editus.lu/ed/fr/recherche.html?q=\u0002\u00010", - "panama": "//eldigitalpanama.com/?s=\u0002\u00010", - "ucalingofr": "//educalingo.com/fr/dic-fr/\u0002\u00010" - }, - "\u0010": "//www.ebay.com/sch/items/?_nkw=\u0002\u00015790", - "e": { - "\u0010": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Fellislab.com%2Fforums%2F+\u0002\u00010", - "s": "//www.ebay.es/sch/items/?_nkw=\u0002\u000154", - "cms": "//docs.expressionengine.com/search/latest/?q=\u0002\u00010", - "ggs": "http://www.eeggs.com/php/search.php?cx=partner-pub-3374430587172271%3Aqa6js0-hxxa&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&siteurl=www.eeggs.com/&ref=\u00010" - }, - "g": { - "\u0010": "http://duckduckgo.com/?q=\u0002+site:epguides.com\u00015", - "o": "//extensions.gnome.org/#search=\u0002\u00015", - "r": "http://search.eim.ebay.gr/?kw=\u0002\u00010", - "s": "//www.epicgames.com/store/en-US/store-search?q=\u0002\u000127", - "t": "http://www.engadget.com/search/?q=\u0002\u000138", - "dl": "http://diglib.eg.org/discover?query=\u0002&submit=Go\u00010", - "ear": "//e-gear.se/catalogsearch/result/?q=\u0002\u00010", - "forums": "http://duckduckgo.com/?q=site:eurogamer.net/forums+\u0002\u00010", - "ged": "http://mslworld.egged.co.il/?state=3&language=he&freelang=\u0002&width=1280#/search\u00010", - "ghead": "//egghead.io/search?q=\u0002\u00010", - "gtimer": "http://e.ggtimer.com/\u0002 \u000112", - "uias": "//www.eliteguias.com/buscar.php?q=\u0002\u00010" - }, - "h": { - "\u0010": "//www.english-heritage.org.uk/search?searchTerm=\u0002\u00010", - "k": "http://shop.ebay.com.hk/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "u": "http://www.evonyhookups.info/?s=\u0002\u00010", - "ow": "http://www.ehow.com/search.html?s=\u0002\u00010" - }, - "i": { - "c": "//eic.rsc.org/searchresults?qkeyword=\u0002\u00010", - "\u0010": "//www.ecosia.org/images?q=\u0002\u00013", - "e": "//www.ebay.ie/sch/items/?_nkw=\u0002\u000132", - "n": "http://shop.ebay.in/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "r": "http://www.iranicaonline.org/articles/search/keywords:\u0002\u00010", - "t": "//www.ebay.it/sch/items/?_nkw=\u0002\u000147", - "ps": "//github.com/ethereum/EIPs/issues?utf8=✓&q=\u0002\u00010", - "jirou": "//eow.alc.co.jp/search?q=\u0002\u00013" - }, - "j": { - "\u0010": "http://www.tanoshiijapanese.com/dictionary/index.cfm?j=&e=\u0002&search=Search+%3E\u00010", - "w": "//econjwatch.org/search/?m=all&q=\u0002\u00010", - "mr": "//duckduckgo.com/?q=\u0002+site%3Aeconjobrumors.com\u000114", - "oy": "//ejoy-english.com/go/wordhunt?word=\u0002\u00010", - "umbo": "http://www.e-jumbo.gr/pages/searchProducts.aspx?lang=el&search-for=\u0002\u00010" - }, - "k": { - "a": { - "c": "//www.ebay-kleinanzeigen.de/s-aachen/\u0002/k0l1921\u000113", - "\u0010": "//www.ebay-kleinanzeigen.de/s-\u0002/k0\u000136" - }, - "b": "http://kleinanzeigen.ebay.de/anzeigen/s-berlin/\u0002/k0l3331\u000124", - "\u0010": "http://www.elektronik-kompendium.de/service/suchen/index.htm?domains=www.elektronik-kompendium.de&sitesearch=www.elektronik-kompendium.de&q=\u0002&sa=Suchen&client=pub-7453653573550802&forid=1&channel=3122011476&ie=ISO-8859-1&oe=ISO-8859-1&flav=0000&sig=XvZoofyEi29r3eL9&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23FFFFFF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BFORID%3A11&hl=de\u0001251", - "h": { - "\u0010": "//www.ebay-kleinanzeigen.de/s-hamburg/\u0002/k0l9409\u00010", - "r": "//www.ebay-kleinanzeigen.de/s-hannover/\u0002/k0l3155\u00010" - }, - "k": "//www.ebay-kleinanzeigen.de/s-koeln/\u0002/k0l945\u00019", - "l": "//www.ebay-kleinanzeigen.de/s-leipzig/\u0002/k0l4233\u000156", - "m": "//www.ebay-kleinanzeigen.de/s-muenchen/\u0002/k0l6411\u00013", - "şi": "//eksisozluk.com/?q=\u0002\u00010", - "si": { - "\u0010": "//eksisozluk.com/?q=\u0002\u00010", - "sozluk": "http://www.eksisozluk.com/show.asp?t=\u0002\u00010" - }, - "ss": "http://www.eki.ee/dict/ekss/index.cgi?Q=\u0002&F=M\u00015", - "wb": "//www.ekwb.com/shop/catalogsearch/result/?q=\u0002\u00010", - "spress": "http://ekspress.delfi.ee/otsing/?query=\u0002\u00010" - }, - "m": { - "a": { - "\u0010": "http://www.ema.europa.eu/ema/index.jsp?curl=pages%2Fincludes%2Fmedicines%2Fmedicines_landing_page.jsp&searchkwByEnter=true&quickSearch=\u0002\u00010", - "g": { - "\u0010": "//www.emag.ro/search/\u0002\u000145", - "bg": "//www.emag.bg/search/\u0002?ref=effective_search\u00010" - }, - "cs": { - "\u0010": "//duckduckgo.com/?q=site:emacswiki.org+\u0002\u000114", - "wiki": "//duckduckgo.com/?q=site:emacswiki.org+\u0002\u000114" - }, - "cu": "//emaculation.com/doku.php/mac_emulation?do=search&id=mac_emulation&q=\u0002\u00010" - }, - "c": "//www.medicines.org.uk/emc/search?q= \u0002\u00010", - "\u0010": "http://motors.shop.ebay.com/eBay-Motors-/6000/i.html?_nkw=\u0002&_trksid=p2050885.m570.l1313&_rdc=1\u00010", - "o": { - "\u0010": "http://www.emotiyou.com/search/\u0002\u00015", - "ji": { - "\u0010": "//emojipedia.org/search/?q=\u0002\u0001521", - "cons": "http://emojicons.com/tag/\u0002\u00010", - "pedia": "http://emojipedia.org/?s=\u0002\u000136" - }, - "neyge": "//www.emoney.ge/index.php/main/services?search_query=\u0002\u00010" - }, - "p": { - "\u0010": "http://www.emp.de/search/\u0002/\u00010", - "ik": "http://www.empik.com/szukaj/produkt?q=\u0002\u00010", - "ire": "http://www.empireonline.com/search/default.asp?search=\u0002\u00010", - "loi": { - "\u0010": "//www.jobillico.com/recherche-emploi?skwd=\u0002\u00010", - "s": { - "\u0010": "//www.jobillico.com/recherche-emploi/0?skwd=\u0002&scty=&icty=0&ipc=0&sil=&sjdpl=&sdl=&imc1=0&imc2=0&flat=0&flng=0&mfil=40&ipg=1&clr=1\u00010", - "mtl": "//www.jobillico.com/recherche-emploi?skwd=\u0002&scty=Montr%C3%A9al%2C%20QC&icty=6185&ipc=0&sil=&sjdpl=&sdl=&imc1=0&imc2=0&flat=45.509828&flng=-73.6715&mfil=byCity&ipg=1&clr=1\u00010" - } - }, - "regosaqui": "//www.empregosaqui.com.br/?s=\u0002\u00010" - }, - "u": { - "\u0010": "http://emulation.gametechwiki.com/index.php?search=\u0002\u000119", - "sic": "//www.emusic.com/search/\u0002\u00010" - }, - "y": "http://shop.ebay.com.my/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "ber": "//duckduckgo.com/?q=\u0002+site%3Ahttps%3A%2F%2Fapi.emberjs.com\u00010", - "edicine": "http://search.medscape.com/reference-search?newSearchHeader=1&queryText=\u0002\u00010", - "erge": "//packages.gentoo.org/packages/search?q=\u0002\u0001110", - "ich": "//www.emich.edu/search/?q=\u0002\u00010" - }, - "n": { - "c": { - "\u0010": "http://www.encyclo.nl/begrip/\u0002\u00010", - "y": { - "c": { - "\u0010": "http://encyc.org/wiki/\u0002\u00010", - "lo": { - "\u0010": "http://www.encyclo.nl/begrip/\u0002\u00010", - "pedia": { - "\u0010": "http://en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "ofmath": "http://www.encyclopediaofmath.org/index.php?title=Special:Search&search=\u0002\u00010" - } - } - }, - "\u0010": "//translate.google.com/#en/cy/\u0002\u00010" - }, - "om": "http://www.encyclopedia.com/searchresults.aspx?q=\u0002\u00010", - "ode": "//www.encodeproject.org/search/?searchTerm=\u0002\u00013", - "rypt": "//www.searchencrypt.com/search?eq=\u0002\u000112" - }, - "\u0010": "http://english.stackexchange.com/search?q=\u0002\u000132", - "l": { - "\u0010": "//www.ebay.nl/sch/items/?_nkw=\u0002\u00013", - "t": "http://translate.google.com/#en/lt/\u0002\u000136", - "at": "http://latin-dictionary.net/search/english/\u0002\u00010" - }, - "s": { - "\u0010": "http://www.ensembl.org/Multi/psychic?q=\u0002\u00010", - "l": "http://translate.google.com/#en/sl/\u0002\u00010", - "v": "//translate.google.com/#en/sv/\u0002\u000112", - "dcl": "http://encore.sdcl.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng&suite=def\u00010", - "embl": "http://www.ensembl.org/Multi/Search/Results?q=\u0002;site=ensembl\u00018", - "tex": "//english.stackexchange.com/search?q=\u0002\u00010" - }, - "ar": "//translate.google.com/#view=home&op=translate&sl=en&tl=ar&text=\u0002\u000142", - "bn": "http://www.english-bangla.com/dictionary/\u0002\u00010", - "br": "//translate.google.com/#en/pt/\u0002\u000110", - "da": "//translate.google.com/#en/da/\u0002\u00010", - "de": "//translate.google.com/#en/de/\u0002\u000192", - "el": "http://translate.google.com/#en/el/\u0002\u00010", - "es": "http://translate.google.com/#en/es/\u0002\u0001314", - "fi": "http://translate.google.com/#en/fi/\u0002\u000169", - "fr": "//translate.google.com/#en/fr/\u0002\u000168", - "he": "//translate.google.com/#en/iw/\u0002\u000126", - "hu": "http://translate.google.com/#en/hu/\u0002\u000118", - "id": "//translate.google.com/translate#en/id/\u0002\u00010", - "ig": { - "\u0010": "http://enigma.huma-num.fr/index.php?q=1&w=\u0002\u00013", - "ma": "http://enigma.huma-num.fr/index.php?q=1&w=\u0002\u00013" - }, - "it": "http://translate.google.com/#en/it/\u0002 \u000161", - "kr": "//translate.google.com/#en/ko/\u0002\u00010", - "mu": "http://www.enmu.edu/search?q=\u0002\u00010", - "nl": "//translate.google.com/#en/nl/\u0002\u00013", - "no": "//translate.google.com/#view=home&op=translate&sl=en&tl=no&text=\u0002\u000111", - "oj": "//ojibwe.lib.umn.edu/search?utf8=%E2%9C%93&q=\u0002&commit=Search&type=english\u00010", - "pl": "//translate.google.com/#en/pl/\u0002\u000162", - "pt": "http://translate.google.com/#en/pt/\u0002 \u0001177", - "ru": "http://translate.google.com/#en/ru/\u0002\u0001219", - "th": "//translate.google.com/#en/th/\u0002\u00010", - "tr": { - "\u0010": "//translate.google.com/#en/tr/\u0002 \u000130", - "ez": "http://www.ncbi.nlm.nih.gov/sites/gquery?term=\u0002\u00010", - "ance": "//entranceadda.in/?s=\u0002\u00010" - }, - "um": "http://enumquery.com/lookup?e164=\u0002\u00010", - "wn": "//en.wikinews.org/w/index.php?search=\u0002\u00010", - "2ar": "//translate.google.com/#en/ar/\u0002\u000112", - "2da": "//translate.google.com/#en/da/\u0002\u00010", - "2de": "//translate.google.com/#view=home&op=translate&sl=en&tl=de&text=\u0002\u000126", - "2el": "//translate.google.gr/#en/el/\u0002\u00010", - "2fa": "//translate.google.com/#en/fa/\u0002\u000131", - "2fr": "//translate.google.com/#en/fr/\u0002\u000168", - "2hi": "//translate.google.com/#view=home&op=translate&sl=en&tl=hi&text=\u0002\u000121", - "2nl": "//translate.google.com/#en/nl/\u0002\u00013", - "2ru": "//translate.google.com/?#view=home&op=translate&sl=en&tl=ru&text=\u0002\u000114", - "2tl": "//translate.google.com/#view=home&op=translate&sl=en&tl=tl&text=\u0002\u00010", - "2ua": "//translate.google.com/?source=osdd#view=home&op=translate&sl=auto&tl=uk&text=\u0002\u00010", - "2zh": "//translate.google.com/#en/zh-CN/\u0002\u00010", - "dic": "http://endic.naver.com/search.nhn?sLn=en&isOnlyViewEE=N&query=\u0002\u0001119", - "dlessphere": "http://endless-sphere.com/forums/?q \u0002 \u00010", - "dole": "http://www.endole.co.uk/search/?search=\u0002\u00010", - "ergystar": "http://essearch.energystar.gov/search?query=\u0002&affiliate=www.energystar.gov\u00010", - "ews": "//www.eternitynews.com.au/?s=\u0002\u00010", - "foc": "http://www.focloir.ie/en/dictionary/ei/\u0002?advSearch=1&q=\u0002&inlanguage=en\u00010", - "gadget": "//www.engadget.com/search/?search-terms=\u0002\u00010", - "gadin": "//www.engadin.stmoritz.ch/suche/q.\u0002/\u00010", - "ges": "http://es.engadget.com/search/?q=\u0002\u00010", - "gfor": "//www.englishforums.com/search/\u0002.htm\u00010", - "ggramm": "//www.englishgrammar.org/?s=\u0002\u00010", - "gineering360": "http://www.globalspec.com/search/all?query=\u0002\u00010", - "grish": "http://www.engrish.com/?s=\u0002\u00010", - "gtb": "//cse.google.com/cse?cx=partner-pub-3176996020956223:6582549258&q=\u0002&og=_l=partner-generic.3...19628.24-generic..0.0.0.\u00010", - "gtips": "http://www.eng-tips.com/search.cfm?q=\u0002&action=search\u00010", - "iro": "http://gulasidorna.eniro.se/hitta:\u0002\u00010", - "kcwiki": "http://en.kancollewiki.net/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "-sutsis": "http://mw.lojban.org/extensions/ilmentufa/i/en/#sisku/http://mw.lojban.org/extensions/ilmentufa/i/en/#sisku/\u0002\u00010", - "tearth": "//www.entertainmentearth.com/s/?query1=\u0002\u00010", - "tireweb": "http://entireweb.com/?q=\u0002\u00013", - "vatomarkettheme": "//themeforest.net/search?term=\u0002\u00010" - }, - "o": { - "l": "http://eol.org/search?q=\u0002&search=Go\u00010", - "m": "http://www.encyclopediaofmath.org/index.php?title=Special:Search&search=\u0002\u00010", - "\u0010": "http://www.etymonline.com/index.php?search=\u0002\u000198", - "p": "http://eune.op.gg/summoner/userName=\u0002\u00010", - "r": { - "\u0010": "//eu.finalfantasyxiv.com/lodestone/playguide/db/search/?q=\u0002\u00010", - "de": "//de.finalfantasyxiv.com/lodestone/playguide/db/search/?q=\u0002\u00010", - "fr": "//fr.finalfantasyxiv.com/lodestone/playguide/db/search/?q=\u0002\u00010" - }, - "s": "//www.eosdigitaal.nl/forum/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sk=t&sd=d&sr=posts&st=0&ch=300&t=0&submit=Zoeken\u00010", - "w": "http://eowp.alc.co.jp/search?q=\u0002\u000160", - "en": "//translate.google.com/#eo/en/\u0002\u00010", - "2en": "//glosbe.com/eo/en/\u0002\u00010", - "earth": "http://www.eoearth.org/results/all/?searchnext=true&q=\u0002\u00010" - }, - "p": { - "a": "http://nlquery.epa.gov/epasearch/epasearch?querytext=\u0002&fld=&areaname=&typeofsearch=epa&areacontacts=http%3A%2F%2Fwww.epa.gov%2Fepahome%2Fcomments.htm&areasearchurl=&result_template=epafiles_default.xsl&filter=sample4filt.hts&x=0&y=0\u00010", - "d": "//www.episodate.com/search?q=\u0002\u00010", - "\u0010": "//everipedia.org/wiki/\u0002\u00010", - "g": "//duckduckgo.com/?q=site%3Aepguides.com+\u0002\u000113", - "h": "http://shop.ebay.ph/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "l": { - "\u0010": "http://shop.ebay.pl/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "ibrary": "http://ccs.polarislibrary.com/polaris/search/searchresults.aspx?ctx=19.1033.0.0.2&type=Keyword&term=\u0002&by=KW&sort=PD&limit=TOM=*&query=&page=0&searchid=1\u00010" - }, - "w": { - "\u0010": "http://www.episodeworld.com/search/?searchitem=\u0002\u00010", - "in": "http://www.epw.in/search/site/\u0002\u00010" - }, - "fl": { - "\u0010": "http://search.epfl.ch/web.action?q=\u0002\u00010", - "p": "http://plan.epfl.ch/?room=\u0002\u00010", - "bib": "//beast-epfl.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=EPFL&lang=en_US&offset=0\u00010", - "book": "//beast-epfl.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=EPFL&lang=fr_FR&offset=0&fn=search\u00010", - "dir": "//search.epfl.ch/psearch.action?q=\u0002&f=directory&lang=en&pageSize=10&sort=\u00010" - }, - "ic": { - "\u0010": "//www.epicgames.com/bing-search?keyword=\u0002\u000152", - "g": "//galaxy.epic.com/?#Search/version=8200&searchWord=\u0002&lastUpdate=\u00010", - "mafia": "http://wiki.epicmafia.com/index.php?title=Special%3ASearch&search=\u0002\u00010", - "urious": "http://www.epicurious.com/tools/searchresults?search=\u0002&x=0&y=0\u00010" - }, - "mc": "http://europepmc.org/search?query=\u0002\u00013", - "pl": "//elpasopl.ent.sirsi.net/client/en_US/default/search/results?ln=en_US&q=\u0002\u00010", - "sg": "http://spatialreference.org/ref/?search=epsg:\u0002\u00010", - "och": "//www.unixtimeconverter.io//\u0002\u00019", - "oreg": "//register.epo.org/smartSearch?searchMode=smart&query=\u0002\u00010", - "riceit": "http://www.eprice.it/search/qs=\u0002&mets=\u0002\u00010" - }, - "r": { - "\u0010": "//www.erowid.org/search.php?q=\u0002\u00016", - "f": "http://www.erf.de/?node=1097&page=1&NAV_CatSelect=0&NAV_MetaSuchtext=\u0002\u00010", - "l": { - "\u0010": "http://erlang.org/doc/search/?q=\u0002\u00010", - "m": "http://erlang.org/doc/man/\u0002.html\u00015", - "ang": "//duckduckgo.com/?q=site%3Aerlang.org+\u0002\u000116" - }, - "ic": "//eric.ed.gov/?q=\u0002\u00013", - "oexp": "//www.erowid.org/experiences/exp.cgi?S1=0&S2=-1&C1=-1&Str=\u0002\u00010", - "owid": "//www.erowid.org/search.php?q=\u0002\u00016", - "ste": "//www.daserste.de/search/index.jsp?searchText=\u0002\u00010" - }, - "s": { - "1": "//www.ethnicsmart.com/catalogsearch/result/?q=\u0002\u00010", - "\u0010": "//duckduckgo.com/?q=\u0002&kl=xl-es&kad=es_ES&ia=about\u000113", - "g": "http://shop.ebay.com.sg/?_nkw=\u0002&_sacat=See-All-Categories\u00010", - "h": { - "\u0010": "//explainshell.com/explain?cmd=\u0002\u00010", - "u": "//translate.google.hu/#es/hu/\u0002\u00010", - "ell": "//explainshell.com/explain?cmd=\u0002\u00010", - "opuk": "//www.nintendo.co.uk/Search/Search-299117.html?q=\u0002\u00010" - }, - "o": { - "\u0010": "http://esolangs.org/w/index.php?search=\u0002&title=Special%3ASearch\u00019", - "lang": "http://esolangs.org/w/index.php?search=\u0002\u00016", - "talk": "//esotalk.net/#search:\u0002\u00010" - }, - "t": { - "\u0010": "http://emacs.stackexchange.com/search?q=\u0002\u00010", - "adao": "//busca.estadao.com.br/?q=\u0002\u00010", - "antevirtual": "//www.estantevirtual.com.br/busca?utf8=✓&type=q&new=&q=\u0002\u00010", - "raviz": "//estraviz.org/\u0002\u00014" - }, - "v": { - "\u0010": "http://www.esvbible.org/search/?q=\u0002\u0001117", - "online": "http://www.esvonline.org/search/\u0002/\u00016" - }, - "de": { - "f": "http://www.wordreference.com/definicion/\u0002\u00014", - "\u0010": "//translate.google.de/#view=home&op=translate&sl=es&tl=de&text=\u0002\u00010" - }, - "ea": "http://play.esea.net/index.php?s=search&query=\u0002\u00010", - "en": "http://translate.google.com/#es/en/\u0002\u0001185", - "et": "http://support.eset.com/search/?search=\u0002\u00010", - "fr": "http://translate.google.com/#es/fr/\u0002\u00014", - "it": "http://translate.google.com/#es/it/\u0002\u00010", - "k8": "//www.electric-skateboard.builders/search?q=\u0002\u00010", - "pn": "http://www.espn.com/search/results?q=\u0002\u0001318", - "pt": "//translate.google.com/#es/pt/\u0002\u00010", - "rb": "http://www.esrb.org/ratings/search.jsp?titleOrPublisher=\u0002\u00014", - "se": { - "\u0010": "//physics.stackexchange.com/search?q=\u0002\u00010", - "fn": "http://www.essef.be/ndl/cataloog/index.search.asp?zoek=\u0002\u00010", - "ffr": "http://www.essef.be/fr/cataloog/index.search.asp?zoek=\u0002 \u00010" - }, - "cape": "http://rsagames.com/?s=\u0002\u00010", - "doc": "//doc.esdoc.org/-/search.html?keyword=\u0002\u00010", - "lexicon": "http://lexicoon.org/es/\u0002\u00010", - "lint": "http://eslint.org/docs/rules/\u0002\u00013", - "pacenet": "//worldwide.espacenet.com/searchResults?ST=singleline&query=\u0002&Submit=Search\u000150", - "pcod": "http://cod.esportspedia.com/w/index.php?search=\u0002\u00010", - "phalo": "http://halo.esportspedia.com/w/index.php?search=\u0002\u00010", - "plol": "http://lol.esportspedia.com/w/index.php?search=\u0002\u00010", - "psmite": "http://smite.esportspedia.com/w/index.php?search=\u0002\u00010", - "sin": "http://www.wordreference.com/sinonimos/\u0002\u00010" - }, - "t": { - "c": "//www.etcconnect.com/Search.aspx?q=\u0002\u00010", - "\u0010": "http://www.eltiempo.es/buscar?q=\u0002\u000116", - "g": "http://enterthegungeon.gamepedia.com/index.php?search=\u0002\u000133", - "h": { - "\u0010": "//etherscan.io/search?q=\u0002\u000113", - "l": "//search.library.ethz.ch/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=DADS&lang=en_US&offset=0\u00010", - "z": "//www.ethz.ch/en/utils/search.html?search=\u0002\u00010", - "erscan": "//etherscan.io/search?q=\u0002\u000113", - "nologue": "http://www.ethnologue.com/search?keys=\u0002\u00010", - "rev": "//ethicalrevolution.co.uk/?s=\u0002\u00010" - }, - "w": "http://www.eattheweeds.com/?s=\u0002\u00010", - "y": { - "m": { - "\u0010": "//www.etymonline.com/search?q=\u0002\u0001310", - "o": { - "\u0010": "http://www.etymonline.com/index.php?term=\u0002\u000123", - "logy": "http://www.etymonline.com/index.php?search=\u0002&searchmode=none\u000154", - "nline": "//www.etymonline.com/search?q=\u0002\u0001310" - } - }, - "\u0010": "http://www.etymonline.com/index.php?allowed_in_frame=0&search=\u0002&searchmode=none\u0001100", - "nl": "http://etymologiebank.nl/trefwoord/\u0002\u00013" - }, - "de": "//de.excel-translator.de/\u0002/\u00010", - "en": "//en.excel-translator.de/\u0002/\u00010", - "sy": "//www.etsy.com/search?q=\u0002\u0001669", - "bm.ro": "http://www.etbm.ro/search?Q=\u0002 \u00010", - "ernalwarcry": "//eternalwarcry.com/cards?Query=\u0002\u00010", - "ernity": "http://eternity.youfailit.net/index.php?title=Special%3ASearch&search=\u0002\u00010", - "f2l": "http://etf2l.org/search/\u0002/\u00010", - "imo": "http://etimo.it/?term=\u0002\u00010", - "net": "http://etnet.com.hk/?q=\u0002\u00010", - "ools": "//www.etools.ch/searchSubmit.do?query=\u0002\u000169", - "rans": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Engelsk&Fra=\u0002\u00010", - "ree": "http://archive.org/search.php?query=\u0002%20AND%20collection%3Aetree\u00010" - }, - "u": { - "3": "http://www.eu3wiki.com/index.php?title=Special%3ASearch&search=\u0002\u00010", - "4": { - "\u0010": "//eu4.paradoxwikis.com/index.php?search=\u0002\u000178", - "wiki": "//eu4.paradoxwikis.com/index.php?search=\u0002\u000178" - }, - "\u0010": "//europa.eu/search/?QueryText=\u0002\u00014", - "k": { - "\u0010": "//www.ebay.co.uk/sch/items/?_nkw=\u0002\u0001563", - "eries": "//www.eukeries.com/?s=\u0002\u00010" - }, - "p": "http://edinboro.edu/search/search.html?keyword=\u0002\u00010", - "t": "//www.essen-und-trinken.de/suche#site=eut&category=Rezept&query=\u0002&page=1&sorting=relevance\u00010", - "r2brl": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=EUR&To=BRL\u00010", - "r2cny": "//www.xe.com/currencyconverter/convert/?From=EUR&To=CNY&Amount=\u0002\u00010", - "r2usd": "http://www.xe.com/currencyconverter/convert/?From=EUR&To=USD&Amount=\u0002\u00010", - "rlex": "http://eur-lex.europa.eu/search.html?text=\u0002&scope=EURLEX&type=quick\u00016", - "robuch": "http://www.eurobuch.com/buch/isbn/3838758854.html?author=&coverState=&doAbeDe=1&doAchtungBuecher=1&doAko=1&doAlibris=1&doAmazon=1&doAmazonCa=1&doAmazonCom=1&doAmazonEs=1&doAmazonFr=1&doAmazonIt=1&doAmazonUk=1&doAudibile=1&doAudiobooks=1&doAum=1&doBUCH=1&doBUCHCH=1&doBbBuch=1&doBetterworld=1&doBiblio=1&doBlackwell=1&doBn=1&doBoeken=1&doBolCom=1&doBookdepository=1&doBooklooker=1&doBruna=1&doBuch24=1&doBuchfreund=1&doBuchmarie=1&doBuecherDe=1&doCasaDelLibro=1&doCiando=1&doEBS=1&doEBay=1&doEBooknl=1&doEbooks=1&doEbookscom=1&doEci=1&doElsevier=1&doFnac=1&doFoyles=1&doGoogle=1&doHive=1&doHoepli=1&doIbs=1&doImosver=1&doIndigo=1&doJokers=1&doKobo=1&doLaFeltrinelli=1&doLehmanns=1&doLibri=1&doLibriEB=1&doLibroco=1&doLuisterboeken=1&doMedimops=1&doMondadori=1&doMusicroom=1&doNotenbuch=1&doOnderwijsboek=1&doProlibri=1&doProxis=1&doRegalfrei=1&doRheinberg=1&doScholastic=1&doStudystore=1&doThaliaAt=1&doThaliaCh=1&doThaliaDe=1&doThriftbooks=1&doVoordeelboekenonline=1&doWaterstones=1&doWebster=1&doZVAB=1&fromDateDays=7&isbn=&land=&maxJahr=&maxPrice=&mediatype=0&minJahr=&minPrice=&noBids=0&noReprint=0&pageLen=20&proSearch=&professionalState=&publisher=&search=\u0002&search_submit=suchen&sisbn=&title=&updatePresets=1&updateProState=1&usedState=\u00010", - "rogamer": "http://www.eurogamer.net/search.php?q=\u0002\u00010", - "ro-industry": "//euro-industry.com/main.php?index=search&search=\u0002\u00010", - "ronewsen": "http://www.euronews.com/search?query=\u0002\u00010", - "ronics": "//www.euronics.de/search/?sSearch=\u0002&log=search\u00010", - "roparl": "http://www.europarl.europa.eu/portal/en/search?q=\u0002\u00010", - "ropeana": "http://europeana.eu/portal/search.html?query=\u0002\u00010", - "ropepmc": "http://europepmc.org/search?query=\u0002\u00013", - "w.op": "http://euw.op.gg/summoner/userName=\u0002\u00018" - }, - "v": { - "e": { - "c": { - "\u0010": "//eve-central.com/home/typesearch.html?search=\u0002\u00010", - "entral": "//eve-central.com/home/typesearch.html?search=\u0002\u00010" - }, - "\u0010": "http://wiki.eveonline.com/en/wiki/Special:Search/\u0002 \u00010", - "r": { - "\u0010": "//everipedia.org/wiki/\u0002\u00010", - "i": { - "\u0010": "//everipedia.org/wiki/\u0002\u00010", - "pedia": "//everipedia.org/wiki/\u0002/\u00010" - }, - "note": "//www.evernote.com/Home.action#x=\u0002\u00013", - "yclick": "http://www.everyclick.com/search?keyword=\u0002&filterType=&sortType=&searchArea=web&sbtn=\u00010", - "yeye": "http://www.everyeye.it/ricerca/?q=\u0002\u00014", - "ymac": "http://www.everymac.com/ultimate-mac-lookup/?search_keywords=\u0002\u000113" - }, - "u": { - "\u0010": "http://wiki.eveuniversity.org/w/index.php?title=Special%3ASearch&search=\u0002\u00013", - "ni": "http://wiki.eveuniversity.org/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "market": "//eve-marketdata.com/price_check.php?type_name_header=\u0002\u00010", - "ningstandard": "http://www.standard.co.uk/search/site/\u0002 \u00010", - "ntid": "http://eventid.net/display.asp?eventid=\u0002&source=\u00010", - "ntim": "http://www.eventim.de/Tickets.html?affiliate=TUG&fun=search&fuzzy=yes&doc=search&action=grouped&inline=false&suchbegriff=\u0002&btn=true&x10=4\u00014", - "ntful": "http://eventful.com/events?ga_type=events&ga_search=\u0002&q=\u0002\u00010", - "search": "http://eve-search.com/search/\u0002\u00010", - "sta": "http://www.evesta.jp/lyric/search2.php?ct=1&go=%E6%A4%9C%E7%B4%A2&a=&ca=0&l=&cl=0&k=&t=\u0002 \u00010" - }, - "\u0010": "//cse.google.com/cse?cx=008464549922976904202:3wy4ipwvlno&q=\u0002&oq=\u0002&gs_l=partner-generic.3...27208.27522.3.27758.3.3.0.0.0.0.67.174.3.3.0.gsnos%2Cn%3D13...0.1844j1376214j6j1...1.34.partner-generic..3.2.102.qiNHoIwD47w\u00010", - "o": "http://www.eauxvives.org/forum/search.php?keywords=\u0002\u00010", - "s": "http://eki.ee/dict/evs/index.cgi?Q=\u0002\u00010", - "iq": "//www.eviq.org.au/search?searchtext=\u0002\u00010", - "afing": "//eva.fing.edu.uy/course/search.php?search=\u0002\u000111", - "ans": "http://www.evanscycles.com/search?query=\u0002&x=0&y=0\u00010", - "awk": "//wiki.evageeks.org/Special:Search?search=\u0002\u00010", - "illecom": "http://www.e-ville.com/fi/q/\u0002\u00010", - "irt": { - "\u0010": "http://www.estantevirtual.com.br/qt/\u0002\u00014", - "at": "http://www.estantevirtual.com.br/q/\u0002\u00010", - "au": "http://www.estantevirtual.com.br/qau/\u0002\u00015", - "ed": "http://www.estantevirtual.com.br/qed/\u0002\u00010", - "des": "http://www.estantevirtual.com.br/qdes/\u0002\u00010", - "tit": "http://www.estantevirtual.com.br/qtit/\u0002\u00010" - }, - "ren": "//www.evrenbilim.com/?s=\u0002\u00010", - "reward": "http://evreward.com/store/find?store[name]=\u0002\u00010" - }, - "w": { - "c": "//eternalwarcry.com/cards?query=\u0002\u000136", - "\u0010": "//duckduckgo.com/?q=site%3Aew.com+\u0002\u00017" - }, - "x": { - "a": { - "\u0010": "//www.exasoft.cz/default.asp?cls=stoitems&stifulltext_search=and&fulltext=\u0002\u00010", - "led": "http://www.3ds.com/search/?q=\u0002 \u00010", - "lead": "http://www.exalead.com/search/web/results/?q=\u0002\u00013", - "mine": "http://examine.com/search.php?q=\u0002\u000110", - "stris": "http://www.ex-astris-scientia.org/search/search.cgi?Terms=\u0002:\u00010" - }, - "c": "http://www.exclusiveclue.com/?term=\u0002\u00010", - "\u0010": "//examine.com/search/?q=\u0002\u000121", - "p": { - "\u0010": "http://irfantoor.com/exploits?s=\u0002\u00010", - "o": { - "\u0010": "//docs.expo.io/versions/latest/sdk/\u0002\u00010", - "rt": "//www.weltexporte.de/?s=\u0002\u00010" - }, - "edia": "http://search.expedia.com/socialsearch/query?st=1&cn=expedia&cc=www&q=\u0002\u00010", - "ert": "//www.expert.nl/catalogsearch/result/?q=\u0002\u00010", - "ired": "//www.expireddomains.net/domain-name-search/?searchinit=1&q=\u0002 \u00010", - "lara": "//www.explara.com/search/\u0002\u00010", - "lainshell": "//explainshell.com/explain?cmd=\u0002\u00010", - "lainxkcd": "http://www.explainxkcd.com/wiki/index.php?search=\u0002\u000133", - "loitdb": "//www.exploit-db.com/search?q=\u0002\u00017", - "lorecourses": "http://explorecourses.stanford.edu/search?q=\u0002\u00014", - "ressio": "http://www.expressio.fr/search.php?q=\u0002&lang=\u00010", - "xkcd": "http://www.explainxkcd.com/wiki/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010" - }, - "t": { - "\u0010": "http://filext.com/file-extension/\u0002\u00013", - "ra": "http://www.extrastores.com/en-sa/search?q=\u0002\u00010" - }, - "ex": "http://www.experts-exchange.com/searchResults.jsp?searchTerms=\u0002&searchType=10\u00010", - "istgo": "//exist.ua/price.aspx?pcode=\u0002&sortType=\u00010", - "ite": "http://msxml.excite.com/search/web?q=\u0002 \u00010", - "kcd": "http://www.explainxkcd.com/wiki/index.php?search=\u0002&title=Special%3ASearch\u000148", - "libris": "//www.exlibris.ch/de/suche/?q=\u0002\u00010", - "mojo": "//www.expressmojo.com/search/?q=\u0002\u00010", - "odus": "//reports.exodus-privacy.eu.org/reports/search/\u0002\u00010" - }, - "5p": "//www.everything5pounds.com/en/search/?q=%3AbestSeller&text=\u0002\u00010", - "af": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Feffective-altruism.com+\u0002\u00010", - "an": "http://www.ean-search.org/perl/ean-search.pl?q=\u0002\u00010", - "at": { - "\u0010": "//www.ebay.at/sch/items/?_nkw=\u0002\u00010", - "bydate": "http://eatbydate.com/search/?q=\u0002\u00010", - "erlon": "//london.eater.com/search?q=\u0002\u00010", - "tender": "http://eattender.com/recipes/search?q=\u0002\u00010", - "this": "//www.eat-this.org/?s=\u0002\u00010" - }, - "au": "//www.ebay.com.au/sch/items/?_nkw=\u0002\u0001103", - "-c": "//www.e-chords.com/search-all/\u0002\u00010", - "ff": "//www.eff.org/search/site/\u0002\u00010", - "fr": "//www.ebay.fr/sch/items/?_nkw=\u0002\u000160", - "ft": "//escapefromtarkov.gamepedia.com/\u0002\u000129", - "lb": { - "\u0010": "http://www.bibleserver.com/text/ELB/\u0002\u00010", - "aul": "http://elbauldelprogramador.com/?s=\u0002\u00010" - }, - "le": { - "\u0010": "//electronjs.org/search?q=\u0002\u00010", - "n": "http://translate.google.com/#el/en/\u0002\u00010", - "y": "http://eleymcqueen.blogspot.in/search?q=\u0002\u00010", - "ctron": "//electron.atom.io/apps/?q=\u0002\u00010", - "venr": "//eleven.rijitsu.com/?s=\u0002\u00010" - }, - "lf": { - "a": "//www.elfa.se/elfa3~se_sv/elfa/init.do?sq=\u0002\u00010", - "\u0010": "http://eshop.elfetex.cz/fulltext_search/1?query=\u0002\u00010", - "ster": "//www.elfster.com/shop/search/?q=\u0002\u00010" - }, - "ll": { - "\u0010": "//ell.stackexchange.com/search?q=\u0002\u00010", - "o": { - "\u0010": "//ello.co/search?terms=\u0002 \u00010", - "s": "//www.ellos.se/search?SearchTerm=\u0002\u00010" - }, - "iottwave": "//elliottwaveideas.com/search.php?query=\u0002\u00010" - }, - "lm": { - "\u0010": "http://klaftertief.github.io/elm-search/?q=\u0002\u00018", - "undo": "http://ariadna.elmundo.es/buscador/archivo.html?q=\u0002&b_avanzada=\u00010" - }, - "lw": "//el.wikipedia.org/w/index.php?search=\u0002&title=%CE%95%CE%B9%CE%B4%CE%B9%CE%BA%CF%8C%3A%CE%91%CE%BD%CE%B1%CE%B6%CE%AE%CF%84%CE%B7%CF%83%CE%B7&go=%CE%9C%CE%B5%CF%84%CE%AC%CE%B2%CE%B1%CF%83%CE%B7\u00010", - "lx": "//evelexicon.com/term/\u0002\u00010", - "q2": "http://eq2.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "qd": "http://www.google.com/cse?cx=partner-pub-6285692791338183%3A7732117278&ie=UTF-8&q=\u0002\u00010", - "qr": "http://eqresource.com/search.php?cx=partner-pub-8686271290388928%3Atjkxdymxk9a&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=Search\u00010", - "yb": "//www.eatyourbooks.com/bookshelf?q=\u0002\u00010", - "zt": "//docops.ca.com/ca-easytrieve/11-6/en/search?q=\u0002&max=10&key=CAET116\u00010", - "926": "http://e926.net/post/search?tags=\u0002\u00017", - "arth": { - "\u0010": "//earth.google.com/web/search/\u0002\u000188", - "911": "http://search.earth911.com/?what=\u0002\u00010", - "bound": "http://earthbound.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "cam": "http://www.earthcam.com/?q=\u0002 \u00010" - }, - "arpod": "//www.earpod.co/search?q=\u0002\u00010", - "astbay": "http://www.eastbay.com/_-_/keyword-\u0002\u00010", - "asybi": { - "b": "http://www.easybib.com/cite/eval?url=\u0002\u00010", - "\u0010": "http://easy-bi.org/blog/?s=\u0002\u00010" - }, - "asymerchant": "//www.easymerchant.co.uk/?product_cat=&s=\u0002&post_type=product\u00010", - ".at": "//www.ebay.at/sch/i.html?_nkw=\u0002\u00010", - ".au": "//www.ebay.com.au/sch/?_nkw=\u0002&_sacat=0\u00015", - ".de": "http://www.ebay.de/sch/i.html?_nkw=\u0002\u000115", - ".uk": "http://www.ebay.co.uk/sch/i.html?_nkw=\u0002\u000156", - "-words": "http://e-words.jp/?cx=partner-pub-1175263777233757%3Axelkt7-c6j8&cof=FORID%3A10&ie=Shift_JIS&q=\u0002&sa=%88%EA%92v%82%B7%82%E9%97p%8C%EA%82%F0%95%5C%8E%A6&siteurl=e-words.jp%2F&ref=e-words.jp%2Fw%2FE382B9E3839AE383BCE382B9.html&ss=1193j290715j7\u00010", - "l19": "//www.el19digital.com/busqueda/articulos?q=\u0002\u00010", - "lastic": "//www.elastic.co/search?q=\u0002§ion=Learn%2FDocs%2F\u00010", - "lcomercio": { - "\u0010": "//elcomercio.pe/buscar/?query=\u0002\u00010", - "pe": "//elcomercio.pe/buscar/?query=\u0002\u00010" - }, - "lconjugador": "http://www.elconjugador.com/conjugaison/verbe/espagnol/\u0002.html\u00010", - "lderwiki": "http://elderscrolls.wikia.com/wiki/index.php?search=\u0002&fulltext=Search\u00010", - "ldict": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=%22\u0002%22\u00010", - "lgiganten": "//www.elgiganten.se/search?SearchTerm=\u0002\u00010", - "lgoog": "http://elgoog.im/search/?q=\u0002\u00010", - "lheneu": "http://hiztegiak.elhuyar.eus/en_eu/\u0002\u00010", - "lheseu": "http://hiztegiak.elhuyar.eus/es_eu/\u0002\u00013", - "lheuen": "http://hiztegiak.elhuyar.eus/eu_en/\u0002\u00010", - "lheues": "http://hiztegiak.elhuyar.eus/eu_es/\u0002\u00010", - "lheufr": "http://hiztegiak.elhuyar.eus/eu_fr/\u0002\u00010", - "lhfreu": "http://hiztegiak.elhuyar.eus/fr_eu/\u0002\u00010", - "lhuyar": "http://hiztegiak.elhuyar.org/es_eu/\u0002\u00010", - "li5": "//www.reddit.com/r/explainlikeimfive/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010", - "lix": { - "\u0010": "//www.elix-lsf.fr/spip.php?page=recherche_definitions&recherche=\u0002&lang=fr\u00010", - "ir": { - "\u0010": "//hexdocs.pm/elixir/search.html?q=\u0002\u000153", - "-docs": "//duckduckgo.com/?q=site%3Aelixir-lang.org%2Fdocs+\u0002\u00010", - "forum": "//elixirforum.com/search?q=\u0002\u00013" - } - }, - "lite": { - "\u0010": "//www.eliteprospects.com/search/player?q=\u0002\u00010", - "pr": { - "\u0010": "//www.eliteprospects.com/search/player?q=\u0002\u00010", - "ospects": "//www.eliteprospects.com/search/team?q=\u0002\u00010" - } - }, - "linux": "http://elinux.org/index.php?search=\u0002\u00010", - "lobs": "http://www.elobservador.com.uy/\u0002-s\u00010", - "loquii": "http://www.eloquii.com/on/demandware.store/Sites-eloquii-Site/default/Search-Show?q= \u0002\u00010", - "lotrolado": "http://www.elotrolado.net/search.php?keywords=\u0002&type=h\u00010", - "lpais": "http://elpais.com/buscador/?qt=\u0002\u00014", - "lreg": "http://search.theregister.co.uk/?q=\u0002\u00010", - "luta": "http://www.eluta.ca/search?q=\u0002\u00010", - "luniverso": "//www.eluniverso.com/resultados?search=\u0002\u00010", - "quo": "//packages.sabayon.org/quicksearch?q=\u0002\u00010", - "qualdex": "http://equaldex.com/search?q=\u0002\u00010", - "questriadaily": "http://duckduckgo.com/?q=site:equestriadaily.com+\u0002\u00010", - "quipboard": "http://equipboard.com/search?search_term=\u0002\u00010", - "yeem": "//www.eyeem.com/search?q=\u0002&sort=relevance\u00010", - "zine": "http://ezinearticles.com/search/?q=\u0002\u00010", - "zydvd": "http://www.ezydvd.com.au/search?q=\u0002&t=all\u00010" - }, - "f": { - "1": "http://www.f1zone.net/news/index.php?s=\u0002\u00015", - "3": { - "\u0010": "http://www.france3.fr/recherche?s=\u0002\u00010", - "nm": "//www.nexusmods.com/fallout3/search/?gsearch=\u0002&gsearchtype=mods\u00010" - }, - "6": { - "4": "//www.f64.ro/\u0002\u00010", - "\u0010": "//fordsix.com/search.php?keywords=\u0002\u00010" - }, - "a": { - "b": { - "\u0010": "http://fab.com/search/?q=\u0002&ref=ddb\u00010", - "ienm": "http://www.fabienm.eu/wordpress/?s=\u0002\u00010", - "ric": "//www.fabric.com/SearchResults2.aspx?SearchText=\u0002\u00010" - }, - "d": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000153", - "f": { - "f": "http://www.filmaffinity.com/es/search.php?stext=\u0002 &stype=all\u00013", - "\u0010": "http://www.filmaffinity.com/es/advsearch2.php?cx=008177178803676006601%3A6zmc6j5pngs&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002:\u00010" - }, - "\u0010": "http://www.filmaffinity.com/es/search.php?stext=\u0002&stype=all\u0001452", - "s": { - "\u0010": "//fontawesome.com/icons?d=gallery&q=\u0002\u00010", - "s": { - "\u0010": "//www.fass.se/m/sok/\u0002/public\u00010", - "v": "//www.fass.se/LIF/result?userType=0&query=\u0002\u00010" - }, - "hionmodeldirectory": "http://www.fashionmodeldirectory.com/search/?q=\u0002\u00010", - "tai": "//forums.fast.ai/search?q=\u0002\u00010", - "tmail": "//www.fastmail.com/help/search/?q=\u0002\u00010", - "tube": "http://fastu.be/\u0002\u00010" - }, - "w": "http://flightaware.com/live/flight/\u0002\u000131", - "z": "http://www.faz.net/suche/?query=\u0002\u000127", - "ir": { - "\u0010": "//fair.org/?s=\u0002\u00010", - "mondo": "//www.fairmondo.de/articles?article_search_form[q]=\u0002\u00010", - "tragen": "//www.fairtragen.de/advanced_search_result.php?keywords=\u0002\u00010" - }, - "ke": { - "\u0010": "//www.fakespot.com/analyze?url=\u0002\u000118", - "spot": "//www.fakespot.com/analyze?url=\u0002\u000118" - }, - "rk": "//www.fark.com/hlsearch?&qq=\u0002\u00010", - "rr": "//www.farrvintners.com/winelist.php?keywords=\u0002\u00010", - "tv": "//fanart.tv/?sect=all&s=\u0002\u00013", - "2en": "//translate.google.com/#fa/en/\u0002\u00013", - "ces": "//www.google.com/search?tbm=isch&tbs=itp:face&q=\u0002\u00018", - "cebook": "http://www.facebook.com/s.php?q=\u0002\u0001368", - "cephoto": "//www.google.com/search?q=%22\u0002%22&tbm=isch&tbs=ic:color,isz:lt,itp:face,isg:to&filter=0&safe=off&pws=0&tbs=rl:0\u00010", - "cepunch": "//forum.facepunch.com/search/?q=\u0002\u00010", - "ctly": "//factly.in/?s=\u0002\u00010", - "ctor": { - "\u0010": "http://factornumber.com/?page=\u0002;\u00010", - "io": { - "\u0010": "//wiki.factorio.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000136", - "mods": "//mods.factorio.com/query/\u0002\u00010" - } - }, - "ctbites": "http://www.factbites.com/topics/\u0002\u00010", - "hrschule": "http://www.fahrschule-berne.de/component/search/?searchword=\u0002\u00010", - "icon": "//fontawesome.com/icons?d=gallery&q=\u0002\u00010", - "illiet": "//www.faillissementen.com/insolventies/nederlandse-insolventies/?q=\u0002\u00010", - "llenlondon": "http://fallenlondon.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "llout": { - "\u0010": "http://fallout.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000139", - "lore": "//fallout.gamepedia.com/index.php?search=\u0002\u00010" - }, - "nart": { - "\u0010": "//fanart.tv/?sect=all&s=\u0002\u00013", - "m": "//fanart.tv/?s=\u0002§=2\u00010" - }, - "nch": "http://www.qth.fr/?s=\u0002\u00010", - "ncy": { - "\u0010": "http://www.thefancy.com/search?q=\u0002 \u00010", - "that": "//www.shopfancythat.com/search?q=\u0002\u00010" - }, - "ncade": "http://www.fancade.com/search/?q=\u0002\u00010", - "ndom": "//www.fandom.com/?s=\u0002\u000122", - "ndango": "http://www.fandango.com/search/?q=\u0002\u000110", - "nfiction": "//www.fanfiction.net/search/?keywords=\u0002\u00018", - "ngamer": "//www.fangamer.com/search?type=product&q=*\u0002*\u00013", - "ngraphs": "http://www.fangraphs.com/players.aspx?lastname=\u0002\u00017", - "nlore": "//fanlore.org/w/index.php?search=\u0002\u00010", - "npop": "http://www.fanpop.com/search?query=\u0002\u00010", - "nsale": "//www.fansale.de/fansale/events.htm?searchText=\u0002\u00010", - "ntagraphics": "http://www.fantagraphics.com/index.php?keyword=\u0002\u00010", - "ntasy": { - "\u0010": "http://www.fantasy.fr/searches/index/\u0002 \u00014", - "life": "http://fantasy-life.wikia.com/wiki/\u0002\u00010" - }, - "ntlab": "//fantlab.ru/searchmain?searchstr=\u0002\u00010", - "rit": "http://it.farnell.com/webapp/wcs/stores/servlet/Search?catalogId=15001&langId=-4&storeId=10165&categoryName=Tutte le categorie&selectedCategoryId=&gs=true&st=\u0002\u00010", - "rmaline": "//www.farmaline.be/apotheek/zoeken/\u0002/?ref=duckduckgo\u00010", - "rmfor": "//www.farmfor.com.br/?s=\u0002\u00010", - "rnl": "//nl.farnell.com/webapp/wcs/stores/servlet/Search?&st=\u0002\u00010", - "rnde": "http://de.farnell.com/webapp/wcs/stores/servlet/Search?catalogId=15001&langId=-3&storeId=10161&categoryName=Alle%20Kategorien&selectedCategoryId=&gs=true&st=\u0002\u00010", - "rnes": "//es.farnell.com/search?st=\u0002\u00010", - "rnell": { - "\u0010": "http://uk.farnell.com/webapp/wcs/stores/servlet/Search?&st=\u0002\u000141", - "fr": "http://fr.farnell.com/\u0002 \u00010" - }, - "rsi123": "http://farsi123.com/?word=\u0002\u00010", - "tsecret": "//www.fatsecret.com/calories-nutrition/search?q=\u0002\u000122", - "ucet": "http://www.faucet.com/index.cfm?page=search:browse&term=\u0002\u000110", - "user": "http://furaffinity.net/user/\u0002\u000134" - }, - "b": { - "\u0010": "//www.facebook.com/search.php/?q=\u0002\u00018654", - "g": "//duckduckgo.com/?q=site%3Afootballguys.com+\u0002\u00010", - "k": "//www.facebook.com/search/results/?q=\u0002\u00015", - "m": "//www.facebook.com/messages/search?action=search-snippet&mquery=\u0002\u000122", - "p": "//www.facebook.com/search/results/?q=\u0002&type=pages\u00010", - "r": "http://www.pro-football-reference.com/player_search.fcgi?search=\u0002\u00010", - "s": "http://www.fbschedules.com/search.php?q=\u0002\u00010", - "ee": "//framabee.org/?q=\u0002 \u00010", - "bva": "http://www.fundeu.es/?s=\u0002\u00010", - "lite": "//mbasic.facebook.com/search/?refid=46&search=people&search_source=search_bar&query=\u0002\u000135", - "onion": "//facebookcorewwwi.onion/search.php/?q=\u0002\u00015", - "ugs": "//bugs.freebsd.org/bugzilla/buglist.cgi?quicksearch=\u0002\u00010" - }, - "c": { - "b": { - "\u0010": "http://www.fcbayern.de/de/search#search=\u0002&chronology=chrono\u00010", - "ar": "http://www.fcbayern.de/ar/search#search=\u0002&chronology=chrono\u00010", - "en": "http://www.fcbayern.de/en/search#search=\u0002&chronology=chrono\u00010", - "es": "http://www.fcbayern.de/es/search#search=\u0002&chronology=chrono\u00010", - "jp": "http://www.fcbayern.de/jp/search#search=\u0002&chronology=chrono\u00010", - "ru": "http://www.fcbayern.de/ru/search#search=\u0002&chronology=chrono\u00010", - "us": "http://www.fcbayernmunich.com/us/search#search=\u0002&chronology=chrono\u00010" - }, - "c": { - "f": "//www.freecodecamp.org/forum/search?q= \u0002\u00010", - "\u0010": "http://www.forocoches.com/foro/search.php?do=process&titleonly=1&query=\u0002\u000120" - }, - "\u0010": "//duckduckgo.com/?q=site%3A+freecadweb.org+\u0002\u00013", - "s": "http://portal.fultonschools.org/_layouts/OSSSearchResults.aspx?k=\u0002\u00010", - "it": "//fcit.usf.edu/search/index.php?searchWords=\u0002\u00010", - "aesar": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u00018", - "ode": "//search.freecodecamp.org/?q=\u0002\u00010", - "onj": "http://www.wordreference.com/conj/FRverbs.aspx?v=\u0002 \u00013", - "peuro": "//www.fcpeuro.com/products?utf8=%E2%9C%93&keywords=\u0002\u00010", - "ulture": "//www.franceculture.fr/recherche?q=\u0002\u00010" - }, - "d": { - "a": "//search.usa.gov/search?utf8=%E2%9C%93&affiliate=fda&query=\u0002&commit=Search\u00015", - "b": { - "\u0010": "http://www.fdb.cz/vyhledavani.php?co=vsechno&hledat=\u0002\u00010", - "pl": "//fdb.pl/szukaj?utf8=✓&query=\u0002\u00010", - "log": "//blog.freshdesk.com/?s=\u0002\u00010" - }, - "f": "//support.freshdesk.com/support/search/topics?term=\u0002\u00010", - "\u0010": "http://freedictionary.org/?Query=\u0002&button=Search\u000129", - "l": "//feedly.com/i/search/\u0002\u00016", - "o": { - "\u0010": "//www.google.com/search?sitesearch=http%3A%2F%2Fwww.freedesktop.org%2Fwiki%2F&q=\u0002&gws_rd=ssl\u00010", - "bugs": "//bugs.freedesktop.org/buglist.cgi?quicksearch=\u0002\u00010" - }, - "s": "//support.freshdesk.com/support/search/solutions?term=\u0002\u00010", - "db": "http://fddb.info/db/de/suche/?udd=0&cat=site-de&search=\u0002\u000120", - "ic": "http://finedictionary.com/\u0002.html\u00010", - "rlst": "http://thefederalist.com/?s=\u0002\u00010", - "roid": "//search.f-droid.org/?q=\u0002 \u0001180" - }, - "f": { - "a": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000153", - "c": { - "\u0010": "http://foundfootagecritic.com/?s=\u0002\u00010", - "h": "//www.admin.ch/opc/search/?lang=fr&language[]=fr&product[]=fg&text=\u0002&lang=fr\u00010" - }, - "\u0010": "http://www.fanfiction.net/search.php?type=story&keywords=\u0002&match=title&sort=0&genreid=0&subgenreid=0&characterid=0&subcharacterid=0&words=0&ready=1&categoryid=0\u000143", - "i": { - "\u0010": "//www.finder.fi/search?what=\u0002\u00010", - "nv": "http://ff14.inven.co.kr/dataninfo/item/?itemname=\u0002&datagroup=search\u00010" - }, - "m": "//fastfoodmusic.com/?s=\u0002\u00010", - "n": "//www.fanfiction.net/search/?keywords=\u0002&ready=1&type=story\u00017", - "s": { - "\u0010": "//www.freefallsupport.com/?s=\u0002\u00010", - "tory": "//www.fanfiction.net/search.php?keywords=\u0002&type=story&match=any&formatid=any&sort=0&genreid1=0&genreid2=0&characterid1=0&characterid2=0&characterid3=0&characterid4=0&words=0&ready=1&categoryid=0\u00010" - }, - "w": { - "\u0010": "//www.fanfiction.net/search.php?type=writer&keywords=\u0002&match=title&sort=0&genreid=0&subgenreid=0&characterid=0&subcharacterid=0&words=0&ready=1&categoryid=0#\u00010", - "iki": "http://finalfantasy.wikia.com/wiki/Special:Search?query=\u0002\u000119" - }, - "z": "http://www.frankerfacez.com/emoticons/?q=\u0002\u00014", - "bbunt": "//ffbbunt.wordpress.com/?s=\u0002\u00010", - "xiv": { - "\u0010": "//ffxiv.consolegameswiki.com/mediawiki/index.php?search=\u0002\u0001197", - "tc": "//ffxivteamcraft.com/search?query=\u0002&onlyRecipes=true\u00010" - } - }, - "\u0010": "http://www.flickr.com/search/?q=\u0002\u0001959", - "g": { - "\u0010": "http://www.fangraphs.com/players.aspx?lastname=\u0002\u00017", - "f": "http://www.flightgear.org/forums/search.php?keywords=\u0002\u00010", - "cs": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u00018", - "ow": "http://fategrandorder.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "entoo": "//duckduckgo.com/?q=site%3Aforums.gentoo.org+\u0002\u00010" - }, - "h": { - "\u0010": "http://filehippo.com/search?q=\u0002\u00017", - "q": "//fidgethq.com/search?q=\u0002\u00010", - "em": "//wiki.fhem.de/w/index.php?search=\u0002\u00010", - "su": "//fhsu.edu/searchresults.aspx?query=\u0002\u00010", - "ub": "//www.fosshub.com/search/\u0002\u00015" - }, - "i": { - "d": { - "e": "//ratings.fide.com/search.phtml?search=\u0002\u000115", - "\u0010": "//www.file.net/process/\u0002.html\u00010", - "o": "http://www.fido.ca/consumer/search?q=\u0002\u00010", - "dling": "//duckduckgo.com/?q=site%3Agladyscelticcorner.com+\u0002\u00010" - }, - "\u0010": "http://www.finanzen.net/suchergebnis.asp?strSuchString=\u0002\u000112", - "m": { - "\u0010": "//www.fimfiction.net/stories?q=\u0002\u000123", - "fic": { - "\u0010": "//www.fimfiction.net/stories?q=\u0002\u000123", - "tion": "//www.fimfiction.net/stories?q=\u0002\u000123" - } - }, - "n": { - "f": { - "\u0010": "//forum.finf.uni-hannover.de/index.php?form=Search&q=\u0002\u00010", - "o": "//www.francetvinfo.fr/recherche/?request=\u0002\u000110" - }, - "\u0010": "//finviz.com/search.ashx?p=\u0002\u00010", - "k": "http://pdb.finkproject.org/pdb/browse.php?summary=\u0002\u00010", - "n": { - "a": "//finna.fi/Search/Results?lookfor=\u0002\u00010", - "\u0010": "//www.finn.no/globalsearchlander.html?searchKeys=&q=\u0002\u000118", - "kino": { - "\u0010": "http://www.finnkino.fi/Search?query=\u0002\u00010", - "en": "http://www.finnkino.fi/eng/Search/?query=\u0002\u00010" - } - }, - "o": "//finofilipino.org/?s=\u0002\u00010", - "do": "//findo.com/app/search?query=\u0002\u00010", - "alfantasy": "http://finalfantasy.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "anzennet": "http://www.finanzen.net/suchergebnis.asp?_search=\u0002\u00010", - "danyfilm": "http://www.findanyfilm.com/search?term=\u0002\u00013", - "dchips": "http://www.findchips.com/avail?part=\u0002\u00017", - "dlaw": "http://public.findlaw.com/LCsearch.html?entry=\u0002\u00010", - "ecooking": "http://www.finecooking.com/?s=\u0002\u00010", - "edict": "http://www.finedictionary.com/\u0002.html\u00010", - "eli": { - "\u0010": "//fineli.fi/fineli/fi/elintarvikkeet?q=\u0002\u00010", - "en": "//fineli.fi/fineli/en/elintarvikkeet?q=\u0002\u00010", - "sv": "//fineli.fi/fineli/sv/elintarvikkeet?q=\u0002\u00010" - }, - "lex": "http://finlex.fi/fi/laki/haku/?search[type]=pika&search[pika]=\u0002\u00010" - }, - "p": "//www.fip.fr/player/\u0002\u00013", - "u": { - "\u0010": "//fontsinuse.com/search?terms=\u0002\u000128", - "eds": "http://search.ebscohost.com.ezproxy.fiu.edu/login.aspx?direct=true&scope=site&type=0&site=eds-live&lang=en&bquery=[\u0002]\u00010" - }, - "en": "http://translate.google.com/#fi/en/\u0002 \u000126", - "fa": "//www.fifa.com/search/?q=\u0002\u00010", - "le": { - "\u0010": "http://filehippo.com/search?q=\u0002\u00017", - "xt": "http://filext.com/file-extension/\u0002\u00013", - "ext": "http://www.file-extensions.org/search/?searchstring=\u0002\u00010", - "facts": "http://www.filefacts.net/search.php?ext=\u0002\u00010", - "hippo": "http://filehippo.com/search?q=\u0002\u00017", - "info": "http://fileinfo.com/extension/\u0002\u000130" - }, - "lm": { - "\u0010": "//www.filmaffinity.com/es/search.php?stext=\u0002\u000124", - "s": { - "\u0010": "http://www.filmsarecool.com/#search=\u0002 \u00010", - "tarts": "http://www.filmstarts.de/suche/?q=\u0002\u00010" - }, - "nl": "//www.film.nl/?q=\u0002\u00010", - "on": "http://www.filmon.tv/search/?term=\u0002\u00010", - "ow": "http://filmow.com/buscar/?q=\u0002\u00018", - "tv": { - "\u0010": "http://www.filmtv.it/cerca/?q=\u0002\u000116", - "de": "//www.film.tv/google-suchergebnisse.html?cx=partner-pub-3004436243331931%3A1982226405&query=\u0002\u00010" - }, - "affinity": { - "\u0010": "//www.filmaffinity.com/en/search.php?stext=\u0002\u00016", - "es": "//m.filmaffinity.com/es/search.php?stext=\u0002\u00010" - }, - "anic": "//filmanic.com/search-for-movies-actors-directors/?q=\u0002\u00010", - "art": "//filmartgallery.com/pages/search-results?q=\u0002\u00010", - "portal.de": "//www.filmportal.de/search?search_api_fulltext=\u0002\u00010", - "racket": "http://filmracket.com/?s=\u0002&submit=Search\u00010", - "web": "http://www.filmweb.pl/search?q=\u0002\u0001101" - }, - "sh": { - "\u0010": "http://fishshell.com/docs/current/commands.html#\u0002\u00010", - "pond": "http://www.fishpond.com.au/advanced_search_result.php?keywords=\u0002\u00010" - }, - "bercables": "http://www.fibercables.com/search?q=\u0002\u00010", - "cly": "http://ficly.com/search?query=\u0002\u00010", - "fthcity": "http://thefifthcity.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "guya": "//figuya.com/en/products?q[query]=\u0002\u00010", - "reball": "//fireball.de/q/\u0002\u00010", - "rebox": "http://www.firebox.com/search/\u0002\u00010", - "refox": { - "\u0010": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002&cat=all\u0001177", - "addon": { - "\u0010": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000153", - "s": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000153" - } - }, - "rmy": { - "\u0010": "//www.firmy.cz/?q=\u0002\u00010", - "cz": "http://www.firmy.cz/?thru=&q=\u0002\u00010" - }, - "rstcry": "http://www.firstcry.com/search.aspx?q=\u0002\u00010", - "rstmats": "//www.firstmats.co.uk/search?type=product&q=\u0002\u00010", - "rstpagefitness": "//firstpagefitness.com/?s=\u0002\u00010", - "rstpost": "http://www.firstpost.com/?s=\u0002\u00010", - "schertechnik": "http://www.fischertechnik.de/desktopdefault.aspx/tabid-1//tabid-35/searchcall-4/4_keepvisible-true/redirected-1/?/sid-3230669/mid-4/tid-1/ct-0/q-\u0002//k-/et-0/rpp-10/sar-False/t-/p-0/ap-True/cat-/cr-0/pr-0/icp-False/icc-False/ifc-False/sl-1/sp-0/cs-/\u00010", - "tfolly": "//fitfolly.com/?s=\u0002\u00010", - "xyt": "http://fixyt.com/search?q=\u0002\u00010" - }, - "j": "http://funnyjunk.com/search/?q=\u0002\u0001166", - "k": { - "b": "//fkb.dk/search/ting/\u0002\u00010", - "\u0010": "http://www.flipkart.com/search?q=\u0002 \u0001283", - "k": "http://fkk-freunde.info/search.php?keywords=\u0002\u00013", - "t": "//www.felleskatalogen.no/medisin/sok?sokord=\u0002\u00010" - }, - "l": { - "d": "//www.frontlinedefenders.org/en/search/\u0002\u00010", - "e": { - "\u0010": "http://flexikon.doccheck.com/de/Spezial:Suche?q=\u0002\u000117", - "xjobs": "//www.flexjobs.com/search?search=\u0002&Location=\u00013" - }, - "\u0010": "http://www.google.com/search?btnI&q=\u0002\u0001485", - "r": "//www.reddit.com/r/FluidLang/search?q=\u0002&restrict_sr=on\u00010", - "t": "//flutter.io/search/?q=\u0002\u00010", - "y": { - "\u0010": "http://flybase.org/search/\u0002\u000117", - "er": "//flyerhunters.com/?s=\u0002\u00010" - }, - "ag": "//duckduckgo.com/?q=site%3Aflagpoles.com.au+\u0002\u00010", - "at": { - "\u0010": "//flathub.org/apps/search/\u0002\u000169", - "tr": "//flattr.com/q/\u0002\u00010", - "hub": "//flathub.org/apps/search/\u0002\u000169", - "icon": "http://www.flaticon.com/search/\u0002\u000122", - "music": "//flat.io/search?q=\u0002\u00010" - }, - "ip": { - "\u0010": "http://www.flipkart.com/search?q=\u0002&as=off&as-show=on&otracker=start\u000135", - "juke": "http://www.flipjuke.fr/search.php?keywords=\u0002\u00010", - "kart": "//www.flipkart.com/search?q=\u0002\u000172" - }, - "is": "http://www.webflis.us//webflis.aspx?All=\u0002\u00010", - "ix": "http://www.flixster.com/search/?search=\u0002 \u00010", - "ask": "http://flask.pocoo.org/search/?q=\u0002\u00015", - "ashback": "//www.flashback.org/sok/\u0002\u000116", - "ickr": { - "c": { - "c": "//www.flickr.com/search/?text=\u0002&license=2%2C3%2C4%2C5%2C6%2C9\u00014", - "\u0010": "http://www.flickr.com/search/?q=\u0002&l=commderiv\u00014" - }, - "\u0010": "http://flickr.com/search/?q=\u0002\u0001234", - "id": "//secure.flickr.com/photo.gne?id=\u0002\u00010", - "iver": "http://flickriver.com/search/\u0002/\u00013" - }, - "icks": "//www.flicks.co.nz/search/?q=\u0002\u00010", - "ickchart": "http://www.flickchart.com/SearchResults.aspx?s=\u0002\u00010", - "ight": { - "\u0010": "//spotterlead.net/flights/\u0002\u000113", - "aware": "//flightaware.com/live/flight/\u0002 \u000122", - "radar": "//www.flightradar24.com/data/flights/\u0002\u00017" - }, - "optv": "http://www.floptv.tv/search/?q=\u0002\u00010", - "ower": "http://www.wildflower.org/plants/search.php?search_field=\u0002&newsearch=true\u00010", - "utter": "//flutter.io/search/?q=\u0002\u00010" - }, - "m": { - "4": "http://fm4.orf.at/search?q=\u0002&sort=date_desc&submit.x=0&submit.y=0\u00010", - "a": { - "\u0010": "http://freemusicarchive.org/search/?quicksearch=\u0002&sort=track_interest\u00010", - "n": "http://www.freebsd.org/cgi/man.cgi?query=\u0002\u00016" - }, - "d": "http://www.fashionmodeldirectory.com/search/?q=\u0002\u00010", - "\u0010": "http://filmaster.com/search/?q=\u0002\u000112", - "i": "http://ilmatieteenlaitos.fi/saa/\u0002\u00010", - "p": "//community.filemaker.com/en/s/global-search/\u0002\u00010", - "s": "http://www.foromedios.com/index.php?app=core&module=search&do=search&andor_type=&sid=&search_app_filters[forums][sortKey]=date&search_app_filters[forums][sortKey]=date&search_app_filters[forums][searchInKey]=&search_term=\u0002&search_app=forums\u00010", - "x": "http://www.fightmatrix.com/fighter-search/?fName=\u0002\u00010", - "od": "//mods.factorio.com/query/\u0002\u00010", - "edoc": "//www.safe.com/search/?site-search=\u0002&site=docs.safe.com\u00010", - "ekb": "//knowledge.safe.com/search.html?f=&type=question+OR+idea+OR+kbentry&c=&redirect=search%2Fsearch&sort=relevance&q=\u0002:\u00010" - }, - "n": { - "b": "//www.fanburst.com/search?q=\u0002\u00010", - "d": "//fnd.io/#/us/search?mediaType=all&term=\u0002\u00010", - "\u0010": "//www.foodnetwork.com/search/\u0002-\u00016", - "ac": { - "\u0010": "http://recherche.fnac.com/SearchResult/ResultList.aspx?Search=\u0002\u000150", - "es": "http://busqueda.fnac.es/Search/SearchResult.aspx?SCat=0%211&Search=\u0002&sft=1&submitbtn=OK\u00010", - "portugal": "http://pesquisa.fnac.pt/Search/SearchResult.aspx?Search=\u0002\u00010" - }, - "af": "//freddy-fazbears-pizza.fandom.com/search?query=\u0002\u00010", - "et": "http://www.finanzen.net/suchergebnis.asp?frmAktiensucheTextfeld=\u0002\u000115", - "ite": "//www.reddit.com/r/FortNiteBR/search/?q=\u0002&restrict_sr=1\u00010", - "ova": "//www.fashionnova.com/pages/search-results?q=\u0002\u00010", - "vnm": "//www.nexusmods.com/newvegas/search/?gsearch=\u0002&gsearchtype=mods\u00010" - }, - "o": { - "\u0010": "http://file.org/extension/\u0002 \u00010", - "k": "http://zoeken.fok.nl/zoek/?searchmode=simple&tab=fok&startdate=&enddate=&startdatelast=&enddatelast=&bycreator=&byuser=&orderby=relevance&s_fields[]=titel&s_fields[]=bericht&s_fields[]=reacties&status[]=open&status[]=gesloten&status[]=sticky&status[]=openstick&status[]=centraal&q=\u0002\u00010", - "t": { - "f": "//www.focusonthefamily.com/search-results#q=\u0002&t=FocusOnTheFamilyOnly&sort=relevancy\u00010", - "\u0010": "//www.fotmob.com/search?q=\u0002\u00017", - "bollskanalen": "http://www.fotbollskanalen.se/sok?q=\u0002\u00010", - "olog": "//fotolog.com/search?query=\u0002\u00010" - }, - "w": { - "\u0010": "http://www.fowtcg.com/cards?w=\u0002\u00010", - "g": "//www.fowsystem.com/de/Kartendatenbank?page=&CERCA=cerca&cardname=\u0002&block=ALL&edition=ALL®ATT=or&cardnumber=&ABILITYTEXT=&ATKMIN=0&ATKMAX=2500&DEFMIN=0&DEFMAX=2500\u00010", - "iki": "http://fallout.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010", - "ler": "//duckduckgo.com/?q=site%3Amartinfowler.com+\u0002\u00010" - }, - "x": { - "\u0010": "http://www.foxnews.com/search-results/search?q=\u0002&submit=Search\u000141", - "lifeit": "//www.foxlife.it/search/?q=\u0002\u00010", - "news": "http://www.foxnews.com/search-results/search?q=\u0002\u00016", - "racing": "//www.foxracing.com/store/browse?_dyncharset=UTF-8&Dy=1&Nty=1&searchBox=searchBox&siteScope=ok&_D%3AsiteScope=+&autoSuggestEnabled=true&autoSuggestURL=%2Fstore%2Fassembler%3FassemblerContentCollection%3D%2Fcontent%2FShared%2FAuto-Suggest%2520Panels%26format%3Djson%26Dy%3D1%26Ntt%3D&minAutoSuggestInputLength=3&%2Fatg%2Fendeca%2Fassembler%2FSearchFormHandler.search=search&_D%3A%2Fatg%2Fendeca%2Fassembler%2FSearchFormHandler.search=+&Ntt=\u0002\u00010", - "sportsit": "//www.foxsports.it/?q=\u0002\u00010" - }, - "nq": { - "\u0010": "http://www.fonq.be/nl_BE/search/?search_term=\u0002#s=2\u00010", - "nl": "//www.fonq.nl/zoek/?fq=\u0002\u00010" - }, - "nt": { - "a": { - "\u0010": "//fontawesome.com/icons?d=gallery&q=\u0002\u00010", - "wesome": "//fontawesome.com/icons?q=\u0002\u000121" - }, - "\u0010": "http://www.identifont.com/find?font=\u0002&similar=\u0002\u00010", - "s": { - "\u0010": "http://www.fontsquirrel.com/fonts/list/find_fonts?q[term]=\u0002&q[search_check]=Y\u00016", - "q": "http://www.fontsquirrel.com/fonts/list/find_fonts?q[term]=\u0002&q[search_check]=Y\u00016", - "like": "http://www.identifont.com/find?similar=\u0002&q=Go\u00010", - "pace": "http://www.fontspace.com/search/?q=\u0002\u00010" - }, - "library": "//fontlibrary.org/en/search?query=\u0002\u00010" - }, - "od": { - "\u0010": "http://www.food.com/recipe-finder/all/\u0002\u00010", - "y": "//www.foody.vn/ho-chi-minh/dia-diem?q=\u0002&ss=header_search_form\u00010", - "2fork": "http://food2fork.com/top?q=\u0002\u00010", - "network": "http://www.foodnetwork.com/search/delegate.do?fnSearchString=\u0002&fnSearchType=site\u00010", - "subs": "http://search.freefind.com/find.html?id=81296093&pageid=r&query=\u0002\u00010" - }, - "ol": "http://www.fool.com/search/index.aspx?go=1&site=USMF&q=\u0002&source=ifltnvsnq0000001&mbbid=BoardID&mbmid=MessageID\u00010", - "rt": { - "\u0010": "//fortnite.gamepedia.com/index.php?search=\u0002\u00010", - "inet": "//www.fortinet.com/search.html?q=\u0002\u00010", - "nite": { - "\u0010": "http://epicgames.com/fortnite/en-US/search?q=\u0002\u00010", - "stats": "//fortnitestats.com/stats/\u0002\u00010" - } - }, - "calprice": "http://www.focalprice.com/buy/\u0002.html\u00010", - "ldoc": "http://foldoc.org/\u0002\u00010", - "lddown": "//folddownpro.com/search.php?search_query=\u0002\u00010", - "lha": "http://search.folha.com.br/search?q=\u0002\u00010", - "lkets": "http://folkets-lexikon.csc.kth.se/folkets/#lookup&\u0002&0\u000111", - "lktunefinder": "http://www.folktunefinder.com/tunes?text=\u0002\u00010", - "lkwiki": "http://www.folkwiki.se/?n=Meta.Start&action=search&q=\u0002\u00010", - "llow": "http://www.followthatpage.com/?url=\u0002\u00013", - "necta": "//www.fonecta.fi/henkilot/haku/-/\u0002/\u00010", - "oby": "//fooby.ch/de/suche.html?query=\u0002&treffertyp=rezepte\u00010", - "otage": "http://www.dissolve.com/products?keywords=\u0002\u00010", - "otlocker": "http://www.footlocker.com/_-_/keyword-\u0002\u00010", - "rbes": "http://search.forbes.com/search/find?MT=\u0002\u00015", - "rdsix": "//fordsix.com/search.php?keywords=\u0002\u00010", - "rewordreviews": "//www.forewordreviews.com/search/?q=\u0002\u00010", - "rexstation": "//forex-station.com/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Search\u00010", - "rkd": "http://forkd.com/recipe/search?q=\u0002\u00010", - "rosuse": "http://www.forosuse.org/?q=\u0002\u00010", - "rrester": "//www.forrester.com/search?tmtxt=\u0002\u00010", - "r-two": "//for-two-store.com/search?q=\u0002\u00010", - "rum": "//duck.co/forum/search?q=\u0002\u000112", - "rvo": "http://forvo.com/search/\u0002/\u0001127", - "ssd": { - "\u0010": "//fossdroid.com/s/\u0002.html\u00010", - "roid": "//fossdroid.com/s.html?q=\u0002\u00014" - }, - "ssil": "//www.fossil.com/uk/en/search.\u0002.html\u00010", - "sshub": "//www.fosshub.com/search/\u0002\u00015", - "und": "//foundland.shop/search?query=\u0002\u00010", - "ursquare": "//foursquare.com/explore?q=\u0002\u00010", - "yles": "http://www.foyles.co.uk/qsearch/All/All?term=\u0002\u00010" - }, - "p": { - "e": "//florida-prep.org/search?q=\u0002\u00010", - "\u0010": "http://www.fanpop.com/search?query=\u0002\u00010", - "o": { - "\u0010": "http://www.freepatentsonline.com/result.html?sort=relevance&srch=top&query_txt=\u0002&submit=&patents=on\u00010", - "rts": "http://www.freebsd.org/cgi/ports.cgi?query=\u0002&stype=all\u000112" - }, - "s": { - "\u0010": "//apps.fedoraproject.org/packages/s/\u0002\u000114", - "tory": "//www.fictionpress.com/search/?keywords=\u0002&ready=1&type=story\u00010" - }, - "cs": "//duckduckgo.com/?q=site:forum.pcsoft.fr+\u0002\u00010", - "unch": "//forum.facepunch.com/search/?q=\u0002\u00010", - "writer": "//www.fictionpress.com/search/?keywords=\u0002&ready=1&type=writer\u00010" - }, - "r": { - "c": { - "\u0010": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u00018", - "s": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u00018" - }, - "g": { - "e": "http://dictionnaire.reverso.net/francais-allemand/\u0002\u00010", - "\u0010": "//www.fastreplacementglass.com/index.php?route=product/search&search=\u0002\u00010" - }, - "i": { - "\u0010": "//www.franceinter.fr/recherche?q=\u0002\u00010", - "t": { - "\u0010": "http://translate.google.com/#fr/it/\u0002\u00014", - "h": "//www.francisfrith.com/search?q=\u0002\u00010" - }, - "da": "//frida.fooddata.dk/food/search?lang=en&q=\u0002\u00010", - "nk": { - "\u0010": "http://www.futureboy.us/fsp/frink.fsp?fromVal=\u0002\u00010", - "iac": "//frinkiac.com/?p=search&q=\u0002\u000152" - }, - "ss": "//www.fressnapf.de/s/search?text=\u0002\u00010", - "ght": "//frightfind.com/?s=\u0002\u00010", - "sky": "//www.friskyradio.com/search/?q=\u0002\u00010" - }, - "\u0010": "http://www.larousse.fr/dictionnaires/francais/\u0002\u0001182", - "s": "http://www.freesound.org/search/?q=\u0002\u00017", - "w": { - "\u0010": "http://www.freewave.at/?s=\u0002\u00010", - "iki": "//forgottenrealms.fandom.com/wiki/Special:Search?query=\u0002\u000111" - }, - "24": { - "f": "//www.flightradar24.com/data/flights/\u0002\u00017", - "\u0010": "//www.flightradar24.com/data/flights/\u0002\u00017" - }, - "ad": "//www.friday-ad.co.uk/uk/search/?keywords=\u0002\u00010", - "an": { - "\u0010": "http://www.fran.si/iskanje?View=2&Query= \u0002 \u000121", - "cheval": "//news.francheval.com/search?q=\u0002 \u00010" - }, - "ax": "//www.fransktlexikon.se/\u0002\u00010", - "ed": "//research.stlouisfed.org/fred2/search?st=\u0002\u000124", - "en": { - "\u0010": "http://translate.google.com/#fr/en/\u0002\u000140", - "ch": "http://french.stackexchange.com/search?q=\u0002\u00013" - }, - "es": { - "\u0010": "http://translate.google.com/#fr/es/\u0002\u00016", - "h": { - "\u0010": "//www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Damazonfresh&field-keywords=\u0002\u00010", - "desk": "//support.freshdesk.com/support/search?term=\u0002\u00010", - "ports": "//www.freshports.org/search.php?query=\u0002&search=go&num=10&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive\u000125" - } - }, - "jp": "http://dictionnaire.reverso.net/francais-japonais/\u0002\u00010", - "mb": "//framabee.org/?q=\u0002\u00010", - "pl": "http://dictionnaire.reverso.net/francais-polonais/\u0002\u00010", - "ru": "//translate.google.com/#fr/ru/\u0002\u00010", - "ys": "http://www.frys.com/search?search_type=regular&sqxts=1&query_string=\u0002\u00010", - "2de": "//translate.google.com/#view=home&op=translate&sl=fr&tl=de&text=\u0002\u00010", - "2en": "http://translate.google.com/#fr/en/\u0002\u000140", - "ack": "//frack.nl/w/index.php?title=Special%3ASearch&search=\u0002\u00010", - "agrantica": "//www.fragrantica.com/search/?q=\u0002\u00010", - "amal": "//framalibre.org/recherche-par-crit-res?keys=\u0002\u00010", - "amat": "//framatube.org/search?search=\u0002\u00010", - "amabee": "//framabee.org/?q=\u0002 \u00010", - "avega": "//www.fravega.com/\u0002\u00010", - "azeit": "http://fraze.it/n_search.jsp?q=\u0002\u00010", - "eeg": { - "\u0010": "//free.com.tw/?s=\u0002\u00010", - "roup": "//free.com.tw/?s=\u0002\u00010" - }, - "eep": { - "\u0010": "//www.freerepublic.com/tag/\u0002/index?tab=articles\u00010", - "ik": "http://www.freepik.com/index.php?goto=2&searchform=1&k=\u0002\u00017", - "ascal": "http://wiki.freepascal.org/index.php?search=\u0002\u00010" - }, - "eebsd": { - "\u0010": "//www.freebsd.org/cgi/ports.cgi?query=\u0002\u00015", - "man": "http://man.freebsd.org/\u0002\u00013" - }, - "eecol": "http://www.freecollocation.com/search?word=\u0002\u00010", - "eedict": { - "\u0010": "http://freedictionary.org/?Query=\u0002&button=Search\u000129", - "ionary": "http://freedictionary.org/?Query=\u0002&button=Search\u000129" - }, - "eedom": { - "\u0010": "//www.freedommobile.ca/support/search/faq-search-results?q=\u0002\u00010", - "press": "//freedom.press/search/?query=\u0002\u00010" - }, - "eelancer": "//www.freelancer.com/work/\u0002/\u00010", - "eelancinghacks": "http://freelancinghacks.com/?s=\u0002\u00010", - "eenode": "http://webchat.freenode.net/?channels=\u0002\u00010", - "eesfx": "http://www.freesfx.co.uk/sfx/\u0002\u00010", - "eesound": "http://www.freesound.org/search/?q=\u0002\u00017", - "ee-theme-download": "//free-theme-download.com/search?term=\u0002\u00010", - "eethesaurus": "http://www.freethesaurus.com/\u0002\u00010", - "eitag": "//www.freitag.de/@@search?SearchableText=\u0002&SubmitSearch=Suche\u00010", - "eqcheck": "//www.frequencycheck.com/search?s=\u0002\u00010", - "equencycheck": "//www.frequencycheck.com/search?s=\u0002\u00010", - "ontalux": "http://www.lesfrontaliers.lu/search?text=\u0002\u00010", - "ontiers": "http://www.frontiersin.org/SearchData.aspx?sq=\u0002\u00010", - "tech": "//fr.techdico.com/traduction/francais-anglais/\u0002\u00010", - "uit": "http://www.adafruit.com/search?q=\u0002&b=1\u00010", - "utke": "http://frutke.com/?s=\u0002\u00010", - ".wiktionary": "//fr.wiktionary.org/wiki/\u0002\u00010" - }, - "s": { - "c": "http://www.futura-sciences.com/magazines/sciences/recherche/?q=\u0002\u00010", - "d": { - "e": "http://www.fernsehserien.de/suche/\u0002\u00010", - "\u0010": "http://directory.fsf.org/wiki/\u0002\u000111" - }, - "\u0010": "//factualsearch.news/#/&gsc.q=\u0002 \u00018", - "f": { - "d": "http://directory.fsf.org/wiki?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010", - "e": "//fsfe.org/cgi-bin/search.cgi?l=en&x=0&y=0&q=\u0002\u00010", - "\u0010": "http://www.fsf.org/search?SearchableText=\u0002 \u00010" - }, - "h": "//wiki.foodsharing.de/index.php?search=\u0002\u00010", - "k": "//www.freesteamkeys.com/search_gcse/?q=\u0002\u00010", - "m": "http://futurism.com/?s=\u0002\u00010", - "arating": "http://ratings.food.gov.uk/enhanced-search/en-GB/\u0002/%5E/alpha/0/%5E/%5E/1/1/10\u00010" - }, - "t": { - "b": { - "\u0010": "http://ftb.gamepedia.com/index.php?search=\u0002\u00016", - "wiki": "//ftb.gamepedia.com/index.php?title=Special:Search&search=\u0002\u00010" - }, - "\u0010": "//www.ft.com/search?q=\u0002\u000199", - "k": "//www.farmacotherapeutischkompas.nl/snelzoeken?zoekterm=\u0002&domein=geneesmiddelen\u00010", - "l": { - "\u0010": "http://ftl.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "n": "//www.futurelearn.com/search?q=\u0002\u00010", - "r": "//www.dicemagazine.com/search?q=\u0002\u00010" - }, - "n": { - "\u0010": "//www.fortuneo.fr/recherche?term=\u0002\u00010", - "l": "//www.filmtotaal.nl/zoeken/?q=\u0002\u00010" - }, - "s": "//apollo.fintechstudios.com/search?searchQuery=\u0002\u00010", - "u": "//www.freetutorials.us/?s=\u0002\u00010", - "w": "//wiki.factorio.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000136", - "-db": "//ft-datenbank.de/tickets?fulltext=\u0002\u00010", - "hes": "//www.freethesaurus.com/\u0002\u00010", - "hub": "//flathub.org/apps/search/\u0002\u000169" - }, - "v": { - "\u0010": "http://finviz.com/quote.ashx?t=\u0002\u000162", - "z": "http://finviz.com/quote.ashx?t=\u0002&ty=c&ta=1&p=d\u000111", - "iewau": "http://www.freeview.com.au/tv-search/?search=\u0002&x=0&y=0\u00010" - }, - "w": { - "b": "//www.filmweb.pl/search?q=\u0002\u00010", - "\u0010": "http://www.forgottenweapons.com/?s=\u0002\u00013", - "y": "//www.fayerwayer.com/?q=\u0002\u00010", - "cj": "//foodwishes.blogspot.com/search?q=\u0002\u00010", - "tv": "http://www.fwtv.tv/buscar/\u0002\u00010", - "iki": "http://fortranwiki.org/fortran/search?query=\u0002\u00010", - "pkg": "http://frugalware.org/packages?op=pkg&arch=all&ver=current&srch=\u0002\u00010" - }, - "z": "//duckduckgo.com/?q=site%3Afz.se+\u0002\u00010", - "e7": "//fireemblem.fandom.com/search?query=\u0002\u00010", - "ee": { - "\u0010": "//fee.org/search/?q=\u0002\u00010", - "t": "//www.wikifeet.com/search/\u0002\u00010", - "dbooks": "http://www.feedbooks.com/search?query=\u0002\u00010", - "dly": "//feedly.com/i/search/\u0002\u00016", - "dough": "//www.feedough.com/?s=\u0002\u00010" - }, - "eh": { - "\u0010": "//feheroes.gamepedia.com/index.php?search=\u0002\u000115", - "w": "//feheroes.gamepedia.com/index.php?search=\u0002\u000115" - }, - "er": "http://www.fer.unizg.hr/search?sq=\u0002 &s_skip=0\u00015", - "es": { - "\u0010": "http://www.folklore.ee/justkui/sonastik/?otsing=\u0002&paring=Otsi\u00010", - "er": "//edwardfeser.blogspot.com/search?q=\u0002 \u00010" - }, - "ew": { - "\u0010": "//fireemblemwiki.org/w/index.php?title=Special%3ASearch&search=\u0002\u0001272", - "iki": "//fireemblemwiki.org/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010" - }, - "ex": { - "\u0010": "//www.firesidexpressions.com/index.php?route=product/search&search=\u0002\u00010", - "trads3": "//darksouls3.wiki.fextralife.com/\u0002\u00010" - }, - "up": "http://filmup.leonardo.it/cgi-bin/search.cgi?ps=10&fmt=long&sy=0&q=\u0002\u00010", - "xp": "//www.fxp.co.il/google.php?q=\u0002\u00014", - "xr": "http://fxr.watson.org/fxr/ident?i=\u0002\u00010", - "ye": "//www.fye.com/search?q=\u0002\u00013", - "yt": "//www.fiyatlab.com/?s=\u0002\u00010", - "edex": "//www.fedex.com/fedextrack/?trknbr=\u0002\u0001226", - "edkojip": "//koji.fedoraproject.org/koji/search?match=glob&type=package&terms=\u0002\u00010", - "edman": "http://linuxmanpages.net/search.py?q=\u0002\u00010", - "edora": { - "\u0010": "//fedoraproject.org/wiki/Special:Search?search=\u0002\u00018", - "magazine": "//fedoramagazine.org/?s=\u0002\u00010", - "pkg": "//apps.fedoraproject.org/packages/s/\u0002\u000114", - "wiki": "//fedoraproject.org/wiki/Special:Search?search=\u0002&go=Go\u00010" - }, - "edpack": "//apps.fedoraproject.org/packages/s/\u0002\u000114", - "edreg": "//www.federalregister.gov/documents/search?conditions%5Bterm%5D=\u0002\u00010", - "efe": "//blog.fefe.de/?q=\u0002\u000149", - "egtherm": "http://fegtherm.hu/?s=\u0002\u00010", - "elleskatalogen": "http://felleskatalogen.no/medisin/sok?sokord=\u0002\u00010", - "eltrinelli": "http://www.lafeltrinelli.it/fcom/it/home/pages/catalogo/searchresults.html?prkw=\u0002\u00010", - "ettrechner": "http://www.fettrechner.de/cgi-bin/kalorientabelle.pl?t=temsearch&sort=BEZEICHNUNG&f=*RUBRIK%2C*SUCHBEGRIFFE%2C*BEZEICHNUNG%2C*HERSTELLER&f1=HERSTELLER&start=1&dif=50&c=\u0002\u00010", - "ubib": "//www.ub-katalog.fernuni-hagen.de/F/?func=find-b&request=\u0002&find_code=WRD\u00010", - "uget": "//www.fuget.org/packages?q=\u0002\u00010", - "uglymugcompany": "//fuglymugcompany.com/search?type=product&q=\u0002\u00010", - "uji": "//www.fujitv.co.jp/search/index.html?keyword=\u0002\u00010", - "ullcontact": "//app.fullcontact.com/#/search/\u0002\u00010", - "ullform": { - "\u0010": "//www.fullformgo.com/term/\u0002\u00010", - "s": "http://fullforms.com/\u0002 \u00010" - }, - "uni": "//www.funimation.com/search/?q=\u0002\u00010", - "unda": "http://www.funda.nl/koop/\u0002\u00010", - "unky": "//funkytime.tv/search?q=\u0002\u00010", - "undeu": "//www.fundeu.es/?s=\u0002\u00015", - "unfact": "//wtffunfact.com/?s=\u0002\u00010", - "unplass": "//funplass.com/recherche.php?what=\u0002&where=0&when=0\u00010", - "untoo": "http://www.funtoo.org/index.php?search=\u0002\u00010", - "uret": "http://www.furet.com/catalogsearch/result/?q=\u0002 \u00015", - "uraffinity": "//www.furaffinity.net/search/?q=\u0002\u0001203", - "usetron": "//www.fusetronsound.com/search?q=\u0002\u00010", - "usionfall": "http://fusionfall.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "uskanu": { - "\u0010": "http://fuska.nu/sok/?search=\u0002\u00010", - "forum": "http://fuska.nu/forum/sok.php?sok=\u0002\u00010" - }, - "ussball": { - "\u0010": "http://www.fussball.de/suche/-/text/\u0002\u00010", - "daten": "http://www.fussballdaten.de/suche/?\u0002\u00010" - }, - "utar": "http://futar.bkk.hu/?toCoord=\u0002&toName=\u0002&toSubName=\u0002&layers=GSVB\u00010", - "utbin": "//www.futbin.com/players?search=\u0002\u0001222", - "uthead": "http://www.futhead.com/16/players/?name=\u0002\u00010", - "uturama": "http://www.theinfosphere.org/index.php?search=\u0002\u00010", - "yndiq": "//fyndiq.se/search/?q=\u0002\u00010", - "yyd": "//fyyd.de/search?search=\u0002\u00010" - }, - "@": { - "\u0010": "//twitter.com/\u0002\u000140", - "fb": "//facebook.com/\u0002\u00010" - }, - "g": { - "a": { - "b": "//gab.ai/search/\u0002\u000124", - "e": { - "\u0010": "http://www.google.ae/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010", - "l": "http://www.focloir.ie/en/spellcheck/ei/?q=\u0002\u00010", - "n": "http://translate.google.com/#ga/en/\u0002\u00010" - }, - "f": { - "\u0010": "http://www.lexilogos.com/latin/gaffiot.php?q=\u0002\u00010", - "oc": "http://www.focloir.ie/en/dictionary/ei/\u0002?advSearch=1&q=\u0002&inlanguage=ga\u00010" - }, - "g": { - "\u0010": "//www.girlsaskguys.com/search?q=\u0002\u00015", - "ol": "//gymnasium-gag.de/?s=\u0002\u00010" - }, - "\u0010": "http://www.google.com.au/search?q=\u0002\u00011952", - "h": "//gethuman.com/phone-number/search/\u0002\u00013", - "l": { - "\u0010": "//duckduckgo.com/?q=\u0002+site:abretelibro.com\u00010", - "axy": "//galaxy.ansible.com/search?keywords=\u0002\u000111", - "axus": "//www.galaxus.ch/de/Search?searchSectors=0&q=\u0002\u000141", - "erts": "//www.google.com/alerts?q=\u0002\u00010", - "inos": "//www.galinos.gr/web/drugs/main/search?q=\u0002\u00010", - "lica": "http://gallica.bnf.fr/Search?ArianeWireIndex=index&p=1&lang=FR&q=\u0002\u00010" - }, - "m": { - "\u0010": "http://direct3d.ir/forum/search/?keywords=\u0002\u00010", - "e": { - "\u0010": "http://www.game.co.uk/webapp/wcs/stores/servlet/AjaxCatalogSearch?storeId=10151&catalogId=10201&langId=44&pageSize=&beginIndex=0&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&pageView=image&predictiveSearchURL=&searchTerm=\u0002&searchBtn=z\u00019", - "s": { - "\u0010": "//www.crazygames.com/search?q=\u0002\u00014", - "lol": "//games.lol/search/\u0002\u00010", - "pot": "http://www.gamespot.com/search/?q=\u0002\u000115", - "radar": "//www.gamesradar.com/search/?searchTerm=\u0002\u00010", - "tar": "http://www.gamestar.de/index.cfm?pid=109&s=\u0002\u00010", - "top": "//www.gamestop.com/search/?q=\u0002&lang=default\u000112" - }, - "za": "//www.game.co.za/game-za/en/search/?text=\u0002\u00010", - "banana": "http://gamebanana.com/skins/search?search=\u0002 \u00010", - "cheats": "http://www.cheatcc.com/search_results.html?sitesearch=CheatCC.com&domains=CheatCC.com&q=\u0002&sa=Google+Search&client=pub-7081624040320322&forid=1&ie=UTF8&oe=UTF8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%230000FF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A0%3BLW%3A0%3BL%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Fccclink.gif%3BS%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Findex2.html%3BFORID%3A11\u00010", - "faqs": "http://www.gamefaqs.com/search/index.html?game=\u0002&platform=0\u000128", - "fly": "//www.gamefly.com/#!/search/all?q=\u0002\u00010", - "front": "//www.gamefront.com/search/files?q=\u0002\u00010", - "informer": "//www.gameinformer.com/search?keyword=\u0002\u00010", - "jolt": "http://gamejolt.com/search/?q=\u0002\u00010", - "kings": "http://www.gamekings.tv/index.php?cat=3&s=\u0002\u00010", - "kult": "//www.gamekult.com/rechercher-jeu.html?q=\u0002\u00010", - "mar": "//www.gamemar.com/?s=\u0002\u00010", - "pressure": "http://games.gamepressure.com/games_encyclopedia.asp?search=\u0002\u00010", - "rankings": "http://www.gamerankings.com/browse.html?search=\u0002\u00010", - "rgen": "http://www.gamergen.com/s/\u0002\u00010", - "rsgate": "http://gamersgate.com/games?q=\u0002\u00010", - "zebo": "http://www.gamezebo.com/search/games?query=\u0002\u00010" - }, - "ma": "//www.gamma.nl/assortiment/zoeken?text=\u0002\u00010", - "asutra": "http://www.gamasutra.com/search/?search_text=\u0002\u00010", - "ing": { - "\u0010": "http://gaming.stackexchange.com/search?q=\u0002\u00015", - "box": "http://thegamingbox.pfweb.eu/?s=\u0002\u00010" - } - }, - "p": { - "\u0010": "http://graph.anime.plus/\u0002\u00015", - "p": "//play.google.com/store/search?q=\u0002\u00015" - }, - "r": { - "\u0010": "http://www.google.com.ar/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001365", - "en": "//glosbe.com/ar/en/\u0002\u00010", - "oa": "//garoa.net.br/w/index.php?search=\u0002\u00010", - "barino": "//www.garbarino.com/productos?q=\u0002\u00010", - "den": { - "\u0010": "http://www.garden-en.com/s/en/?type=sfd&query=\u0002\u00010", - "ersworld": "http://www.gardenersworld.com/search/\u0002\u00010" - }, - "rysmart": "//www.garrysmart.com/scripts/?&t=a&q=\u0002\u00010", - "tenexperte": "//www.mein-gartenexperte.de/suche?keywords=\u0002\u00010" - }, - "s": { - "\u0010": "http://www.google.as/search?q=\u0002\u00013", - "olina": "//www.maisgasolina.com/pesquisa/\u0002/\u00010" - }, - "t": { - "\u0010": "http://www.google.at/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001279", - "herer": "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[\u0002]\u0001138" - }, - "u": "http://www.google.com.au/search?&source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001873", - "dv": "//www.gadventures.com/search/?q=\u0002&ref=ddgsearch\u00013", - "ia": "//www.vn-gaia.com/search?SearchForm%5Bkeyword%5D=\u0002&SearchForm%5BlimitSpaceGuids%5D=\u00010", - "wi": "//wirtschaftslexikon.gabler.de/search/content?keys=\u0002\u00010", - "ana": "//gaana.com/search/\u0002\u00010", - "ccess": "http://www.google.com/cse?ie=UTF-8&cx=000183394137052953072%3Azc1orsc6mbq&q=\u0002t&btnG=Search\u00013", - "dgets": { - "\u0010": "http://gdgts.de/?s=\u0002\u00010", - "direct": "http://www.gadgetsdirect.com.au/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010", - "now": "//www.gadgetsnow.com/topic/\u0002?SEARCH_STRING=\u0002\u00010" - }, - "dgetflow": "http://thegadgetflow.com/?s=\u0002&submit=Search\u00010", - "ndi": "//www.gandi.net/domain/suggest?domain_list=\u0002\u00018", - "ndhi": "//www.gandhi.com.mx/catalogsearch/result/?q=\u0002\u00010", - "yburg": "http://gayburg.blogspot.com/search?q=\u0002: \u00016", - "zeta": "//www.gazetadopovo.com.br/busca/?q=\u0002\u00010" - }, - "b": { - "a": { - "\u0010": "//mail.google.com/mail/u/\u0002\u000166", - "n": "http://gamebanana.com/skins/search?search=\u0002 \u00010", - "t": "//gbatemp.net/search/87708019/?q=\u0002\u00010" - }, - "c": "//www.greatbritishchefs.com/search2#?pi=1&ps=48&st=\u0002&orderby=\u00010", - "e": { - "\u0010": "http://www.google.be/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001266", - "o": "//en.glosbe.com/en/eo/\u0002\u00010" - }, - "f": "//gbf.wiki/index.php?search=\u0002\u0001141", - "g": "http://www.google.bg/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00016", - "\u0010": "http://books.google.com/books?q=\u0002&btnG=Search+Books\u0001548", - "k": "//www.google.com/bookmarks/l#!q=\u0002\u00010", - "m": "//www.google.com/bookmarks/find?q=\u0002\u00010", - "n": "http://gamebanana.com/search?query=\u0002\u00010", - "o": { - "\u0010": "http://german-bash.org/?searchtext=\u0002&search_in=both&action=search_\u00010", - "oks": "//www.google.com/search?nfpr=1&tbm=bks&q=\u0002\u0001136" - }, - "r": "http://www.google.com.br/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00011177", - "s": "//gigablast.com/search?c=main&index=search&q=\u0002\u00014", - "ip": "http://www.booksinprint.com/Search/Results?q=quicksearch-all%3A\u0002&op=1&qs=1\u00010", - "last": "http://gigablast.com/search?q=\u0002 \u00010", - "p2brl": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=BRL\u00010", - "p2eur": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=EUR\u00010", - "p2nzd": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=NZD\u00010", - "p2usd": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=USD\u00010", - "ugs": "//bugs.gentoo.org/buglist.cgi?quicksearch=\u0002\u000120" - }, - "c": { - "a": { - "\u0010": "http://www.google.ca/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001988", - "l": "//calendar.google.com/calendar/b/0/r/search?q=\u0002\u00011351", - "t": "http://www.google.cat/#q=\u0002\u00013", - "fe": "//www.gamerscafe.com.br/pesquisa/\u0002/\u00010" - }, - "c": "//www.google.com/search?tbm=isch&tbs=sur:fmc&as_q=\u0002\u000115", - "\u0010": "//contacts.google.com/search/\u0002\u00017", - "h": "http://www.google.ch/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001665", - "i": { - "\u0010": "//www.google.co.ck/search?q=\u0002\u00010", - "de": "http://gcide.gnu.org.ua/?q=\u0002 &define=Define&strategy=.\u00010" - }, - "k": "//www.google.co.ck/search?q=\u0002\u00010", - "l": "http://www.google.cl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001615", - "m": { - "\u0010": "http://www.gcmap.com/mapui?P=\u0002&MS=wls&DU=nm\u00014", - "ap": "http://www.gcmap.com/mapui?P=\u0002\u00013" - }, - "n": "http://www.google.cn/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010", - "o": { - "\u0010": "http://www.google.com.co/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00013", - "de": "//code.google.com/hosting/search?q=\u0002\u00010", - "ntact": "//contacts.google.com/search/\u0002\u00017" - }, - "p": "//cloud.google.com/s/results/?q=\u0002\u000141", - "s": "//cloudsearch.google.com/cloudsearch/search?q=\u0002\u000139", - "u": { - "\u0010": "//www.google.com/search?q=\u0002&source=lnt&tbs=ctr:countryCU&cr=countryCU\u00010", - "bed": "//cse.google.com/cse/publicurl?cx=007995818864770319293:3weihy1amkc&cof=FORID:1&q=\u0002\u00010", - "ltinst": "//www.google.com/culturalinstitute/browse/\u0002\u00010" - }, - "w": "http://de.creepypasta.wikia.com/wiki/Spezial:Suche?query=\u0002\u00010", - "y": "//www.google.com.cy/search?q=\u0002\u00015", - "z": "http://www.google.cz/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001205", - "ba": "http://www.buenosaires.gob.ar/bweb/search?keys=\u0002\u00010", - "ro": "//www.google.hr/#q=\u0002&*\u00017", - "enter": "//www.guitarcenter.com/search?typeAheadSuggestion=true&typeAheadRedirect=true&Ntt=\u0002\u00010" - }, - "d": { - "b": "http://duckduckgo.com/?q=site:sourceware.org/gdb/current/onlinedocs/gdb/+\u0002\u00013", - "d": "http://docs.godotengine.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00014", - "e": { - "f": "//www.google.com/search?hl=en&q=define+\u0002\u000189", - "\u0010": "http://www.google.de/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00017190", - "v": { - "\u0010": "//gamedev.stackexchange.com/search?q=\u0002\u00010", - "s": "//developers.google.com/s/results/?q=\u0002\u00010" - }, - "en": "//translate.google.com/#de/en/\u0002\u000111" - }, - "\u0010": "//docs.google.com/document/u/0/?q=\u0002\u0001453", - "k": "http://www.google.dk/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001273", - "s": "http://www.goodsearch.com/search-web?keywords=\u0002\u00010", - "t": "http://gdt.oqlf.gouv.qc.ca/resultat.aspx?terme=\u0002\u00019", - "v": "//docs.google.com/viewer?url=\u0002\u00010", - "z": "http://gdz.sub.uni-goettingen.de/en/dms/suche/?tx_goobit3_search[formquery]=\u0002&tx_goobit3_search[order]=1&tx_goobit3_search[default]=METADATA&tx_goobit3_search[orderfield]=BYCREATOR&tx_goobit3_search[link]=0\u00010", - "ay": "http://www.google.com/search?q=\u0002&tbs=qdr:d\u000180", - "gt": "http://gdgt.com/search/\u0002\u00010", - "lc": "http://www.diccionari.cat/cgi-bin/AppDLC3.exe?APP=CERCADLC&GECART=\u0002&x=0&y=0\u00010", - "ns": "//dns.google.com/query?name=\u0002&type=A&dnssec=true\u00017", - "himx": "http://www.gandhi.com.mx/catalogsearch/result/?q=\u0002 \u00010", - "iag": "//google.com/safebrowsing/diagnostic?site=\u0002\u00010", - "maps": "//ditu.amap.com/search?query=\u0002\u00010", - "ocs": "//docs.google.com/document/u/0/?pli=1&tgif=c&q=\u0002\u0001415", - "oms": "//domains.google.com/registrar?s=\u0002\u00013", - "omains": "//domains.google.com/registrar?s=\u0002\u00013", - "oodle": "//www.google.com/doodles?q=\u0002\u00014", - "rive": "//drive.google.com/drive/search?q=\u0002\u00011304" - }, - "e": { - "c": { - "\u0010": "//www.google.com.ec/search?safe=active&q=\u0002\u00019", - "ko": "//www.coingecko.com/en/search/bang?query=\u0002\u000127", - "uador": "//www.google.com.ec/search?safe=active&q=\u0002 \u00010" - }, - "e": { - "\u0010": "http://www.google.ee/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00014", - "k": { - "\u0010": "//www.geeks-curiosity.net/?s=\u0002\u00013", - "s": { - "\u0010": "//www.geeksforgeeks.org/?s=\u0002\u00018", - "ided": "http://geeksided.com/?s=\u0002\u00010" - }, - "u": "http://www.geekunivers.com/?s=\u0002 \u00010", - "bench": "http://browser.geekbench.com/v4/cpu/search?q=\u0002\u00010", - "buying": "http://www.geekbuying.com/Search/?keyword=\u0002\u00010" - }, - "n": { - "\u0010": "//translate.google.com/#ge/en/\u0002\u00016", - "stijl": "http://www.geenstijl.nl/fastsearch?query=\u0002&zoek=zoek\u00010" - }, - "cr": "//geecr.com/search/\u0002\u00010" - }, - "\u0010": "//google.com/#q=\u0002\u000196", - "m": { - "\u0010": "//rubygems.org/search?utf8=%E2%9C%93&query=\u0002\u0001470", - "s": "http://rubygems.org/search?query=\u0002\u000122", - "ug": "http://www.gemug.ge/?s=\u0002\u00010", - "atsu": "//gematsu.com/?s=\u0002\u00010", - "atria": "//www.gematrix.org/?word=\u0002\u00010" - }, - "n": { - "e": { - "a": "//www.genealogieonline.nl/en/zoeken/?q=\u0002 \u00010", - "\u0010": "//www.ncbi.nlm.nih.gov/gene/?term=\u0002 \u00014", - "cards": "http://www.genecards.org/index.php?path=/Search/keyword/\u0002\u00013", - "rasia": "http://www.generasia.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "sis": "http://gen.lib.rus.ec/search.php?req=\u0002&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def\u000185" - }, - "\u0010": "http://genius.com/search?q=\u0002\u0001895", - "hu": "//en.glosbe.com/en/hu/\u0002\u000115", - "ma": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Fgenma.free.fr\u00010", - "bank": "http://www.ncbi.nlm.nih.gov/nuccore/?term=\u0002\u000117", - "der": "http://gender.wikia.com/search?query=\u0002\u00010", - "ickbruch": "http://genickbruch.com/index.php?befehl=suche&sname=\u0002\u00010", - "ius": "//genius.com/search?q=\u0002\u00013204", - "pkg": "//packages.gentoo.org/packages/search?q=\u0002\u0001110", - "too": { - "\u0010": "http://wiki.gentoo.org/index.php?search=\u0002\u0001206", - "pkg": "//packages.gentoo.org/packages/search?q=\u0002\u0001110", - "wiki": "//wiki.gentoo.org/index.php?search=\u0002\u000111" - } - }, - "o": { - "\u0010": "http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=\u0002\u00013", - "ip": { - "\u0010": "http://www.infosniper.net/index.php?ip_address=\u0002\u000117", - "tool": "http://geoiptool.com/fr/?IP=\u0002\u00010" - }, - "awesome": "http://geoawesomeness.com/?s=\u0002\u00010", - "cache": "http://www.geocaching.com/seek/nearest.aspx?key=\u0002\u00010", - "caching": "http://www.geocaching.com/seek/nearest.aspx?key=\u0002\u00010", - "graph": { - "\u0010": "//www.geograph.org.uk/of/\u0002\u00016", - "y": "//geofactoftheday.blogspot.com/search?q=\u0002\u00010" - }, - "names": "http://www.geonames.org/search.html?q=\u0002\u00010", - "norge": "//kartkatalog.geonorge.no/search?text=\u0002\u00010", - "rges": "http://www.zeno.org/Zeno/0/Suche?q=\u0002&k=Georges-1913\u00010", - "tool": "//iplookup.flagfox.net/?ip=\u0002\u00017", - "uri": "//www.openstreetmap.org/search?query=\u0002#map=7/0.000/-60.000\u00010" - }, - "s": "//www.google.es/search?q=\u0002 \u00012470", - "x": "//search.gexsi.com/en/search/?q=\u0002\u00017", - "ar": { - "\u0010": "//www.gbase.com/gear?q=\u0002\u00010", - "r": "http://ffxiv.gamerescape.com/wiki/Special:Search?search=\u0002\u000124", - "best": "http://www.gearbest.com/\u0002 -_gear/\u00010" - }, - "fr": "http://dictionnaire.reverso.net/allemand-francais/\u0002\u00010", - "iz": { - "\u0010": "//geizhals.eu/?fs=\u0002\u0001223", - "hals": { - "\u0010": "http://geizhals.at/eu/?in=&fs=\u0002\u0001151", - "at": "//geizhals.at/?in=&fs=\u0002\u00015", - "de": "http://geizhals.de/?fs=\u0002&in=\u0001108" - } - }, - "-t": "//www.ge-tracker.com/names/\u0002\u00010", - "ller": "//bienenzuchtbedarf-geller.de/shop/search?sSearch=\u0002\u00010", - "tabstract": "//www.getabstract.com/en/search?initial=true&query=\u0002\u00010", - "tchu": "http://www.getchu.com/php/nsearch.phtml?search_keyword=\u0002\u00010", - "tdeals": "//getdeals.co.in/search?q=\u0002\u00010", - "tfi": "//glosbe.com/et/fi/\u0002\u00010", - "thuman": "http://gethuman.com/phone-number/search/?q=\u0002\u00010", - "tlinkinfo": "http://www.getlinkinfo.com/info?link=\u0002\u00013", - "tracker": "//www.ge-tracker.com/names/\u0002\u00010", - "tty": { - "\u0010": "//www.gettyimages.com/photos/\u0002\u000118", - "images": "http://www.gettyimages.com/Search/Search.aspx?src=quick&contractUrl=1&family=creative&phrase=\u0002\u000110" - } - }, - "f": { - "a": { - "\u0010": "//www.google.com/search?hl=fa&q=\u0002\u00010", - "q": { - "\u0010": "http://www.gamefaqs.com/search/index.html?game=\u0002\u000112", - "s": "http://www.gamefaqs.com/search/index.html?game=\u0002&platform=0\u000128" - }, - "ctory": "http://geniusfactory.fr/search/\u0002\u00010" - }, - "c": "http://greatfirewallofchina.org/index.php?siteurl=\u0002\u00010", - "g": { - "\u0010": "//www.geeksforgeeks.org/?q=\u0002\u000111", - "uru": "//www.gurufocus.com/guru/\u0002/stock-picks\u00010" - }, - "\u0010": "http://finance.google.com/?q=\u0002&sa=N&tab=fe\u00011444", - "i": { - "\u0010": "//www.google.fi/search?q=\u0002\u0001207", - "et": "//glosbe.com/fi/et/\u0002\u00010", - "nance": "http://finance.google.com/?q=\u0002&sa=N&tab=fe\u00011444" - }, - "k": "//www.grafikart.fr/search?q=\u0002\u00010", - "l": { - "\u0010": "//www.google.com/flights/#search;t=\u0002\u000122", - "ights": "//www.google.com/flights/#search;t=\u0002\u000122" - }, - "r": "http://www.google.fr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00016072", - "x": "http://www.graffx.fr/blabla/index.php?q=\u0002\u00010", - "y": { - "\u0010": "//gfycat.com/gifs/search/\u0002\u000111", - "catdepot": "//www.reddit.com/r/GfycatDepot/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010" - }, - "bf": "//geriafurch.bzh/fr?q=\u0002&d=brfr\u00010", - "fb": "//geriafurch.bzh/fr?q=\u0002&d=frbr\u00013", - "ont": { - "\u0010": "//fonts.google.com/?query=\u0002\u00016", - "s": "//fonts.google.com/?query=\u0002\u00016" - }, - "ork": "//greasyfork.org/en/scripts?q=\u0002\u00016", - "orums": "//productforums.google.com/forum/#!topicsearch/\u0002\u00010", - "stock": "//www.gurufocus.com/stock/\u0002/summary\u00010", - "wiki": "//en.gfwiki.com/index.php?search=\u0002\u00010" - }, - "g": { - "b": { - "\u0010": "http://www.geogebra.org/cms/\u0002\u00019", - "tube": "http://tube.geogebra.org/search/perform/search/\u0002\u00010" - }, - "d": "//www.google.gp/?gws_rd=ssl#q= \u0002 \u00010", - "\u0010": "http://groups.google.com/groups/search?q=\u0002&qt_s=Search+Groups\u0001236", - "j": "http://globalgamejam.org/?q=\u0002\u00010", - "r": { - "\u0010": "http://www.google.gr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001150", - "law": "//ggr-law.com/suche/?id=1843&tx_kesearch_pi1%5Bsword%5D=\u0002\u00010", - "oups": "http://groups.google.com/groups/search?q=\u0002&qt_s=Search+Groups\u0001236" - }, - "ca": "//gabgagnon.ca/?s=\u0002\u00010", - "if": "//google.com/search?q=\u0002&site=webhp&tbm=isch&tbs=itp%3Aanimated\u000174", - "net": "//gamegator.net/search.php?q=\u0002\u00010" - }, - "\u0010": "//www.google.com/search?q=\u0002\u00012502564", - "+": "//plus.google.com/u/0/s/\u0002 \u00010", - "h": { - "c": { - "\u0010": "//github.com/search?utf8=✓&q=\u0002&type=Code\u000173", - "ode": "//github.com/search?utf8=✓&q=\u0002&type=Code\u000173" - }, - "\u0010": "//github.com/search?utf8=%E2%9C%93&q=\u0002\u000124154", - "k": "http://www.google.com.hk/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00011142", - "l": "http://www.groenehartscholen.nl/lyceum/=\u0002\u00010", - "p": "//github.com/search?q=is%3Aprivate+\u0002\u000117", - "r": { - "\u0010": "//github.com/\u0002\u000120", - "epo": "//github.com/\u0002\u000120" - }, - "t": { - "\u0010": "//github.com/trending/\u0002\u00010", - "opic": "//github.com/topic/\u0002\u00010" - }, - "u": { - "\u0010": "http://www.google.hu/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000174", - "s": { - "\u0010": "//github.com/\u0002/\u000138", - "er": "//github.com/search?type=Users&q=\u0002\u000112" - }, - "en": "//en.glosbe.com/hu/en/\u0002\u00015" - }, - "at": "//geizhals.at/?in=&fs=\u0002\u00015", - "de": "//geizhals.de/?fs=\u0002\u0001538", - "io": "//duckduckgo.com/?q=site%3Agithub.io+\u0002&ia=web\u00010", - "js": "//github.com/search?l=JavaScript&o=desc&q=\u0002&s=indexed&type=Code\u00010", - "acks": "//www.ghacks.net/?s=\u0002\u000124", - "ananews": "//ghananews.xyz/?s=\u0002\u00010", - "our": "//google.com/search?q=\u0002&tbs=qdr:h\u00010" - }, - "i": { - "a": { - "\u0010": "http://www.gia.edu/cs/Satellite?pagename=GST%2FDispatcher&childpagename=GIA%2FPage%2FReportCheck&c=Page&cid=1355954554547&reportno=\u0002\u00013", - "u": "//www.google.com.au/search?tbm=isch&q=\u0002&tbs=imgo:1\u00010", - "nt": { - "\u0010": "//www.giant-bicycles.com/global/search?keyword=\u0002\u00013", - "bomb": "http://www.giantbomb.com/search/?q=\u0002\u000140" - }, - "llozafferano": "//www.giallozafferano.it/ricerca-ricette/\u0002\u00010" - }, - "b": { - "\u0010": "//gibiru.com/results.html?q=\u0002&cx=partner-pub-5956360965567042%3A8627692578&cof=FORID%3A11&ie=UTF-8\u000156", - "bon": "//gibbon.co/search?q=\u0002\u00010", - "ert": { - "\u0010": "//www.gibert.com/catalogsearch/result/?q=\u0002\u00010", - "j": "http://www.gibertjoseph.com/catalogsearch/result/?q=\u0002\u00010" - } - }, - "c": { - "a": "http://www.google.ca/search?q=\u0002&tbm=isch\u000163", - "\u0010": "//www.google.com/search?q=\u0002&tbm=isch&sout=1\u00015" - }, - "d": "http://www.google.co.id/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000118", - "e": { - "\u0010": "http://www.google.ie/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000170", - "z": { - "\u0010": "http://geizhals.at/eu/?in=&fs=\u0002\u0001151", - "hals": "http://geizhals.at/eu/?in=&fs=\u0002\u0001151" - } - }, - "f": { - "f": { - "\u0010": "http://gif-finder.com/?s=\u0002\u00010", - "gaff": "http://community.giffgaff.com/t5/forums/searchpage/tab/message?q=\u0002\u00010" - }, - "\u0010": "//giphy.com/search/\u0002\u0001313", - "l": "http://google.com/search?btnI=1&q=\u0002\u000121", - "cities": "http://gifcities.org/?q=\u0002\u00010", - "tinfo": "http://www.giftinformation.se/searchpage/?query=\u0002\u00010" - }, - "\u0010": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000165366", - "i": "http://www.gesetze-im-internet.de/cgi-bin/htsearch?config=Gesamt_bmjhome2005&method=and&words=\u0002\u000115", - "k": "http://www.google.co.il/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00013", - "l": "//www.google.co.il/#q=\u0002\u00019", - "m": { - "g": "//www.google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u00011558", - "\u0010": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000165366", - "ages": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000165366" - }, - "n": "//www.google.co.in/search?q=\u0002\u0001179", - "p": { - "\u0010": "http://glosbe.com/it/pl/\u0002\u00010", - "hy": { - "\u0010": "http://giphy.com/search/\u0002 \u0001705", - "tv": "http://tv.giphy.com/\u0002\u00010" - } - }, - "r": "http://dearcomputer.nl/gir/?q=\u0002&s=8&imgtype=any\u00014", - "s": { - "\u0010": "//www.google.com/search?site=imghp&tbm=isch&q=\u0002\u0001671", - "t": "//gist.github.com/search?q=\u0002\u000164", - "se": "//gis.stackexchange.com/search?q=\u0002\u00010", - "afeoff": "http://www.google.com/images?safe=off&q=\u0002\u000148", - "off": "http://www.google.com/images?safe=off&q=\u0002\u000148", - "stackexchange": "http://gis.stackexchange.com/search?q=\u0002 \u00010" - }, - "t": { - "2": "//libgit2.github.com/libgit2/#HEAD/search/\u0002\u00010", - "\u0010": "//github.com/search?utf8=%E2%9C%93&q=\u0002\u000124154", - "i": { - "\u0010": "//www.google.fr/maps/dir/\u0002/\u0002\u00010", - "gnore": "//www.gitignore.io/api/\u0002\u00013" - }, - "l": { - "\u0010": "http://www.google.it/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001143", - "ab": "//gitlab.com/search?utf8=%E2%9C%93&search=\u0002&group_id=&repository_ref=\u0001146" - }, - "docs": "//git-scm.com/search/results?search=\u0002\u00014", - "hub": { - "\u0010": "http://github.com/search?q=\u0002&type=Everything&repo=&langOverride=&start_value=1\u00013674", - "help": "//help.github.com/search/?q=\u0002\u00010", - "stars": "//github.com/stars?utf8=%E2%9C%93&q=\u0002\u00013" - }, - "ote": "//gitote.in/explore/repos?q=\u0002\u00010", - "-scm": "//git-scm.com/search/results?search=\u0002\u00014", - "tigidiyor": "http://www.gittigidiyor.com/arama/?k=\u0002\u00010" - }, - "ga": { - "\u0010": "http://www.gigablast.com/search?q=\u0002\u00010", - "om": "http://gigaom.com/?s=\u0002\u00010", - "blast": "http://www.gigablast.com/search?q=\u0002\u00010", - "byte": "//www.gigabyte.com/Search?kw=\u0002\u00010", - "-cultures": "http://giga-cultures.com/recherche?controller=search&search_query=\u0002:\u00010", - "ntti": "http://www.gigantti.fi/search?SearchTerm=\u0002\u00017" - }, - "uk": "http://www.google.co.uk/search?tbm=isch&q=\u0002&tbs=imgo:1\u000112", - "ve": "//www.givero.com/search?q=\u0002\u00013", - "url": "//www.google.com/searchbyimage?image_url=\u0002\u000142", - "zes": "http://es.gizmodo.com/search?q=\u0002\u00010", - "zmodo": "http://gizmodo.com/search?q=\u0002\u000112", - "zoogle": "http://www.gizoogle.net/index.php?search=\u0002\u00010" - }, - "j": { - "\u0010": "http://www.google.co.jp/search?q=\u0002\u00011628", - "p": "http://www.google.co.jp/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001250", - "ensidige": "//www.gjensidige.no/s%C3%B8k?query=\u0002\u00010" - }, - "k": { - "\u0010": "//www.gamekult.com/rechercher-jeu.html?q=\u0002\u00010", - "r": "http://www.google.co.kr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000118" - }, - "l": { - "d": "//www.glassdoor.com/Reviews/company-reviews.htm?suggestCount=0&suggestChosen=false&clickSource=searchBtn&typedKeyword=\u0002+&sc.keyword=\u0002+&locT=&locId=&jobType=\u000114", - "k": "//www.google.lk/search?q=\u0002\u00010", - "n": "//www.gepir.de/?search=\u0002\u00010", - "\u0010": "//www.opengl.org/search/?cx=017055583490642512057%3Ahwpumfa180i&cof=FORID%3A9&q=\u0002\u000147", - "s": { - "e": "//german.stackexchange.com/search?q=\u0002\u00010", - "\u0010": "//duckduckgo.com/?q=site%3Agolang.org+\u0002\u00017" - }, - "t": "http://www.google.lt/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00014", - "u": { - "\u0010": "//www.google.lu/search?q=\u0002\u00013", - "ck": "http://www.google.com/search?q=\u0002&btnI\u0001101", - "tenfreerecipebox": "//glutenfreerecipebox.com/?s=\u0002\u00010" - }, - "v": "http://www.google.lv/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010", - "ab": "//gitlab.com/search?utf8=✓&search=\u0002\u000152", - "adrys": "http://gladrys.com/search0results-plant\u0002.html\u00010", - "assdoor": "//www.glassdoor.com/Job/jobs.htm?sc.keyword=\u0002\u000128", - "atest": "http://www.google.com/search?q=\u0002&tbs=rltm:1\u00010", - "ink": "http://www.google.com/search?as_lq=\u0002&hl=en&btnG=Search\u00010", - "itch": "//glitch.com/search?q=\u0002\u00010", - "mail": "http://www.theglobeandmail.com/search/?q=\u0002\u00010", - "obal": { - "\u0010": "http://www.globalresearch.ca/search?q=\u0002\u00010", - "edge": "http://globaledge.msu.edu/search?q=\u0002\u00010" - }, - "obeandmail": "//www.theglobeandmail.com/search/?q=\u0002&mode=all\u00010", - "obetrotter": "//www.globetrotter.de/search?q=\u0002\u00010", - "oboesporte": "//globoesporte.globo.com/busca/?q=\u0002\u00010", - "ocal": "http://local.google.com/maps?f=q&source=s_q&geocode=&q=\u0002\u00010", - "oriatv": "http://gloria.tv/?search=\u0002\u00013", - "otnl": "http://interglot.com/dictionary/nl/en/search?q=\u0002\u00010", - "otenes": "http://www.interglot.com/dictionary/en/es/search?q=\u0002 \u00010", - "otennl": "http://www.interglot.com/dictionary/en/nl/search?q=\u0002\u00010", - "otesen": "http://www.interglot.com/dictionary/es/en/search?q=\u0002 \u00010", - "ottolog": "http://glottolog.org/glottolog?search=\u0002\u00010", - "wiki": "//www.khronos.org/opengl/wiki_opengl/index.php?search=\u0002\u00013", - "yde": "http://glyde.com/stores/glyde#!display_as=2&s_query=\u0002\u00010" - }, - "m": { - "a": { - "\u0010": "//mail.google.com/mail/u/0/#search/\u0002\u0001724", - "n": { - "\u0010": "//support.google.com/search?q=\u0002\u00013", - "ews": "//www.gmanetwork.com/news/search/?q=\u0002\u00013" - }, - "p": { - "\u0010": "http://maps.google.com/maps?q=\u0002\u00012062", - "s": "http://maps.google.com/maps?q=\u0002\u00012062" - }, - "t": "//www.google.at/maps/search/\u0002\u00010", - "u": "//www.google.com.au/maps/search/\u0002 \u000132", - "il": { - "\u0010": "//mail.google.com/mail/#search/\u0002\u00018628", - "h": "//mail.google.com/mail/u/0/h/?s=q&q=\u0002&nvp_site_mail=Search%20Mail\u000130" - }, - "rket": "http://search.gmarket.co.kr/search.aspx?keyword=\u0002\u00010" - }, - "c": { - "a": "//www.google.ca/maps/?q=\u0002\u00017", - "\u0010": "//www.google.com/maps?q=\u0002&output=classic\u00015", - "l": "//www.google.cl/maps/place/\u0002\u00010" - }, - "d": { - "e": "//www.google.de/maps/place/\u0002\u000172", - "\u0010": "//www.google.com/maps/dir/\u0002\u000111", - "ir": "//www.google.com/maps/dir//\u0002\u000111" - }, - "e": "//www.gme.cz/vysledky-vyhledavani?search_keyword= \u0002\u00014", - "g": { - "f": "//www.greenmangaming.com/search/\u0002\u00010", - "\u0010": "//www.greenmangaming.com/search/\u0002\u00010" - }, - "\u0010": "//google.com/maps/place/\u0002\u000155145", - "l": "//www.gml.se/bocker/sok?q=\u0002\u00010", - "r": "//gumroad.com/discover?query=\u0002\u00015", - "x": "//www.google.com.mx/#q=\u0002\u000158", - "y": "http://www.google.com.my/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00016", - "fr": "//www.google.fr/maps/search/\u0002\u000121", - "il": "//www.google.co.il/maps/search/\u0002/?hl=iw\u00010", - "it": "//www.google.it/maps/place/\u0002\u00017", - "jp": "//www.google.co.jp/maps/place/\u0002\u00013", - "nl": "//www.google.de/maps/place/\u0002\u000172", - "ob": "http://www.google.com/gwt/x?u=\u0002\u00010", - "od": "http://wiki.garrysmod.com/page/Special:Search?search=\u0002&fulltext=Search\u000119", - "ps": "http://geekmps.fr/component/search/?searchword=\u0002 \u00016", - "si": "//www.google.si/maps/search/\u0002/\u00010", - "tw": "//www.google.com.tw/maps?hl=zh-TW&q=\u0002\u000143", - "uk": "//www.google.co.uk/maps/place/\u0002 \u000128", - "onth": "http://www.google.com/search?q=\u0002&tbs=qdr:m\u000138", - "usic": "http://music.google.com/music/listen?#\u0002_sr\u00013" - }, - "n": { - "b": { - "\u0010": "//www.bibleserver.com/search/GNB/\u0002/1\u00010", - "e": "//news.google.com/news/search/section/q/\u0002/?gl=BE&ned=nl_be&hl=nl\u00010" - }, - "\u0010": "//news.google.com/news/search/section/q/\u0002\u00019875", - "l": { - "\u0010": "http://www.google.nl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001571", - "m": "http://globalnewlightofmyanmar.com/?s=\u0002\u00010" - }, - "m": "http://www.google.com/m/search?site=news&q=\u0002\u00010", - "o": { - "\u0010": "http://www.google.no/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001110", - "me": { - "\u0010": "http://live.gnome.org/Home?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00014", - "bugs": "//gitlab.gnome.org/groups/GNOME/-/issues?search=\u0002\u00010", - "dev": "//developer.gnome.org/symbols/?q=\u0002\u00010", - "wiki": "//wiki.gnome.org/Home?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00010" - } - }, - "s": { - "e": "//news.google.com/search?q=\u0002&hl=sv&gl=SE&ceid=SE%3Asv\u00010", - "\u0010": "//google.com/search?q=\u0002&hl=es&prmd=niv&source=lnms&tbm=nws&sa=\u00010" - }, - "t": "http://www.generation-nt.com/s/\u0002/\u00010", - "u": { - "\u0010": "http://www.gnu.org/cgi-bin/estseek.cgi?phrase=\u0002\u00018", - "k": "//www.google.co.uk/search?hl=en&gl=uk&tbm=nws&authuser=0&q=\u0002\u000171", - "s": "//news.google.com/news/search/section/q/\u0002/\u0002?hl=en&ned=us\u000124" - }, - "z": "http://www.google.co.nz/search?&source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001198", - "at": "//www.google.at/#q=\u0002&tbm=nws\u00010", - "au": "//news.google.com/search?q=\u0002&hl=en-AU&gl=AU&ceid=AU%3Aen\u00010", - "ca": "//news.google.com/news/search/section/q/\u0002/\u0002?hl=en-CA&ned=ca\u00010", - "cr": "//www.google.com/search?gws_rd=cr&gl=us&hl=en&num=20&q=\u0002\u000176", - "da": "//www.google.com/?gws_rd=ssl#q=\u0002&tbs=ida:1&gl=us\u00010", - "de": "//news.google.com/news/search/section/q/\u0002?hl=de&ned=de\u0001242", - "es": "//www.google.es/search?q=\u0002&prmd=nvi&source=lnms&tbm=nws&sa=X&ved=0ahUKEwiTxIfujK3XAhXItRoKHTQfDLYQ_AUIEigB&biw=375&bih=553\u00010", - "fr": "http://www.google.fr/search?aq=f&hl=fr&gl=fr&tbm=nws&btnmeta_news_search=1&q=\u0002 \u000149", - "it": "//www.google.it/search?q=\u0002&hl=it&source=lnms&tbm=nws\u000140", - "nl": "//www.google.com/search?hl=nl&gl=nl&tbm=nws&q=\u0002\u00014", - "ru": "//www.google.ru/search?q=\u0002&tbm=nws&cad=h\u00010", - "avi": "//r.gnavi.co.jp/area/jp/rs/?fwr=\u0002\u00010", - "ews": "//news.google.com/news/search/section/q/\u0002/\u0002\u00011057" - }, - "o": { - "d": { - "e": "//dictionary.goo.ne.jp/word/en/\u0002/\u00010", - "\u0010": "http://www.gutsofdarkness.com/god/recherche.php?r1=\u0002\u000111", - "j": "//dictionary.goo.ne.jp/srch/jn/\u0002/m1u/\u00010", - "s": "//dictionary.goo.ne.jp/thsrs/3913/meaning/m1u/\u0002/\u00010", - "oc": "//godoc.org/?q=\u0002\u0001226", - "ot": { - "\u0010": "http://docs.godotengine.org/en/stable/search.html?q=\u0002&check_keywords=yes&area=default\u000184", - "qa": "//godotengine.org/qa/search?q=\u0002\u00010" - }, - "addy": "//www.godaddy.com/dpp/find?checkAvail=1%2c1&isc=daytona08&ci=8962&domainToCheck=\u0002\u00019", - "ville": "http://wiki.godvillegame.com/index.php?search=\u0002\u00010" - }, - "e": { - "\u0010": "//www.goettingen.de/portalsuche.html?keyword=\u0002\u00010", - "ttingen": "http://www.wiki-goettingen.de/index.php?search=\u0002\u00010" - }, - "g": { - "\u0010": "//www.gog.com/games?search=\u0002\u0001236", - "o": "http://www.goodgopher.com/SearchResults.asp?query=\u0002&pr=GG\u00010", - "db": "//www.gogdb.org/products?search=\u0002\u000122" - }, - "\u0010": "//mail.google.com/mail/u/0/#search/\u0002\u0001724", - "l": { - "d": { - "\u0010": "http://goldbook.iupac.org/terms/search/\u0002\u00013", - "en": { - "\u0010": "//golden.com/search/\u0002\u00010", - "line": "http://www.goldenline.pl/szukaj/?q=\u0002\u00010", - "moustache": "http://www.goldenmoustache.com/?s=\u0002\u00010" - } - }, - "\u0010": "http://www.gamingonlinux.com/index.php?module=search&q=\u0002\u0001136", - "em": "http://suche.golem.de/search.php?l=10&q=\u0002\u00010", - "ang": "http://golang.org/search?q=\u0002\u000165", - "fparks": "http://www.golfparks.ch/de/suche?q=\u0002\u00010", - "ivelively": "http://golivelively.com/tag/\u0002\u00010" - }, - "o": { - "d": { - "\u0010": "//m.banggood.com/search/\u0002.html\u000110", - "g": { - "\u0010": "http://goodgopher.com/SearchResults.asp?query=\u0002&pr=GG\u00010", - "uys": "//www.thegoodguys.com.au/SearchDisplay?categoryId=&storeId=900&catalogId=30000&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=&beginIndex=0&orderBy=0&pageSize=60&searchTerm=\u0002\u00010" - }, - "feeds": "//goodfeeds.net/search?q=\u0002\u00010", - "films": "http://goodfil.ms/search?term=\u0002\u00010", - "foodau": "//www.goodfood.com.au/search?text=\u0002&type=recipe\u00010", - "reads": { - "\u0010": "http://www.goodreads.com/search/search?search_type=books&search[query]=\u0002\u0001681", - "list": "//www.goodreads.com/search?search_type=lists&q=\u0002\u00010" - }, - "search": "http://www.goodsearch.com/search-web?keywords=\u0002\u00010" - }, - "g": { - "\u0010": "http://www.google.com/?q=\u0002\u0001193", - "le": { - "\u0010": "//www.google.com/search?q=\u0002\u00012502564", - "be": "//www.google.be/#q=\u0002\u00010", - "ch": "//www.google.ch/search?q=\u0002\u00010", - "fr": "//www.google.fr/#q=\u0002\u00018", - "in": "//www.google.co.in/search?q=\u0002\u0001179", - "it": "//google.com/search?hl=it&q=\u0002\u00010", - "jp": "//www.google.co.jp/search?q=\u0002\u0001265", - "oz": "//www.google.com.au/#q=\u0002\u00014", - "pl": { - "\u0010": "//www.google.pl/#q=\u0002\u00010", - "ay": "//play.google.com/store/search?q=\u0002\u00015" - }, - "pt": "//www.google.pt/search?hl=pt_pt&q=\u0002\u00010", - "se": "http://google.se/?q=\u0002\u00010", - "sv": "//www.google.com.sv/#q=\u0002\u00010", - "tr": "//www.google.com.tr/search?q=\u0002 \u00014", - "uk": "http://www.google.co.uk/search?&source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001402", - "books": "//www.google.com/search?tbm=bks&q=\u0002\u000130", - "fonts": "//fonts.google.com/?query=\u0002\u00016", - "img": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000165366", - "images": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000165366", - ".kr": "//www.google.co.kr/?gws_rd=cr&ei=GEnlVfT8BMOJuQT8tLPYDg=\u0002\u00010", - "map": { - "\u0010": "http://maps.google.com/maps?q=\u0002\u00012062", - "s": "http://maps.google.com/maps?q=\u0002\u00012062" - }, - "scholar": "http://scholar.google.com/scholar?hl=en&q=\u0002\u0001208" - } - }, - "\u0010": "http://search.goo.ne.jp/web.jsp?MT=\u0002&IE=UTF-8&OE=UTF-8\u000184", - "j": "http://dictionary.goo.ne.jp/srch/all/\u0002/m0u/\u000165", - "od": "//thegooodshop.com/?s=\u0002&post_type=product\u00010", - "sh": "http://goosh.org/#\u0002\u00010", - "kokugo": "http://dictionary.goo.ne.jp/srch/jn/\u0002 /m0u/\u00019", - "utbrno": "//goout.net/cs/brno/#\"?\":\"\u0002\"\u00010", - "utprague": "//goout.net/cs/praha/#\"?\":\"\u0002\"\u00010" - }, - "s": { - "\u0010": "http://guruofsales.com/?s=\u0002\u00010", - "v": "//www.google.com.sv/#q=\u0002\u00010", - "pell": "http://www.gospell.org/index.php?search=\u0002\u00010", - "sip": "http://www.numbergossip.com/?number=\u0002\u00010" - }, - "t": { - "\u0010": "http://gathering.tweakers.net/forum/find?keyword=\u0002\u000156", - "o": "//goto.google.com/\u0002\u00010", - "here": "//gothere.sg/maps#q:\u0002\u00010", - "hic": "//almanach.worldofgothic.de/index.php/Spezial:Suche?search=\u0002\u00010", - "questions": "//www.gotquestions.org/search.php?zoom_query=\u0002\u000177", - "rade": "//www.reddit.com/r/GlobalOffensiveTrade/search?q=\u0002&restrict_sr=on&sort=new&t=all\u00010" - }, - "v": { - "\u0010": "//search.usa.gov/search?affiliate=usagov&query=\u0002\u00010", - "uk": "//www.gov.uk/search?q= \u0002\u000120", - "images": "//search.usa.gov/search/images?affiliate=usagov&query=\u0002\u00010", - "track": "http://www.govtrack.us/search?q=\u0002\u00010", - ".uk": "//www.gov.uk/search?q=\u0002\u00010" - }, - "at": "//www.goatbots.com/search/\u0002\u00013", - "iw": "//gunsoficarusonline.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "bago": "//gobago.it/?q=\u0002\u00010", - "bang": "http://duckgobang.com/?s=\u0002\u00010", - "cafe": "//golang.cafe/Golang-\u0002-Jobs\u00010", - "comics": "//www.gocomics.com/search/results?utf8=%E2%9C%93&terms=\u0002\u00017", - "compare": "http://www.gocompare.com/searchresults/?q=\u0002\u00010", - "fundme": "http://www.gofundme.com/mvc.php?route=search&term=\u0002\u00010", - "kifu": "http://gokifu.com/index.php?q=\u0002\u00010", - "nthis": "http://gossiponthis.com/search/\u0002\u00010", - "nutss": "//www.gonutss.com/s?q=\u0002\u00010", - "pher": "http://gopher.floodgap.com/gopher/gw?ss=gopher%3A%2F%2Fgopher.floodgap.com%3A70%2F7%2Fv2%2Fvs&sq=\u0002\u00010", - "pkg": "//golang.org/pkg/\u0002\u0001191", - "problog": "//www.goproblog.nl/component/search/?searchword=\u0002\u00010", - "rafi": "http://www.legorafi.fr/?s=\u0002\u00010", - "rila": "//www.gorila.sk/vyhladavanie?q=\u0002\u00010", - "rilla": "//www.gorillasports.de/search?page=search&page_action=query&desc=on&sdesc=on&keywords=\u0002\u00010", - "-search": "http://go-search.org/search?q=\u0002\u00010", - "ulet": { - "\u0010": "//www.gouletpens.com/pages/search-results?limit=24&q=\u0002\u00010", - "pens": "//www.gouletpens.com/pages/search-results?limit=24&q=\u0002\u00010" - }, - "wifi": "http://www.gowifi.co.nz/product-search.html?keyword=\u0002\u00010" - }, - "p": { - "a": { - "\u0010": "//play.google.com/store/search?q=\u0002&c=apps\u00013", - "t": "http://www.google.com/patents?q=\u0002&btnG=Search+Patents\u0001151", - "u": "http://www.greenpeace.org/australia/en/System-templates/Site-Settings-Pages/Search/?all=\u0002\u00010", - "ckages": "//packages.gentoo.org/packages/search?q=\u0002 \u000114", - "frica": "http://www.greenpeace.org/africa/en/Search-results/?all=\u0002\u00010" - }, - "b": "//play.google.com/store/search?c=books&q=\u0002\u00010", - "d": { - "\u0010": "http://go.pkgdoc.org/?q=\u0002\u00014", - "p": "//www.gpdp.it/home/ricerca/-/search/key/\u0002\u00010", - "r": "//gpodder.net/search/?q=\u0002 \u00010" - }, - "e": { - "a": "http://www.greenpeace.org/eastasia/system-templates/search-results/?all=\u0002\u00010", - "\u0010": "http://www.google.com.pe/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00015", - "u": "http://www.greenpeace.org/eu-unit/en/System-templates/such-resultate/?all=\u0002\u00010", - "ns": "//www.gouletpens.com/pages/search-results?q=\u0002\u00010" - }, - "g": "http://http-keys.gnupg.net/pks/lookup?op=vindex&search=\u0002\u00010", - "\u0010": "//play.google.com/store/search?q=\u0002\u00015", - "h": { - "\u0010": "//www.google.com.ph/search?hl=en&q=\u0002&tbs=ctr:countryPH&cr=countryPH \u00014", - "elp": "//help.gamepedia.com/index.php?search=\u0002\u00010", - "otos": "//photos.google.com/search/\u0002\u0001159" - }, - "i": { - "\u0010": "http://glosbe.com/pl/it/\u0002\u00010", - "o": "//gpio.co.uk/?s=\u0002\u00010", - "ndia": "http://www.greenpeace.org/india/en/System-templates/Search-results/?all=\u0002\u00010" - }, - "k": "//golang.org/pkg/\u0002\u0001191", - "l": { - "\u0010": "http://www.google.pl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001633", - "ay": { - "\u0010": "//play.google.com/store/search?q=\u0002 \u0001129", - "m": "//play.google.com/store/search?q=\u0002&c=music\u00010" - }, - "us": { - "\u0010": "//plus.google.com/s/\u0002\u00010", - "p": "http://www.google.com/search?tbs=prfl:e&q=\u0002\u00010" - } - }, - "m": { - "\u0010": "//play.google.com/music/listen#/sr/\u0002\u00010", - "usic": "//play.google.com/music/listen?u=0#/sr/\u0002\u00010" - }, - "o": "http://gpo.zugaina.org/Search?search=\u0002\u00018", - "s": { - "\u0010": "//www.google.com/search?hl=en&tbm=shop&q=\u0002\u000115", - "earch": "http://gpsearch.azurewebsites.net/default.aspx?search=\u0002\u00010", - "easia": "http://www.greenpeace.org/seasia/System-templates/Search-results/?all=\u0002\u00010", - "ies": "http://gpsies.de/?q=\u0002\u00010" - }, - "t": "//www.google.pt/search?q=\u0002\u0001136", - "nz": "http://www.greenpeace.org/new-zealand/en/System-templates/Search-results/?all=\u0002\u00010", - "uk": "http://www.greenpeace.org.uk/search/node/\u0002\u00010", - "can": { - "\u0010": "http://www.greenpeace.org/canada/en/System-templates/Site-Settings-Pages/Search/?all=\u0002\u00010", - "fr": "http://www.greenpeace.org/canada/fr/System-templates/Site-Settings-Pages/Recherche/?all=\u0002\u00010" - }, - "philip": "http://www.greenpeace.org/seasia/ph/System-templates/Search-results/?all=\u0002\u00010" - }, - "q": { - "+": "//www.gotquestions.org/search.php?zoom_query=\u0002\u000177", - "\u0010": "http://www.gq.com/search?qt=dismax&sort=score+desc&query=\u0002\u00015", - "uil": "//enguayaquil.com/?s=\u0002\u00010" - }, - "r": { - "e": { - "\u0010": "//bigenc.ru/search?q=\u0002\u00010", - "co": "//www.grecoantico.com/dizionario-greco-antico.php?parola=\u0002\u00010", - "ek": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=greek#lexicon\u00014", - "en": { - "\u0010": "//www.greentech-news.org/?s=\u0002\u00014", - "peace": "http://www.greenpeace.org/usa/?s=\u0002\u00010", - "sdic": "//greensdictofslang.com/search/basic?q=\u0002\u00010" - }, - "ads": "//www.goodreads.com/search?utf8=✓&query=\u0002\u000110", - "asyfork": "//greasyfork.org/scripts/search?q=\u0002\u000113", - "ddit": "//google.com/search?q=site%3Areddit.com+\u0002\u0001433", - "pmed": "//www.grepmed.com/?q=\u0002\u00010" - }, - "f": "//goblinrefuge.com/mediagoblin/search/?query=\u0002\u00014", - "\u0010": "//www.goodreads.com/search?q=\u0002\u00011681", - "i": { - "\u0010": "//images.google.com/searchbyimage?image_url=\u0002 \u0001336", - "md": "http://grimdawn.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "llo": "http://www.beppegrillo.it/google_cse.html?q=\u0002&x=-1208&y=-9\u00010", - "lls": "//www.grillscatalog.com/?s=\u0002\u00010" - }, - "o": { - "g": "//duckduckgo.com/?q=site%3Alegrog.org+\u0002\u00010", - "\u0010": "http://www.google.ro/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000112", - "ene": "http://groenewaterman.mijnboekhandelaar.com/index.php?option=com_mbhbooksearch&Itemid=10008&task=gosearch&query=\u0002\u00010", - "ovy": "//duckduckgo.com/?q=\u0002+site:docs.groovy-lang.org\u00010", - "sbill": "//www.grosbill.com/catv2.cgi?mode=recherche&recherche=\u0002\u00010", - "ssoshop": "http://www.grossoshop.net/index.php?route=product/search&search=\u0002\u00010", - "ttopress": "//www.grottopress.com/?s=\u0002\u00010", - "undai": "//www.groundai.com/search/?text=\u0002&sort=_score\u00010", - "upon": "//www.groupon.com/browse/?query=\u0002\u00010", - "upees": "//groupees.com/?q=\u0002:\u00010", - "ute": "//www.google.de/maps/dir/\u0002\u00010", - "uvee": "http://www.grouvee.com/search/?q=\u0002\u00013" - }, - "p": "http://plugins.grails.org/?query=\u0002&submit=Search\u00010", - "s": "//www.google.rs/search?q=\u0002\u000115", - "u": { - "b": { - "\u0010": "//www.grubhub.com/search/?cuisine=\u0002\u000110", - "hub": "//www.grubhub.com/search?queryText=\u0002\u00016" - }, - "\u0010": "//google.ru/search?hl=ru&q=\u0002\u0001127", - "mps": "//www.youtube.com/user/GameGrumps/search?query=\u0002\u00010" - }, - "av": { - "e": "http://www.findagrave.com/php/famous.php?globalSearchCriteria=\u0002\u00010", - "\u0010": "//learn.getgrav.org/search?q=\u0002\u00010" - }, - "cp": "//www.grc.com/port_\u0002.htm\u00010", - "abar": "http://www.nayiri.com/imagedDictionaryBrowser.jsp?dictionaryId=28&dt=HY_HY&query=\u0002\u00010", - "abcad": "http://grabcad.com/library?per_page=20&query=\u0002 \u00016", - "adle": { - "\u0010": "http://duckduckgo.com/?q=site%3Agradle.org+\u0002\u00014", - "p": "//plugins.gradle.org/search?term=\u0002\u00010" - }, - "adcafe": "http://thegradcafe.com/survey/index.php?q=\u0002\u00010", - "afikart": "//www.grafikart.fr/search?q=\u0002\u00010", - "ailed": "http://www.grailed.com/search?search=\u0002 \u000111", - "ainger": "http://www.grainger.com/search?nls=1&searchQuery=\u0002 \u00019", - "ammis": "//grammis.ids-mannheim.de/suche?search=\u0002&research=&research%5B%5D=sysgrams&research%5B%5D=corpora&research%5B%5D=phonos&research%5B%5D=terms&knowledge=&knowledge%5B%5D=questions&knowledge%5B%5D=programs&knowledge%5B%5D=eurograms&knowledge%5B%5D=orthos&ressources=&ressources%5B%5D=connectors&ressources%5B%5D=affixes&ressources%5B%5D=prepositions&ressources%5B%5D=verbs&scat=DuckDuckGo+Bang\u00010", - "amota": "http://gramota.ru/slovari/dic/?word=\u0002&all=x\u00013", - "aph": { - "\u0010": "http://graph.tk/#\u0002\u00013", - "emica": "http://graphemica.com/search?q=\u0002\u000120", - "hopper": "//graphhopper.com/maps/?point=\u0002&point=\u0002\u00010", - "icriver": "http://graphicriver.net/search?utf8=%E2%9C%93&term=\u0002\u00010" - }, - "atefuldead": "http://archive.org/search.php?query=\u0002%20AND%20collection%3AGratefulDead\u00010", - "aylog": "//marketplace.graylog.org/addons?search=\u0002\u00010", - "yonline": "//www.gry-online.pl/gry/\u0002/\u00010" - }, - "s": { - "a": { - "\u0010": "//www.gsaadvantage.gov/advantage/s/search.do?q=0:0\u0002&db=0&searchType=1\u00010", - "u": "//www.google.com.au/search?biw=1920&bih=947&tbm=shop&q=\u0002\u000116", - "fe": "//www.google.com/search?hl=all&safe=on&pws=0&q=\u0002\u00017" - }, - "c": { - "\u0010": "http://scholar.google.com/scholar?q=\u0002&btnG=Search&as_sdt=800000000001&as_sdtp=on\u00017231", - "h": { - "\u0010": "http://scholar.google.com/scholar?&q=\u0002\u00011551", - "ol": { - "\u0010": "http://scholar.google.com/scholar?q=\u0002 \u0001248", - "ar": "http://scholar.google.com/scholar?q=\u0002&btnG=Search&as_sdt=800000000001&as_sdtp=on\u00017231" - } - } - }, - "e": "http://www.google.se/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001235", - "g": "http://www.google.com.sg/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00013", - "\u0010": "http://www.google.com/products?q=\u0002&sa=N&tab=pf\u00012425", - "h": { - "\u0010": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000139", - "eet": { - "\u0010": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000139", - "s": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000139" - }, - "opping": "//www.google.com/products?q=\u0002&sa=N&tab=pf\u0001126" - }, - "i": { - "\u0010": "//www.google.si/search?q=\u0002\u000110", - "t": "//www.google.it/search?hl=it&tbm=shop&q=\u0002\u00010" - }, - "k": "http://www.google.sk/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000160", - "l": { - "\u0010": "http://www.google.com.sl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00014", - "ides": "//slides.google.com/presentation/u/0/?q=\u0002\u000197" - }, - "m": { - "a": { - "\u0010": "http://www.gsmarena.com/results.php3?sName=\u0002\u000130", - "rena": "http://www.gsmarena.com/results.php3?sName=\u0002\u000130" - }, - "\u0010": "http://www.gsmarena.com/results.php3?sName=\u0002\u000130", - "punt": "//www.gsmpunt.nl/zoeken?z=\u0002\u00010" - }, - "o": "//google.com/search?q=%2B%5Binurl%3Ahttp%3A%2F%2Fstackoverflow.com%5D+\u0002\u00014", - "p": { - "\u0010": "//de.gegenstandpunkt.com/artikel/suche?modus=AND&volltextsuche=\u0002\u00010", - "ace": "//glammingspace.blogspot.com/search?q=\u0002\u00010", - "ort": "//www.gsport.no/magento/sok?q=\u0002\u00010", - "readsheets": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000139" - }, - "v": "//google.com/search?hl=sv&q=\u0002\u000118", - "w": "//wiki.greasespot.net/index.php?title=Special%3ASearch&fulltext=Search&search=\u0002\u00010", - "x": "//www.google.com/shopping/express/#SearchResultsPlace:s=0&c=24&q=\u0002\u00010", - "br": "http://www.google.com.br/search?q=\u0002&hl=pt-BR&safe=off&biw=1108&bih=651&prmd=imvns&source=univ&tbm=shop&tbo=u&sa=X&ei=ZculTqjGLcvAgQf5n_CxBQ&ved=0CJkBEK0E\u00014", - "rc": "http://www.gradesource.com/findcourse.asp?sb=C&name=\u0002&st=0&x=0&y=0\u00010", - "sl": "//google.com/search?q=\u0002\u0001553", - "uk": "http://www.google.co.uk/search?q=\u0002&tbm=shop\u000195", - "us": "//www.google.com/search?tbm=shop&q=\u0002&gws_rd=cr\u00010", - ".es": "//www.google.es/search?tbm=shop&q=\u0002\u00010", - "tore": "//store.google.com/search?q=\u0002\u00010", - "upport": "//support.google.com/search?q=\u0002\u00013" - }, - "t": { - "f": { - "a": "//translate.google.com/#auto/fa/\u0002\u00014", - "\u0010": "//www.glocktalk.com/search/10717176/?q=\u0002&o=date\u00010", - "i": { - "\u0010": "//translate.google.com/#auto/fi/\u0002\u000110", - "lipino": "//translate.google.com/#auto/tl/\u0002\u00010", - "nnish": "//translate.google.com/#auto/fi/\u0002\u000110" - }, - "r": { - "\u0010": "//translate.google.com/#auto/fr/\u0002\u0001328", - "ench": "//translate.google.com/#auto/fr/\u0002\u0001328" - } - }, - "\u0010": "//translate.google.com/#auto/en/\u0002\u0001734", - "h": { - "a": { - "\u0010": "//translate.google.com/#auto/ha/\u0002\u00010", - "itiancreole": "//translate.google.com/#auto/ht/\u0002\u00010", - "usa": "//translate.google.com/#auto/ha/\u0002\u00010" - }, - "\u0010": "http://www.google.co.th/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000114", - "i": { - "\u0010": "//translate.google.com/#auto/hi/\u0002\u00010", - "ndi": "//translate.google.com/#auto/hi/\u0002\u00010" - }, - "r": "//translate.google.com/#auto/hr/\u0002\u00010", - "t": "//translate.google.com/#auto/ht/\u0002\u00010", - "u": { - "\u0010": "//translate.google.com/#auto/hu/\u0002\u000120", - "ngarian": "//translate.google.com/#auto/hu/\u0002\u000120" - }, - "y": "//translate.google.com/#auto/hy/\u0002\u00010", - "mn": "//translate.google.com/#auto/hmn/\u0002\u00010", - "ebrew": "//translate.google.com/#auto/iw/\u0002\u00010", - "mong": "//translate.google.com/#auto/hmn/\u0002\u00010" - }, - "m": { - "g": "//translate.google.com/#auto/mg/\u0002\u00010", - "\u0010": "//fr.gta5-mods.com/search/\u0002\u00015", - "i": "//translate.google.com/#auto/mi/\u0002\u00010", - "k": "//translate.google.com/#auto/mk/\u0002\u00010", - "l": "//translate.google.com/#auto/ml/\u0002\u00010", - "n": "//translate.google.com/#auto/mn/\u0002\u00010", - "r": "//translate.google.com/#auto/mr/\u0002\u00010", - "s": "//translate.google.com/#auto/ms/\u0002\u00010", - "t": "//translate.google.com/#auto/mt/\u0002\u00010", - "y": { - "\u0010": "//translate.google.com/#auto/my/\u0002\u00010", - "anmar": "//translate.google.com/#auto/my/\u0002\u00010" - }, - "z": "//geektimes.ru/search/?q=\u0002\u00010", - "acedonian": "//translate.google.com/#auto/mk/\u0002\u00010", - "alay": { - "\u0010": "//translate.google.com/#auto/ms/\u0002\u00010", - "alam": "//translate.google.com/#auto/ml/\u0002\u00010" - }, - "alagasy": "//translate.google.com/#auto/mg/\u0002\u00010", - "altese": "//translate.google.com/#auto/mt/\u0002\u00010", - "aori": "//translate.google.com/#auto/mi/\u0002\u00010", - "arathi": "//translate.google.com/#auto/mr/\u0002\u00010", - "ongolian": "//translate.google.com/#auto/mn/\u0002\u00010" - }, - "n": { - "e": { - "\u0010": "//translate.google.com/#auto/ne/\u0002\u00010", - "pali": "//translate.google.com/#auto/ne/\u0002\u00010" - }, - "\u0010": "//www.google.tn/search?q=\u0002\u00010", - "l": "//translate.google.com/#auto/nl/\u0002\u00010", - "o": { - "\u0010": "//translate.google.com/#auto/no/\u0002\u00016", - "rwegian": "//translate.google.com/#auto/no/\u0002\u00016" - }, - "y": "//translate.google.com/#auto/ny/\u0002\u00010" - }, - "r": { - "\u0010": "http://www.google.com.tr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000134", - "o": { - "\u0010": "//translate.google.com/#auto/ro/\u0002\u00018", - "manian": "//translate.google.com/#auto/ro/\u0002\u00018" - }, - "u": { - "\u0010": "//translate.google.com/#auto/ru/\u0002\u0001135", - "ssian": "//translate.google.com/#auto/ru/\u0002\u0001135" - }, - "ad": "//translate.google.com/#auto/fr/\u0002\u0001328", - "anslate": "//translate.google.com/#auto/en/\u0002\u0001734", - "ends": "//trends.google.com/trends/explore?date=all&geo=US&q=\u0002\u000122" - }, - "w": { - "\u0010": "http://www.google.com.tw/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00011783", - "elsh": "//translate.google.com/#auto/cy/\u0002\u00010", - "iki": "http://growtopia.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "af": { - "\u0010": "//translate.google.com/#auto/af/\u0002\u00010", - "rikaans": "//translate.google.com/#auto/af/\u0002\u00010" - }, - "ar": { - "\u0010": "//translate.google.com/#auto/ar/\u0002\u00010", - "abic": "//translate.google.com/#auto/ar/\u0002\u00010", - "menian": "//translate.google.com/#auto/hy/\u0002\u00010" - }, - "au": "http://www.gumtree.com.au/s-\u0002/k0\u000114", - "az": { - "\u0010": "//translate.google.com/#auto/az/\u0002\u00010", - "erbaijani": "//translate.google.com/#auto/az/\u0002\u00010" - }, - "be": { - "\u0010": "//translate.google.com/#auto/be/\u0002\u00010", - "larusian": "//translate.google.com/#auto/be/\u0002\u00010", - "ngali": "//translate.google.com/#auto/bn/\u0002\u00010" - }, - "bg": "//translate.google.com/#auto/bg/\u0002\u000131", - "bn": "//translate.google.com/#auto/bn/\u0002\u00010", - "bs": "//translate.google.com/#auto/bs/\u0002\u00010", - "ca": { - "\u0010": "//translate.google.com/#auto/ca/\u0002\u00013", - "talan": "//translate.google.com/#auto/ca/\u0002\u00013" - }, - "cs": "//translate.google.com/#auto/cs/\u0002\u00015", - "cy": "//translate.google.com/#auto/cy/\u0002\u00010", - "cz": { - "\u0010": "//translate.google.com/#auto/cs/\u0002\u00015", - "ech": "//translate.google.com/#auto/cs/\u0002\u00015" - }, - "da": { - "\u0010": "//translate.google.com/#auto/da/\u0002\u00018", - "nish": "//translate.google.com/#auto/da/\u0002\u00018" - }, - "db": "//www.grimtools.com/db/search?query=\u0002\u00010", - "de": "//translate.google.com/#auto/de/\u0002\u000192", - "el": "//translate.google.com/#auto/el/\u0002\u00014", - "en": { - "\u0010": "//translate.google.com/#auto/en/\u0002\u0001734", - "fr": "//translate.google.com/#en/fr/\u0002\u000168", - "ga": "//translate.google.com/#en/ga/\u0002\u00010", - "it": "//translate.google.com/#en/it/\u0002\u00013", - "glish": "//translate.google.com/#auto/en/\u0002\u0001734" - }, - "eo": "//translate.google.com/#auto/eo/\u0002\u00010", - "es": { - "\u0010": "//translate.google.com/#auto/es/\u0002\u0001178", - "peranto": "//translate.google.com/#auto/eo/\u0002\u00010", - "tonian": "//translate.google.com/#auto/et/\u0002\u00010" - }, - "et": "//translate.google.com/#auto/et/\u0002\u00010", - "eu": "//translate.google.com/#auto/eu/\u0002\u00010", - "ga": { - "\u0010": "//translate.google.com/#auto/ga/\u0002\u00010", - "lician": "//translate.google.com/#auto/gl/\u0002\u00010" - }, - "gl": "//translate.google.com/#auto/gl/\u0002\u00010", - "gr": { - "\u0010": "//translate.google.com/#view=home&op=translate&sl=auto&tl=el&text=\u0002\u00010", - "eek": "//translate.google.com/#auto/el/\u0002\u00014" - }, - "gu": { - "\u0010": "//translate.google.com/#auto/gu/\u0002\u00010", - "jarati": "//translate.google.com/#auto/gu/\u0002\u00010" - }, - "id": "//translate.google.com/#auto/id/\u0002\u000132", - "ig": { - "\u0010": "//translate.google.com/#auto/ig/\u0002\u00010", - "bo": "//translate.google.com/#auto/ig/\u0002\u00010" - }, - "in": { - "\u0010": "//www.gepir.de/?search=\u0002\u00010", - "donesian": "//translate.google.com/#auto/id/\u0002\u000132" - }, - "is": "//translate.google.com/#auto/is/\u0002\u00010", - "it": { - "\u0010": "//translate.google.com/#auto/it/\u0002\u00010", - "en": "//translate.google.com/#it/en/\u0002\u00010", - "alian": "//translate.google.com/#auto/it/\u0002\u00010" - }, - "iw": "//translate.google.com/#auto/iw/\u0002\u00010", - "ja": { - "\u0010": "//translate.google.com/#auto/ja/\u0002\u000180", - "panese": "//translate.google.com/#auto/ja/\u0002\u000180", - "vanese": "//translate.google.com/#auto/jw/\u0002\u00010" - }, - "jp": "//translate.google.com/#auto/ja/\u0002\u000180", - "jw": "//translate.google.com/#auto/jw/\u0002\u00010", - "ka": { - "\u0010": "//translate.google.com/#auto/ka/\u0002\u00010", - "nnada": "//translate.google.com/#auto/kn/\u0002\u00010", - "zakh": "//translate.google.com/#auto/kk/\u0002\u00010" - }, - "kk": "//translate.google.com/#auto/kk/\u0002\u00010", - "km": "//translate.google.com/#auto/km/\u0002\u00010", - "kn": "//translate.google.com/#auto/kn/\u0002\u00010", - "ko": { - "\u0010": "//translate.google.com/#auto/ko/\u0002\u00010", - "rean": "//translate.google.com/#auto/ko/\u0002\u00010" - }, - "kr": "//translate.google.com/#auto/ko/\u0002\u00010", - "la": { - "\u0010": "//translate.google.com/#auto/la/\u0002\u00010", - "o": "//translate.google.com/#auto/lo/\u0002\u00010", - "nl": "//translate.google.com/#la/nl/\u0002\u00010", - "tin": "//translate.google.com/#auto/la/\u0002\u00010", - "tvian": "//translate.google.com/#auto/lv/\u0002\u00010" - }, - "lt": "//translate.google.com/#auto/lt/\u0002\u00010", - "lv": "//translate.google.com/#auto/lv/\u0002\u00010", - "pa": "//translate.google.com/#auto/pa/\u0002\u00010", - "pl": "//translate.google.com/#auto/pl/\u0002\u000148", - "pt": "//translate.google.com/#auto/pt/\u0002\u00010", - "si": { - "\u0010": "//translate.google.com/#auto/si/\u0002\u00010", - "nhala": "//translate.google.com/#auto/si/\u0002\u00010" - }, - "sk": "//translate.google.com/#auto/sk/\u0002\u00019", - "sl": { - "\u0010": "//translate.google.com/#auto/sl/\u0002\u00010", - "ovak": "//translate.google.com/#auto/sk/\u0002\u00019", - "ovenian": "//translate.google.com/#auto/sl/\u0002\u00010" - }, - "so": { - "\u0010": "//translate.google.com/#auto/so/\u0002\u00010", - "mali": "//translate.google.com/#auto/so/\u0002\u00010" - }, - "sp": { - "\u0010": "//translate.google.com/#en/es/\u0002\u000122", - "anish": "//translate.google.com/#auto/es/\u0002\u0001178" - }, - "sq": "//translate.google.com/#auto/sq/\u0002\u00010", - "sr": "//translate.google.com/#auto/sr/\u0002\u00010", - "st": "//translate.google.com/#auto/st/\u0002\u00010", - "su": { - "\u0010": "//translate.google.com/#auto/su/\u0002\u00010", - "ndanese": "//translate.google.com/#auto/su/\u0002\u00010" - }, - "sv": "//translate.google.com/#auto/sv/\u0002\u000129", - "sw": { - "\u0010": "//translate.google.com/#auto/sw/\u0002\u00010", - "ahili": "//translate.google.com/#auto/sw/\u0002\u00010", - "edish": "//translate.google.com/#auto/sv/\u0002\u000129" - }, - "ta": { - "\u0010": "//translate.google.com/#auto/ta/\u0002\u00010", - "jik": "//translate.google.com/#auto/tg/\u0002\u00010", - "mil": "//translate.google.com/#auto/ta/\u0002\u00010" - }, - "te": { - "\u0010": "//translate.google.com/#auto/te/\u0002\u00010", - "lugu": "//translate.google.com/#auto/te/\u0002\u00010" - }, - "tg": "//translate.google.com/#auto/tg/\u0002\u00010", - "th": { - "\u0010": "//translate.google.com/#auto/th/\u0002\u00010", - "ai": "//translate.google.com/#auto/th/\u0002\u00010" - }, - "tl": "//translate.google.com/#auto/tl/\u0002\u00010", - "tr": "//translate.google.com/#auto/tr/\u0002\u000123", - "tw": "//translate.google.com.tw/#auto/zh-TW/\u0002\u000130", - "uk": { - "\u0010": "//translate.google.com/#auto/uk/\u0002\u000122", - "rainian": "//translate.google.com/#auto/uk/\u0002\u000122" - }, - "ur": { - "\u0010": "//translate.google.com/#auto/ur/\u0002\u00010", - "l": "http://translate.google.com/translate?js=n&prev=_t&ie=UTF-8&layout=2&eotf=1&sl=auto&tl=en&u=\u0002&act=url\u0001138", - "du": "//translate.google.com/#auto/ur/\u0002\u00010" - }, - "uz": { - "\u0010": "//translate.google.com/#auto/uz/\u0002\u00010", - "bek": "//translate.google.com/#auto/uz/\u0002\u00010" - }, - "vi": { - "\u0010": "//translate.google.com/#auto/vi/\u0002\u00010", - "etnamese": "//translate.google.com/#auto/vi/\u0002\u00010" - }, - "yi": { - "\u0010": "//translate.google.com/#auto/yi/\u0002\u00010", - "ddish": "//translate.google.com/#auto/yi/\u0002\u00010" - }, - "yo": { - "\u0010": "//translate.google.com/#auto/yo/\u0002\u00010", - "ruba": "//translate.google.com/#auto/yo/\u0002\u00010" - }, - "zu": { - "\u0010": "//translate.google.com/#auto/zu/\u0002\u00010", - "lu": "//translate.google.com/#auto/zu/\u0002\u00010" - }, - "abs": "http://www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u000132", - "albanian": "//translate.google.com/#auto/sq/\u0002\u00010", - "awiki": "//gta.fandom.com/search?query=\u0002\u000133", - "-afrikaans": "//translate.google.com/#auto/af/\u0002\u00010", - "-albanian": "//translate.google.com/#auto/sq/\u0002\u00010", - "-arabic": "//translate.google.com/#auto/ar/\u0002\u00010", - "-armenian": "//translate.google.com/#auto/hy/\u0002\u00010", - "-azerbaijani": "//translate.google.com/#auto/az/\u0002\u00010", - "-basque": "//translate.google.com/#auto/eu/\u0002\u00010", - "-belarusian": "//translate.google.com/#auto/be/\u0002\u00010", - "-bengali": "//translate.google.com/#auto/bn/\u0002\u00010", - "-bosnian": "//translate.google.com/#auto/bs/\u0002\u00010", - "-bulgarian": "//translate.google.com/#auto/bg/\u0002\u000131", - "-catalan": "//translate.google.com/#auto/ca/\u0002\u00013", - "-cebuano": "//translate.google.com/#auto/ceb/\u0002\u00010", - "-chichewa": "//translate.google.com/#auto/ny/\u0002\u00010", - "-chinese": "//translate.google.com/#auto/zh-CN/\u0002\u00010", - "-croatian": "//translate.google.com/#auto/hr/\u0002\u00010", - "-czech": "//translate.google.com/#auto/cs/\u0002\u00015", - "-danish": "//translate.google.com/#auto/da/\u0002\u00018", - "-dutch": "//translate.google.com/#auto/nl/\u0002\u00010", - "-english": "//translate.google.com/#auto/en/\u0002\u0001734", - "-esperanto": "//translate.google.com/#auto/eo/\u0002\u00010", - "-estonian": "//translate.google.com/#auto/et/\u0002\u00010", - "-filipino": "//translate.google.com/#auto/tl/\u0002\u00010", - "-finnish": "//translate.google.com/#auto/fi/\u0002\u000110", - "-french": "//translate.google.com/#auto/fr/\u0002\u0001328", - "-galician": "//translate.google.com/#auto/gl/\u0002\u00010", - "-georgian": "//translate.google.com/#auto/ka/\u0002\u00010", - "-german": "//translate.google.com/#auto/de/\u0002\u000192", - "-greek": "//translate.google.com/#auto/el/\u0002\u00014", - "-gujarati": "//translate.google.com/#auto/gu/\u0002\u00010", - "-hausa": "//translate.google.com/#auto/ha/\u0002\u00010", - "-hebrew": "//translate.google.com/#auto/iw/\u0002\u00010", - "-hindi": "//translate.google.com/#auto/hi/\u0002\u00010", - "-hmong": "//translate.google.com/#auto/hmn/\u0002\u00010", - "-hungarian": "//translate.google.com/#auto/hu/\u0002\u000120", - "-icelandic": "//translate.google.com/#auto/is/\u0002\u00010", - "-igbo": "//translate.google.com/#auto/ig/\u0002\u00010", - "-indonesian": "//translate.google.com/#auto/id/\u0002\u000132", - "-irish": "//translate.google.com/#auto/ga/\u0002\u00010", - "-italian": "//translate.google.com/#auto/it/\u0002\u00010", - "-japanese": "//translate.google.com/#auto/ja/\u0002\u000180", - "-javanese": "//translate.google.com/#auto/jw/\u0002\u00010", - "-kannada": "//translate.google.com/#auto/kn/\u0002\u00010", - "-kazakh": "//translate.google.com/#auto/kk/\u0002\u00010", - "-khmer": "//translate.google.com/#auto/km/\u0002\u00010", - "-korean": "//translate.google.com/#auto/ko/\u0002\u00010", - "-lao": "//translate.google.com/#auto/lo/\u0002\u00010", - "-latin": "//translate.google.com/#auto/la/\u0002\u00010", - "-latvian": "//translate.google.com/#auto/lv/\u0002\u00010", - "-lithuanian": "//translate.google.com/#auto/lt/\u0002\u00010", - "-macedonian": "//translate.google.com/#auto/mk/\u0002\u00010", - "-malay": { - "\u0010": "//translate.google.com/#auto/ms/\u0002\u00010", - "alam": "//translate.google.com/#auto/ml/\u0002\u00010" - }, - "-malagasy": "//translate.google.com/#auto/mg/\u0002\u00010", - "-maltese": "//translate.google.com/#auto/mt/\u0002\u00010", - "-maori": "//translate.google.com/#auto/mi/\u0002\u00010", - "-marathi": "//translate.google.com/#auto/mr/\u0002\u00010", - "-mongolian": "//translate.google.com/#auto/mn/\u0002\u00010", - "-myanmar": "//translate.google.com/#auto/my/\u0002\u00010", - "-nepali": "//translate.google.com/#auto/ne/\u0002\u00010", - "-nl-du": "//translate.google.com/m/translate#nl/de/\u0002\u00010", - "-norwegian": "//translate.google.com/#auto/no/\u0002\u00016", - "-persian": "//translate.google.com/#auto/fa/\u0002\u00014", - "-polish": "//translate.google.com/#auto/pl/\u0002\u000148", - "-portuguese": "//translate.google.com/#auto/pt/\u0002\u00010", - "-punjabi": "//translate.google.com/#auto/pa/\u0002\u00010", - "-romanian": "//translate.google.com/#auto/ro/\u0002\u00018", - "-russian": "//translate.google.com/#auto/ru/\u0002\u0001135", - "-serbian": "//translate.google.com/#auto/sr/\u0002\u00010", - "-sesotho": "//translate.google.com/#auto/st/\u0002\u00010", - "-sinhala": "//translate.google.com/#auto/si/\u0002\u00010", - "-slovak": "//translate.google.com/#auto/sk/\u0002\u00019", - "-slovenian": "//translate.google.com/#auto/sl/\u0002\u00010", - "-somali": "//translate.google.com/#auto/so/\u0002\u00010", - "-spanish": "//translate.google.com/#auto/es/\u0002\u0001178", - "-sundanese": "//translate.google.com/#auto/su/\u0002\u00010", - "-swahili": "//translate.google.com/#auto/sw/\u0002\u00010", - "-swedish": "//translate.google.com/#auto/sv/\u0002\u000129", - "-tajik": "//translate.google.com/#auto/tg/\u0002\u00010", - "-tamil": "//translate.google.com/#auto/ta/\u0002\u00010", - "-telugu": "//translate.google.com/#auto/te/\u0002\u00010", - "-thai": "//translate.google.com/#auto/th/\u0002\u00010", - "-turkish": "//translate.google.com/#auto/tr/\u0002\u000123", - "-ukrainian": "//translate.google.com/#auto/uk/\u0002\u000122", - "-urdu": "//translate.google.com/#auto/ur/\u0002\u00010", - "-uzbek": "//translate.google.com/#auto/uz/\u0002\u00010", - "-vietnamese": "//translate.google.com/#auto/vi/\u0002\u00010", - "-welsh": "//translate.google.com/#auto/cy/\u0002\u00010", - "-yiddish": "//translate.google.com/#auto/yi/\u0002\u00010", - "-yoruba": "//translate.google.com/#auto/yo/\u0002\u00010", - "-zulu": "//translate.google.com/#auto/zu/\u0002\u00010", - "basque": "//translate.google.com/#auto/eu/\u0002\u00010", - "bosnian": "//translate.google.com/#auto/bs/\u0002\u00010", - "bulgarian": "//translate.google.com/#auto/bg/\u0002\u000131", - "ceb": { - "\u0010": "//translate.google.com/#auto/ceb/\u0002\u00010", - "uano": "//translate.google.com/#auto/ceb/\u0002\u00010" - }, - "chichewa": "//translate.google.com/#auto/ny/\u0002\u00010", - "chinese": "//translate.google.com/#auto/zh-CN/\u0002\u00010", - "croatian": "//translate.google.com/#auto/hr/\u0002\u00010", - "dutch": "//translate.google.com/#auto/nl/\u0002\u00010", - "georgian": "//translate.google.com/#auto/ka/\u0002\u00010", - "german": "//translate.google.com/#auto/de/\u0002\u000192", - "icelandic": "//translate.google.com/#auto/is/\u0002\u00010", - "irish": "//translate.google.com/#auto/ga/\u0002\u00010", - "khmer": "//translate.google.com/#auto/km/\u0002\u00010", - "lib": "//gatech-primo.hosted.exlibrisgroup.com/primo-explore/search?vid=01GALI_GIT&search_scope=Everything&query=any,contains,\u0002\u00010", - "lithuanian": "//translate.google.com/#auto/lt/\u0002\u00010", - "persian": "//translate.google.com/#auto/fa/\u0002\u00014", - "polish": "//translate.google.com/#auto/pl/\u0002\u000148", - "portuguese": "//translate.google.com/#auto/pt/\u0002\u00010", - "punjabi": "//translate.google.com/#auto/pa/\u0002\u00010", - "serbian": "//translate.google.com/#auto/sr/\u0002\u00010", - "sesotho": "//translate.google.com/#auto/st/\u0002\u00010", - "turkish": "//translate.google.com/#auto/tr/\u0002\u000123", - "zh-CN": "//translate.google.com/#auto/zh-CN/\u0002\u00010", - "zh-TW": "//translate.google.com/#auto/zh-TW/\u0002\u00010" - }, - "u": { - "a": { - "\u0010": "http://www.google.com.ua/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001130", - "rdian": { - "a": "http://www.guardiana.net/MDG-Database/Search/?search_value=\u0002 \u00010", - "\u0010": "//www.theguardian.com/\u0002\u0001191", - "project": "//guardianproject.info/?s=\u0002\u00010" - } - }, - "e": { - "\u0010": "http://www.guenstiger.de/Katalog/Preis.pl?suche=\u0002\u00010", - "nstiger": "http://www.guenstiger.de/Katalog/Preis.pl?suche=\u0002\u00010" - }, - "k": "//www.google.co.uk/search?q=\u0002\u00015905", - "s": { - "\u0010": "http://www.google.com/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001596", - "smark": "//www.gussmark.at/_/search?query=\u0002\u00010" - }, - "\u0010": "//duckduckgo.com/?q=site%3Awww.theguardian.com+\u0002\u0001108", - "bf": "//hds.hebis.de/ubffm/Search/Results?lookfor=\u0002&type=allfields&submit=Suchen\u00010", - "cci": "//www.gucci.com/fr/fr/search?search-cat=header-search&text=\u0002\u00010", - "folm": "//guideforlm.com/search/?q=\u0002\u00010", - "idestar": "//www.guidestar.org/search?q=\u0002\u00010", - "ildwiki": "http://www.guildwiki.org/index.php?title=Special%3ASearch&redirs=0&search=\u0002&fulltext=Search&ns0=1\u00010", - "itaa": "//www.guitaa.com/search?q=\u0002\u00010", - "itartabs": "http://www.guitartabsexplorer.com/search.php?search=\u0002\u00010", - "lasidorna": "http://www.eniro.se/query?what=all&search_word=\u0002\u00010", - "lesider": "//www.gulesider.no/?q=\u0002\u00010", - "mau": "http://www.gumtree.com.au/s-\u0002/k0\u000114", - "mball": "//theamazingworldofgumball.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "mtree": { - "\u0010": "http://www.gumtree.com.au/s-melbourne/\u0002 /k0l3001317\u000123", - "au": "http://www.gumtree.com.au/s-\u0002/k0\u000114", - "pl": "//www.gumtree.pl/s-\u0002/v1q0p1\u00010", - "uk": "//www.gumtree.com/search?search_category=all&q=\u0002\u000138", - "za": "//www.gumtree.co.za/s-\u0002/v1q0p1\u00010" - }, - "nbroker": "http://www.gunbroker.com/All/BI.aspx?Keywords=\u0002\u000154", - "ndam": "http://gundam.wikia.com/wiki/Special:Search?search=\u0002\u00014", - "ndeals": "//gun.deals/search/apachesolr_search/\u0002\u00010", - "nengine": "http://www.gunengine.com/guns?q=\u0002\u00010", - "nmag": "//gunmagwarehouse.com/catalogsearch/result/?q=\u0002\u00010", - "nstreamer": "//gunstreamer.com/search?q=Test&idx=videos&p=0&keyword=\u0002\u00010", - "nwatcher": "//gunwatcher.com/Search/\u0002\u00010", - "rtband": "//www.gurtbandlager.de/search?sSearch=\u0002\u00010", - "tefrage": "//www.gutefrage.net/search?query=\u0002\u000120", - "tenberg": "http://www.gutenberg.org/ebooks/search/?query=\u0002\u000149", - "tschein": "http://www.gutscheine.de/suche?search=\u0002\u00010" - }, - "v": { - "b": "//google.com/search?&tbs=li:1&q=\u0002\u000139", - "e": "http://www.google.co.ve/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00016", - "\u0010": "//www.google.com/search?tbm=vid&q=\u0002\u00012525", - "k": "//gso.gbv.de/DB=2.1/CMD?MATCFILTER=N&MATCSET=N&ACT0=&IKT0=&TRM0=&ACT3=*&IKT3=8183&ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010", - "n": "http://www.google.com.vn/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010", - "au": "//www.google.com.au/search?tbm=vid&q=\u0002\u00010", - "rl": "http://go.galegroup.com/ps/headerQuickSearch.do?quickSearchTerm=\u0002&inputFieldNames%5B0%5D=OQE&searchType=BasicSearchForm&userGroupName=mlin_m_newtnsh&nwf=y&prodId=GVRL&stw.option=&ebook=&quicksearchIndex=OQE&spellCheck=true&hasCoProduct=false\u00010", - "100": { - "\u0010": "http://google.com/search?q=\u0002&tbo=1&num=100&tbs=li:1\u00010", - "en": "http://google.com/search?q=\u0002&tbo=1&num=100&tbs=li:1&lr=lang_en\u00010" - }, - "iew": { - "\u0010": "//docs.google.com/viewer?url=\u0002\u00010", - "er": "//docs.google.com/viewer?url=\u0002\u00010" - }, - "oice": "//www.google.com/voice#search/\u0002\u00010" - }, - "w": { - "2": { - "e": "//gw2efficiency.com/account/overview?filter.name=\u0002\u00010", - "\u0010": "//wiki.guildwars2.com/index.php?search=\u0002\u0001593", - "de": "//wiki-de.guildwars2.com/index.php?search=\u0002&go=Seite\u00013", - "fr": "http://wiki-fr.guildwars2.com/index.php?search=\u0002\u00010", - "tp": "//www.gw2tp.com/search?name=\u0002\u00010", - "bltc": "//www.gw2bltc.com/en/tp/search?name=\u0002\u00018", - "spidy": "http://www.gw2spidy.com/search/\u0002\u00010", - "wiki": "http://wiki.guildwars2.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000141" - }, - "\u0010": "//wiki.gentoo.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001218", - "i": { - "\u0010": "//gowatchit.com/search?terms=\u0002\u00010", - "ki": "//wiki.gentoo.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001218" - }, - "m": "//www.girlswithmuscle.com/images/?name=\u0002\u0001131", - "p": { - "\u0010": "http://www.google.com/search?q=\u0002%20site:wikipedia.org\u000115", - "de": "http://www.google.de/search?ie=UTF-8&sourceid=navclient&gfns=1&q=site:de.wikipedia.org+\u0002\u00010" - }, - "r": "http://www.guinnessworldrecords.com/search?term=\u0002\u00010", - "s": { - "\u0010": "//chrome.google.com/webstore/search/\u0002?_category=extensions\u000115", - "online": { - "\u0010": "//www.ghanawebsolutions.com/search.php?q=\u0002\u00010", - "gh": "//www.ghanawebsolutions.com/search.php?q=\u0002\u00010" - } - }, - "u": "//search.gwu.edu/search?site=gw_main_VCM&client=gw_main_VCM&proxystylesheet=phase2fe&output=xml_no_dtd&q=\u0002\u00010", - "w": "//wiki.guildwars.com/index.php?search=\u0002\u000120", - "ct": "http://www.gwct.org.uk/search?keywords=\u0002\u00010", - "en": { - "\u0010": "http://en.glyphwiki.org/wiki/Special:Search?search=\u0002\u00010", - "tdb": "http://www.gwentdb.com/search?search=\u0002\u00010", - "tify": "http://gwentify.com/cards/?st=\u0002\u00010" - }, - "es": "//www.games-workshop.com/es-ES/searchResults?_dyncharset=UTF-8&_dynSessConf=7453102396832862391&qty=&sorting=&view=&Ntt=\u0002\u00010", - "eek": "http://www.google.com/search?q=\u0002&tbs=qdr:w\u000149", - "lib": "http://library.gwu.edu/search-all?query=\u0002\u00010", - "orkshop": "//www.games-workshop.com/searchResults?_dyncharset=UTF-8&_dynSessConf=1497710725317319147&qty=&sorting=&view=&Ntt=\u0002\u00019" - }, - "y": { - "\u0010": "//google.com/search?q=\u0002 &tbs=qdr:y\u0001110", - "k": "http://www.gyakorikerdesek.hu/kereses.php?keres=\u0002\u00010", - "t": "//www.genyoutube.net/search.php?q=\u0002\u000117", - "azo": "//gyazo.com/search/\u0002\u00010", - "ear": "http://www.google.com/search?q=\u0002&tbs=qdr:y\u000172" - }, - "z": { - "a": "http://www.google.co.za/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001150", - "c": "//www.google.com/search?q=\u0002&lr=lang_zh-CN\u00010", - "\u0010": "http://www.geekzone.fr/?s=\u0002\u00017", - "h": "http://www.geizhals.at/eu/?such=\u0002\u000128", - "ric": "http://www.giallozafferano.it/ricerca-ricette/\u0002 \u00013" - }, - "24": "http://www.google.com/search?q=\u0002&tbs=qdr:d\u000180", - "2a": "//www.g2a.com/?search=\u0002\u000133", - "2p": { - "\u0010": "http://www.g2play.net/catalogsearch/result/index/?q=\u0002\u00010", - "lay": "http://www.g2play.net/catalogsearch/result/index/?q=\u0002\u00010" - }, - "4y": "http://games4you.rs/search-glavni?search_api_views_fulltext=\u0002\u00010", - "100": { - "\u0010": "http://google.com/search?q=\u0002&tbo=1&num=100\u00018", - "en": "http://google.com/search?q=\u0002&tbo=1&num=100&lr=lang_en\u00010" - }, - "2year": "//www.google.com/search?tbs=qdr:y2&q=\u0002&safe=off&ie=utf-8&oe=utf-8\u00010", - "6month": "//www.google.com/search?tbs=qdr:m6&q=\u0002&safe=off&ie=utf-8&oe=utf-8\u000110", - ".at": "//www.google.at/#q=\u0002\u00010", - ".de": "//www.google.de/#q=\u0002\u00018", - ".uk": "//www.google.co.uk/#q=\u0002\u00013" - }, - "h": { - "2": { - "\u0010": "http://www.h2olimpo.com/buscar?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010", - "m": "//duckduckgo.com/?q=\u0002&sites=hard2mano.com\u00010", - "o": "http://www.h2olimpo.com/buscar?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010", - "g2": "http://www.h2g2.com/search?search_type=article_quick_search&searchstring=\u0002&approved_entries_only_chk=1\u00010" - }, - "b": { - "\u0010": "//www.humblebundle.com/store/search?search=\u0002\u000178", - "l": "//www.hbl.fi/?s=\u0002\u00010", - "m": "http://www.heartbowsmakeup.com/?s=\u0002\u00010", - "t": "http://www.homebrewtalk.com/search/?keyword=\u0002\u00010", - "z": "http://okeanos-www.hbz-nrw.de/F/?func=find-c&ccl_term=WRD%3D%22\u0002%22\u00010", - "at": "//www.hornbach.at/shop/suche/sortiment/\u0002\u00010" - }, - "c": { - "\u0010": "http://www.holidaycheck.de/schnellsuche.php?q=\u0002\u00010", - "kg": "//hackage.haskell.org/packages/search?terms=\u0002\u00016", - "lib": "//hclib.bibliocommons.com/v2/search?query=\u0002&searchType=smart\u00015", - "ommons": "//hcommons.org/?s=\u0002\u00010", - "pcs": "//www.findacode.com/code.php?set=HCPCS&c=\u0002\u00010" - }, - "d": { - "b": { - "\u0010": "http://www.hockeydb.com/ihdb/stats/find_player.php?full_name=\u0002\u00013", - "log": "//www.hdblog.it/?sName=\u0002\u00010" - }, - "c": "//www.homedepot.ca/en/home/search.html?q=\u0002\u00010", - "\u0010": "http://hudoc.echr.coe.int/eng#{%22fulltext%22:[%22\u0002%22],%22documentcollectionid2%22:[%22GRANDCHAMBER%22,%22CHAMBER%22]}\u000119", - "l": "//www.heise.de/download/search?terms=\u0002\u00010", - "s": "http://search.datasheetcatalog.net/key/\u0002\u00010", - "t": "//www.hdtracks.com/catalogsearch/result/?q=\u0002\u00010", - "u": "http://acm.hdu.edu.cn/search.php?field=problem&key=\u0002\u00010", - "x": "http://www.homedepot.com/s/\u0002\u0001126", - "yc": "http://hdyc.neis-one.org/?\u0002\u00010", - "ict": "http://hyperdictionary.com/search.aspx?define=\u0002\u00010", - "rapin": "http://hdrapin.com/?s=\u0002\u00010" - }, - "g": { - "a": "//holbein-gymnasium.de/index.php/component/search/?searchword=\u0002\u00010", - "l": { - "e": "//www.haskell.org/hoogle/?hoogle=\u0002\u00014", - "\u0010": "//www.haskell.org/hoogle/?hoogle=\u0002\u00014" - }, - "\u0010": "//www.mercurial-scm.org/wiki/Mercurial?action=fullsearch&context=180&value=\u0002&titlesearch=Title\u000178", - "s": "//www.herold.at/gelbe-seiten/was_\u0002/\u00010", - "nc": "http://www.genenames.org/cgi-bin/quick_search.pl?submit=Submit&search=\u0002\u00010", - "pu": "http://hgpu.org/?s=\u0002\u00010", - "101": "http://www.hardcoregaming101.net/?s=\u0002\u00010" - }, - "h": { - "c": "//hexagonhotchocolate.wordpress.com/?s=\u0002\u00010", - "\u0010": "//www.homehardware.ca/search?query=\u0002\u00013" - }, - "\u0010": "//www.haskell.org/hoogle/?hoogle=\u0002\u00014", - "j": { - "\u0010": "//www.honestjohn.co.uk/search/?q=\u0002\u00014", - "s": "//howjsay.com/search?word=\u0002\u00010" - }, - "k": { - "g": "//hackage.haskell.org/packages/search?terms=\u0002\u00016", - "\u0010": "http://hacktips.it/?s=\u0002\u00010", - "t": "//hooktube.com/results?search_query=\u0002\u00010", - "w": { - "\u0010": "http://hollowknight.wikia.com/wiki/Special:Search?query=\u0002\u000124", - "ikia": "http://hollowknight.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010" - }, - "fp": "//www.hongkongfp.com/?s=\u0002\u00010", - "eleg": "//www.elegislation.gov.hk/results?SEARCH_OPTION=K&keyword.SEARCH_FIELD=E&keyword.SEARCH_KEYWORD=\u0002\u00010", - "legco": "//search.legco.gov.hk/LegCoWeb/Search.aspx?lang=en&searchtype=simple&keyword=\u0002\u00010", - "lii": "http://www.hklii.hk/cgi-bin/sinosrch.cgi?query=\u0002&results=50&submit=Search&mask_world=&mask_path=&callback=on&method=auto&meta=%2Fhklii\u00010", - "ref": "//www.hockey-reference.com/search/search.fcgi?hint=&search=\u0002\u00013" - }, - "l": { - "b": "http://howlongtobeat.com/?q=\u0002\u000135", - "\u0010": "http://hugelol.com/search?q=\u0002\u00010", - "j": "//hlj.com/search/go?w=\u0002\u00010", - "n": "//www.hln.be/zoeken?query=\u0002\u000147", - "p": "//hlp-search.tproxy.de/search?q=\u0002\u00010", - "tb": "http://howlongtobeat.com/?q=\u0002\u000135", - "tv": "//www.hltv.org/search?query=\u0002\u0001243", - "ectura": "//horalectura.blogspot.com/search?q=\u0002\u00010" - }, - "m": { - "\u0010": "//wego.here.com/search/\u0002?\u000129", - "cpl": "//catalog.hmcpl.org/cgi-bin/koha/opac-search.pl?q=\u0002\u00010", - "iku": "http://www5.atwiki.jp/hmiku/?cmd=search&keyword=\u0002\u00010" - }, - "n": { - "d": { - "\u0010": "//hn.algolia.com/?query=\u0002&sort=byDate\u00014", - "k": "//www.harald-nyborg.dk/search?q=\u0002\u00017" - }, - "\u0010": "//hn.algolia.com/?q=\u0002\u00013248", - "o": "//hackernoon.com/search?q=\u0002\u00010", - "u": "//www.hs-neu-ulm.de/nc/suchergebnisse/?id=1289&L=0&q=\u0002\u00010", - "se": { - "\u0010": "http://www.harald-nyborg.se/search?q=\u0002\u00010", - "arch": "http://hn.algolia.com/#!/story/forever/0/\u0002\u00015" - } - }, - "o": { - "h": "//www.heavenofhorror.com/?s=\u0002\u00010", - "\u0010": "//www.haskell.org/hoogle/?hoogle=\u0002\u00014", - "l": { - "\u0010": "//hol.kag.org/a/\u0002\u00010", - "lbarr": "//www.hollandandbarrett.com/search?query=\u0002&isSearch=true\u00010", - "lis": "//hollis.harvard.edu/primo-explore/search?query=any,contains,\u0002&tab=everything&search_scope=everything&vid=HVD2&lang=en_US&offset=0\u00019" - }, - "n": { - "\u0010": "//honto.jp/netstore/search_10\u0002.html?srchf=1&tbty=0\u00019", - "eypot": "http://www.projecthoneypot.org/ip_\u0002\u00010" - }, - "u": { - "\u0010": "//cse.google.com/cse?cx=001106583893786776783%3Au81vudxhm7a&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.sidefx.com%2Fdocs%2Fhoudini%2F&ref=www.sidefx.com%2Fdocs%2F&ss=504j116288j4\u00015", - "zz": "//www.houzz.com/photos/query/\u0002\u00010", - "sepets": "http://www.housepetscomic.com/?s=\u0002\u00010", - "setrip": "http://www.housetrip.com/en/search-holiday-apartments/\u0002?guests=2\u00010" - }, - "w": { - "\u0010": "//howcode.org/search?q=\u0002\u000131", - "ard": "//www.howardpianoindustries.com/search.php?search_query=\u0002\u00010", - "jsay": "//howjsay.com/search?word=\u0002\u00010", - "longtobeat": "//howlongtobeat.com/?q=\u0002\u000171", - "stuffworks": "http://www.howstuffworks.com/search.php?terms=\u0002\u00010", - "thingswork": "http://howthingswork.virginia.edu/search.php?searchs=\u0002&Go.x=0&Go.y=0&searchq=yes&searcha=yes\u00010", - "todoinjava": "http://howtodoinjava.com/search-results/?q=\u0002\u00010", - "toforge": "http://www.howtoforge.com/trip_search?keys=\u0002\u00010", - "togeek": "http://www.howtogeek.com/search/?q=\u0002\u00010", - "tomakemyblog": "http://howtomakemyblog.com/?s=\u0002\u00010" - }, - "de": "http://www.homedepot.com/s/\u0002?NCNI-5\u000114", - "i3": "http://www.hoi3wiki.com/index.php?search=\u0002\u00010", - "i4": "//hoi4.paradoxwikis.com/index.php?search=\u0002\u000111", - "me": { - "\u0010": "http://www.homeadvisor.com/sitesearch/searchQuery?action=SEARCH&searchType=SiteTaskSearch&useExtSearch=false&initialSearch=true&query=\u0002\u000116", - "base": "http://www.homebase.co.uk/webapp/wcs/stores/servlet/Search?storeId=10151&catalogId=1500001201&langId=110&searchTerms=\u0002&authToken=\u00010", - "depot": { - "\u0010": "//www.homedepot.com/s/\u0002\u0001299", - "ca": "//www.homedepot.ca/en/home/search.html?q=\u0002#!q=\u0002\u000110" - }, - "snap": "//www.homesnap.com/search?q=\u0002\u00010", - "stuck": "//www.homestuck.com/search?search=\u0002\u00010", - "work": "http://homeworkhelpforkids.co.uk/?s=\u0002\u00010" - }, - "od": "//www.hood.de/suchergebnisse.htm?q=\u0002\u00010", - "ok": { - "\u0010": "//hooktube.com/results?search_query=\u0002\u00010", - "tube": "//hooktube.com/results?search_query=\u0002\u00010" - }, - "rt": "http://en.hortipedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "sm": "//help.openstreetmap.org/search/?q=\u0002\u00010", - "st": { - "\u0010": "http://networking.ringofsaturn.com/Tools/dig.php?domain=ANY+\u0002\u000112", - "ing": "http://www.whoishostingthis.com/?q=\u0002\u00010" - }, - "tn": "//www.hotnews.ro/cauta/\u0002/1\u00010", - "tt": { - "\u0010": "//homotopytypetheory.org/?s=\u0002\u00010", - "opic": "http://www.hottopic.com/search?q=\u0002\u00010" - }, - "bbyking": "//hobbyking.com/en_us/catalogsearch/result/?q=\u0002\u00010", - "bby-machinist": "http://www.hobby-machinist.com//?=\u0002\u00010", - "bbyworks": "//www.hobbyworks.com/index.cfm?action=search&searchText=\u0002\u00010", - "ckessinlib": "//dlc.lib.de.us/client/en_US/default/search/results?qu=\u0002&te=\u00010", - "ckeydb": "http://www.hockeydb.com/ihdb/stats/findplayer.php?full_name=\u0002\u00016", - "ckeymonkey": "http://www.hockeymonkey.com/nsearch?q=\u0002\u00010", - "ckeyref": "http://www.hockey-reference.com/search/search.fcgi?search=\u0002\u00010", - "ogle": "//hoogle.haskell.org/?hoogle=\u0002&scope=set%3Astackage\u0001894", - "oph": "http://hoopshype.com/?s=\u0002\u00010", - "pac": "http://opac.hebib.de/search?scope=R1&q=\u0002\u00010", - "rnbach": "//www.hornbach.de/shop/suche/sortiment/\u0002\u000116", - "ror": { - "\u0010": "//horormagoria.sk/?s=\u0002\u00010", - "y": "//horormagoria.sk/?s=\u0002\u00010", - "magoria": "//horormagoria.sk/?s=\u0002\u00010" - }, - "tbot": "http://www.hotbot.com/search/web?q=\u0002\u00010", - "tbuzzy": "//www.buzzyhot.com/search?q=\u0002\u00010", - "tel": { - "\u0010": "//hotels.com/search.do?q-destination=\u0002\u00010", - "s": "//hotels.com/search.do?q-destination=\u0002\u00010" - }, - "tline": "http://hotline.ua/sr/?q=\u0002\u00015", - "tsar": "http://www.hotstar.com/search?q=\u0002\u00010", - "tstar": "http://www.hotstar.com/search?q=\u0002\u00010", - "tud": "http://www.homeoftheunderdogs.net/search.php?search_game=\u0002\u00010", - "tukdeals": "http://www.hotukdeals.com/search?action=search&keywords=\u0002\u000121", - "ver": "//www.hover.com/domains/results?q=\u0002\u000129" - }, - "p": { - "b": "//www.hpb.com/products?utf8=%E2%9C%93&keywords=\u0002\u000133", - "c": { - "f": "http://www.housepetscomic.com/forums/search.php?keywords=\u0002\u00010", - "\u0010": "http://www.housepetscomic.com/?s=\u0002\u00010" - }, - "f": "http://www.housepetscomic.com/forums/search.php?keywords=\u0002\u00010", - "\u0010": "http://search.hp.com/query.html?lang=en&submit.x=0&submit.y=0&qt=\u0002&la=en&cc=us\u00016", - "p": { - "\u0010": "//hpluspedia.org/index.php?search=\u0002\u00010", - "id": "//id.healthyplusplus.com/search?q=\u0002\u00010" - }, - "v": "http://www.heise.de/preisvergleich/?fs=\u0002\u000198", - "ecas": "//hpecas.com/pesquisa?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010", - "hosts": "http://hosts-file.net/default.asp?s=\u0002\u00010", - "hys": "//duckduckgo.com/?q=site%3Ahyperphysics.phy-astr.gsu.edu+\u0002\u00013", - "lus": { - "\u0010": "//hpluspedia.org/index.php?title=Special%3ASearch&search=\u0002\u00010", - "pedia": "//hpluspedia.org/index.php?search=\u0002\u00010" - }, - "support": "http://www.support.hp.com/us-en/search?q=\u0002&filter=\u00010", - "wiki": "http://harrypotter.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010" - }, - "s": { - "b": "http://soblex.de/?p_w=\u0002&cmd=search_soblex\u00013", - "\u0010": "http://honyakustar.com/en/\u0002 \u00016", - "l": "//www.hsl.fi/search/solr?keywords=\u0002\u00010", - "w": { - "\u0010": "http://computer.howstuffworks.com/search.php?terms=\u0002\u00010", - "iki": "http://hearthstone.gamepedia.com/index.php?search=\u0002\u000111" - }, - "as": "http://www.hs-albsig.de/search/results.aspx?k=\u0002&cs=Diese%20Website&u=http%3A%2F%2Fwww.hs-albsig.de\u00010", - "db": "//www.adl.org/education-and-resources/resource-knowledge-base/hate-symbols?keys=\u0002\u00010", - "ts": "//hstspreload.org/?domain=\u0002\u000136", - "un": "//www.heraldsun.com.au/?s=\u0002\u00010" - }, - "t": { - "b": "//hooktube.com/results?search_query=\u0002\u00010", - "f": "http://www.howtoforge.com/trip_search?keys=\u0002\u00010", - "g": "http://www.howtogeek.com/search/?q=\u0002\u00010", - "\u0010": "//hooktube.com/results?search_query=\u0002\u00010", - "w": { - "b": "//www.htw-berlin.de/suche/?domain=www.htw-berlin.de&query=\u0002\u00010", - "\u0010": "//www.htw-dresden.de/suche.html?tx_kesearch_pi1[sword]=\u0002\u00019" - }, - "el": "//www.herold.at/telefonbuch/telefon_\u0002/\u00010", - "ml": { - "\u0010": "//duckduckgo.com/html/?q=\u0002\u000146", - "5d": "http://html5doctor.com/search/?q=\u0002\u00010", - "2txt": "http://www.w3.org/services/html2txt?url=\u0002\u00010", - "book": "http://htmlbook.ru/search/?as_q=\u0002\u00010", - "dog": "http://www.htmldog.com/search/?q=\u0002\u00010" - }, - "tp": { - "\u0010": "//httpstatuses.com/\u0002 \u000193", - "cat": "//http.cat/\u0002\u00010" - }, - "cat": "//http.cat/\u0002\u00010", - "ube": "//hooktube.com/results?search_query=\u0002\u00010" - }, - "u": { - "d": { - "e": "http://translate.google.com/#hu/de/\u0002\u00010", - "\u0010": "//hud.summon.serialssolutions.com/search?ho=t&l=en&fvf=ContentType%2CBook+Review%2Ct&q=\u0002&limit=everything\u00010" - }, - "\u0010": "//healthunlocked.com/search/\u0002\u00010", - "m": { - "a": "http://www.humanite.fr/search/\u0002\u00010", - "\u0010": "//www.humblebundle.com/store/search?sort=bestselling&search=\u0002\u00010", - "ble": { - "\u0010": "//www.humblebundle.com/store/search?search=\u0002\u000178", - "best": "//www.humblebundle.com/store/search?sort=bestselling&search=\u0002\u00010", - "deals": "//www.humblebundle.com/store/search?sort=discount&search=\u0002\u00010", - "wiki": "http://humble.wikia.com/w/\u0002\u00010" - } - }, - "co": "http://hudoc.echr.coe.int/sites/eng/Pages/search.aspx#{%22fulltext%22:[%22\u0002 %22],%22documentcollectionid2%22:[%22GRANDCHAMBER%22,%22CHAMBER%22]}\u00010", - "en": "http://translate.google.com/#hu/en/\u0002\u000177", - "es": "//translate.google.hu/#hu/es/\u0002\u00010", - "ge": "//hugethinking.com/?s=\u0002\u00010", - "go": "//codewithhugo.com/search/?q=\u0002\u00010", - "it": "http://translate.google.com/#hu/it/\u0002\u00010", - "kd": "http://www.hotukdeals.com/search?action=search&keywords=\u0002\u000121", - "lu": "http://www.hulu.com/search?query=\u0002\u000155", - "sr": "//translate.google.com/#hu/sr/\u0002 \u00010", - "awei": "http://consumer.huawei.com/en/search/index.htm?keywords=\u0002\u00010", - "bpg": "//hubpages.com/search/?s=\u0002 \u00010", - "bski": "//hubski.com/search?q=\u0002\u00010", - "bspot": "//knowledge.hubspot.com/search?q=\u0002\u00010", - "ffingtonpost": "//www.huffingtonpost.com/search?keywords=\u0002&sortBy=recency&sortOrder=desc\u00010", - "ffpost": "//www.huffingtonpost.com/search?keywords=\u0002&sortBy=recency&sortOrder=desc\u00010", - "skermax": "http://huskermax.com/?q=\u0002\u00010", - "uto": "http://www.huuto.net/hakutulos?words=\u0002\u00017" - }, - "v": { - "g": "http://hvg.hu/kereses?term=\u0002&x=0&y=0\u00010", - "\u0010": "http://www.hinnavaatlus.ee/search/?Type=products&Query=\u0002\u000111", - "v": "//geofox.hvv.de/jsf/home.seam?destination=\u0002\u00010", - "norman": "//www.harveynorman.com.au/catalogsearch/result/?q=\u0002\u00010", - "store": "//www.hv-store.de/navi.php?qs=\u0002: \u00010" - }, - "w": { - "2": "//howto9ja.com/?s=\u0002\u00010", - "d": "http://www.hollywoodreporter.com/search/\u0002 \u00010", - "\u0010": "http://halo.umbc.edu/cgi-bin/haloweb/nrc1.pl?display=json&operation=search&keyword=\u0002\u00014", - "s": "//www.hackingwithswift.com/search/\u0002\u000147", - "z": "http://www.hardwarezone.com.sg/search/forum/?\u0002\u00010", - "iki": "//hi.wikipedia.org/w/index.php?search=\u0002&title=विशेष%3Aखोज&go=जाएँ&ns0=1\u00010" - }, - "x": { - "b": "http://www.hoaxbuster.com/search/node/\u0002%20type%3Aarticle\u00010", - "\u0010": "//hex.pm/packages?search=\u0002&sort=downloads\u0001190", - "h": "http://hunterxhunter.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "y": { - "\u0010": "//via.hypothes.is/\u0002\u00010", - "p": { - "\u0010": "http://www.hyperninjas.com/search?q=\u0002\u00010", - "em": "http://hypem.com/#!/search/\u0002/1/\u00010", - "er": { - "\u0010": "//www.hyperbola.info/packages/?q=\u0002\u00010", - "ninjas": "http://hyperninjas.com/search?q=\u0002\u00010" - }, - "estat": "http://www.\u0002.hypestat.com/\u00010", - "hen": "//www.hyphenation24.com/word/\u0002/\u00010", - "ixel": "//hypixel.net/player/\u0002/\u00010" - }, - "t": { - "\u0010": "//www.hytiva.com/search?searchString=\u0002\u00013", - "s": "//www.hytiva.com/strains?searchString=\u0002\u00010" - }, - "mn": { - "\u0010": "http://hymn.se/?s=\u0002\u00010", - "s": { - "e": "http://hymn.se/?s=\u0002\u00010", - "\u0010": "//www.hymnal.net/en/search/all/all/\u0002\u00010" - }, - "ary": "//hymnary.org/search?qu=\u0002\u00016" - }, - "sb": "//hypixel-skyblock.fandom.com/wiki/Special:Search?query=\u0002\u000170", - "brid": "//maps.google.com/maps?t=h&q=\u0002\u00010", - "vee": "//www.hy-vee.com/grocery/search?search=\u0002\u00010", - "ves": "http://www.hyves.nl/search/hyver/?searchterms=\u0002\u00010" - }, - "ad": { - "d": "//handmade-add.com/index.php?route=product/search&search=\u0002\u00010", - "\u0010": "http://hackaday.com/?s=\u0002\u00015", - "oop": "http://search-hadoop.com/?q=\u0002\u00010" - }, - "ak": { - "5": { - "f": "//forums.hak5.org/index.php?app=core&module=search&do=search&fromMainBar=1&search_term=\u0002\u00010", - "\u0010": "http://hak5.org/?s=\u0002\u00010" - }, - "\u0010": "http://wiki.hydrogenaudio.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010" - }, - "al": { - "\u0010": "//hal.archives-ouvertes.fr/search/index/?q=\u0002\u00015", - "altube": "//www.halaltube.com/?s=\u0002\u00010", - "opedia": "http://www.halopedia.org/index.php?search=\u0002\u00013" - }, - "am": "http://www.hamdata.com/getcall.html?callsign=\u0002\u00010", - "aq": "http://hakkani.org/?term=\u0002\u00010", - "eb": { - "\u0010": "//www.heb.com/search/?q=\u0002\u000168", - "wiki": "//he.wikipedia.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010" - }, - "ex": { - "\u0010": "http://www.colorhexa.com/\u0002\u000111", - "pm": "//hex.pm/packages?search=\u0002&sort=downloads\u0001190", - "docs": "http://hexdocs.pm/\u0002\u0001146" - }, - "fr": "http://duckduckgo.com/?q=site:linuxfr.org+\u0002\u00010", - "fs": "//www.hifishark.com/search?q=\u0002\u00010", - "ft": "http://www.harborfreight.com/catalogsearch/result?q=\u0002\u000132", - "fu": { - "\u0010": "//www.hs-furtwangen.de/suche/?L=0&id=207&tx_solr[q]=\u0002\u00010", - "boss": "//hsfu.boss2.bsz-bw.de/Search/Results?lookfor=\u0002&limit=20\u00010" - }, - "i5": "http://hi5.com/friend/processHeaderNameSearch.do?searchText=\u0002\u00010", - "io": "//hackaday.io/search?term=\u0002\u00010", - "ip": { - "\u0010": "http://www.hippressurecooking.com/?s=\u0002 \u00010", - "pie": "//wiki.hippiestation.com//index.php?title=Special%3ASearch&profile=default&search=\u0002\u00010" - }, - "ro": "//www.hogeschoolrotterdam.nl/zoek/?q=\u0002\u00010", - "rv": "http://www.restovisio.com/search?sq=\u0002\u00010", - "aaretz": "http://www.haaretz.co.il/misc/search-results?searchType=textSearch&simpleSearch=simpleSearch&text=\u0002\u00010", - "abr": { - "a": "http://habrahabr.ru/search/?q=\u0002\u00010", - "\u0010": "//habr.com/ru/search/?&q=\u0002\u000132" - }, - "abbotrading": "http://www.ruilwaarde.nl/?p=\u0002\u00010", - "ack": { - "\u0010": "//www.romhacking.net/?page=hacks&genre=&platform=&game=&category=&perpage=30&order=Date&dir=1&title=\u0002&author=&hacksearch=Go\u00014", - "42": "//hack42.nl/mediawiki/index.php?search=\u0002\u00010", - "aday": "http://hackaday.com/?s=\u0002\u00015", - "age": "http://hackage.haskell.org/packages/search?terms=\u0002\u0001518", - "eradana": "//blog.hackeradana.org/search?q=\u0002\u00010", - "ernews": "http://hn.algolia.com/#!/all/forever/0/\u0002\u000150", - "ology": "//blog.drhack.net/?s=\u0002\u00010", - "ster": "//www.hackster.io/search?i=projects&q=\u0002\u00013" - }, - "afelenl": "//www.hafele.nl/INTERSHOP/web/WFS/Haefele-HNL-Site/nl_NL/-/EUR/ViewParametricSearch-SimpleOfferSearch?SearchType=all&SearchTerm=\u0002\u00010", - "ahwul": "http://www.hahwul.com/search?max-results=7&q=\u0002\u00010", - "anja": "http://hanja.naver.com/search?query=\u0002\u000114", - "anze": "//www.hanze.nl/nld/zoeken?k=\u0002\u00010", - "andelsblatt": "http://app.handelsblatt.com/suche/?sw=\u0002\u00010", - "andmadeadd": "//handmade-add.com/index.php?route=product/search&search=\u0002\u00010", - "andytarife": "//www.handytarife.de/?q=\u0002\u00010", - "annaford": "http://www.hannaford.com/catalog/search.cmd?form_state=searchForm&keyword=\u0002\u00013", - "ansard": "//hansard.parliament.uk/search?searchTerm=\u0002\u00010", - "anzidb": "http://hanzidb.org/character/\u0002\u00010", - "anzicraft": "http://www.hanzicraft.com/character/\u0002\u00010", - "appi": "//www.happi.com/contents/searchcontent/all/\u0002/\u00010", - "appycow": "//www.happycow.net/searchmap?lat=&lng=&location=\u0002\u00014", - "apshoe": "//www.hapshoe.com/Arama?1&kelime=\u0002\u00010", - "ardocp": "//www.hardocp.com/search/?q=\u0002\u00010", - "ardwareinfo": "//us.hardware.info/#search:\u0002\u00010", - "arney": "//www.harney.com/pages/search-results?findify_q=\u0002\u00010", - "arptabs": "//www.harptabs.com/searchsong.php?Name=\u0002&HarpType=0\u00010", - "arrypotter": "http://harrypotter.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "arvardlib": "http://hollis.harvard.edu/primo_library/libweb/action/dlSearch.do?institution=HVD&vid=HVD&tab=everything&displayField=all&search_scope=everything&mode=Basic&onCampus=false&displayMode=full&query=any%2Ccontains%2C\u0002\u00010", - "ashtag": "//twitter.com/search?q=%23\u0002\u00017", - "askellwiki": "http://www.haskell.org/haskellwiki/Special:Search/\u0002\u00010", - "astane": "http://www.trhastane.com/arama.php?sehir=0&word=\u0002 \u00010", - "athi": "http://babel.hathitrust.org/cgi/ls?field1=ocr;q1=\u0002;a=srchls\u00013", - "atebu": "http://b.hatena.ne.jp/search/text?q=\u0002\u000187", - "aven": "http://havenmaine.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "avana": "//crazyabouthavana.com/?s=\u0002\u00010", - "awk": "http://hawkclothing.uk/index.php?route=product/search&search=\u0002\u00010", - "axelib": "http://lib.haxe.org/search?v=\u0002\u00010", - "ayoo": "http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=\u0002\u00010", - "aze": "//hazeguitars.com/search?q=\u0002\u00010", - "eadfi": "//www.head-fi.org/search/9458473/?q=\u0002&o=relevance&c[p][sonnb_xengallery_photo][focal]=0&c[p][sonnb_xengallery_photo][iso]=0&c[p][sonnb_xengallery_photo][aperture]=0\u00010", - "ead-fi": "http://www.head-fi.org/search.php?search=\u0002\u00010", - "eadtalker": "//headtalker.com/?s=\u0002&post_type[]=campaigns\u00010", - "ealthable": "//www.healthable.org/?s=\u0002\u00010", - "eartbleed": "http://filippo.io/Heartbleed/#\u0002\u00014", - "earthpwn": "http://www.hearthpwn.com/search?search=\u0002#t1:cards\u00010", - "earthstone": "http://hearthstone.gamepedia.com/?search=\u0002\u00010", - "eaters": "//www.heatershop.co.uk/search?query=\u0002\u00010", - "eatspring": "//www.heatspring.com/app/courses/?query=\u0002\u00010", - "ecf": "http://hazmeelchingadofavor.com/?s=\u0002\u00010", - "eeza": "http://www.heeza.fr/fr/recherche?orderby=position&orderway=desc&search_query=\u0002&submit_search=Rechercher\u00010", - "eidi": "http://katalog.ub.uni-heidelberg.de/cgi-bin/search.cgi?fsubmit=1&query= \u0002\u00015", - "eise": "http://www.heise.de/suche/?q=\u0002&rm=search\u00016", - "eilkraeuter": "http://heilkraeuter.de/cgi-bin/search.cgi?Terms=\u0002\u00010", - "einzelnisse": "http://www.heinzelnisse.info/dict?searchItem=\u0002 \u00019", - "elm": { - "\u0010": "http://www.helm.nu/Pages/Search.aspx?search=\u0002\u00013", - "h": "//hub.helm.sh/charts?q=\u0002\u000119", - "et": "http://haku.helmet.fi/iii/encore/search/C__S\u0002\u00013" - }, - "elp": "//help.duckduckgo.com/search?q=\u0002\u000126", - "elka": "//helka.finna.fi/Search/Results?lookfor=\u0002\u00010", - "ema": "//www.hema.nl/search?q=\u0002&lang=nl_NL\u00010", - "enna": "//www.henna-boy.co.uk/index.php?route=product/search&search=\u0002\u00010", - "enry": { - "\u0010": "//www.henrys.com/Search/\u0002.aspx?q=\u0002\u00010", - "sphoto": "//www.henrys.com/Search/\u0002.aspx?q=\u0002\u00010" - }, - "endon": "http://www.thehendonmob.com/search/?q=\u0002\u00010", - "epsib": { - "\u0010": "http://www.hepsiburada.com/ara?q=\u0002\u00013", - "urada": "http://www.hepsiburada.com/ara?q=\u0002\u00013" - }, - "ere": "//wego.here.com/search/\u0002\u000188", - "eraldsun": "//www.heraldsun.com.au/?s=\u0002\u00010", - "erber": "//duckduckgo.com/?q=\u0002+site%3Aherber.de\u00010", - "eritage": "//www.heritage.org/search?contains=\u0002\u00010", - "ermes": "//www.myhermes.de/empfangen/sendungsverfolgung/sendungsinformation/#\u0002\u00013", - "eroes": "//heroeshearth.com/hero/\u0002/\u00010", - "eroku": "http://devcenter.heroku.com/articles?q=\u0002\u00010", - "erold": "http://www.herold.at/telefonbuch/\u0002/\u00010", - "esari": "http://hs.fi/haku/?search-term=\u0002\u00010", - "eute": "//www.zdf.de/suche?q=\u0002&synth=true&sender=heute.de&from=&to=&attrs=\u00010", - "eureka": { - "\u0010": "http://www.heureka.cz/?h[fraze]=\u0002\u0001105", - "sk": "http://www.heureka.sk/?h[fraze]=\u0002 \u00010" - }, - "fqpdb": "http://www.hfqpdb.com/search/\u0002\u00010", - "i2en": "//translate.google.com/#view=home&op=translate&sl=hi&tl=en&text=\u0002\u00010", - "ibp": "//haveibeenpwned.com/account/\u0002\u00014", - "idden": "http://hwikis25cffertqe.onion/index.php?search=\u0002&title=Special%3ASearch\u000128", - "ideme": "//nl.hideproxy.me/go.php?u=\u0002\u000118", - "ighfive": "//success.highfive.com/hc/en-us/search?utf8=✓&query=\u0002\u00010", - "ighsnob": "http://www.highsnobiety.com/?s=\u0002\u00010", - "ihostels": "//www.hihostels.com/search/hostels?q=\u0002\u00010", - "ikr": "http://www.hikr.org/cse.php?q=\u0002\u00010", - "illel": "http://www.hillel.org/college-guide/search#keyword=\u0002&radius=10\u00010", - "ilux4x4": "http://www.hilux4x4.co.za/views/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Search\u00010", - "indu": "http://www.thehindu.com/search/?q=\u0002\u000136", - "inta": { - "\u0010": "http://hintaseuranta.fi/haku/\u0002\u00013", - "fi": "http://hinta.fi/haku?q=\u0002\u00010" - }, - "inews": "http://hi-news.ru/?s=\u0002\u00010", - "intoeng": "http://www.maxgyan.com/search/hindi-to-english/index.php?q=\u0002\u00010", - "istory": "http://www.history.com/search?search-field=\u0002&x=0&y=0\u00015411", - "istorious": "http://historio.us/search/?q=\u0002\u00013", - "itta": "//www.hitta.se/sök?vad=\u0002\u000159", - "itchwiki": "http://hitchwiki.org/en/index.php?search=\u0002&fulltext=Search&title=Special%3ASearch\u00010", - "ive": "//www.hive.co.uk/Search/Keyword?keyword=\u0002\u00010", - "rwiki": "http://hrwiki.org/w/index.php?title=Special:Search&search=\u0002&go=Go\u000115" - }, - "i": { - "3": "//www.i3-technologies.com/en/resources/knowledge-base/?q=\u0002\u00010", - "a": { - "\u0010": "//web.archive.org/web/*/\u0002\u000157", - "p": { - "\u0010": "http://indeaparis.com/component/finder/search?q=\u0002 \u00010", - "pmag": "http://www.iappmag.de/?s=\u0002\u00010" - }, - "v": { - "\u0010": "//www.iav.com/search/site/\u0002\u00010", - "en": "//www.iav.com/en/search/site/\u0002\u00010" - }, - "w": "http://infinitythewiki.com/en/\u0002\u00010", - "cr": "//www.iacr.org/search/?q=\u0002\u00010", - "ta": "http://airportcodes.aero/\u0002\u00010", - "cac": "//iacac.aero/?s=\u0002\u00010", - "cobus": "http://iacobus.usc.es/search*gag/?searchtype=Y&SORT=D&searcharg=\u0002 \u00010", - "loc": "//ialoc.ro/restaurante-bucuresti?search=\u0002\u00010", - "rchive": "http://www.archive.org/search.php?query=\u0002 \u000119", - "sutoya": "http://www.irasutoya.com/search?q=\u0002\u00010", - "teen": "//iate.europa.eu/search/byUrl?term=\u0002&sl=en\u00015" - }, - "b": { - "c": "http://www.mtb-news.de/forum/search/12469693/?q=\u0002&o=relevance\u00010", - "d": { - "b": "http://www.ibdb.com/search.asp?SearchFor=\u0002&SearchBy=All\u00014", - "\u0010": "//research.investors.com/stock-quotes/nasdaq-apple-inc-\u0002.htm?fromsearch=1\u00010" - }, - "\u0010": "//www.indiebound.org/search/book?keys=\u0002\u000110", - "m": { - "\u0010": "http://www.ibm.com/Search/?q=\u0002&v=16&en=utf&lang=en&cc=us&Search=Search\u00018", - "kc": "//www.ibm.com/support/knowledgecenter/en/search/\u0002\u00010" - }, - "s": "//www.ibs.it/search/?ts=as&query=\u0002\u00016", - "ge": "//www.ibge.gov.br/busca.html?searchword=\u0002&searchphrase=all\u00010", - "ergourfr": "//www.ibergour.fr/fr/search?query=\u0002\u00010", - "erlibro": "//www.iberlibro.com/servlet/SearchResults?sts=t&an=&tn=&kn=\u0002&isbn=\u00010", - "hejo": "http://www.ibhejo.com/ssearch.php?simple_search=Y&mode=search&search_substring=\u0002&sort_by=high\u00010", - "iblio": "http://www.ibiblio.org/gsearch/?cx=006345117986368989313%3Ar2fkn4tcz5i&cof=FORID%3A11&ie=UTF-8&q=\u0002\u00010" - }, - "c": { - "a": { - "\u0010": "//www.google.ca/imghp?\u0002\u00010", - "nn": { - "\u0010": "//www.icann.org/search/#!/?searchText=\u0002\u00010", - "wiki": "//icannwiki.com/index.php?search=\u0002\u00010" - }, - "recept": "//www.ica.se/receptsok/#:search=\u0002\u00010", - "ruspedia": "http://www.kidicaruswiki.org/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "d": { - "9": "http://www.icd9data.com/Search/?q=\u0002\u00010", - "\u0010": "http://www.icd-code.de/suche/icd/recherche.html?sp=0&sp=S\u0002 \u00010", - "10": "http://www.icd10data.com/Search.aspx?search=\u0002\u00010" - }, - "i": { - "\u0010": "//ici.radio-canada.ca/recherche?q=\u0002\u00010", - "ba": "http://www.iciba.com/\u0002\u00015" - }, - "\u0010": "//www.imperial.ac.uk/search/?q=\u0002\u00013", - "m": "http://www.icheckmovies.com/search/movies/?query=\u0002\u00010", - "o": { - "\u0010": "//icobench.com/icos?s=\u0002\u00010", - "n": { - "\u0010": "http://www.iconfinder.com/search/?q=\u0002\u00010", - "s": { - "8": "//icons8.com/web-app/for/all/\u0002 \u00010", - "\u0010": "http://www.iconfinder.com/search/?q=\u0002\u00010" - }, - "archive": { - "\u0010": "http://www.iconarchive.com/tag/\u0002\u00010", - "cc": "http://www.iconarchive.com/search?q=\u0002&license=commercialfree\u00010" - }, - "finder": "http://www.iconfinder.com/search/?q=\u0002\u00010" - }, - "mp": "http://www.i-comparateur.com/search.aspx?q=\u0002\u00010" - }, - "es": "http://ices.dk/Searchcenter/Pages/default.aspx?k=\u0002\u00010", - "pl": "//catpro.icpl.org/iii/encore/search?lang=eng&target=\u0002\u00010", - "ecast": "http://dir.xiph.org/search?search=\u0002 \u00010", - "heckmovies": "http://www.icheckmovies.com/search/movies/?query=\u0002\u00010", - "station": "http://www.icstation.com/advanced_search_result.php?keywords=\u0002&search_in_description=1\u00010", - "ultr": "http://www.iculture.nl/?s=\u0002\u00010" - }, - "d": { - "d": "http://www.google.it/cse?cx=partner-pub-5110806989181281:4419033070&q=\u0002\u00010", - "e": { - "e": "//www.idee-shop.com/search?sSearch=\u0002\u00010", - "\u0010": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000188", - "s": "//www.idealo.es/resultados.html?q=\u0002\u00010", - "al": { - "\u0010": "http://www.idealworld.tv/search/\u0002?fh_location=//IdealWorld/en_GB/$s=\u0002&gs=\u0002\u00013", - "o": { - "\u0010": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000188", - "de": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000188", - "es": "//www.idealo.es/resultados.html?q=\u0002\u00010" - } - }, - "as": "http://ideas.repec.org/cgi-bin/htsearch?q=\u0002&cmd=Search!\u00010", - "je": "//ideja.d2.si/results.php?q=\u0002\u00010", - "fix": "//www.idefix.com/search/?Q=\u0002\u00010", - "ntica": "http://identi.ca/search/people?q=\u0002&search=Search\u00010" - }, - "g": "//www.doomworld.com/idgames//index.php?search=1&field=title&sort=time&order=desc&word=\u0002\u00013", - "\u0010": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000188", - "i": { - "\u0010": "//idoimaging.com/programs/fulltext?utf8=✓&Program[fulltext]=\u0002\u00010", - "om": { - "\u0010": "http://idioms.thefreedictionary.com/\u0002\u0001105", - "s": "http://www.thefreedictionary.com/\u0002 \u00015" - } - }, - "l": "http://www.harrisgeospatial.com/docs/SearchResults.aspx?q=\u0002\u00010", - "s": "//instantdomainsearch.com/#search=\u0002\u00016", - "fr": "//www.idealo.fr/prechcat.html?q=\u0002 \u000116", - "fy": "//docs.idfy.io/?q=\u0002\u00010", - "os": "//jizdnirady.idnes.cz/vlakyautobusymhdvse/spojeni/?f=\u0002&t=\u0002\u00015", - "olmawiki": "http://idolmaster.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "ownloadblog": "http://www.idownloadblog.com/search/?cx=partner-pub-2130162217902648%3Adgi3x3-xedb&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002&siteurl=www.idownloadblog.com%2F&ref=www.google.com%2F&ss=1069j239311j6\u00010", - "ris": "http://docs.idris-lang.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "rop": "//www.idropnews.com/?s=\u0002\u00010", - "root": "//idroot.us/?s=\u0002\u00010" - }, - "\u0010": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "e": { - "c": "//dlc.iec.cat/results.asp?txtEntrada=\u0002\u000115", - "\u0010": "//duckduckgo.com/?q=site%3Aie+\u0002\u00010", - "l": { - "\u0010": "//support.inspiredelearning.com/help/search/?phrase=\u0002\u00010", - "w": "//industriaenlaweb.com.ar/buscador?name=\u0002\u00010" - }, - "p": "http://www.iep.utm.edu/\u0002 \u00014", - "s": "http://www.eki.ee/dict/ies/index.cgi?Q=\u0002\u00014", - "t": { - "f": "http://datatracker.ietf.org/doc/search/?name=\u0002&activeDrafts=on&rfcs=on\u00010", - "\u0010": "//digital-library.theiet.org/search?value1=\u0002&option1=all&option2=contentType&pageSize=20&value2=\u00010" - }, - "x": "//www.iex.nl/Zoeken/Default.aspx?q=\u0002\u00010", - "ee": { - "\u0010": "http://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=\u0002\u000131", - "s": "http://spectrum.ieee.org/searchContent?q=\u0002\u00010" - }, - "ns": "http://www.iens.nl/restaurant?q=\u0002\u00010" - }, - "g": { - "a": "//www.iga.net/en/search?k=\u0002\u00010", - "g": "//www.indiegogo.com/explore?q=\u0002\u00014", - "\u0010": "//www.instagram.com/explore/tags/\u0002/\u00013525", - "n": "//www.ign.com/search?q=\u0002\u000150", - "u": "//www.instagram.com/\u0002\u000175", - "db": "//www.igdb.com/search?q=\u0002\u000122", - "em": "http://parts.igem.org/Special:Search?search=\u0002 \u00010", - "if": "//imgur.com/search/score?q=ext%3Agif+\u0002\u000129", - "ra": "http://igra-apple.ru/?s=\u0002\u00010", - "orandandre": "//igorandandre.com/search/\u0002\u00010" - }, - "l": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=images&iax=images&iaf=size%3Aimagesize-large\u000166", - "m": "http://www.ilmeteo.it/meteo/\u0002\u00017", - "fatto": "http://www.ilfattoquotidiano.it/\u0002\u000122", - "ink": "//il.ink/\u0002\u00010", - "lumos": "http://illumos.org/man/\u0002\u00010", - "ounge": "http://www.ilounge.com/index.php/search/results/search&keywords=\u0002\u00010", - "ovefreesoftware": "http://www.ilovefreesoftware.com/gsearch?ie=UTF-8&q=\u0002&ss=1633j526083j9&cof=FORID%3a10&cx=008701510501807727669%3aabbyr0bpxi0&siteurl=www.ilovefreesoftware.com%2f\u00010", - "post": "http://www.ilpost.it/?s=\u0002\u000114", - "sole24ore": "http://www.ricerca24.ilsole24ore.com/fc?keyWords=\u0002&submit=+&header-search=keyWords&cmd=static&moneyPath=http://finanza-mercati.ilsole24ore.com&chId=30&path=/search/search_engine.jsp&field=Titolo|Testo&orderBy=score+desc\u00010", - "stu": "http://search.illinoisstate.edu/?q=\u0002\u00010", - "tapulu": "http://www.iltapulu.fi/search.php?q=\u0002\u00010", - "tasanomat": "http://iltasanomat.fi/haku/?search-term=\u0002\u00010" - }, - "n": { - "d": { - "\u0010": "//www.india.com/searchresult/?cx=partner-pub-6717584324019958%3A4408969895&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=\u00010", - "ol": "//www.indolio.com/search?q=\u0002\u00010", - "eed": "http://www.indeed.com/jobs?q=\u0002\u000147", - "ependent": "http://www.independent.co.uk/search/simple.do?destinationSectionUniqueName=search&publicationName=ind&searchString=\u0002\u00014", - "iabookstore": "//www.indiabookstore.net/search?q=\u0002\u00010", - "iamart": "http://dir.indiamart.com/cgi/catprdsearch.mp?ss=\u0002\u00010", - "iankanoon": "//indiankanoon.org/search/?formInput=\u0002\u00010", - "iedb": "http://www.indiedb.com/search?cx=008031850949085947773%3Acbmjgaamtxe&cof=FORID%3A11&ie=UTF-8&q=\u0002&sa.x=0&sa.y=0\u00010", - "iegogo": "//www.indiegogo.com/search#/?q=\u0002\u00010", - "iemerch": "//www.indiemerchstore.com/search?q=\u0002\u00010", - "ieweb": "http://indieweb.org/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "igo": "http://www.chapters.indigo.ca/home/search/?keywords=\u0002\u000115", - "yaconnects": "http://www.indyaconnects.com/catalogsearch/result/?q=\u0002\u00010" - }, - "g": "//www.ing.de/suche/?query=\u0002\u00017", - "\u0010": "//invidio.us/search?q=\u0002\u000120", - "l": "//ivdnt.org/zoeken-in-woordenboeken?w=\u0002\u00010", - "n": { - "\u0010": "//www.israelnationalnews.com/Search.aspx?string=\u0002\u00010", - "erf": "http://www.innerfidelity.com/search/node/\u0002\u00010", - "erlightcrystals": "//innerlightcrystals.co.uk/sales/index.php?main_page=advanced_search_result&keyword=\u0002&search_in_description=1\u00010", - "ooo": "http://www.innovativity.org/moteur-de-recherche-innooo.php?typerecherche=&item=\u0002\u00010", - "sida": "//innsida.ntnu.no/sok?site=innsida&query=\u0002&category=all\u00010" - }, - "o": "http://www.inoreader.com/search/\u0002\u00010", - "p": { - "\u0010": "//duckduckgo.com/?q=-site%3Apinterest.com+\u0002&iar=images&iax=images&ia=images\u00013", - "ost": "//inpost.pl/pl/pomoc/znajdz-przesylke?parcel=\u0002\u00013" - }, - "s": { - "\u0010": "http://www.instructables.com/howto/\u0002\u00013", - "as": "http://www.insa-strasbourg.fr/fr/?s=\u0002\u00010", - "ta": { - "\u0010": "//www.instagram.com/explore/tags/\u0002\u00011283", - "gram": "//instagram.com/explore/tags/\u0002\u0001270", - "llgentoo": "//wiki.installgentoo.com/index.php/\u0002\u00010", - "ntgaming": "//www.instant-gaming.com/en/search/?q=\u0002\u000116", - "ntlogo": "http://instantlogosearch.com/?q=\u0002\u00010", - "paper": "//www.instapaper.com/search?q=\u0002\u00010" - }, - "ectimages": "//www.insectimages.org/search/action.cfm?q=\u0002\u00010", - "ider": "//insider.in/search?q=\u0002\u00010", - "ideschools": "http://insideschools.org/search?q=\u0002 \u00010", - "pire": "http://inspirehep.net/search?p=\u0002\u000193", - "pirationhut": "http://inspirationhut.net/?s=\u0002\u00010", - "tructables": "http://www.instructables.com/howto/\u0002\u00013" - }, - "t": { - "\u0010": "http://www.internazionale.it/search/?q=\u0002\u00010", - "el": { - "i": "//software.intel.com/sites/landingpage/IntrinsicsGuide/#!=undefined&text=\u0002\u00010", - "\u0010": "http://www.intel.com/content/www/us/en/search.html?keyword=\u0002\u00010" - }, - "er": { - "\u0010": "//www.interencheres.com/recherche/lots?search=\u0002&area=france\u00010", - "cept": "//theintercept.com/search/?s=\u0002\u00010", - "nazionale": "http://www.internazionale.it/search/\u0002\u00010", - "sport": "//www.intersport.se/soksida/?q=\u0002\u00010" - }, - "aljazeera": "http://www.aljazeera.com/Services/Search/?q=\u0002\u00010", - "egral": "//www.wolframalpha.com/input/?i=integral+\u0002\u00010", - "heclouds": "//intheclouds.io/search?q=\u0002\u00010", - "odns": "http://www.intodns.com/\u0002\u00010", - "ohu": "http://into.hu/kereses.php?kereses=\u0002&cikk=1&forum=1&letolt=1&fal=1&zene=1&kerdesek=1&page=1\u00010" - }, - "v": { - "d": "//invidio.us/search?q=\u0002\u000120", - "\u0010": "//inventaire.io/search?q=\u0002\u000141", - "ak": "//invak.info/?s=\u0002\u00010", - "id": { - "\u0010": "//invidio.us/search?q=\u0002\u000120", - "io": { - "\u0010": "//invidio.us/search?q=\u0002\u000120", - "us": "//www.invidio.us/search?q=\u0002\u000175" - } - }, - "est": { - "\u0010": "//www.investopedia.com/search/?search-terms=\u0002\u00017", - "ing": "//www.investing.com/search/?q=\u0002\u00015", - "opedia": "//www.investopedia.com/search/?search-terms=\u0002\u00017", - "orwords": "http://www.investorwords.com/search_cse.php?q=\u0002\u00010" - } - }, - "ab": "http://www.ineedabargain.com/deals/search?q=\u0002 \u00010", - "ah": "//www.inah.gob.mx/buscador?searchword=\u0002\u00010", - "at": "//www.inaturalist.org/search?q=\u0002\u000134", - "ci": "http://inci.sozlukspot.com/w/\u0002\u000112", - "et": "http://www.inet.se/hitta?q=\u0002\u00010", - "ha": { - "\u0010": "http://catalogue.inha.fr/inha/List.csp?SearchT1=\u0002&Index1=Tlm&Database=5&OpacLanguage=fre&NumberToRetrieve=50&SearchMethod=Find_1&SearchTerm1=\u0002&Profile=Profile35&PreviousList=Start&PageType=Start&WebPageNr=1&WebAction=NewSearch&StartValue=1&RowRepeat=0&MyChannelCount=\u00010", - "lt": "//www.inhaltsangabe.de/?s=\u0002\u00010" - }, - "kb": { - "\u0010": "//inkbunny.net/submissionsviewall.php?rid=&mode=search&page=1&orderby=create_datetime&text=\u0002&stringtype=and&keywords=yes&title=yes&description=no&artist=&favsby=&type=&sale=&days=&keyword_id=&user_id=&random=&md5=\u00010", - "un": "//inkbunny.net/submissionsviewall.php?mode=search&stringtype=and&keywords=yes&title=yes&description=yes&text=\u0002\u00010" - }, - "rs": "http://www.inrs.fr/header/recherche.html?queryStr=\u0002\u00010", - "wx": "http://www.inwx.com/en/domain/check#search=\u0002#region=DEFAULT\u00010", - "2p3": "//annuaire.in2p3.fr/search/\u0002\u00010", - "box": "//inbox.google.com/search/\u0002\u00017", - "cense": "//www.incensepro.com/search?type=product&q=\u0002\u00010", - "comp": "//incompetech.com/wordpress/?s=\u0002\u00010", - "credible": "//www.incredible.co.za/search/?q=\u0002\u00010", - "floo": "http://inflooenz.com/?artist=\u0002\u00010", - "fog": { - "\u0010": "//infogalactic.com/info/\u0002\u000115", - "al": { - "\u0010": "//infogalactic.com/w/index.php?search=\u0002\u00010", - "actic": "http://infogalactic.com/w/index.php?search=\u0002\u00010" - }, - "ram": "//infogr.am/search#\u0002\u00010" - }, - "foq": "http://www.infoq.com/search.action?queryString=\u0002\u00010", - "fobae": "//www.infobae.com/search/\u0002/?q=\u0002\u00010", - "fopedia": "//www.infopedia.pt/dicionarios/lingua-portuguesa/\u0002\u000115", - "foseek": "http://websearch.rakuten.co.jp/Web?qt=\u0002\u0001181", - "fosphere": "http://theinfosphere.org/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010", - "fowars": "//www.infowars.com/?s=\u0002\u00013", - "foworld": "//www.infoworld.com/search/google?cx=014839440456418836424%3Ahugs45or03k&cof=FORID%3A9&query=\u0002&op=Search&gl=US&safe=off&form_build_id=form-ea211c8bee91b69175fca8d84e9d9543&form_id=google_cse_results_searchbox_form\u00010", - "itium": "//initium.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "keri": "http://inkeri-klubi.radioviola.net/system/app/pages/search?scope=search-site&q=\u0002\u00010", - "kipedia": "http://splatoonwiki.org/w/index.php?search=\u0002&go=Go\u000177", - "ktweb": "//www.inktweb.nl/search.php?search=\u0002\u00010", - "rocks": "//lesinrocks.com/recherche/?q=\u0002\u00010" - }, - "p": { - "a": { - "\u0010": "//en.wikipedia.org/wiki/Help:IPA/\u0002\u00010", - "pi": "http://ip-api.com/#\u0002\u000144", - "rcel": "//tracking.i-parcel.com/secure/track.aspx?track=\u0002\u00010" - }, - "l": { - "\u0010": "//www.iplt20.com/search?term=\u0002\u00010", - "oc": { - "\u0010": "//www.iptolocation.net/trace-\u0002\u00010", - "ation": "//www.iplocation.net/?query=\u0002\u000147" - }, - "ayer": { - "\u0010": "http://www.bbc.co.uk/iplayer/search?q=\u0002\u00014", - "radio": "http://www.bbc.co.uk/radio/programmes/a-z/by/\u0002/player\u00010" - }, - "ookup": "http://iplookup.theel0ja.info/?host=\u0002\u00013" - }, - "s": "//interpersonal.stackexchange.com/search?q=\u0002\u00010", - "\u0010": "http://whatismyipaddress.com/ip/\u0002\u0001429", - "db": "http://www.ipdb.org/search.pl?any=\u0002&sortby=name&search=Search+Database&searchtype=quick\u00010", - "fs": "//ipfs.io/ipfs/\u0002\u00010", - "ns": "//ipfs.io/ipns/\u0002\u00010", - "ro": "http://www.iprofesional.com/index.php?p=buscadorProfesional&texto=\u0002\u00010", - "v6": "http://ready.chair6.net/?url=\u0002\u00010", - "ernity": "http://www.ipernity.com/search/doc?q=\u0002&w=on\u00010", - "honees": "http://www.actualidadiphone.com/search/\u0002\u00010", - "info": "http://ipinfo.io/\u0002\u000152", - "rice": "//iprice.my/search/?term=\u0002\u00010", - "track": { - "\u0010": "http://www.ip-tracker.org/locator/ip-lookup.php?ip=\u0002\u000115", - "er": "http://www.ip-tracker.org/locator/ip-lookup.php?ip=\u0002 \u000121" - }, - "void": "http://www.ipvoid.com/scan/\u0002\u00010" - }, - "s": { - "b": { - "\u0010": "http://www.isbns.net/search/?query=\u0002 \u00010", - "n": { - "\u0010": "//isbndb.com/search/books/\u0002\u000125", - "db": "http://isbndb.com/search-all.html?kw=\u0002\u00010", - "nu": "http://isbn.nu/\u0002\u00010", - "search": "//isbnsearch.org/search?s=\u0002\u00010" - } - }, - "c": { - "\u0010": "//isc.sans.edu/ipinfo.html?ip=\u0002\u00010", - "rap": "http://iscrapapp.com/?SearchTxt=\u0002\u00010" - }, - "\u0010": "http://ilmainensanakirja.fi/sanakirja/\u0002?\u000127", - "l": { - "\u0010": "//islamansiklopedisi.org.tr/arama/?q=\u0002&p=m\u00010", - "amqa": "http://islamqa.info/en/search?key=\u0002&yt0=search\u00010", - "am21c": "//www.Islam21c.com/?s=\u0002\u00010", - "amicboighor": "http://islamicboighor.com/?s=\u0002&post_type=product\u00010" - }, - "o": { - "\u0010": "//distrowatch.com/table.php?distribution=\u0002\u000125", - "ffline": "http://www.downforeveryoneorjustme.com/\u0002\u00010", - "nline": "http://www.downforeveryoneorjustme.com/\u0002\u00010" - }, - "s": { - "\u0010": "http://issuu.com/search?q=\u0002\u00010", - "uu": "//issuu.com/search?q=\u0002\u00015" - }, - "w": "//www.instantstreetview.com/s/\u0002\u000117", - "ec": "//security.stackexchange.com/search?q=\u0002\u00010", - "gd": "//is.gd/create.php?url=\u0002\u00015", - "hr": "http://www.ishr.ch/advanced-search?term=\u0002 \u00010", - "mu": "//is.muni.cz/auth/vyhledavani/?search=\u0002\u000121", - "ni": "//isni.oclc.org/xslt/CMD?ACT=SRCH&IKT=8006&TRM=\u0002\u00010", - "up": "//downforeveryoneorjustme.com/\u0002\u00010", - "aac": "http://bindingofisaacrebirth.gamepedia.com/index.php?search=\u0002\u000126", - "aca": "http://www.isaca.org/Search/Pages/DefaultResults.aspx?k=Test&s=\u0002\u00010", - "erv": "//www.iserv.fr/?s=\u0002\u00010", - "fdb": "http://www.isfdb.org/cgi-bin/se.cgi?type=Fiction%20Titles&arg=\u0002\u00014", - "huffle": "http://www.indieshuffle.com/search/songs/\u0002\u00010", - "itup": "//isitup.org/\u0002\u00014", - "itdown": "//downforeveryoneorjustme.com/\u0002\u00010", - "prime": "http://www.isprimenumber.com/prime/\u0002\u00010", - "rgrajan": "//www.isrgrajan.com/?s=\u0002\u00010", - "thereanydeal": "//isthereanydeal.com/search/?q=\u0002\u000128", - "tock": { - "\u0010": "http://www.istockphoto.com/photos/\u0002?phrase=\u0002\u000133", - "photo": "http://www.istockphoto.com/file_search.php?action=file&text=\u0002\u00010" - }, - "toric-preturi": "//www.istoric-preturi.info/search/\u0002\u00010" - }, - "t": { - "\u0010": "//duckduckgo.com/?q=\u0002&kl=it-it\u000168", - "s": "//www.its-mo.com/search/freeword/\u0002\u00010", - "v": { - "\u0010": "//www.itv.com/itvplayer/search/term/\u0002\u00010", - "erb": "http://www.italian-verbs.com/italian-verbs/conjugation.php?verbo=\u0002\u00010" - }, - "ad": "//isthereanydeal.com/search/?q=\u0002\u000128", - "ch": "//itch.io/search?q=\u0002\u0001107", - "en": "http://translate.google.com/#it/en/\u0002 \u000165", - "eo": "http://www.swahili.it/glossword/index.php?a=term&d=2&q=\u0002\u00010", - "es": "http://translate.google.com/#it/es/\u0002\u00010", - "fr": "http://context.reverso.net/traduction/italien-francais/\u0002\u00010", - "hu": "http://translate.google.com/#it/hu/\u0002\u00010", - "aigi": "//itaigi.tw/k/\u0002\u00017", - "ebooks": "http://it-ebooks.info/search/?q=\u0002&type=title\u00010", - "ella": "http://www.itella.fi/itemtracking/itella/search_by_shipment_id?ShipmentId=\u0002\u00010", - "news": "//it-news.press/search?searchword=\u0002\u00010", - "newz": "http://itnewz.ro/?s=\u0002: \u00010", - "ninja": "http://www.itninja.com/search?q=\u0002\u00010", - "rig": "http://www.itrig.de/index.php?serendipity%5Baction%5D=search&serendipity%5Bfullentry%5D=1&serendipity%5BsearchTerm%5D=\u0002\u00010", - "unes": { - "\u0010": "//duckduckgo.com/?q=\u0002%20site%3Aitunes.apple.com\u000112", - "es": "//duckduckgo.com/?q=\u0002+site%3Aitunes.apple.com%2Fes%2F\u00010", - "artist": "//itunes.apple.com/us/artist/\u0002\u00010" - }, - "wiki": "//it.wikipedia.org/wiki/Special:Search?search=\u0002\u000134" - }, - "v": { - "\u0010": "http://www.italian-verbs.com/italian-verbs/conjugation.php?verbo=\u0002\u00010", - "st": "//www.investopedia.com/search?q=\u0002\u00018", - "oox": "//www.ivoox.com/\u0002_sb.html?sb=\u0002\u000124" - }, - "w": { - "\u0010": "http://instantwatcher.com/search?content_type=1+2&source=1+2+3&q=\u0002\u00015", - "mn": "//iwantmyname.com/?domain=\u0002\u00010", - "ant": { - "\u0010": "http://iwantmyname.com/search?domain=\u0002\u00010", - "myname": "//iwantmyname.com/?domain=\u0002\u00010" - }, - "iki": "//www.theiphonewiki.com/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "oot": "http://www.iwoot.com/elysium.search?search=\u0002\u00010" - }, - "id": { - "\u0010": "//www.isitdownrightnow.com/\u0002.html\u00010", - "rn": "//www.isitdownrightnow.com/\u0002.html\u00010" - }, - "jp": "http://prirucka.ujc.cas.cz/?slovo=\u0002\u00016", - "mb": { - "d": "http://www.imdb.com/find?q=\u0002&s=all\u000182", - "\u0010": "http://www.imbiomed.com.mx/1/1/articulos.php?method=searchKeyword&keywords=\u0002\u000111" - }, - "md": { - "b": { - "a": "http://www.imdb.com/find?ref_=nv_sr_fn&q=\u0002&s=nm\u00016", - "\u0010": "http://www.imdb.com/find?s=all&q=\u0002\u000124359", - "k": "http://www.imdb.com/find?s=kw&q=\u0002\u00010", - "m": "//m.imdb.com/find?q=\u0002\u0001102", - "n": "http://www.imdb.com/find?s=nm&q=\u0002\u00017", - "p": "http://pro-labs.imdb.com/find?q=\u0002 \u000117", - "s": "http://imdb.com/showtimes/US/\u0002\u00010", - "ep": "//www.imdb.com/find?&q=\u0002&s=ep\u00010", - "tv": "//www.imdb.com/search/title?title=\u0002&title_type=tv_series\u00010" - }, - "\u0010": "http://www.imdb.com/find?q=\u0002+&s=all\u0001459" - }, - "mg": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "s": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "ur": { - "\u0010": "//imgur.com/search?q=\u0002\u0001397", - "ul": "http://imgur.com/api/upload/?url=\u0002\u00010" - }, - "flip": "//imgflip.com/search?q=\u0002\u000124", - "ops": "//imgops.com/\u0002\u000111", - "rwm": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1#q=\u0002&tbs=imgo:1,sur:fmc&tbm=isch\u000121" - }, - "mh": "//www.inmotionhosting.com/support/search?searchword=\u0002\u00013", - "ms": { - "\u0010": "//ims.com.br/?s=\u0002\u00010", - "lp": "http://imslp.org/index.php?title=Special:Search&search=\u0002\u0001152" - }, - "o9": "http://io9.com/search?q=\u0002\u00013", - "ol": "//www.iol.co.za/search?q=\u0002\u00010", - "op": { - "\u0010": "http://iopscience.iop.org/nsearch?terms=\u0002&searchType=yourSearch\u00010", - "s": "//imgops.com/\u0002\u000111" - }, - "os": "http://developer.apple.com/library/ios/search/?q=\u0002\u000113", - "ot": { - "\u0010": "//www.roomalert.ro/search?q=\u0002\u00010", - "eksperten": "//ioteksperten.dk/?s=\u0002&post_type=product\u00010" - }, - "rc": { - "\u0010": "http://irc.netsplit.de/channels/?chat=\u0002\u00010", - "-galleria": "//irc-galleria.net/users/search?username=\u0002 \u00010" - }, - "rs": "http://search.irs.gov/search?q=\u0002&proxystylesheet=irs_portals_frontend\u00010", - "xl": "//ca.ixl.com/search?q=\u0002\u00010", - "ya": { - "\u0010": "//yandex.com/images/search?text=\u0002\u0001381", - "nmv": "http://iyanmv.com/?s=\u0002\u00010" - }, - "fab": "http://theifab.com/search/\u0002\u00010", - "fdb": "http://ifdb.tads.org/search?searchbar=\u0002\u000112", - "fht": "http://www.ifht.rwth-aachen.de/ca/be/ovbs/?lidx=&search=\u0002\u00010", - "fixit": "http://www.ifixit.com/search?x=0&y=0&query=\u0002\u000123", - "fttt": "//ifttt.com/search/query/\u0002\u00010", - "fun": { - "\u0010": "//www.ifun.de/suche/\u0002\u00010", - "ny": "//ifunny.co/search/memes?q=\u0002\u00015" - }, - "hep": "http://inspirehep.net/search?p=\u0002\u000193", - "herb": "//iherb.com/search?kw=\u0002\u00016", - "iba": "//www.iiba.org/search/?q=\u0002\u00010", - "jinus": "//www.ijinus.com/?s=\u0002&lang=en\u00010", - "kanoon": "//indiankanoon.org/search/?formInput=\u0002\u00010", - "kea": { - "\u0010": "http://www.ikea.com/us/en/search/?query=\u0002\u000151", - "at": "//www.ikea.com/at/de/search/products/?q=\u0002\u00010", - "au": "http://www.ikea.com/au/en/search/?query=\u0002\u00010", - "be": "http://www.ikea.com/be/nl/search/?query=\u0002\u00010", - "ca": "//www.ikea.com/ca/en/search/products/?q=\u0002\u000116", - "ch": "http://www.ikea.com/ch/de/search/?query=\u0002\u00010", - "cs": "//www.ikea.com/cz/cs/search/?query=\u0002\u00010", - "de": "//www.ikea.com/de/de/search/products/?q=\u0002\u00018", - "es": "//www.ikea.com/es/es/search/products/?q=\u0002\u00015", - "fr": "http://www.ikea.com/fr/fr/search/?query=\u0002\u00010", - "ie": "http://www.ikea.com/ie/en/search/?query=\u0002 \u00010", - "it": "http://www.ikea.com/it/it/search/?query=\u0002\u00010", - "nl": "//www.ikea.com/nl/nl/search/?q=\u0002\u00010", - "pl": "//www.ikea.com/pl/pl/search/?query=\u0002\u00010", - "uk": "//www.ikea.com/gb/en/search/products/?q=\u0002\u00014" - }, - "kkepedia": "http://ikkepedia.org/wiki/\u0002\u00010", - "kman": "//ikman.lk/en/ads?query=\u0002\u00010", - "kso": "http://kantaro.ikso.net/?do=search&id=\u0002&fulltext=Serĉo\u00010", - "mag": { - "e": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "s": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "hack": "http://imageshack.us/photos/\u0002\u00010" - }, - "ly": "//www.imagely.com/?s=\u0002 \u00010", - "layers": "//imagelayers.io/?images=\u0002\u00010", - "net": "http://www.image-net.org/search?q=\u0002\u00016", - "quest": "http://quest.eb.com/search/\u0002\u00010" - }, - "\u0010": "//www.indiemag.fr/search/node/\u0002\u00013", - "r": "//imagr.eu/?action=search&search=\u0002\u00010" - }, - "mas": { - "\u0010": "http://www.project-imas.com/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "wiki": "http://www.project-imas.com/w/index.php?search=\u0002\u00010" - }, - "maths": "http://images.math.cnrs.fr/spip.php?page=recherche&page=recherche&recherche=\u0002\u00010", - "mfdb": "http://www.imfdb.org/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000130", - "more": "http://www.imore.com/search/\u0002?query=\u0002\u00014", - "mpdb": "http://impdb.org/index.php?search=\u0002\u00010", - "mperial": "//www.imperial.ac.uk/search/?q=\u0002\u00013", - "mpericonde": "http://www.impericon.com/de/advancedsearch/result/?q=\u0002\u00010", - "mpericonuk": "http://www.impericon.com/uk/advancedsearch/result/?q=\u0002\u00010", - "qdb": "http://iqdb.org/?url=\u0002\u000128", - "rasutoya": "http://www.irasutoya.com/search?q=\u0002\u00010", - "res": "http://www.imaging-resource.com/search.html?q=\u0002\u00010", - "recommend": "http://irecommend.ru/srch?query=\u0002\u00010", - "ris": { - "\u0010": "http://scitools.org.uk/iris/docs/latest/search.html?q=\u0002\u00010", - "htimes": "//www.irishtimes.com/search/search-7.4195619?q=\u0002\u00010" - }, - "rowiki": "http://irowiki.org/w/index.php?search=\u0002\u00010", - "ukb": "//kb.iu.edu/search?q=\u0002\u00010", - "upac": "//iupac.org/?s=\u0002\u00010", - "url": "http://google.com/searchbyimage?image_url=\u0002\u00010", - "xigo": "//ixigo.com/q/\u0002\u00010", - "zneo": "http://www.izneo.com/search.html?pattern=\u0002\u00010" - }, - "j": { - "a": { - "b": "//www.jabong.com/find/\u0002\u00010", - "\u0010": "http://www.j-archive.com/search.php?search=\u0002\u00019", - "l": { - "\u0010": "http://www.jal.co.jp/cgi-bin/jal/insite_search/index.cgi?keyword=\u0002&collection=jalcojp&charset=shift_jis\u00010", - "op": { - "\u0010": "http://jalopnik.com/search?q=\u0002\u00010", - "nik": "http://jalopnik.com/search?q=\u0002\u00010" - } - }, - "m": { - "f": "//www.jamf.com/jamf-nation/search?query=\u0002\u00010", - "\u0010": "//www.jamendo.com/en/search?qs=q=\u0002\u00010", - "ie": "//www.jamieoliver.com/search/?s=\u0002\u00010", - "endo": "//www.jamendo.com/search?q=\u0002\u00010" - }, - "p": { - "i": "//duckduckgo.com/?q=site%3Aapi.joomla.org+\u0002\u00010", - "\u0010": "//support.justaddpower.com/kb/search/?q=\u0002\u00010" - }, - "r": { - "\u0010": "http://www.findjar.com/index.x?query=\u0002\u000148", - "gon": { - "f": "http://jargonf.org/index.php?search=\u0002\u00010", - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Acatb.org+inurl%3Ajargon\u00014" - } - }, - "y": { - "\u0010": "http://www.jaycar.com.au/search?text=\u0002\u00010", - "car": "//www.jaycar.co.nz/search/?q=\u0002\u000172" - }, - "de": "//jade.io/search/\u0002\u00010", - "di": "//jadi.net/?s=\u0002\u00010", - "va": { - "4": "http://search.oracle.com/search/search?tzoffset=420&default=true&q=\u0002+url:/javase/1.4.2/docs&start=1&nodeid=&fid=&showSimilarDoc=true&group=Documentation&keyword=&x=0&y=0\u00010", - "5": "http://search.oracle.com/search/search?tzoffset=420&default=true&q=\u0002+url:/javase/1.5.0/docs&start=1&nodeid=&fid=&showSimilarDoc=true&group=Documentation&keyword=&x=0&y=0\u00010", - "6": "http://search.oracle.com/search/search?tzoffset=420&default=true&q=\u0002+url:/javase/6/docs&start=1&nodeid=&fid=&showSimilarDoc=true&group=Documentation&keyword=&x=0&y=0\u00010", - "7": "//docs.oracle.com/apps/search/search.jsp?q=\u0002&category=java&product=e17409-01\u00010", - "8": "//duckduckgo.com/?q=site%3Adocs.oracle.com%2Fjavase%2F8%2Fdocs%2Fapi%2F+\u0002\u000111", - "9": "http://docs.oracle.com/apps/search/search.jsp?category=java&q=\u0002\u00010", - "\u0010": "//docs.oracle.com/apps/search/search.jsp?q=\u0002&category=java\u000181", - "11": "//duckduckgo.com/?q=site%3Adocs.oracle.com%2Fen%2Fjava%2Fjavase%2F11%2Fdocs%2Fapi%2F+\u0002\u000111", - "fx": "//search.oracle.com/search/search?num=10&exttimeout=false&q=\u0002+url:/javase/8/javafx/api&group=Documentation\u00010", - "libs": "//javalibs.com/search?q=\u0002\u00010", - "libhunt": "//java.libhunt.com/search?query=\u0002\u00010", - "script": "//developer.mozilla.org/search?q=\u0002\u000112" - }, - "wb": "//ja.wikibooks.org/w/index.php?search=\u0002\u00010", - "wp": "//ja.wikipedia.org/w/index.php?search=\u0002\u000113", - "wq": "//ja.wikiquote.org/w/index.php?search=\u0002\u00010", - "ws": "//ja.wikisource.org/w/index.php?search=\u0002\u00010", - "wt": "//ja.wiktionary.org/w/index.php?search=\u0002\u00010", - "wv": "//ja.wikiversity.org/w/index.php?search=\u0002\u00010", - "2en": "//translate.google.com/#ja/en/\u0002\u00010", - "conj": "http://japaneseverbconjugator.com/VerbDetails.asp?txtVerb=\u0002&Go=Conjugate\u00010", - "cobin": "//jacobinmag.com/search?query=\u0002\u00017", - "nus": "//janus.lib.cam.ac.uk/db/node.xsp?search=\u0002\u00010", - "wiki": "//ja.wikipedia.org/wiki/\u0002 \u000118" - }, - "á": "http://ja.is/?q=\u0002\u00010", - "b": { - "\u0010": "http://www.jupiterbroadcasting.com/?s=\u0002\u00013", - "o": { - "\u0010": "http://jbovlaste.lojban.org/lookup?Form=lookup.pl1&Strategy=*&Query=\u0002\u00010", - "vlaste": "http://jbovlaste.lojban.org/dict/\u0002\u00010" - }, - "hifi": "http://www.jbhifi.com.au/?q=\u0002\u000111", - "plugins": "//plugins.jetbrains.com/search?correctionAllowed=true&search=\u0002\u00010" - }, - "d": { - "f": "http://www.journaldesfemmes.com/s/\u0002\u00010", - "g": "http://www.journaldugeek.com/?s=\u0002\u00010", - "k": "http://docs.oracle.com/apps/search/search.jsp?category=java&q=\u0002\u00010", - "l": "//www.jdlighting.com.au/catalogsearch/result/?q=\u0002\u00010", - "n": "http://www.journaldunet.com/s/\u0002\u00010", - "w": "http://www.jdwetherspoon.co.uk/home/pubs/find/\u0002\u00010", - "\u0010": "http://search.jd.com/Search?keyword=\u0002&enc=utf-8\u000112", - "be": "http://www.lejournaldubienetre.com/search?tag=\u0002\u00010", - "ca": "http://ca.justdial.com/allus/\u0002\u00010", - "in": "http://www.justdial.com/National-Search/\u0002\u00010", - "pune": "http://www.justdial.com/Pune/\u0002\u00010" - }, - "e": { - "d": { - "i": { - "\u0010": "//www.jedipedia.net/w/index.php?search=\u0002\u00010", - "s": "http://www.jedisjeux.net/search_results.php?search=\u0002&button_search=Ok\u00010", - "pedia": "http://jedipedia.wikia.com/wiki/Spezial:Suche?search=\u0002&fulltext=Search\u00010" - }, - "\u0010": "//extensions.joomla.org/extensions/extension/?searchall=\u0002&filter%5Btags%5D%5B%5D=&filter%5Bcore_catid%5D=&filter%5Bincludes%5D=&filter%5Bversions%5D=&filter%5Btype%5D=&filter%5Bhasdemo%5D=&filter%5Bnewupdated%5D=&filter%5Bscore%5D=&dir=DESC&limitstart=&controller=filter&view=extension&layout=list&Itemid=145&clearorders=0&clearfilters=1\u00010" - }, - "p": "//www.aeaweb.org/journals/jep/search-results?within%5Btitle%5D=on&within%5Babstract%5D=on&within%5Bauthor%5D=on&journal=3&q=\u0002\u00013", - "\u0010": "http://www.tanoshiijapanese.com/dictionary/index.cfm?j=\u0002&e=&search=Search+%3E\u00010", - "t": { - "\u0010": "//jet.com/search?term=\u0002\u00010", - "brains": "//www.jetbrains.com/search/?q=\u0002\u00014", - "lag": "//thehappyjetlagger.com/?s=\u0002\u00010", - "pens": "http://www.jetpens.com/search?q=\u0002\u00014" - }, - "gs": "//www.jegs.com/webapp/wcs/stores/servlet/SearchResultsPageCmd?Ntt=\u0002\u00010", - "ux": "http://www.jeuxvideo.com/recherche.php?q=\u0002\u000110", - "llyneo": "//items.jellyneo.net/search/?name=\u0002\u000149", - "nsonusa": "http://www.jensonusa.com/search?q=\u0002\u00010", - "opardy": "http://www.j-archive.com/search.php?search=\u0002\u00019", - "rgas": "http://www.jergasdehablahispana.org/?pais=&palabra=\u0002&submit=Buscar&tipobusqueda=0\u00010", - "suerocha": "//jesuerocha.com/search/\u0002\u00010", - "zebel": "http://jezebel.com/search?q=\u0002\u00010" - }, - "i": { - "d": "//items.jellyneo.net/search/?name=\u0002\u000149", - "g": "http://jayisgames.com/search/?cx=partner-pub-4854273876013864%3A9692641413&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002&sa=Search&siteurl=jayisgames.com%2Fgames%2F&ref=jayisgames.com%2F&ss=&siteurl=jayisgames.com%2Fsearch%2F%3Fq%3Dhello&ref=&ss=849j189425j6\u00010", - "\u0010": "//jisho.org/search/\u0002\u00011505", - "k": "//jisho.org/search/%23kanji%20\u0002\u000110", - "t": "http://www.jobintree.com/emploi?keywords=\u0002\u00010", - "v": { - "e": "//jivesearch.com/?q=\u0002\u00010", - "\u0010": "//www.jouwictvacature.nl/vacatures?s=\u0002\u00010" - }, - "on": "//jionews.com/search?query=\u0002\u00010", - "mms": "//www.jimms.fi/fi/Product/Search?q=\u0002\u00016", - "sho": "//jisho.org/search/\u0002\u00011505" - }, - "\u0010": "//jet.com/search?term=\u0002\u00010", - "j": "http://jinja.pocoo.org/docs/2.10/search/?q=\u0002\u00010", - "l": { - "\u0010": "http://www.johnlewis.com/Search/Search.aspx?SearchTerm=\u0002\u000110", - "m": "http://www.jean-luc-melenchon.fr/?s=\u0002\u00010", - "pt": "http://jlptdictionary.com/index.php?pn=1&st=0&jl=0&njl=0&sb=0&obt=0&wpp=25&ot=0&k=\u0002\u00010", - "se": "http://japanese.stackexchange.com/search?q=\u0002\u00010" - }, - "m": { - "e": { - "\u0010": "//hub.jmonkeyengine.org/search?q=\u0002\u00010", - "w": "//duckduckgo.com/?q=\u0002 site:wiki.jmonkeyengine.org\u00010" - }, - "\u0010": "http://joemonster.org/search.php?q=\u0002\u00010", - "p": "http://www.jemepropose.com/annonces?keywords=\u0002\u00010" - }, - "n": { - "\u0010": "//www.jellynote.com/en/search?q=\u0002\u00014", - "n": "//jovemnerd.com.br/?s=\u0002\u00010" - }, - "o": { - "b": { - "\u0010": "//job.am/hy/jobs?q=\u0002\u00010", - "s": { - "\u0010": "http://www.indeed.com/jobs?q=\u0002\u000147", - "bg": "//www.jobs.bg/front_job_search.php?zone_id=0&distance=0&location_sid=0&all_categories=0&all_type=0&all_position_level=1&all_company_type=1&keyword=\u0002&last=0\u00010", - "ca": "http://www.indeed.ca/jobs?q=\u0002\u00013", - "de": "//englishjobs.de/search?q=\u0002\u00010", - "mtl": "//www.jobillico.com/search-jobs?skwd=\u0002&scty=Montr%C3%A9al%2C%20QC&icty=6185&ipc=0&sil=&sjdpl=&sdl=&imc1=0&imc2=0&flat=45.509828&flng=-73.6715&mfil=byCity&ipg=1&clr=1\u00010" - }, - "2u": "//us.job2u.org/?s=\u0002\u00010" - }, - "e": { - "\u0010": "http://joemonster.org/search.php?q=\u0002\u00010", - "fresh": "//www.joefresh.com/search?text=\u0002\u00010", - "monster": "http://joemonster.org/search.php?q=\u0002\u00010" - }, - "\u0010": "//www.jotrin.com/product/list?keyword=\u0002\u00010", - "cb": "//www.justonecookbook.com/?s=\u0002\u00010", - "co": "http://www.jonathancoulton.com/mediawiki/index.php?search=\u0002\u00010", - "jo": "http://jojo.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "om": "//www.joom.com/en/search/q.\u0002\u00010", - "tb": "//jotboard.info/lookup.php?q=\u0002\u00010", - "ve": { - "\u0010": "//www.jove.com/search?q=\u0002\u00010", - "mnerd": "//jovemnerd.com.br/?s=\u0002\u00010" - }, - "ann": "//www.joann.com/search?q=\u0002\u00010", - "fogas": "http://www.jofogas.hu/magyarorszag?q=\u0002\u00010", - "hnlewis": "http://www.johnlewis.com/Search/Search.aspx?SearchTerm=\u0002\u000110", - "inup": "//joinup.ec.europa.eu/search?keys=\u0002\u00010", - "ker": "//www.joker.be/nl/groepsreizen/\u0002\u00010", - "lla": "//together.jolla.com/questions/scope:all/sort:activity-desc/page:1/query:\u0002/\u00010", - "mgeek": "//jomgeek.my/?s=\u0002\u00010", - "official": "http://www.joofficial.com/website/search?query=\u0002 \u00010", - "rnaldaparaiba": "http://www.jornaldaparaiba.com.br/?s=\u0002\u00010", - "rudan": "//www.jorudan.co.jp/jt/cgi/qsearch/qsearch.cgi?s=\u0002\u000121" - }, - "p": { - "c": "//www.jpc.de/s/\u0002\u000183", - "d": { - "\u0010": "//www.japandict.com/?s=\u0002\u000144", - "ic": "http://jpdic.naver.com/search.nhn?query=\u0002\u000122" - }, - "\u0010": "http://www.jetpens.com/search?q=\u0002\u00014", - "j": "//www.buycarplate.com/?m=scr&searchval=\u0002\u00010", - "l": "//www.jpl.nasa.gov/search.php?q=\u0002\u00010", - "en": "http://www.kanjijapanese.com/en/dictionary-japanese-english/\u0002\u00014", - "ost": "//trackings.post.japanpost.jp/services/srv/search/direct?searchKind=S004&locale=en&reqCodeNo1=\u0002\u00010", - "ralves": "//jpralves.net/search.html?q=\u0002\u00010" - }, - "q": { - "d": "http://api.jquery.com/\u0002/\u00010", - "\u0010": "http://api.jquery.com/?ns0=1&s=\u0002\u000113", - "m": "http://jquerymobile.com/?s=\u0002\u00010", - "u": { - "i": "http://api.jqueryui.com/?s=\u0002\u00010", - "\u0010": "http://jqueryui.com/?s=\u0002\u00010", - "ery": "http://api.jquery.com/?ns0=1&s=\u0002\u000113" - } - }, - "r": { - "a": { - "\u0010": "http://www.jra.go.jp/search/top/index.html?q=\u0002\u000110", - "dy": "//www.idsjmk.cz/jrady/\u0002.pdf\u00010" - }, - "\u0010": "http://joyreactor.cc/search?q=\u0002\u00010", - "s": "//jrsbelgium.org/spip.php?page=recherche&recherche=\u0002\u00010", - "devjobs": "//www.jrdevjobs.com/jobs?query=\u0002\u00010" - }, - "s": { - "d": "//www.jsdelivr.com/?query=\u0002\u00017", - "m": "//junespringmultimedia.com/?s=\u0002&post_type=page\u00010", - "\u0010": "//developer.mozilla.org/en-US/search?topic=api&topic=js&q=\u0002\u0001201", - "o": { - "\u0010": "http://stackoverflow.com/search?q=[java]+\u0002\u00010", - "nlint": "http://jsonlint.com/?json=\u0002\u00018" - }, - "bf": "//bundlephobia.com/result?p=\u0002\u00013", - "coach": "//js.coach/?search=\u0002\u00010", - "hint": "http://www.jshint.com/docs/options/#\u0002\u00010", - "info": "//javascript.info/search/?query=\u0002\u000111", - "supply": "//www.johnstonesupply.com/search/go?w=\u0002\u00010", - "tor": "http://www.jstor.org/action/doBasicSearch?Query=\u0002\u000140" - }, - "v": { - "c": { - "\u0010": "http://japaneseverbconjugator.com/VerbDetails.asp?txtVerb=\u0002\u00010", - "om": "http://www.jeuxvideo.com/recherche.php?q=\u0002 \u00018" - }, - "d": "http://www.jeuxvideo.com/recherche.php?q=\u0002\u000110", - "\u0010": "http://www.jeuxvideo.com/recherche.php?q=\u0002\u000110", - "j": "//www.japanesevehicles.com/stocklist.php?qsearch_kbn=1&lang=en&opt=0&qsearch=\u0002\u00010" - }, - "w": { - "h": "//www.justwatch.com/us/search?q=\u0002\u0001429", - "i": { - "\u0010": "//www.justwatch.com/in/search?q=\u0002\u00015", - "t": "//www.justwatch.com/it/cerca?q=\u0002\u00016" - }, - "\u0010": "http://www.jw.org/en/search/?q=\u0002\u000130", - "p": { - "\u0010": "http://www.jwpepper.com/sheet-music/search.jsp?keywords=\u0002\u00010", - "epper": "http://www.jwpepper.com/sheet-music/search.jsp?keywords=\u0002\u00010" - }, - "de": "//www.jw.org/de/suche/?q=\u0002\u00010", - "es": "//www.jw.org/es/búsquedas/?q=\u0002:\u00010", - "se": "//www.justwatch.com/se/search?q=\u0002\u00010" - }, - "cp": "//jcp.org/en/jsr/summary?id=\u0002\u00010", - "fl": "//www.liberty.edu/library/search-results/?type=all&q=\u0002\u00010", - "fm": "//www.cambridge.org/core/journals/journal-of-fluid-mechanics/listing?q=\u0002\u00010", - "gf": "http://www.jazzguitar.be/forum/search.php?searchid=\u0002\u00010", - "hg": "http://jhg-traunreut.de/index.php?q=\u0002&option=com_finder&view=search\u00010", - "ta": "//www.justtryart.ml/search.php?k=\u0002\u00010", - "tw": "http://www.just-the-word.com/api/combinations?word=\u0002\u00010", - "2team": "//junookyo.blogspot.com/search?q=\u0002\u00010", - "comp": "http://chaitan.cloudapp.net/justcompare/search?q=\u0002\u00010", - "guitar": "http://jguitar.com/chordsearch?chordsearch=\u0002\u00010", - "hulib": "//catalyst.library.jhu.edu/multi_search?utf8=✓&search_field=all_fields&q=\u0002\u00010", - "tut": "http://search.oracle.com/search/search?search_p_main_operator=all&group=Documentation&q=\u0002+url%3A%2Fjavase%2Ftutorial\u00010", - "ualusg": "//www.jualusg2d3dmurah.com/search?q=\u0002\u00010", - "uejin": "//juejin.im/search?query= \u0002&type=all\u00010", - "uick": "http://juick.com/?search=\u0002\u00010", - "uju": "//jujucharms.com/q/\u0002\u00010", - "ukuu": "http://jukuu.com/search.php?q=\u0002\u00010", - "ula": "//www.jula.se/search/?query=\u0002\u00015", - "uls": "http://slovniky.juls.savba.sk/?w=\u0002&s=exact&c=608a&d=kssj4&d=psp&d=sssj&d=scs&d=sss&d=peciar&d=ma&d=hssjV&d=bernolak&d=obce&d=priezviska&d=un&d=locutio&d=pskcs&d=psken&d=noundb&ie=utf-8&oe=utf-8#\u000117", - "ulia": "//docs.julialang.org/en/latest/search?q=\u0002\u000143", - "umbo": { - "\u0010": "//www.jumbo.pt/Frontoffice/search/\u0002\u00014", - "supermarkt": "http://www.jumbo.com/zoeken?SearchTerm=\u0002\u00018" - }, - "umps": "//www.jumps.nl/index.php/component/finder/search?q=\u0002&Itemid=106\u00010", - "uno": { - "\u0010": "//www.juno.co.uk/search/?q[all][]=\u0002\u00010", - "dl": "http://www.junodownload.com/search/?q[all][0]=\u0002\u00010" - }, - "unat": "//www.junat.net/en/\u0002\u00010", - "uninet": "//www.juniper.net/search/gsa/?keyword=\u0002\u00010", - "usbr": { - "\u0010": "http://www.jusbrasil.com.br/busca?q=\u0002 \u000111", - "asil": "//www.jusbrasil.com.br/busca?q=\u0002\u00010" - }, - "ustia": "http://law.justia.com/lawsearch?query=\u0002\u000118", - "ustice": "//or.justice.cz/ias/ui/rejstrik-$firma?jenPlatne=PLATNE&nazev=\u0002\u00010", - "ustimprinted": "//www.justimprinted.com/catalogsearch/result/?q=\u0002\u00010", - "ustwalkers": "http://justwalkers.com/catalogsearch/result/?q=\u0002\u00010", - "ustwatch": { - "\u0010": "//www.justwatch.com/us/search?q=\u0002\u0001429", - "au": "//www.justwatch.com/au/search?q=\u0002\u000111", - "de": "//www.justwatch.com/de/Suche?q=\u0002\u00013", - "fi": "//www.justwatch.com/fi/search?q=\u0002\u00010", - "uk": "//www.justwatch.com/uk/search?q=\u0002\u000132" - }, - "utarnji": "//www.jutarnji.hr/search/?q=\u0002\u00010", - "uwelo": "//www.juwelo.es/catalogsearch/result/?q=\u0002\u00010" - }, - "k": { - "a": { - "\u0010": "//www.khanacademy.org/search?page_search_query=\u0002\u000111", - "m": { - "\u0010": "http://kamusiturki.com/\u0002\u00010", - "us": "http://prpm.dbp.gov.my/Search.aspx?k=\u0002\u00015", - "ailio": "//www.kamailio.org/w/?s=\u0002\u00010", - "elopedia": "http://kamelopedia.mormo.org/index.php?title=Spezial%3ASuche&search=\u0002&button=Senden\u00010" - }, - "s": { - "\u0010": "http://www.kaskus.co.id/search?q=\u0002\u00010", - "hipara": "//www.kashipara.com/search/search.php?search=\u0002\u00010", - "kus": "//www.kaskus.co.id/search?q=\u0002\u00010", - "persky": { - "\u0010": "http://support.kaspersky.com/search?query=\u0002\u00010", - "mal": "//www.securelist.com/en/descriptions?words=\u0002&behavior=&Search=Search&search_type=1\u00010" - } - }, - "li": { - "\u0010": "//www.kali.org/?s=\u0002\u00019", - "mah": "//kalimah.top/results/?q=\u0002\u00010" - }, - "os": { - "\u0010": "//forum.kaosx.us/?q=\u0002\u00010", - "pkg": "http://kaosx.tk/packages/?act=search&subdir=&sortby=date&order=descending&searchpattern=\u0002 \u00010" - }, - "pi": "http://api.kde.org/mapsearcher.php?class=\u0002&module=ALL&version=ALL&go=Go\u00010", - "rt": "//kart.finn.no/?q=\u0002\u00010", - "artje": "//www.kaartje2go.nl/zoeken?q=\u0002\u00010", - "bum": "//www.kabum.com.br/cgi-local/site/listagem/listagem.cgi?string=\u0002&btnG=\u000112", - "ffee": "//kaffee.citadella.de/de/suche?controller=search&s=\u0002\u00010", - "fto": "//www.kafto.gr/?s=\u0002\u00010", - "hoot": "//create.kahoot.it/search?filter=1&query=science&tags=\u0002\u00015", - "hta": "//www.kahtahaber.com/search?q=\u0002\u00010", - "kaku": "http://kakaku.com/search_results/\u0002\u000191", - "kijun": "http://kakijun.jp/main/u_kensaku.php?KANJI=\u0002\u00010", - "kosepise": "http://kakosepise.com/?s=\u0002\u00010", - "leva": "//www.kaleva.fi/haku/?search=\u0002\u00010", - "ncolle": "http://kancolle.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "ngaroo": "//kangarookarry.com/search?type=product&q=\u0002\u00010", - "nji": "//app.kanjialive.com/search/\u0002\u00010", - "nopy": "//www.kanopy.com/s?query=\u0002\u00010", - "prof": "//www.khanacademy.org/profile/\u0002/\u00010", - "rhcj": "http://judgmenthck.kar.nic.in/judgments/simple-search?query=\u0002\u00010", - "rir": "//dikarier.com/layanan/?keywords=\u0002\u00010", - "rmadecay": "http://karmadecay.com/\u0002\u00014", - "tacoda": "//katacoda.com/search?q=\u0002\u00010", - "teglo": "http://kateglo.com/?phrase=\u0002&mod=dictionary\u00010", - "yak": "//www.kayak.com/sherlock/opensearch/search?q=\u0002\u000110", - "zan": "http://fegszerviz.hu/?s=\u0002\u00010" - }, - "b": { - "b": { - "i": "//kbbi.kemdikbud.go.id/entri/\u0002\u000178", - "\u0010": "//www.kbb.com/search/?source=homepage&query=\u0002\u00010" - }, - "\u0010": "http://duckduckgo.com/?q=site%3Akeybase.io+\u0002\u00010", - "n": "//korben.info/?s=\u0002\u000120", - "t": "//kabutan.jp/stock/?code=\u0002\u00010", - "ors": "http://kuldnebors.ee/search/search.mec?search_evt=onsearch&pob_action=search&search_O_string=\u0002\u00010", - "ugs": "//bugs.kde.org/buglist.cgi?quicksearch=\u0002\u00010" - }, - "d": { - "b": "//code.kx.com/q/search?query=\u0002\u00010", - "\u0010": "http://kanjidamage.com/kanji/search?utf8=%E2%9C%93&q=\u0002\u000115", - "eblog": "http://www.kdeblog.com/?s=\u0002\u00010", - "nuggets": "//www.kdnuggets.com/?s=\u0002\u00010" - }, - "f": { - "\u0010": "//kasperfred.com/posts/?q=\u0002\u00010", - "s": "http://www.keyforsteam.de/catalogue/search-\u0002/\u000111", - "z": "http://www.kfz-info.net/\u0002-kfz-kennzeichen/\u00010" - }, - "g": { - "\u0010": "http://kg-portal.ru/?search&s_str= \u0002\u00010", - "m": "http://keygenmusic.net/?page=search&query=\u0002\u00010", - "forum": "http://forum.kvinneguiden.no/?q=\u0002\u00010", - "itlab": "//invent.kde.org/search?utf8=✓&snippets=&scope=&search=\u0002\u00010" - }, - "h": { - "\u0010": "//hub.kubeapps.com/charts?q=\u0002\u00010", - "an": { - "\u0010": "//www.khanacademy.org/search?page_search_query=\u0002\u000111", - "academy": "//www.khanacademy.org/search?page_search_query=\u0002\u000111" - }, - "amsat": "//khamsat.com/search?utf8=✓&q=\u0002\u00010", - "insider": "http://www.khinsider.com/search?search=\u0002\u00010", - "ronos": "http://www.khronos.org/search/?cx=017055583490642512057:_ak1bpok_no&cof=FORID:9&q=\u0002&sa=Search&siteurl=www.khronos.org/\u00010", - "wiki": "//www.khwiki.com/index.php?title=Special%3ASearch&search=\u0002\u000128" - }, - "j": { - "i": "http://kanji.jitenon.jp/cat/search.php?getdata=\u0002\u00010", - "\u0010": "http://www.biblestudytools.com/search/?q=\u0002&s=Bibles&t=kjv\u00010", - "v": "http://www.kingjamesbibleonline.org/search.php?q=\u0002\u000141", - "ell": { - "\u0010": "http://www.kjell.com/Sok?query=\u0002\u00013", - "no": "//www.kjell.com/no/sok?query=\u0002\u00010" - } - }, - "k": { - "c": "//kingkiller.wiki/w/index.php?search=\u0002\u00010", - "\u0010": "//kubekings.com/buscar?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010", - "bb": "http://www.kisskissbankbank.com/search?q=\u0002\u00010", - "bib": "//bibliotek.kk.dk/search/ting/\u0002\u00010", - "box": "//www.kkbox.com/search.php?search=mix&word=\u0002\u00010", - "bruce": "http://www.google.com/cse?cx=002209521788924011185:wzz9w-qvlhi&q=\u0002\u00010", - "tix": "//kktix.com/events?search=\u0002\u00010", - "usta": "http://www.kuantokusta.pt/search?q= \u0002 \u00019" - }, - "\u0010": "//www.konsolentreff.de/search/1/?q=\u0002\u000150", - "l": { - "\u0010": "//kabarlinux.id/?s=\u0002\u00010", - "n": "http://klnavarro.free.fr/spip/spip.php?page=recherche&recherche=\u0002\u00010", - "ein": { - "\u0010": "//www.ebay-kleinanzeigen.de/\u0002/k0\u000164", - "ezeitung": "http://www.kleinezeitung.at/user/search.do?searchText=\u0002&action=1&resetForm=1&resultsPage=0\u00010" - }, - "ocks": "//klocksnack.se/search/6404040/?q=\u0002&o=date\u00010", - "ubschule": "//www.klubschule.ch/Kurse/suche@\u0002\u00010" - }, - "m": { - "c": "//knowledge.kaltura.com/search?search_api_views_fulltext=\u0002\u00010", - "f": "//forum.keyboardmaestro.com/search?q=\u0002\u00017", - "\u0010": "//kara.moe/base/karas?filter=\u0002\u00013", - "jy": "http://kaomojiya.jp/keyword/\u0002/?search_flg=1\u00010", - "art": { - "\u0010": "http://www.kmart.com/shc/s/search_10151_10104?keyword=\u0002\u00010", - "au": "//www.kmart.com.au/webapp/wcs/stores/servlet/SearchDisplay?searchTerm=\u0002&categoryId=&storeId=10701&catalogId=10102&langId=-1&pageSize=30&beginIndex=0&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=\u00013" - } - }, - "n": { - "f": "//www.knf.gov.pl/wyniki_wyszukiwania?searchText=\u0002&publicationId=18&sortType=accuracy\u00010", - "\u0010": "//knoema.com/search?query=\u0002\u00010", - "mi": "//knmi.nl/zoeken?q=\u0002\u00010", - "owyourmeme": "http://knowyourmeme.com/search?utf8=%E2%9C%93&q=\u0002\u000128" - }, - "p": { - "e": { - "d": "//www.kpedia.jp/w/\u0002\u00010", - "\u0010": "http://kalliope.staatsbibliothek-berlin.de/de/search.html?q=\u0002\u00010" - }, - "\u0010": "//www.kupujemprodajem.com/search.php?action=list&data%5Bad_kind%5D=&data%5Bad_type%5D=&data%5Bfollow%5D=&data%5Bad_kind_type%5D=&data%5Btip_oglasa%5D=&data%5Bcategory_id%5D=&data%5Bgroup_id%5D=&data%5Blocation_id%5D=&data%5Blocation_radius%5D=&data%5Bhas_photo%5D=&data%5Bcondition%5D=&data%5Bperiod%5D=&data%5Border%5D=&data%5Bcar_model%5D=&data%5Bvehicle_power_min%5D=&data%5Bvehicle_power_max%5D=&data%5Bvehicle_cc_min%5D=&data%5Bvehicle_cc_max%5D=&data%5Bvehicle_km_min%5D=&data%5Bvehicle_km_max%5D=&data%5Bvehicle_make_year_min%5D=&data%5Bvehicle_make_year_max%5D=&data%5Bcar_body_type%5D=&data%5Bcar_fuel_type%5D=&data%5Bcar_doors%5D=&data%5Bcar_gearbox%5D=&data%5Bvehicle_aircondition%5D=&data%5Bvehicle_drive%5D=&data%5Bprice_from%5D=&data%5Bprice_to%5D=&dummy=name&data%5Bkeywords%5D=\u0002 &=&=&=&=&=&=&return_url=aW5kZXgucGhw\u000114", - "op": "//www.allkpop.com/search/articles/\u0002\u00014", - "oisk": "http://www.kinopoisk.ru/index.php?first=no&what=&kp_query=\u0002\u000135", - "rojects": "//projects.kde.org/search?q=\u0002&all_words=1&projects=1&submit=Submit\u00010" - }, - "r": { - "\u0010": "//www.kroger.com/search?query=\u0002\u00010", - "l": "http://catalog.krl.org/polaris/search/searchresults.aspx?ctx=1.1033.0.0.9&type=Keyword&term=\u0002&by=KW&sort=RELEVANCE&limit=TOM%3D*&query=&page=0&searchid=1\u00010", - "ak": "//www.krak.dk/search?searchQuery=\u0002\u00010", - "aftly": "//kraftly.com/search?q=\u0002\u00010", - "dic": "http://krdic.naver.com/search.nhn?query=\u0002\u00017", - "eativfont": "//www.kreativfont.com/?s=\u0002\u00010", - "ebs": { - "\u0010": "//krebsonsecurity.com/?s=\u0002\u00010", - "onsec": "//krebsonsecurity.com/?s=\u0002&x=0&y=0\u00010" - }, - "eedo": "//www.kreedo.de/index.php?cl=search&searchparam=\u0002 \u00010", - "ita": "//docs.krita.org/index.php?search=\u0002\u00010", - "itiker": "//kritiker.se/sok/?q=\u0002\u00010", - "oger": "//www.kroger.com/search?query=\u0002\u00010" - }, - "s": { - "\u0010": "http://www.kickstarter.com/projects/search?utf8=✓&term=\u0002+\u0001116", - "l": { - "c": "//www.ksl.com/classifieds/search/?keyword=\u0002\u00016", - "\u0010": "//classifieds.ksl.com/search?keyword=\u0002\u00014" - }, - "p": { - "f": "http://forum.kerbalspaceprogram.com/search.php?s=\u0002\u00010", - "\u0010": "http://wiki.kerbalspaceprogram.com/index.php?search=\u0002\u000122", - "pc": "//ksp.co.il/index.php?txt_search=\u0002\u00015", - "wiki": "http://wiki.kerbalspaceprogram.com/w/index.php?search=\u0002&title=Special%3ASearch\u00010" - }, - "t": "//www.kickstarter.com/\u0002 \u000111", - "u": "//kitsu.io/anime?text=\u0002\u00013" - }, - "t": { - "b": "http://techbase.kde.org/Special:Search?search=\u0002&fulltext=Search\u00010", - "h": { - "b": "//kth-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&vid=46KTH_VU1_L&search_scope=default_scope&sortby=rank&tab=default_tab&lang=en_US&mode=simple&fromRedirectFilter=true\u00010", - "\u0010": "//www.kth.se/search/search?q=\u0002\u00010", - "places": "//www.kth.se/places/search/?query=\u0002\u00010" - }, - "\u0010": "http://www.kicktraq.com/search/?find=\u0002\u00010", - "k": "http://kotaku.com/search?q=\u0002\u000158", - "s": "//www.kielitoimistonsanakirja.fi/\u0002\u000112", - "cz": "http://www.karaoketexty.cz/search?q=\u0002\u00010", - "echbase": "http://techbase.kde.org/Special:Search?search=\u0002&fulltext=Search\u00010" - }, - "x": { - "\u0010": "http://kodexploit.com/blog/search?search=\u0002\u00010", - "ref": "//code.kx.com/q/search?query=\u0002\u00010" - }, - "8s": "//kubernetes.io/docs/search/?q=\u0002\u00018", - "cl": { - "\u0010": "//www.kcl.ac.uk/search/search.aspx#/all?term=\u0002\u00010", - "s": "http://kcls.bibliocommons.com/search?t=smart&search_category=keyword&q=\u0002&commit=Search\u00010" - }, - "cp": { - "\u0010": "//github.com/KaOS-Community-Packages?query=\u0002\u00010", - "l": "http://catalog.kentonlibrary.org/eg/opac/results?query=\u0002\u00010" - }, - "eh": "//www.keh.com/shop/catalogsearch/result/?q=\u0002\u00010", - "er": { - "o": "http://www.kerosenokomputing.com/search?q=\u0002 \u00010", - "\u0010": "//git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=v5.0.1&qt=grep&q=\u0002\u00010", - "as": "//keras.io/search.html?q=\u0002\u00010", - "des": "//www.gyakorikerdesek.hu/kereses.php?keres=\u0002\u00010", - "jasama": "http://kerjasama.bandung.go.id/?s=\u0002\u00010" - }, - "ey": "//keybase.io/\u0002\u00010", - "id": { - "\u0010": "//www.kiddle.co/s.php?q=\u0002\u00010", - "rex": "http://www.kidrex.org/results/?q=\u0002\u00010", - "sinmind": "http://www.kids-in-mind.com/cgi-bin/search/search.pl?q=\u0002 \u00010" - }, - "im": { - "\u0010": "//kids-in-mind.com/?s=\u0002\u00010", - "deyir": "//kimdeyir.com/?s=\u0002\u00010", - "ovil": "http://www.kimovil.com/en/compare-smartphones/name.\u0002\u000114" - }, - "it": { - "\u0010": "http://primo.bibliothek.kit.edu/primo_library/libweb/action/search.do?mode=Basic&vid=KIT&vl%28freeText0%29=\u0002&vl%28freeText0%29=test&fn=search&tab=kit&srt=date\u00014", - "su": "//kitsu.io/anime?text=\u0002\u00013", - "apyurdu": "//www.kitapyurdu.com/index.php?route=product/search&filter_name=\u0002\u000150", - "chenstories": "//kitchenstories.io/en/search?search=\u0002\u00010", - "hara": "//kithara.to/index.php?cmd=fi&query=\u0002\u00010", - "kraft": "http://kitkraft.com/search_a.php?q=\u0002\u00010" - }, - "ol": { - "\u0010": "http://kol.coldfront.net/thekolwiki/index.php/Special:Search?search=\u0002&go=Go\u0001110", - "w": { - "\u0010": "http://kol.coldfront.net/thekolwiki/index.php/Special:Search?search=\u0002&go=Go\u0001110", - "iki": "http://kol.coldfront.net/thekolwiki/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010" - }, - "li": "//www.postnord.se/sv/verktyg/sok/Sidor/spara-brev-paket-och-pall.aspx?view=item&itemid=\u0002\u00010", - "lekt": "//kollekt.fm/search/?q=\u0002&type=all\u00010" - }, - "os": { - "\u0010": "http://en.kingofsat.net/find.php?question=\u0002&Submit=Zap\u00010", - "mas": "http://www.kosmas.cz/hledani/?query=\u0002\u00010" - }, - "ur": { - "\u0010": "//www.kurpirkt.lv/cena.php?q=\u0002\u00010", - "an": "//kuranara.com/ara?q=\u0002\u00010", - "ibo64": "http://kuribo64.net/board/search.php?q=\u0002&inposts=0\u00010" - }, - "vk": { - "\u0010": "http://www.kvk.nl/orderstraat/bedrijf-kiezen/?q=\u0002\u000151", - "de": "http://kvk.bibliothek.kit.edu/hylib-bin/kvk/nph-kvk2.cgi?maske=kvk-redesign&lang=de&title=KIT-Bibliothek%3A+Karlsruher+Virtueller+Katalog+KVK+%3A+Ergebnisanzeige&head=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Fhead.html&header=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Fheader.html&spacer=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Fspacer.html&footer=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Ffooter.html&css=none&input-charset=utf-8&ALL=&TI=\u0002&AU=&CI=&ST=&PY=&SB=&SS=&PU=&kataloge=SWB&kataloge=BVB&kataloge=NRW&kataloge=HEBIS&kataloge=HEBIS_RETRO&kataloge=KOBV_SOLR&kataloge=GBV&kataloge=DDB&kataloge=STABI_BERLIN&kataloge=TIB&kataloge=OEVK_GBV&kataloge=VD16&kataloge=VD17&kataloge=VD18&kataloge=VOE&kataloge=ZDB&ref=direct&client-js=yes\u00010" - }, - "vr": { - "\u0010": "http://www.kvraudio.com/q.php?search=1&q=\u0002\u00010", - "audio": "http://www.kvraudio.com/q.php?search=1&q=\u0002\u00010" - }, - "ym": "http://knowyourmeme.com/search?utf8=%E2%9C%93&q=\u0002\u000128", - "zs": "http://www.kidzsearch.com/kzsearch.php?q=\u0002\u00010", - "channet": "http://konachan.net/post?tags=\u0002\u00010", - "cmm": "http://kc-mm.com/?s=\u0002\u00010", - "community": "http://community.kde.org/index.php?title=Special:Search&search=\u0002\u00010", - "eel": "http://kn.eki.ee/?Q=\u0002\u00010", - "eep": { - "a": "http://keepa.com/#search/x-\u0002\u0001179", - "\u0010": "//keep.google.com/#search/text=\u0002\u0001320" - }, - "eithspecialty": "http://keithspecialty.com/cgi-keithspecialty/sb/productsearch.cgi?storeid=*0ee0f14a0870280c8d&search_field= \u0002 \u00010", - "ekanto": "//kekanto.com.br/newsearch?search=\u0002\u00010", - "eldan": "//leit.keldan.is/Home/Search?term=\u0002\u00010", - "elkoo": { - "\u0010": "http://shopping.kelkoo.co.uk/ss-\u0002.html\u00010", - "se": "http://shopping.kelkoo.se/ss-\u0002.html\u00010" - }, - "emono": "//japari-library.com/w/index.php?search=\u0002\u00010", - "enteken": "//ovi.rdw.nl/default.aspx?kenteken=\u0002\u00010", - "etab": "//ketab.io/search?submit=جستجو&q=\u0002\u00010", - "icker": "http://www.kicker.de/home/suchergebnisse.html?suchbegriff=\u0002\u00010", - "icknews": "http://www.kicknews.net/news/search?q=\u0002 \u00010", - "ickstarter": "//www.kickstarter.com/projects/search?utf8=✓&term=\u0002\u000122", - "icktraq": "http://www.kicktraq.com/search/?find=\u0002\u00010", - "ieskeurig": "http://www.kieskeurig.nl/zoeken/index.html?q=\u0002\u00010", - "ijiji": { - "\u0010": "//www.kijiji.ca/b-search.html?formSubmit=true&pageNumber=1&searchView=LIST&sortByName=dateDesc&urgentOnly=false&keywords=\u0002&SearchCategory=0\u000141", - "gm": "http://www.kijiji.ca/b-grand-montreal/\u0002/k0l80002\u00010", - "it": "http://www.kijiji.it/\u0002/\u00010", - "og": "//www.kijiji.ca/b-ottawa-gatineau-area/\u0002/k0l1700184?dc=true\u00010", - "yyc": "//www.kijiji.ca/b-calgary/\u0002/k0l1700199?dc=true\u00010" - }, - "ika": "//www.kika.de/suche/suche104.html?q=\u0002\u00010", - "ilimall": "//www.kilimall.co.ke/?act=search&keyword=\u0002\u00010", - "illerstartups": "http://www.killerstartups.com/?s=\u0002 \u00010", - "ino": { - "\u0010": "http://www.kinopoisk.ru/index.php?first=no&what=&kp_query=\u0002\u000135", - "kuniya": "//www.kinokuniya.co.jp/disp/CSfDispListPage_001.jsp?qsd=true&ptk=01&q=\u0002&SEARCH.x=0&SEARCH.y=0\u00010" - }, - "inderfilmliste": "http://www.kinderfilmliste.de/?suche=\u0002\u00010", - "indle": { - "\u0010": "//www.amazon.com/s?k=\u0002&i=digital-text\u000157", - "cn": "//www.amazon.cn/s?k=\u0002&i=digital-text\u00010", - "de": "//www.amazon.de/s?k=\u0002&i=digital-text\u00010", - "es": "//www.amazon.es/s?k=\u0002&i=digital-text\u00010", - "jp": "//www.amazon.co.jp/s?k=\u0002&i=digital-text\u00010", - "uk": "//www.amazon.co.uk/s?k=\u0002&i=digital-text\u000111" - }, - "inguin": "http://www.kinguin.net/catalogsearch/result/?q=\u0002\u000110", - "inige": "http://kinige.com/ksearch.php?searchfor=\u0002\u00010", - "irp": "http://kirp.pl/?s=\u0002\u00010", - "irby": "//getkirby.com/search?q=\u0002\u00014", - "irkus": "//www.kirkusreviews.com/search/?q=\u0002\u00010", - "issbb": "http://www.kisskissbankbank.com/fr/search?utf8=%E2%9C%93&q=\u0002\u00010", - "ivy": { - "\u0010": "http://kivy.org/docs/search.html?check_keywords=yes&area=default&q=\u0002\u00010", - "api": "http://kivy.org/docs/search.html?check_keywords=yes&area=default&q=\u0002\u00010" - }, - "obo": { - "\u0010": "//www.kobo.com/us/en/search?Query=\u0002\u000134", - "ca": "//www.kobo.com/ca/en/search?Query=\u0002\u00010", - "nz": "//www.kobo.com/nz/en/search?Query=\u0002\u00010" - }, - "obv": "http://portal.kobv.de/simpleSearch.do?query= \u0002\u00015", - "ochwiki": "//www.kochwiki.org/w/index.php?search=\u0002&go=Seite\u00010", - "odi": { - "\u0010": "http://kodi.wiki/index.php?search=\u0002&title=Special%3ASearch\u00010", - "ct": "//ko.dict.naver.com/#/search?query=\u0002\u000139" - }, - "oei": "http://koei.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "ogan": "//www.kogan.com/au/shop/?q=\u0002\u00010", - "oha": "//bugs.koha-community.org/bugzilla3/buglist.cgi?quicksearch=\u0002\u000127", - "ohls": "http://www.kohls.com/search.jsp?search=\u0002\u00017", - "oherald": "http://www.koreaherald.com/search/index.php?q=\u0002&kr=0\u00010", - "ojipkg": "//koji.fedoraproject.org/koji/search?match=glob&type=package&terms=\u0002\u00010", - "okothemes": "//www.kokothemes.com/?s=\u0002\u00010", - "ompas": "//search.kompas.com/search/?q=\u0002&submit=Submit+Query\u00010", - "omplett": "//www.komplett.no/search?q=\u0002\u00010", - "omputeko": "http://www.komputeko.net/index_eo.php?vorto=\u0002\u00010", - "ong": { - "a": "http://www.konga.com/catalogsearch/result/?cat=0&q=\u0002 \u00010", - "\u0010": "http://www.kongregate.com/search?q=\u0002\u00010", - "regate": "http://www.kongregate.com/search?q=\u0002\u00010" - }, - "onj": "http://de.bab.la/konjugieren/deutsch/\u0002\u00010", - "oodous": "//koodous.com/apks?search=\u0002\u00010", - "oohii": "//kanji.koohii.com/study/kanji/\u0002\u00010", - "oopjedeal": "//www.koopjedeal.nl/catalogsearch/result/?q=\u0002\u00010", - "ooponline": "//www.kooponline.com/search.php?q=\u0002\u00010", - "oorong": "//www.koorong.com/search/results.jhtml?w=\u0002\u00010", - "oreus": "//www.koreus.com/search.php?q=\u0002&sa=Rechercher\u000116", - "orpus": "http://slovniky.korpus.sk/?w=\u0002\u00010", - "orrekturen": "//www.korrekturen.de/suche/searcher.php?q=\u0002\u00010", - "otus": "http://www.kielitoimistonsanakirja.fi/netmot.exe?page=results&UI=fi80&Opt=8&dic=1&SearchWord=\u0002&SearchMode=1\u00016", - "otaku": { - "\u0010": "http://kotaku.com/search?q=\u0002\u000158", - "au": "http://www.kotaku.com.au/?s=\u0002\u00010" - }, - "otikokki": "//www.kotikokki.net/reseptit/?freeText=\u0002\u00010", - "otlin": { - "\u0010": "//kotlinlang.org/?q=\u0002\u000112", - "links": "//kotlin.link/?q=\u0002\u00010" - }, - "otoba": { - "\u0010": "http://kotobank.jp/word/\u0002\u000131", - "nk": "http://kotobank.jp/word/\u0002 \u000117" - }, - "öket": "//www.koket.se/search?searchtext=\u0002\u00010", - "-on": "http://k-on.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "uantokusta": "http://www.kuantokusta.pt/search?q=\u0002 \u000118", - "ubadownload": "//kubadownload.com/search?q=\u0002\u00010", - "ubapichci": "http://www.kuba-pichci.pl/?s=\u0002\u00010", - "ubernetes": "//kubernetes.io/docs/search/?q=\u0002\u00018", - "uketz": "//www.kuketz-blog.de/?s=\u0002\u00010", - "ulib": "//catalog.lib.ku.edu/cgi-bin/Pwebrecon.cgi?Search_Arg=\u0002&SL=None&Search_Code=FT*&PID=vT8gNN42qqUs0JjgNd8tssHev&SEQ=20180430021422&CNT=25&HIST=1&kujSubmitButtonName=Search\u00010", - "ulinarian": "//www.kulinarian.com/recipe/search?q=\u0002\u00010", - "ultofathena": "http://kultofathena.com/s_results.asp?search=\u0002\u00010", - "unu": { - "\u0010": "//www.kununu.com/de/search#/?q=\u0002&country=COUNTRY_DE\u00010", - "nu": "//www.kununu.com/de/search#/?q=\u0002&country=COUNTRY_DE\u00010" - }, - "uopassa": "http://kuopassa.net/haku/?q=\u0002\u00010", - "userbase": "//userbase.kde.org/index.php?search=\u0002&title=Special%3ASearch\u00010", - "vasir": "http://www.kvasir.no/alle?q=\u0002\u00010", - "wzf": "http://kwzf.net/#search=\u0002&page=1\u00010", - "yobo": "//search.kyobobook.co.kr/web/search?vPstrKeyWord=\u0002\u00010" - }, - "m": { - "1": { - "\u0010": "//www.motor1.com/search/?q=\u0002\u00010", - "63": "http://music.163.com/#/search/m/?s=\u0002\u00010" - }, - "a": { - "a": { - "\u0010": "http://www.maa.org/search/node?keys=\u0002\u00010", - "ny": "http://www.almaany.com/ar/dict/ar-en/\u0002/\u00010", - "jim": "//www.maajim.com/dictionary/\u0002\u00010", - "kjetaart": "http://www.maakjetaart.nl/advanced_search_result.php?search_in_description=0&keywords=\u0002\u00010", - "lbum": "http://www.metal-archives.com/search?searchString=\u0002&type=album_title\u00010" - }, - "b": { - "\u0010": "http://www.metal-archives.com/search?type=band_name&searchString=\u0002\u0001156", - "and": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000134", - "iwiki": "http://wiki.mabinogiworld.com/index.php?search=\u0002\u00010" - }, - "c": { - "g": "http://www.macg.co/search/site/\u0002\u00010", - "\u0010": "http://www.macvendorlookup.com/search/\u0002\u000112", - "q": "//www.macquariedictionary.com.au/features/word/search/?word=\u0002&search_word_type=Dictionary\u00010", - "id": "http://www.everymac.com/ultimate-mac-lookup/?search_keywords=\u0002\u000113", - "ys": "//www.macys.com/shop/featured/\u0002\u00016", - "brit": "http://www.macmillandictionary.com/dictionary/british/\u0002\u00010", - "dic": "http://www.macmillandictionary.com/dictionary/american/\u0002\u00010", - "ewan": "//library.macewan.ca/library-search?query=\u0002\u00010", - "mag": "//macmagazine.uol.com.br/?s=\u0002\u00010", - "millan": "http://www.macmillandictionary.com/dictionary/american/\u0002\u00010", - "observer": "//www.macobserver.com/?s=\u0002\u00010", - "ports": "//www.macports.org/ports.php?by=name&substr=\u0002\u000112", - "rumors": "http://www.macrumors.com/search/?s=\u0002\u000113", - "sales": "//eshop.macsales.com/search/?q=\u0002\u00010", - "stories": "http://www.macstories.net/?s=\u0002\u00010", - "update": "http://www.macupdate.com/find/mac/\u0002\u00010", - "vendor": "http://www.macvendorlookup.com/search/\u0002\u000112", - "welt": "http://www.macwelt.de/suche?searchStr=\u0002\u00010", - "world": "http://www.macworld.com/search?query=\u0002 &submit=search\u00010" - }, - "l": { - "l": "//www.mall.cz/hledej?s=\u0002\u00014", - "\u0010": "//myanimelist.net/anime.php?q=\u0002\u00013054", - "id": "http://malid.is/leit/\u0002\u000123", - "all": "//myanimelist.net/search/all?q=\u0002\u000112", - "ist": "http://myanimelist.net/anime.php?q=\u0002\u000137", - "pha": "http://memory-alpha.org/index.php?search=\u0002\u00010", - "tapark": "//www.maltapark.com/search?c=s1&search=\u0002\u00010" - }, - "\u0010": "http://en.memory-alpha.org/wiki/Special:Search?search=\u0002&fulltext=Search\u0001260", - "n": { - "1": "//linux.die.net/man/1/\u0002\u00019", - "7": "//duckduckgo.com/?q=\u0002+site%3Aman7.org%2Flinux%2Fman-pages\u0001108", - "\u0010": "http://manpage.me/?q=\u0002\u0001557", - "ds": "http://www.marksandspencer.com/gp/search?field-keywords=\u0002\u000110", - "ga": { - "\u0010": "http://myanimelist.net/manga.php?q=\u0002\u000171", - "s": "//kitsu.io/manga?text=\u0002\u00010", - "dex": "//mangadex.org/search?tag_mode_exc=any&tag_mode_inc=all&title=\u0002\u000158", - "high": "//www.mangahigh.com/browse/?q=\u0002\u00010", - "rock": "//mangarock.com/search?q=\u0002\u00010" - }, - "jf": "//forum.manjaro.org/search?expanded=true&q=\u0002\u000110", - "jw": "//wiki.manjaro.org/index.php?search=\u0002\u00013", - "-k": "http://man-k.org/search?q=\u0002&dist=NetBSD-current\u00010", - "ta": "http://www.manta.com/mb?search=\u0002\u00010", - "bara": "http://manga.akihabara.cz/vyhledavani/\u0002\u00010", - "darake": "http://ekizo.mandarake.co.jp/shop/en/search.do?action=keyword&doujin=all&searchStrategy=keyword&keyword=\u0002\u00010", - "gotv": "http://mangotv.co/?s=\u0002\u00010", - "jaro": "//wiki.manjaro.org/index.php?search=\u0002&title=Special%3ASearch\u00015", - "kier": "http://www.mankier.com/?q=\u0002\u0001148", - "ned": "//manned.org/browse/search?q=\u0002\u000140", - "orama": "//www.manoramaonline.com/search-results.html?q=\u0002\u00010", - "osx": "http://duckduckgo.com/?q=\u0002+site%3Adeveloper.apple.com\u00010", - "page": "//manpage.me/?q=\u0002\u000118", - "ualslib": "http://www.manualslib.com/a/\u0002.html\u00010" - }, - "p": { - "\u0010": "http://maps.google.com/maps?q=\u0002\u00012062", - "p": { - "\u0010": "http://mapper.acme.com/?q=\u0002 \u00010", - "y": "http://fr.mappy.com/#/TSearch/S\u0002\u00019" - }, - "s": { - "\u0010": "//google.com/maps?q=\u0002\u000132506", - "r": "//www.google.com/maps/dir/\u0002\u000111", - "de": "//www.google.de/maps/place/\u0002\u000172", - "fr": "//maps.google.com/maps?hl=fr&q=\u0002\u000134", - "uk": "//maps.google.co.uk/maps?q=\u0002\u000156" - }, - "y": "//mapy.cz/zakladni?q=\u0002\u0001189", - "fan": "//mapfan.com/map/words/\u0002/spots\u00010", - "ion": "//www.mapion.co.jp/s/q=\u0002/t=spot/\u00010", - "quest": "http://www.mapquest.com/?q=\u0002\u00015" - }, - "r": { - "i": { - "o": { - "\u0010": "//www.mariowiki.com/\u0002\u000125", - "wiki": "http://www.mariowiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000146" - }, - "\u0010": "http://putusan.mahkamahagung.go.id/main/pencarian/?q=\u0002\u00014", - "ne": { - "\u0010": "http://www.marinetraffic.com/en/ais/index/search/all/keyword:\u0002\u00010", - "parts": "//www.marinepartssource.com/catalogsearch/result/?q=\u0002\u00010", - "traffic": "//www.marinetraffic.com/en/ais/index/search/all?keyword=\u0002\u00013" - }, - "adb": "//mariadb.com/kb/en/+search/?q=\u0002\u000122", - "sela": "//mariselaveludo.fashion/?s=\u0002\u00010" - }, - "\u0010": "http://marktplaats.nl/z.html?query=\u0002\u00017", - "ca": "http://cgi.marca.com/buscador/archivo_marca.html?q=\u0002\u00013", - "ch": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000134", - "kt": { - "\u0010": "http://www.markt.de/muenchen/keywords,\u0002/suche.htm\u00010", - "plaats": "//www.marktplaats.nl/z.html?query=\u0002\u000176" - }, - "ginalrevolution": "http://marginalrevolution.com/?s=\u0002\u00010", - "kandgraham": "http://www.markandgraham.com/search/results.html?words=\u0002\u00010", - "ket": { - "\u0010": "//market.android.com/search?q=\u0002&c=apps\u000121", - "placetf": "//marketplace.tf/search?q=\u0002&?r=76561198039950396\u00010" - }, - "kmail": "http://markmail.org/search/?q=\u0002\u00010", - "kos": "//duckduckgo.com/?q=\u0002+site%3Amarkosweb.com \u00010", - "maris": "//www.marmarisreservation.com/?s=\u0002\u00010", - "mit": { - "\u0010": "http://www.marmiton.org/recettes/recherche.aspx?s=\u0002 \u00010", - "on": "http://www.marmiton.org/recettes/recherche.aspx?aqt=\u0002\u000118" - }, - "tinka": "http://www.martinka.com/catalogsearch/result/?q=\u0002\u00010", - "tinus": "http://www.martinus.sk/?uMod=list&uTyp=search&uQ=\u0002\u00010", - "vel": { - "c": "http://marvel.com/search/?q=\u0002&category=comics\u00010", - "\u0010": "//www.marvel.com/search/?query=\u0002\u00010", - "wiki": "http://marvel.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000131" - } - }, - "de": "http://www.made.com/catalogsearch/result/?q=\u0002\u00010", - "il": { - "\u0010": "//mail.google.com/mail/u/0/#inbox\u0002:\u00011262", - "ru": "//go.mail.ru/search?fm=1&q=\u0002\u00010", - "catch": "http://mailcatch.com/en/temporary-inbox?box=\u0002\u00010", - "chimp": "//mailchimp.com/search/?q=\u0002\u00010", - "inator": "//www.mailinator.com/v3/index.jsp?zone=public&query=\u0002\u000118" - }, - "ke": { - "\u0010": "//makezine.com/?s=\u0002\u00010", - "mac": "http://makemac.com/?s=\u0002\u00010", - "upalley": "//www.makeupalley.com/search.asp?q=\u0002&x=0&y=0\u00010", - "useof": "//www.makeuseof.com/?s=\u0002\u00016", - "zine": "//makezine.com/?s=\u0002\u00010" - }, - "ku": "http://www.maku.fi/haku/recipe?q=\u0002\u00013", - "sh": { - "\u0010": "http://mashable.com/follow/search/?q=\u0002 \u00010", - "able": "http://mashable.com/follow/search?q=\u0002\u00010" - }, - "sk": "http://www.UnmaskParasites.com/security-report/?page=\u0002\u00010", - "th": { - "\u0010": "http://mathworld.wolfram.com/search/?query=\u0002&x=0&y=0\u000116", - "em": { - "\u0010": "//www.mathem.se/sok?q=\u0002\u00010", - "atica": "http://reference.wolfram.com/search/?q=\u0002\u00019" - }, - "se": "http://math.stackexchange.com/search?q=\u0002\u000155", - "isfun": "http://www.mathsisfun.com/sphider/search.php?query=\u0002&submit=&search=1\u00010", - "jax": "http://docs.mathjax.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "overflow": "http://mathoverflow.net/search?q=\u0002\u00017", - "works": "http://duckduckgo.com/?q=\u0002+site:mathworks.com\u00010", - "world": "http://mathworld.wolfram.com/search/?query=\u0002&x=0&y=0\u000116" - }, - "tl": { - "\u0010": "http://www.matweb.com/search/QuickText.aspx?SearchText=\u0002\u00010", - "ab": { - "\u0010": "http://uk.mathworks.com/help/search.html?qdoc=\u0002&submitsearch=Search\u000137", - "fx": "http://www.mathworks.com/matlabcentral/fileexchange/?term=\u0002\u00010", - "ans": "//es.mathworks.com/matlabcentral/answers/?term=\u0002\u00010" - } - }, - "tw": { - "\u0010": "http://www.matweb.com/search/QuickText.aspx?SearchText=\u0002\u00010", - "eb": "http://www.matweb.com/search/QuickText.aspx?SearchText=\u0002\u00010" - }, - "yo": "//www.mayoclinic.org/search/search-results?q=\u0002\u00010", - "dison": "http://host.madison.com/search/?l=25&sd=desc&s=start_time&f=html&t=article%2Cvideo%2Cyoutube%2Ccollection&app=editorial&q=\u0002&nsa=eedition\u00010", - "donc": "//madoncollections.com/collectables/?q=\u0002\u00010", - "dura": "//maduraonline.com/?find=\u0002\u00010", - "edler": "//www.maedler.de/ShopSearch?query=\u0002\u00010", - "erklinde": "http://www.maerklin.de/index.php?id=247&q=\u0002\u00010", - "fia": { - "\u0010": "//www2.informatik.uni-hamburg.de/fachschaft/wiki/index.php?search=\u0002\u000120", - "si": "//www2.informatik.uni-hamburg.de/fachschaft/wiki/index.php?search=\u0002\u000120" - }, - "galu": "//www.magazineluiza.com.br/busca/\u0002\u00010", - "gento": "//magento.com/search/gss/\u0002\u00010", - "gic": { - "\u0010": "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[\u0002]\u0001138", - "card": { - "\u0010": "http://magiccards.info/query?q=\u0002&v=card&s=cname\u00010", - "s": "http://magiccards.info/query?q=\u0002&v=card&s=cname\u00010", - "market": "//www.cardmarket.com/en/Magic/MainPage/showSearchResult?searchFor=\u0002\u00010" - } - }, - "giskmod": "//github.com/Magisk-Modules-Repo?&q=\u0002\u00010", - "gma": "http://magma.maths.usyd.edu.au/magma/handbook/search?query=\u0002&intrinsics=1\u00010", - "gpi": { - "e": "http://store.musicmagpie.co.uk/category/?keyword=\u0002\u00010", - "\u0010": "//www.raspberrypi.org/magpi/?s=\u0002\u00010" - }, - "gsx": "http://magento.stackexchange.com/search?q=\u0002\u00010", - "jorsbooks": "http://www.majorsbooks.com/search/?searchQuery=\u0002\u00010", - "kro": "//www.makro.cz/vyhledavani?q=\u0002\u00010", - "mma": "http://www.mamma.com/result.php?q=\u0002&type=web\u00010", - "ori": { - "\u0010": "http://maoridictionary.co.nz/search?idiom=&phrase=&proverb=&loan=&histLoanWords=&keywords=\u0002\u00010", - "dictionary": "http://maoridictionary.co.nz/search?idiom=&phrase=&proverb=&loan=&histLoanWords=&keywords=\u0002\u00010" - }, - "ssdrop": "//drop.com/search/\u0002/drops\u00010", - "sterseek": "http://www.masterseek.com/lead_generation_final.aspx?q=\u0002\u00010", - "teriel": "http://www.materiel.net/achat/\u0002/\u00010", - "tpl": { - "\u0010": "http://www.matematyka.pl/search.php?keywords=\u0002\u00010", - "otlib": "http://matplotlib.sourceforge.net/search.html?q=\u0002 \u000120" - }, - "ven": "http://search.maven.org/#search|ga|1|\u0002\u0001116", - "vin": "//mavin.io/search?q=\u0002\u00010", - "xspar": "//www.maxspar.de/s/\u0002\u00010", - "xthon": "http://extension.maxthon.com/all/index.php?keyword=\u0002\u00010" - }, - "b": { - "c": { - "\u0010": "//www.mybeercellar.com/?search=\u0002\u00010", - "dstub": "//musicbrainz.org/search?query=\u0002&type=cdstub\u00010" - }, - "e": { - "\u0010": "//musicbrainz.org/search?query=\u0002&type=event&method=indexed\u00010", - "ans": "//mbeans.com/search.html?search=\u0002\u00010", - "ditor": "//musicbrainz.org/search?query=\u0002&type=editor\u00010", - "vent": "//musicbrainz.org/search?query=\u0002&type=event\u00010" - }, - "l": { - "\u0010": "//musicbrainz.org/search?query=\u0002&type=label&method=indexed\u00010", - "ue": "//www.meteoblue.com/?q=\u0002\u000131", - "abel": "//musicbrainz.org/search?query=\u0002&type=label\u00010" - }, - "\u0010": "http://musicbrainz.org/search/textsearch.html?type=artist&query=\u0002&handlearguments=1\u0001207", - "p": { - "h": "//mb.com.ph/?s=\u0002\u00010", - "\u0010": "//musicbrainz.org/search?query=\u0002&type=place&method=indexed\u00010", - "lace": "//musicbrainz.org/search?query=\u0002&type=place\u00010" - }, - "r": { - "c": "//musicbrainz.org/search?query=\u0002&type=recording\u00010", - "g": "http://musicbrainz.org/search?query=\u0002&type=release_group&method=indexed\u000127", - "\u0010": "http://musicbrainz.org/search?type=release&query=\u0002&handlearguments=1\u000119", - "ec": { - "\u0010": "//musicbrainz.org/search?query=\u0002&type=recording&method=indexed\u00010", - "ording": "//musicbrainz.org/search?query=\u0002&type=recording\u00010" - }, - "elease": { - "\u0010": "//musicbrainz.org/search?query=\u0002&type=release\u00017", - "group": "//musicbrainz.org/search?query=\u0002&type=release_group\u00010" - } - }, - "s": { - "\u0010": "http://mapa.buenosaires.gov.ar/buscador/?dir= \u0002\u00010", - "dman": "//www.mirbsd.org/man.cgi?q=\u0002 \u00010", - "eries": "//musicbrainz.org/search?query=\u0002&type=series\u00010" - }, - "w": { - "\u0010": "http://musicbrainz.org/search?query=\u0002&type=work&method=indexed\u00010", - "iki": "//wiki.musicbrainz.org/index.php?title=Special%3ASearch&go=Go&search=\u0002\u00010", - "ork": "//musicbrainz.org/search?query=\u0002&type=work\u00010" - }, - "fc": "//mediabiasfactcheck.com/?s=\u0002\u000138", - "ug": "//bugzilla.mozilla.org/buglist.cgi?quicksearch=\u0002\u00014", - "amblog": "//blog.malwarebytes.org/?s=\u0002\u00010", - "annotation": "//musicbrainz.org/search?query=\u0002&type=annotation\u00010", - "area": "//musicbrainz.org/search?query=\u0002&type=area\u00010", - "artist": "//musicbrainz.org/search?query=\u0002&type=artist\u000110", - "doc": "//musicbrainz.org/search?query=\u0002&type=doc\u00010", - "glick": "http://www.mbglick.com/catalogsearch/result/?q=\u0002\u00010", - "instrument": "//musicbrainz.org/search?query=\u0002&type=instrument\u00013", - "tag": "//musicbrainz.org/search?query=\u0002&type=tag\u00010" - }, - "c": { - "b": "http://mycallbot.com/numbers/\u0002\u00010", - "c": { - "c": "//media.ccc.de/search/?q=\u0002\u00013", - "\u0010": "//www.monroecc.edu/search/#gsc.q=\u0002\u00010" - }, - "f": { - "\u0010": "http://www.minecraftforum.net/search?search=\u0002\u00010", - "r": "//minecraft.fr/?s=\u0002\u00010" - }, - "h": "http://map.geo.admin.ch/?swisssearch=\u0002\u00010", - "k": "//mms.mckesson.com/catalog?query=\u0002\u00010", - "m": { - "\u0010": "//www.cardmarket.com/en/Magic/Products/Search?searchString=\u0002\u000148", - "aster": "http://www.mcmaster.com/#\u0002\u000142", - "ods": "//www.curseforge.com/minecraft/mc-mods/search?search=\u0002\u0001102", - "odpacks": "//www.curseforge.com/minecraft/modpacks/search?search=\u0002\u000110" - }, - "\u0010": "http://www.metacritic.com/search/all/\u0002/results\u0001629", - "r": "http://www.metacrawler.com/search/web?fcoid=417&fcop=topnav&fpid=2&om_nextpage=True&q=\u0002\u00013", - "s": { - "\u0010": "http://www.movie-censorship.com/list.php?s=\u0002\u00010", - "kin": "http://www.mcskinsearch.com/skin/\u0002\u00010", - "tats": "//minecraft-statistic.net/en/search/?q=\u0002\u00010" - }, - "u": "http://marvelcinematicuniverse.wikia.com/wiki/Special:Search?query=\u0002\u0001108", - "v": "http://moviecovers.com/multicrit.html?titre=\u0002\u00010", - "w": { - "d": "http://minecraft-de.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "m": "//www.minecraftworldmap.com/search?ss=\u0002\u00010", - "\u0010": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001341", - "iki": { - "\u0010": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001341", - "de": "http://de.minecraftwiki.net/index.php?title=Spezial%3ASuche&search=\u0002\u00010", - "fr": "http://minecraft-fr.gamepedia.com/index.php?search=\u0002\u00010", - "zh": "//minecraft-zh.gamepedia.com/\u0002\u00010" - } - }, - "z": "//mapy.cz/?q=\u0002\u000139", - "at": { - "\u0010": "//www.monstercat.com/search?term=\u0002\u00010", - "wiki": "http://monstercat.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "de": "//minecraft-de.gamepedia.com/\u0002\u00010", - "pc": "http://minecraft-computer.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "pl": { - "\u0010": "//mcpac.mcpl.lib.ny.us/search/t?\u0002\u00010", - "md": "//mdpl.ent.sirsi.net/client/en_US/catalog/search/results?qu=\u0002\u00010" - }, - "gill": { - "\u0010": "http://www.mcgill.ca/search/?query=\u0002&find=Search\u00010", - "lib": "http://mcgill.worldcat.org/search?q=\u0002&qt=owc_search&scope=2\u00010" - }, - ".info": "http://magiccards.info/query?q=\u0002&v=card&s=cname\u00010", - "name": "//namemc.com/s?\u0002\u00010", - "pan": "http://metacpan.org/search?q=\u0002\u0001225", - "pew": "http://minecraftpocketedition.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "pedl": "http://mcpedl.com/?s=\u0002\u00010", - "-pl": "//minecraft-pl.gamepedia.com/index.php?search=\u0002&title=Specjalna:Szukaj&go=Przejd%C5%BA\u00010" - }, - "d": { - "5": "http://md5.gromweb.com/?md5=\u0002\u00010", - "a": { - "\u0010": "http://www.marksdailyapple.com/search-results/?cx=004987908667488763946%3Akd-fp2c7jek&cof=FORID%3A11&ie=UTF-8&q=\u0002&siteurl=www.marksdailyapple.com%2F&ref=&ss=1623j619159j7\u00010", - "sh": "//mmlafleur.com/mdash/search/\u0002\u00010" - }, - "b": { - "g": { - "\u0010": "//www.mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb=\u0002\u0001534", - "t": "http://www.mdbg.net/chindict/chindict.php?page=worddict&wdrst=1&wdqb=\u0002\u000115" - }, - "\u0010": "http://moridb.com/items/search?q=\u0002\u000112", - "s": "http://mapa.buenosaires.gov.ar/buscador/?dir= \u0002\u00010" - }, - "c": { - "c": "//m.dict.cc/?s=\u0002\u00018", - "\u0010": "//developer.mozilla.org/search?q=\u0002\u000112", - "omp": "//mdcomputers.in/index.php?route=product/search&search=\u0002&description=true\u00010" - }, - "j": "http://mixing.dj/?s=\u0002\u00010", - "l": "http://mydramalist.com/browse/all?sort[]=relevance&q=\u0002\u0001104", - "\u0010": "//docs.microsoft.com/en-us/search/index?search=\u0002\u000192", - "n": { - "\u0010": "//developer.mozilla.org/search?q=\u0002\u000112", - "io": "//mdn.io/\u0002\u000134", - "js": "//developer.mozilla.org/en-US/search?q=\u0002&topic=js\u000151", - ".s": "//duckduckgo.com/?q=\u0002+site%3Adeveloper.mozilla.org\u00010", - "api": "//developer.mozilla.org/en-US/search?q=\u0002&topic=api\u00015", - "css": "//developer.mozilla.org/en-US/search?q=\u0002&topic=css\u000174", - "html": "//developer.mozilla.org/en-US/search?q=\u0002&topic=html\u00018" - }, - "p": "//www.mediapart.fr/search?search_word=\u0002&op=ok\u00010", - "t": { - "\u0010": "http://www.mdt.co.uk/catalogsearch/result/?q=\u0002&t=general&order=most_viewed\u00010", - "z": "//www.mediatize.info/search?q=\u0002\u00010" - }, - "u": "//manualdousuario.net/?s=\u0002\u000168", - "x": "//mangadex.org/search?title=\u0002\u000154", - "mz": "http://www.madmoizelle.com/recherche.php?q=\u0002&sitesearch=madmoizelle.com&cx=014204933963475694561%3Aq69po45gmum&cof=FORID%3A11&client=pub-9887088429202220&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23336699%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BFORID%3A11&hl=fr&sa=Recherche\u00010", - "ona": "//tienda.mercadona.es/search-results?query=\u0002\u00010" - }, - "e": { - "c": { - "\u0010": "//www.mec.ca/en/search?text=\u0002 \u00013", - "o": "//www.metalochimice.ro/?s=\u0002&post_type=product\u00010", - "abricks": "http://mecabricks.com/en/library/search?q=\u0002\u00010" - }, - "d": { - "b": "http://www.medbullets.com/search?cx=011011587714199370644:0fb95tj2wze&cof=FORID:9&ie=UTF-8&sa.x=10&sa.y=12&sa=Search&q=\u0002\u00010", - "f": "//mechanicalsite.com/?s=\u0002\u00010", - "i": { - "\u0010": "http://www.translatetheweb.com/?item1=\u0002&field=all&maxKurztitel=25&sachgruppen=0&sachgruppenSchulfaecher=0&media=all&local=0&produzent=0&article_id=23&submitEinfacheSuche=Find+Titles&from=&to=en&a=http%3A%2F%2Fmedibus.info%2Findex.php%3Farticle_id%3D23%23einfSucheInfo&f=1\u00010", - "um": "//medium.com/search?q=\u0002\u000131", - "abias": "//mediabiasfactcheck.com/?s=\u0002\u000138", - "accc": "//media.ccc.de/search/?q= \u0002\u00010", - "adico": "http://mediadico.com/dictionnaire/definition/\u0002\u00010", - "ainfo": "http://media.info/search?s=\u0002\u00010", - "amarkt": { - "\u0010": "http://www.mediamarkt.nl/nl/search.html?storeId=10259&langId=-11&searchProfile=onlineshop&channel=mmnlnl&searchParams=&path=&query=\u0002\u00016", - "fr": "http://www.mediamarkt.be/fr/search.html?query=\u0002\u00010", - "nl": "http://www.mediamarkt.nl/nl/search.html?query=\u0002&searchProfile=onlineshop&channel=mmnlnl\u00010" - }, - "apart": "//www.mediapart.fr/search?search_word=\u0002\u00010", - "atum": "//mediatum.ub.tum.de/?query=\u0002\u00010", - "awiki": "//www.mediawiki.org/w/index.php?search=\u0002 \u000161", - "cal": "http://medical-dictionary.thefreedictionary.com/\u0002\u00014", - "max": "//www.medimax.de/search?search=\u0002\u00010", - "mops": "http://www.medimops.de/produkte-C0/?fcIsSearch=1&searchparam=\u0002\u000136" - }, - "\u0010": "//medium.com/search?q=\u0002\u000131", - "gadget": "http://www.medgadget.com/?s=\u0002\u00010", - "lineplus": "http://vsearch.nlm.nih.gov/vivisimo/cgi-bin/query-meta?v%3Aproject=medlineplus&query=\u0002\u00010", - "nar": "http://www.mednar.com/mednar/result-list/fullRecord:\u0002\u00010", - "phd": "//medical-phd.blogspot.com/search?q=\u0002\u00010", - "scape": "http://search.medscape.com/reference-search?newSearchHeader=1&queryText=\u0002\u00010" - }, - "\u0010": "http://masseffect.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000158", - "s": { - "h": "//www.ncbi.nlm.nih.gov/mesh/?term=\u0002\u000122", - "\u0010": "//www.messicks.com/search?q=\u0002\u00010", - "saggero": "http://www.ilmessaggero.it/?p=search&q=\u0002\u00010", - "seinfo": "http://egliseinfo.catholique.fr/horaires/\u0002\u00010", - "serle": "//shop.messerle.at/dataTransfer/custom/suche.php?keyword=\u0002\u00010" - }, - "t": { - "\u0010": "http://meteox.de/search.aspx?s=\u0002\u00015", - "al": { - "\u0010": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000134", - "ab": "//metalab.at/wiki/index.php?search=\u0002\u00010", - "it": "//metalitalia.com/?s=\u0002\u00010", - "arch": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000134", - "lum": "//www.metal-archives.com/search?searchString=\u0002&type=band_name\u0001115", - "scrap": "//romaandmacmetalscrap.com/?product_cat=0&s=\u0002\u00010", - "storm": "http://www.metalstorm.net/home/search.php?search_where=band&search_what=\u0002&x=0&y=0\u000130" - }, - "ar": "http://av-wx.com/?search=\u0002&mode=metar\u00010", - "ro": { - "\u0010": "//www.metro.ca/en/search?free-text=\u0002\u00010", - "idwiki": "http://www.metroidwiki.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "acafe": "http://www.metacafe.com/videos_about/\u0002/\u00010", - "acanada": "//www.reddit.com/r/metacanada/search?q=\u0002&restrict_sr=on\u00010", - "acpan": "//metacpan.org/search?q=\u0002\u00015", - "acrawler": "http://www.metacrawler.com/search/web?q=\u0002\u00013", - "acritic": "http://www.metacritic.com/search/all/\u0002/results\u0001629", - "aculus": "//www.metaculus.com/questions/?search=\u0002\u00010", - "ade": "//de.metapedia.org/m/index.php?search=\u0002&title=Spezial%3ASuche\u00010", - "afilter": "http://www.metafilter.com/contribute/search.mefi?site=mefi&q=\u0002\u00010", - "ager": { - "\u0010": "//www.metager.de/meta/meta.ger3?eingabe=\u0002\u000111", - "en": "//metager.de/meta/cgi-bin/meta.ger1?ui=en&lang=en&wikiboost=on&QuickTips=off&langfilter=yes&eingabe=\u0002&mm=and&time=1&exalead=on&fastbot=on&yacy=on&nebel=on&atsearch=on&acoon=on&overture=on&base=on&yandex=on&onenewspage=on&dmozint=on\u00017", - "tor": { - "\u0010": "http://b7cxf4dkdsko6ah2.onion/meta/meta.ger3?focus=web&encoding=utf8&lang=all&eingabe=\u0002\u00010", - "en": "http://b7cxf4dkdsko6ah2.onion/en/meta/meta.ger3?focus=web&encoding=utf8&lang=en&eingabe=\u0002\u00010" - } - }, - "appcg": "//codegolf.meta.stackexchange.com/search?q=\u0002\u00010", - "aso": "http://meta.stackoverflow.com/search?q=\u0002\u00010", - "asx": "http://meta.stackexchange.com/search?q=\u0002\u00010", - "eli": "http://www.meteli.net/tapahtumahaku?q=\u0002\u00010", - "eofr": "http://www.meteofrance.com/recherche/resultats?facet=previsions&lieuId=&lieuType=&search-type=previsions&query=\u0002\u00016", - "eoblue": "//www.meteoblue.com/en/weather/forecast/14-days/\u0002\u00010", - "eociel": "http://www.meteociel.fr/prevville.php?action=getville&ville=\u0002\u00010", - "eomedia": "//www.meteomedia.com/ca/search?q=\u0002\u00010", - "eorjs": "http://docs.meteor.com/#/full/\u0002\u00010", - "off": { - "\u0010": "http://www.metoffice.gov.uk/public/weather/location-search/sitename?searchLocation=\u0002\u00016", - "ice": "http://www.metoffice.gov.uk/public/weather/location-search/sitename?searchLocation=\u0002\u00016" - } - }, - "fi": "http://www.metafilter.com/contribute/search.mefi?site=mefi&q=\u0002\u00010", - "ma": { - "\u0010": "http://en.memory-alpha.org/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns4=1#\u00013", - "lphade": "http://de.memory-alpha.wikia.com/wiki/Spezial:Suche?query=\u0002\u00010" - }, - "me": { - "\u0010": "http://knowyourmeme.com/search?utf8=%E2%9C%93&q=\u0002\u000128", - "gen": "http://memegenerator.net/memes/search?q=\u0002\u00010", - "nto": "http://timetravel.mementoweb.org/list/2013/\u0002\u00013" - }, - "mx": "http://www.memoryexpress.com/Search/Products?Search=\u0002\u00010", - "we": "//mewe.com/profile/\u0002\u00010", - "etup": "http://www.meetup.com/find/?keywords=\u0002\u000112", - "galodon": "http://megalodon.jp/?url=\u0002\u00010", - "galyr": "http://megalyrics.ru/search?utf8=%E2%9C%93&search=\u0002\u00010", - "gaman": "http://megaman.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00013", - "gamitensei": "http://megamitensei.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "gatenw": "http://megamitensei.wikia.com/wiki/Special:Search?search=\u0002\u000156", - "ijer": "http://www.meijer.com/catalog/search_command.cmd?keyword=\u0002&tierId=\u00010", - "_irl": "//www.reddit.com/r/me_irl/search?q=\u0002&restrict_sr=on\u00010", - "ligrana": "//www.meligrana.com/es/alojamiento-turismo/buscar-alojamiento.asp?q=\u0002 \u00010", - "llowviews": "//mellowviews.com/search/?query=\u0002\u00010", - "lopero": "//www.melopero.com/?s=\u0002&post_type=product\u00010", - "lorra": "//www.melorra.com/jewellery/search/?q=\u0002:\u00010", - "lpa": "http://melpa.milkbox.net/#/?q=\u0002\u000119", - "lvyl": "http://melvyl.worldcat.org/search?q=\u0002\u00010", - "midex": "http://www.memidex.com/\u0002\u00010", - "moryalpha": "http://en.memory-alpha.org/wiki/Special:Search?search=\u0002&fulltext=Search&resultsLang=en\u000123", - "morybeta": "http://memory-beta.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "moryexpress": "http://www.memoryexpress.com/Search/Products?Search=\u0002\u00010", - "mrise": "http://www.memrise.com/courses/english/?q=\u0002\u00010", - "nadoc": "//menadoc.bibliothek.uni-halle.de/search/quick?query=\u0002\u00010", - "nards": "//www.menards.com/main/search.html?search=\u0002\u000140", - "ndeley": "http://www.mendeley.com/research-papers/search/?query=\u0002\u00010", - "ndesah": "//www.mediamarkt.de/de/search.html?query=\u0002\u00010", - "neame": "//www.meneame.net/search?q=\u0002\u00010", - "nnlex": "http://www.mennlex.de/doku.php?do=search&id=\u0002\u00010", - "nupages": "http://www.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "rcadolibre": { - "\u0010": "http://mercadolibre.com/?q= \u0002\u000114", - "ar": "http://listado.mercadolibre.com.ar/\u0002#D[A:\u0002]\u000177", - "cl": "http://listado.mercadolibre.cl/\u0002#D[A:\u0002]\u00010", - "mx": "//listado.mercadolibre.com.mx/\u0002\u000119" - }, - "rcadolivre": "http://lista.mercadolivre.com.br/\u0002\u0001123", - "rcari": { - "\u0010": "//www.mercari.com/search/?keyword=\u0002\u000119", - "jp": "//www.mercari.com/jp/search/?keyword=\u0002\u0001175" - }, - "rcola": "//search.mercola.com/results.aspx?q=\u0002 \u00010", - "rcurynews": "http://www.mercurynews.com/circare/html/sca_template.jsp?runSearch=true&query=\u0002&searchButton.x=0&searchButton.y=0&searchButton=Search&view=entiresitesppublished\u00010", - "rit": { - "\u0010": "http://meritbadge.org/wiki/index.php/Special:Search?search=\u0002\u00010", - "badge": "http://meritbadge.org/wiki/index.php/Special:Search?search=\u0002&go=Go\u00010" - }, - "rlin": "http://merlin.pl/browse/search.html?offer=O&phrase=\u0002\u00010", - "rriamwebster": "//www.merriam-webster.com/dictionary/\u0002\u000171", - "ucrespo": "http://meucrespo.com.br/?s=\u0002\u00010", - "yers": "http://woerterbuchnetz.de/Meyers/?lemme=\u0002\u00010" - }, - "f": { - "c": "http://myfigurecollection.net/browse.v4.php?keywords=\u0002\u0001188", - "g": "http://www.mobafire.com/league-of-legends/\u0002-guide\u000111", - "l": "http://www.muscleforlife.com/?s=\u0002 \u00010", - "m": "http://mfm.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "\u0010": "//morguefile.com/search/morguefile/1/\u0002/pop\u00010", - "p": "http://www.myfitnesspal.com/food/search?search=\u0002\u00010", - "x": "http://www.morfix.co.il/\u0002\u00018", - "ac": "//www.mindfactory.de/search_result.php?select_search=0&search_query=\u0002\u00010", - "de": "http://www.mindfactory.de/search_result.php?search_query=\u0002&x=0&y=0\u00014" - }, - "\u0010": "http://maps.google.com/maps?q=\u0002\u00012062", - "h": { - "r": "//www.reddit.com/r/MonsterHunter/search?q=\u0002&restrict_sr=on\u00010", - "\u0010": "http://monsterhunter.wikia.com/wiki/index.php?search=\u0002\u00010", - "lo": "http://www.mentalhealthlaw.co.uk/index.php?search=\u0002\u00010", - "wiki": "http://monsterhunter.wikia.com/wiki/index.php?search=\u0002&fulltext=Search\u00010" - }, - "i": { - "b": "http://search.mibbit.com/search/\u0002\u00010", - "k": "//wiki.mikrotik.com/index.php?search=\u0002&title=Special:Search&go=Go\u00010", - "\u0010": "http://www.myinstants.com/search/?name=\u0002\u00017", - "t": { - "\u0010": "http://student.mit.edu/catalog/search.cgi?search=\u0002\u00014", - "lib": "//lib.mit.edu/search/bento?q=\u0002\u00010", - "ocw": "http://search.mit.edu/search?site=ocw&client=mit&output=xml_no_dtd&proxystylesheet=http://ocw.mit.edu/search/google-ocw.xsl&proxyreload=1&q=\u0002\u00010", - "vid": "http://video.mit.edu/search/?q=\u0002\u00010" - }, - "x": { - "\u0010": "//www.cogimix.com/?q=\u0002\u00010", - "er": { - "\u0010": "http://www.drinksmixer.com/search/?q=\u0002&d=1&p=1\u00010", - "gy": "http://mixergy.com/?s=\u0002\u00010" - }, - "esdb": "http://www.mixesdb.com/db/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00014" - }, - "di": "//freemidi.org/search?q=\u0002\u00010", - "ll": { - "\u0010": "//millionshort.com/search?keywords=\u0002&remove=1000000\u00010", - "ersv": "//www.millersville.edu/search-results.php?query=\u0002\u00010", - "ionshort": "http://millionshort.com/search.php?q=\u0002&remove=1000k\u00010" - }, - "me": "http://mimeapplication.net/search?q=\u0002\u00010", - "nt": "http://linuxmint.com/search.php?query=\u0002&search=1\u00014", - "chaels": "http://www.michaels.com/search?q=\u0002\u00014", - "chaelis": { - "\u0010": "http://michaelis.uol.com.br/busca?r=1&f=0&t=1&palavra=\u0002\u000110", - "pt": "http://michaelis.uol.com.br/busca?r=1&f=1&t=0&palavra=\u0002\u00015" - }, - "crocenter": "http://www.microcenter.com/search/search_results.phtml?Ntt=\u0002\u000151", - "crosoft": "http://search.microsoft.com/results.aspx?mkt=en-US&form=MSHOME&setlang=en-US&q=\u0002\u000115", - "dday": "//www.middaysomewhere.com/prices/search?q=\u0002\u00010", - "dori": "//midori-browser.org?term=\u0002\u00010", - "ghtyape": "http://www.mightyape.co.nz/search/?i=All&prev=&s=\u0002&SearchButton=Search\u00010", - "gros_de": "//search.migros.ch/de/q:\u0002\u00010", - "gros_fr": "//search.migros.ch/de/q:\u0002\u00010", - "gros_it": "//search.migros.ch/de/q:\u0002\u00010", - "itopia": "http://miitopia.wikia.com/wiki/\u0002\u00010", - "jisou": "//mijisou.com/?q=\u0002\u00010", - "jnserie": "//www.mijnserie.nl/zoeken/?search=\u0002\u00010", - "litary": { - "\u0010": "//www.military-stuff.org/?s=\u0002\u00010", - "surplus": "http://blackstarsurplus.com/\u0002\u00010" - }, - "log": "http://milog.co.il/\u0002\u00014", - "movrste": "//www.mimovrste.com/iskanje?s=\u0002\u00014", - "ndf": { - "\u0010": "//www.mindfactory.de/search_result.php?select_search=0&search_query=\u0002\u00010", - "actory": "//www.mindfactory.de/search_result.php?select_search=0&search_query=\u0002\u00010" - }, - "nds": "//www.minds.com/search;q=\u0002\u00010", - "ndat": "http://www.mindat.org/search.php?search=\u0002\u000122", - "necraft": { - "\u0010": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001341", - "de": "http://minecraft-de.gamepedia.com/index.php?search=\u0002&title=Spezial%3ASuche&go=Seite\u00010", - "-de": "http://minecraft-de.gamepedia.com/index.php?search=\u0002\u00010", - "-ru": "//minecraft-ru.gamepedia.com/index.php?search=\u0002\u00010", - "seeds": "http://minecraft-seeds.net/seeds/search/?q=\u0002\u00010", - "wiki": "http://minecraft.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000142" - }, - "necratwiki": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001341", - "neforum": "//www.minecraftforum.net/search?search=\u0002\u00010", - "ngpao": "//news.mingpao.com/cfm/search2.cfm?keywords=\u0002\u00010", - "niclip": "http://www.miniclip.com/games/en/search.php?query=\u0002\u00010", - "nigame": "http://www.miniclip.com/games/search/en/?query=\u0002#t-sd\u00010", - "niinthebox": "http://www.miniinthebox.com/index.php?main_page=advanced_search_result&inc_subcat=1&search_in_description=0&keyword=\u0002\u00010", - "nimins": "//www.minimins.com/index.php?search/search&keywords=\u0002:\u00010", - "niology": "http://miniology.com/?s=\u0002&submit=Search\u00010", - "nsal": "http://cerca.ministerosalute.it/search?q=\u0002&client=defaultPORT_front-end&proxystylesheet=defaultPORT_front-end&site=default_collection&output=xml_no_dtd&filter=p\u00010", - "nsearch": "//minimalsearch.com/search?q=\u0002\u00015", - "rabile": "http://www.mirabileweb.it/ricerca_semplice.aspx?tsearch=\u0002\u00010", - "ronet": "//www.mironet.cz/Productlist/showSearch?EXPS=\u0002\u00010", - "ses": "//mises.org/search/site/\u0002\u00010", - "stborn": "http://mistborn.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "sumi": "//us.misumi-ec.com/vona2/result/?Keyword=\u0002\u00016" - }, - "k": { - "g": "//sammlungonline.mkg-hamburg.de/de/search?s=\u0002\u00010", - "\u0010": "http://mechanicalkeyboards.com/search.php?switch_id=ALL&size=ALL&keyword=\u0002 \u00017", - "m": "//www.cardmarket.com/en/Magic/Products/Search?searchString=\u0002\u000148", - "p": "//search.mlp.cz/cz/?query=\u0002&kde=all#/c_s_ol=query-eq:\u0002\u00010", - "rw": "http://mariokart.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "tw": "http://www.marketwatch.com/investing/stock/\u0002\u0001215" - }, - "l": { - "b": { - "\u0010": "http://mlb.mlb.com/searchGlobalSearchServlet?club=mlb&search_mode=1&searchtypeid=-1&page_number=1&query_text1=\u0002\u000175", - "p": "http://espn.go.com/mlb/players?=1&search=\u0002 \u00010", - "r": "http://lista.mercadolivre.com.br/\u0002 \u0001267" - }, - "d": { - "b": "http://www.mldb.org/search?mq=\u0002\u00013", - "\u0010": "http://www.learnersdictionary.com/definition/\u0002\u00010", - "o": "http://listado.mercadolibre.com.do/\u0002 \u00010" - }, - "f": "//forum.manjaro.org/search?q=\u0002\u00010", - "g": { - "b": "http://mlgb3.bodleian.ox.ac.uk/mlgb/?search_term=\u0002\u00010", - "\u0010": "//mylaptopguide.com/?s=\u0002\u00010" - }, - "\u0010": "//google.com/maps/search/\u0002?force=canvas\u000146", - "l": "//www.liquormarts.ca/search-products/%25/\u0002\u00010", - "n": "//find.minlib.net/iii/encore/search/C__S\u0002\u00017", - "o": "http://www.mageialinux-online.org/search/search.php#results?q=\u0002&search_submit=Recherche\u00010", - "p": { - "a": "http://listado.mercadolibre.com.pa/\u0002 \u00010", - "e": { - "\u0010": "http://listado.mercadolibre.com.pe/\u0002 \u00010", - "s": "//vsearch.nlm.nih.gov/vivisimo/cgi-bin/query-meta?v%3Aproject=medlineplus-spanish&v%3Asources=medlineplus-spanish-bundle&query=\u0002\u00010" - }, - "f": "//mlpforums.com/search/?q=\u0002\u00010", - "\u0010": "http://mlp.wikia.com/wiki/Special:Search?search=\u0002\u00017", - "it": "//multiplayer.it/ricerca/?q=\u0002\u00010" - }, - "s": "http://www.mlssoccer.com/search/\u0002\u00010", - "ar": "http://listado.mercadolibre.com.ar/\u0002\u0001552", - "at": "http://www.mlat.uzh.ch/MLS/advsuchergebnis.php?suchbegriff=\u0002&mode=SPH_MATCH_EXTENDED2&corpus=all\u00010", - "cl": "http://listado.mercadolibre.cl/\u0002 \u000120", - "co": "http://listado.mercadolibre.com.co/\u0002 \u00019", - "cr": "http://listado.mercadolibre.co.cr/\u0002 \u00010", - "ec": "http://listado.mercadolibre.com.ec/\u0002 \u00010", - "mx": "//listado.mercadolibre.com.mx/\u0002\u000119", - "uy": "http://listado.mercadolibre.com.uy/\u0002\u00010", - "ve": "http://listado.mercadolibre.com.ve/\u0002 \u000174", - "ibreco": "//listado.mercadolibre.com.co/\u0002\u00016", - "ivre": "http://lista.mercadolivre.com.br/\u0002#D[A:\u0002]\u000123" - }, - "m": { - "c": "http://www.mcmaster.com/#\u0002 \u0001106", - "e": "//metromatinee.com/search/\u0002\u00010", - "f": "//www.myminifactory.com/search/?query=\u0002&searchType=1\u000118", - "i": "http://www.mymovies.it/database/ricercalibera/default.asp?q=\u0002&cx=partner-pub-1699801751737986%3Ax7j961-1g3m&cof=FORID%3A9&ie=ISO-8859-1&sa=Cerca \u00010", - "k": "//www.miniaturemarket.com/searchresults?q=\u0002\u00010", - "l": { - "\u0010": "http://myanimelist.net/manga.php?q=\u0002\u000171", - "s": "http://find.minlib.net/iii/encore/search?formids=target&lang=eng&suite=def&reservedids=lang%2Csuite&submitmode=&submitname=&target=\u0002\u00010", - "afleur": "//mmlafleur.com/shop/catalogsearch/result/?q=\u0002\u00010" - }, - "\u0010": "http://www.macmillandictionary.com/us/search/british/direct/?q=\u0002\u000158", - "m": "//www.mrmoneymustache.com/?s=\u0002\u00013", - "r": "//na.whatismymmr.com/\u0002\u00010", - "z": "//www.cardmarket.com/en/Magic/MainPage/browseUserProducts?idCategory=1&idUser=25674&resultsPage=0&cardName=\u0002\u00013", - "nl": "//www.moviemeter.nl/site/search?q=\u0002\u00010", - "ol": "//medieval.bodleian.ox.ac.uk/?q=\u0002\u00016", - "oz": "//musicmoz.org/search/search.cgi?search=\u0002\u00010", - "anga": "http://muslimmanga.org/?lang=en&s=\u0002\u00010", - "atch": "//www.musixmatch.com/search/\u0002\u00010", - "o13": "//mmo13.com/search/\u0002\u00010", - "oga": "//www.mmoga.de/advanced_search.php?keywords=\u0002\u000135" - }, - "n": { - "b": "//minimalistbaker.com/?s=\u0002\u00010", - "f": "//www.makenewfriendspodcast.com/?s=\u0002\u00010", - "\u0010": "http://www.medicinanet.com.br/pesquisas/\u0002.htm\u00013", - "m": "//www.nexusmods.com/morrowind/search/?gsearch=\u0002&gsearchtype=mods\u00016", - "p": "http://manpages.org/\u0002\u00014", - "t": "http://www.medicalnewstoday.com/search?q=\u0002 \u00010", - "aver": "//m.search.naver.com/search.naver?query=\u0002\u00010", - "nthbx": "//mnnthbx.com/?post_type=product&s=\u0002\u00010" - }, - "o": { - "d": { - "\u0010": "//modarchive.org/index.php?request=search&query=\u0002&submit=Find&search_type=filename_or_songtitle\u00010", - "x": "//docs.modx.org/current/en/search?q=\u0002\u00010", - "db": "http://moddb.com/search?q=\u0002\u000113", - "archive": "//modarchive.org/index.php?request=search&query=\u0002&submit=Find&search_type=filename_or_songtitle\u00010", - "cloth": "http://www.modcloth.com/shop/search?keyword=\u0002 \u00010", - "dota": "//moddota.com/forums/search?Search=\u0002\u00010", - "es4u": { - "\u0010": "//www.modes4u.com/japanese/\u0002\u00010", - "_it": "//www.modes4u.com/carino/\u0002\u00010" - }, - "help": "http://www.reddit.com/r/modhelp/search?q=\u0002\u00010", - "ule": "//en.wikipedia.org/wiki/Module:\u0002\u00010", - "ulargrid": "//www.modulargrid.net/e/modules/browser?SearchName=\u0002\u00016" - }, - "j": { - "\u0010": "//www.madeofjeans.com/search/?q=\u0002\u000110", - "o": "http://boxofficemojo.com/search/?q=\u0002\u00013", - "angbug": "//bugs.mojang.com/issues/?jql=text ~ '\u0002'\u00015", - "eek": "//www.mojeek.com/search?q=\u0002\u000125", - "posao": "//www.moj-posao.net/Pretraga-Poslova/?keyword=\u0002&area=&category=\u00010" - }, - "l": { - "\u0010": "//paikat.te-palvelut.fi/tpt/?searchPhrase=\u0002\u00010", - "w": "http://www.webqc.org/mmcalc.php?compound=\u0002\u00010", - "y": "http://moly.hu/kereses?q=\u0002\u00016", - "lat": "//www.mollat.com/recherche?requete=\u0002\u00013" - }, - "\u0010": "http://mathoverflow.net/search?q=\u0002\u00017", - "o": { - "c": { - "\u0010": "//www.class-central.com/search?q=\u0002\u00010", - "s": "//www.class-central.com/search?q=\u0002\u00010" - }, - "\u0010": "//www.moo.com/search?query=\u0002\u000112", - "n": { - "\u0010": "//moonmonday.space/?s=\u0002\u00010", - "pig": "//www.moonpig.com/uk/testpages/search/ab277/?q=\u0002\u00010" - }, - "ji": "http://mooji.tv/freemedia/?_fm_s=\u0002\u00010" - }, - "z": { - "\u0010": "//www.google.com/cse?cx=002443141534113389537%3Aysdmevkkknw&cof=FORID%3A0&q=\u0002\u000113", - "pb": "//phonebook.mozilla.org/?search/\u0002\u00010", - "sf": "http://searchfox.org/mozilla-central/search?q=\u0002\u00010", - "addon": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000153", - "browser": "http://www.mozbrowser.nl/forum/search.php?keywords=\u0002\u00010", - "dxr": "//dxr.mozilla.org/mozilla-central/search?q=\u0002\u00010", - "illasupport": "//support.mozilla.org/search?q=\u0002\u00010", - "illians": "//mozillians.org/en-US/search/?q=\u0002\u00010", - "test": "//observatory.mozilla.org/analyze/\u0002\u00018", - "wiki": "//wiki.mozilla.org/index.php?search=\u0002\u00010" - }, - "by": { - "\u0010": "http://www.mobygames.com/search/quick?q=\u0002\u0001123", - "games": "http://www.mobygames.com/search/quick?q=\u0002&x=0&y=0\u000190", - "thes": "http://www.moby-thesaurus.org/search?q=\u0002\u00010" - }, - "ex": "//www.moex.com/en/issue.aspx?code=\u0002\u00010", - "pi": "//www.moviepilot.de/suche?utf8=%E2%9C%93&q=\u0002\u00015", - "re": "//duckduckgo.com/?q=site:https://www.mobileread.com%20\u0002\u00010", - "vl": "//movielens.org/explore?q=\u0002\u00010", - "13fps": "//masterof13fps.de/forums/search/46335/?q=\u0002\u00010", - "bafire": { - "\u0010": "http://www.mobafire.com//?q=\u0002:\u000123", - "builds": "http://www.mobafire.com/league-of-legends/browse/?q=\u0002: \u00010" - }, - "bce": "//mobilecentre.am/search/?searchData=\u0002\u00010", - "bcup": "//mobcup.net/search?q=\u0002\u00010", - "bileday": "//www.mobileday.in/search/label/\u0002\u00010", - "bilefriendly": "//search.google.com/test/mobile-friendly?url=\u0002\u00010", - "bilegeeks": "http://www.mobilegeeks.com/?s=\u0002\u00010", - "bileread": "//www.mobileread.com/forums/gcs.php?cx=011403329271260343335%3Amzng3fi-cti&q=\u0002&sa=Search&siteurl=www.mobileread.com%2F\u00010", - "birum": "//mobirumdiscovery.com/search?q=\u0002\u00010", - "edict": "//www.moedict.tw/\u0002\u000112", - "egirl": "//zh.moegirl.org/Special:Search?search=\u0002\u000111", - "fakult": "//www.mofakult.ch/catalogsearch/result/?q=\u0002\u00010", - "glix": "//www.moglix.com/search?controller=search&orderby=position&orderway=desc&search_query= \u0002&submit_search=Search\u00010", - "nash": "//www.monash.edu/search?query=\u0002\u00010", - "ncul": "http://moncul.org/?s=\u0002\u00010", - "nde": { - "\u0010": "//www.lemonde.fr/recherche/?search_keywords=\u0002\u000113", - "fr": "//www.lemonde.fr/recherche/?keywords=\u0002\u00016" - }, - "ndou": "//www.mondou.com/en-CA/Search?keywords=\u0002\u00010", - "ndadoristore": "http://www.mondadoristore.it/search/?tpr=10&g=\u0002&swe=N&search-input=active\u00010", - "ndofox": "//www.mondofox.it/?q=\u0002\u00010", - "ney": { - "\u0010": "http://moneybadger.stocktwits.com/?s=\u0002\u00010", - "control": "http://www.moneycontrol.com/stocks/cptmarket/compsearchnew.php?search_data=&cid=&mbsearch_str=&topsearch_type=1&search_str=\u0002\u00010", - "land": "//www.moneyland.ch/search?q=\u0002\u00010" - }, - "ngo": { - "\u0010": "http://docs.mongodb.org/manual/search/?query=\u0002\u00013", - "db": "http://docs.mongodb.org/manual/search/?query=\u0002\u00013" - }, - "nolecte": "http://blog.monolecte.fr/?s=\u0002 \u00010", - "noprice": "http://www.monoprice.com/products/search.asp?keyword=\u0002\u00015", - "nster": { - "\u0010": "http://jobsearch.monster.com/Search.aspx?re=130&cy=us&brd=1&JSNONREG=1&q=\u0002&rad=20&rad_units=miles\u00010", - "cat": "//www.monstercat.com/search?term=\u0002\u00010", - "coupons": "//monster-coupons.com/search.php?q=\u0002\u00010" - }, - "nth": "//duckduckgo.com/?q=\u0002&df=m\u00010", - "raneducation": "http://www.moraneducation.com/index.php?route=product/search&search=\u0002 \u00010", - "rbo": { - "\u0010": "//morbotron.com/?q=\u0002\u00010", - "tron": "//morbotron.com/?q=\u0002\u00010" - }, - "rchstore": "//www.morchstore.com/?post_type=product&s=\u0002\u00010", - "rfix": "http://www.morfix.co.il/\u0002\u00018", - "rmon": "//www.mormon.org/searchresults#?query=\u0002\u00010", - "rningstar": "//www.morningstar.com/search.html?q=\u0002\u00010", - "saik": "//ingressmosaik.com/search?f=\u0002\u00010", - "saicmarble": "//mosaicmarble.com/products/search?query=\u0002\u00010", - "shville": "http://www.moshville.co.uk//?s=\u0002\u00010", - "staql": "//mostaql.com/freelancers?keyword=\u0002\u00010", - "tonet": "http://www.motonet.fi/fi/haku?q=\u0002\u00010", - "torsport": "http://www.motorsport.com/all/search/?q=\u0002\u00010", - "untainwarehouse": "//www.mountainwarehouse.com/search/\u0002/\u00010", - "user": "http://www.mouser.com/Search/Refine.aspx?Keyword=\u0002\u0001123", - "vies": "//www.atomtickets.com/search?query=\u0002\u00010", - "viechat": "//moviechat.org/search?name=\u0002\u000112", - "viefone": "//www.moviefone.com/search/\u0002/\u00010", - "vieguide": "http://www.movieguide.org/?s=\u0002&submit.x=0&submit.y=0&submit=Search&key=hs\u00010", - "viemeter": "//www.moviemeter.nl/site/search?q=\u0002\u00010", - "viepilot": { - "m": "http://m.moviepilot.de/suche?utf8=✓&q=\u0002\u00010", - "\u0010": "http://www.moviepilot.de/suche?utf8=✓&q=\u0002\u00016" - }, - "vieweb": "http://www.movieweb.com/search?search=\u0002\u00010", - "xo.ir": "http://www.moxo.ir/?s=\u0002 \u00010" - }, - "p": { - "g": { - "\u0010": "http://www.mpg.de/en/search?utf8=%E2%9C%93&searchfield=\u0002\u00010", - "de": "http://www.mpg.de/en/search?utf8=%E2%9C%93&searchfield=\u0002\u00010", - "pure": "http://pubman.mpdl.mpg.de/pubman/faces/SearchResultListPage.jsp?cql=escidoc.objecttype%3D%22item%22+AND+escidoc.content-model.objid%3D%22escidoc%3Apersistent4%22+AND+%28%28escidoc.metadata%3D%22\u0002%22%29+OR+%28%28escidoc.any-identifier%3D%22\u0002%22+OR+escidoc.property.latest-release.objid%3D%22\u0002%22%29%29+%29\u00010", - "rena": "http://rena.mpdl.mpg.de/rena/Search/Results?lookfor=\u0002\u00010" - }, - "l": { - "a": "http://losangeles.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "\u0010": "//matplotlib.org/search.html?q=\u0002 \u00016" - }, - "\u0010": "http://www.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "bo": "http://boston.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "ch": "http://chicago.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "dc": "http://washingtondc.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "fl": "http://southflorida.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "ny": "http://www.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "pb": "//www.medienpaedagogik-praxis.de/?s=\u0002\u00010", - "ph": "http://philadelphia.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "sf": "http://sanfrancisco.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010", - "ora": "http://mpora.com/search/videos?q=\u0002\u00010", - "roj": "//www.mountainproject.com/search?q=\u0002\u000122" - }, - "q": "http://www.mapquest.com/?q=\u0002\u00015", - "r": { - "e": { - "f": "//mathscinet.ams.org/mathscinet-mref?ref=\u0002\u00010", - "\u0010": "//m.reddit.com/search?q=\u0002\u00010" - }, - "g": "//go.mail.ru/msearch?q=\u0002\u00010", - "i": "//mri.iop.kcl.ac.uk/mediawiki/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "\u0010": "http://www.macrumors.com/search?s=\u0002\u0001103", - "w": "//www.mrw.es/seguimiento_envios/MRW_resultados_consultas.asp?modo=nacional&envio=\u0002\u00010", - "qe": "http://www.mrqe.com/search?utf8=%E2%9C%93&q=\u0002 \u00010", - "money": "//www.mrmoneymustache.com/?s=\u0002\u00013", - "phone": "//www.themrphone.com/search/\u0002\u00010", - "porter": "//www.mrporter.com/mens/search?keywords=\u0002\u00010" - }, - "s": { - "2": "http://forums.maplestory2.nexon.net/search?Search=\u0002\u00010", - "a": { - "c": { - "\u0010": "//academic.microsoft.com/search?q=\u0002&f=&orderBy=0&forceFallback=true\u00010", - "ademic": "http://academic.research.microsoft.com/Search?query=\u0002&s=0\u00010" - }, - "\u0010": "//academic.microsoft.com/search?q=\u0002\u00010", - "mmler": "//www.musik-sammler.de/search/\u0002/\u00010", - "nctuary": "http://www.manga-sanctuary.com/recherche.php?keywords=\u0002\u00010" - }, - "c": { - "\u0010": "http://www.ams.org/mathscinet/search/publications.html?pg4=ALLF&s4=\u0002\u00015", - "pp": "//docs.microsoft.com/en-us/search/index?search=\u0002&scope=C%2B%2B\u00010", - "direct": "//www.mscdirect.com/browse/?searchterm=\u0002\u00010", - "ore": "//duckduckgo.com/?q=site%3Amusescore.org+\u0002&ia=web\u00010" - }, - "d": { - "\u0010": "//docs.microsoft.com/en-us/search/index?search=\u0002\u000192", - "n": "http://social.msdn.microsoft.com/Search/en-US?query=\u0002&ac=8\u000153", - "s": "http://www.sciencelab.com/search.php?q=\u0002\u00010", - "jp": "//www.msdmanuals.com/ja-jp/ホーム/SearchResults?query=\u0002\u00010", - "ocs": "//docs.microsoft.com/en-us/search/index?search=\u0002\u000192", - "otnet": "//docs.microsoft.com/en-us/search/index?search=\u0002&scope=.NET\u000141" - }, - "e": { - "\u0010": "//magento.stackexchange.com/search?q=\u0002\u00010", - "q": "http://etfs.morningstar.com/quote?t=\u0002\u00010" - }, - "g": "//www.messenger.com/t/\u0002\u0001755", - "h": "http://mashable.com/follow/search/?q=\u0002&commit=Search\u00010", - "i": "//us.msi.com/search/\u0002\u00010", - "\u0010": "http://search.microsoft.com/results.aspx?mkt=en-US&form=MSHOME&setlang=en-US&q=\u0002\u000115", - "n": { - "m": "http://investing.money.msn.com/investments/stock-price?Symbol=\u0002 \u00010", - "\u0010": "//www.msn.al/?s=\u0002\u000110", - "bc": "http://www.msnbc.com/search/\u0002\u0001108" - }, - "o": { - "\u0010": "//meta.stackoverflow.com/search?q=\u0002\u00010", - "cial": "//mastodon.social/tags/\u0002\u00010" - }, - "q": "http://quote.morningstar.com/stock/s.aspx?t=\u0002\u00010", - "t": { - "\u0010": "http://www.microsofttranslator.com/bv.aspx?a=\u0002\u00016", - "ack": "//math.stackexchange.com/search?q=\u0002\u00010", - "ore": "//www.microsoft.com/en-us/search?q=\u0002\u00010" - }, - "y": "http://www.msy.com.au/saonline/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Go\u00010", - "fq": "http://www.morningstar.com/funds/xnas/\u0002/quote.html\u00010", - "kb": "//support.microsoft.com/en-us/search?query=\u0002\u00013", - "pa": { - "\u0010": "http://mspaintadventures.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "wiki": "http://mspaintadventures.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010" - }, - "pu": "http://mspoweruser.com/?s=\u0002\u00010", - "rd": "http://www.musicradar.com/search?searchTerm=\u0002:\u00010", - "ui": "//www.meteoswiss.admin.ch/home/search.html?query=\u0002 \u00010", - "malware": "http://www.microsoft.com/security/portal/Threat/Encyclopedia/Search.aspx?query=\u0002\u00010", - "mvps": "http://msmvps.com/search/SearchResults.aspx?q=\u0002&o=Relevance\u00010", - ".net": "//docs.microsoft.com/en-us/dotnet/api/?view=netframework-4.7&term=\u0002\u000112", - "sql": "//social.technet.microsoft.com/Search/en-US/sqlserver?query=\u0002&Refinement=30&ac=4\u00010", - "ulibrary": "//lib.msu.edu/searchresults/?Ntt=\u0002\u00010", - "update": "//www.catalog.update.microsoft.com/Search.aspx?q=\u0002\u00010" - }, - "t": { - "b": "//www.mtbproject.com/search?q=\u0002\u00015", - "f": { - "\u0010": "//www.moestuinforum.nl/search/gsearch_body.html?q=\u0002\u00010", - "orums": "//forum.minetest.net/search.php?keywords=\u0002\u00010" - }, - "g": { - "g": { - "f": "http://www.mtggoldfish.com/q?query_string=\u0002\u00017", - "\u0010": "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[\u0002]\u0001138" - }, - "h": "http://mtg-hunter.com/?q=\u0002\u00010", - "\u0010": "//scryfall.com/search?q=\u0002\u00011393", - "s": "http://mtgsalvation.gamepedia.com/?search=\u0002\u000142", - "w": { - "\u0010": "//mtg.wtf/card?q=\u0002\u000144", - "tf": "//mtg.wtf/card?q=\u0002\u000144", - "iki": "http://mtgsalvation.gamepedia.com/index.php?search=\u0002\u000141" - }, - "cm": "//www.cardmarket.com/en/Magic/Products/Search?searchString=\u0002\u000148", - "otraders": "http://www.mtgotraders.com/store/search.php?q=\u0002&x=0&y=0\u00010" - }, - "k": "//www.mturk.com/mturk/searchbar?selectedSearchType=hitgroups&searchWords=\u0002\u00010", - "\u0010": "//www.multitran.com/m.exe?s=\u0002\u0001105", - "n": "//www.mountainproject.com/search?q=\u0002\u000122", - "r": { - "\u0010": "http://mwsgsa01.mtr.com.hk/search?site=default_collection&output=xml_no_dtd&client=mtr_eng&proxystylesheet=mtr_eng&proxyreload=1&ie=big5&oe=UTF-8&q=\u0002\u00010", - "l": "//material.io/search.html?q=\u0002\u00010" - }, - "s": "http://www.modthesims.info/browse.php?tag=\u0002\u00018", - "t": "http://www.multitracks.com/search/?q=\u0002\u00010", - "u": "//www.mtu.edu/search/?q=\u0002\u00010", - "v": "http://www.mtv.com/search/?searchterm=\u0002\u00010", - "w": "http://wiki.minetest.net/index.php?search=\u0002\u00010", - "cn": "http://www.mandarintools.com/cgi-bin/wordlook.pl?word=\u0002&where=whole\u00010", - "en": "http://www.mandarintools.com/cgi-bin/wordlook.pl?word=\u0002&searchtype=english&where=whole\u00010", - "awiki": "//wiki.multitheftauto.com/index.php?title=Special%3ASearch&profile=default&fulltext=Search&search=\u0002\u00010", - "content": "//mt-content-search-engine.000webhostapp.com/?search=\u0002&do_search=\u00014", - "mod": "//content.minetest.net/packages/?q=\u0002\u00018" - }, - "u": { - "a": "http://makeupalley.com/search.asp?q=\u0002\u00010", - "i": "//material-ui.com/api/\u0002\u000143", - "k": { - "e": "//www.google.co.uk/maps/?hl=en&q=\u0002\u00014", - "\u0010": "//www.google.co.uk/maps/?hl=en&q=\u0002\u00014" - }, - "\u0010": "http://macupdate.com/find/mac/\u0002\u00014", - "o": "//www.makeuseof.com/?s=\u0002\u00016", - "bi": "http://mubi.com/search/results?cx=016360985607050269103%3Acmmod4epzpo&cof=FORID%3A10&ie=UTF-8&q=\u0002\u00010", - "ff": "//www.muffwiggler.com/forum/search.php?search_keywords=\u0002&search_terms=extended&search_author=&search_forum=-1&search_time=0&search_fields=all&sort_by=0&sort_dir=desc&show_results=topics&return_chars=200\u00010", - "rl": "//murlengine.com/api/en/search.php?q=\u0002\u00010", - "dah": "//m.mudah.my/list?q=\u0002&ca=9_3_s&sa=&cg=&catname=All+Categories&o=1&f=p&srch=1&so=1\u00010", - "gshots": "http://mugshots.com/search.html?q=\u0002\u00014", - "ltcolib": "//multcolib.org/search/site/\u0002\u00010", - "ltitran": "http://www.multitran.ru/c/m.exe?CL=1&s=\u0002&l1=1\u000111", - "ltitron": "//www.multitronic.fi/en/search/results#lang=en&c=search&keywords=\u0002\u00010", - "ngfali": "http://mungfali.com/explore.php?q=\u0002\u00010", - "ppet": "http://muppet.wikia.com/wiki/Special:Search?search=\u0002\u00014", - "ragon": "//muragon.com/search/?ie=UTF-8&q=\u0002&sa=検索\u00010", - "ralpsi": "http://muralpsicologia.com.br/eventos/pesquisa?s=\u0002\u00010", - "rfie": "//www.murfie.com/search?search=\u0002\u00010", - "scdevforum": "http://forums.musculardevelopment.com?q=\u0002: \u00010", - "sescore": "http://musescore.com/sheetmusic?text=\u0002\u000192", - "sicr": "http://www.musicradar.com/search?searchTerm=\u0002 \u00010", - "sikm": "http://www.musik-meisinger.de/1/advanced_search_result.php?keywords=\u0002 \u00010", - "sicaneto": "http://www.musicaneto.com/?s=\u0002\u00010", - "sicbrainz": "http://musicbrainz.org/search/textsearch.html?type=artist&query=\u0002&handlearguments=1\u0001207", - "siciansfriend": "http://www.musiciansfriend.com/search/search.jsp?sB=r&question=\u0002\u00010", - "sicme": "http://www.musicme.com/page.php?q=\u0002\u00010", - "sicmap": "http://www.music-map.com/\u0002\u00010", - "sicmoz": "//musicmoz.org/search/search.cgi?search=\u0002\u00010", - "sicstack": "http://www.musicstack.com/show.cgi?find=\u0002\u00010", - "sicxm": "//www.musixmatch.com/search/\u0002\u00010", - "sikazblai": "http://eu.musikazblai.com/foro/search.php?q=\u0002\u00010", - "siker-board": "//www.google.de/search?q=\u0002+site%3Awww.musiker-board.de&oq=Schaffer+site%3Awww.musiker-board.de\u00010", - "simundo": "http://www.musimundo.com/Busqueda?cbrand=0&title=0&artist=0&categories=&search=\u0002&typeGrid=grid\u00010", - "sipedia": "http://www.musipedia.org/result.html?tx_mpsearch_pi1[pc]=\u0002&tx_mpsearch_pi1[submit_button]=Search\u00010", - "sixmatch": { - "\u0010": "//www.musixmatch.com/search/\u0002\u00010", - "de": "//www.musixmatch.com/de/search/\u0002\u00010" - }, - "slimmanga": "http://muslimmanga.org/?lang=en&s=\u0002\u00010", - "sopen": "http://musopen.org/search?q=\u0002\u00010", - "usikoiden": "//muusikoiden.net/tori/haku.php?keyword=\u0002&title_only=0&location=all&province=&city=&type=all&price_min=&price_max=&category=all&with_image=0\u00010", - "ycomputer": "//www.muycomputer.com/?s=\u0002\u00010", - "ylinux": "//www.muylinux.com/?s=\u0002\u00010", - "zikersk": "//www.muziker.sk/search?q=\u0002\u00010", - "zli": "//search.muz.li/search/\u0002\u00010", - "zofon": "http://muzofon.com/search/\u0002\u00010" - }, - "v": { - "\u0010": "http://www.myvideo.de/Videos_A-Z?searchWord=\u0002\u000123", - "n": { - "\u0010": "//mvnrepository.com/search?q=\u0002\u0001244", - "rep": { - "\u0010": "http://mvnrepository.com/search.html?query=\u0002:\u00015", - "ository": "http://mvnrepository.com/search.html?query=\u0002\u000115" - } - }, - "v": "http://efa.mvv-muenchen.de/index.html?name_destination=\u0002\u00018", - "db": "http://www.mvdbase.com/index.php?term=\u0002&field=vid&page=results\u00010" - }, - "w": { - "b": "http://www.mijnwoordenboek.nl/vertaal/NL/EN/\u0002\u000111", - "d": "//www.merriam-webster.com/dictionary/\u0002\u000171", - "i": "//duckduckgo.com/?q=\u0002+site%3Amusicweb-international.com\u00010", - "l": { - "d": "http://www.learnersdictionary.com/definition/\u0002\u00010", - "\u0010": "http://www.learnersdictionary.com/definition/\u0002\u00010" - }, - "\u0010": "//www.merriam-webster.com/dictionary/\u0002\u000171", - "m": "//meta.wikimedia.org/w/index.php?&title=Special%3ASearch&go=Go&search=\u0002\u00010", - "t": "http://www.merriam-webster.com/thesaurus/\u0002\u0001170", - "u": { - "\u0010": "http://mobile.wunderground.com/q/\u0002\u00010", - "nabridged": "http://unabridged.merriam-webster.com/unabridged/\u0002\u00010" - }, - "eb": "//www.merriam-webster.com/dictionary/\u0002\u000171", - "ave": "//www.mwave.com.au/searchresult?w=\u0002\u00010" - }, - "x": { - "c": "//www.mixcloud.com/\u0002\u00010", - "m": "//www.musixmatch.com/search/\u0002\u00010", - "\u0010": "http://mxtoolbox.com/SuperTool.aspx?action=mx%3a\u0002&run=networktools\u000121", - "r": "//www.mixer.com/\u0002\u00010", - "s": "http://forum.mxsimulator.com/search.php?keywords=\u0002\u00010", - "tool": "//mxtoolbox.com/SuperTool.aspx?action=\u0002\u00010" - }, - "z": "//www.mittelbayerische.de/suche/?scope=20000&type=articles%2Cgalleries%2Cvideos&interval=month&searchterm=\u0002\u00019", - "3s": "//www.mp3skulls.icu/mp3/\u0002.html\u00010", - "4l": "http://maxforlive.com/library/index.php?by=any&q=\u0002\u00010", - "gh": "//www.dmgh.de/de/fs1/search/query.html?fulltext=\u0002\u00010", - "gm": "//www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?il=\u0002\u000125", - "gw": "http://metalgear.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "js": "//www.miningjobsearch.com/Mining-Jobs/Search/\u0002\u00010", - "ya": { - "\u0010": "//market.yandex.ru/search?text=\u0002\u000140", - "ctivity": "//myactivity.google.com/myactivity?q=\u0002\u00010", - "llsearch": "http://www.myallsearch.com/Web/\u0002.html\u00010", - "nimelist": "//myanimelist.net/anime.php?q=\u0002\u00013054" - }, - "yc": { - "\u0010": "//www.mycomicshop.com/search?q=\u0002\u00010", - "om": "//mycom.nl/search/\u0002\u00010", - "roft": "http://mycroftproject.com/search-engines.html?name=\u0002&opensearch=yes\u00010" - }, - "yk": "//www.myknobs.com/page/search?Ntt=\u0002\u00010", - "ym": { - "\u0010": "http://www.mymovies.it/database/ricerca/?q=\u0002\u00010", - "ovies": "http://www.mymovies.it/database/ricercalibera/default.asp?q=\u0002&cx=partner-pub-1699801751737986%3Ax7j961-1g3m&cof=FORID%3A9&ie=ISO-8859-1&sa=Cerca\u00010", - "ovingreviews": "http://www.mymovingreviews.com/search.php?q=\u0002&x=0&y=0\u00010" - }, - "yn": { - "\u0010": "http://www.myntra.com/\u0002\u000113", - "tra": "http://www.myntra.com/\u0002 \u00017" - }, - "yo": "http://www.plazademayo.com/mediosyopinion/?s=\u0002\u00010", - "yp": { - "\u0010": "//pt.myprotein.com/elysium.search?search=\u0002\u00010", - "dns": "http://www.mypdns.org/trac/search?q=\u0002\u00010" - }, - "ys": { - "\u0010": "http://www.mysupermarket.co.uk/Shopping/FindProducts.aspx?Query=\u0002\u00010", - "ku": "http://mysku.ru/search/topics/?q=\u0002\u00010", - "ql": "/?q=\u0002+site:dev.mysql.com\u000154", - "hows": "http://myshows.me/search/?q=\u0002\u00010", - "ongbook": "http://www.mysongbook.com/search?utf8=%E2%9C%93&search%5Btype_item%5D=4&search%5Bname%5D=\u0002\u00010", - "pace": "http://searchservice.myspace.com/index.cfm?fuseaction=sitesearch.results&orig=search_Header&origpfc=Splash&type=People&qry=\u0002&submit=Search\u00015" - }, - "yt": { - "\u0010": "//music.youtube.com/search?q=\u0002\u0001361", - "ip": "//www.mytip.co/explore?search=\u0002\u00010" - }, - "āori": "http://maoridictionary.co.nz/search?keywords=\u0002\u00010", - "gtbk": "//www.managementboek.nl/zoeken?c=&q=\u0002\u00010", - "jtsai": "//duckduckgo.com/?q=\u0002&sites=mjtsai.com&ia=web\u00010", - "ybb": "//mybroadband.co.za/news/?s=\u0002\u00010", - "ybestbrands": "http://www.mybestbrands.de/search/?q=\u0002\u00010", - "ybrain": "//mywellbrain.com/?s=\u0002\u00010", - "ydns": "//mypdns.org/trac/search?q=\u0002\u00010", - "ydealz": "//www.mydealz.de/search?q=\u0002\u000129", - "ydrama": "//mydramalist.com/search?q=\u0002\u00010", - "yer": "//www.myer.com.au/search?query=\u0002\u00010", - "yecp": "//my.ecp.fr/search?query=\u0002\u00010", - "yfl": "http://www.myflorida.com/search_results.html?q=\u0002#gsc.tab=0&gsc.q=dmv&gsc.page=1\u00010", - "yfonts": "http://new.myfonts.com/search/\u0002/\u00010", - "ygofer": "http://www.mygofer.com/search=\u0002\u00010", - "ygovscot": "//www.mygov.scot/search?q=\u0002&cat=sitesearch\u00010", - "yinstants": "//www.myinstants.com/search/?name=\u0002\u00010", - "yrec": "http://www.myrecipes.com/search/site/\u0002\u00010", - "yvidster": "//www.myvidster.com/search/?q=\u0002\u000121", - "ywot": "//www.mywot.com/en/scorecard/\u0002\u00010" - }, - "n": { - "a": { - "b": { - "\u0010": "//notabug.org/explore/repos?q=\u0002\u00010", - "re": "//www.biblegateway.com/passage/?search=\u0002&version=NABRE\u00013", - "ava": "//www.nabava.net/search.php?q=\u0002\u00010" - }, - "\u0010": "//search.naver.com/search.naver?query=\u0002\u00011224", - "v": { - "a": "http://www.navalactionwiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "m": "//beta.map.naver.com/search/\u0002\u00010", - "\u0010": "http://www.navigium.de/latein-woerterbuch.php?form=\u0002&wb=gross&phr=true&mh=true\u00015", - "er": { - "\u0010": "http://search.naver.com/search.naver?where=nexearch&sm=osd&ie={inputEncoding}&query=\u0002\u00015260", - "dicfr": "//dict.naver.com/frkodict/#/search?query=\u0002\u00010" - } - }, - "eb": "http://naeb.brit.org/uses/search/?string=\u0002\u00010", - "me": { - "\u0010": "http://www.name.com/name?&domain=\u0002\u00016", - "mc": "//de.namemc.com/s?\u0002\u000139", - "cheap": "//www.namecheap.com/domains/registration/results.aspx?domain=\u0002\u000122", - "ling": "http://nameling.net/name/\u0002\u00010" - }, - "mu": "//namu.wiki/go/\u0002\u00013728", - "no": "//www.timini.no/search/q/\u0002\u00010", - "ob": "//www.naob.no/s%C3%B8k/\u0002\u0001114", - "sa": "//nasasearch.nasa.gov/search?query=\u0002&affiliate=nasa&utf8=%E2%9C%93\u00013", - "sb": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=NASB\u00010", - "sp": "//search.shopping.naver.com/search/all.nhn?query=\u0002&cat_id=&frm=NVSHATC\u000129", - "arden": "http://www.naardensebijbel.nl/?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-default&-0=vers&cs-booknr-1=&cs-bijbelhoofdstuk-2=&cs-versnummer-3=&cs-bijbelvers_v2-4=\u0002&search=Zoeken\u00010", - "cht": "http://gbpicx.de//?s=\u0002\u00010", - "ijalingo": "http://naijalingo.com/search?word=\u0002\u00010", - "ijatoptech": "//www.naijatoptech.com.ng/search?q=\u0002\u00010", - "jdi": "http://www.najdi.si/search.jsp?q=\u0002\u00010", - "kedsec": "//nakedsecurity.sophos.com/?s=\u0002\u00010", - "mchey": "//namchey.com/search/?searchKeyword=\u0002\u00010", - "ointendo": "http://www.naointendo.com.br/blog/busca?utf8=✓&q=\u0002\u00010", - "opgg": "http://na.op.gg/summoner/userName=\u0002\u00017", - "ora": "//www.naora.me/web?q=\u0002\u00010", - ".op": "http://na.op.gg/summoner/userName=\u0002\u00017", - "ruto": "http://naruto.wikia.com/wiki/Special:Search?search=\u0002\u00013", - "sdaq": "//www.nasdaq.com/symbol/\u0002/real-time\u000193", - "slovi": "http://www.naslovi.net/search.php?q=\u0002\u00010", - "tgeo": { - "\u0010": "//www.nationalgeographic.com/search/?q=\u0002\u00010", - "kids": "//www.natgeokids.com/?s=testhttps://www.nationalgeographic.com/search/?q=\u0002\u00010" - }, - "tionalgeographic": "//www.nationalgeographic.com/search/?q=\u0002\u00010", - "tionalobserver": "//www.nationalobserver.com/search?keywords=\u0002\u00010", - "tionalpost": "//nationalpost.com/?s=\u0002\u00010", - "tionalreview": "//www.nationalreview.com/?s=\u0002\u00010", - "tiveinstruments": "//www.native-instruments.com/en/reaktor-community/reaktor-user-library/all/all/all/all/\u0002/latest/1/all/?q=\u0002&t=userlib\u00010", - "tobserver": "//www.nationalobserver.com/search?keywords=\u0002\u00010", - "tpng": "http://www.thenational.com.pg/?s=\u0002\u00010", - "ture": { - "\u0010": "http://www.nature.com/search/executeSearch?sp-q-1=&sp-q=\u0002\u00017", - "spic": "http://www.naturespic.com/NewZealand/result_search.asp?search=\u0002\u00010" - }, - "tural": "//naturallybeautycare.com/search/\u0002\u00010", - "turvin": "//naturvin.wordpress.com/?s=\u0002\u00010", - "utilus": "http://nautil.us/search/\u0002\u00010", - "utiljon": "http://www.nautiljon.com/search.php?cx=partner-pub-0881008410530095%3Ad1y8wrnakj0&cof=FORID%3A10&ie=UTF-8&q=\u0002\u000117", - "yiri": "http://nayiri.com/search?query=\u0002\u00010" - }, - "b": { - "a": { - "m": "//www.nbamaniacs.com/?s=\u0002\u00010", - "\u0010": "http://www.nba.com/search#/\u0002\u000185", - "dl": "http://dleague.nba.com/?q=\u0002\u00010" - }, - "c": { - "\u0010": "//www.notebookcheck.net/Google-Search.36690.0.html?q=\u0002\u000135", - "de": "//www.notebookcheck.com/Notebook-Suche.1095.0.html?&manufacturer=&model=\u0002\u00010" - }, - "d": "http://ordbok.uib.no/perl/ordbok.cgi?bokmaal=1&opp=\u0002\u00018", - "\u0010": "http://www.nb.no/nbsok/search?page=0&menuOpen=false&instant=true&action=search¤tHit=-1&searchString=\u0002\u00013", - "n": { - "\u0010": "//nbn-resolving.org/\u0002\u00010", - "otes": "//nbcstructuredsolutions.ca/listeProduits.aspx?search=\u0002\u00010" - }, - "ooks": "http://www.notebooksbilliger.de/produkte/\u0002\u00010", - "sdman": "http://netbsd.gw.com/cgi-bin/man-cgi?\u0002\u00010" - }, - "c": { - "e": "http://nciku.com/search/en/\u0002\u00010", - "k": "http://nciku.com/search/all/\u0002\u00010", - "l": "//www.nclive.org/search-everything?search=\u0002\u00010", - "\u0010": "//www.namecheap.com/domains/registration/results.aspx?domain=\u0002 \u000113", - "r": "//www.ncregister.com/search/results?q=\u0002\u00010", - "z": "http://nciku.com/search/zh/\u0002\u00010", - "bc": "//www.nocoastbestcoast.com/search.php?search=\u0002\u00010", - "bi": "http://www.ncbi.nlm.nih.gov/gquery/?term=\u0002\u000159", - "sc": "//www.ncsc.nl/zoeken?trefwoord=\u0002\u00010", - "vi": "http://www.nicovideo.jp/search/\u0002?track=nicouni_search_keyword\u000121", - "atlab": "http://ncatlab.org/nlab/show/HomePage/?q=\u0002\u00013", - "heap": "http://www.namecheap.com/domains/domain-name-search/results.aspx?domain=\u0002\u000110", - "iku": "http://www.nciku.com/search/all/\u0002\u00010", - "sulib": "http://search.lib.ncsu.edu/?q=\u0002\u00010" - }, - "d": { - "b": "//www.deutsche-biographie.de/search?name=\u0002&kat=ndbadb&beruf=&orte=&geburtsjahr=&todesjahr=&gnd=&st=erw&facets=&cf=10&number=0&ot=&sl=[]&sort=\u00010", - "l": { - "a": "//ndla.no/en/search/apachesolr_search/\u0002?language[]=und&filters=1/\u00010", - "\u0010": "//ndlonline.ndl.go.jp/#!/search?keyword=\u0002\u00010" - }, - "\u0010": "//onesearch.library.nd.edu/primo-explore/search?query=any,contains,\u0002&tab=onesearch&search_scope=malc_blended&vid=NDU&lang=en_US&offset=0\u00010", - "r": { - "\u0010": "//www.ndr.de/suche10.html?query=\u0002\u00016", - "de": "//ndr.de/suche10.html?query=\u0002\u00010" - }, - "s": "http://www.nachdenkseiten.de/?s=\u0002\u000126", - "ic": "http://endic.naver.com/search.nhn?query=\u0002\u000175", - "pr": "http://ndpr.nd.edu/search/?search_keyword=&as_sitesearch=ndpr.nd.edu&q=\u0002\u000110", - "tv": "http://ndtv.com/topic/\u0002\u00010", - "eutsch": "//www.neues-deutschland.de/suche/index.php?and=\u0002&s0_d=00&s0_m=00&s0_y=0000&s1_d=00&s1_m=00&s1_y=0000&modus=2&sort=1&searchfields%5B%5D=0&searchfields%5B%5D=1&searchfields%5B%5D=2&searchfields%5B%5D=3&searchfields%5B%5D=4&display=1&search=Suchen\u00010" - }, - "\u0010": "//duckduckgo.com/?q=\u0002&iar=news&ia=news\u00011142", - "e": { - "b": { - "\u0010": "//www.neb.com/search?q=\u0002\u00010", - "is": "//recherche.nebis.ch/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=NEBIS\u00010" - }, - "d": { - "\u0010": "http://ned.ipac.caltech.edu/cgi-bin/objsearch?objname=\u0002\u00010", - "ir": "http://nedir-sozluk.com/ara/\u0002\u00010" - }, - "m": { - "\u0010": "http://music.163.com/#/search/m/?s=\u0002\u00010", - "lig": "//www.nemlig.com/?search=\u0002\u00010" - }, - "\u0010": "http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Description=\u0002\u000173", - "o": { - "\u0010": "//neocities.org/browse?tag=\u0002\u00010", - "s": "//www.neos.io/download-and-extend/packages.html?search=\u0002\u00010", - "4j": "//neo4j.com/?s=\u0002\u00010", - "win": "http://www.neowin.net/search/news?terms=\u0002\u000117" - }, - "s": { - "e": "http://www.ne.se/sok?q=\u0002\u00010", - "\u0010": "http://www.ne.se/sok?q=\u0002\u00010", - "dev": "http://wiki.nesdev.com/w/index.php?title=Special%3ASearch&search=\u0002&fulltext=1\u00010", - "tde": "http://www.nestoria.de/\u0002\u00010", - "tuk": "http://www.nestoria.co.uk/\u0002 \u00010" - }, - "t": { - "i": "http://www.neti.ee/cgi-bin/otsing?src=web&query=\u0002 \u00010", - "\u0010": "//www.netflix.com/search?q=\u0002\u0001366", - "acad": "//www.netacad.com/search/node/\u0002\u00010", - "api": "//docs.microsoft.com/dotnet/api/?term=\u0002\u00013", - "bsd": { - "\u0010": "http://www.google.com/cse?cx=006277936787196004968:mbdhrauy1wm&q=guide&oq=guide&gs_l=partner.12...0.0.1.52071.0.0.0.0.0.0.0.0..0.0.gsnos%2Cn%3D13..0.0.0jj1..1ac.#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010", - "man": "http://man.netbsd.org/man/\u0002\u00010" - }, - "core2api": "//docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.0&term=\u0002\u00010", - "craft": "http://toolbar.netcraft.com/site_report?url=\u0002\u00010", - "flix": { - "\u0010": "//www.netflix.com/search?q=\u0002\u0001366", - "dvd": "//dvd.netflix.com/Search?v1=\u0002\u00010" - }, - "gear": "http://netgear.com/Search.aspx?q=\u0002\u00010", - "hack": "http://nethackwiki.com/mediawiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000129", - "lingo": "http://www.netlingo.com/search.php?searchtxt=\u0002\u00010", - "olink": "//netolink.com/?s=\u0002\u00010", - "onnet": "//www.netonnet.no/Search?query=\u0002\u00010", - "runner": "http://netrunnerdb.com/find/?q=\u0002\u00010", - "src": "http://referencesource.microsoft.com/#q=\u0002\u00010", - "timarkkina": "//www.nettimarkkina.com/haku?tag_cld=Y&site=A&status_typeF=F&status_typeR=R&status_typeP=P&search_keyword[]=\u0002&\u00010", - "tuts": "//code.tutsplus.com/tutorials/search/\u0002\u00010", - "werk": "http://networkpeople.nl/?s=\u0002\u00010", - "workx": "http://networkx.lanl.gov/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "workpeople": "http://networkpeople.nl/?s=\u0002\u00010", - "zpolitik": "//netzpolitik.org/?s=\u0002\u00010" - }, - "ca": "http://www.newegg.ca/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=\u0002&N=-1&isNodeId=1\u00016", - "cy": "http://necyklopedie.wikia.com/wiki/\u0002\u00010", - "jm": "http://www.nejm.org/search?q=\u0002&asug=\u00010", - "pu": "http://neptunia.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "ws": { - "\u0010": "//duckduckgo.com/?q=\u0002&iar=news&ia=news\u00011142", - "h": "http://us.newshub.org/search/\u0002/us/all/p1\u00013", - "24": "//www.news24.com/search?q=\u0002\u00010", - "de": "//duckduckgo.com/?q=\u0002&iar=news&ia=news&kl=de-de\u000110", - "fr": "//duckduckgo.com/?q=\u0002&iar=news&ia=news&kl=fr-fr\u00010", - "mx": "//duckduckgo.com/?q=\u0002&iar=news&kl=mx-es&ia=news\u00010", - "yc": "http://hn.algolia.com/#!/story/forever/0/\u0002\u00015", - "365club": "http://news365.club/arama?q=\u0002\u00010", - "archive": "http://www.google.com/#q=\u0002&hl=en&tbm=nws&prmd=imvnsfd&source=lnt&tbs=ar:1&sa=X&ei=UJrnT8LwO8Sf6QGHmIjhDg&ved=0CCcQpwUoBQ&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=3c6a142c5aa1edc2&biw=1366&bih=706\u000112", - "comau": "http://search.news.com.au/search?us=ndmnews&as=NEWS&q=\u0002\u00014", - "day": "http://www.newsday.com/7.25434?q=\u0002\u00010", - "ela": "//newsela.com/search/#/?needle=\u0002\u00010", - "journal": "//www.delawareonline.com/search/\u0002/\u00010", - "max": "http://www.google.com/custom?domains=NewsMax.com&client=pub-2932230807573228&forid=1&ie=UTF8&oe=UTF8&safe=active&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23336699%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A70%3BLW%3A297%3BL%3Ahttp%3A%2F%2Fwww.newsmax.com%2Fimages%2Fhome%2Fa-logo.gif%3BS%3Ahttp%3A%2F%2Fwww.newsmax.com%2F%3BLP%3A1%3BFORID%3A1%3B&sitesearch=Newsmax.com&q=\u0002\u00013", - "now": "http://www.newsnow.co.uk/h/?search=\u0002\u000111", - "tapa": "http://newstapa.org/?s=\u0002\u00010", - "week": "//www.newsweek.com/search/site/\u0002\u00015" - }, - "xo": "//www.nexojornal.com.br/utility/search/?q=\u0002\u00010", - "xt": { - "\u0010": "http://next-episode.net/site-search-\u0002.html\u000145", - "cloudapp": "//apps.nextcloud.com/?search=\u0002\u00010" - }, - "crod": "http://crypt-of-the-necrodancer.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns1=1&ns2=1&ns3=1&ns4=1&ns5=1&ns6=1&ns7=1&ns8=1&ns9=1&ns10=1&ns11=1&ns12=1&ns13=1&ns14=1&ns15=1&ns110=1&ns111=1&ns828=1&ns829=1&ns1201=1#advanced\u00010", - "edsnest": "//www.needsnest.com/search/?search_keywords=\u0002\u00010", - "rdscoop": "http://www.nerdscoop.com/?s=\u0002\u00010", - "rdstore": "http://www.nerdstore.com.br/\u0002\u00010", - "rdwallet": "http://www.nerdwallet.com/search/results#q=\u0002\u00010", - ".se": "http://www.ne.se/s%C3%B6k/?t=uppslagsverk&q=\u0002\u00010", - "vakit": "//nevakit.com/ara/\u0002\u00010", - "wark": "http://www.newark.com/jsp/search/browse.jsp;jsessionid=HLQ02PGLEB0YKCXDUZ1G4IQ?N=0&Ntk=gensearch_001&Ntt=\u0002&Ntx=mode+matchallpartial&suggestions=false&ref=globalsearch&_requestid=285160\u00010", - "wegg": { - "\u0010": "http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Description=\u0002\u000173", - "ca": "//www.newegg.ca/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=\u0002&N=-1&isNodeId=1\u000116" - }, - "wffr": "http://newffr.com/search.php?words=\u0002&mode=1&s_in_forum=1\u00010", - "wgrounds": "//www.newgrounds.com/search/summary?suitabilities=etm&terms=\u0002\u000128", - "whome": { - "\u0010": "http://www.newhome.se/index.php?route=product/search&filter_name=\u0002\u00010", - "s": "//www.newhomesource.com/locationhandler?searchtext=\u0002\u00010" - }, - "wport": "//www.newport.com/search/?text=\u0002\u00010", - "wyorker": "http://www.newyorker.com/search/q/\u0002\u00019", - "xpress": "//catalog.nexpresslibrary.org/cgi-bin/koha/opac-search.pl?q=\u0002 \u00010", - "yzen": "http://www.neyzen.com/aramasonuc.html?q=\u0002\u00010" - }, - "f": { - "b": "//www.nfb.ca/search/#?queryString=\u0002&index=0&language=en\u00010", - "l": { - "\u0010": "http://search.nfl.com/search/?query=\u0002\u00018", - "ps": "http://www.nfl.com/players/search?category=name&filter=\u0002\u00010" - }, - "\u0010": "//www.netflix.com/search?q=\u0002\u0001366", - "r": "//duckduckgo.com/?q=\u0002&iar=news&ia=news&kl=fr-fr\u00010", - "ib": "http://www.nfib.com/search/?query=\u0002\u00010", - "sw": "http://nfs.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "owrs": "http://www.infowars.com/?q=\u0002\u00010" - }, - "g": { - "2": "//v2.angular.io/api?search=\u0002\u00010", - "4": "//angular.io/api?query=\u0002\u00019", - "8": "//v8.angular.io/api?search=\u0002\u00010", - "\u0010": "//angular.io/api?query=\u0002\u00019", - "g": "http://www.newgrounds.com/portal/search/games/\u0002\u000174", - "r": { - "\u0010": "//books.google.com/ngrams/graph?content=\u0002&year_start=1850&year_end=2009&corpus=15&smoothing=0\u00010", - "am": { - "\u0010": "http://books.google.com/ngrams/graph?content=\u0002&year_start=1800&year_end=2000&corpus=15&smoothing=3\u000144", - "s": { - "\u0010": "//books.google.com/ngrams/graph?content=\u0002&year_start=1800&year_end=2000\u000117", - "de": "//books.google.com/ngrams/graph?content=\u0002&year_start=1800&year_end=2000&corpus=20&smoothing=3\u00010" - } - } - }, - "t": "http://tracking.newgistics.com/?trackingvalue=\u0002\u00010", - "ü": "http://www.bibleserver.com/search/NG%C3%9C/\u0002\u00010", - "inx": { - "\u0010": "//www.nginx.com/resources/wiki/search/?q=\u0002\u00016", - "wiki": "http://wiki.nginx.org/Special:Search?search=\u0002&fulltext=Search\u00010" - } - }, - "h": { - "d": "http://nhd.heinle.com/Definition.aspx?word=\u0002\u00010", - "k": "http://cgi2.nhk.or.jp/news/nsearch/query.cgi?col=news&st=1&rf=1&charset=utf-8&qt=\u0002&search.x=-318&search.y=-183\u00013", - "l": "http://www.nhl.com/ice/search.htm?tab=news&q=\u0002&x=0&y=0\u000120", - "\u0010": "//nethackwiki.com/mediawiki/index.php?search=\u0002\u000145", - "s": "http://www.nhs.uk/Search/?q=\u0002\u00016", - "w": "//nethackwiki.com/mediawiki/index.php?search=\u0002\u000145" - }, - "i": { - "h": { - "\u0010": "//search.nih.gov/search?utf8=%E2%9C%93&affiliate=nih&query=\u0002&commit=Search&btnG.x=0&btnG.y=0&btnG=search\u00010", - "ongodict": "http://www.nihongodict.com/?s=\u0002\u00010" - }, - "n": { - "a": "http://www.nina.gov.pl/searchresult?query=\u0002\u00010", - "\u0010": "http://www.ninwiki.com/index.php?title=Special:Search&redirs=0&search=\u0002&fulltext=Search\u00010", - "ja": "http://ninjawords.com/\u0002\u00010", - "life": "http://www.nintendolife.com/search?q=\u0002&submit=Go\u00010", - "tendo": { - "\u0010": "//www.nintendo.com/search/#category=all&page=1&query=\u0002\u000114", - "de": "//www.nintendo.de/Suche-/Suche-299117.html?q=\u0002&f=147393\u00010", - "life": "http://www.nintendolife.com/search?q=\u0002&submit=Go\u00010", - "wiki": "http://nintendo.wikia.com/wiki/Special:Search?search=\u0002\u00010" - } - }, - "\u0010": "http://search.ni.com/nisearch/app/main/p/bot/no/ap/global/lang/en/pg/1/q/\u0002/\u00015", - "s": { - "\u0010": "http://www.notesinspanish.com/?s=\u0002\u00010", - "anyan": "http://www.nisanyansozluk.com/?k=\u0002\u000115" - }, - "v": { - "\u0010": "http://www.biblestudytools.com/search/?q=\u0002&s=Bibles&t=niv\u00010", - "l": "//images.nasa.gov/search-results?searchInput=\u0002\u00010" - }, - "x": { - "\u0010": "//nixos.wiki/index.php?search=\u0002\u0001106", - "os": { - "\u0010": "//nixos.wiki/index.php?search=\u0002\u0001106", - "wiki": "//nixos.wiki/index.php?search=\u0002\u0001106" - }, - "course": "//discourse.nixos.org/search?q=\u0002\u00010", - "craft": "http://www.cyberciti.biz/faq/?s=\u0002\u00010", - "opt": "//nixos.org/nixos/options.html#\u0002\u0001143", - "pkg": { - "\u0010": "//nixos.org/nixos/packages.html?query=\u0002\u0001376", - "s": "//nixos.org/nixos/packages.html?query=\u0002\u0001376" - }, - "todon": "//masto.nixnet.xyz/@\u0002\u00010" - }, - "ce": { - "\u0010": "//www.nice.org.uk/search?q=\u0002\u00010", - "gear": "http://nicegear.co.nz/search/?q=\u0002\u00010" - }, - "co": { - "\u0010": "http://www.nicovideo.jp/search/\u0002\u0001931", - "dic": "//dic.nicovideo.jp/s/al/t/\u0002/rev_created/desc/1-\u000179", - "live": "//live.nicovideo.jp/search?keyword=\u0002\u00013", - "nico": "http://www.nicovideo.jp/search/\u0002\u0001931" - }, - "fs": "//www.niferry.co.uk/?s=\u0002\u00010", - "if": "http://www.niif.hu/search/node/\u0002\u00010", - "che": "//www.niche.com/search/?q=\u0002\u00014", - "ebezpiecznik": "//niebezpiecznik.pl/?s=\u0002\u00010", - "elsen": "//www.nielsen.com/us/en/search.html?q=\u0002&sp_cs=UTF-8\u00010", - "euwsblad": "http://www.nieuwsblad.be/Search/Index.aspx?searchString=\u0002\u00010", - "fty": "//search.nifty.com/websearch/search?cflg=%E6%A4%9C%E7%B4%A2&q=\u0002\u00010", - "ghtbot": "//nightbot.tv/t/\u0002/commands\u00010", - "ice": "http://niice.co/?search=\u0002\u00010", - "kkei": "//r.nikkei.com/search?keyword=\u0002\u00010", - "kon": { - "\u0010": "http://www.nikonusa.com/en/about-nikon/search.page?searchCollection=SEARCH_ALL&q=\u0002\u00010", - "uk": "//www.nikon.co.uk/en_GB/search.page#keywords=\u0002\u00010" - }, - "mvelo": "http://kb.nimvelo.com/search?query=\u0002\u00010", - "rsoft": "http://www.nirsoft.net/search_freeware_result_new.html?cx=partner-pub-5286073190998405%3A5399172980&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=nirsoft.net%2F&ref=google.com%2F\u00010", - "trc": "http://www.nitrc.org/search/?type_of_search=group&term[]=\u0002\u00010", - "trome": "http://www.nitrome.com/search.php?id=\u0002&search_type=default\u00010" - }, - "k": { - "j": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=NKJV\u00015", - "\u0010": "//norgeskart.no/#!?project=seeiendom&layers=1002,1015&zoom=4&lat=7197864.00&lon=396722.00&sok=\u0002\u00017", - "r": "http://krdic.naver.com/search.nhn?query=\u0002&kind=all\u00015", - "urier": "http://www.nordkurier.de/suche?text=\u0002\u00010" - }, - "l": { - "a": { - "b": "//ncatlab.org/nlab/search?query=\u0002\u000125", - "\u0010": "http://catalogue.nla.gov.au/Search/Home?lookfor=\u0002\u00010" - }, - "b": "//www.bibleserver.com/text/NLB/\u0002\u00010", - "\u0010": "//ncatlab.org/nlab/search?query=\u0002\u000125", - "r": "//newleftreview.org/search/hybrid?query=\u0002\u00010", - "w": { - "i": { - "\u0010": "//nl.wikipedia.org/w/index.php?search=\u0002\u000113", - "ki": "//nl.wikipedia.org/wiki/Speciaal:Zoeken/\u0002\u00019" - }, - "\u0010": "http://nolife-wiki.fr/index.php?title=Spécial%3ARecherche&go=Lire&search=\u0002\u00010" - }, - "de": "//translate.google.com/#view=home&op=translate&sl=nl&tl=de&text=\u0002\u00016", - "en": "//translate.google.com/#nl/en/\u0002\u000124", - "tk": "http://www.nltk.org/search.html?q=\u0002\u00010", - "ife": "http://www.nintendolife.com/search?q=\u0002&submit=Go\u00010", - "verbix": "http://www.verbix.com/webverbix/go.php?D1=24&T1=\u0002\u00010" - }, - "m": { - "c": "//namemc.com/s?\u0002\u00010", - "\u0010": "//www.nexusmods.com/search/?gsearch=\u0002&gsearchtype=mods\u000188", - "s": { - "\u0010": "//nomanssky.gamepedia.com/index.php?title=Special:Search&search=\u0002\u00018", - "u": "//www.nmsu.edu/search_results.html?q=\u0002\u00010" - }, - "t": "//nutrimatic.org/?q=\u0002\u00014", - "ap": "http://map.naver.com/?query=\u0002\u000122", - "legis": "//nmlegis.gov/?q=\u0002\u00010" - }, - "n": { - "d": { - "b": "http://search.nndb.com/search/nndb.cgi?nndb=1&omenu=unspecified&query=\u0002\u00010", - "\u0010": "//ordbok.uib.no/perl/ordbok.cgi?OPP=\u0002&ant_bokmaal=5&ant_nynorsk=5&nynorsk=+&ordbok=nynorsk\u00015" - }, - "g": "//cowlevel.net/search?q=\u0002\u00010", - "l": "//live.nicovideo.jp/search?keyword=\u0002\u00013", - "\u0010": "//www.naturalnews.com/SearchResults.asp?query=\u0002&pr=NN\u00010", - "s": "//seiga.nicovideo.jp/search/\u0002\u00010", - "umber": "http://registry.faa.gov/aircraftinquiry/NNum_Results.aspx?NNumbertxt=\u0002\u00010" - }, - "p": { - "m": { - "d": "//npmjs.com/package/\u0002\u0001142", - "\u0010": "//www.npmjs.com/search?q=\u0002\u0001130", - "s": { - "\u0010": "//npmsearch.com/?q=\u0002\u00010", - "io": "//npms.io/search?q=\u0002\u000111", - "earch": "//npmsearch.com/?q=\u0002\u00010" - }, - "js": "//www.npmjs.com/search?q=\u0002\u0001130", - "trends": "//www.npmtrends.com/\u0002\u00015" - }, - "o": { - "\u0010": "//www.npo.nl/zoeken?term=\u0002\u00017", - "z": "http://openscience.si/NaprednoIskanje.aspx?t=s&q=1:0:\u0002;\u00010" - }, - "r": "http://www.npr.org/search/index.php?query=\u0002\u0001172", - "s": "http://www.nps.gov/search/?affiliate=nps&query=\u0002\u00010", - "\u0010": "//thenounproject.com/search/?q=\u0002\u00014", - "at": "http://www.parcs.at/npa/mmd_data_by.php?q=\u0002&btnG=Suche+starten&searchval=30000\u00010", - "edia": "//dic.nicovideo.jp/a/\u0002\u000116" - }, - "r": { - "c": "http://www.nrc.nl/php/zoeken.php?cx=000950122183490940160%3Afse5ljfbq2u&q=\u0002&ie=anci&sa=&cof=FORID%3A9#449\u00010", - "k": { - "\u0010": "//www.nrk.no/sok/?q=\u0002\u000196", - "r": "http://radio.nrk.no/sok?q=\u0002\u00010", - "tv": "http://tv.nrk.no/sok?q=\u0002\u00010" - }, - "l": "//www.nrl.com/search/?keyword=\u0002&sort=Relevance\u00010", - "\u0010": "//github.com/NixOS/nixpkgs/search?q=\u0002\u000127", - "db": "http://netrunnerdb.com/find/?q=\u0002\u00010", - "tq": "//www.nasdaq.com/symbol/\u0002/real-time\u000193" - }, - "s": { - "\u0010": "http://duckduckgo.com/?q=!safeoff+\u0002\u00018", - "e": "http://www.nseindia.com/gsa/search.jsp?q=\u0002\u00010", - "f": { - "\u0010": "//safeweb.norton.com/report/show?url=\u0002\u00010", - "w": "//duckduckgo.com/?q=\u0002&kp=-2&ia=web\u000139" - }, - "n": "//nationstates.net/nation=\u0002\u0001221", - "r": "//nationstates.net/region=\u0002\u00010", - "issues": "//nsindex.net/w/index.php?search=\u0002\u00010", - "uns": "//www.drworkout.fitness/?s=\u0002\u00010", - "wgov": "//www.nsw.gov.au/search-google/?Search=\u0002\u00010" - }, - "t": { - "\u0010": "//newstral.com/search/articles?&q=\u0002\u00013", - "s": "//www.nts.live/find?q=\u0002&type=all\u00013", - "v": "//www.ntv.co.jp/search/?q=\u0002\u00010", - "x": "//www.nutritionix.com/search?q=\u0002\u000123", - "el": "//www.numeroinconnu.fr/numero/\u0002\u00010", - "hp": "//history.newtheatre.org.uk/search/?q=\u0002\u00010", - "nu": "http://www.ntnu.edu/sok?query=\u0002\u000114", - "rs": "//ntrs.nasa.gov/?Ntt=\u0002&Ntx=mode matchallpartial&Nm=123|Collection|NASA STI||17|Collection|NACA\u00010", - "rans": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Norsk&Fra=\u0002\u00010" - }, - "u": { - "\u0010": "http://www.nu.nl/zoeken/?q=\u0002 \u000131", - "clearthrone": "http://nuclear-throne.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "get": "http://nuget.org/packages?q=\u0002&sortOrder=package-download-count\u0001219", - "kepy": "//docs.thefoundry.co.uk/products/nuke/developers/80/pythondevguide/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "llbyte": "//null-byte.wonderhowto.com/search/\u0002 \u00010", - "mber": "http://numbermatics.com/n/\u0002/\u00010", - "merama": "http://www.numerama.com/magazine/recherche/1/\u0002/date\u00010", - "mista": "//en.numista.com/catalogue/index.php?r=\u0002&mode=simplifie&p=1\u00010", - "mpy": "http://docs.scipy.org/doc/numpy/search.html?q=\u0002&check_keywords=yes&area=default\u0001107", - "sagates": "//nusagates.com/?s=\u0002\u00010", - "search": "http://nusearch.nottingham.ac.uk/primo_library/libweb/action/search.do?dscnt=0&scp.scps=scope%3A%28UNUK%29%2Cscope%3A%28unuk_pda_ebl%29&frbg=&tab=default_tab&dstmp=1430162925299&srt=rank&ct=search&mode=Basic&dum=true&indx=1&tb=t&vl(freeText0)=\u0002&fn=search&vid=UNUK\u00010", - "tridata": "http://nutritiondata.self.com/foods-\u0002}000000000000000000000.html\u00010", - "tritiondata": "http://nutritiondata.self.com/foods-\u0002000000000000000000000.html\u00017", - "tritionfacts": "//nutritionfacts.org/?s=\u0002\u00010", - "uvem": "//www.nuuvem.com/catalog/search/\u0002\u00010" - }, - "v": { - "d": { - "e": "//dict.naver.com/dekodict/#/search?query=\u0002\u00010", - "\u0010": "//nvd.nist.gov/vuln/search/results?form_type=Basic&results_type=overview&query=\u0002&search_type=all\u000131", - "s": "//nvd.nist.gov/vuln/search/results?form_type=Basic&results_type=overview&query=\u0002&search_type=all\u000131" - }, - "i": { - "\u0010": "//search.naver.com/search.naver?sm=tab_hty.top&where=image&query=\u0002\u00010", - "dia": "//duckduckgo.com/?q=\u0002+site%3Anvidia.com&ia=web\u00017" - }, - "\u0010": "http://m.search.naver.com/search.naver?query=\u0002):\u000183", - "u": "http://www.novelupdates.com/?s=\u0002&post_type=seriesplans\u000150", - "enkr": "//papago.naver.com/?sk=en&tk=ko&hn=0&st=\u0002\u00013", - "krjp": "//papago.naver.com/?sk=ko&tk=ja&st=\u0002\u00010", - "wiki": "http://nightvale.wikia.com/wiki/Special:Search?search= \u0002&fulltext=Search\u00010" - }, - "w": { - "b": "//webbook.nist.gov/cgi/cbook.cgi?Name=\u0002&Units=SI\u00010", - "\u0010": "http://ninjawords.com/\u0002\u00010", - "n": "http://nwn.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "s": "http://forecast.weather.gov/zipcity.php?inputstring=\u0002\u000199", - "vault": "//neverwintervault.org/search/node/\u0002\u00010" - }, - "x": { - "i": { - "m": "//m.nextinpact.com/rechercher?term=\u0002\u00010", - "\u0010": "http://www.nextinpact.com/recherche?_search=\u0002\u00018" - }, - "\u0010": "http://networkx.lanl.gov/search.html?q=\u0002&check_keywords=yes&area=default\u00010" - }, - "11": "http://www.n11.com/arama?q=\u0002\u00018", - "24": "http://www.news24.com/search?q=\u0002\u00010", - "oi": { - "\u0010": "http://www.noi.cn/search.html?q=\u0002\u00010", - "ta": "//noita.gamepedia.com/\u0002\u00010", - "seless": "http://pasokatu.com/nsearch#gsc.q=\u0002\u00019" - }, - "os": { - "\u0010": "//nos.nl/zoeken/?q=\u0002\u000130", - "cript": "//duckduckgo.com/html/?q=\u0002\u000146", - "deputes": "//www.nosdeputes.fr/recherche/\u0002\u00010", - "livres": "http://noslivres.net/?r=\u0002\u00010" - }, - "oz": "//www.noz.de/suche/?q=\u0002\u00010", - "yt": { - "c": "//cooking.nytimes.com/search?q=\u0002\u00010", - "\u0010": "http://query.nytimes.com/search/sitesearch?query=\u0002&srchst=cse\u0001934", - "o": "//www.nytimes3xbfgragh.onion/search?query=\u0002\u00010", - "imes": "//www.nytimes.com/search?query=\u0002\u000151" - }, - "zf": "//nzf.org.nz/Search/Results?term=\u0002\u00010", - "zz": "http://www.nzz.ch/suche?form%5Bq%5D=\u0002\u00010", - "jalla": "//njal.la/list/?search=\u0002\u00010", - "juskalo": "//www.njuskalo.hr/?ctl=search_ads&keywords=\u0002\u000133", - "oaa": "http://forecast.weather.gov/zipcity.php?inputstring=\u0002\u000199", - "ode": { - "\u0010": "http://nodejs.org/api/\u0002.html\u0001143", - "js": "//duckduckgo.com/?q=!node+\u0002\u000129" - }, - "oel": "//www.noelleeming.co.nz/search.html?q=\u0002\u00010", - "oen": "//translate.google.com/#no/en/\u0002\u000142", - "ofap": "//www.reddit.com/r/NoFap/search/?q=\u0002&restrict_sr=1\u00010", - "ohu": "//translate.google.hu/#view=home&op=translate&sl=no&tl=hu&text=\u0002\u00010", - "ojs": "//duckduckgo.com/html/?q=\u0002\u000146", - "olo": "//www.nolo.com/search2?type=all&query=\u0002&location=\u00013", - "omad": "//nomadlist.com/?q=\u0002\u00010", - "ominatim": "http://nominatim.openstreetmap.org/search?q=\u0002\u00010", - "omnom": "//nomnompaleo.com/?s=\u0002\u00010", - "onciclopedia": "http://nonciclopedia.wikia.com/index.php?title=Speciale%3ARicerca&search=\u0002&go=Vai\u00010", - "ook": "http://nookipedia.com/w/index.php?title=Special%3ASearch&search=\u0002\u000114", - "oodle": "//www.noodlechinese.com/search?q=\u0002 \u00010", - "orid": "http://www.norid.no/index.html?charset=UTF-8&page=index&sok=Søk&query=\u0002\u00010", - "orsk": "http://ordbok.uib.no/perl/ordbok.cgi?OPP=\u0002&ant_bokmaal=5&ant_nynorsk=5&begge=+&ordbok=begge\u000136", - "ordicnames": "//www.nordicnames.de/w/index.php?title=Special%3ASearch&search=\u0002\u00010", - "ordstrom": "http://shop.nordstrom.com/sr?origin=keywordsearch&keyword=\u0002\u00014", - "ortonsafe": { - "\u0010": "//safeweb.norton.com/report/show?url=\u0002\u00010", - "web": "//safeweb.norton.com/report/show?url=\u0002\u00010" - }, - "ote": { - "\u0010": "//note.mu/search?context=note&mode=search&q=\u0002\u00019", - "flight": "http://www.noteflight.com/public_scores#/search/\u0002\u00010", - "vil": "http://hss3uro2hsxfogfq.onion/index.php?q=\u0002\u00010" - }, - "otalwaysright": "http://notalwaysright.com/?s=\u0002\u00010", - "otdoppler": "http://www.notdoppler.com/search.php?cx=partner-pub-5587930311934766%3A9473942733&cof=FORID%3A9&ie=UTF-8&q=\u0002&sa=Search\u00010", - "oticiados": "http://noticiados.net/blog/buscar/?query=\u0002\u00010", - "oun": { - "\u0010": "//thenounproject.com/search/?q=\u0002\u00014", - "project": "http://thenounproject.com/search/?q=\u0002\u00014" - }, - "ovelupdates": "http://www.novelupdates.com/?s=\u0002&post_type=seriesplans\u000150", - "overbix": "http://www.verbix.com/webverbix/go.php?D1=25&T1=\u0002\u00010", - "ovinky": "http://www.novinky.cz/hledej?w=\u0002\u00010", - "-tv": "http://www.n-tv.de/suche/?a=search&at=all&q=\u0002&submit=Suche starten\u00010", - "yheteridag": "//nyheteridag.se/?s=\u0002\u00010", - "ypl": "//browse.nypl.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng\u000110", - "ypost": "//nypost.com/search/\u0002/\u0001111", - "yrb": "http://www.nybooks.com/search/?s=\u0002&option_match=&year_after=1963&year_before=2017&type=all&orderby=relevance\u00010", - "yse": "//www.nyse.com/quote/XNYS:\u0002\u00010", - "zlibraries": "//tepuna.on.worldcat.org/external-search?queryString=\u0002\u00010", - "zqa": { - "\u0010": "//search.nzqa.govt.nz/apps/search/?q=\u0002\u00010", - "s": "//www.nzqa.govt.nz/ncea/assessment/view-detailed.do?standardNumber=\u0002\u00010" - } - }, - "ㄴ": "//search.naver.com/search.naver?query=\u0002\u00011224", - "o": { - "2": "//www.o2.co.uk/shop/\u0002\u00010", - "b": { - "a": "http://onlinebooks.library.upenn.edu/webbin/book/search?author=\u0002&amode=words\u00010", - "b": "http://bible.oremus.org/?passage=\u0002\u00019", - "d": "http://engine-codes.com/search_codes.php?q=\u0002\u00010", - "i": { - "\u0010": "//www.obi.de/decom/search/\u0002\u000113", - "at": "//www.obi.at/searchresult/?isi=true&searchTerm=\u0002\u00010" - }, - "\u0010": "//openbuilds.com/search/49203883/?q=\u0002\u00016", - "s": { - "\u0010": "//build.opensuse.org/search?search_text=\u0002 \u000130", - "py": { - "\u0010": "http://docs.obspy.org/search.html?q=\u0002\u00014", - "dev": "http://docs.obspy.org/master/search.html?q=\u0002\u00010" - }, - "ervador": "http://observador.pt/pesquisa/?q=\u0002\u00010" - }, - "razky": "//www.obrazky.cz/?q=\u0002\u00010" - }, - "c": { - "a": { - "l": "http://www.openclipart.org/search/?query=\u0002\u00010", - "\u0010": "http://www.openclipart.org/search/?query=\u0002\u00010", - "t": "//www.overclockers.at/search.php?action=simplesearch&query=\u0002\u00010", - "do": "//www.ocado.com/webshop/getSearchProducts.do?entry=\u0002\u00014", - "ml": { - "\u0010": "http://caml.inria.fr/pub/docs/manual-ocaml/libref/\u0002.html\u000111", - "oscope": "//camlspotter.github.io/ocamloscope.html?q=\u0002\u00010" - }, - "mod": "//odoo-community.org/shop?search=\u0002\u00010" - }, - "c": { - "\u0010": "//openclassrooms.com/courses?q=\u0002\u00010", - "uprint": "http://occuprint.org/?action=search&q=\u0002 \u00010" - }, - "o": "//camlspotter.github.io/ocamloscope.html?q=\u0002\u00010", - "\u0010": "//openclassrooms.com/courses?q=\u0002\u00010", - "s": "//www.opendesktop.org/search?projectSearchText=\u0002\u00010", - "w": "http://search.mit.edu/search?site=ocw&client=mit&output=xml_no_dtd&proxystylesheet=http://ocw.mit.edu/search/google-ocw.xsl&proxyreload=1&q=\u0002\u00010", - "lc": "//www.worldcat.org/search?q=\u0002\u000112", - "na": "//www.opencaching.us/search.php?searchto=searchbyname&showresult=1&expert=0&output=HTML&sort=bydistance&f_inactive=0&f_ignored=0&f_userfound=0&f_userowner=0&f_watched=0&f_geokret=0&cachename=https://www.opencaching.us/search.php?searchto=searchbyname&showresult=1&expert=0&output=HTML&sort=bydistance&f_inactive=0&f_ignored=0&f_userfound=0&f_userowner=0&f_watched=0&f_geokret=0&cachename=\u0002&submit=Search&submit=Search\u00010", - "to": { - "\u0010": "//octopart.com/search?q=\u0002\u000197", - "part": "//octopart.com/search?q=\u0002\u000197" - }, - "uk": "http://overclockers.co.uk/search_results.php?keywords=\u0002\u00017", - "doc": "//ocdoc.cil.li/doku.php?id=start&do=search&q=\u0002\u00010", - "register": "http://www.ocregister.com/search/?q=\u0002&x=0&y=0\u00010", - "remix": "http://ocremix.org/quicksearch/remix/?qs_query=\u0002\u00010", - "ulus": "//www.oculus.com/experiences/go/search/?q=\u0002\u00010" - }, - "d": { - "b": "//odb.org/search?q=\u0002\u000113", - "d": "//theodd1sout.com/search?q=\u0002\u00014", - "\u0010": "http://oxforddictionaries.com/definition/english/\u0002?q=\u0002\u000111", - "s": "http://public.opendatasoft.com/explore/dataset/european-train-stations/?q=\u0002\u00010", - "eu": "//data.europa.eu/euodp/en/data/dataset?q=\u0002\u00010", - "ic": "//en.oxforddictionaries.com/search?utf8=%E2%9C%93&filter=dictionary&query=\u0002\u00014", - "nb": "http://www.oxforddnb.com/search?q=\u0002\u00016", - "oo": "//www.odoo.com/apps?search=\u0002\u00010", - "ota": "//www.opendota.com/search?q=\u0002\u00010", - "piralni": "http://odpiralnicasi.com/spots?utf8=✓&q=\u0002\u00010" - }, - "f": { - "f": { - "\u0010": "http://world.openfoodfacts.org/cgi/search.pl?search_terms=\u0002\u00010", - "erteinternet": "//www.offerteinternet.net/?s=\u0002\u00010", - "icedepot": "http://www.officedepot.com/catalog/search.do?Ntt=\u0002\u000113", - "icefurniture": "//www.office-furniture-direct.co.uk/search?query=\u0002\u00010", - "line": "http://www.downforeveryoneorjustme.com/\u0002\u00010", - "liberty": "http://offliberty.com/#\u0002\u00010" - }, - "l": "http://openfontlibrary.org/en/search?query=\u0002\u00010", - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Fforum.openframeworks.cc\u000110", - "db": "http://www.ofdb.de/view.php?SText=\u0002&Kat=All&page=suchergebnis\u000118" - }, - "g": { - "a": "http://opengameart.org/art-search?keys=\u0002\u000117", - "l": { - "\u0010": "//www.outdoorgearlab.com/search.php?ftr=\u0002\u00010", - "asnik": "//www.oglasnik.hr/search?q=\u0002&category_id=\u00010", - "obo": "//oglobo.globo.com/busca/?q=\u0002\u00010" - }, - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Aomniglot.com\u000114", - "s": "//forums.online-go.com/search?q=\u0002\u00010", - "db": "http://ogdb.eu/index.php?section=simplesearchresults&searchstring=\u0002\u00010", - "js": "//www.oilandgasjobsearch.com/Oil-and-Gas-Jobs/Search/\u0002\u00010", - "ol": "http://www.ogol.com.br/search.php?inputString=\u0002\u000117" - }, - "h": { - "m": { - "\u0010": "http://orbithangar.com/advsearch.php?text=\u0002\u00010", - "ygear": "//ohmygear.net/en/search/\u0002\u00010" - }, - "\u0010": "//www.openhub.net/p?q=\u0002\u00016", - "r": "http://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "loh": "//www.ohloh.net/search?q=\u0002\u00010", - "norobot": "http://www.ohnorobot.com/index.php?s=\u0002&Search=Search&comic=\u00010" - }, - "i": { - "d": "http://www.oid-info.com/cgi-bin/display?oid=\u0002&submit=Display&action=display\u00017", - "\u0010": "http://oxfordindex.oup.com/search?q=\u0002\u00010", - "landgas": "//www.oilandgasjobsearch.com/Oil-and-Gas-Jobs/Search/\u0002\u00010", - "seaux": "http://www.oiseaux.net/search/?q=\u0002\u00010" - }, - "l": { - "e": "http://buscador.ole.com.ar/\u0002\u00010", - "\u0010": "http://search.oregonlive.com/\u0002\u00014", - "x": { - "\u0010": "//www.olx.pl/oferty/q- \u0002/\u0001187", - "ar": "//www.olx.com.ar/nf/search/\u0002\u00010", - "bb": "//bahiablanca.olx.com.ar/nf/search/\u0002\u00010", - "bg": "//www.olx.bg/ads/?q=\u0002\u00010", - "br": "http://www.olx.com.br/brasil?q=\u0002\u00018", - "df": "//df.olx.com.br/?q=\u0002\u00010", - "id": "//m.olx.co.id/all-results/q-\u0002 \u00010", - "in": "//www.olx.in/?\u0002\u00010", - "lb": "//olxliban.com/en/ads/q-\u0002\u00010", - "ph": "//www.olx.ph/all-results?q=\u0002\u00017", - "pl": "http://olx.pl/oferty/q-\u0002/\u000117", - "pt": "//www.olx.pt/ads/q-\u0002\u000114", - "ro": "//www.olx.ro/ads/?q=\u0002\u00015", - "ua": "http://olx.ua/uk/list/q-\u0002/\u00010", - "poland": "http://olx.pl/oferty/q-\u0002/\u000117" - }, - "ad": "//www.oxfordlearnersdictionaries.com/definition/american_english/\u0002\u00010", - "am": "http://olam.in/Dictionary/en_ml/\u0002 \u000123", - "dv": { - "\u0010": "http://www.oldversion.com/search?query=\u0002\u00010", - "ersion": "http://www.oldversion.com/search?query=\u0002\u00010" - }, - "ib": { - "\u0010": "http://openlibrary.org/search?q=\u0002\u000123", - "text": "//openlibrary.org/search/inside?q=\u0002\u00010" - }, - "th": "http://www.onelook.com/reverse-dictionary.shtml?s=\u0002\u00010", - "dapps": "http://www.oldapps.com/betasearch.php?cx=007779823686351122034%3Ai7o_lb6edjm&cof=FORID%3A9&ie=UTF-8&q=\u0002&siteurl=\u00013", - "dcpan": "http://search.cpan.org/search?query=\u0002&mode=all\u00010", - "dred": { - "\u0010": "//old.reddit.com/search?q=\u0002\u0001330", - "dit": "//old.reddit.com/search?q=\u0002\u0001330" - }, - "iverse": "//oliverse.ch/?search=\u0002\u00010", - "ivetti": "//www.dizionario-italiano.it/dizionario-italiano.php?parola=\u0002\u00017" - }, - "n": { - "\u0010": "//www.ontario.ca/search/search-results?query=\u0002\u00010", - "i": { - "\u0010": "http://oxygennotincluded.gamepedia.com/index.php?search=\u0002\u000126", - "on": "http://www.theonion.com/search/?q=\u0002\u000130" - }, - "m": "//www.nexusmods.com/oblivion/search/?gsearch=\u0002&gsearchtype=mods\u00010", - "r": "http://www.ohnorobot.com/index.php?s=\u0002&Search=Search&comic=\u00010", - "s": { - "\u0010": "//www.ons.gov.uk/search?q=\u0002\u00010", - "hape": "//cad.onshape.com/documents?resourceType=filter&nodeId=1&column=modifiedAt&order=desc&viewMode=0&q=\u0002\u00010" - }, - "bit": "//www.onbit.pt/catalogsearch/result/?q=\u0002\u00010", - "cyclo": "http://oncyclopedia.org/wiki/Speciaal:Zoeken?search=\u0002&go=Zoeken\u00010", - "darock": "http://www.ondarock.it/websearch.php?domains=www.ondarock.it&q=\u0002&sitesearch=www.ondarock.it&client=pub-4895368002735382&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23117dd2%3BGL%3A1%3BDIV%3A%23FFFFFF%3BVLC%3A7292ab%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0569b7%3BLC%3A0569b7%3BT%3A191919%3BGFNT%3A73baf2%3BGIMP%3A73baf2%3BFORID%3A11&hl=it\u00010", - "ecard": "//onecard.network/client/en_AU/sapubliclibraries/search/results?qu=\u0002\u00010", - "edrive": "//onedrive.live.com/#qt=search&q=\u0002\u000129", - "eill": "http://us.oneill.com/shop/search/?q=\u0002\u00010", - "elook": { - "\u0010": "http://onelook.com/?w=\u0002\u000136", - "r": "http://onelook.com/?w=*&loc=revfp2&clue=\u0002\u00010", - "th": "http://www.onelook.com/reverse-dictionary.shtml?s=\u0002\u00010" - }, - "epiece": "http://onepiece.wikia.com/wiki/Special:Search?search=\u0002\u000167", - "estopenglish": "http://www.onestopenglish.com/searchResults.aspx?keywords=\u0002\u00010", - "goal": "//ongoal.se/search?type=article%2Cpage%2Cproduct&q=\u0002*\u00010", - "linelinkscan": "http://onlinelinkscan.com/results/\u0002\u00013", - "orsk": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=non\u00010", - "vista": "http://www.onvista.de/suche/?onvHeaderSearchBoxAction=true&searchValue=\u0002\u000126", - "zetaal": "//onzetaal.nl/zoekresultaten/?q=\u0002\u00010" - }, - "o": { - "c": "//outof.cards/search/?query=\u0002\u00010", - "\u0010": "//www.otto-office.com/de/app/search/index?query[query]=\u0002\u00010", - "tl": "//www.reddit.com/r/OutOfTheLoop/search?q=\u0002&restrict_sr=on\u00010", - "tv": "http://www.imperialassembly.com/oracle/?quicksearch=1&search_13=\u0002\u00010", - "lone": "http://www.oolone.com/?search=\u0002\u00010" - }, - "\u0010": "http://onelook.com/?w=\u0002&ls=a\u0001131", - "p": { - "c": "http://fr.openclassrooms.com/recherche/?search=\u0002\u00010", - "g": { - "g": { - "\u0010": "http://www.op.gg/summoner/userName=\u0002\u000169", - "na": "http://na.op.gg/summoner/userName=\u0002\u00017", - "euw": "http://euw.op.gg/summoner/userName=\u0002\u00018" - }, - "\u0010": "http://www.op.gg/champion/\u0002\u000117" - }, - "\u0010": "//openplaques.org/search?utf8=%E2%9C%93&phrase=\u0002\u00010", - "q": "http://checklists.opquast.com/fr/opquastv2?q=\u0002 \u00010", - "am": "http://duckduckgo.com/?q=\u0002+site:https://opam.ocaml.org/packages\u000112", - "br": "http://br.op.gg/summoner/userName=\u0002\u00010", - "na": "http://na.op.gg/summoner/userName=\u0002\u00017", - "ru": "http://ru.op.gg/summoner/userName=\u0002\u00010", - "tr": "http://tr.op.gg/summoner/userName=\u0002\u00014", - "acp": "//opac.ub.uni-potsdam.de/DB=1/SET=4/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010", - "achu": "//hu-berlin.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&search_scope=default_scope&displayField=all&pcAvailabiltyMode=false&dum=true&vid=hub_ub&displayMode=full&bulkSize=30&mode=Basic&tab=default_tab&highlight=true&institution=HUB_UB&sortby=rank&lang=de_DE\u00010", - "achgw": "//lhgrw.gbv.de/DB=1/SET=18/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010", - "encv": "http://docs.opencv.org/3.0-last-rst/search.html?q=\u0002\u00019", - "enga": "http://opengameart.org/art-search?keys=\u0002\u000117", - "enbadges": "//openbadges.it/search/\u0002 \u00010", - "enbox": "http://openbox.org/wiki/Special:Search?search=\u0002\u00010", - "enbsd": { - "\u0010": "http://man.openbsd.org/?query=\u0002\u000141", - "man": "http://man.openbsd.org/?query=\u0002&apropos=0&sec=0&arch=default&manpath=OpenBSD-current\u000166", - "misc": "http://marc.info/?l=openbsd-misc&w=2&r=1&s=\u0002&q=b\u00010", - "ports": "//marc.info/?l=openbsd-ports&w=2&r=1&s=\u0002&q=b\u00010" - }, - "enclipart": "http://openclipart.org/search/?query=\u0002\u00015", - "encomp": "//www.opencompanies.nl/zoekresultaten?q=\u0002\u00010", - "enculture": "//duckduckgo.com/?q=site%3Aopenculture.com+\u0002\u00010", - "endesktop": "//www.opendesktop.org/search?projectSearchText=\u0002\u00010", - "endns": "http://www.opendns.com/search/?s=\u0002\u00010", - "endota": "//www.opendota.com/search?q=\u0002\u00010", - "enfont": "http://openfontlibrary.org/en/search?query=\u0002\u00010", - "enfreax": "http://open-freax.fr/?s=\u0002\u00010", - "englwiki": "//www.khronos.org/opengl/wiki_opengl/index.php?search=\u0002\u00013", - "enhours": "//openhours.dk/spots?utf8=%E2%9C%93&q=\u0002\u00010", - "enhub": "//www.openhub.net/p?query=\u0002&sort=relevance\u00015", - "enings": "http://openings.moe/list/?s=\u0002\u00010", - "enlib": { - "\u0010": "//openlibra.com/en/collection/search/term/\u0002/\u00010", - "rary": "http://openlibrary.org/search?q=\u0002\u000123" - }, - "enlistings": "//www.openlistings.co/s/\u0002 \u00010", - "enmaps": "//www.openstreetmap.org/search?query=\u0002\u000144", - "ennet": "http://www.opennet.ru/search.shtml?exclude=index%7C%2Fman.shtml&words=\u0002\u00010", - "enparl": "//openparliament.ca/search/?q=\u0002\u00010", - "enports": "http://openports.se/search.php?so=\u0002\u000126", - "enprocessing": "http://www.openprocessing.org/search/?q=\u0002\u00010", - "enradar": "http://openradar.appspot.com/search?query=\u0002\u00010", - "enrent": "//www.openrent.co.uk/properties-to-rent/\u0002\u00010", - "enrepos": "//openrepos.net/search/node/\u0002\u00010", - "enrice": "http://www.openrice.com/zh/hongkong/restaurant/sr1.htm?tc=sr1quick&s=1®ion=0&inputstrwhat=\u0002&inputstrwhere=\u00010", - "ensecrets": "http://www.opensecrets.org/usearch/?q=\u0002\u00010", - "ensource": "//opensource.com/sitewide-search?search_api_views_fulltext=\u0002\u00010", - "enstax": "//cnx.org/search?q=\u0002\u00010", - "enstreet": { - "\u0010": "http://www.openstreetmap.org/?query=\u0002\u000140", - "map": { - "\u0010": "http://www.openstreetmap.org/?query=\u0002\u000140", - "wiki": "//wiki.openstreetmap.org/wiki/Special:Search?search=\u0002&go=Go\u00010" - } - }, - "ensuse": { - "\u0010": "http://en.opensuse.org/Special:Search?search=\u0002\u00013", - "software": "http://software.opensuse.org/search?q=\u0002\u000118" - }, - "enthebox": "//openthebox.be/search?q=\u0002&v=t\u00010", - "enuni": "http://search.open.ac.uk/public/search/results?q=\u0002\u00010", - "enuserjs": "//openuserjs.org/?q=\u0002\u00010", - "era": { - "\u0010": "//addons.opera.com/addons/extensions/?query=\u0002\u00013", - "ext": "//addons.opera.com/addons/extensions/?query=\u0002&order=new&top=0\u00010" - }, - "euw": "http://euw.op.gg/summoner/userName=\u0002\u00018", - ".gg": "http://www.op.gg/summoner/userName=\u0002\u000169", - "las": "http://las.op.gg/summoner/userName=\u0002\u00010", - "oce": "http://oce.op.gg/summoner/userName=\u0002\u00010", - "ood": "//www.oomipood.ee/product/search?q=\u0002\u00010", - "skins": "//opskins.com/index.php?search_item=\u0002&min=&max=&grade=Grade&type=Type&sort=f&loc=shop_search\u00010", - "ticsplanet": "//www.opticsplanet.com/s/\u0002\u00010", - "timot": "http://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?action=Principal&method=cerca_generica&input_cercar=\u0002&tipusCerca=cerca.tot\u000124", - "toma": "//www.optomaeurope.com/search?query=\u0002\u00010", - "tus": "//www.optus.com.au/customercentre/search?query=\u0002\u00010", - "ussoftware": "http://www.opus-software.com.br/?s=\u0002\u00010" - }, - "r": { - "d": { - "\u0010": "//ne.ord.se/ordbok/svenska/engelska/s%C3%B6k/\u0002\u00017", - "fr": "http://www.ord.se/oversattning/franska/?s=\u0002&l=FRASVE\u00010", - "sv": "http://www.ord.se/oversattning/Svenska/?s=\u0002&l=SVESVE\u00010", - "bog": { - "\u0010": "//beta.ordbogen.com/da/search#/\u0002\u00014", - "en": "http://www.ordbogen.com/opslag.php?word=\u0002&dict=auto\u000120" - }, - "bok": "http://ordbok.uib.no/perl/ordbok.cgi?OPP=+\u0002&ant_bokmaal=5&ant_nynorsk=5&begge=+&ordbok=begge\u000129", - "guru": "//www.ordguru.se/synonymer/sök?q=\u0002\u00010", - "net": { - "\u0010": "http://ordnet.dk/ddo/ordbog?query=\u0002\u00010", - "t": "//www.ordnett.no/search?language=no&phrase=\u0002\u00010", - ".dk": "http://ordnet.dk/ddo/ordbog?query=\u0002+&search=S%C3%B8g\u00014" - } - }, - "e": { - "d": "//old.reddit.com/search?q=\u0002&sort=relevance&t=all\u0001543", - "\u0010": "//ore.spongepowered.org/?q=\u0002\u00013", - "ll": "//www.orellfuessli.ch/suche?utf8=%E2%9C%93&filterPATHROOT=&sq=\u0002\u00010", - "gon": "//duckduckgo.com/?q=\u0002+site%3Atheoregoncoast.info\u00010", - "illy": { - "\u0010": "http://search.oreilly.com/?q=\u0002\u00010", - "auto": "//www.oreillyauto.com/search/?q=\u0002\u00013" - } - }, - "f": { - "o": { - "\u0010": "http://www.orfoqrafiya.az/aze/\u0002\u00010", - "qrafiya": "http://www.orfoqrafiya.az/aze/?q=\u0002\u00010" - }, - "\u0010": "http://tvthek.orf.at/search?q=\u0002\u00010" - }, - "g": "//duckduckgo.com/?q=site:http://orgmode.org/manual/+\u0002\u00010", - "\u0010": "//or.justice.cz/ias/ui/rejstrik-$firma?jenPlatne=PLATNE&nazev=\u0002&polozek=50&typHledani=STARTS_WITH\u00018", - "s": "//old.reddit.com/r/\u0002/\u00011056", - "u": "//www.oru.se/funktioner/sokresultat/?query=\u0002\u00010", - "ly": "//learning.oreilly.com/search/?query=\u0002\u000111", - "ms": "//www.ormsdirect.co.za/catalogsearch/result/index/?q=\u0002\u00010", - "acle": "//www.oracle.com/search/results?Ntt=\u0002&Dy=1&Nty=1&Ntk=SI-ALL5\u00010", - "adocs": "//docs.oracle.com/apps/search/search.jsp?q=\u0002\u00016", - "cid": "//orcid.org/orcid-search/quick-search?searchQuery=\u0002 \u000114", - "iantnu": "//bibsys-almaprimo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=NTNU_UB&lang=no_NO&offset=0\u00010", - "igin": "//www.origin.com/en-us/store/browse?q=\u0002\u00010", - "ing": "http://www.theoringstore.com/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010", - "thodoxwiki": "http://orthodoxwiki.org/index.php?title=Special%3ASearch&search=\u0002\u00010", - "thonet": "http://orthonet.sdv.fr/php/rech_mot.php?mot=\u0002&x=0&y=0\u00010" - }, - "s": { - "a": { - "a": "http://osaa.dk/wiki/index.php?title=Speciel%3ASearch&search=\u0002&go=Gå+til\u00010", - "\u0010": "//www.osapublishing.org/search.cfm?q=\u0002\u00010", - "lt": "//osalt.com/search?q=\u0002\u00013" - }, - "c": "//oscobo.co.uk/search.php?q=\u0002\u00010", - "f": "//osf.io/search/?q=\u0002\u00010", - "i": "http://opensource.org/search/node/\u0002\u00010", - "l": { - "\u0010": "//libraries.io/search?q=\u0002\u00010", - "o": "//www.oslo.kommune.no/sokeresultater/?q=\u0002\u00010", - "ri": "//encore.oslri.net/iii/encore/search?target=\u0002\u00010" - }, - "m": { - "c": { - "\u0010": "//discourse.osmc.tv/search?q=\u0002\u00010", - "ha": "//osmcha.mapbox.com/changesets/\u0002\u00010" - }, - "\u0010": "//www.openstreetmap.org/search?query=\u0002\u000144", - "w": { - "\u0010": "http://wiki.openstreetmap.org/w/index.php?title=Special%3ASearch&search=\u0002\u0001212", - "ay": "//www.openstreetmap.org/way/\u0002\u00014", - "iki": "//wiki.openstreetmap.org/wiki/Special:Search?search=\u0002&go=Go\u00010" - }, - "fr": "http://tile.openstreetmap.fr/?q=\u0002\u00010", - "forum": { - "\u0010": "http://forum.openstreetmap.org/search.php?action=search&keywords=\u0002&author=&forums=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics\u00010", - "nl": "//forum.openstreetmap.org/search.php?action=search&keywords=\u0002&forums[]=12\u00010" - }, - "link": "http://www.openlinkmap.org/?q=\u0002\u00010", - "node": "//www.openstreetmap.org/node/\u0002\u00010", - "relation": "//www.openstreetmap.org/relation/\u0002\u00010" - }, - "\u0010": "http://software.opensuse.org/search?utf8=✓&q=\u0002&search_devel=false&search_unsupported=false&baseproject=openSUSE:13.1\u000129", - "r": { - "m": "http://map.project-osrm.org/?dest=\u0002\u00010", - "\u0010": "//old.reddit.com/r/\u0002\u00014015", - "s": { - "\u0010": "//oldschool.runescape.wiki/?search=\u0002&title=Special%3ASearch\u00011819", - "w": { - "\u0010": "//oldschool.runescape.wiki/?search=\u0002\u000112", - "iki": "//oldschool.runescape.wiki/?search=\u0002\u000112" - }, - "ge": "http://services.runescape.com/m=itemdb_oldschool/results?query=\u0002\u00010", - "hs": "http://services.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=\u0002\u000117" - } - }, - "s": "//www.osstatus.com/search/results?platform=all&framework=all&search=\u0002\u00010", - "t": { - "a": { - "\u0010": "http://www.osta.ee/index.php?q[q]=\u0002&fuseaction=search.search&q[show_items]=1&q[show_shop]=1&q[cat]=1000&search=OTSI\u00010", - "dium": "http://ostadium.com/search?q=\u0002\u00010", - "rrichi": "http://www.ostarrichi.org/dictionary-search.html?search=\u0002\u00010" - }, - "\u0010": "//www.openstreetmap.org/search?query=\u0002\u000144", - "ech": "//www.ostechnix.com/?s=\u0002\u00010" - }, - "u": { - "f": "http://osu.ppy.sh/forum/search.php?keywords=\u0002&terms=all&author=&sc=1&sd=d&sr=posts&ch=300&t=0&submit=Search\u00010", - "\u0010": "//osu.ppy.sh/home/search?query=\u0002\u0001167", - "s": "http://osusearch.com/search/?title=\u0002\u00010", - "u": "//osu.ppy.sh/u/\u0002\u000126", - "mmon": "//oberlin.summon.serialssolutions.com/search?q=\u0002\u00010" - }, - "w": "//en.opensuse.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00014", - "x": { - "\u0010": "//developer.apple.com/search/?q=\u0002&platform=OS%20X\u00010", - "daily": "http://osxdaily.com/gsearch/?cx=partner-pub-7321635426958037%3A1x5yj0-316e&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&sa=Search\u00010" - }, - "dn": "//osdn.net/search/?iq=\u0002\u00010", - "dev": "//wiki.osdev.org/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u000151", - "news": "http://www.osnews.com/search?q=\u0002\u00010" - }, - "t": { - "4": "//optochip.org/search/?q=\u0002\u00010", - "\u0010": "//templates.office.com/en-US/Search/results?query=\u0002\u00010", - "n": "//community.oracle.com/search.jspa?q=\u0002\u00010", - "t": { - "o": { - "\u0010": "//www.otto.de/suche/\u0002/\u000110", - "bibtex": "http://www.ottobib.com/isbn/\u0002/bibtex\u00010", - "office": "http://www.otto-office.com/de/search/si.obtshop?query[query]=\u0002\u00010" - }, - "\u0010": "//ottawa.ca/en/search?searchfield=\u0002\u00010", - "awacitizen": "//ottawacitizen.com/?s=\u0002\u00010" - }, - "w": "http://overpass-turbo.eu/?w=\u0002&R\u000112", - "rd": "http://onelook.com/thesaurus/?s=\u0002\u00010", - "hde": "//www.openthesaurus.de/synonyme/\u0002\u000117", - "hesa": "//www.openthesaurus.de/synonyme/\u0002\u000117" - }, - "u": { - "p": "//offerup.com/search/?q= \u0002\u00010", - "\u0010": "http://www.ou.edu/content/web/search.html?q=\u0002\u00015", - "icar": "http://www.ouicar.fr/car/search?where=\u0002&from=ddgbang\u00010", - "rdocs": "//our.umbraco.com/search?q=\u0002&cat=documentation\u00010", - "tclock": "http://www.outclock.org/index.php?searchword=\u0002&searchphrase=all&Itemid=548&option=com_search\u00010", - "tdoorandcountry": "//www.outdoorandcountry.co.uk/search/go?w=\u0002 \u00010", - "tletpc": "http://www.outlet-pc.es/?q=\u0002:\u00010", - "tlook": "//mail.live.com/default.aspx?skws=hello#fid=flsearch&srch=1&skws=\u0002&sdr=4&satt=0\u0001422", - "tsidemag": "//www.outsideonline.com/search/site/\u0002\u00010" - }, - "v": { - "d": "//www.overdrive.com/search?q=\u0002\u00013", - "i": "http://store.ovi.com/search?q=\u0002\u00010", - "\u0010": "http://stackoverflow.com/search?q=\u0002\u00019", - "erdrive": "//www.overdrive.com/search?q=\u0002\u00013", - "erstock": "http://www.overstock.com/search?keywords=\u0002\u00010", - "erwatch": "http://overwatch.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u000122" - }, - "w": { - "c": "//eshop.macsales.com/search/?q=\u0002\u00010", - "d": "http://webstersdictionary1828.com/Dictionary/\u0002\u00019", - "l": { - "\u0010": "http://buscador.lechuza.org/resultados.php?texto=\u0002&xx=buscar\u00010", - "er": "//www.owler.com/iaApp/browsecompanyprofiles.htm?searchTerm=\u0002\u00010", - "iquipedia": "//liquipedia.net/overwatch/index.php?search=\u0002\u00010", - "-you-need": "http://www.owl-you-need.de/suche/\u0002\u00010" - }, - "m": { - "\u0010": "http://openweathermap.org/find?q=\u0002\u000128", - "aster": "//masteroverwatch.com/search/\u0002\u00010" - }, - "\u0010": "//openwhyd.org/search?q=\u0002\u000110", - "s": { - "\u0010": "//addons.opera.com/ru/search/?query=\u0002&type=extensions\u00010", - "r": "//www.reddit.com/r/Overwatch/search?q=\u0002&restrict_sr=on\u00010" - }, - "id": "http://www.owid.de/suche/wort?wort=\u0002\u00010", - "rt": "//openwrt.org/doku.php?do=search&id=start&q=\u0002\u00010", - "asp": "//www.owasp.org/index.php?search=\u0002\u00010", - "gamepedia": "//overwatch.gamepedia.com/index.php?search=\u0002&title=Special:Search&go=Go\u00010", - "orks": "//www.officeworks.com.au/shop/SearchDisplay?searchTerm=\u0002\u00010" - }, - "x": { - "l": "//www.oxfordlearnersdictionaries.com/definition/english/\u0002_1?isEntryInOtherDict=false\u0001256", - "\u0010": "//www.lexico.com/search?utf8=%E2%9C%93&filter=dictionary&dictionary=en&query=\u0002\u000143", - "s": "//en.oxforddictionaries.com/thesaurus/\u0002\u00010", - "t": "//en.oxforddictionaries.com/thesaurus/\u0002\u00010", - "ed": "http://www.oxforddictionaries.com/definition/english/\u0002\u00010", - "bib": "http://www.oxfordbibliographies.com/search?q=\u0002\u00010", - "enes": "//es.oxforddictionaries.com/translate/english-spanish/\u0002\u00010", - "esen": "//es.oxforddictionaries.com/translate/spanish-english/\u0002\u00010", - "ford": { - "\u0010": "//en.oxforddictionaries.com/definition/\u0002\u000139", - "dictionaries": "http://www.oxforddictionaries.com/definition/english/\u0002\u00010", - "learners": "http://www.oxfordlearnersdictionaries.com/definition/english/\u0002\u000143", - "ref": "http://www.oxfordreference.com/search?siteToSearch=aup&q=\u0002\u00015" - }, - "fren": "//premium.oxforddictionaries.com/translate/french-english/\u0002?q=insoumise&searchDictCode=english-french\u00010" - }, - "z": { - "b": { - "\u0010": "//www.ozbargain.com.au/search/node/\u0002\u00014", - "argain": "//www.ozbargain.com.au/search/node/\u0002\u00014" - }, - "\u0010": "http://oz.by/search/?q=\u0002\u00010", - "er": "//outdoorzer.com/s=\u0002\u00010", - "on": "http://www.ozon.ru/?context=search&text=\u0002\u000114", - "dic": "http://www.ozdic.com/collocation-dictionary/\u0002\u00010", - "smoke.com.au": "//ozsmoke.com.au/search/?q=\u0002\u00010", - "stoners": "//cannabis.community.forums.ozstoners.com/index.php?app=core&module=search&do=search&andor_type=and&sid=58ffdab89aaeb17e49a50f52929f35d6&search_content=both&search_app_filters[ccs][searchInKey]=pages&search_app_filters[ccs][pages][sortKey]=date&search_app_filters[ccs][pages][sortDir]=0&search_app_filters[ccs][database_1][sortKey]=date_added&search_app_filters[ccs][database_1][sortDir]=0&search_term=\u0002&search_app=forums\u00010" - }, - "ab": "//openaccessbutton.org/?url=\u0002\u00010", - "ad": "http://www.oxforddictionaries.com/definition/american_english/\u0002\u00014", - "as": "//www.offresasaisir.fr/recherche?q=\u0002\u00010", - "ec": "http://www.oeconsortium.org/courses/search/?search= \u0002 \u00010", - "ed": "http://www.oed.com/search?searchType=dictionary&q=\u0002&_searchBtn=Search\u000185", - "el": "//affygility.com/oel/search.html?addsearch=\u0002\u00010", - "em": "http://www.oemstrade.com/search/\u0002\u00010", - "er": "http://www.oercommons.org/search?f.search=\u0002\u00010", - "kc": { - "\u0010": "//okcupid.com/profile/\u0002\u000114", - "aller": "http://www.okcaller.com/detail.php?number=\u0002\u000110" - }, - "mg": { - "c": { - "\u0010": "http://www.omgchrome.com/?s=\u0002\u00010", - "hrome": "http://www.omgchrome.com/?s=\u0002\u00010" - }, - "h": "//omghackers.com/?s=\u0002\u00010", - "\u0010": "http://www.omgubuntu.co.uk/?s=\u0002 \u000158", - "u": { - "\u0010": "http://www.omgubuntu.co.uk/?s=\u0002\u00010", - "buntu": "http://www.omgubuntu.co.uk/?s=\u0002\u00010" - }, - "v": { - "\u0010": "//omgvoice.com/search?term=\u0002\u00010", - "oice": "//omgvoice.com/search?term=\u0002\u00010" - } - }, - "ms": "//www.onmsft.com/?s=\u0002\u000111", - "mt": "http://www.onemorething.nl/zoeken/\u0002/\u00010", - "mx": "//theomx.com/companies?keyword%5D=\u0002\u00010", - "qc": "//www.ouquoicomment.ch/?s=\u0002&search_by=all\u00010", - "yz": "//www.oyez.org/search/\u0002\u00013", - "aad": "//www.oxfordlearnersdictionaries.com/definition/american_english/\u0002\u00010", - "ald": "//www.oxfordlearnersdictionaries.com/search/english/?q=\u0002\u0001210", - "api": "http://overapi.com/\u0002\u00010", - "atmeal": "//duckduckgo.com/?q=\u0002+site:theoatmeal.com\u00010", - "eis": "http://oeis.org/search?q=\u0002&language=english&go=Search\u0001133", - "eticket": "http://www.oeticket.com/Tickets.html?affiliate=EOE&fun=search&fuzzy=yes&doc=search&action=grouped&inline=false&suchbegriff=\u0002\u00010", - "jad": "http://www.gavo.t.u-tokyo.ac.jp/ojad/search/index/word:\u0002\u000126", - "jen": "//ojibwe.lib.umn.edu/search?utf8=%E2%9C%93&q=\u0002&commit=Search&type=ojibwe\u00010", - "kazii": "http://www.okazii.ro/cautare/\u0002.html?autoc=write\u00010", - "kidoki": "http://www.okidoki.ee/buy/all/?query=\u0002\u00010", - "kkazeo": "//www.okkazeo.com/jeux/searchJeux?rech_nom=\u0002\u00010", - "map": { - "\u0010": "//www.openstreetmap.org/search?query=\u0002\u000144", - "s": "http://omaps.worldofo.com/index.php?st=\u0002\u00010" - }, - "mbe": "http://www.ombe.com/find/\u0002 \u00010", - "mdb": "//www.omdb.org/search?search%5Btext%5D=\u0002\u00016", - "meka": "//forum.omeka.org/search?q=\u0002\u00010", - "megawiki": "http://www.omegawiki.org/index.php?search=\u0002\u00010", - "melete": "//omelete.uol.com.br/busca/?q=\u0002\u00010", - "mevan": "//www.omevan.com/search?q=\u0002:\u00010", - "mfr": "http://open.mapquest.fr/?q=\u0002 \u00010", - "mim": "http://omim.org/search?index=entry&sort=score+desc%2C+prefix_sort+desc&start=1&limit=10&search=\u0002 \u00010", - "mni": "http://omni.se/sok?q=\u0002\u00015", - "mnum": "http://omnum.se/search/?q=\u0002\u00010", - "yez": "//www.oyez.org/search/\u0002\u00013" - }, - "õ": { - "\u0010": "http://www.eki.ee/dict/qs/index.cgi?Q=\u0002\u00010", - "s": "http://www.eki.ee/dict/qs/index.cgi?Q=\u0002\u00010" - }, - "p": { - "5": "//p5js.org/reference/#/p5/\u0002\u00010", - "a": { - "c": { - "\u0010": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&flagged=\u0001556", - "k": { - "\u0010": "//packagist.org/search/?q=\u0002\u000189", - "t": "//www.packtpub.com/all/?search=\u0002 \u00014", - "et": "http://packetstormsecurity.com/search/?q=\u0002\u00010", - "age": "http://www.packagemapping.com/?action=track&tracknum=\u0002\u00017", - "agist": "//packagist.org/search/?q=\u0002\u000189", - "ers": "http://packers.com/?=\u0002\u00010", - "man": "http://packman.links2linux.org/search?q=\u0002\u00010" - }, - "o": "//www.pacogames.com/search?q=\u0002\u00010", - "ific": "//www.pacificpkg.com/search.php?kw=\u0002\u00010", - "man": "//www.archlinux.org/packages/?sort=&q=\u0002\u0001209" - }, - "d": { - "\u0010": "http://pad.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00013", - "x": "http://www.puzzledragonx.com/en/search.asp?q=\u0002\u00010" - }, - "i": "http://www.pai.pt/q/business/advanced/what/\u0002/?contentErrorLinkEnabled=true\u00010", - "n": { - "\u0010": "//panlexicon.com/?q=\u0002 \u00010", - "da": { - "\u0010": "http://pandalook.com/search?controller=search&search_query=\u0002 \u00010", - "s": "http://pandas.pydata.org/pandas-docs/stable/search.html?q=\u0002&check_keywords=yes&area=default\u0001142" - }, - "dora": "//www.pandora.com/search/\u0002/all\u00014", - "ideas": "//www.theideaskitchen.co.uk/search/-\u0002\u00010", - "stwo": "//mojepanstwo.pl/?q=\u0002\u00010", - "tip": "//pantip.com/search?q=\u0002\u00010", - "tone": "//www.pantone.com/color-finder?q=\u0002\u00010" - }, - "\u0010": "//www.paginasamarillas.es/search/all-ac/all-ma/all-pr/all-is/all-ci/all-ba/all-pu/all-nc/1?what=\u0002\u00010", - "p": { - "\u0010": "http://www.papskubber.dk/?q=\u0002&s=search&submitbutton=S%C3%B8g\u00013", - "er": { - "\u0010": "//paperity.org/search/?q=\u0002\u00014", - "s": { - "\u0010": "http://scholar.google.com/scholar?as_ylo=2000&q=\u0002&as_sdt=1,5&as_vis=1&num=100\u0001120", - "era": "http://www.papersera.net/cgi-bin/yabb/YaBB.cgi\u0002 \u00010" - } - }, - "ps": "http://portableapps.com/search/node/\u0002%20type%3Aapp\u00010" - }, - "t": { - "g": "//patents.google.com/?q=\u0002\u00014", - "m": "http://www.pauker.at/app.php/DE_DE/?s=\u0002#suche\u00010", - "\u0010": "http://www.pauker.at/pauker/DE_DE/EN/wb?modus=&suche=\u0002&page=1#\u00010", - "ft": "http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&r=0&f=S&l=50&d=PTXT&OS=&RS=%22\u0002%22&Query=%22\u0002%22&TD=&Srch1=%22\u0002%22&NextList1=xxx\u00010", - "he": { - "\u0010": "//www.pathe.nl/Zoek?q=\u0002\u00010", - "os": "//www.patheos.com/search?q=\u0002\u00010" - }, - "ent": "//patents.google.com/?oq=\u0002\u000124", - ".fi": "http://www.pauker.at/pauker/DE_DE/FI/wb/?modus=&suche=\u0002&page=1#\u00010", - ".pt": "http://www.pauker.at/pauker/DE_DE/PT/wb/?modus=&suche=\u0002&page=1#\u00010", - ".sv": "http://www.pauker.at/pauker/DE_DE/SE/wb?modus=&suche=\u0002&page=1#\u00010", - "hfinderwiki": "//pathfinderwiki.com/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u00010", - "hsrd": "http://paizo.com/search?q=\u0002&what=prd\u00010", - "hway": "//www.wholesalehome.com/collections/outdoor-\u0002-lighting\u00010", - "ient": { - "\u0010": "//patient.info/search.asp?searchterm=\u0002&searchcoll=All\u00010", - "uk": "//patient.info/search.asp?searchterm=\u0002\u00010", - "info": "//patient.info/search.asp?searchterm=\u0002\u00010" - }, - "reon": "http://www.patreon.com/search?q=\u0002 \u000113" - }, - "w": "http://wiki.archusers.ir/index.php?search=\u0002\u00010", - "bn": "//www.prothomalo.com/search/?q=\u0002\u00010", - "o1": "http://www.pseudomonas.com/searchAnnotation.do?strain_ids=107&field1=commonNameFields&input1=\u0002\u00010", - "ss": { - "\u0010": "http://www.passwird.com/search?query=\u0002\u00013", - "apalavra": "http://passapalavra.info/?s=\u0002\u00010", - "mark": "http://www.passmark.com/search/zoomsearch.php?zoom_query=\u0002&search=Search\u000126" - }, - "gely": "//pagely.com/?s=\u0002\u00010", - "gesblanches": "//www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=\u0002\u00010", - "gesjaunes": "//www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=\u0002&monochamp=\u0002\u00013", - "gespeed": "//developers.google.com/speed/pagespeed/insights/?url=\u0002\u000110", - "gine": "http://www.paginegialle.it/pgol/4-\u0002\u00010", - "latinelibrary": "http://encore.palatinelibrary.org/iii/encore/search?target=\u0002\u00010", - "leo": { - "\u0010": "//www.paleohacks.com/searches?utf8=%E2%9C%93&query=\u0002&commit=Search\u00010", - "leap": "http://paleoleap.com/?s=\u0002\u00010" - }, - "lemoon": "http://forum.palemoon.org/search.php?keywords=\u0002\u00010", - "lio": "http://www.ilpalio.siena.it/5/cerca.aspx?q=\u0002\u00010", - "loalto": "//www.paloaltonetworks.com/documentation/document-search.html?q=\u0002\u00010", - "okfc": "http://www.paokfc.gr/en/?s=\u0002\u00010", - "rabola": { - "\u0010": "//www.parabola.nu/packages/?q=\u0002\u000113", - "w": "//wiki.parabola.nu/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010" - }, - "radigit": "//www.paradigit.nl/zoekresultaten/?tn_q=\u0002\u00010", - "rawiki": "//wiki.parabola.nu/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "rcels": "http://parcelsapp.com/en/tracking/\u0002\u00015", - "rcello": "//www.parcello.org/tracking?tid=\u0002\u00010", - "risreview": "http://www.theparisreview.org/search?q=\u0002\u00010", - "rker": "//www.parker.com/portal/site/PARKER/menuitem.c9e5838e8a4c0934704b7b10237ad1ca/?selectCategory=all&vgnextfmt=EN&vgnextoid=941b13fc0fa14110VgnVCM10000032a71dacRCRD&newSearch=1&searchbox=\u0002\u00010", - "rking": "http://www.parkwhiz.com/search/?destination=\u0002\u00010", - "rkrun": "//www.parkrun.com/search?cx=partner-pub-2762663671557547%3A1576658957&cof=FORID%3A11&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.parkrun.com%2F&ref=&ss=631j112681j5\u00010", - "rts": { - "\u0010": "http://parts.io/search/term-\u0002 \u00010", - "dr": "http://partsdr.com/model-number-search/?query=\u0002\u00010" - }, - "rticleforums": "//community.particle.io/users/\u0002/\u00010", - "setrad": "http://www.pasetrad.com/search-engine.html?#gsc.tab=0&gsc.q=\u0002&gsc.sort==\u00010", - "stebin": "http://pastebin.com/search?cx=partner-pub-4339714761096906%3A1qhz41g8k4m&cof=FORID%3A10&ie=UTF-8&q=\u0002\u000111", - "uker": "http://www.pauker.at/pauker/DE_EN/EN/wb/?modus=&suche=\u0002&page=1#\u00010", - "uly": "http://referenceworks.brillonline.com/search?s.q=\u0002&s.f.s2_parent=s.f.book.der-neue-pauly&search-go=Search\u00010", - "xgal": "http://www.paxinasgalegas.es/resultados.aspx?tipo=0&texto=\u0002\u00010", - "yday": "http://payday.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "ypal": "//www.paypal.com/us/selfhelp/search?q=\u0002&helpSearchButton=Search\u000141", - "yscale": "http://www.payscale.com/rcsearch.aspx?category=&str=\u0002&CountryName=United+States&SourceId=%2Fresearch%2FUS%2FCountry%3DUnited_States%2FSalary\u00010", - "ytm": { - "\u0010": "//paytm.com/shop/search/?q=\u0002\u00010", - "mall": "//paytmmall.com/shop/search?q=\u0002&from=organic&child_site_id=6&site_id=2&brand=16051\u00010" - } - }, - "b": { - "c": "//www.probuilds.net/champions/details/\u0002\u00010", - "f": "http://pbfcomics.com/?s=\u0002\u00010", - "l": "http://www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=\u0002&proximite=0\u00010", - "\u0010": "http://pinboard.in/search/?query=\u0002&mine=Search+Mine\u000141", - "s": { - "\u0010": "//www.pbs.org/search/?q=\u0002\u000111", - "wap": "http://www.paperbackswap.com/book/browser.php?k=\u0002\u00010" - }, - "kids": "http://www.potterybarnkids.com/search/results.html?words=\u0002\u00010", - "olo": "//pbolo.com/?s=\u0002\u00010", - "one": "http://rpm.pbone.net/index.php3?stat=3&search=\u0002&Search.x=0&Search.y=0&simple=1&srodzaj=1\u00010", - "tag": "//pinboard.in/t:\u0002 \u00010", - "tech": "//www.pbtech.co.nz/search?sf=\u0002\u00018", - "teen": "http://www.pbteen.com/search/results.html?words=\u0002\u00013", - "wiki": "//polandball.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "c": { - "c": { - "g": "http://search.pccasegear.com/search#w=\u0002 \u000112", - "o": { - "\u0010": "//www.pccomponentes.com/buscar/?query=\u0002\u00019", - "mponentes": "//www.pccomponentes.com/buscar/?query=\u0002\u00019" - }, - "\u0010": "http://www.pcconnection.com/IPA/Shop/Product/Search.htm?SearchType=1&term=\u0002\u00010" - }, - "d": "//www.pcdiga.com/catalogsearch/result/?q=\u0002\u00010", - "g": { - "n": "//www.pcgamesn.com/search/\u0002\u00010", - "\u0010": "//www.pcgamer.com/search/?searchTerm=\u0002\u00013", - "w": "//pcgamingwiki.com/w/index.php?search=\u0002\u0001844", - "amingwiki": "http://pcgamingwiki.com/w/index.php?search=\u0002\u000161", - "uia": "http://www.pcguia.pt/?s=\u0002\u00010" - }, - "h": "http://pch.com/?=\u0002\u00010", - "i": { - "o": "//packagecontrol.io/search/\u0002\u00010", - "\u0010": "http://www.pcinpact.com/recherche?_search=\u0002\u00010", - "dss": "//www.pcisecuritystandards.org/search/search.php?query=\u0002\u00010" - }, - "l": { - "o": "//www.parcello.org/tracking?tid=\u0002\u00010", - "\u0010": "http://docs.pointclouds.org/trunk/search.php?query=\u0002\u00010", - "ick": "//picclick.co.uk/?q=\u0002\u00010" - }, - "\u0010": "http://www.presidentschoice.ca/en_CA/search-page.query@\u0002.html\u00016", - "s": { - "\u0010": "//www.procyclingstats.com/search.php?term=\u0002\u000134", - "x2": "//wiki.pcsx2.net/index.php?search=\u0002\u00010" - }, - "24": "http://ecshweb.pchome.com.tw/search/?q=\u0002\u00015", - "at": "//catalog.princeton.edu/catalog?utf8=✓&search_field=all_fields&q=\u0002\u00010", - "ks": "http://www.peacocks.co.uk/catalogsearch/result/?q=\u0002\u00010", - "mr": "//www.reddit.com/r/pcmasterrace/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010", - "oo": "//pcoo.gov.ph/?s=\u0002\u00010", - "pp": "http://pcpartpicker.com/search/?q=\u0002\u00018", - "asio": "//www.planet-casio.com/Fr/aide/recherche.php?q=\u0002\u00010", - "mag": "http://www.pcmag.com/search_redirect/?qry=\u0002&searchSection=0&site=3\u00013", - "masters": "http://www.pcmasters.de/suche?search_keywords=\u0002\u00010", - "omp": "//www.pccomponentes.com/buscar/?query=\u0002\u00019", - "partpicker": "http://pcpartpicker.com/search/?q=\u0002\u00018", - "per": "http://www.pcper.com/search/node/\u0002\u00010", - "trl": "//packagecontrol.io/search/\u0002\u00010", - "welt": "//www.pcwelt.de/suche?searchStr=\u0002\u00010", - "world": { - "\u0010": "http://www.pcworld.com/search?qt=\u0002&tk=srch_top\u00010", - "bg": "http://pcworld.bg/search/all/\u0002\u00010" - } - }, - "d": { - "b": { - "e": "//www.ebi.ac.uk/pdbe/entry/search/index/?searchParams={\"\"text\"\":[{\"\"value\"\":\"\"\u0002\"\",\"\"condition1\"\":\"\"AND\"\",\"\"condition2\"\":\"\"Contains\"\"}]}\u00010", - "\u0010": "http://www.rcsb.org/pdb/search/navbarsearch.do?f=&q=\u0002\u000132" - }, - "f": { - "\u0010": "/?q=\u0002+filetype:pdf\u0001140", - "y": "//www.printfriendly.com/print/?source=site&url=\u0002\u00010" - }, - "l": "//www.placedeslibraires.fr/listeliv.php?mots_recherche=\u0002&base=allbooks\u00014", - "\u0010": "http://folkets-lexikon.csc.kth.se/folkets/folkets.en.html#lookup&\u0002&0\u000127", - "x": "http://puzzledragonx.com/en/search.asp?q=\u0002&searchoption=1\u00010", - "cstlst": "//podcastlist.ca/?s=\u0002\u00010", - "ict.cc": "http://pocket.dict.cc/?s=\u0002\u00010", - "preddit": "//www.reddit.com/r/PewdiepieSubmissions/search?q=\u0002&restrict_sr=1\u00010", - "qtglobal": "http://fedsearch.proquest.com/search/sru/pqdtglobal?operation=searchRetrieve&version=1.2&maximumRecords=30&query=\u0002\u00010", - "qtopen": "//pqdtopen.proquest.com/results.html?QryTxt=\u0002\u00010" - }, - "e": { - "\u0010": "//www.infopedia.pt/dicionarios/pesquisa/\u0002\u00010", - "f": "//candidat.pole-emploi.fr/offres/recherche?motsCles=\u0002\u00010", - "p": { - "\u0010": "http://www.python.org/dev/peps/pep-\u0002/\u000187", - "permintos": "//forum.peppermintos.com/index.php?action=search2&search=\u0002\u00010", - "pernl": "//nl.pepper.com/search?q=\u0002\u00010", - "perplate": "http://www.pepperplate.com/search/?text=\u0002\u00010" - }, - "r": { - "i": "//www.periscope.tv/search?q=\u0002\u00010", - "l": { - "\u0010": "http://p3rl.org/\u0002\u00010", - "doc": "//perldoc.pl/search?q=\u0002\u000133", - "mod": { - "6": "//modules.perl6.org/search/?q=\u0002\u00010", - "\u0010": "http://p3rl.org/\u0002\u00010" - }, - "monks": "http://www.perlmonks.org/?node=\u0002\u00010" - }, - "\u0010": "//personality-database.com/search?q=\u0002\u000139", - "ch": "http://forum.grabaperch.com/forum/search?query=\u0002\u00010", - "dola": "//childishgiant.github.io/perdola/?app=\u0002\u00010", - "ezhilton": "http://perezhilton.com/?s=\u0002\u00010", - "fectgame": "//www.perfectgame.org/Search.aspx?search=\u0002\u00010", - "fil": "http://www.perfil.com/buscador/?q=\u0002\u00013", - "rypedia": "http://www.perrypedia.proc.org/mediawiki/index.php?search=\u0002\u00010", - "see": "http://www.persee.fr/search?q=\u0002\u00010", - "seus": "http://www.perseus.tufts.edu/hopper/searchresults?q=\u0002\u00014", - "u21": "//peru21.pe/buscar/?query=\u0002\u00010" - }, - "ar": "http://pear.php.net/search.php?in=packages&x=0&y=0&q=\u0002\u00010", - "cl": "http://pecl.php.net/package-search.php?pkg_name=\u0002\u00010", - "ek": "//peekier.com/#!\u0002\u000120", - "gi": "//pegi.info/search-pegi?q=\u0002\u00010", - "apod": "//www.peapod.com/product-search/\u0002\u00010", - "ctive": "http://pective.com/search?q=\u0002\u00010", - "diaa": "//pediaa.com/?s=\u0002\u00010", - "digree": "http://www.pedigreedatabase.com/search.html?q=\u0002 \u00010", - "eron": "http://peeron.com/cgi-bin/invcgis/psearch?query=\u0002&limit=none\u00010", - "eringdb": "//www.peeringdb.com/search?q=\u0002\u00010", - "gasos": "http://pegasos.kirjas.to/selaushaku.asp?kohde=vapaasana&hakuehto=\u0002\u00010", - "ggo": "http://peggo.co/search/\u0002\u00010", - "ixe": "//www.peixeurbano.com.br/#q=\u0002\u00010", - "lando": "//www.pelando.com.br/search?q=\u0002\u000111", - "ngicau": "//pengicau.com/w/index.php?search=\u0002&title=Special%3ASearch&fulltext=1\u00010", - "nguinmagic": "http://www.penguinmagic.com/s/\u0002\u00010", - "nnbooks": "//onlinebooks.library.upenn.edu/webbin/book/search?author=&amode=words&title=\u0002&tmode=words&c=x\u00010", - "nnydeals": "http://pennydeals.in/usearch.php?search=\u0002\u00010", - "ople": "//people.zoho.com/people/#selfservice/directory/employees-searchstring=\u0002&searchType=0\u00017", - "tco": "http://www.petco.com/shop/SearchDisplay?categoryId=&storeId=10151&catalogId=10051&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=&beginIndex=0&pageSize=24&fromPageValue=search&searchTerm=\u0002\u00013", - "teyvid": "//www.peteyvid.com/index.php?q=\u0002\u00010", - "titweb": "http://www.petitweb.fr/?s=\u0002\u00010", - "tsmart": { - "\u0010": "http://www.petsmart.com/search/?q=\u0002\u00016", - "ca": "http://www.petsmart.ca/search?SearchTerm=\u0002\u00010" - }, - "wdiepie": "//www.youtube.com/user/PewDiePie/search?query=\u0002 \u00013", - "wnews": "//pewnews.org/?s=\u0002\u00010", - "xels": "http://www.pexels.com/search/\u0002/\u000142" - }, - "f": { - "i": "//poinformowani.pl/szukaj?q=\u0002\u00010", - "l": "http://www.portagefilelist.de/site/query/file/?file=\u0002&unique_packages=yes&do\u00010", - "\u0010": "//www.printfriendly.com/print/?source=site&url=\u0002\u00010", - "r": "http://www.pro-football-reference.com/search/search.fcgi?search=\u0002&pid=\u000179", - "s": { - "\u0010": "//cse.google.com/cse?cx=006680642033474972217%3A6zo0hx_wle8&q=\u0002\u000111", - "s": "//www.netgate.com/docs/pfsense/search.html?q=\u0002&check_keywords=yes&area=default\u00010" - }, - "w": { - "c": "http://www.portablefreeware.com/index.php?q=\u0002\u00010", - "\u0010": "http://www.portablefreeware.com/index.php?q=\u0002\u00010", - "iki": "http://phineasandferb.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "x": "http://www.brooksbaseball.net/search.php?name=\u0002\u00010", - "online": "http://www.pathfindersonline.org/component/search/?searchword=\u0002&ordering=newest&searchphrase=all\u00010" - }, - "g": { - "n": { - "o": "//prisguiden.no/sok?q=\u0002\u00010", - "\u0010": "//kontoutdrag.plusgirot.se/ku/sokko002?SO_KTO=\u0002\u00010" - }, - "p": { - "\u0010": "//pgp.mit.edu/pks/lookup?search=\u0002\u00010", - "key": "//api.posteo.de/v1/public-keys/\u0002?type=openpgp\u00010" - }, - "\u0010": "//www.gutenberg.org/ebooks/search/?query=\u0002\u000128", - "r": { - "i": "http://www.pgri.or.id/?s=\u0002\u00010", - "\u0010": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=greek\u00017" - }, - "de": "http://gutenberg.spiegel.de/suche?q=\u0002\u00010", - "fr": "//www.gutenberg.org/ebooks/search/?query=l.fr+\u0002\u00010", - "kb": "//www.pharmgkb.org/search?query=\u0002\u00010", - "docs": "http://www.postgresql.org/search/?u=%2Fdocs%2F&q=\u0002\u000110" - }, - "h": { - "e": { - "\u0010": "//careers.phenompeople.com/us/en/search-results?keywords=\u0002\u00010", - "t": "http://phet.colorado.edu/en/search?q=\u0002\u00010" - }, - "i": { - "\u0010": "http://latin.packhum.org/search?q=\u0002\u00010", - "sh": "http://phish.net/song/?s=\u0002\u00010", - "lenews": "http://www.philenews.com/search?kw=\u0002\u00010", - "lips": "//www.careers.philips.com/professional/global/en/search-results?keywords=\u0002\u00010", - "libert": "http://www.philibertnet.com/fr/recherche?orderby=position&orderway=desc&search_query=\u0002&submit_search=C%27est+parti+%21\u00013", - "lpapers": "http://philpapers.org/s/\u0002\u000110" - }, - "o": { - "\u0010": "//photics.com/?s=\u0002\u00010", - "ne": { - "\u0010": "http://www.whitepages.com/phone/\u0002 \u000114", - "arena": "http://www.phonearena.com/search/term/\u0002\u00010", - "more": "//www.phonemore.com/search/?q=\u0002\u00010", - "spell": "//phonespell.org/combo.cgi?n=\u0002\u00010" - }, - "ronix": "//www.phoronix.com/scan.php?page=search&q=\u0002\u000168", - "tics": "//photics.com/?s=\u0002\u00010", - "tobucket": "http://photobucket.com/images/\u0002/\u00019", - "tocrati": "http://www.photocrati.com/?s=\u0002\u00010", - "todune": "http://photodune.net/search?utf8=%E2%9C%93&term=\u0002\u00010", - "topin": "http://photopin.com/search/\u0002\u00010" - }, - "p": { - "\u0010": "//secure.php.net/manual-lookup.php?pattern=\u0002\u00010", - "2py": "http://www.php2python.com/wiki/search/?search_term=\u0002 \u00010", - "net": "//secure.php.net/manual-lookup.php?pattern=\u0002\u00010" - }, - "\u0010": "//www.producthunt.com/search?q=\u0002\u0001153", - "w": "//www.pharmawiki.ch/wiki/index.php?wiki=\u0002\u00010", - "y": { - "\u0010": "//www.physicsclassroom.com/?q=\u0002\u00010", - "se": "//physics.stackexchange.com/search?q=\u0002\u00010", - "sics": "//www.physicsforums.com/search/90229641/?q=\u0002&o=relevance \u00010", - "sse": "//physics.stackexchange.com/search?q=\u0002\u00010" - }, - "un": "http://phun.freeforums.org/search.php?keywords=\u0002\u00010", - "alcondoc": "//cse.google.com/cse?cx=009733439235723428699:lh9ltjgvdz8&q=validation&oq=validation&gs_l=partner.3...77240.79724.1.80133.10.10.0.0.0.0.325.1627.4j2j1j3.10.0.gsnos%2Cn%3D13...0.2495j1017187j10..1ac.1.25.partner..10.0.0.XePJcoeor8s#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010", - "armgkb": "//www.pharmgkb.org/search?query=\u0002\u00010", - "as3r": "//duckduckgo.com/?q=inurl%3Ahttps%3A%2F%2Fphotonstorm.github.io%2Fphaser3-docs%2F+\u0002#\u00010", - "rase": { - "n": "//www.phrasen.com/index.php?do=suche&q=\u0002\u00010", - "\u0010": "//duckduckgo.com/?q=site:phrases.org.uk%20\u0002\u00010" - }, - "set": "http://phi.sh/\u0002\u00010" - }, - "i": { - "c": { - "\u0010": "http://www.picsearch.com/index.cgi?q=\u0002\u000135", - "s": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131", - "olisp": "http://picolisp.com/wiki/?home&*Search=\u0002\u00010", - "tame": "//www.pictame.com/search?query=\u0002\u00010", - "tures": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000131" - }, - "n": { - "a": "http://pinboard.in/search/?query=\u0002&all=Search+All\u00010", - "f": "//pinboard.in/search/?query=\u0002&fulltext=on\u00010", - "g": "http://dns-tools.domaintools.com/?method=ping&query=\u0002\u000112", - "k": "http://www.pinknews.co.uk/?s=\u0002 \u00010", - "\u0010": "http://pinterest.com/search/pins/?q=\u0002\u0001163", - "board": "http://pinboard.in/search/?query=\u0002&mine=Search+Mine\u000141", - "e64": "//forum.pine64.org/search.php?text=\u0002&sortby=&order=desc\u00010", - "out": "http://pinoutsguide.com/search.php?lang=eng&t=\u0002\u00010", - "pin": "http://dictionary.pinpinchinese.com/search/t/\u0002\u00010", - "side": "//pinside.com/pinball/forum/search?s=1&q=\u0002&include_basement=0#results\u00010", - "terest": "//pinterest.com/search/?q=\u0002\u0001200", - "voke": "http://pinvoke.net/search.aspx?search=\u0002\u00010", - "yin1": "http://www.pin1yin1.com/#\u0002\u00010" - }, - "o": "http://platformio.org/lib/search?query=\u0002\u00010", - "p": { - "l": "//pipl.com/search/?q=\u0002&l=&sloc=&in=5\u00010", - "\u0010": "//pypi.python.org/pypi?:action=search&term=\u0002&submit=search\u0001684", - "ilika": "//www.pipilika.com/search?q=\u0002\u00010" - }, - "\u0010": "http://www.philly.com/philly/search/?search=y&adv=y&searchKeywords=\u0002&minscore=50&pagesize=20&sites=philly&fields=full§ions=5&queryType=all\u000118", - "v": "http://vortaro.net/#\u0002\u000117", - "x": { - "\u0010": "http://shop.pixbreak.com/?s=\u0002\u00010", - "el": { - "\u0010": "http://pixelmonmod.com/wiki/index.php?title=\u0002\u00013", - "p": { - "\u0010": "http://www.pixelprospector.com/?s=\u0002\u00010", - "osts": "http://pixels.thetangible.in/search/\u0002\u00010" - } - }, - "iv": "http://www.pixiv.net/search.php?word=\u0002\u0001453", - "abay": "http://pixabay.com/en/photos/?q=\u0002\u000134" - }, - "gu": "http://pigu.lt/search?q=\u0002\u00010", - "ka": { - "\u0010": "//www.pikapkg.com/packages/?q=\u0002\u00010", - "bu": "http://pikabu.ru/search.php?q=\u0002\u00010" - }, - "ls": "http://patient.info/Search.asp?searchTerm=\u0002&collections=Condition_Leaflets\u00010", - "mo": { - "\u0010": "//shop.pimoroni.com/search?q=\u0002\u00010", - "roni": "//shop.pimoroni.com/?q=\u0002\u00010" - }, - "to": "http://www.pisatoday.it/search/query/\u0002\u00010", - "anostreet": "//www.pianostreet.com/index_sr.php?q=\u0002\u00010", - "apro": "//piapro-studio.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "er1": "//www.pier1.com/on/demandware.store/Sites-pier1_us-Site/default/Search-ShowContent?q=\u0002\u00010", - "etsmiet": "//www.pietsmiet.de/search?query=\u0002\u00010", - "kipedia": "http://www.pikminwiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00013", - "ratenwiki": "//wiki.piratenpartei.de/Spezial:Suche?search=\u0002&fulltext=Suchen\u00010", - "ratetimes": "http://piratetimes.net/?s=\u0002&submit=Search\u00010", - "rsa": "http://pirsa.org/index.php?p=speaker&name=\u0002\u00010", - "tchbook": "//duckduckgo.com/?q=site%3Apitchbook.com%2Fprofiles%2Fcompany+\u0002\u00010", - "tchfork": "http://pitchfork.com/search/?query=\u0002\u000194" - }, - "j": { - "m": "//pjmedia.com/search/?s=\u0002 \u00010", - "\u0010": "//www.prisjakt.nu/search?search=\u0002\u000170", - "no": "http://www.prisjakt.no/#rparams=ss=\u0002 \u00010" - }, - "k": { - "b": "//pikabu.ru/search.php?q=\u0002\u00010", - "g": { - "\u0010": "//www.archlinux.org/packages/?sort=&q=\u0002\u0001209", - "s": { - "\u0010": "http://pkgs.org/search/?keyword=\u0002\u000148", - "rc": "http://pkgsrc.se/search.php?so=\u0002\u00010" - }, - "rd": "//packageradar.com/form?tracking_form[tracking_number]=\u0002\u00010", - "tr": "//www.packagetrackr.com/track/\u0002\u00010" - }, - "o": "//packages.knightos.org/search?terms=\u0002\u00010", - "\u0010": "//peekier.com/#!\u0002\u000120", - "mce": "http://wiki.pokemoncentral.it/index.php?search=\u0002\u00010" - }, - "l": { - "a": { - "\u0010": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=la\u000127", - "y": { - "\u0010": "//play.google.com/store/search?q=\u0002\u00015", - "asia": "http://www.play-asia.com/paOS-19-71-99-15-\u0002.html\u00010", - "grounds": "//www.customplaygroundequipment.com/search?search=\u0002\u00010", - "music": "//play.google.com/music/listen#/sr/\u0002\u00010", - "onlinux": "//duckduckgo.com/?q=\u0002+site%3Aplayonlinux.com\u00010", - "right": "http://www.playright.dk/playright/soeg?_submit=1&_soeg=0&soeg=\u0002\u00010", - "station": "//www.playstation.com/search-results/?q=\u0002\u00010", - "store": "//play.google.com/store/search?q=\u0002\u00015", - "term": "http://www.playterm.org/s/?tags=\u0002\u00010" - }, - "ne": { - "\u0010": "http://www.planespotters.net/search.php?q=\u0002\u00010", - "tdepos": "//planetdepos.com/?s=\u0002\u00010", - "tebd": "http://www.planetebd.com/recherche?mot-clef=\u0002\u00010", - "tkey": "//www.planetkey.de/suche/?s=\u0002\u00010", - "tmc": "//www.planetminecraft.com/resources/?keywords=\u0002\u00010", - "tmath": "//github.com/search?l=TeX&q=org%3Aplanetmath+\u0002&type=Topics\u00010" - }, - "se": "//plase.net/?s= \u0002&post_type=product\u00010", - "to": "http://plato.stanford.edu/search/searcher.py?query=\u0002\u000150", - "tt": { - "\u0010": "http://www.platt-wb.de/platt-hoch/?term=\u0002\u00010", - "entests": "http://www.plattentests.de/suche.php?parameter=all&suche=\u0002\u00010" - }, - "isio": "http://www.plaisio.gr/search.aspx?query=\u0002&catalogue=all&mode=searchlist\u00010", - "n3t": "http://plan3t.info/?s=\u0002\u00010", - "ncke": "//plancke.io/hypixel/player/stats/\u0002\u000126", - "nplus": "//www.planplus.rs/#!pretraga/\u0002\u00010", - "nts": "http://powo.science.kew.org/?q=\u0002\u00010", - "tekompaniet": "//platekompaniet.no/search/?q=\u0002\u00010" - }, - "m": "//www.buyplm.com/general-info/pdxpert-plm-software-search.aspx?query=\u0002\u00010", - "p": "//www.playpilot.com/se/en/search/?q=\u0002\u00010", - "\u0010": "http://publiclab.org/search/\u0002\u00013", - "s": "//www.pluralsight.com/search?q=\u0002\u00010", - "t": "http://latin.packhum.org/search?q=\u0002\u00010", - "w": "//pl.wikipedia.org/w/index.php?search=\u0002\u000111", - "z": "//www.postdirekt.de/plzserver/PlzSearchServlet?finda=miniapp&city=\u0002\u00010", - "de": "//translate.google.com/#view=home&op=translate&sl=pl&tl=de&text=\u0002\u00010", - "en": "http://translate.google.com/#pl/en/\u0002\u000127", - "fr": "http://dictionnaire.reverso.net/polonais-francais/\u0002\u00010", - "ug": { - "\u0010": "http://www.pluggedin.com/search?q=\u0002\u00010", - "gedin": "//www.pluggedin.com/search/?q=\u0002&i=titles&p=0&l=20&c=%7B%7D\u00010" - }, - "us": { - "\u0010": "//plus.codes/map/\u0002\u00010", - "codes": "//plus.codes/\u0002\u00010" - }, - "eatedjeans": "http://www.pleated-jeans.com/?s=\u0002 \u00010", - "eiades": "http://pleiades.stoa.org/search?SearchableText=\u0002&portal_type=Place&submit=Search\u00010", - "ombservice": "http://www.plombservice.fr/catalogsearch/result/?imageField.x=0&imageField.y=0&q=\u0002\u00010", - "one": "//plone.org/@@search?SearchableText=\u0002\u00010", - "osmed": "http://www.plosmedicine.org/search/simple?query=\u0002&filterJournals=PLoSMedicine\u00010", - "oum": "//ploum.net/?s=\u0002\u00010", - "unket": "//www.plunket.org.nz/home/SearchForm?Search=\u0002&action_results=Search\u00010", - "urk": "//www.plurk.com/search?q=\u0002\u000111", - "uralsight": "http://www.pluralsight.com/search/?searchTerm=\u0002\u00018", - "yrics": "http://search.plyrics.com/search.php?q=\u0002\u00010" - }, - "m": { - "c": { - "b": "//www.planetminecraft.com/banners/?keywords=\u0002\u00010", - "c": "//www.planetminecraft.com/collections/?keywords=\u0002\u00010", - "d": "//www.planetminecraft.com/resources/mods/data-pack/?keywords=\u0002\u00010", - "k": "//www.planetminecraft.com/resources/skins/?keywords=\u0002\u00010", - "m": "//www.planetminecraft.com/resources/mods/?keywords=\u0002\u00010", - "\u0010": "//www.planetminecraft.com/resources/?keywords=\u0002\u00010", - "p": "//www.planetminecraft.com/resources/projects/?keywords=\u0002\u00010", - "r": "//www.planetminecraft.com/resources/texture_packs/?keywords=\u0002\u00010", - "s": "//www.planetminecraft.com/resources/servers/?keywords=\u0002\u00010" - }, - "d": "http://www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u000120", - "f": { - "e": "//forum.palemoon.org/search.php?keywords=\u0002&fid[0]=9\u00010", - "\u0010": "http://forum.palemoon.org/search.php?keywords=\u0002\u00010" - }, - "i": { - "d": "http://www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u000120", - "\u0010": "//search.pmi.org/default.aspx?q=\u0002\u00010" - }, - "k": "http://pimpmykeyboard.com/search.php?Search=&search_query=\u0002\u00010", - "\u0010": "//www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u0001174", - "s": "http://www.postimees.ee/search?query=\u0002\u00010", - "eg": "http://duckduckgo.com/?q=\u0002 site:http://bertilow.com/pmeg/\u000111", - "mm": "//wiki.puella-magi.net/index.php?title=Special%3ASearch&search=\u0002\u00010", - "on": "http://pixelmon.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010", - "os": "//forum.peppermintos.com/index.php?action=search2&search=\u0002\u00010", - "use": "//muse.jhu.edu/search?action=search&query=content:\u0002:and&min=1&max=10&t=header\u00010", - "wiki": "http://papermario.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "n": { - "\u0010": "//primenow.amazon.com/search?k=\u0002\u00010", - "p": "http://shop.pnp.co.za/b2c_pnp/b2c/display/(cpgsize=12&layout=5.1-6_2_4_86_92_8_3&uiarea=1&carea=%24ROOT&cpgnum=1&cquery=\u0002)/.do?rf=y\u00010", - "w": "//psychonautwiki.org/w/index.php?search=\u0002\u000112", - "as": "http://www.pnas.org/search/\u0002%20numresults%3A10%20sort%3Arelevance-rank%20format_result%3Astandard\u00010", - "de": "//primenow.amazon.de/search?k=\u0002\u00010", - "dr": "//www.pandora.com/search/\u0002\u000114", - "uk": "//primenow.amazon.co.uk/search?k=\u0002\u00010" - }, - "o": { - "d": { - "\u0010": "http://cocoapods.org/?q=\u0002\u00010", - "io": "//podio.com/search#/query/\u0002\u00010", - "cast": "//www.listennotes.com/search/?q=\u0002&sort_by_date=0\u00016", - "cloud": "//podcloud.fr/search?q=\u0002\u00010" - }, - "e": { - "m": { - "\u0010": "http://www.poemhunter.com/search/?q=\u0002\u00010", - "s": "//www.poetryfoundation.org/search?query=\u0002 \u000119" - }, - "\u0010": "//pathofexile.gamepedia.com/index.php?search=\u0002\u00010", - "r": "//www.reddit.com/r/pathofexile/search?q=\u0002&restrict_sr=on\u00010", - "db": "http://poedb.tw/us/search.php?Search=\u0002\u00018", - "gp": "//pathofexile.gamepedia.com/index.php?search=\u0002\u00010", - "ts": "//www.poets.org/search/node/\u0002\u00010", - "page": "http://pathofexile.gamepedia.com/\u0002\u00010", - "try": "http://www.poetryfoundation.org/search/?q=\u0002\u00018", - "wiki": "http://pathofexile.gamepedia.com/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00014" - }, - "k": { - "\u0010": "//www.petersofkensington.com.au/Public/Catalog/searchresults.aspx?search=\u0002&issearch=true\u00010", - "ebrickbronze": "http://brickbronze.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "ecommunity": "//www.pokecommunity.com/search.php?do=q\u0002\u00010", - "edb": "http://pokemondb.net/search?q=\u0002\u000136", - "edex": "//www.pokemon.com/us/pokedex/\u0002\u00014", - "emmo": "http://pokemmo.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "emondb": "http://pokemondb.net/search?q=\u0002\u000136", - "epedia": "http://www.pokepedia.fr/index.php?title=Special%3ARecherche&search=\u0002\u00018", - "ewiki": "http://www.pokewiki.de/index.php?search=\u0002&button=&title=Spezial%3ASuche\u000145" - }, - "p": { - "\u0010": "http://incendar.com/funko_pop_search.php?search=\u0002\u00010", - "py": "//poppy.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "pin": "http://www.poppin.com/search?q=\u0002\u00010", - "sci": "//www.popsci.com/find/\u0002\u00010", - "sike": "http://www.popsike.com/php/quicksearch.php?searchtext=\u0002\u00010" - }, - "\u0010": "//prensaobrera.com/buscar?q=\u0002\u00016", - "r": { - "\u0010": "http://sjp.pwn.pl/poradnia/szukaj/\u0002.html\u00010", - "t": { - "\u0010": "//www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=\u0002\u00016", - "s": "http://www.speedguide.net/port.php?port=\u0002\u00015", - "hu": "http://port.hu/kereso?q=\u0002\u00010", - "ableapps": "http://portableapps.com/search/node/\u0002\u00010", - "ablefreeware": "http://www.portablefreeware.com/index.php?q=\u0002\u00010", - "al12": "//portal12.bg/search?q=\u0002\u00010", - "allinux": "http://portallinux.es/?s=\u0002\u00010", - "alwiki": "http://theportalwiki.com/w/index.php?search=\u0002 \u00010" - }, - "kbun": "//porkbun.com/checkout/search?q=\u0002\u000118", - "omagia": "//poromagia.com/fi/search/?q=\u0002\u00010" - }, - "al": "//poal.co/search/\u0002\u00010", - "lk": "http://www.polkaudio.com/search/products?q=\u0002\u00010", - "ly": { - "\u0010": "//poly.google.com/search/\u0002\u00010", - "gon": "http://www.polygon.com/search?q=\u0002\u000181", - "mtl": "//www.polymtl.ca/etudes/cours/recherche/*?sigle=\u0002\u00010", - "ratings": "http://polyratings.com/search.php?type=ProfName&terms=\u0002&format=long&sort=name\u00010" - }, - "ma": { - "\u0010": "//postmates.com/search?q=\u0002\u00010", - "galo": "//search.pomagalo.com/?keywords_id=&keywords=\u0002\u00010" - }, - "ns": { - "\u0010": "//en.pons.com/translate?q=\u0002\u0001132", - "de": { - "\u0010": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=deen&in=&lf=de\u000132", - "en": "http://en.pons.com/translate?q=\u0002&l=deen&in=&lf=de\u000158", - "es": "http://de.pons.com/%C3%BCbersetzung?q=\u0002&l=dees&in=&lf=de\u00010", - "fr": "http://de.pons.com/%C3%BCbersetzung?q=\u0002&l=defr&in=&lf=de\u000110", - "it": "http://de.pons.com/%C3%BCbersetzung?q=\u0002&l=deit&in=&lf=de\u00010", - "la": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=dela\u00016", - "pl": "http://en.pons.com/translate?q=\u0002&l=depl&in=&lf=de\u00010", - "ru": "http://en.pons.com/translate?q=\u0002&l=deru&in=&lf=de&cid=\u00010", - "sv": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=desv&in=&lf=de\u00010" - }, - "ed": "http://en.pons.com/translate?q=\u0002&l=deen&in=&lf=en\u00010", - "ge": "//mobile.pons.com/dict/search/mobile-results/?q=\u0002&l=deen\u00010", - "pt": "http://en.pons.com/translate?q=\u0002&l=enpt&in=&lf=en\u00010", - "ende": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=deen&in=&lf=en\u000110", - "enfr": "http://en.pons.eu/translate?q=\u0002&l=enfr&in=&lf=fr\u00010", - "ensl": "//en.pons.com/translate?q=\u0002&l=ensl&in=en&lf=en\u00010", - "itpl": "http://pl.pons.com/tłumaczenie?q=\u0002&l=itpl\u00010", - "plde": "//pl.pons.com/tłumaczenie?q=\u0002&l=depl&in=&lf=de\u00010", - "plen": "//en.pons.com/translate?q=\u0002&l=enpl&in=&lf=en\u00010", - "ples": "//pl.pons.com/t%C5%82umaczenie?q=\u0002&l=espl&in=&lf=es\u00010" - }, - "ny": "//stdlib.ponylang.org/search.html?q=\u0002\u00010", - "sh": "//docs.microsoft.com/en-us/search/index?search=\u0002\u000192", - "wt": "//www.powerthesaurus.org/\u0002/synonyms\u000118", - "cewiki": "http://wiki.pokemoncentral.it/index.php?search=\u0002\u00010", - "cket": { - "\u0010": "//app.getpocket.com/search/\u0002\u000118", - "explore": "//www.getpocket.com/explore/\u0002\u00010", - "gamer": "http://www.pocketgamer.co.uk/latest.asp?srch=\u0002\u00010", - "tactics": "http://www.pockettactics.com/home/SearchForm?Search=\u0002\u00010" - }, - "czta": "http://emonitoring.poczta-polska.pl/?numer=\u0002\u00010", - "limi": "//www.polimi.it/risultati-ricerca?q=\u0002&cerca=Cerca\u00013", - "lito": "http://www.polito.it/search/?lang=it&q=\u0002\u000110", - "litico": { - "\u0010": "http://www.politico.com/search?q=\u0002\u000113", - "eu": "http://www.politico.eu/?s=\u0002\u00010" - }, - "litifact": "http://www.politifact.com/search/?q=\u0002\u00010", - "litiken": "http://politiken.dk/search/?q=\u0002\u00010", - "llen": "//www.pollen.com/forecast/current/pollen/\u0002\u00010", - "llin": "http://www.pollin.de/shop/suchergebnis.html?S_TEXT=\u0002\u00013", - "llstar": "http://pollstar.com/tour/searchall.pl?By=All&Content=\u0002&go_green.x=0&go_green.y=0\u00010", - "nd5": "//www.pond5.com/stock-video-footage/1/\u0002.html\u00017", - "olsupplyworld": "http://www.poolsupplyworld.com/search.htm?searchBox=\u0002&x=0&y=0\u00010", - "ser": "http://www.evilinnocence.com/shop/catalogsearch/result/?q=\u0002\u00010", - "six": "http://pubs.opengroup.org/cgi/kman4.cgi?value=\u0002\u000191", - "ste": { - "n": "http://sporing.posten.no/sporing.html?lang=no&q=\u0002&submit=\u00010", - "\u0010": "//www.poste.it/cerca/index.html#/risultati-spedizioni/\u0002\u00010", - "rs": { - "\u0010": "http://www.allposters.com/gallery.asp?startat=%2Fgallery.asp&CID=A34475974C344D66A5E4D6D2F5CDA949&txtSearch=\u0002&imageField2.x=0&imageField2.y=0\u00010", - "py": "//posterspy.com/posters/?s=\u0002&post_type=poster\u00013" - } - }, - "stat": "//www.post.at/sendungsverfolgung.php/details?pnum1=\u0002\u00010", - "stdk": "http://www.postnord.dk/da/Sider/TrackTrace.aspx?search=\u0002\u00010", - "stnl": "//www.postnl.nl/search?q=\u0002&searchEntry=searchfield&boosting_label=\u00010", - "stgres": { - "\u0010": "http://www.postgresql.org/search/?q=\u0002&a=1&submit=Search\u000161", - "ql": "http://www.postgresql.org/search?q=\u0002&a=1&submit=Search\u000115" - }, - "stillon": "http://www.der-postillon.com/search?q=\u0002\u00010", - "stimees": "http://www.postimees.ee/search?query=\u0002\u00010", - "stmates": "//postmates.com/search?q=\u0002\u00010", - "stnord": "http://www.postnord.no/minside/SOPS/\u0002\u00010", - "ststatus": "//poststatus.com/?s=\u0002\u00010", - "tafocal": "http://www.potafocal.com/?s=\u0002\u00010", - "tco": "//piratesonline.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "ttery": { - "\u0010": "//www.pentyofamelie.com/search/?term=\u0002\u00010", - "barn": "http://www.potterybarn.com/search/results.html?words=\u0002\u00010" - }, - "uet": "http://pouet.net/search.php?what=\u0002&type=prod\u00019", - "upar": "//www.pouparmelhor.com/?s=\u0002\u00010", - "wells": "//www.powells.com/searchresults?keyword= \u0002\u00015", - "weren": "//poweren.ir/?s=\u0002\u00010", - "werui": "//powerui.kulestar.com/wiki/index.php?search=\u0002\u00010", - "wned": "//www.powned.it/?s=\u0002\u00010", - "ycp": "http://putonyourcakepants.com/?s=\u0002\u00010" - }, - "p": { - "a": "//launchpad.net/ubuntu/+ppas?name_filter=\u0002\u000115", - "c": { - "g": "//codegolf.stackexchange.com/search?q=\u0002\u000133", - "\u0010": "http://www.pocketpc.ch/google.php?cx=partner-pub-5163471580494836%3A7047225119&ie=UTF-8&cof=FORID%3A9&q=\u0002&sa.x=0&sa.y=0\u00010" - }, - "g": "//papago.naver.com/?st=\u0002\u0001100", - "l": { - "\u0010": "//plymouthpubliclibrary.bibliocommons.com/search?utf8=%E2%9C%93&t=smart&search_category=keyword&q=\u0002\u00010", - "ware": "http://pplware.sapo.pt/resultados-da-pesquisa/?cx=partner-pub-1446920356351445%3Apqahidy83wu&cof=FORID%3A11&ie=UTF-8&q=\u0002&sa=Pesquisar\u00010", - "wiki": "//thepluginpeople.atlassian.net/wiki/dosearchsite.action?queryString=\u0002\u00010" - }, - "\u0010": "http://passapalavra.info/?s=\u0002\u00010", - "t": { - "\u0010": "//duckduckgo.com/?q=\u0002+filetype%3Appt\u00010", - "rack": "http://emonitoring.poczta-polska.pl/?lang=en&numer=\u0002\u00010" - }, - "in": "http://dictionary.pinpinchinese.com/search/t/\u0002\u00010", - "dev": "//developer.paypal.com/search/?q=\u0002\u00010" - }, - "\u0010": "//www.pinterest.com/search/pins/?q=\u0002\u0001975", - "r": { - "0": "http://pr0gramm.com/top/\u0002\u0001173", - "c": "http://www.progressiverc.com/catalogsearch/result/?q=\u0002\u00010", - "d": { - "b": "//www.protondb.com/search?q=\u0002\u000138", - "l": "http://www.prdl.org/search.php?q=\u0002\u00010", - "\u0010": "http://paizo.com/search?q=\u0002&what=prd&includeUnrated=true&includeUnavailable=true\u00013" - }, - "l": "http://journals.aps.org/search?q=\u0002\u000110", - "o": { - "7": "http://www.prosieben.de/suche?q=\u0002\u00010", - "c": { - "\u0010": "/?q=\u0002+site:processing.org\u00010", - "essing": "/?q=\u0002+site:processing.org\u00010", - "omm": "//community.progress.com/search#q=\u0002\u00010", - "ook": "http://www.procook.co.uk/shop/search/?searchDep=main+site&searchstr=\u0002\u00010" - }, - "g": { - "\u0010": "http://programmers.stackexchange.com/search?q=\u0002\u00010", - "access": "//progaccess33.net/search/?q=\u0002\u00010", - "archives": "http://www.progarchives.com/google-search-results.asp?cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&cx=partner-pub-0447992028883143%3Aj1syec-2iv1&sa=submit&siteurl=www.progarchives.com%252Falbum.asp%253Fid%253D998\u00014", - "ram": { - "\u0010": "//www.codespeedy.com/?s=\u0002\u00010", - "mableweb": "http://www.programmableweb.com/search/\u0002\u00010", - "merhumor": "//www.reddit.com/r/ProgrammerHumor/search?q=\u0002&restrict_sr=on\u00010" - }, - "ress": "http://knowledgebase.progress.com/pkb_Home?q=\u0002\u00015", - "rock": "http://www.progarchives.com/google-search-results.asp?cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&cx=partner-pub-0447992028883143%3Aj1syec-2iv1&sa=submit&siteurl=www.progarchives.com%2F&ref=&ss=515j83611j5\u000113" - }, - "m": { - "\u0010": "//prom.ua/search?search_term=\u0002\u000114", - "obit": "//www.promobit.com.br/buscar?q=\u0002\u00015" - }, - "\u0010": "http://programmers.stackexchange.com/search?q=\u0002\u00010", - "z": "//www.proz.com/search/?term=\u0002\u000112", - "av": "//prostor-av.com/search/?q=\u0002\u00010", - "ff": "//www.proff.no/rollesøk?q=\u0002\u00013", - "ll": "http://www.precisionroller.com/search.php?q=\u0002\u00010", - "of": { - "\u0010": "//proofwiki.org/w/index.php?search=\u0002\u00014", - "wiki": "http://www.proofwiki.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "builds": "//www.probuilds.net/champions/details/\u0002\u00010", - "dhun": "http://www.producthunt.com/#!/s/posts/\u0002\u00010", - "ducthunt": "//www.producthunt.com/search?q=\u0002\u0001153", - "fitopia": "//help.profitopia.de/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "jectgutenberg": "//www.gutenberg.org/ebooks/search/?query=\u0002\u000128", - "nounce": "http://dictionary.reference.com/browse/\u0002\u00019", - "nto": "http://www.pronto.com.ar/search/google?q=\u0002\u00010", - "shop": "//www.proshop.dk/?s=\u0002\u00014", - "tein": "//www.ncbi.nlm.nih.gov/protein/?term=\u0002\u00017", - "ton": { - "\u0010": "//www.protondb.com/search?q=\u0002\u000138", - "db": "//www.protondb.com/search?q=\u0002\u000138", - "mail": "//mail.protonmail.com/search?keyword=\u0002\u0001601" - }, - "tocentral": "//www.protocentral.com/search?controller=search&orderby=position&orderway=desc&search_query=\u0002\u00010", - "tocol": { - "\u0010": "//www.protocol.co.il/?s=\u0002\u00010", - "sio": "//protocols.io/search?key=\u0002\u00010" - }, - "vigo": "//www.provigo.ca/search/?search-bar=\u0002\u00010" - }, - "\u0010": "http://ar.prvademecum.com/?s=\u0002\u000124", - "ab": "//www.prabhasakshi.com/topics/\u0002\u00010", - "el": { - "\u0010": "//archive.org/details/prelinger?and%5B%5D=\u0002\u00010", - "oved": "http://preloved.com/?q=\u0002\u00010" - }, - "fc": "http://pretty-rfc.herokuapp.com/search?q=\u0002\u00010", - "is": { - "\u0010": "//www.prisjakt.nu/search?search=\u0002\u000170", - "guide": "//www.prisguide.no/sok?q=\u0002\u00010", - "jakt": "//www.prisjakt.nu/search?search=\u0002\u000170" - }, - "pl": "http://discover.poudrelibraries.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng\u00010", - "pm": "http://prpm.dbp.gov.my/Search.aspx?k=\u0002\u00015", - "agprog": "//pragprog.com/search?q=\u0002\u00010", - "avda": "//www.pravda.sk/vyhladavanie/?q=\u0002\u00010", - "avidla": "http://www.pravidla.cz/hledej/?qr=\u0002\u00010", - "edictit": "//www.predictit.org/markets/search?query=\u0002\u00016", - "ess": "//prwirepro.com/?s=\u0002\u00010", - "esto": "http://www.prestoclassical.co.uk/search.php?searchString=\u0002\u000111", - "etium": "http://pretium.direct/search/?query=\u0002\u00010", - "ezi": "http://prezi.com/explore/search/?search=\u0002\u00010", - "ezzybox": "http://www.prezzybox.com/Search/?s=\u0002\u00010", - "iberam": "//www.priberam.pt/dlpo/\u0002\u000179", - "ice": { - "\u0010": "//www.amazon.com/s?k=\u0002\u000138200", - "hk": "http://www.price.com.hk/search.php?g=A&q=\u0002\u000126", - "ro": "//www.price.ro/index.php?action=q&text=\u0002&submit=Cauta\u00010", - "grabber": "http://www.pricegrabber.com/\u0002/products.html/form_keyword=\u0002/st=query/sv=findit_top\u00010", - "mania": "//www.pricemania.sk/katalog/vyhladavanie/\u0002.html\u00010", - "run": { - "\u0010": "http://www.pricerunner.dk/search?q=\u0002\u000136", - "ner": "http://www.pricerunner.se/pl/360-364563094/Herrklaeder/Jam-OD-Yellow-Yellow-over-dyed-jean-jacket-priser?other_hits=%3B25607%3B%3B&q=acne+jam+od+yellow+yellow&ref=redirect&search=\u0002&sort=4\u00016" - }, - "spy": "//pricespy.co.nz/search?search=\u0002\u000134", - "watch": "http://tweakers.net/pricewatch/zoeken/?keyword=\u0002\u000136" - }, - "ide": "//www.outcast.amsterdam/search?type=product&q=\u0002\u00010", - "imo": "//fu-berlin.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=fub&search_scope=FUB_ALL&vid=FUB&lang=de_DE&offset=0\u00010", - "imfx": "//www.primfx.com/q/\u0002/\u00010", - "imeabgb": "//www.primeabgb.com/?s=\u0002&post_type=product\u00010", - "imeinspire": "//www.primeinspiration.com/?s=\u0002\u00010", - "imevideo": { - "\u0010": "//www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Dprime-instant-video&field-keywords=\u0002\u000113", - "jp": "//www.amazon.co.jp/s/?url=search-alias%3Dinstant-video&field-keywords=\u0002\u00010" - }, - "imrose": "http://www.primrose.co.uk/search.mvc?search_term=\u0002\u00010", - "inceton": { - "\u0010": "//www.princeton.edu/main/tools/search/?q=\u0002&x=0&y=0\u00010", - "lib": "//library.princeton.edu/find/all/\u0002\u00010", - "review": "//www.princetonreview.com/search-results?q=\u0002\u00010" - }, - "inteera": "//printeera.com/search?type=product&q=\u0002\u00010", - "ivacy": "//www.reddit.com/r/privacy/search?q=\u0002&restrict_sr=on\u00014", - "usa": "//www.prusaprinters.org/search/all?q=\u0002\u000132" - }, - "s": { - "a": "//palmettostatearmory.com/catalogsearch/result/?q=\u0002\u000132", - "e": "//physics.stackexchange.com/search?q=\u0002\u00010", - "g": { - "\u0010": "//www.powershellgallery.com/packages?q=\u0002\u00016", - "ca": "//store.playstation.com/en-ca/grid/search-game/1?query=\u0002\u00010" - }, - "i": { - "\u0010": "//www.psi.ch/search/telefonbuch-und-e-mail?q=\u0002\u00013", - "mplified": "http://www.programmingsimplified.com/search/node/\u0002\u00010", - "ram": "//www.psiram.com/de/index.php?title=Spezial%3ASuche&profile=default&search=\u0002&fulltext=Search\u00010" - }, - "j": { - "i": "http://image.parsijoo.ir/image?q=\u0002\u00010", - "\u0010": "http://parsijoo.ir/web?q=\u0002\u00010" - }, - "n": { - "\u0010": "//store.playstation.com/#!/en-us/search/q=\u0002\u000117", - "z": "//pricespy.co.nz/search?q=\u0002\u00010", - "de": "//store.playstation.com/de-de/search/\u0002\u00010", - "jp": "//store.playstation.com/ja-jp/search/\u0002\u00010", - "nz": "//store.playstation.com/en-nz/grid/search-game/1?query=\u0002\u00010", - "uk": "http://store.playstation.com/#!/en-gb/search/q=\u0002\u00010", - "profiles": "//psnprofiles.com/search/games?q=\u0002\u000154" - }, - "o": "//www.psoriasis-netz.de/?s=\u0002\u00010", - "\u0010": "//www.playstation.com/search-results/?q=\u0002\u00010", - "s": "//store.playstation.com/en-us/search/\u0002\u000112", - "u": { - "k": "//pricespy.co.uk/search?q=\u0002\u00010", - "\u0010": "http://www.psu.edu/search/gss?query=\u0002\u00010", - "dc": "http://www.collegian.psu.edu/search/?f=html&q=\u0002\u00010", - "lib": "http://psu.summon.serialssolutions.com/search/results?spellcheck=true&q=\u0002&x=0&y=0\u00010" - }, - "y": { - "\u0010": "//psychonautwiki.org/w/index.php?search=\u0002&title=Special:Search\u0001126", - "ch": { - "\u0010": "//psychiatry.org/home/search-results?k=\u0002\u00010", - "22": "//www.psychologytoday.com/us/search/site/\u0002\u00010", - "onautwiki": "//psychonautwiki.org/w/index.php?search=\u0002\u000112" - } - }, - "ci": "http://www.podcastscience.fm/?s=\u0002 \u00010", - "mb": "//docs.microsoft.com/en-us/powershell/module/?term=\u0002\u00010", - "ql": "http://www.postgresql.org/search/?q=\u0002 &a=1&submit=Search\u000169", - "te": "//pste.eu/?q=\u0002\u00010", - "ddude": "http://www.psd-dude.com/tutorials/?search=\u0002\u00010", - "pgen": "http://www.pspgen.com/s/\u0002/\u00010", - "prices": "//psprices.com/search/?q=\u0002\u000128" - }, - "t": { - "g": "//the-ptg.blogspot.in/search?q=\u0002\u00010", - "h": "//www.planttherapy.com/search?Store_Code=PT&q=\u0002\u00010", - "n": "//www.protondb.com/search?q=\u0002\u000138", - "\u0010": "//www.powerthesaurus.org/\u0002\u0001200", - "r": "http://www.protoolreviews.com/?s=\u0002\u00010", - "t": "//www.ptt.cc/bbs/\u0002\u0001118", - "v": "//www.ptv.vic.gov.au/search/getForm?Search=\u0002&action_getSearchResults=Go\u00010", - "ax": "http://jp.search.app.ricoh/en_imaging/search.x?q=\u0002\u00010", - "cg": "http://pkmncards.com/?s=\u0002&display=card&sort=date\u00010", - "en": "//translate.google.com/#pt/en/\u0002\u0001102", - "es": "//translate.google.com/#pt/es/\u0002\u00013", - "ube": "//peer.tube/search?search=\u0002\u00014" - }, - "u": { - "b": { - "g": { - "\u0010": "//pubgmobileupdate.com/?s=\u0002\u00010", - "wiki": "//pubg.gamepedia.com/index.php?search=\u0002\u00010" - }, - "\u0010": "//www.ncbi.nlm.nih.gov/pubmed?EntrezSystem2.PEntrez.Pubmed.SearchBar.Db=pubmed&term=\u0002\u0001126", - "s": "http://www.pubsgalore.co.uk/search.php?search=\u0002\u00010", - "lc": "//publc.com/\u0002\u00010", - "chem": "http://www.ncbi.nlm.nih.gov/pccompound/?term=\u0002\u000116", - "dev": "//pub.dev/packages?q=\u0002\u0001169", - "labs": "//pubmed.ncbi.nlm.nih.gov/?term=\u0002\u00010", - "lix": "http://www.publix.com/search?query=\u0002\u00014", - "lico": "http://www.publico.pt/pesquisa?q=\u0002\u00010", - "licintelligence": "//publicintelligence.net/?s=\u0002\u00010", - "med": "//www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u0001174" - }, - "c": { - "\u0010": "http://packages.ubuntu.com/\u0002\u00013", - "sp": "//www.pucsp.br/buscar?search_api_fulltext=\u0002&field_area_de_conhecimento=All&field_escola=&type=All\u00010" - }, - "\u0010": "//www.pulseuniform.com/search.asp?q=\u0002\u00010", - "id": "http://nationalarchives.gov.uk/PRONOM/\u0002\u00010", - "rs": { - "\u0010": "//pursuit.purescript.org/search?q=\u0002\u0001249", - "uit": "//pursuit.purescript.org/search?q=\u0002\u0001249" - }, - "mpbiz": "http://www.pumpbiz.com/shopping_search.asp?searchString=\u0002&searchType=0&FIND.x=0&FIND.y=0&FIND=FIND+IT\u00010", - "nctumbooks": "//punctumbooks.com/?s=\u0002\u00010", - "ppet": "http://forge.puppetlabs.com/modules?q=\u0002&commit=Go\u000142", - "ptype": "//docs.puppet.com/puppet/latest/type.html#\u0002\u00010", - "redata": "http://puredata.info/search?SearchableText=\u0002\u00010", - "rolator": "//eshiponline.purolator.com/ShipOnline/Public/Track/TrackingDetails.aspx?pin=\u0002\u00015", - "rplemath": "http://search.freefind.com/find.html?id=5014414&pageid=r&mode=ALL&n=0&query=\u0002\u00010", - "zzse": "//puzzling.stackexchange.com/search?q=\u0002\u000141", - "zzles": "http://www.puzzlopia.com/search-results?search=\u0002\u00010" - }, - "v": { - "\u0010": "//www.primevideo.com/region/eu/search/ref=dv_web_nav_search?phrase=\u0002&ie=UTF8\u000147", - "z": "http://plantsvszombies.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "w": { - "c": "//paperswithcode.com/search?q=\u0002\u000116", - "f": "//polarweldfin.com/etsi?controller=search&s=\u0002\u00010", - "p": "//fa.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "\u0010": "http://www.pricewatch.com/search?q=\u0002 \u00015", - "v": "//programadorwebvalencia.com/blog/?search=\u0002\u00016", - "de": "http://www.pokewiki.de/index.php?search=\u0002&title=Spezial%3ASuche&go=Seite\u00017", - "iki": "//psychonautwiki.org/w/index.php?search=\u0002\u000112", - "ned": "//haveibeenpwned.com/account/\u0002\u00014" - }, - "x": { - "b": "http://pixabay.com/en/photos/?q=\u0002\u000134", - "c": "http://www.phoenixcontact.com/online/portal/us?q=\u0002&uri=pxc-search%3Awebsite&library=usen\u00010", - "\u0010": "http://pixabay.com/en/photos/?q=\u0002\u000134", - "v": { - "g": "//pixabay.com/en/photos/?image_type=vector&cat=&min_width=&min_height=&q=\u0002&order=latest\u00010", - "\u0010": "//pixabay.com/en/photos/?q=\u0002&image_type=vector&cat=&min_width=&min_height=\u00010" - }, - "here": "//pxhere.com/en/photos?q=\u0002\u000110" - }, - "y": { - "2": { - "7": "//docs.python.org/2.7/search.html?q=\u0002\u00018", - "\u0010": "//docs.python.org/2.7/search.html?q=\u0002\u00018" - }, - "3": { - "4": "//docs.python.org/3.4/search.html?q=\u0002\u00010", - "5": "//docs.python.org/3.5/search.html?q=\u0002\u00010", - "k": "http://docs.python.org/3/search.html?q=\u0002\u00016", - "\u0010": "//docs.python.org/3/search.html?q=\u0002\u0001512", - "fr": "//docs.python.org/fr/3/search.html?q=\u0002\u00010", - "6doc": "//docs.python.org/3.6/library/\u0002.html\u00010" - }, - "a": "http://www.primiciasya.com/search.html?q=\u0002\u00010", - "\u0010": "//docs.python.org/3/search.html?q=\u0002\u0001512", - "lm": "http://pylint-messages.wikidot.com/messages:\u0002\u00010", - "pa": "//pypi.org/search/?q=\u0002\u00017", - "pi": "//pypi.org/search/?q=\u0002\u00017", - "qt": { - "5": "//www.riverbankcomputing.com/static/Docs/PyQt5/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "\u0010": "http://pyqt.sourceforge.net/Docs/PyQt5/search.html?q=\u0002\u00010" - }, - "bug": "//bugs.python.org/issue?search_text=\u0002\u00010", - "game": "//www.pygame.org/docs/search.html?q=\u0002\u00013", - "mel": "//help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/PyMel/search.html?q=\u0002&check_keywords=yes\u00010", - "ramid": "//docs.pylonsproject.org/projects/pyramid/en/latest/search.html?q=\u0002\u00010", - "side": { - "2": "//doc-snapshots.qt.io/qtforpython/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "\u0010": "http://www.pyside.org/docs/pyside/search.html?q=\u0002&check_keywords=yes&area=default\u00010" - }, - "spark": "//spark.apache.org/docs/latest/api/python/search.html?q=\u0002\u00019", - "thon": { - "2": { - "6": "http://docs.python.org/2.6/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "7": "http://docs.python.org/2.7/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "\u0010": "//docs.python.org/2/search.html?q=\u0002\u000116" - }, - "3": { - "0": "http://docs.python.org/3.0/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "1": "http://docs.python.org/3.1/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "2": "http://docs.python.org/3.2/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "\u0010": "//docs.python.org/3/search.html?q=\u0002\u0001512" - }, - "\u0010": "//docs.python.org/3/search.html?q=\u0002\u0001512", - "dev": "http://docs.python.org/dev/search.html?q=\u0002 \u00010" - }, - "torch": "//pytorch.org/docs/stable/search.html?q=\u0002&check_keywords=yes&area=default\u000187", - "video": "http://pyvideo.org/search?models=videos.video&q=\u0002\u00010" - }, - "4k": "http://pitchfork.com/search/?query=\u0002\u000194", - "zw": "//pzwiki.net/w/index.php?search=\u0002\u00013", - "6mod": "//modules.perl6.org/search/?q=\u0002\u00010" - }, - "q": { - "b": "//www.quimbee.com/search?q=\u0002\u00010", - "c": { - "\u0010": "//www.qconcursos.com/busca?q=\u0002\u00010", - "ubbrux": "http://www.qcunbon.be/bruxelles?q=\u0002\u00010" - }, - "m": { - "e": "http://m.quickmeme.com/search/?q=\u0002\u00010", - "\u0010": "//www.qwant.com/music/search?q=\u0002\u00014", - "aps": "//www.qwant.com/maps/?q=\u0002\u000137" - }, - "p": { - "\u0010": "//www.quip.com/search?q=\u0002\u00010", - "on": "http://qpongo.com/ddgsearch.aspx?q=\u0002\u00010" - }, - "\u0010": "//www.quora.com/search?q=\u0002\u0001531", - "r": { - "\u0010": "//api.qrserver.com/v1/create-qr-code/?qzone=1&data=\u0002\u0001400", - "z": "http://www.qrz.com/db/?callsign=\u0002&cmd=Search\u0001112", - "decode": "http://zxing.org/w/decode?u=\u0002\u00010" - }, - "s": { - "o": "//quant.stackexchange.com/search?q=\u0002\u00010", - "\u0010": "//help.qlik.com/en-US/search/?q=\u0002\u00013", - "r": "//www.qsrmagazine.com/search/site/\u0002\u00010", - "sl": "//www.ssllabs.com/ssldb/analyze.html?d=\u0002&hideResults=on\u00010", - "tu": "//www.topuniversities.com/search/site/\u0002\u00010" - }, - "t": { - "3": "//forum.quartertothree.com/search?expanded=true&q=\u0002\u00010", - "4": "//doc.qt.io/qt-4.8/search-results.html?q=\u0002\u00010", - "5": "http://doc.qt.io/qt-5/search-results.html?q=\u0002\u00013", - "\u0010": "//doc.qt.io/qt-5/search-results.html?q=\u0002\u0001125" - }, - "w": { - "e": "//www.qwantjunior.com/?q=\u0002&t=education\u00010", - "i": "//www.qwant.com/?q=\u0002&t=images\u0001111", - "l": "//lite.qwant.com/?q=\u0002\u00010", - "m": "//www.qwant.com/music/search?q=\u0002\u00014", - "n": "//www.qwant.com/?q=\u0002&t=news\u00010", - "\u0010": "//www.qwant.com/?q=\u0002\u000157", - "s": "//www.qwant.com/?q=\u0002&t=social\u00014", - "t": "//qwant.com/?q=\u0002\u00010", - "v": "//www.qwant.com/?q=\u0002&t=videos\u00010", - "w": "//www.qwant.com/?q=\u0002&t=web\u000161", - "ant": "//www.qwant.com/?q=\u0002\u000157" - }, - "z": "http://qz.com/search/\u0002\u00010", - "at": "http://quinapalus.com/cgi-bin/qat?pat=\u0002\u00014", - "az": "http://qaz.wtf/u/convert.cgi?text=\u0002\u00010", - "db": "http://www.bash.org/?search=\u0002\u00010", - "es": "//es.quora.com/search?q=\u0002\u00010", - "im": { - "a": { - "\u0010": "http://www.qim.com/albums/albums.asp?search=\u0002\u00010", - "lbum": "http://www.qim.com/albums/albums.asp?search=\u0002\u00010", - "rtiste": "http://www.qim.com/artistes/artiste.asp?search=\u0002\u00010" - }, - "\u0010": "http://www.qim.com/artistes/artiste.asp?search=\u0002\u00010" - }, - "li": "//beta.cliqz.com/search?q=\u0002\u00010", - "oq": "//questso.blogspot.com/search?q=\u0002\u00010", - "um": "http://www.qumran2.net/indice.php?parole=\u0002\u00010", - "un": "//qunwang6.github.io/?q=\u0002\u00010", - "ur": { - "\u0010": "http://quran.com/search?q=\u0002\u00010", - "an": "http://quran.com/search?q=\u0002\u00010" - }, - "vc": "http://www.qvc.com/catalog/search.html?langId=-1&storeId=10251&catalogId=10151&keyword=\u0002\u000112", - "iita": "http://qiita.com/search?q=\u0002\u000113", - "lcrew": "//qlcrew.com/?q=\u0002\u00010", - "obuz": "http://www.qobuz.com/recherche?q=\u0002\u000172", - "ual": { - "\u0010": "//www.qualtrics.com/support/search/?q=\u0002\u00014", - "ebs": "//www.qualebs.com/techbay/search?query=\u0002\u00010" - }, - "uay": "//quay.io/search?q=\u0002\u00010", - "uandl": "//www.quandl.com/search?query=\u0002\u00010", - "uantcast": "//www.quantcast.com/home/site/search/\u0002\u00010", - "uartz": "http://qz.com/search/\u0002\u00010", - "uebecinfomusique": "http://www.qim.com/artistes/artiste.asp?search=\u0002\u00010", - "ueenslibrary": "http://www.queenslibrary.org/search/apachesolr_search/\u0002\u000113", - "ueryposts": "http://queryposts.com/?s=\u0002\u00010", - "uickdocs": "http://quickdocs.org/search?q=\u0002\u00010", - "uirky": "//www.quirky.com/search?query=\u0002\u00010", - "uizlet": "http://quizlet.com/subject/\u0002/\u000114", - "uora": "http://www.quora.com/search?q=\u0002&context_type=&context_id=\u000146", - "uotes": "http://en.wikiquote.org/wiki/Special:Search?search=\u0002\u00018", - "uotev": "//www.quotev.com/search/\u0002\u00010", - "uoteinvestigator": "//quoteinvestigator.com/?s=\u0002\u00010", - "uttera": "//quttera.com/sitescan/\u0002\u00010" - }, - "r": { - "7": "http://www.rapid7.com/db/search?utf8=%E2%9C%93&q=\u0002 &t=a\u00010", - "a": { - "d": { - "\u0010": "//radiopaedia.org/search?utf8=✓&q=\u0002&scope=all\u000132", - "hd": "//www.reddit.com/r/ADHD/search/?q=\u0002&restrict_sr=1\u00010", - "io": { - "\u0010": "//radiopaedia.org/search?utf8=%E2%9C%93&q=\u0002&scope=all\u00016", - "24": "//www.radio24.ilsole24ore.com/ricerca/\u0002\u00010", - "javan": "//www.radiojavan.com/search?query=\u0002\u00010", - "paedia": "http://radiopaedia.org/search?q=\u0002\u00010", - "shack": "//www.radioshack.com/search?q=\u0002\u00010", - "times": "http://www.radiotimes.com/search?q=\u0002\u00010" - } - }, - "e": "//dle.rae.es/?w=\u0002\u00011541", - "f": "http://animorphsforum.com/index.php?action=search;advanced;search=\u0002\u00010", - "g": "http://academia.gal/dicionario/-/termo/busca/\u0002\u000134", - "h": "//roosterteeth.com/channel/achievement-hunter#search?term=\u0002\u00010", - "i": { - "\u0010": "//www.raiplay.it/ricerca?q=\u0002\u00014", - "ls": { - "\u0010": "http://api.rubyonrails.org/?q=\u0002\u0001151", - "casts": "http://railscasts.com/?search=\u0002\u00010", - "dock": "http://apidock.com/rails/search?query=\u0002\u00010", - "guides": "//duckduckgo.com/?q=\u0002+site%3Aguides.rubyonrails.org\u000121" - }, - "derio": "//raider.io/search?type=character&name[0][contains]=\u0002\u00017" - }, - "l": { - "\u0010": "http://rgb.to/ral/\u0002\u00010", - "it": "http://search.rockwellautomation.com/search?q=\u0002&client=literature&filter=0&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&proxystylesheet=literature&site=literature&getfields=*&lang=en&hl=en&num=20&requiredfields=xlanguage%3AMU%7Cxlanguage%3AEN\u00010", - "lypoint": "//www.rallypoint.com/answers?q=\u0002\u00010", - "vid": "http://ralvid.ml/search.php?q=\u0002\u00013" - }, - "p": { - "\u0010": "//genius.com/search?q=\u0002\u00013204", - "arts": "//www.reliableaftermarketparts.com/search?q=\u0002\u00010", - "genius": "http://rapgenius.com/search?q=\u0002\u00013", - "idonline": "//www.rapidonline.com/Catalogue/Search?Query=\u0002\u00010" - }, - "\u0010": "http://www.residentadvisor.net/search.aspx?searchstr=\u0002\u000119", - "y": { - "\u0010": "//www.raywenderlich.com/?s=\u0002\u00010", - "mond": "//raymond-nh.com/?s=\u0002\u00010" - }, - "cv": "//www.racv.com.au/search-results.html?q=\u0002\u00010", - "ru": "//raru.co.za/search/\u0002\u00010", - "te": { - "\u0010": "//www.ratemyprofessors.com/search.jsp?query=\u0002\u00010", - "beer": "//www.ratebeer.com/search?q=\u0002\u000115", - "myprofessor": "http://www.ratemyprofessors.com/search.jsp?query=\u0002\u00015", - "yourgenre": "//rateyourmusic.com/genre/\u0002\u00010", - "yourmusic": "http://rateyourmusic.com/search?searchterm=\u0002&searchtype=a\u0001243" - }, - "tp": "//www.ratp.fr/itineraires?start=\u0002&lieu_depart=station&\u00016", - "wg": "//rawg.io/search?query=\u0002\u00014", - "amattu": "http://www.koivuniemi.com/raamattuhaku?tila=pikahaku&hakuehto=\u0002\u00010", - "bbionrails": "//blog.yechiel.me/search?q=\u0002\u00010", - "cing": "http://www.racing.com/search?q=\u0002\u00010", - "cket": "http://docs.racket-lang.org/search/index.html?q=\u0002\u000122", - "cksforcars": "//www.racksforcars.com/store/search.asp?keyword=\u0002\u00010", - "kde": "//www.rakuten.de/suchen/\u0002?category=0\u00010", - "kuten": { - "g": "//global.rakuten.com/en/search/?k=\u0002\u00010", - "\u0010": "//search.rakuten.co.jp/search/mall/\u0002/\u00015" - }, - "mda": "http://ramdajs.com/docs/#\u0002\u000111", - "ndt": "//www.roadandtrack.com/search/?q=\u0002\u00010", - "ndom": "//www.random.org/search?q=\u0002\u000126", - "spberrypi": "http://www.raspberrypi.org/?s=\u0002\u00010", - "tamo": "//ratamo.verkkokirjasto.fi/web/arena/search?p_p_id=searchResult_WAR_arenaportlets&p_r_p_687834046_search_query=\u0002\u00010", - "tgeber": "//www.topratgeber24.de/suche?s=\u0002\u00010", - "tionalwiki": "http://rationalwiki.org/w/index.php?search=\u0002&button=&title=Special:Search&go=Go\u000144", - "tko": "//www.ratkojat.fi/hae?s=\u0002\u00010", - "velry": "http://www.ravelry.com/patterns/search#query=\u0002\u000110", - "zer": "//www.razer.com/search/?text=\u0002\u00014", - "zzball": "http://razzball.com/index.php?s=\u0002\u00010" - }, - "b": { - "c": "//www.rbcroyalbank.com/search-public/index.html?question=\u0002\u00010", - "\u0010": "//rubydocs.org/d/ruby-latest/?q=\u0002\u000141", - "l": { - "\u0010": "http://www.dnswatch.info/dns/rbl-lookup?host=\u0002&submit=RBL+Lookup\u00013", - "x": { - "g": "//www.roblox.com/search/users?keyword=\u0002\u00010", - "\u0010": "http://www.roblox.com/Catalog/Lists.aspx?m=TopFavorites&c=9&t=AllTime&d=All&q=\u0002\u0001120" - } - }, - "n": { - "\u0010": "http://rbnorway.org/?s=\u0002\u00010", - "dx": "http://www.reversebeacon.net/dxsd1/dxsd1.php?f=0&c=\u0002&t=dx\u00014" - }, - "t": { - "b": "//www.ruby-toolbox.com/?q=\u0002\u00010", - "c": "http://www.metric-conversions.org/pt/moeda/bitcoin-em-real.htm?val=\u0002\u00010", - "g": "//rbt.asia/g/search/text/\u0002\u00013", - "\u0010": "//rbt.asia/_/search/text/\u0002\u0001124", - "ag": "http://www.radio-browser.info/gui/#!/bytag/\u0002\u00010", - "mu": "//rbt.asia/mu/search/text/\u0002/\u000112" - }, - "bg": "//www.rbbg.it/opac/search/lst?q=\u0002\u00010", - "xw": "http://wiki.roblox.com/index.php?search=\u0002\u00010", - "ugs": "//bugzilla.redhat.com/buglist.cgi?quicksearch=\u0002\u00010", - "xdev": "//devforum.roblox.com/search?q=\u0002\u00013" - }, - "c": { - "e": { - "f": "http://context.reverso.net/translation/english-french/\u0002\u000110", - "\u0010": "//doc.rust-lang.org/error-index.html#E\u0002\u00010", - "npl": "http://context.reverso.net/translation/english-polish/\u0002\u00014", - "nru": "//context.reverso.net/translation/english-russian/\u0002\u00010" - }, - "f": { - "e": "http://context.reverso.net/translation/french-english/\u0002\u00018", - "\u0010": "//rcf.fr/rechercher/\u0002\u00010", - "r": { - "\u0010": "//www.ricardocuisine.com/recherche/mot-cle/\u0002\u00010", - "nl": "http://context.reverso.net/translation/french-dutch/\u0002\u00010" - } - }, - "l": { - "\u0010": "//raleigh.craigslist.org/search/?query=\u0002\u00010", - "ippy": "//rust-lang.github.io/rust-clippy/master/index.html#\u0002\u00010", - "ivre": "//www.recyclivre.com/shop/recherche?orderby=price&orderway=asc&search_query=\u0002&submit_search=&s=\u00010" - }, - "p": { - "p": "http://www.cplusplus.com/search.do?q=\u0002\u00010", - "\u0010": "http://www.realclearpolitics.com/search/?q=\u0002\u000134", - "lde": "http://context.reverso.net/t%C5%82umaczenie/niemiecki-polski/\u0002\u00010", - "len": "http://context.reverso.net/translation/polish-english/\u0002\u00010" - }, - "\u0010": "//www.readerscave.com/?s=\u0002\u00013", - "w": "http://apps.leg.wa.gov/RCW/default.aspx?cite=\u0002\u00010", - "db": "http://rcdb.com/qs.htm?qs=\u0002\u000112", - "sb": "http://rcsb.org/pdb/explore/explore.do?structureId=\u0002\u00010", - "ss": "//www.realcanadiansuperstore.ca/search/?search-bar=\u0002\u00010", - "onj": "http://bab.la/conjugaison/russe/\u0002\u00010", - "ruen": "//context.reverso.net/translation/russian-english/\u0002\u00010" - }, - "f": { - "c": { - "\u0010": "//tools.ietf.org/html/rfc\u0002\u0001128", - "k": "//www.rfc-editor.org/search/rfc_search_detail.php?title=\u0002\u00010", - "r": "http://www.rfcreader.com/#rfc\u0002\u00010", - "lipart": "http://rfclipart.com/search.html?text=\u0002\u00010" - }, - "d": "//refind.com/?q=\u0002\u00010", - "\u0010": "http://www.reasonablefaith.org/search/results?q=\u0002\u00016", - "r": "http://dictionnaire.reverso.net/francais-definition/\u0002\u00010", - "s": { - "\u0010": "http://www.radiofreesatan.com/?s=\u0002&submit=Submit\u00013", - "ana": { - "e": "//redfoxsanakirja.fi/sanakirja/-/s/eng/fin/\u0002\u00014", - "\u0010": "//redfoxsanakirja.fi/sanakirja/-/s/fin/eng/\u0002\u00013" - } - } - }, - "g": { - "i": "//images.google.com/searchbyimage?image_url=\u0002\u000146", - "o": "//www.reddit.com/r/GlobalOffensive/search/?q=\u0002&restrict_sr=1\u00010", - "\u0010": "http://rapgenius.com/search?q=\u0002\u00013", - "ate": "//www.researchgate.net/search.Search.html?query=\u0002\u000127" - }, - "h": { - "q": "http://www.runehq.com/search.php?q=\u0002\u00010", - "\u0010": "//robinhood.com/stocks/\u0002\u000133", - "t": { - "\u0010": "//access.redhat.com/search/#/?q=\u0002&p=1&srch=any&language=en&documentKind=Documentation\u00010", - "t": "//www.stateofthedapps.com/dapps?text=\u0002\u00010" - }, - "bz": "//bugzilla.redhat.com/buglist.cgi?quicksearch=\u0002\u00010", - "sa": "//rhn.redhat.com/errata/RHSA-\u0002.html\u00010", - "ino": "http://www.food4rhino.com/browse?searchText=\u0002\u00010", - "ydo": "//www.rhydolabz.com/advanced_search_result.html?keyword=\u0002\u00010", - "yme": { - "\u0010": "//www.rhymezone.com/r/rhyme.cgi?Word=\u0002&typeofrhyme=perfect&org1=syl&org2=l&org3=y\u000189", - "r": "http://www.rhymer.com/RhymingDictionary/\u0002.html\u00013", - "brain": "http://rhymebrain.com/en/What_rhymes_with_\u0002.html\u00010" - } - }, - "j": "//www.radiojavan.com/search?query=\u0002\u00010", - "k": { - "n": { - "\u0010": "//reestr.rublacklist.net/search/?q=\u0002\u00010", - "astro": "//rknastrovastu.com/?s=\u0002\u00010" - }, - "\u0010": "http://www.robokart.com/index.php?route=product/search&search=\u0002\u00010", - "t": "//docs.racket-lang.org/search/index.html?q=\u0002\u000124" - }, - "m": { - "\u0010": "http://www.gurusrom.net/search/term=\u0002\u00018", - "k": "//www.reddit.com/r/MechanicalKeyboards/search?q=\u0002&sort=relevance&t=all\u00010", - "n": "http://www.retailmenot.com/s/\u0002\u00010", - "p": "//www.ratemyprofessors.com/search.jsp?query=\u0002\u00010", - "w": "//rimworldwiki.com/index.php?search=\u0002&title=Special%3ASearch\u000154", - "it": "//www.rmit.edu.au/search?q=\u0002\u000111", - "ail": "//www.royalmail.com/track-your-item#/tracking-results/\u0002\u000114", - "elb": "//www.reddit.com/r/melbourne/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010" - }, - "n": { - "l": "//duckduckgo.com/?q=\u0002&kl=nl-nl\u00010", - "\u0010": "http://india.recruit.net/search.html?query=\u0002&location=delhi\u00010", - "z": "//www.radionz.co.nz/search/results?utf8=%E2%9C%93&q=\u0002&commit=Search\u00010", - "24": "http://en.rocketnews24.com/?s=\u0002\u00014" - }, - "o": { - "\u0010": "//www.admin.ch/opc/search/?text=\u0002&lang=fr&language%5B%5D=fr&product%5B%5D=ClassifiedCompilation\u00010", - "k": { - "\u0010": "http://www.returnofkings.com/?s=\u0002\u00010", - "u": "//owner.roku.com/Add/\u0002\u00015", - "omari": "http://rokomari.com/search?term=\u0002\u00010" - }, - "s": { - "\u0010": "http://www.ros.org/search/index.html?cx=018259903093183594226%3Atxvzw9fat6w&cof=FORID%3A11%3BNB%3A1&ie=UTF-8&filter=0&num=10&input=\u0002&q=\u0002&sa=Submit\u00010", - "w": "//wiki.ros.org/\u0002\u00010", - "tr": "//rostr.disney.com/search_results?query=\u0002\u00010", - "ettacode": "http://rosettacode.org/mw/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00014", - "sde": "//www.rossmann.de/verbraucherportal/toolbox/suche.html?query=\u0002\u00010" - }, - "ck": { - "\u0010": "//luarocks.org/search?q=\u0002\u00013", - "et": { - "\u0010": "http://www.rocketindustrial.com/catalogsearch/result/?q=\u0002\u00010", - "beans": "//www.rocketbeans.tv/?s=\u0002\u00010", - "hub": "http://rockethub.com/projects?utf8=%E2%9C%93&q=\u0002\u00010" - }, - "it": "//www.rockit.it/web/cerca.php?k=\u0002\u00010", - "ol": "http://www.rockol.it/search.php?s=\u0002\u00010", - "auto": "//www.rockauto.com/en/partsearch/?partnum=\u0002\u00017", - "papershotgun": "http://www.rockpapershotgun.com/?s=\u0002\u00010" - }, - "do": "//gdpr.pl/?s=\u0002\u00010", - "fi": "http://www.dictionar-finlandez.net/online/?word=\u0002\u00010", - "ld": "//old.reddit.com/search?q=\u0002\u0001330", - "ot": { - "h": "//www.roothax.com/?s=\u0002\u00010", - "\u0010": "http://root.cern.ch/drupal/search/node/\u0002\u00010" - }, - "r2": "//riskofrain2.fandom.com/wiki/Special:Search?query=\u0002\u000131", - "to": "//www.rotoworld.com/search#query=\u0002\u00010", - "adandtrack": "//www.roadandtrack.com/search/?q=\u0002\u00010", - "bertchristgau": "//robertchristgau.com/get_artist.php?name=\u0002\u00010", - "blox": { - "g": { - "\u0010": "//www.roblox.com/games/?Keyword=\u0002\u00016", - "r": "http://www.roblox.com/Groups/search.aspx?val=\u0002\u00010" - }, - "l": "//www.roblox.com/develop/library?CatalogContext=2&Keyword=\u0002&SortAggregation=5&LegendExpanded=true&Category=6\u00013", - "\u0010": "//www.roblox.com/games/?Keyword=\u0002\u00016", - "u": "//www.roblox.com/search/users?keyword=\u0002\u00010" - }, - "botreview": "//robot-review.ru/search?q=\u0002\u00010", - "btex": "//www.robtex.com/dns-lookup/\u0002\u00017", - "cwiki": "http://rocwiki.org/?action=search&string=\u0002\u00010", - "dev": "//developer.roblox.com/search#stq=\u0002\u00010", - "etgen": "//www.roetgen.de/?s=\u0002\u00010", - "get": "http://www.roget.org/scripts/qq.php?seekword=\u0002\u00010", - "gers": "//www.rogers.com/customer/search?searchTerm=\u0002\u00010", - "gerebert": "//www.rogerebert.com/search?utf8=%E2%9C%93&q=\u0002\u000112", - "guebasin": "http://roguebasin.roguelikedevelopment.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "ll205e": "//roll20.net/compendium/dnd5e/searchbook/?terms=\u0002\u00014", - "llingstone": { - "\u0010": "http://www.rollingstone.com/search?q=\u0002\u00010", - "it": "http://www.rollingstone.it/?s=\u0002\u00010" - }, - "majidesukanji": "http://www.romajidesu.com/kanji/\u0002 \u00010", - "majidesuvcb": "http://www.romajidesu.com/?m=dictionary&a=lookup&w=\u0002\u00010", - "t13": "http://decode.org/?q=\u0002\u000111", - "terpanda": "//redpandazine.at/?s=\u0002\u00010", - "ttentomato": { - "\u0010": "http://www.rottentomatoes.com/search/?search=\u0002\u0001200", - "es": "http://www.rottentomatoes.com/search/?search=\u0002\u0001200" - }, - "ute": { - "\u0010": "//www.google.de/maps/dir/\u0002\u00010", - "r": "//www.router24.info/uebersicht?s=\u0002\u00010" - }, - "utard": "http://www.routard.com/recherche.asp?q=\u0002&edt_cleRech=\u0002\u00010", - "uxbe": "//duckduckgo.com/?q=site%3Arouxbe.com+\u0002\u00010", - "wiki": "//developer.roblox.com/search#stq=\u0002\u00010", - "yalroadl": "//royalroadl.com/fictions/search?keyword=\u0002\u00018", - "zet": { - "\u0010": "http://rozethaber.com/search/\u0002\u00010", - "ka": "http://rozetka.com.ua/search/?section_id=§ion=&text=\u0002&rz-search-button=\u00018" - } - }, - "p": { - "f": "//www.reddit.com/r/PublicFreakout/search/?q=\u0002&restrict_sr=1\u00010", - "g": { - "\u0010": "http://rpg.stackexchange.com/search?q=\u0002\u00010", - "sx": "http://rpg.stackexchange.com/search?q=\u0002\u00010", - "geek": "http://rpggeek.com/geeksearch.php?action=search&objecttype=rpgunified&q=\u0002&B1=Go\u00017" - }, - "i": { - "\u0010": "//www.raspberrypi.org/search/\u0002\u00010", - "-so": "http://raspberrypi.stackexchange.com/search?q=\u0002\u00010" - }, - "m": { - "\u0010": "http://rpmfind.net/linux/rpm2html/search.php?query=\u0002&submit=Search+...\u00010", - "s": "//src.fedoraproject.org/rpms/\u0002\u000171", - "find": "http://rpmfind.net/linux/rpm2html/search.php?query=\u0002&submit=Search+...\u00010", - "fusion": "//admin.rpmfusion.org/pkgdb/packages/\u0002/\u00010" - }, - "\u0010": "http://www.raspberrypi.org/phpBB3/search.php?keywords=\u0002\u00015", - "s": "http://www.rockpapershotgun.com/?s=\u0002 \u000118", - "y": "//realpython.com/search?q=\u0002\u000174", - "ad": "//pad.riseup.net/p/\u0002\u00010", - "hilos": "http://www.radicalphilosophy.com/?s=\u0002\u00016", - "hone": "http://www.whitepages.com/phone/\u0002\u00010", - "len": "//context.reverso.net/tłumaczenie/polski-angielski/\u0002\u00010", - "rivacy": "//www.reddit.com/r/privacy/search?q=\u0002&restrict_sr=on\u00014" - }, - "r": { - "c": "http://www.rainbowresource.com/searchspring.php?q=\u0002\u00010", - "\u0010": "http://reprap.org/mediawiki/index.php?search=\u0002\u00010", - "w": "//riordan.fandom.com/wiki/Special:Search?query=\u0002\u00010" - }, - "\u0010": "//www.reddit.com/search?q=\u0002\u00014426", - "s": { - "4": "http://rs.4chan.org/?s=\u0002&from=ALL\u00010", - "c": { - "h": "//www.admin.ch/opc/search/?text=\u0002&lang=fr&product[]=cc&date_range_min=&date_range_max=&d_compilation=both&d_is_in_force=yes&thesaurus=1\u00010", - "i": "//www.reddit.com/r/askscience/search?q=\u0002&restrict_sr=1\u00010", - "\u0010": "http://uk.rs-online.com/web/c/?searchTerm=\u0002\u000123", - "ape": "//runescape.wiki/?search=\u0002\u00010" - }, - "g": { - "e": "http://services.runescape.com/m=itemdb_rs/results?query=\u0002\u00018", - "\u0010": "//www.rockstargames.com/search/?q=\u0002\u00010" - }, - "k": "//www.refseek.com/search?q=\u0002\u00010", - "n": { - "l": "http://nl.rs-online.com/web/c/?searchTerm=\u0002\u00010", - "\u0010": "//www.reddit.com/r/\u0002/new/\u00010", - "z": "//nz.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u000111" - }, - "o": "http://stackoverflow.com/search?q=[r]+\u0002\u00010", - "\u0010": "//runescape.wiki/?search=\u0002\u00010", - "u": { - "b": "//reddit.com/r/\u0002\u00011600", - "k": "http://uk.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u000121", - "\u0010": "//runsignup.com/Races?name=\u0002\u00010" - }, - "w": { - "\u0010": "//runescape.wiki/?search=\u0002&title=Special:Search&go=Go\u000110", - "iki": { - "n": "//runescape.wiki/?search=test&title=Special%3ASearch&fulltext=\u0002\u00010", - "\u0010": "//runescape.wiki/?search=\u0002\u00010" - } - }, - "07": "//oldschool.runescape.wiki/w/Special:Search?search=\u0002\u00010", - "ar": "http://www.rollingstone.com.ar/buscador-r30-\u0002\u00010", - "de": "http://de.rs-online.com/web/c/?searchTerm=\u0002\u00013", - "es": "//es.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u00010", - "fr": "http://radiospares-fr.rs-online.com/web/c/?searchTerm=\u0002\u00013", - "it": "http://it.rs-online.com/web/c/?searchTerm=\u0002\u00010", - "pb": "//www.rspb.org.uk/search/?q=\u0002\u00010", - "ph": "http://ph.rs-online.com/web/c/?searchTerm=\u0002\u00010", - "pt": "//www.roblox.com/games/?Keyword=\u0002\u00016", - "tc": "http://rosettacode.org/mw/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010", - "za": "//za.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u00010", - "-docs": "//docs.rs/\u0002\u0001924", - "-std": "//doc.rust-lang.org/std/index.html?search=\u0002\u00013", - "eek": "http://www.rseek.org/?cx=010923144343702598753:boaz1reyxd4&newwindow=1&q=\u0002&sa=Search+functions,+lists,+and+more&cof=FORID:11&siteurl=www.rseek.org/\u0001199", - "ibank": "//risibank.fr/#\u0002\u00010", - "ssh": "http://www.rsssearchhub.com/feeds/?search=\u0002\u00010", - "tats": "//www.rdocumentation.org/search?q=\u0002\u00016", - "vce": "//www.biblegateway.com/passage/?search=\u0002&version=RSVCE\u00010" - }, - "t": { - "d": { - "\u0010": "//readthedocs.org/search/?q=\u0002\u00010", - "linux": "//kernel.readthedocs.io/en/sphinx-samples/search.html?q=\u0002&check_keywords=yes&area=default\u00010" - }, - "e": { - "\u0010": "http://www.rte.ie/search/?query=\u0002\u00010", - "s": "//actualidad.rt.com/search?q=\u0002\u00010" - }, - "h": "//roosterteeth.com/#search?term=\u0002\u00010", - "m": "//www.rememberthemilk.com/app/#search/\u0002\u00010", - "\u0010": "//www.rottentomatoes.com/search/?search=\u0002\u00013148", - "s": "http://www.rts.ch/services/recherche/?q=\u0002\u000142", - "t": "http://www.realtimetrains.co.uk/search/handler?type=basic&qs=true&search=\u0002\u00016", - "bf": "//www.rtbf.be/info/recherche?q=\u0002\u000114", - "fd": "http://\u0002.rtfd.io\u00010", - "fr": "//fr.shopping.rakuten.com/s/\u0002\u00013", - "ve": "http://www.rtve.es/buscador/?q=\u0002\u000117", - "boi": "//www.reddit.com/r/bindingofisaac/search?q=\u0002&restrict_sr=on\u00010", - "i51cpp": "//community.rti.com/rti-doc/510/ndds.5.1.0/doc/html/api_cpp/search.php?query=\u0002\u00010", - "i51java": "//community.rti.com/rti-doc/510/ndds.5.1.0/doc/html/api_java/search.php?query=\u0002\u00010", - "i523um": "//community.rti.com/static/documentation/connext-dds/5.2.3/doc/manuals/connext_dds/html_files/RTI_ConnextDDS_CoreLibraries_UsersManual/index.htm#search-\u0002\u00010", - "ikb": "//community.rti.com/search/kb/\u0002\u00010", - "ings": "//www.rtings.com/search?cx=partner-pub-9742413462301870%3A7201788216&cof=FORID%3A10&ie=UTF-8&silo=&q=\u0002\u000115", - "news": "http://rt.com/search/?q=\u0002\u000111", - "oday": "//www.rt.com/search?q=\u0002\u00010", - "vnh": "http://www.rtvnh.nl/zoeken/1/\u0002\u00010" - }, - "u": { - "g": { - "\u0010": "http://www.rug.nl/search/?searchtext=\u0002\u00010", - "ame": "//www.retrovideogamestore.com/index.php?option=com_mijoshop&route=product/search&search=\u0002\u00010" - }, - "k": "http://ruk.ca/search/site/\u0002\u00010", - "\u0010": "http://www.redusers.com/noticias/?s=\u0002\u00018", - "by": { - "\u0010": "http://www.google.com/cse?q=\u0002&cx=013598269713424429640:g5orptiw95w&ie=UTF-8&sa=Search\u000165", - "doc": { - "\u0010": "http://www.ruby-doc.org/search.html?q=\u0002\u000119", - "s": "//rubydocs.org/d/ruby-latest/?q=\u0002\u000141" - }, - "gems": "http://rubygems.org/search?query=\u0002\u000122", - "lane": "http://www.rubylane.com/search?q=\u0002\u00010", - "toolbox": "//www.ruby-toolbox.com/search?utf8=✓&q=\u0002\u00010" - }, - "en": "http://translate.google.com/#ru/en/\u0002\u000196", - "fr": "//translate.google.com/#ru/fr/\u0002\u00016", - "sr": "//www.reddit.com/user/\u0002/\u000149", - "st": { - "a": "http://www.rusta.com/se/Sok/\u0002/\u00010", - "d": { - "\u0010": "//doc.rust-lang.org/std/?search=\u0002\u0001237", - "oc": "//doc.rust-lang.org/std/?search=\u0002\u0001237" - }, - "n": "//doc.rust-lang.org/nightly/std/?search=\u0002\u000129", - "\u0010": "//doc.rust-lang.org/std/?search=\u0002\u0001237", - "labs": "//rustlabs.com/search=\u0002\u00019", - "rfc": "//github.com/rust-lang/rfcs/issues?utf8=✓&q=\u0002\u00013", - "std": "//doc.rust-lang.org/std/?search=\u0002\u0001237" - }, - "th": "//www.billygrahambookstore.org/catalogsearch/result/?q=\u0002\u00010", - "wk": "//ru.wikipedia.org/w/index.php?search=\u0002\u00014", - "bocop": "//rubocop.readthedocs.io/en/latest/search.html?q=\u0002\u00010", - "mble": "//rumble.com/all/q/\u0002/?type=videos\u0001163", - "nescape": "//runescape.wiki/w/Special:Search?search=\u0002\u000127", - "nsignup": "//runsignup.com/Races?s=&cloudSearch=T&name=\u0002\u00010", - "ten": "http://find.ruten.com.tw/search/s000.php?enc=u&searchfrom=searchf&k=\u0002&t=0\u00017", - "tronik": "//www.rutronik24.com/search-result/qs:\u0002\u00010", - "tube": "http://rutube.ru/search.html?page=index&search=\u0002&search_type=track\u00016", - "wiki": "//ru.wikipedia.org/w/index.php?search=\u0002 \u000120" - }, - "v": { - "b": "http://rvb.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "m": "//reviewmeta.com/search?q=\u0002\u00013", - "\u0010": "//www.real.video/search?query=\u0002\u000112", - "cc": "http://raritanval.edu/rvcc/search.aspx?searchtext=\u0002\u00010", - "rental": "//www.elmonterv.com/search/?q=\u0002\u00010" - }, - "w": { - "\u0010": "http://rationalwiki.org/w/index.php?search=\u0002\u0001280", - "th": "http://www.rwth-aachen.de/ca/be/hx/?lidx=&institution=RWTH+Aachen+University&search=\u0002\u00010", - "iki": "//thereaderwiki.com/en/\u0002\u00010" - }, - "z": { - "\u0010": "//www.rhymezone.com/r/rhyme.cgi?Word=\u0002&typeofrhyme=perfect&org1=syl&org2=l&org3=y\u000189", - "r": "//www.razer.com/search?text=\u0002\u00010", - "tk": "//rozetka.com.ua/ua/search/?text=\u0002\u00010", - "elda": "//www.reddit.com/r/zelda/search/?q=\u0002\u00010" - }, - "10": "//search.rakuten.co.jp/search/mall/\u0002/\u00015", - "2r": "//www.rome2rio.com/map/\u0002\u000117", - "2u": "http://www.r2u.org.ua/s?w=\u0002&scope=all&dicts=all&highlight=on\u00010", - "dc": "//www.rueducommerce.fr/recherche/\u0002\u00010", - "do": { - "c": { - "\u0010": "http://rdoc.info/find/github?q=\u0002\u00013", - "s": "//www.rdocumentation.org/search?q=\u0002\u00016", - "u": "//www.rdocumentation.org/search?q=\u0002\u00016" - }, - "\u0010": "//www.rdocumentation.org/search?q=\u0002\u00016" - }, - "ds": "//www.reddit.com/r/\u0002\u00011875", - "e3": "//www.re3data.org/search?query=\u0002\u00010", - "ef": { - "r": { - "\u0010": "http://dictionary.reverso.net/french-definition/\u0002\u00010", - "eb": "http://dictionary.reverso.net/french-english/\u0002\u00014", - "es": { - "h": "http://www.refreshcartridges.co.uk/advanced_search_result.php?q=\u0002\u00010", - "\u0010": "http://dictionary.reverso.net/french-spanish/\u0002\u00010" - }, - "ge": "http://dictionnaire.reverso.net/francais-allemand/\u0002\u00010" - }, - "\u0010": "http://www.reference.com/web?q=\u0002\u000111", - "lets": "http://reflets.info/?s=\u0002\u00010", - "seek": "//www.refseek.com/search?q=\u0002\u00010" - }, - "ei": { - "\u0010": "//www.rei.com/search?q=\u0002\u000178", - "chelt": "//secure.reichelt.de/?ACTION=446;SEARCH=\u0002\u00016", - "sartikelen": "//www.reisartikelen.nl/search/?q=\u0002\u00010", - "ttiopas": "http://www.reittiopas.fi/?showsearchformsaved=hide&from_in= \u0002&from=&via_in=&via=&via_time=0&to_in= \u0002&to=&hour=15&minute=39&timetype=departure&date_cb=on&day=7&month=7&year=2015&cmargin=3&wspeed=70&method=1&stz=0&mc1=0&mc2=0&mc3=0&mc4=0&mc5=0&mc6=0&mc0=1&nroutes=3&gotoHash=\u00010" - }, - "en": { - "\u0010": "http://dictionary.reverso.net/english-definition/\u0002\u00010", - "pl": "//context.reverso.net/tłumaczenie/angielski-polski/\u0002\u00010", - "soruigo": "//renso-ruigo.com/word/\u0002\u00010" - }, - "ep": { - "l": { - "\u0010": "//repl.it/languages/\u0002\u000130", - "icante": "http://lamiradadelreplicante.com/?s=\u0002 \u00010" - }, - "m": "//represent.com/search?q=\u0002\u00010", - "\u0010": "http://www.replacements.com/search/?query=\u0002\u00010", - "um": "//repositorium.sdum.uminho.pt/simple-search?query=\u0002\u00010", - "eater": "//www.repeaterbook.com/repeaters/keyword.php?func=result&keyword=\u0002\u00010", - "ology": "//repology.org/metapackages/?search=\u0002\u000196", - "rap": "http://reprap.org/mediawiki/index.php?search=\u0002\u00010", - "ubblica": { - "\u0010": "http://ricerca.repubblica.it/ricerca/repubblica?query=\u0002\u00010", - "video": "http://ricerca.repubblica.it/ricerca/repubblica-video?query=\u0002&view=repubblica-video\u00010" - } - }, - "eu": { - "q": "http://www.reuters.com/search/news?blob=\u0002\u00010", - "\u0010": "//www.reddit.com/user/\u0002\u000154", - "ters": "//www.reuters.com/search/news?blob=\u0002\u000146" - }, - "ex": { - "\u0010": "http://rex.kb.dk/primo_library/libweb/action/search.do?fn=search&vl%28freeText0%29=\u0002\u00010", - "el": "//www.rexel.de/search/?text=\u0002\u00013" - }, - "im": { - "a": "//www.cercarime.it/?rima=\u0002\u00010", - "e": "http://www.rimessolides.com/rime.aspx?m=\u0002\u00010", - "\u0010": "http://rimlexikon.com/index.php?rim=\u0002\u00010", - "wiki": "http://rimworldwiki.com/index.php?search=\u0002\u000110" - }, - "ip": { - "\u0010": "//reverseip.domaintools.com/search/?q=\u0002\u00013", - "e": { - "\u0010": "//stat.ripe.net/\u0002\u00019", - "db": "//apps.db.ripe.net/search/query.html?searchtext=\u0002&search%3AdoSearch=Search#resultsAnchor\u00010", - "stat": "//stat.ripe.net/\u0002\u00019" - } - }, - "is": "//www.ris.bka.gv.at/Ergebnis.wxe?Abfrage=Gesamtabfrage&SearchInAsylGH=False&SearchInAvn=False&SearchInAvsv=False&SearchInBegut=False&SearchInBgblAlt=False&SearchInBgblAuth=False&SearchInBgblPdf=False&SearchInBks=False&SearchInBundesnormen=False&SearchInDok=False&SearchInDsk=False&SearchInErlaesse=False&SearchInGbk=False&SearchInGemeinderecht=False&SearchInJustiz=False&SearchInBvwg=False&SearchInLvwg=False&SearchInLgbl=False&SearchInLgblNO=False&SearchInLgblAuth=False&SearchInLrBgld=False&SearchInLrK=False&SearchInLrNO=False&SearchInLrOO=False&SearchInLrSbg=False&SearchInLrStmk=False&SearchInLrT=False&SearchInLrVbg=False&SearchInLrW=False&SearchInNormenliste=False&SearchInPvak=False&SearchInRegV=False&SearchInUbas=False&SearchInUmse=False&SearchInUvs=False&SearchInVerg=False&SearchInVfgh=False&SearchInVwgh=False&ImRisSeit=Undefined&ResultPageSize=100&Suchworte=\u0002&Position=1\u00010", - "lp": "http://www.rugbyleagueproject.org/search/?q=\u0002\u00010", - "lr": "//www.reddit.com/r/RocketLeague/search?q=\u0002&restrict_sr=on\u00010", - "lw": "//rocketleague.fandom.com/wiki/Special:Search?query=\u0002\u00010", - "xp": "http://ruxpert.ru/index.php?search=\u0002\u00010", - "yg": "//rateyourmusic.com/genre/\u0002\u00010", - "ym": { - "f": "//rateyourmusic.com/search?searchtype=F&searchterm=\u0002\u000121", - "\u0010": "//rateyourmusic.com/search?searchterm=\u0002\u00014210", - "r": { - "\u0010": "//rateyourmusic.com/search?searchtype=l&searchterm=\u0002\u00013", - "elease": "//rateyourmusic.com/search?searchterm=\u0002&type=l\u00010" - }, - "genre": "//rateyourmusic.com/search?searchtype=g&searchterm=\u0002\u00016" - }, - "dkj": "http://www.romajidesu.com/kanji/\u0002\u00010", - "dns": "http://mxtoolbox.com/SuperTool.aspx?action=ptr%3a\u0002&run=toolpage\u00010", - "drr": "//rdrr.io/search?q=\u0002\u00010", - "dvcb": "http://www.romajidesu.com/?m=dictionary&a=lookup&w=\u0002\u00010", - "ealo": "//realo.com/search?q=\u0002\u00010", - "eactome": "http://reactome.org/content/query?q=\u0002\u00010", - "eactparts": "//react.parts/?search=\u0002\u00010", - "eaddc": "//www.readdc.com/search?search=\u0002&submit=SEARCH\u00010", - "eadthedocs": "//readthedocs.org/search/?q=\u0002\u00010", - "eadwriteweb": "http://readwrite.com/search?keyword=\u0002\u00010", - "eaktor": "//www.native-instruments.com/en/reaktor-community/reaktor-user-library/all/all/all/all/\u0002/latest/1/all/?q=\u0002&t=userlib\u00010", - "ealtor": "http://www.realtor.com/realestateandhomes-search/\u0002\u000115", - "eason": { - "\u0010": "http://reason.com/search?q=\u0002\u00010", - "ator": "http://tools.wmflabs.org/reasonator/?find=\u0002\u00010" - }, - "ebel": "//www.rebel.pl/e4u.php/1,ModProducts/Search?search[submit]=1&search[phrase]=\u0002\u00010", - "ebuy": "//www.rebuy.de/kaufen/suchen?q=\u0002\u00014", - "ebirth": "http://bindingofisaacrebirth.gamepedia.com/index.php?search=\u0002\u000126", - "ebiun": "http://rebiun.baratz.es/rebiun/search?q=\u0002&start=0&rows=12&sort=score+desc&advanced_handler=advanced\u00010", - "eborn": "http://reborn.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "eck": { - "\u0010": "http://reck.dk/?s=\u0002\u00019", - "less": "http://www.reckless.com/index.php?keywords=\u0002&format=&cond=&store=&is_search=true&srch=Search\u00010" - }, - "ecap": "http://archive.recapthelaw.org/search/advanced/?q=\u0002&x=0&y=0&court=&docket_number=&case_name=&pacer_case_number=&date_filed=&date_filed_end=&date_terminated=&date_terminated_end=&date_last_filing=&date_last_filing_end=\u00013", - "econ": "http://www.watchrecon.com/?query=\u0002\u00010", - "ecent": "http://duckduckgo.com/?q=\u0002&df=w\u00010", - "ecetas": "//www.guiarecetas.com/?s=\u0002\u00010", - "ecettesqc": "//www.recettes.qc.ca/recettes/recherche?search[query]=\u0002&search[sort]=\u00013", - "ecfren": "//context.reverso.net/traduction/francais-anglais/\u0002\u00018", - "ecipe": { - "\u0010": "http://allrecipes.com/search/default.aspx?qt=k&wt=\u0002\u00010", - "s": "http://allrecipes.com/search/default.aspx?qt=k&rt=r&pqt=k&ms=0&fo=0&wt=\u0002\u00010" - }, - "eciva": "//www.reciva.com/stations/search?q=\u0002\u00010", - "eclame": "http://www.reclameaqui.com.br/busca/?q=\u0002\u00010", - "ecode": "//www.recode.net/search?q=\u0002\u00010", - "ecordclick": "http://recordclick.com/?s=\u0002&x=0&y=0\u00010", - "ecruit": "//australia.recruit.net/search.html?query=\u0002&location=&s=\u00010", - "ecycle": "http://search.earth911.com/?what=\u0002\u00010", - "edis": "http://redis.io/commands/\u0002 \u00016", - "edable": "//www.redable.nl/catalogsearch/result/?q=\u0002\u00010", - "edalyc": "http://www.redalyc.org/busquedaArticuloFiltros.oa?q=\u0002\u00010", - "edbot": "http://redbot.org/?uri=\u0002\u00018", - "edbox": "http://www.redbox.com/search/?q=\u0002\u00010", - "edbull": "//www.redbull.com/int-en/search/\u0002\u00010", - "edbubble": "http://www.redbubble.com/shop/\u0002\u000127", - "edcat": "//www.recreationhobbiescenter.com/pages/search-results-page?q=\u0002\u00010", - "eddit": { - "\u0010": "//www.reddit.com/search?q=\u0002\u00014426", - "s": "//www.reddit.com/r/\u0002\u00011875", - "old": "//old.reddit.com/search?q=\u0002\u0001330" - }, - "edeen": "//dictionary.reverso.net/german-english/\u0002\u00010", - "edensarten": "http://www.redensarten-index.de/suche.php?suchbegriff=\u0002&bool=relevanz&gawoe=an&suchspalte[]=rart_ou&suchspalte[]=rart_varianten_ou\u00010", - "edeye": "//www.redeye.com.au/answer.asp?reion=USA&atype=both&artist=\u0002\u00010", - "edfin": "http://www.redfin.com/homes-for-sale#!search_location=\u0002\u000121", - "edflagdeals": "http://www.redflagdeals.com/search/?=\u0002\u00010", - "edford": "http://www.relcdetroit.org/index.php?p_id=1\u0002\u00010", - "edmine": "//www.redmine.org/search?q=\u0002\u00010", - "edpanda": "//redpandazine.com/?s=\u0002\u00010", - "edtram": "//ru.redtram.com/search/?q=\u0002\u00010", - "eed": "http://www.reed.co.uk/job/searchresults.aspx?k=\u0002\u00010", - "een": { - "\u0010": "http://dictionary.reverso.net/english-definition/\u0002\u00010", - "es": "http://dictionary.reverso.net/english-spanish/\u0002\u00010", - "fr": "http://dictionary.reverso.net/english-french/\u0002\u00015" - }, - "ees": { - "\u0010": "http://dictionary.reverso.net/spanish-definition/\u0002\u00010", - "en": "http://dictionary.reverso.net/spanish-english/\u0002\u00010", - "fr": "http://dictionary.reverso.net/spanish-french/\u0002\u00010", - "ge": "http://woerterbuch.reverso.net/spanisch-deutsch/\u0002\u00010", - "pt": "http://dictionary.reverso.net/spanish-portuguese/\u0002\u00010" - }, - "eelgood": "//reelgood.com/search?q=\u0002\u000134", - "eelviews": "http://www.reelviews.net/search/\u0002\u00010", - "ege": { - "\u0010": "http://dictionary.reverso.net/german-definition/\u0002\u00010", - "x": { - "\u0010": "http://www.regexlib.com/Search.aspx?k=\u0002 \u00018", - "per": "//regexper.com/#\u0002\u00010" - }, - "es": "http://woerterbuch.reverso.net/deutsch-spanisch/\u0002\u00010", - "fr": "http://dictionnaire.reverso.net/allemand-francais/\u0002\u00010" - }, - "egister": "http://search.theregister.co.uk/?q=\u0002&advanced=1&author=&date=the+dawn+of+time&site=all+The+Register+sites&results_per_page=100\u00015", - "egrav": "http://regravity.com/?s=\u0002\u00010", - "eleases": "//www.releases.com/search?q=\u0002\u00010", - "elmbk": "//bendixkingradios.com/catalogsearch/result/?q=\u0002 \u00010", - "elword": "http://relatedwords.org/relatedto/\u0002\u00014", - "emo": "//releasemonitor.de/s?q=\u0002\u00010", - "emy": { - "\u0010": "//remywiki.com/index.php?search=\u0002\u000148", - "wiki": "//remywiki.com/index.php?title=Special:Search&search=\u0002\u000120" - }, - "esi": { - "\u0010": "http://cekresi.com/?noresi=\u0002\u00010", - "dentadvisor": "http://www.residentadvisor.net/search.aspx?searchstr=\u0002\u000119" - }, - "esp": { - "\u0010": "http://www.respaper.com/s?q=\u0002\u00010", - "awners": "//www.respawners.net/search?query=\u0002\u00010" - }, - "esearch": { - "\u0010": "http://journals.plos.org/plosone/search?unformattedQuery=everything:\"\u0002\"\u00010", - "gate": "//www.researchgate.net/search/publications?q=\u0002\u00017" - }, - "estobe": "http://en.resto.be/business/search?searchbox=true&businessTypeId=1&fullText=\u0002\u00010", - "estofr": "http://www.resto.fr/business/search?searchbox=true&businessTypeId=1&fullText=\u0002\u00010", - "estolu": "http://www.resto.lu/fr/Luxembourg/guide.cfm?searchmode=classic&RESTOTYPE=isresto&nom=\u0002&idcuisine_type=&ville=®ion=&idprix=ddg@pivert.org\u00010", - "etro": "//retropie.org.uk/forum/search?term=\u0002&in=titlesposts&matchWords=all&sortBy=relevance&sortDirection=desc&showAs=posts\u00010", - "etty": "//retty.me/restaurant-search/search-result/?free_word_category=\u0002\u00010", - "etailmenot": "http://www.retailmenot.com/view/\u0002\u00010", - "eta-vortaro": "http://www.reta-vortaro.de/cgi-bin/sercxu.pl?sercxata=\u0002&kadroj=1\u00010", - "etskriv": "//dsn.dk/?retskriv=\u0002&ae=0\u00010", - "evd": { - "\u0010": "http://www.onelook.com/reverse-dictionary.shtml?s=\u0002\u00010", - "roid": "//revdroid.com/?s=\u0002\u00010" - }, - "evo": { - "\u0010": "http://www.reta-vortaro.de/cgi-bin/sercxu.pl?sercxata=\u0002&x=on&kadroj=1\u00019", - "lico": "//www.revolico.com/search.html?q=\u0002\u00010", - "lve": "//www.revolve.com/r/Search.jsp?search=\u0002\u00010" - }, - "evau": "http://www.reverseaustralia.com/search.php?search=\u0002\u00010", - "evef": "http://dictionary.reverso.net/english-french/\u0002\u00015", - "evgf": "//dictionary.reverso.net/german-french/\u0002\u00010", - "evamed": "//www.revamed.com/search?s=\u0002 \u00010", - "evenit": "http://context.reverso.net/translation/english-italian/\u0002\u000135", - "evengerists": "http://revengerists.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "everb": { - "\u0010": "//reverb.com/marketplace?query=\u0002\u0001278", - "nation": "//www.reverbnation.com/main/search?q=\u0002\u00010" - }, - "everso": { - "\u0010": "http://dictionary.reverso.net/german-english/\u0002 \u000142", - "enfr": "http://dictionary.reverso.net/english-french/\u0002\u00015", - "fren": "http://dictionary.reverso.net/english-french/\u0002\u00015", - "iten": "http://dictionary.reverso.net/italian-english/\u0002\u00010" - }, - "evesen": "http://context.reverso.net/translation/spanish-english/\u0002 \u00015", - "eviews": "//reviewscon.com/?s=\u0002&post_type=&catid=\u00010", - "eviewgeek": "//www.reviewgeek.com/?s=\u0002\u00010", - "eviewmeta": "//reviewmeta.com/search?q=\u0002\u00013", - "eviten": "http://context.reverso.net/translation/italian-english/\u0002\u000121", - "evzilla": "http://www.revzilla.com/search?query=\u0002&commit=Search\u00010", - "ewe": "//www.rewe.de/suche/?search=\u0002\u00010", - "-es": "//duckduckgo.com/?q=\u0002&kl=es-es\u000112", - "-nl": "//duckduckgo.com/?q=\u0002&kl=nl-nl\u00010", - "-uk": "//duckduckgo.com/?q=\u0002&kl=uk-en\u00010", - "-us": "//duckduckgo.com/?q=\u0002&kl=us-en\u00010", - "icardo": "//www.ricardo.ch/de/s/\u0002\u000162", - "idi": "//ridibooks.com/search/?q=\u0002\u000110", - "iddler": "//riddler.io/search?q=\u0002\u00010", - "ight": { - "\u0010": "http://www.rightrelevance.com/search/articles?query=\u0002\u00010", - "now": "//www.rightnowmedia.org/Search?q=\u0002\u00010", - "scale": "//docs.rightscale.com/search.html?q=\u0002\u00010", - "sidenews": "//www.rightsidenews.com/?s=\u0002\u00010" - }, - "igveda": { - "\u0010": "//rigvedawiki.net/r1/wiki.php/\u0002\u00010", - "wiki": "//rigvedawiki.net/r1/wiki.php/\u0002\u00010" - }, - "ijnmond": "http://www.rijnmond.nl/zoeken?query=\u0002\u00010", - "iksdagen": "//www.riksdagen.se/sv/global/sok/?q=\u0002&st=1\u00010", - "inf": "http://www.rinf.com/?q=\u0002 \u00010", - "ingtones": "//downloadringtones.mobi/?s=\u0002\u00010", - "iopac": "http://opac.regesta-imperii.de/lang_en/suche.php?qs=\u0002\u00010", - "iten": "http://context.reverso.net/translation/italian-english/\u0002\u000121", - "itru": "//context.reverso.net/translation/italian-russian/\u0002\u00010", - "itchiespecs": "//www.ritchiespecs.com/results/\u0002\u00010", - "itlib": "//rit.summon.serialssolutions.com/search?l=en&q=\u0002\u00010", - "/leb": "//www.reddit.com/r/lebanon/search?q=\u0002\u00010", - "yans": "//ryanscomputers.com/catalogsearch/result/?q=\u0002\u00010", - "year": "http://www.reddit.com/search?q=\u0002&t=year\u00010", - "yfma": "//ryfma.com/search/\u0002\u00010" - }, - "s": { - "2": "//www.semanticscholar.org/search?q=\u0002\u000190", - "6": { - "\u0010": "http://society6.com/search/?q=\u0002\u00010", - "all": "http://society6.com/search/?q=\u0002\u00010" - }, - "9": "//sanctum9.wordpress.com/?s=\u0002\u00010", - "a": { - "b": { - "\u0010": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com+\u0002&ia=web\u00010", - "ahlatan": "http://sabahlatan.com/?s=\u0002\u00010", - "ayonbugs": "//bugs.sabayon.org/buglist.cgi?bug_status=__all__&content=\u0002\u00010", - "ayonforums": "//forum.sabayon.org/search.php?keywords=\u0002\u00010", - "how": "//sabhow.blogspot.com/search/?q=\u0002\u00010" - }, - "l": { - "\u0010": "http://www.salidzini.lv/search.php?q=\u0002\u00016", - "t": { - "\u0010": "//cse.google.com/cse?cx=011515552685726825874:ht0p8miksrm&q=\u0002\u000129", - "mod": "//docs.saltstack.com/en/latest/ref/modules/all/salt.modules.\u0002.html\u00013", - "stack": "//duckduckgo.com/?q=site%3Adocs.saltstack.com+\u0002\u00010", - "states": "//docs.saltstack.com/en/latest/ref/states/all/salt.states.\u0002.html\u00010", - "ystock": "http://www.saltystock.com/search.pp?keyword=\u0002\u00010" - }, - "am": "//salamtm.blogspot.com/search/?term=\u0002\u00010", - "ix": { - "\u0010": "http://www.salixos.org/wiki/index.php/Special:Search?search=\u0002\u00010", - "forums": "http://www.salixos.org/forum/search.php?keywords=\u0002\u00010" - }, - "on": "//www.salon.com/search/\u0002\u00010", - "sa": "//salsa.debian.org/search?search=\u0002\u00019" - }, - "m": { - "\u0010": "http://www.samsung.com/au/search/?q=\u0002\u00016", - "ba": "//wiki.samba.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "de": "//smile.amazon.de/s/?url=search-alias%3Daps&field-keywords=\u0002\u00015", - "aritans": "http://www.samaritanspurse.org/?s=\u0002\u00010", - "pled": "http://www.whosampled.com/search/artists/?q=\u0002\u00010", - "sclub": "//www.samsclub.com/sams/search/searchResults.jsp?searchTerm=\u0002&searchCategoryId=all\u000122" - }, - "o": { - "b": "//svenska.se/tre/?sok=\u0002&pz=1\u000124", - "l": "//svenska.se/tre/?sok=\u0002\u000133", - "\u0010": "http://swordartonline.wikia.com/wiki/Special:Search?go&query=\u0002\u00010" - }, - "p": { - "o": { - "\u0010": "http://pesquisa.sapo.pt/?barra=&q=\u0002\u00010", - "rta": "//saportareport.com/?s=\u0002\u00010" - }, - "\u0010": "//launchpad.support.sap.com/#/solutions/notesv2/?q=\u0002\u00017", - "dl": "//launchpad.support.sap.com/#/softwarecenter/search/\u0002\u00010", - "na": "//sapnaonline.com/general-search?searchkey=\u0002\u00010", - "blogs": "//blogs.sap.com/?s=\u0002\u00010", - "help": "//help.sap.com/viewer/search?q=\u0002\u00010", - "note": { - "\u0010": "//launchpad.support.sap.com/#/notes/\u0002/E\u00017", - "s": "//launchpad.support.sap.com/#/solutions/notes/?q=\u0002\u000120" - }, - "phire": "http://forums.sapphirecommunity.com/search.php?keywords=\u0002&terms=all&author=&fid%5B%5D=4&fid%5B%5D=6&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=800&t=0&submit=Search\u00010", - "table": { - "s": "http://www.tcodesearch.com/sap-tables/detail?id=\u0002\u00010", - "\u0010": "http://www.tcodesearch.com/sap-tables/detail?id=\u0002\u00010" - } - }, - "q": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com%2Fquran%2F+\u0002&t=ffsb&ia=web\u00010", - "\u0010": "http://www.scientificamerican.com/search/?q=\u0002&x=-783&y=-180 \u000112", - "s": { - "k": "http://www.search.ask.com/web?q=\u0002\u00010", - "\u0010": "//support.sas.com/en/search.html?q=\u0002&fq=siteArea%3A%22Documentation%22\u00013" - }, - "y": { - "\u0010": "//www.merriam-webster.com/dictionary/\u0002?pronunciation\u00014", - "ba": "http://www.sayba.com.br/pesquisar/?q=\u0002\u00010" - }, - "ck": "//www.sackmuehle.de/?s=(\u0002)\u00010", - "cl": "//www.countrylife.co.za/?s=\u0002\u00010", - "de": "//smile.amazon.de/s/?field-keywords=\u0002\u000120", - "fe": { - "\u0010": "/?q=\u0002&kp=1\u000139", - "on": "/?q=\u0002&kp=1\u000139", - "booru": "http://safebooru.org/index.php?page=post&s=list&tags=\u0002\u000179", - "off": "/?q=\u0002&kp=-2\u00014364", - "web": "//safeweb.norton.com/report/show?url=\u0002\u00010" - }, - "ge": "//duckduckgo.com/?q=site%3Adoc.sagemath.org+\u0002\u00010", - "ki": "http://www.suomisanakirja.fi/\u0002\u00014", - "na": { - "\u0010": "http://www.sanakirja.org/search.php?q=\u0002\u000121", - "kirja": "http://www.sanakirja.org/search.php?q=\u0002 \u000123", - "lpazar": "http://www.sanalpazar.com/urunara?criteria=\u0002\u00010" - }, - "uk": "//smile.amazon.co.uk/s/?field-keywords=\u0002\u000130", - "ve": { - "\u0010": "//web.archive.org/save/\u0002\u00019", - "back": "//web.archive.org/save/\u0002\u00019" - }, - "xo": "//www.saxo.com/dk/products/search?query=\u0002\u00010", - "abforum": "http://www.saabforum.nl/search.php?keywords=\u0002\u00010", - "avn": "//www.jiosaavn.com/search/\u0002\u00010", - "fari": { - "\u0010": "//www.safaribooksonline.com/search/?query=\u0002\u00010", - "ext": "//safari-extensions.apple.com/?q=\u0002\u00010" - }, - "hibinden": "http://www.sahibinden.com/kelime-ile-arama?query_text=\u0002\u000119", - "idit": "//saidit.net/search?q=\u0002\u00010", - "ilguide": "http://www.sailguide.com/boats?boatname=\u0002\u00010", - "insburys": "//www.sainsburys.co.uk/webapp/wcs/stores/servlet/SearchDisplayView?storeId=10151&searchTerm=\u0002\u000116", - "iyasune": "//www.saiyasune.com/I1W\u0002.html\u00010", - "kuga": "//sakugabooru.com/post?tags=\u0002\u00010", - "ndiamesa": "//sandiamesa.com/?s=\u0002\u00010", - "ndiego": "//www.sandiego.org/search/site.aspx?q=\u0002\u00015", - "ndstorm": "//apps.sandstorm.io/search?term=\u0002\u00010", - "nskrit": "http://spokensanskrit.de/index.php?tinput=\u0002\u00010", - "raiva": "//busca.saraiva.com.br/?q=\u0002\u00010", - "rkariplace": "//www.sarkariplace.com/search?q=\u0002\u00010", - "rna": "http://www.sarna.net/wiki/index.php?search=\u0002\u000125", - "turn": { - "\u0010": "//www.saturn.de/de/search.html?query=\u0002&searchProfile=onlineshop&channel=sedede\u00017", - "games": "http://www.saturngames.co.uk/?searchStr=\u0002&_a=viewCat&Submit=Go\u00010" - }, - "ucenao": "http://saucenao.com/search.php?db=999&url=\u0002\u0001254", - "ugus": "//www.saugus.net/cgi-bin/htsearch?config=htdig&restrict=&exclude=&words=\u0002&method=and&format=long\u00010", - "vannah": "//savannah.gnu.org/search/?type_of_search=soft&words=\u0002\u00010", - "vido": "http://www.savido.cz/download.php?url=\u0002\u00010" - }, - "b": { - "2": "//scratch.mit.edu/search/projects?q=\u0002\u00013", - "a": "//www.sba.gov/search/?q=\u0002\u00010", - "b": { - "b": "//dev.eoils.de/contents/b/index.php?station=\u0002\u00010", - "\u0010": "//www.sbb.ch/de/kaufen/pages/fahrplan/fahrplan.xhtml?nach=\u0002&suche=false\u000139" - }, - "g": "http://bibleforums.org/search.php?s=\u0002 \u00010", - "i": { - "\u0010": "//www.google.com/searchbyimage?image_url=\u0002\u000142", - "t": "//spendabit.co/go?q=\u0002\u00010" - }, - "m": { - "\u0010": "//duckduckgo.com/?q=site%3Asciencebasedmedicine.org+\u0002\u00010", - "ania": "http://www.sbmania.net/advsearch.php?l=80&q=\u0002\u00010" - }, - "n": "http://opac.sbn.it/opacsbn/opac/iccu/free.jsp=\u0002\u00010", - "o": { - "\u0010": "//slackbuilds.org/result/?search=\u0002\u00010", - "pkg": "//slackbuilds.org/result/?search=\u0002\u00010" - }, - "r": { - "m": "http://www.slounik.org/search?dict=&search=\u0002\u00010", - "\u0010": "//www.reddit.com/r/\u0002\u00011875" - }, - "s": "//www.sbs.com.au/ondemand/search/\u0002\u00010", - "\u0010": "http://www.swagbucks.com/?t=w&p=1&b=0&f=0&sef=1&q=\u0002\u00013", - "t": "//socialblade.com/twitter/user/\u0002\u00014", - "w": { - "\u0010": "//www.stopbadware.org/clearinghouse/search/?url=\u0002\u00013", - "iki": "http://spongebob.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "yt": "http://socialblade.com/youtube/user/\u0002\u0001405" - }, - "c": { - "a": { - "n": { - "\u0010": "http://www.scan.co.uk/search.aspx?q=\u0002\u000129", - "ia": "//www.scania.com/global/en/home/misc/searchresult.html?q=\u0002\u00010" - }, - "\u0010": "//www.reddit.com/r/skincareaddiction/search?q=\u0002&restrict_sr=on\u00010", - "la": { - "i": "//index.scala-lang.org/search?q=\u0002\u000114", - "\u0010": "http://www.scala-lang.org/api/current/?search=\u0002\u00010", - "api": "http://www.scala-lang.org/api/current/index.html?search=\u0002\u00010", - "dex": "//index.scala-lang.org/search?q=\u0002 \u00010", - "doc": "http://www.scala-lang.org/api/current/?search=\u0002\u00010", - "lang": "http://www.scala-lang.org/api/current/?search=\u0002\u00010" - }, - "recrow": "//www.scarecrow.com/45/search.html?keywords=\u0002\u00010", - "ruffi": "//duckduckgo.com/?q=site%3Ascaruffi.com+\u0002\u00013" - }, - "b": { - "\u0010": "http://www.sverigeisiffror.scb.se/hitta-statistik/sok/?query=\u0002\u00010", - "en": "http://www.sverigeisiffror.scb.se/hitta-statistik/sok/?query=\u0002\u00010" - }, - "d": { - "\u0010": "//www.sciencedaily.com/search/?keyword=\u0002\u00010", - "po": "http://scd.summon.serialssolutions.com/search?s.q=\u0002\u00010", - "irect": "//www.sciencedirect.com/search?qs=\u0002\u00010" - }, - "f": "http://syncfile.co/\u0002\u00010", - "g": "http://sales.starcitygames.com/search.php?substring=\u0002\u00015", - "h": { - "p": "http://scholarpedia.org/w/index.php?search=\u0002\u00010", - "\u0010": "//startpage.com/do/search?cmd=process_search&query=\u0002&language=deutsch&with_region=countryCH\u000110", - "uh": "http://www.schuh.co.uk/results.aspx#st=\u0002\u00010", - "eidung": "//www.scheidung.de/suche.html?tx_kesearch_pi1%5Bsword%5D=\u0002\u00010", - "ema": "//schema.org/docs/search_results.html?q=\u0002\u00010", - "nittberichte": "http://www.schnittberichte.com/svds.php?Page=Suche&String=\u0002\u00010", - "olar": "http://scholar.google.com/scholar?q=\u0002&btnG=Search&as_sdt=800000000001&as_sdtp=on\u00017231", - "olieren": "http://www.scholieren.com/zoek?q=\u0002\u00010", - "ottenland": "http://www.schottenland.de/suche/?searchstring=\u0002\u00010" - }, - "k": "//api.sck.pm/shorten?\u0002\u00010", - "m": { - "p": "//www.scmp.com/content/search/\u0002\u00014", - "\u0010": "http://www.smashcustommusic.com/index.php?song=\u0002\u00010" - }, - "n": "http://search.sap.com/ui/scn#query=\u0002\u00010", - "o": { - "\u0010": "//www.slant.co/search?query=\u0002\u00013", - "de": "//searchcode.com/?q=\u0002\u00010", - "nj": "http://www.spanishdict.com/conjugate/\u0002\u00010", - "op": "http://www.scoop.it/search?q=\u0002\u00018", - "re": "http://imslp.org/index.php?search=\u0002\u000110", - "ts": "http://www.dsl.ac.uk/results/\u0002\u00010", - "ut": { - "\u0010": "http://www.scout.com/news?query=\u0002\u00010", - "s": "//scouts.org.uk/cse-search/?query=\u0002\u00010" - }, - "pe.dk": "http://www.scope.dk/sogning?sog=\u0002 \u00010", - "tby": "//www.scotbycycles.co.uk/facetresults.aspx?Term=\u0002\u00010", - "ttsradiosite": "http://www.scottsradiosite.co.uk/?s=\u0002\u00010", - "ttwyden": "//scottwyden.com/?s=\u0002\u00010" - }, - "p": { - "\u0010": "http://www.scp-wiki.net/search:site/a/p/q/\u0002 \u000192", - "ru": "http://scpfoundation.net/search:site/q/\u0002\u00010", - "-es": "http://lafundacionscp.wikidot.com/search:site/a/pf/q/\u0002\u00010" - }, - "q": "//www.senscritique.com/recherche?query=\u0002\u000136", - "\u0010": "//soundcloud.com/search?q=\u0002\u00014", - "z": "http://slovnik-cizich-slov.abz.cz/web.php/hledat?typ_hledani=prefix&cizi_slovo=\u0002\u00010", - "cl": "//sccl.bibliocommons.com/search/?t=smart&searchOpt=catalogue&q= \u0002&search_category=keyword\u00010", - "id": { - "\u0010": "//www.sciencedirect.com/search?qs=\u0002\u00010", - "ir": { - "\u0010": "//www.sciencedirect.com/search?qs=\u0002\u00010", - "ect": "//www.sciencedirect.com/search?qs=\u0002\u00010" - }, - "ict": "http://thesciencedictionary.org/search2/?q=\u0002\u00010" - }, - "in": "//scinapse.io/search?query=\u0002\u00014", - "ri": { - "\u0010": "//www.senscritique.com/recherche?query=\u0002\u000136", - "bd": "http://www.scribd.com/search?query=\u0002\u000154", - "tique": "http://www.senscritique.com/recherche/?gs_query=\u0002&submit2=\u00013" - }, - "ry": { - "\u0010": "//scryfall.com/search?q=\u0002\u00011393", - "fall": "//scryfall.com/search?q=\u0002\u00011393" - }, - "code": "http://sccode.org/search?q=\u0002\u00010", - "eptr": "//sceptr.net/?s=\u0002\u00010", - "ielo": "http://search.scielo.org/?q=\u0002&where=ORG\u00010", - "ienceblog": { - "\u0010": "//scienceblog.com/?s=\u0002\u00010", - "s": "http://www.google.com/cse?cx=017254414699180528062%3Auyrcvn__yd0&q=\u0002\u00010" - }, - "iencedaily": "http://www.sciencedaily.com/search/?keyword=\u0002 \u00013", - "iencedirect": "//www.sciencedirect.com/search?qs=\u0002\u00010", - "ienze": "http://www.lescienze.it/?q=\u0002\u00010", - "ifi": "http://www.worldswithoutend.com/searchwwe.asp?st=\u0002 \u00010", - "ilab": "//help.scilab.org/docs/6.0.0/en_US/search/\u0002\u00010", - "ilit": "//www.scilit.net/articles/10/0?Search=\u0002\u00010", - "imago": "http://scimagojr.com/journalsearch.php?q=\u0002\u00015", - "ipy": "http://docs.scipy.org/doc/scipy/reference/search.html?q=\u0002&check_keywords=yes&area=default\u00019", - "iplus": "//www.sciplus.com/s/?q=\u0002\u00010", - "lang": "http://doc.sccode.org/Search.html#\u0002\u00010", - "loud": "//soundcloud.com/search?q=\u0002\u00014", - "rapy": "http://doc.scrapy.org/en/latest/search.html?q=\u0002\u00010", - "rabble": { - "\u0010": "http://www.scrabblewordsolver.com/word-checker/\u0002\u00010", - "lookup": "http://www.scrabblelookup.com/word/portion/search/\u0002\u00010" - }, - "ratch": { - "\u0010": "//scratch.mit.edu/search/projects?q=\u0002\u00013", - "forums": "//scratchforums.asun.co/search?q=\u0002\u00010", - "wiki": "http://wiki.scratch.mit.edu/w/index.php?search=\u0002&fulltext=Search&title=Special%3ASearch\u00010" - }, - "rewfix": "//www.screwfix.com/search?search=\u0002\u00013", - "rooge": "//www.scrooge.co.uk/search?keyphrase=\u0002\u00010", - "uba": "//www.scuba.com/resources/search1.aspx?Action=Search&Search=\u0002\u00010" - }, - "d": { - "b": "//syntaxdb.com/reference/search?utf8=✓&search=\u0002\u00010", - "e": "//startpage.com/do/search?cmd=process_search&query=\u0002&language=deutsch\u000116", - "l": { - "2": "//wiki.libsdl.org/FrontPage?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00010", - "\u0010": "//wiki.libsdl.org/CategoryAPI?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00015" - }, - "\u0010": "//slickdeals.net/newsearch.php?q=\u0002&searcharea=deals&searchin=first\u0001492", - "v": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u000178", - "cl": "http://encore.sdcl.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng&suite=def\u00010", - "nf": "//forums.studentdoctor.net/search/86811885/?q=\u0002\u00010", - "ict": "http://www.spanishdict.com/translate/\u0002\u0001988", - "irect": "//www.sciencedirect.com/search?qs=\u0002\u00010" - }, - "e": { - "a": { - "\u0010": "//searchcode.com/?q=\u0002\u00010", - "rs": { - "\u0010": "http://www.sears.com/shc/s/search_10153_12605?keyword=\u0002\u00010", - "ca": "http://www.sears.ca/en/search?q=\u0002&lang=default\u00010", - "outlet": "http://www.searsoutlet.com/d/products.jsp?md=srh_md&stxt=\u0002\u00010" - }, - "rx": { - "\u0010": "//searx.me/?q=\u0002\u000137", - ".me": "http://searx.me/?q=\u0002&pageno=1&category_general\u000114" - }, - "mless": "//www.seamless.com/search?queryText=\u0002\u00010", - "monkey": "//addons.mozilla.org/en-US/seamonkey/search/?q=\u0002&cat=all&lver=any&pid=1&sort=&pp=20&lup=&advanced=\u00010", - "rch": { - "r": "//duckduckgo.com/?q=site:reddit.com+\u0002\u0001146", - "\u0010": "http://www.search.com/search?q=\u0002\u000116", - "ch": "http://www.search.ch/?q=\u0002&search=Suchen\u00010", - "yc": "http://hn.algolia.com/#!/story/forever/0/\u0002\u00015", - "bug": "http://www.searchbug.com/tools/reverse-phone-lookup.aspx?TYPE=phonerev&TAG=tools&FULLPHONE=\u0002\u00010", - "code": "http://searchco.de/?q=\u0002\u00010", - "cpan": "http://search.cpan.org/search?query=\u0002&mode=all\u00010", - "enginewatch": "//searchenginewatch.com/?s=\u0002\u00010", - "tempest": "http://www.searchtempest.com/search?location=12345&search_string=\u0002&cityselect=zip\u00010", - "works": "http://searchworks.stanford.edu/?q=\u0002&search_field=search\u00010" - }, - "talk": "http://www.seatalk.info/cgi-bin/nautical-marine-sailing-dictionary/db.cgi?db=db&view_records=1&uid=default&Term=\u0002\u00010", - "tgeek": "http://seatgeek.com/search/?search=\u0002\u00010" - }, - "b": "http://sebsauvage.net/rhaa/index.php?q=\u0002\u000123", - "c": { - "h": { - "\u0010": "//www.search.ch/?q=\u0002\u00010", - "at": "//chat.stackexchange.com/rooms/\u0002\u00010", - "enovclinic": "http://www.sechenovclinic.ru/search/index.php?q=\u0002\u00010" - }, - "\u0010": "//secsearch.sec.gov/search?utf8=%3F&affiliate=secsearch&query=\u0002\u00010", - "edgar": "//www.sec.gov/cgi-bin/browse-edgar?CIK=\u0002&owner=exclude&action=getcompany\u00019", - "jobs": "//infosec-jobs.com/?search_keywords=\u0002\u00010", - "lists": "http://insecure.org/search.html?cx=partner-pub-0078565546631069%3Abx60rb-fytx&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=SecSearch\u00010", - "ondbike": "//www.secondbike.co.uk/search?q=\u0002\u00010", - "uredrop": "//securedrop.readthedocs.org/en/latest/search.html?q=\u0002\u00010", - "urityheaders": "//securityheaders.io/?q=\u0002&followRedirects=on\u00010", - "uritynl": "//www.security.nl/zoeken?search=\u0002 \u00010", - "urityshelf": "//securityshelf.com/index.php?s=\u0002\u00010" - }, - "g": { - "a": "//segaretro.org/index.php?search=\u0002\u00013", - "\u0010": "//library.seg.org/action/doSearch?AllField=\u0002&publication=\u00010", - "dl": "//library.seg.org/action/doSearch?AllField=\u0002\u00010" - }, - "n": { - "c": "//www.searchencrypt.com/search?eq=\u0002\u000112", - "\u0010": "//store.sonyentertainmentnetwork.com/#!/en-us/search/q=\u0002\u00010", - "ta": "http://sentireascoltare.com/?s=\u0002\u00010", - "ate": "http://senat.me/en/?s=\u0002\u00010", - "derbase": "http://www.senderbase.org/senderbase_queries/detailhost?search_string=\u0002\u00010", - "dict": "http://sentencedict.com/\u0002.html\u00010", - "scritique": "//www.senscritique.com/recherche?query=\u0002\u000136", - "sei": { - "\u0010": "http://senseis.xmp.net/?search=\u0002&searchtype=title\u00015", - "s": { - "\u0010": "http://senseis.xmp.net/?searchstring=\u0002&fullsearch.x=0&fullsearch.y=0&searchtype=either \u00010", - "library": "http://senseis.xmp.net/?searchstring=\u0002&fullsearch.x=0&fullsearch.y=0&searchtype=either\u00010" - } - }, - "tence": "http://sentence.yourdictionary.com/\u0002\u00010", - "tireascoltare": "http://sentireascoltare.com/?s=\u0002\u00010", - "try": "//docs.sentry.io/search/?q=\u0002\u00010" - }, - "p": { - "\u0010": "http://plato.stanford.edu/search/searcher.py?query=\u0002\u000150", - "hora": { - "\u0010": "//www.sephora.com/search?keyword=\u0002\u00010", - "au": "//www.sephora.com.au/search?q=\u0002\u00010" - } - }, - "q": "http://oeis.org/search?q=\u0002\u00010", - "s": { - "\u0010": "//www.suomienglantisanakirja.fi/\u0002\u00010", - "li": { - "\u0010": "http://www.seslisozluk.net/?ssQBy=0&word=\u0002\u00016", - "sozluk": "http://www.seslisozluk.com/?word=\u0002\u00010" - }, - "sion": "//thesession.org/search?where=&q=\u0002\u000114" - }, - "\u0010": "http://stackexchange.com/search?q=\u0002\u0001173", - "80": "//www.se80.co.uk/action/search_results.htm?q=\u0002\u00010", - "da": "//www.snapeda.com/search/?q=\u0002&search-type=parts\u00010", - "do": "//sedo.com/search/?keyword=\u0002\u00010", - "ek": { - "\u0010": "http://www.seek.com.au/JobSearch?SearchFrom=quick&Keywords=\u0002\u00013", - "ingalpha": "http://seekingalpha.com/search/?q=\u0002\u00019" - }, - "en": { - "\u0010": "http://seenthis.net/spip.php?page=recherche&recherche=\u0002\u00016", - "glish": "//english.stackexchange.com/search?q=\u0002\u00010" - }, - "lu": "http://search.selu.edu/search?q=\u0002\u00010", - "ur": "http://www.seur.com/seguimiento-online.do?segOnlineIdentificador=\u0002\u00019", - ".w": "//simple.wikipedia.org/wiki/\u0002\u00010", - "zs": "http://slovnik.seznam.cz/en-cz/word/?q=\u0002\u000114", - "efelder": "//www.seefelder.net/suche?id=&searchTerm=\u0002\u00010", - "faria": "http://www.sefaria.org/search?q=\u0002\u00019", - "land": "http://search.searchengineland.com/search?w=\u0002\u00010", - "lect": { - "\u0010": "http://selectfashion.pk?term=\u0002\u00010", - "ome": "//selectome.unil.ch/cgi-bin/getResult.cgi?query=\u0002&res_type=auto\u00010" - }, - "lfhtml": { - "\u0010": "http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=\u0002\u00010", - "wiki": "http://wiki.selfhtml.org/wiki/Spezial:Suche?search=\u0002\u00010" - }, - "math": "//math.stackexchange.com/search?q=\u0002\u00010", - "mantic": "//www.semanticscholar.org/search?q=\u0002&sort=relevance&ae=false\u000116", - "meta": "//meta.stackexchange.com/search?q=\u0002\u00010", - "mrush": "//www.semrush.com/info/\u0002+(full+search)\u000110", - "rebii": "http://www.serebii.net/search.shtml?cx=018410473690156091934%3A6gahkiyodbi&cof=FORID%3A11&q=\u0002&sa=Search&siteurl=www.serebii.net%2Findex2.shtml\u0001137", - "renes": "//serenesforest.net/?s=\u0002\u00010", - "rialvilla.com": "http://serialvilla.com/search? keyword=\u0002\u00010", - "riebox": "http://www.seriebox.com/search.php?txt=\u0002 &submit=OK\u00010", - "riouseats": "http://www.seriouseats.com/search?term=\u0002&site=all\u00019", - "rjunk": "//duckduckgo.com/?q=site%3Awww.serienjunkies.de+\u0002\u00010", - "rver24": "//www.servershop24.de/?ActionCall=WebActionArticleSearch&BranchId=0&multishop_id=0&customer_class=9&lang=de&Params[SearchParam]=\u0002\u00010", - "rverfault": "http://serverfault.com/search?q=\u0002\u00010", - "rvice": { - "\u0010": "//www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=\u0002\u00016", - "public": "//www.service-public.fr/particuliers/recherche?keyword=\u0002\u00014" - }, - "tlist": "http://www.setlist.fm/search?query=\u0002\u000170", - "znam": "http://search.seznam.cz/?q=\u0002\u00019" - }, - "f": { - "2": "http://symfony.com/search?q=\u0002\u00010", - "a": "//scryfall.com/search?q=\u0002\u00011393", - "e": "http://www.sparkfun.com/search/results?term=\u0002&what=products\u00010", - "i": "//scifiinterfaces.com/?s=\u0002&submit=Search\u00010", - "l": "//scryfall.com/search?q=\u0002\u00011393", - "\u0010": "http://serverfault.com/search?q=\u0002\u00010", - "s": { - "e": "http://salesforce.stackexchange.com/search?q=\u0002\u00010", - "\u0010": "http://www.stopforumspam.com/search?q=\u0002\u00010" - }, - "x": { - "\u0010": "http://thejadednetwork.com/sfx/search/?keyword=\u0002&submitSearch=\u00010", - "performance": "//sfxperformance.com/search/part-search.asp?search=\u0002\u00010", - "search": "http://soundeffectssearch.com/find-a-sound-library/?library=\u0002\u00010" - }, - "pl": "//sfpl.bibliocommons.com/v2/search?searchType=smart&query=\u0002\u00010", - "bok": "//www.sfbok.se/search?keys=\u0002\u00017", - "gate": "http://www.sfgate.com/search/?action=search&query=\u0002\u00015", - "help": "//help.salesforce.com/search#q=\u0002\u00010", - "moma": "//www.sfmoma.org/search/?q=\u0002\u00010", - "orce": { - "l": "//na85.lightning.force.com/one/one.app#ey\u0002Jjb21wb25lbnREZWYiOiJmb3JjZVNlYXJjaDpzZWFyY2hQYWdlIiwiYXR0cmlidXRlcyI6eyJ0ZXJtIjoiQ3VydCIsInNjb3BlTWFwIjp7InR5cGUiOiJUT1BfUkVTVUxUUyJ9LCJjb250ZXh0Ijp7ImRpc2FibGVTcGVsbENvcnJlY3Rpb24iOmZhbHNlLCJkaXNhYmxlSW50ZW50UXVlcnkiOmZhbHNlLCJwZXJtc0FuZFByZWZzIjp7IlNlYXJjaFVpLnNlYXJjaFVJUGlsb3RGZWF0dXJlRW5hYmxlZCI6ZmFsc2UsIlNlYXJjaEV4cGVyaWVuY2UuTGVmdE5hdkVuaGFuY2VtZW50RW5hYmxlZCI6dHJ1ZSwiU2VhcmNoLmNyb3NzT2JqZWN0c0F1dG9TdWdnZXN0RW5hYmxlZCI6dHJ1ZSwiU2VhcmNoUmVzdWx0c0xWTS5sdm1FbmFibGVkRm9yU2VhcmNoUmVzdWx0c09uIjp0cnVlLCJNeVNlYXJjaC51c2VyQ2FuSGF2ZU15U2VhcmNoQmVzdFJlc3VsdCI6ZmFsc2UsIlNlYXJjaFJlc3VsdHNMVk0ubHZtRW5hYmxlZEZvclRvcFJlc3VsdHMiOmZhbHNlLCJPcmdQZXJtaXNzaW9ucy5VbmlvbkFwcE5hdlNtYXJ0U2NvcGUiOnRydWUsIlNlYXJjaFVpLmZlZWRiYWNrQ29tcG9uZW50RW5hYmxlZCI6ZmFsc2UsIlNlYXJjaEV4cGVyaWVuY2UuVG9wUmVzdWx0c1NpbmdsZVNPU0xFbmFibGVkIjpmYWxzZSwiT3JnUHJlZmVyZW5jZXMuQ2hhdHRlckVuYWJsZWQiOnRydWUsIlNlYXJjaC5tYXNrU2VhcmNoSW5mb0luTG9ncyI6ZmFsc2UsIlNlYXJjaFVpLm9yZ0hhc0FjY2Vzc1RvU2VhcmNoVGVybUhpc3RvcnkiOmZhbHNlLCJTZWFyY2hVaS5zZWFyY2hVSUludGVyYWN0aW9uTG9nZ2luZ0VuYWJsZWQiOmZhbHNlLCJNeVNlYXJjaC51c2VyQ2FuSGF2ZU15U2VhcmNoIjpmYWxzZX0sInNlYXJjaERpYWxvZ1Nlc3Npb25JZCI6IjM0NmY1YzI1LTIwNGEtYjMyMS1kYzM3LTM3Yzc5ZGQyNjA3ZCIsInNlYXJjaFNvdXJjZSI6IklOUFVUX0RFU0tUT1AifSwiZ3JvdXBJZCI6IkRFRkFVTFQifSwic3RhdGUiOnt9fQ%3D%3D\u00010", - "\u0010": "//login.salesforce.com/_ui/search/ui/UnifiedSearchResults?str=\u0002\u00010" - }, - "ulib": "http://search.lib.sfu.ca/?q=\u0002\u00010" - }, - "g": { - "d": "//www.yeastgenome.org/search?q=\u0002&is_quick=true\u00010", - "\u0010": "//sourcegraph.com/search?q=\u0002\u000128" - }, - "h": { - "m": { - "f": "//forum.shmakerspace.org/search?q=\u0002\u00010", - "\u0010": "//shikimori.org/animes?search=\u0002\u00010", - "oop": "http://www.shmoop.com/search?q=\u0002 \u00010" - }, - "o": { - "p": { - "\u0010": "http://shopping.yahoo.com/search?p=\u0002\u00015", - "ca": { - "\u0010": "//www.shop.ca/webapp/wcs/stores/servlet/SearchDisplay?storeId=10201&catalogId=10301&langId=-1&pageSize=48&beginIndex=0&searchSource=Q&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&pageView=imageOnly&searchTermScope=-1&searchTerm=\u0002\u00010", - "de": "//www.shopcade.com/search?query=\u0002\u00010" - }, - "ee": { - "\u0010": "//shopee.tw/search/?keyword=\u0002\u000112", - "ph": "//shopee.ph/search?keyword=\u0002\u0001119" - }, - "to": "//www.shopto.net/search/newSearchPage?Filter_department=&newsearch=\u0002\u00010", - "athome": "//www.shopathome.com/search?query=\u0002\u00010", - "clues": "http://shopclues.com/?q=\u0002: \u00010", - "disciple": "//www.shopdisciple.com/search?q=\u0002\u00010", - "henco": "//shophenco.com/?q=\u0002\u00010", - "ify": { - "\u0010": "//help.shopify.com/en/search?utf8=%E2%9C%93&q=\u0002\u00010", - "forum": "//ecommerce.shopify.com/ecommerce/\u0002\u00010" - }, - "omo": "http://www.shopomo.com/search?q=\u0002 \u00010", - "ping": "//www.google.com/products?q=\u0002&sa=N&tab=pf\u0001126", - "yourway": "http://www.shopyourway.com/search/products?q=\u0002\u00010", - "zilla": "http://www.shopzilla.com/\u0002/search\u00010" - }, - "\u0010": "http://symbolhound.com/?q=\u0002\u00010", - "ut": { - "\u0010": "//www.shoutmeloud.com/?s=\u0002\u00010", - "cast": "//directory.shoutcast.com/Search?query=\u0002\u00013" - }, - "dan": "//www.shodan.io/search?query=\u0002\u00015", - "opde": "//www.shoop.de/suche?q=\u0002\u00010", - "rten": "http://cortas.elpais.com/encode.pl?u=http://\u0002\u00010", - "wdown": "http://dex.pokemonshowdown.com/?q=\u0002\u000115" - }, - "\u0010": "//www.shodan.io/search?query=\u0002\u00015", - "s": { - "h": "//stor.1conan.com/tsssaver/shsh/\u0002\u00010", - "\u0010": "//secondhandsongs.com/search?search_text=\u0002\u00010" - }, - "z": "http://www.shazam.com/de/search/\u0002\u00010", - "aw": "//www.shaw.ca/store/search/search.jsp?q=\u0002\u00010", - "bd": "http://www.shabdkosh.com/translate/\u0002/\u00010", - "bf": "http://shbf.se/bryggaren/search.php?keywords=\u0002&sid=7fb2bed909445b5497565d97ea00eb62\u00010", - "tm": "http://www.shoptimate.com/search?q=\u0002\u00010", - "ub": "//www.scribblehub.com/?s=\u0002\u00010", - "a256": "//cryptography.cc/convert?text=\u0002&algorithm=sha256\u00014", - "aarli": "//river.libox.fr/search.php?q=\u0002\u00010", - "abbat": "//www.hebcal.com/shabbat/?cfg=json&m=50&b=18&zip=\u0002&a=on\u00010", - "adertoy": "//www.shadertoy.com/results?query=\u0002 \u00014", - "ards": "//crystalshards.org/?filter=\u0002\u00010", - "arese": "//sharepoint.stackexchange.com/search?q=\u0002\u00010", - "aresnc": "//share.servicenow.com/app.do#/search-result?search_query=\u0002\u00010", - "areware": "http://download.cnet.com/1770-20_4-0.html?searchtype=downloads&query=\u0002&tg=dl-20&search.x=0&search.y=0&search=+Go%252521\u000115", - "ayari": "//www.shayarimerepyarki.com/search?q=\u0002\u00010", - "eetmusicdirect": "http://www.sheetmusicdirect.com/Search.aspx?query=\u0002\u00010", - "eetmusicplus": "http://www.sheetmusicplus.com/search?q=\u0002 \u00010", - "erdog": "http://www.sherdog.com/stats/fightfinder?SearchTxt=\u0002\u00010", - "erwin": "//www.sherwin-williams.com/SearchDisplay?categoryId=&storeId=10151&catalogId=11051&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=list&beginIndex=0&searchType=1000&pageSize=6&globalSearch=true&searchTerm=\u0002#facet:&productBeginIndex:0&contentBeginIndex:0&orderBy:&orderByContent:&pageView:list&minPrice:&maxPrice:&pageSize:&\u00010", - "iatsu": "http://www.shiatsu-stijlen.nl/zoeken.php?cx=partner-pub-1276597034470244%3Aslojxr-8otw&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002&sa=Zoeken\u00010", - "iki": { - "\u0010": "//shikimori.org/animes?search=\u0002\u00010", - "mori": "//shikimori.org/animes?search=\u0002\u00010" - }, - "inden": "http://shinden.pl/search?q=\u0002\u00013", - "ironet": "http://shironet.mako.co.il/search?q=\u0002\u00010", - "irtoid": "//shirtoid.com/search/\u0002\u00010", - "itcore": "http://shitcore.org/search.php?keywords=\u0002\u00010", - "kwiki": "http://help.strongholdkingdoms.com/index.php?search=\u0002&title=Special%3ASearch\u00010", - "pock": "//en.shpock.com/q/\u0002/\u00010", - "roomery": "//www.shroomery.org/search.php?terms=\u0002\u00010", - "ura": "http://shura.shu.ac.uk/cgi/facet/simple2?q=\u0002\u00010", - "utterstock": "http://www.shutterstock.com/cat.mhtml?searchterm=\u0002\u000112" - }, - "i": { - "n": { - "\u0010": "//www.sinonimos.com.br/\u0002\u00017", - "ga": "//singa.com/search/results/\u0002\u00010", - "donews": "//search.sindonews.com/search?type=artikel&q=\u0002\u00010", - "emalar": "http://www.sinemalar.com/ara/?type=all&page=1&q=\u0002\u00010", - "gcat": "//singcat.net/results/?q=\u0002\u00010", - "onimi": { - "\u0010": "http://luirig.altervista.org/sinonimi/hypertext/ricerca.php?title=\u0002\u00017", - "t": "http://sinonimi.it/\u0002\u00016" - }, - "onimo": { - "s": "//www.sinonimos.com.br/\u0002\u00017", - "\u0010": "http://www.wordreference.com/sinonimos/\u0002\u00010" - }, - "opak": "http://sinopak.net/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Search\u00010" - }, - "p": "//sipreadrepeat.com/?s=\u0002\u00010", - "\u0010": "//www.si.com/search?q=\u0002\u00017", - "t": { - "e": { - "\u0010": "//duckduckgo.com/?q=site%3A\u0002\u0001143", - "alytics": "http://www.sitealytics.com/\u0002/\u00010", - "point": "//www.sitepoint.com/?s=\u0002\u00010", - "slike": "http://www.siteslike.com/similar/\u0002 \u00010" - }, - "\u0010": "http://schoolido.lu/cards/?search=\u0002&name=&rarity=&attribute=&is_promo=&is_special=&is_event=&skill=&translated_collection=&collection=&main_unit=&sub_unit=&idol_school=&idol_year=&release_after=&release_before=&view=cards&albumbuilder_account=15585&account=&ordering=id&reverse_order=on\u00010", - "ag": "http://www.sitag.ch/suchen/?tx_indexedsearch%5Bsword%5D=\u0002\u00010", - "usali": "//situsali.com/?s=\u0002&submit=Search\u00010" - }, - "w": "http://simpsonswiki.com/w/index.php?title=Special%3ASearch&search=\u0002 \u00010", - "ce": "http://www.staticice.com.au/cgi-bin/search.cgi?q=\u0002\u00016", - "ec": "//sinonims.iec.cat/sinonims_cerca_sin.asp?pclau2=\u0002&button=Cerca+arreu\u00010", - "ri": "http://www.shouldiremoveit.com/programs.aspx?q=\u0002\u00013", - "abr": "//br.shouldianswer.net/numero-de-telefone/?q=\u0002\u00010", - "emenssupport": "//support.industry.siemens.com/cs/search?search=\u0002\u000110", - "gfox": "//partners.sigfox.com/search/products?q=\u0002\u00010", - "gma": "http://www.sigmaaldrich.com/catalog/search?interface=All&term=\u0002\u000111", - "gningsavvy": "//www.signingsavvy.com/search/\u0002\u00010", - "kuli": "http://doc.sikuli.org/search.html?q=\u0002\u00010", - "lver": { - "\u0010": "//www.providentmetals.com/catalogsearch/result/?q=\u0002\u00010", - "games": "//www.silvergames.com/en/s?q=\u0002\u00010" - }, - "mages": "//startpage.com/do/metasearch.pl?cat=pics&query=\u0002\u00010", - "mania": "http://simania.co.il/searchBooks.php?searchType=tabAll&query=\u0002\u00010", - "mbad": "http://simbad.u-strasbg.fr/simbad/sim-basic?Ident=\u0002\u00014", - "milar": { - "\u0010": "http://www.similarsites.com/site/\u0002\u00019", - "web": "http://www.similarweb.com/website/\u0002\u0001112" - }, - "mpl": { - "\u0010": "//www.simplyrecipes.com/?s=\u0002\u00010", - "icite": "//www.simplicite.io/resources/search?q=\u0002\u00010", - "yhired": "http://www.simplyhired.com/a/jobs/list/q-\u0002\u00010", - "yscuba": "//www.simplyscuba.com/pages/search-results-page?q=\u0002\u00010" - }, - "mpsons": "http://simpsons.wikia.com/wiki/Special:Search?search= \u0002\u00010", - "rogohan": "//www.sirogohan.com/recipe/index/keyword: \u0002\u00010", - "schmi": "//www.silberschmiede-online.de/advanced_search_result.php?keywords=\u0002\u00010", - "sku": "//la-lojban.github.io/sutysisku/en/#sisku/\u0002\u00016", - "xdegrees": "//sixdegreesofkanyewest.com/artist?q=\u0002\u00013" - }, - "j": { - "p": "http://sjp.pwn.pl/szukaj/\u0002.html\u0001115", - "r": "http://www.scimagojr.com/journalsearch.php?q=\u0002\u00010", - "\u0010": "//www.sitejabber.com/search?q=\u0002\u00010", - "mr": "//duckduckgo.com/?q=\u0002+site:socjobrumors.com\u00010", - "cpl": "http://stjos.sjcpl.lib.in.us/search/?searchtype=X&SORT=D&searcharg=\u0002 \u00015", - "iauto": "//sjiauto.wordpress.com/?s=\u0002\u00010" - }, - "k": { - "1": "//sk1er.club/stats/\u0002\u00010", - "8": "//sk8park.de/?s=\u0002\u00010", - "b": "//kb.workfusion.com/dosearchsite.action?cql=siteSearch+~+%22\u0002%22&queryString=\u0002\u00010", - "d": "http://slovniky.korpus.sk/?w=\u0002\u00010", - "k": "http://shabdkosh.com/kn/translate/\u0002/\u00010", - "\u0010": "http://www.songkick.com/search?query=\u0002\u00018", - "s": "//sks-keyservers.net/pks/lookup?op=vindex&search=\u0002\u00010", - "u": "//docs.skunity.com/syntax/search/\u0002\u00010", - "y": { - "\u0010": "http://www.skysports.com/search?q=\u0002\u00017", - "pecommunity": "http://community.skype.com/t5/forums/searchpage/tab/message?filter=labels%2Clocation&location=category%3AEnglish&q=\u0002 \u00010", - "rock": "http://www.skyrock.com/search/people/?q=\u0002\u00010", - "scan": "http://duckduckgo.com/?q=\u0002+site:http://www.skyscanner.net\u00017", - "store": "//www.skystore.com/search?q=\u0002\u00010", - "vector": "//skyvector.com/search/site/\u0002\u00010" - }, - "24": "//www.sportkopf24.de/?ActionCall=WebActionArticleSearch&Params%5BSearchParam%5D=\u0002\u00010", - "tr": "//www.sketchappsources.com/search_\u0002.html\u00010", - "98q": "http://wiki.sk89q.com/w/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010", - "alman": "//www.skal-man.se/sok/\u0002\u00010", - "apiec": "http://www.skapiec.pl/szukaj/w_calym_serwisie/\u0002\u00010", - "elbiu": "http://skelbiu.lt/skelbimai/?keywords=\u0002\u00010", - "elbimai": "//www.skelbimai.lt/paieska?q=\u0002\u00010", - "enfi": "http://www.sanakirja.org/search.php?l=3&l2=17&q=\u0002\u000114", - "epdic": "//duckduckgo.com/?q=\u0002+site:skepdic.com\u00010", - "epticsbible": "//duckduckgo.com/?q=site:skepticsannotatedbible.com \u0002\u00010", - "epticskoran": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com%2Fquran%2F+\u0002&ia=web\u00010", - "epticsquran": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com%2Fquran%2F+\u0002&t=ffsb&ia=web\u00010", - "eptoid": "//skeptoid.com/search.php?q=\u0002\u00010", - "etchfab": "//sketchfab.com/models?q=\u0002&sort_by=-likeCount\u00016", - "etchport": "//www.sketchport.com/search?q=\u0002\u00010", - "ill": { - "\u0010": "//www.skillshare.com/search?query=\u0002\u00010", - "share": "//www.skillshare.com/search?query=\u0002\u00010" - }, - "image": "http://scikit-image.org/docs/dev/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "inny": "//www.theskinnyconfidential.com/?s=\u0002\u00017", - "indeep": "http://www.ewg.org/skindeep/search.php?query=\u0002\u00010", - "inflint": "http://skinflint.co.uk/?fs=\u0002\u00010", - "ipthedrive": "http://www.skipthedrive.com/jobs/?search=\u0002 \u00010", - "learn": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Fscikit-learn.org%2Fstable%2Fmodules%2Fgenerated%2F+\u0002&ia=web\u00013", - "routz": "//www.skroutz.gr/search?keyphrase=\u0002\u0001185" - }, - "l": { - "k": "//www.searchlock.com/search?q=\u0002\u00013", - "o": { - "\u0010": "//www.searchlotto.co.uk/yhs_search.php?q=\u0002\u00010", - "v": { - "\u0010": "http://slovari.yandex.ru/search.xml?text=\u0002\u00010", - "ak": "http://slovniky.korpus.sk/?w=\u0002\u00010", - "nenya": "http://slovnenya.com/dictionary/\u0002\u00010", - "nik": { - "\u0010": "//slovnik.seznam.cz/en/?q=\u0002\u000116", - "y": "http://slovniky.korpus.sk/?w=\u0002\u00010" - } - }, - "ck": { - "i": "//www.searchlock.com/search?tbm=isch&q=\u0002\u00010", - "\u0010": "//www.searchlock.com/search?q=\u0002\u00013" - }, - "te": { - "\u0010": "http://slote.me/?q=\u0002\u00010", - "ch": "//slo-tech.com/forum/isci/?q=\u0002\u00010" - } - }, - "q": { - "a": "//www.sololearn.com/Discuss?ordering=Trending&query=\u0002\u00010", - "\u0010": "//www.sololearn.com/Discuss?ordering=Trending&query=\u0002\u00010" - }, - "\u0010": "http://www.setlist.fm/search?query=\u0002\u000170", - "aw": "http://www.slaw.ca/?s=\u0002\u00010", - "cl": "//www.slcl.org/bento/search/\u0002\u00010", - "ds": "//www.lightningdesignsystem.com/components/\u0002\u00010", - "nl": "//strategischlui.nl/?s=\u0002\u00010", - "ub": "http://katalogbeta.slub-dresden.de/?tx_find_find[q][default]=\u0002 \u000111", - "ackbuild": { - "\u0010": "//slackbuilds.org/result/?search=\u0002\u00010", - "s": "//slackbuilds.org/result/?search=\u0002\u00010" - }, - "ackdoc": "http://docs.slackware.com/start?do=search&id=\u0002&fulltext=Search\u00010", - "ackpkg": "http://packages.slackware.com/?search=\u0002\u00014", - "ader": "http://www.slader.com/search/?search_query=\u0002\u00010", - "ang": { - "\u0010": "http://onlineslangdictionary.com/definition+of/\u0002\u00015", - "gr": "http://www.slang.gr/lemmas?q=\u0002\u00010" - }, - "ant": "http://www.slant.co/topics/?search=\u0002\u00017", - "ashdot": "http://slashdot.org/index2.pl?fhfilter=\u0002\u00010", - "ate": { - "\u0010": "http://www.slate.com/search.html#search=\u0002\u00010", - "fr": "//www.slate.fr/search?mot-cle=\u0002\u00010" - }, - "cpl": "http://catalog.slcpl.org/search/searchresults.aspx?term=\u0002\u00010", - "ibs": "http://searchlibs.com/?q=\u0002\u00010", - "ickdeals": "http://slickdeals.net/sdsearch.php?forumchoice%5B%5D=9&search=\u0002&mode=forum&showposts=0&sdsearch_archive=0&firstpost=1\u000128", - "idescarnival": "//www.slidescarnival.com/?s=\u0002\u00010", - "ideshare": "http://www.slideshare.net/search/slideshow?q=\u0002&submit=post&commit=Search\u00010", - "ink": "http://link.springer.com/search?query=\u0002\u00010", - "itazforums": "http://forum.slitaz.org/search.php?q=\u0002\u00010", - "udgefeed": "//sludgefeed.com/?s=\u0002\u00010", - "wiki": "http://wiki.secondlife.com/w/index.php?search=\u0002\u00010", - "yrics": "http://www.songlyrics.com/index.php?section=search&searchW=\u0002&submit=Search\u00010" - }, - "m": { - "a": { - "g": "http://science.sciencemag.org/search/\u0002\u00010", - "m": { - "\u0010": "http://smile.amazon.com/s/?field-keywords=\u0002\u000152", - "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000120" - }, - "p": "http://streetmap.co.uk/postcode/\u0002\u00017", - "\u0010": "//smile.amazon.com/s/&field-keywords=\u0002\u000121", - "rt": { - "\u0010": "//www.smarticular.net/?s=\u0002\u00010", - "y": "http://www.smarty.net/search?q=\u0002&show=manual-en&x=0&y=0\u00010", - "os": "//smartos.org/man/\u0002\u00010", - "cat": "//rug.on.worldcat.org/search?databaseList=&queryString=\u0002\u00010", - "search": "http://smartsearch.altervista.org/?q=\u0002 \u00010" - }, - "shbomb": "//smashbomb.com/search?keyword=\u0002\u00010", - "shingmagazine": "http://www.smashingmagazine.com/search-results/?q=\u0002&cx=partner-pub-6779860845561969%3A5884617103&cof=FORID%3A10&ie=UTF-8\u00010", - "shwords": "http://www.smashwords.com/books/search?query=\u0002\u00010" - }, - "d": { - "b": "http://smdb.kb.se/catalog/search?q=\u0002\u00010", - "e": "http://smile.amazon.de/s?field-keywords=\u0002\u000146", - "\u0010": "http://www.sheetmusicdirect.com/Search.aspx?query=\u0002\u00010" - }, - "h": { - "i": "//www.smhi.se/sok?query=\u0002\u00010", - "\u0010": "http://www.smh.com.au/search?text=\u0002\u00015" - }, - "n": "http://songmeanings.com/query/?query=\u0002\u00014", - "s": { - "c": "//www.semanticscholar.org/search?q=\u0002\u000190", - "\u0010": "http://songmeanings.com/query/?query=\u0002\u00014" - }, - "\u0010": "http://www.smashingmagazine.com/search-results/?q=\u0002&cx=partner-pub-6779860845561969%3A5884617103&cof=FORID%3A10&ie=UTF-8\u00010", - "v": "http://www.ohg-ka.de/smv/?s=\u0002\u00010", - "w": "http://www.mariowiki.com/index.php?title=Special%3ASearch&search=\u0002\u000174", - "og": { - "\u0010": "http://www.smogon.com/search/?q=\u0002\u00010", - "on": { - "\u0010": "//www.smogon.com/dex/sm/pokemon/\u0002\u000164", - "bw": "http://www.smogon.com/dex/bw/pokemon/\u0002\u00010", - "dp": "http://www.smogon.com/dex/dp/pokemon/\u0002\u00013", - "gs": "http://www.smogon.com/dex/gs/pokemon/\u0002\u00013", - "rb": "http://www.smogon.com/dex/rb/pokemon/\u0002\u00013", - "sm": "http://www.smogon.com/dex/sm/pokemon/\u0002/\u000111", - "xy": "http://www.smogon.com/dex/xy/pokemon/\u0002\u00014" - }, - "rs": "http://www.smogon.com/dex/rs/pokemon/\u0002/\u00010" - }, - "pl": "//smpl.bibliocommons.com/search?t=smart&search_category=keyword&q=\u0002\u00010", - "re": "//www.swissmilk.ch/de/alle-rezepte/suche/?qt=\u0002&cat=Rezept+Suche&qd=1\u00017", - "ention": "http://socialmention.com/search?q=\u0002\u000117", - "gsm": "http://www.smogon.com/dex/sm/pokemon/\u0002\u000124", - "ile": { - "\u0010": "//smile.amazon.com/s?field-keywords=\u0002\u0001544", - "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000120" - }, - "ime": "//api.posteo.de/v1/public-keys/\u0002?type=smime\u00010", - "ite": "http://smite.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "iths": { - "\u0010": "//www.smithsfoodanddrug.com/search?query=\u0002&searchType=natural\u00013", - "onian": "//si.edu/sisearch?edan_q=\u0002\u00010" - }, - "itten": "//smittenkitchen.com/?s=\u0002\u00010", - "ulweb": "http://www.smulweb.nl/recepten/\u0002\u00010", - "zdm": "//search.smzdm.com/?c=home&s=\u0002\u00010" - }, - "n": { - "c": { - "r": "//snapcraft.io/search?q=\u0002\u00014", - "\u0010": "//developer.servicenow.com/app.do#!/search?category=API&q=\u0002\u00010" - }, - "d": { - "\u0010": "http://www.snapdeal.com/search?noOfResults=20&keyword=\u0002\u00010", - "cld": "//soundcloud.com/search?q=\u0002\u00014", - "ocs": "//docs.servicenow.com/search?q=\u0002\u00010" - }, - "f": "http://www.snf.ch/en/Search/Pages/default.aspx?k=\u0002\u00010", - "k": "//community.servicenow.com/community?id=community_search&q=\u0002\u00010", - "l": "http://snl.no/.search?e=snl&query=\u0002\u000129", - "m": "//www.nexusmods.com/skyrim/search/?gsearch=\u0002&gsearchtype=mods\u00010", - "n": "http://sonic.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "o": { - "\u0010": "//www.startpage.com/do/search?cmd=process_search&query=\u0002&with_region=countryNO\u00010", - "rt": "//www.snort.org/search?query=\u0002\u00010", - "tr": "//www.snotr.com/search/?search=\u0002\u00010", - "gard": "//www.snogard.de/suche.html?suchwort=\u0002\u00010", - "opsnoo": "//www.snoopsnoo.com/u/\u0002\u00013", - "pes": "http://www.snopes.com/?s=\u0002\u00017" - }, - "p": { - "\u0010": "http://www.snopes.com/?s=\u0002\u00017", - "edia": "//www.snpedia.com/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010" - }, - "\u0010": "http://soylentnews.org/search.pl?query=\u0002\u00013", - "s": "http://seaborn.pydata.org/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "w": "http://wiki.servicenow.com/search-results.php?cx=005409823165138974380%3Abltnnmgfoek&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=wiki.servicenow.com%2Fsearch-results.php&ref=&ss=\u00010", - "ap": { - "\u0010": "http://snapzu.com/find/\u0002\u000113", - "s": "//snapcraft.io/search?q=\u0002\u00014", - "py": { - "\u0010": "//snapcraft.io/search?q=\u0002\u00014", - "goat": "//snappygoat.com/s/?q=\u0002\u00010", - "words": "http://www.snappywords.com/?lookup=\u0002\u00010" - }, - "craft": "//snapcraft.io/search?category=&q=\u0002\u00019", - "deal": "http://www.snapdeal.com/search?keyword=\u0002\u00010" - }, - "ih": "//www.startpage.com/do/search?q=\u0002&l=nihongo\u00013", - "it": "http://www.sinonimi-contrari.it/\u0002/\u00010", - "rt": "//www.snort.org/search?query=\u0002&submit_search=\u00010", - "iff": "//websniffer.cc/?url=\u0002\u00016", - "uson": "http://www.snuson.com/forum/shop/search/?q=\u0002&submit.x=0&submit.y=0\u00010" - }, - "o": { - "c": { - "p": "http://careers.stackoverflow.com/companies?searchTerm=\u0002\u00010", - "\u0010": "http://careers.stackoverflow.com/jobs?searchTerm=\u0002\u00010", - "vi": "//stackoverflow.com/search?q=[labwindows]+\u0002\u00010", - "cerway": "http://int.soccerway.com/search/?q=\u0002&module=all\u000113", - "cerwiki": "http://soccerwiki.com/wiki.php?action=search&q=\u0002&searchType=players\u00010", - "ialblade": "//socialblade.com/search/\u0002\u000155", - "iete": "http://www.societe.com/cgi-bin/search?champs=\u0002\u00014", - "kandmore": "http://www.socksandmore.dk/catalogsearch/result/?q=\u0002\u00010", - "ompanies": "//stackoverflow.com/jobs/companies?q=\u0002\u00010", - "wall": "http://www.socwall.com/wallpapers/search:\u0002\u00010" - }, - "d": "//duckduckgo.com/?q=site:stackoverflow.com+\u0002\u0001158", - "f": { - "f": "//duckduckgo.com/?kp=-2&q=\u0002\u000128", - "\u0010": "//stackoverflow.com/search?q=\u0002\u000127", - "asc": "//www.sofascore.com/search?q=\u0002\u00013", - "ifa": "//sofifa.com/players?keyword=\u0002 \u000155", - "t32": "http://www.soft32.com/search/?k=\u0002&submit=\u00010", - "ticweb": "//www.billing.softicweb.com/cart.php?a=add&domain=register&query=\u0002\u00010", - "tpedia": "http://www.softpedia.com/dyn-search.php?search_term=\u0002&x=0&y=0\u00013", - "tware": "http://download.cnet.com/1770-20_4-0.html?searchtype=downloads&query=\u0002&tg=dl-20&search.x=0&search.y=0&search=+Go%252521\u000115", - "urry": "//www.sofurry.com/browse/search?search=\u0002\u00010" - }, - "g": { - "\u0010": "//www.google.com/search?q=site%3Astackoverflow.com+\u0002\u000123", - "ou": "//www.sogou.com/web?query=\u0002\u000149" - }, - "m": { - "e": "http://www.someecards.com/search?q=\u0002 \u00010", - "\u0010": "http://www.spirit-of-metal.com/find.php?nom=\u0002\u000112" - }, - "r": { - "\u0010": "http://stackoverflow.com/search?q=[r]+\u0002\u00010", - "abel": "//www.sorabel.com/products/search?query=\u0002\u00010", - "ocaba": "http://www.sorocaba.sp.gov.br/pesquisar/?q=\u0002\u00010", - "uso": "//soruso.com/?s=\u0002\u00010" - }, - "s": { - "o": "http://www.soso.com/q?pid=s.idx&w=\u0002\u00010", - "\u0010": "http://software.opensuse.org/search?q=\u0002&search_devel=false&search_unsupported=false\u000113", - "crapy": "http://stackoverflow.com/search?q=\u0002[scrapy]\u00010" - }, - "\u0010": "//stackoverflow.com/search?q=\u0002\u000127", - "js": "//stackoverflow.com/search?q=[javascript]+\u0002\u00013", - "kr": "http://sokr.ru/\u0002/\u00010", - "lo": { - "j": "http://solo.bodleian.ox.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=local&search_scope=LSCOP_ALL&vid=SOLO&facet=rtype,include,journals&lang=en_US&offset=0\u00010", - "\u0010": "http://solo.bodleian.ox.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=local&search_scope=LSCOP_ALL&vid=SOLO&lang=en_US&offset=0\u000145", - "mid": "http://www.solomid.net/searchresults.php?q=\u0002\u00010", - "press": "//www.solopress.com/search?searchTerm=\u0002\u00010" - }, - "ov": "http://soov-ee.postimees.ee/keyword-\u0002/listings.html\u00010", - "ph": { - "\u0010": "//www.sophos.com/en-us/search-results.aspx?search=\u0002\u00010", - "oskb": "//community.sophos.com/search?q=\u0002\u00010", - "oscom": "//community.sophos.com/search?q=\u0002\u00010" - }, - "pt": "//pt.stackoverflow.com/search?q=\u0002\u00010", - "py": "http://stackoverflow.com/search?q=[python]+\u0002\u00014", - "td": "//www.stateofthedapps.com/dapps?text=\u0002\u00010", - "uq": "//uae.souq.com/ae-en/\u0002/s/?as=1\u00010", - "xl": "http://stackoverflow.com/search?q=[excel]+\u0002\u00010", - "apbox": "//www.sp-bx.com/?s=\u0002\u00010", - "apnote": "//www.soapnote.org/?s=\u0002\u00010", - "bash": "http://stackoverflow.com/search?q=[bash]+\u0002\u00010", - "beys": "http://www.sobeys.com/en/search/?search=\u0002\u00010", - "job": "//stackoverflow.com/jobs?q=\u0002\u00010", - "le24": "//www.ricerca24.ilsole24ore.com/fc?cmd=static&chId=30&path=%2Fsearch%2Fsearch_engine.jsp&field=Titolo%7CTesto&orderBy=score+desc&chId=30&keyWords=\u0002&button=\u00010", - "lidaris": "http://solidaris.be/MonsWP/Pages/recherche.aspx?k=\u0002 \u00010", - "luce": "http://www.supersoluce.com/search/supersoluce/\u0002\u00010", - "n2teuf": "http://son2teuf.org/search/category_sort/Page-1?searchphrase=any&searchword=\u0002&view=search\u00010", - "narcloud": "//sonarcloud.io/explore/projects?search=\u0002\u00010", - "naveeb": "//sonaveeb.ee/search/est-est/detail/\u0002/\u00018", - "net": "//www.so-net.ne.jp/search/web/?query=\u0002\u00010", - "ngfacts": "http://www.songfacts.com/search-song-1.php?\u0002\u00010", - "ngkick": "//www.songkick.com/search?query=\u0002\u00018", - "nglink": "//odesli.co/embed?url=\u0002\u00015", - "ngmeaning": { - "\u0010": "http://www.songmeanings.net/query/?q=\u0002&type=artists&page=1&start=0&mm=1&pp=20&b=Go\u00013", - "s": "http://songmeanings.com/query/?query=\u0002\u00014" - }, - "ngsterr": "http://www.songsterr.com/a/wa/search?pattern=\u0002\u000189", - "ngtext": "http://www.songtexte.com/search?q=\u0002&c=all\u00010", - "nicretro": "http://info.sonicretro.org/Special:Search?search=\u0002&go=Go\u00010", - "nnentor": "//www.sonnentor.com/de-at/find?q=\u0002&c=Alle\u00010", - "nofmarketing": "http://www.sonofmarketing.it/?q=\u0002\u00010", - "ugou": "//www.sogou.com/web?query=\u0002\u000149", - "ulflower": "http://www.soul-flower.com/mm5/merchant.mvc?Screen=search&onlyone=1&sort=id.desc&x=0&y=0&Search=\u0002\u00010", - "und": { - "\u0010": "//soundcloud.com/search?q=\u0002\u00014", - "y": "//www.soundy.top/sounds?q=\u0002\u00010", - "cloud": "//soundcloud.com/search?q=\u0002\u00014", - "dogs": "//www.sounddogs.com/search?keywords=\u0002\u00010", - "onsound": "//www.soundonsound.com/search/all/\u0002 \u00010", - "trackinfo": "http://www.soundtrackinfo.com/search/\u0002/\u00010" - }, - "urceforge": "http://sourceforge.net/directory/?q=\u0002\u00010", - "urcegraph": "//sourcegraph.com/github.com/\u0002\u00010", - "urcewatch": "http://www.sourcewatch.org/index.php?search=\u0002&title=Special%3ASearch\u00010", - "uthpark": "http://www.southparkstudios.com/search?keywords=\u0002\u00010", - "yluna": "http://soyluna.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "zluk": "http://www.eksisozluk.com/show.asp?t=\u0002\u00010" - }, - "p": { - "b": "//speiderbasen.no/?searchWord=\u0002\u00010", - "d": "http://packages.speedeedelivery.com/packageDetail.php?barcode=\u0002\u00010", - "e": { - "n": "//startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=english\u00017", - "s": "//startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=espanol\u00013", - "\u0010": "//startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=espanol\u00013", - "le": "http://spele.nl/zoeken/?q=\u0002\u00010", - "ur": "http://www.speurders.nl/overzicht/?query=\u0002\u00010", - "akers": "//www.speakersassociates.com/search?search_api_views_fulltext=\u0002\u00010", - "ccie": "http://www.spectator.co.uk/?s=\u0002\u00010", - "edrun": "http://speedrun.com/\u0002\u0001187", - "edsolving": { - "\u0010": "//www.speedsolving.com/forum/searchresults.php?q=\u0002\u00010", - "wiki": "//www.speedsolving.com/wiki/index.php?title=Special%3ASearch&search=\u0002 &go=Go\u00010" - }, - "edyhen": "//www.speedyhen.com/Search/Keyword?keyword=\u0002\u00010", - "kbio": "//www.spektrum.de/lexikon/biologie/?q=\u0002\u00010", - "kgeo": "//www.spektrum.de/lexikon/geographie/?q=\u0002\u00010" - }, - "f": "http://mxtoolbox.com/SuperTool.aspx?action=spf%3a\u0002&run=toolpage\u00010", - "g": "//www.speedguide.net/search_rez.php?seek=\u0002&words=yes\u00010", - "i": { - "n": { - "\u0010": "//www.spin.de/search?q=\u0002\u00010", - "oza": "http://www.spinoza.it/?s=\u0002\u00010", - "rilla": "//spinrilla.com/search?q=\u0002\u00010" - }, - "p": "//duckduckgo.com/?q=\u0002+site:spip.net\u00010", - "\u0010": "//startpage.com/do/search?cat=pics&cmd=process_search&query=\u0002\u0001316", - "t": "//startpage.com/do/search?cat=web&cmd=process_search&language=italiano&engine0=v1all&query=\u0002&abp=-1&prf=ab8a0a99ccae7d38fd1f9b31e845ce7e&SuggestOn=1\u00010", - "ce": "//community.spiceworks.com/search?query=\u0002\u00010", - "cs": "//site.pictures/search/images/?q=\u0002\u00010", - "on": "http://www.spi0n.com/?s=\u0002\u00010", - "egel": "http://www.spiegel.de/suche/index.html?suchbegriff= \u0002\u000114", - "eletipps": "http://www.spieletipps.de/suche/?keyword=\u0002\u00010", - "got": { - "\u0010": "//www.spigotmc.org/search/14203285/?q=\u0002&o=relevance\u00010", - "mc": "//www.spigotmc.org/search/14487199/?q=\u0002&o=relevance\u00013" - } - }, - "l": { - "c": "//www.splcenter.org/resources?keyword=\u0002\u00010", - "\u0010": "//seattle.bibliocommons.com/search?utf8=%E2%9C%93&t=smart&search_category=keyword&commit=Search&q=\u0002\u00010", - "ash": "//unsplash.com/search/photos/\u0002\u00015", - "atoon": "http://splatoonwiki.org/w/index.php?search=\u0002\u000169", - "ice": "//splice.com/sounds/search?q=\u0002\u00010", - "unk": { - "\u0010": "//www.splunk.com/en_us/search.html?query=\u0002\u00010", - "base": "//apps.splunk.com/apps/#/search/\u0002/page/1\u00010" - } - }, - "m": "//startpage.com/do/m/mobilesearch?&q=\u0002\u00010", - "p": { - "l": "//www.startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=polski\u00010", - "\u0010": "//startpage.com/do/search?prf=2cc506ab255c98e10570b7d50ef6b1c8&cat=web&query=\u0002\u000148", - "it": "//startpage.com/do/search?prf=77fe802d54508e9ee48b88624be6da56&cat=web&query=\u0002\u00010" - }, - "r": { - "d": "//www.spreadshirt.com/\u0002\u00010", - "\u0010": "http://search.sitepoint.com/?q=\u0002&refinements%5Breference%5D=1\u00010", - "kr": "//www.spreaker.com/search?query=\u0002\u00010", - "eadshirt": "http://spreadshirt.com/\u0002\u00010", - "inger": { - "\u0010": "//link.springer.com/search?query=\u0002\u00010", - "free": "//link.springer.com/search?showAll=false&query=\u0002\u00010", - "link": "//link.springer.com/search?query=\u0002\u00010" - }, - "ingsource": "http://www.springsource.org/search/google?query=\u0002\u00010", - "iters": { - "\u0010": "//www.spriters-resource.com/search/?q=\u0002}\u000122", - "resource": "//www.spriters-resource.com/search/?q=\u0002\u00015" - }, - "oget": "//sproget.dk/lookup?SearchableText=\u0002\u00014" - }, - "\u0010": "//startpage.com/do/metasearch.pl?query=\u0002\u000113006", - "t": { - "\u0010": "//open.spotify.com/search/results/\u0002\u00010", - "v": "http://video.samaritanspurse.org/?s=\u0002\u00010", - "io": "//search.privacytools.io/?q=\u0002\u00018" - }, - "v": "//www.startpage.com/do/search?cat=video&cmd=process_search&query=\u0002\u000171", - "x": "//www.surplex.com/de/maschinen.html?tx_surplex_pi1%5Bsword%5D=\u0002\u00010", - "y": "//open.spotify.com/search/\u0002\u0001779", - "nl": "//startpage.com/do/search?l=nederlands&q=\u0002\u00010", - "on": { - "\u0010": "http://www.spiegel.de/suche/index.html?suchbegriff=\u0002\u000149", - "ge": { - "\u0010": "//spongebob.fandom.com/wiki/Special:Search?search=\u0002\u00010", - "bob": "http://spongebob.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00018" - } - }, - "acedock": "http://spacedock.info/search?query=\u0002\u00010", - "amcheck": "http://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a\u0002&run=toolpage\u00010", - "andict": "http://www.spanishdict.com/translate/\u0002\u0001988", - "anish": { - "d": { - "\u0010": "//www.spanishdict.com/translate/\u0002\u0001161", - "ict": "//www.spanishdict.com/translate/\u0002\u0001161" - }, - "\u0010": "//www.spanishdict.com/translate/\u0002\u0001161" - }, - "anslang": "http://www.speakinglatino.com/?s=\u0002&advanced=0&search_type=&posts_country=&posts_category=&words_country=&words_category=&words_letter=CHOOSE+A+STARTING+LETTER&all_country=&all_letter=CHOOSE+A+STARTING+LETTER\u00010", - "are": { - "\u0010": "//www.spareroom.co.uk/flatshare/flatshare_detail.pl?flatshare_id=\u0002\u00010", - "-part": "//kfz-schlachter.de/Store?q=\u0002\u00010" - }, - "arkfun": "//www.sparkfun.com/search/results?term=\u0002\u00017", - "arknotes": "http://www.sparknotes.com/search?q=\u0002\u000110", - "artan": "//www.spartan-donate.com/?s=\u0002\u00010", - "attern": "http://subtlepatterns.com/?q=\u0002\u00010", - "hereon": "//sphereon.com/?s=\u0002\u00010", - "oonacular": "//spoonacular.com/\u0002\u00010", - "ort1": "http://www.sport1.de/suche#\u0002\u00010", - "orum": "http://forum.spore.com/jforum/jforum.page?module=search&action=search&search_keywords=\u0002\u00010", - "orcle": "http://www.sporcle.com/games/tags/\u0002\u000118", - "otify": { - "\u0010": "//open.spotify.com/search/\u0002\u0001779", - "search": "//open.spotify.com/search/results/\u0002\u00010" - }, - "utnik": { - "\u0010": "http://www.sputnik.ru/search?q=\u0002\u00010", - "music": "//www.sputnikmusic.com/search_results.php?search_in=Bands&search_text=\u0002\u000136" - } - }, - "r": { - "a": "http://www.ncbi.nlm.nih.gov/sra/?term=\u0002\u00010", - "d": { - "5": "http://5e.d20srd.org/search.htm?q=\u0002\u00010", - "\u0010": "http://www.d20srd.org/search.htm?q=\u0002\u00010" - }, - "f": { - "i": "http://srfi.schemers.org/srfi-\u0002/srfi-\u0002.html\u00010", - "\u0010": "http://www.srf.ch/suche?q=\u0002\u00016" - }, - "i": "http://steamrep.com/id/\u0002\u00010", - "k": "http://shoryuken.com/?s=\u0002\u00010", - "o": { - "\u0010": "//old.reddit.com/r/\u0002/\u00011056", - "ld": "//old.reddit.com/r/\u0002/\u00011056" - }, - "\u0010": "//reddit.com/r/\u0002\u00011600", - "s": "//www.reddit.com/search?q=subreddit:\u0002\u0001170", - "v": "http://stukroodvlees.nl/?s=\u0002\u00010", - "ch": "http://www.admin.ch/opc/search/?lang=de&language[]=de&product[]=fg&product[]=oc&product[]=cc&product[]=ba&product[]=jcd&date_range_min=&date_range_max=&d_compilation=both&d_is_in_force=yes&text=\u0002\u00010", - "ec": "http://softwarerecs.stackexchange.com/search?q=\u0002\u00010", - "hu": "//translate.google.com/#sr/hu/\u0002 \u00010", - "rl": "//www.reddit.com/r/RocketLeague/search?q=\u0002&restrict_sr=on\u00010", - "cforge": "http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=\u0002\u00010", - "eddit": "//reddit.com/r/\u0002\u00011600", - "etro": "http://info.sonicretro.org/index.php?search=\u0002\u00010", - "tblog": "//srthealing.com/?s=\u0002\u00010", - "top": "//www.reddit.com/r/\u0002/top/?sort=top&t=all\u00014" - }, - "s": { - "b": { - "\u0010": "http://www.ssbwiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000135", - "no": "//www.ssb.no/sok?sok= \u0002\u00010" - }, - "e": "//security.stackexchange.com/search?q=\u0002\u00010", - "g": "http://dictionnaire.sensagent.leparisien.fr/\u0002/fr-fr/\u00010", - "l": { - "\u0010": "//www.ssllabs.com/ssltest/analyze.html?d=\u0002&latest=true\u00010", - "ang": "http://www.speakinglatino.com/?s=\u0002&advanced=0&search_type=&posts_country=&posts_category=&words_country=&words_category=&words_letter=CHOOSE+A+STARTING+LETTER&all_country=&all_letter=CHOOSE+A+STARTING+LETTER\u00010", - "labs": { - "\u0010": "//www.ssllabs.com/ssltest/analyze.html?d=\u0002\u000111", - "dev": "//dev.ssllabs.com/ssltest/analyze.html?latest&d=\u0002\u00010" - } - }, - "p": { - "\u0010": "http://www.silverstripe.org/search/?q=\u0002\u00013", - "ai": "//sspai.com/search/article?q=\u0002\u00010", - "tv": "http://www.ssptv.com/?s=\u0002\u00010" - }, - "r": "//shopsmartreviews.in/?s=\u0002\u00010", - "s": { - "\u0010": "//www.similarsitesearch.com/alternatives-to/\u0002\u00010", - "es": "http://www.similarsitesearch.com/es/sitio/\u0002\u00010" - }, - "\u0010": "//surrey-primotc.hosted.exlibrisgroup.com/primo-explore/search?vl(freeText0)=\u0002&fn=search&vid=44SUR_VU1&tab=default_tab&query=any,contains,\u0002&search_scope=default_scope\u000112", - "t": "//csgostash.com/google-search?q=\u0002\u00010", - "v": "//www.shutterstock.com/search?searchterm=\u0002&image_type=vector\u00010", - "64": "http://duckduckgo.com/?q=\u0002+site:www.ss64.com\u00014", - "ch": "//www.semanticscholar.org/search?q=\u0002&sort=relevance&ae=false\u000116", - "jc": "http://ssjc.ujc.cas.cz/search.php?heslo=\u0002\u00010", - "kj": "http://bos.zrc-sazu.si/cgi/a03.exe?name=sskj_testa&expression=\u0002&hs=1\u00018", - "on": "//duckduckgo.com/?q=\u0002&kp=1\u00010", - "aft": "http://ssaft.com/Blog/dotclear/?q=\u0002\u00010", - "nap": "http://www.soundsnap.com/search/audio/\u0002/score\u00010", - "oar": "http://www.ssoar.info/ssoar/discover?query=\u0002\u00010", - "off": "//duckduckgo.com/?q=\u0002&kp=-2\u00018", - "wiki": "//www.speedsolving.com/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010" - }, - "\u0010": "//startpage.com/do/metasearch.pl?query=\u0002\u000113006", - "t": { - "e": { - "\u0010": "//store.steampowered.com/search/?term=\u0002\u00010", - "x": "http://stackexchange.com/search?q=\u0002\u0001173", - "al": "//www.stealengine.com/?q=\u0002\u00010", - "am": { - "\u0010": "http://store.steampowered.com/search/?term=\u0002\u00013370", - "db": "http://steamdb.info/search/?a=app&q=\u0002\u0001431", - "gl": "//steamcommunity.com/workshop/browse/?appid=765&searchtext=\u0002\u00010", - "id": "//store.steampowered.com/app/\u0002/\u00013", - "io": "//steamid.io/lookup/\u0002\u00010", - "sc": "//steamcommunity.com/search/users/#text=\u0002\u00010", - "2twitch": "http://tab-bot.net/botcheck?twitchname_botcheck=&steam_botcheck=\u0002\u00010", - "charts": "http://steamcharts.com/search/?q=\u0002\u000149", - "community": "http://steamcommunity.com/actions/Search?K=\u0002\u000154", - "gift": "//www.steamgifts.com/giveaways/search?q=\u0002\u00010", - "key": "//store.steampowered.com/account/registerkey?key=\u0002\u00010", - "market": "http://steamcommunity.com/market/search?q=\u0002\u000118", - "prices": "http://www.steamprices.com/us/search?\u0002\u00014", - "rep": "http://steamrep.com/?q=\u0002\u00014", - "spy": "http://steamspy.com/search.php?s=\u0002\u00013", - "trades": "http://www.steamtrades.com/forum/search/\u0002\u00010" - }, - "em": { - "\u0010": "//www.asksteem.com/search?q=\u0002\u00010", - "it": "//steemit.com/static/search.html?q=\u0002\u00010" - }, - "me": "//store.steampowered.com/search/?term=\u0002\u00010", - "rn": "http://www.stern.de/action/3000116/search?query=\u0002\u00010", - "elcase": "//www.steelcase.com/?s=\u0002\u00010", - "igan": "//steigan.no/?s=\u0002\u00010", - "imatzky": "http://www.steimatzky.co.il/Steimatzky/Pages/SearchResult.aspx?SearchType=Simple&SearchSimpleText=\u0002\u00010", - "llar": { - "\u0010": "//stellarfed.org/search?q=\u0002\u00010", - "is": "//stellaris.paradoxwikis.com/index.php?search=\u0002\u000130" - } - }, - "f": "http://portal.stf.jus.br/processos/listarProcessos.asp?classe=&numeroProcesso=\u0002\u00010", - "l": { - "\u0010": "http://www.cplusplus.com/search.do?q=\u0002\u00010", - "f": "//www.stlfinder.com/?search=\u0002\u00010" - }, - "m": { - "\u0010": "http://stmblog.com/?s=\u0002\u00010", - "oritz": "//www.engadin.stmoritz.ch/suche/q.\u0002/\u00010" - }, - "p": "http://www.sierratradingpost.com/s~\u0002\u00010", - "s": { - "\u0010": "http://st-takla.org/Coptic-Search-St-Takla.org/site_search.php?q=\u0002&op=and\u00010", - "w": "//slay-the-spire.fandom.com/wiki/Special:Search?query=\u0002\u000112", - "de": "//www.spreadthesign.com/de.de/search/?q=\u0002\u00010", - "tock": "//www.shutterstock.com/search/\u0002\u00010" - }, - "\u0010": "http://stocktwits.com/search?q=\u0002\u000199", - "w": { - "\u0010": "//singletrackworld.com/forum/search/\u0002\u00013", - "s": "//www.superteacherworksheets.com/search-results.html?srch_words=\u0002\u00010" - }, - "z": "http://www.stuttgarter-zeitung.de/suche?_charset_=UTF-8&searchText=\u0002\u00010", - "an": { - "\u0010": "//play.stan.com.au/programs\u0002\u00010", - "daard": "http://www.standaard.be/zoeken?keyword=\u0002\u00010", - "dsfor": "http://www.abbreviations.com/\u0002\u000129" - }, - "ax": "http://www.staxtradecentres.co.uk/search/?keys=\u0002\u00010", - "cm": "//steamcommunity.com/id/\u0002\u00010", - "ib": "http://www.stib-mivb.be/horaires-dienstregeling2.html?l=en&linecode=\u0002\u00010", - "rm": "//stream.org/?s=\u0002\u00010", - "abs": "http://www.songsterr.com/a/wa/search?pattern=\u0002\u000189", - "abihannover": "//bibliothek.hannover-stadt.de/alswww3.dll/APS_ZONES?fn=SEARCH?q=\u0002\u00013", - "ack": { - "\u0010": "//stackoverflow.com/search?q=\u0002\u000127", - "age": "http://www.stackage.org/lts/hoogle?q=\u0002\u000151", - "exchange": "http://stackexchange.com/search?q=\u0002 \u000117", - "overflow": "//stackoverflow.com/search?q=\u0002\u000127", - "share": "http://stackshare.io/search/q=\u0002\u00010", - "social": "//stacksocial.com/search?utf8=✓&query=\u0002\u00013", - "sproj": "//stacks.math.columbia.edu/search?query=\u0002\u00010" - }, - "adium": "//www.stadium.se/search?SearchTerm=\u0002\u00010", - "ake": "//stakingreturns.com/coins/\u0002\u00010", - "aples": { - "\u0010": "http://www.staples.com/office/supplies/StaplesSearch?searchkey=\u0002&storeId=10001&catalogId=10051&langId=-1&fromUrl=home\u000113", - "ca": "http://www.staples.ca/\u0002/directory_\u0002_20051_1_20001\u00010" - }, - "art": { - "\u0010": "//www.startpage.com/do/dsearch?query=\u0002\u0001774", - "up": { - "\u0010": "//startupbuffer.com/search?s=\u0002\u00010", - "jobs": "//startup.jobs/?q=\u0002\u00010" - }, - "icket": "//www.starticket.ch/de/suche?_csquery=\u0002\u00010", - "page": { - "\u0010": "//www.startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch\u0001968", - "images": "//startpage.com/do/search?cat=pics&cmd=process_search&query=\u0002\u0001316", - "videos": "//startpage.com/do/search?cat=video&cmd=process_search&query=\u0002\u00010" - }, - "rek": "http://memory-alpha.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&resultsLang=en\u00018" - }, - "arbound": { - "\u0010": "http://starbounder.org/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u00010", - "er": "http://starbounder.org/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "ardew": { - "\u0010": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u000178", - "valley": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u000178" - }, - "argate": "http://stargate.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "armade": { - "\u0010": "//starmadepedia.net/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "dock": "//starmadedock.net/search/1/?q=\u0002\u00010" - }, - "arwars": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002&go=&fulltext=Search \u000118", - "ats": { - "\u0010": "//statisticsbyjim.com/?s=\u0002\u00010", - "biblioteket": "//www.statsbiblioteket.dk/au/?locale=en#/search?query=\u0002\u00010" - }, - "aten": "//www.statenvertaling.net/zoek.php?q=\u0002\u00010", - "aticice": "http://staticice.com.au/cgi-bin/search.cgi?q=\u0002\u00015", - "ationsweb": "http://www.stationsweb.nl/stationlijst.asp?station=\u0002 \u00010", - "atista": "//www.statista.com/search/?q=\u0002\u00013", - "aygb": "//staygb.com/search?q=\u0002\u00010", - "debook": "//standardebooks.org/ebooks/?query=\u0002\u00015", - "doc": "http://www.stata.com/help.cgi?\u0002\u00010", - "dtplnlmn": "http://stadtplan-ilmenau.de/?query=\u0002\u00010", - "hlmbibbla": "//biblioteket.stockholm.se/sok?freetext=\u0002\u00010", - "ickpng": "http://www.stickpng.com/search?q=\u0002\u00010", - "illtasty": "//stilltasty.com/Search?q=\u0002\u00010", - "ixoi": "http://www.stixoi.info/stixoi.php?info=SS&keywords=\u0002&act=ss\u00010", - "ock": { - "\u0010": "http://finance.google.com/?q=\u0002&sa=N&tab=fe\u00011444", - "x": "//stockx.com/search?s=\u0002\u000123", - "sy": "//www.stocksy.com/search/\u0002\u00010", - "charts": "http://stockcharts.com/h-sc/ui?s=\u0002&p=D&yr=0&mn=6&dy=0\u00013", - "photos": "http://www.istockphoto.com/file_search.php?action=file&text=\u0002\u00010", - "video": "http://www.dissolve.com/products?keywords=\u0002&media_type=video\u00010" - }, - "orm": "//isc.sans.edu/ipinfo.html?ip=\u0002\u00010", - "ortinget": "//sok.stortinget.no/?querytext=\u0002\u00010", - "orybank": "//storybank.id/?s=\u0002\u00010", - "rain": "//www.wikileaf.com/strains/?search=\u0002\u00010", - "rans": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Spansk&Fra=\u0002\u00010", - "rava": "//www.strava.com/athletes/search?utf8=✓&text=\u0002&gsf=1\u000111", - "raightdope": "http://www.straightdope.com/columns/search?query=\u0002&action=search\u00010", - "raitstimes": "//www.straitstimes.com/search?searchkey=\u0002\u00010", - "rategischlui": "//strategischlui.nl/?s=\u0002\u00010", - "rategywiki": "//strategywiki.org/w/index.php?search=\u0002\u00010", - "reg": "//store.steampowered.com/account/registerkey?key=\u0002\u00010", - "ream": "//www.stream.cz/vyhledavani?dotaz=\u0002\u00018", - "reet": "http://streeteasy.com/search?utf8=%E2%9C%93&search=\u0002\u00010", - "refasluchu": "http://www.strefasluchu.pl/?s=\u0002\u00010", - "rib": "http://www.startribune.com/search/?q=\u0002\u00010", - "rongs": "//www.biblestudytools.com/search/?q=\u0002&t=kjv&s=Bibles\u00018", - "rumenti": "//www.strumentimusicali.net/advanced_search_result.php?manufacturers_id=&keywords=\u0002&inc_subcat=1\u00010", - "texts": "http://www.sacred-texts.com/cat/srchtitl.htm?search_str=\u0002\u00010", - "ubhub": "http://www.stubhub.com/search/doSearch?searchStr=\u0002&pageNumber=1&resultsPerPage=50&searchMode=event&start=0&rows=50\u00014", - "udy": { - "\u0010": "//study.com/search/text/academy.html?q=\u0002\u00010", - "bible": "http://studybible.info/YLT/\u0002\u00010" - }, - "udentdoctor": "http://www.studentdoctor.net/search-sdn/?cx=\u0002\u00010", - "udiofutbol": "http://studiofutbol.com.ec/?submit=&s=\u0002\u00010", - "uffnz": "http://www.stuff.co.nz/searchresults?Search+Site=Search+Site&cof=FORID%3A9&cx=006730714154542492986%3Aoh6vl0ybuqy&ie=UTF-8&q=\u0002&siteurl=www.stuff.co.nz%2F&ref=\u00010", - "upi": "http://www.stupidedia.org/stupi?title=Spezial%3ASuche&search=\u0002 \u00010", - "ylish": "//userstyles.org/styles/browse?search_terms=\u0002\u00010" - }, - "u": { - "m": { - "c": "//learn.sharedusemobilitycenter.org/search/?keyword=\u0002\u00010", - "\u0010": "http://sum.in.ua/?swrd=\u0002 \u000112", - "mitpost": "http://www.summitpost.org/object_list.php?object_type=0&object_name_0=\u0002&page=1\u00010" - }, - "n": { - "\u0010": "//sunrise-sunset.org/search?location=\u0002\u000114", - "dell": "//www.swiftbysundell.com/search?query=\u0002\u00010", - "nah": "//sunnah.com/search/?q=\u0002\u00015", - "nysports": "http://www.sunnysports.com/search?searchinfo=\u0002\u00010", - "times": "//chicago.suntimes.com/?s=\u0002\u00010" - }, - "s": { - "i": "http://susi.at/suche/\u0002/\u00010", - "\u0010": "http://software.opensuse.org/search?utf8=✓&q=\u0002&search_devel=false&search_unsupported=false&baseproject=openSUSE:13.1\u000129", - "y": "http://susydocs.oddbird.net/en/latest/?q=\u0002\u00010", - "ebug": "//bugzilla.novell.com/buglist.cgi?quicksearch=\u0002\u00010", - "epkg": "//software.opensuse.org/search?q=\u0002\u000117" - }, - "\u0010": "http://superuser.com/search?q=\u0002\u00015", - "br": { - "\u0010": "//www.reddit.com/r/\u0002\u00011875", - "eddit": { - "\u0010": "//www.reddit.com/r/\u0002\u00011875", - "search": "//www.reddit.com/search?q=subreddit:\u0002\u0001170" - } - }, - "ed": "http://www.sueddeutsche.de/news?search=\u0002\u00010", - "ub": "//suche.suub.uni-bremen.de/cgi-bin/CiXbase/brewis/CiXbase_search?act=search&INDEXINFO=awCN&LAN=DE&ORDER=&IHITS=15&FHITS=15&PRECISION=220&RELEVANCE=40&NO_RBITS=&n_dtyp=1LZ&n_rtyp=ceEdX&index=L&XML_STYLE=%2Fstyles%2Fcns-DE.xml%3F20130610&dtyp=&mtyp=§ion=&term=\u0002&CID=&x=0&y=0\u00015", - "been": "http://subeen.com/?s=\u0002\u00010", - "betashops": "//subeta.net/user_shops.php/search/shops/\u0002\u00010", - "bito": "http://www.subito.it/annunci-italia/vendita/usato/?q=\u0002\u000141", - "bldoc": "http://docs.sublimetext.info/en/latest/search.html?q=\u0002\u00010", - "blevel": "//sublevel.net/search/?q=\u0002\u00010", - "blforum": "//forum.sublimetext.com/search?q=\u0002\u00010", - "blime": "//sublime.wbond.net/search/\u0002\u00015", - "bmarino": "//www.submarino.com.br/busca?conteudo=\u0002\u00010", - "bnet": "http://www.tunnelsup.com/subnet-calculator?ip=\u0002 \u00017", - "bnautica": "http://subnautica.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "btlepatterns": "http://subtlepatterns.com/?q=\u0002\u00010", - "bverse": "//searchvoat.co/subverses/?q=\u0002\u00014", - "conlavite": "http://www.suconlavite.it/?s=\u0002\u00010", - "curi": "//sitecheck.sucuri.net/results/\u0002\u00010", - "doc": "http://www.sudoc.abes.fr//DB=2.1/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=RLV&TRM=\u0002\u000111", - "domod": "http://sudomod.com/?s=\u0002\u00010", - "ivicolissimo": "http://www.colissimo.fr/portail_colissimo/suivre.do?language=fr_FR&parcelnumber=\u0002\u00010", - "ivicourrier": "http://www.csuivi.courrier.laposte.fr/suivi/index?id=\u0002#\u00010", - "lekha": "http://search.sulekha.com/sulekhasearch.aspx?txtsearch=\u0002\u00010", - "lit": "http://www.sulit.com.ph/index.php/classifieds+directory/q/\u0002\u00010", - ".me": "//www.serialupdates.me/?s=\u0002\u00010", - "per": { - "\u0010": "//supermarket.chef.io/cookbooks?utf8=%E2%9C%93&q=\u0002\u00010", - "d": { - "\u0010": "http://busca.superdownloads.com.br/busca/\u0002.s1.html\u00010", - "ownloads": "http://busca.superdownloads.com.br/busca/\u0002.s1.html\u00010" - }, - "coachtalk": "http://supercoachtalk.com/?s=\u0002\u00010", - "physique": "//www.google.fr/search?q=site:www.superphysique.org+\u0002\u00010", - "store": "//www.realcanadiansuperstore.ca/search/?search-bar=\u0002\u00010", - "stropdas": "http://superstropdas.nl/?s=\u0002\u00010", - "user": "http://superuser.com/search?q=\u0002\u00015" - }, - "rplus": "//www.surplustraders.net/catalogsearch/advanced/result/?name=\u0002\u00010", - "rvey": { - "\u0010": "//www.surveymonkey.com/dashboard/?term\u0002\u00010", - "gizmo": "//help.surveygizmo.com/help/search/?phrase=\u0002\u00010" - }, - "ttac": "//suttacentral.net/search?query=\u0002\u00010", - "tysisku": "http://mw.lojban.org/extensions/ilmentufa/i/en/index.html#sisku/\u0002\u00017", - "who": "//stanford.rimeto.io/search/\u0002\u00010" - }, - "v": { - "b": "http://www.svb.com/searchresults.aspx?term=\u0002\u00010", - "d": { - "e": "//translate.google.com/#sv/de/\u0002\u00010", - "\u0010": "http://www.svd.se/search.do?q=\u0002\u00010" - }, - "g": { - "\u0010": "//developer.mozilla.org/en-US/search?q=\u0002&topic=svg\u00015", - "repo": "//www.svgrepo.com/vectors/\u0002/\u00019" - }, - "r": "//sverigesradio.se/sida/sok.aspx?q=\u0002 \u00010", - "s": "//www.synonymer.se/sv-syn/\u0002\u00017", - "t": { - "n": "http://www.svt.se/search/?q=\u0002\u00010", - "p": "http://www.svtplay.se/sok?q=\u0002\u00010", - "\u0010": "http://www.svtplay.se/sok?q=\u0002\u00010" - }, - "\u0010": "//voat.co/v/\u0002\u00010", - "w": { - "e": "//es.stardewvalleywiki.com/ \u0002\u00010", - "\u0010": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u000178" - }, - "ao": "//svenska.se/tre/?sok=\u0002\u000133", - "en": { - "\u0010": "//translate.google.com/#sv/en/\u0002\u000151", - "ska": "//svenska.se/tre/?sok=\u0002&pz=1\u000124" - }, - "pt": "//translate.google.se/#sv/pt/\u0002\u00010", - "artling": "http://www.svartling.net/search?q=\u0002\u00010", - "help": "//help.sitevision.se/SiteVision_4_0/searchhelp.html?query=\u0002\u00010" - }, - "w": { - "i": { - "\u0010": "http://www.swi-prolog.org/search?for=\u0002\u00010", - "ft": "//developer.apple.com/search/?q=\u0002\u000188", - "pl": "http://www.swi-prolog.org/pldoc/search?for=\u0002&in=all&match=summary\u00010", - "ssbib": "//www.swissbib.ch/Search/Results?lookfor=\u0002&type=AllFields\u00010", - "sscows": "//swisscows.com/?query=\u0002\u000129", - "sspost": "//www.post.ch/EasyTrack/submitParcelData.do?formattedParcelCodes=\u0002\u00010" - }, - "\u0010": "//simple.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000111", - "ag": { - "\u0010": "//forum.shopware.com/search?Search=\u0002\u00010", - "bucks": "//swagbucks.com/?q=\u0002\u00010" - }, - "ap": { - "\u0010": "//swappa.com/search?q=\u0002\u00015", - "pa": "//swappa.com/search?q=\u0002\u00015" - }, - "db": "http://www.spaghetti-western.net/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "tl": "http://swtl.pt/web/index.php?route=product/isearch&search=\u0002\u00010", - "tr": "//www.sweetwater.com/store/search.php?s=\u0002\u00016", - "alter": "http://www.swalter.com/catalogsearch/result/?q=\u0002\u00010", - "ars": "http://summonerswar.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "arajya": "//swarajyamag.com/search?q=\u0002\u00010", - "eetsearch": "http://sweetsearch.com/search?q=\u0002\u00010", - "eetwater": "http://www.sweetwater.com/store/search.php?s=\u0002\u000185", - "oop": { - "\u0010": "//www.swoop.ge/search?query=\u0002\u00010", - "ge": "//www.swoop.ge/search?query=\u0002\u00010" - }, - "orks": "http://searchworks.stanford.edu/?utf8=✓&search_field=search&q=\u0002\u00010", - "tsearch": "http://www.sweetsearch.com/search?q=\u0002\u00010", - "wiki": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002\u000130" - }, - "x": { - "\u0010": "http://stackexchange.com/search?q=\u0002 \u000117", - "sw": "//schedule.sxsw.com/2019/search?q=\u0002\u00010" - }, - "y": { - "\u0010": "http://words.bighugelabs.com/\u0002\u00010", - "m": { - "b": { - "\u0010": "//www.symbolab.com/solver/step-by-step/\u0002\u000126", - "olab": "//www.symbolab.com/solver/step-by-step/\u0002\u000126", - "olhound": "http://symbolhound.com/?q=\u0002\u00010" - }, - "\u0010": "http://symbolhound.com/?q=\u0002\u00010", - "py": "http://www.sympygamma.com/input/?i=\u0002\u00010", - "antec": "//www.symantec.com/search?hiddenq=Pedroerkul&q=\u0002&searchJson={%22filter%22:[],%22startPage%22:1,%22start%22:0,%22sort%22:%22score%22}\u00010", - "fony": "http://symfony.com/search?q=\u0002\u00010", - "olab": "//www.symbolab.com/solver/step-by-step/\u0002\u000126" - }, - "n": { - "f": "http://www.crisco.unicaen.fr/des/synonymes/\u0002\u000129", - "o": { - "\u0010": "http://www.synonymo.fr/syno/\u0002\u00016", - "niem": { - "\u0010": "http://synoniemen.net/index.php?zoekterm=\u0002\u00010", - "en": "http://synoniemen.net/index.php?zoekterm=\u0002\u00010" - }, - "nym": { - "a": "http://www.slovnik-synonym.cz/web.php/hledat?typ_hledani=prefix&cizi_slovo=\u0002\u00010", - "e": { - "\u0010": "http://www.crisco.unicaen.fr/des/synonymes/\u0002\u000129", - "r": "//www.synonymer.se/sv-syn/\u0002\u00017", - "s": "http://synonymes.com/resultats.php?mot=\u0002\u00010" - }, - "s": "http://thesaurus.com/browse/\u0002\u000188", - "\u0010": "http://www.thesaurus.com/browse/\u0002 \u0001187" - } - }, - "\u0010": "http://thesaurus.com/browse/\u0002\u000188", - "de": "http://synonyme.de/\u0002/\u00016", - "pl": "//www.synonimy.pl/synonim/\u0002\u00010", - "apse": "//www.synapse.org/#!Search:\u0002 \u00010", - "cme": "//sync.me/search/?number=\u0002\u00010" - }, - "s": { - "k": "//www.stuffyoushouldknow.com/search.php?terms=\u0002\u00010", - "\u0010": "http://www.eki.ee/dict/sys/index.cgi?Q=\u0002&F=M&C06=en\u00010", - "ef": "http://www.systranet.com/fr/fr/dictionary/english-french/\u0002?\u00010", - "fe": "http://www.systranet.com/fr/fr/dictionary/french-english/\u0002?\u00010", - "ensw": "http://www.systranet.com/fr/fr/dictionary/english-swedish/\u0002?\u00010", - "swen": "http://www.systranet.com/fr/fr/dictionary/swedish-english/\u0002?\u00010", - "tembolaget": "http://www.systembolaget.se/?searchquery=\u0002\u00010", - "temet": "//www.systembolaget.se/Sok-dryck/?searchquery=\u0002\u00010", - "tranet": "http://www.systranet.com/translate?text=\u0002\u00010" - }, - "w": "http://www.shopyourway.com/search/products?q=\u0002\u00010", - "fr": "http://www.synonymes.com/resultats.php?mot=\u0002\u00010", - "ear": "//startpage.com/do/metasearch.pl?query=\u0002&with_date=y\u00015" - }, - "z": { - "n": { - "s": { - "\u0010": "http://slovnik.seznam.cz/?q=\u0002\u000136", - "de": "http://slovnik.seznam.cz/de/?q=\u0002\u00013", - "fr": "//slovnik.seznam.cz/fr-cz/?q=\u0002\u00014" - }, - "\u0010": "http://search.seznam.cz/?q=\u0002\u00019" - }, - "\u0010": "http://suche.sueddeutsche.de/news?search=\u0002\u000112", - "otar": "//www.szotar.net/mind/\u0002/\u000110", - "pravy": "//www.seznam.cz/zpravy/hledani?q=\u0002&search--active=1\u00010", - "taki": "http://szotar.sztaki.hu/search?searchWord=\u0002\u000111" - }, - "42": "//slice42.com/?s=\u0002\u00010", - "&m": "//st-sm.com/sante-et-minceur/en/search?s=\u0002\u00010", - "qa": "//www.sqa.org.uk/pastpapers/findpastpaper.htm?subject=\u0002\u00013", - "qf": { - "a": "http://squarefaction.ru/main/search/google?searchQuery=\u0002\u00010", - "\u0010": "//community.bistudio.com/wiki?search=\u0002\u00019" - }, - ".fyapp": "//apps.shopify.com/search?q=\u0002&st_source=\u000114", - "-on": "//duckduckgo.com/?q=\u0002&kp=1\u00010", - "-off": "//duckduckgo.com/?q=\u0002&kp=-2\u00018", - "qlsh": "http://sql.sh/?s=\u0002&submit=Rechercher\u00010", - "qlalchemy": "http://www.sqlalchemy.org/docs/search.html?q=\u0002&check_keywords=yes&area=default\u000116", - "qlite": "//www.sqlite.org/search?s=d&q=\u0002\u000113", - "qprofessional": "http://www.sqprofessional.com/?q=\u0002\u00010", - "quidmag": "//squidmag.ink/?s=\u0002\u00010", - "_user": "//scratch.mit.edu/users/\u0002\u00010" - }, - "$": "//stockflare.com/#stocks/$\u0002 \u00010", - "t": { - "a": { - "b": { - "\u0010": "http://www.911tabs.com/search.php?search=\u0002\u00015", - "s": { - "b": "http://www.ultimate-guitar.com/search.php?search_type=band&value=\u0002\u00010", - "\u0010": "http://www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u000132", - "cout": "http://www.tabscout.com/?action=search&query=\u0002\u00010" - }, - "4u": "http://www.tab4u.com/resultsSimple?tab=songs&type=song&q=\u0002\u00010", - "crawler": "http://tabcrawler.com/search/\u0002\u00010", - "leau": "//www.tableau.com/search#q=\u0002\u00010", - "room": "//www.tabroom.com/index/search.mhtml?search=\u0002\u00010" - }, - "l": { - "g": "http://tiger-algebra.com/drill/\u0002/\u00010", - "\u0010": "http://theanarchistlibrary.org/search?query=\u0002\u00010", - "ky": "//talky.io/\u0002\u00010", - "aios": "http://talaios.net/?s=\u0002\u00010", - "kgr": "http://www.talkgraphics.com/search.php?searchid=\u0002:\u00010" - }, - "m": "//markets.theaustralian.com.au/shares/\u0002\u00010", - "n": { - "\u0010": "//www.theaustralian.com.au/search-results?q=\u0002\u00010", - "ks": "http://www.tanks-encyclopedia.com/?s=\u0002\u00010", - "um": "http://www.tanum.no/tanum/search/search.action?query=\u0002\u00010", - "demtech": "//tandemtech.be/search?q=\u0002\u00010", - "gorin": "http://tangorin.com/examples/\u0002\u00014", - "ishq": "//www.tanishq.co.in/search-result/\u0002\u00010", - "uki": "http://tanuki.pl/szukaj/\u0002\u00010", - "zil": "http://tanzil.net/#search/quran/\u0002\u00010" - }, - "p": { - "\u0010": "http://tappedout.net/search/?q=\u0002\u00010", - "astic": "//tapastic.com/search/SERIES/list?query=\u0002\u00010", - "estry": "http://tapestry.apache.org/search.html?q=\u0002\u00010", - "ology": "//www.tapology.com/search?term=\u0002\u000118", - "wage": "//tapwage.com/search?q=\u0002\u00010" - }, - "r": { - "\u0010": "http://www.taringa.net/buscar/?q=\u0002\u00015", - "dis": "http://tardis.wikia.com/wiki/Special:Search?search=\u0002\u000163", - "geo": "http://mapa.targeo.pl/\u0002\u00010", - "get": { - "\u0010": "http://www.target.com/s?searchTerm=\u0002\u0001357", - "au": "//www.target.com.au/search?text=\u0002\u00010" - }, - "inga": "http://www.taringa.net/buscar/?q=\u0002&\u00010", - "kov": "//escapefromtarkov.gamepedia.com/index.php?search=\u0002\u000141" - }, - "s": { - "\u0010": "http://tasvideos.org/Search.html?key=\u0002 \u000123", - "te": { - "\u0010": "http://www.taste.com.au/search-recipes/?q=\u0002\u00010", - "kid": "http://www.tastekid.com/like/\u0002\u00010", - "line": "http://www.tasteline.com/ReceptSok/\u0002\u00010" - } - }, - "\u0010": "http://www.tripadvisor.com/Search?q=\u0002 \u000141", - "w": { - "k": "//ta.wikipedia.org/w/index.php?search= \u0002&title=%E0%AE%9A%E0%AE%BF%E0%AE%B1%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AF%81%3ASearch&go=%E0%AE%9A%E0%AF%86%E0%AE%B2%E0%AF%8D\u00010", - "\u0010": "//www.tacklewarehouse.com/searchresults.html#search=products&searchtext=\u0002\u00010" - }, - "x": { - "i": "//www.taxi.it/?s=\u0002\u00010", - "\u0010": "http://isittaxed.ca/search.php?q=\u0002\u00010" - }, - "z": "http://www.taz.de/!s=\u0002/\u000121", - "al": { - "\u0010": "//taaladvies.net/taal/advies/zoek.php?q=\u0002\u00010", - "advies": "//taaladvies.net/taal/advies/zoek.php?q=\u0002\u00010" - }, - "gi": { - "\u0010": "//www.tagesanzeiger.ch/service/suche/suche.html?date=alle&order=date&key=\u0002\u00010", - "nfo": { - "\u0010": "//taginfo.openstreetmap.org/search?q=\u0002\u000146", - "ch": "http://taginfo.openstreetmap.ch/search?q=\u0002\u00010" - } - }, - "id": "//www.therapistaid.com/search?query=\u0002\u00010", - "in": "//www.tripadvisor.in/Search?q=\u0002\u00010", - "it": "//www.tripadvisor.it/Search?q=\u0002\u00010", - "ko": { - "\u0010": "http://takoboto.jp/?q=\u0002\u00010", - "boto": "http://takoboto.jp/?q=\u0002\u00010" - }, - "to": { - "\u0010": "//tatoeba.org/sentences/search?query=\u0002\u00010", - "eba": "http://tatoeba.org/sentences/search?query=\u0002\u000120", - "ebla": "http://tatoeba.org/sentences/search?query=\u0002\u000120" - }, - "uk": "//www.tripadvisor.co.uk/Search?q=\u0002\u00010", - "cmed": "//tactical-medicine.com/search?q=\u0002\u00010", - "cojohns": "//www.tacojohns.com/?s=\u0002\u00010", - "cticalguru": "//thetacticalguru.com/?s=\u0002\u00010", - "ddlr": "http://taddlr.com/de/?s=\u0002\u00010", - "fesa": "//www.tafesa.edu.au/search-results?indexCatalogue=all&searchQuery=\u0002\u00010", - "gesschau": "http://www.tagesschau.de/suche2.html?query=\u0002\u000188", - "geswoche": "//www.tageswoche.ch/search/?q=\u0002\u00010", - "gfinder": "//tagfinder.herokuapp.com/search?query=\u0002\u00010", - "ils": "//tails.boum.org/ikiwiki.cgi?P=\u0002\u00010", - "kealot": "http://www.takealot.com/all/?qsearch=\u0002\u000113", - "obao": "//s.taobao.com/search?q=\u0002\u000190", - "yda": "http://www.taydaelectronics.com/catalogsearch/result/?q=\u0002\u00010" - }, - "b": { - "a": { - "\u0010": "//www.thebluealliance.com/search?q=\u0002\u0001121", - "ddons": "//addons.thunderbird.net/en-US/thunderbird/search/?q=\u0002\u00010" - }, - "c": "http://www.tibia.com/community/?subtopic=characters&name=\u0002\u00010", - "d": { - "e": "http://www.testberichte.de/d/search.php?searchstr=\u0002\u00010", - "\u0010": "//www.bookdepository.com/search?searchTerm=\u0002&search=Find+book\u00018" - }, - "n": "//www.tbn.org/search?s=\u0002\u00010", - "\u0010": "http://www.olx.co.id/halaman/mencari/\u0002/search\u00018", - "io": "http://www.treccani.it/biografie/?q=\u0002\u00010", - "btwiki": "http://bigbangtheory.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00010", - "ooks": "//www.thriftbooks.com/browse/?b.search=\u0002#b.oos\u00016", - "uff": "http://www.technobuffalo.com/search-results/?cx=partner-pub-2551798495402703%3Ad3m0wbhqu0s&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&sa=Search&siteurl=www.technobuffalo.com%2F&ref=&ss=975j318069j4\u00010" - }, - "c": { - "e": "//www.thecanadianencyclopedia.ca/en/search?search=\u0002\u00010", - "h": { - "i": "//www.tchibo.de/search?query=\u0002\u00010", - "\u0010": "//www.teachingchannel.org/search?q=\u0002\u00010" - }, - "l": "http://wiki.tcl.tk/_/search?S=\u0002&_charset_=UTF-8\u00010", - "p": "http://conservativepapers.com/?s=\u0002\u00010", - "s": "http://www.statutes.legis.state.tx.us/SearchResults.aspx?CP=1&Code=ZZ&Phrase=\u0002\u00010", - "\u0010": "http://techcrunch.com/search/\u0002\u000114", - "u": "http://thecubicle.us/advanced_search_result.php?search_in_description=0&keywords=\u0002\u00010", - "v": "//theconversation.com/global/search?utf8=✓&q=\u0002\u00015", - "db": "//www.tradingcarddb.com/Search.cfm?SearchCategory=Baseball&cx=partner-pub-2387250451295121%3Ahes0ib-44xp&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002\u00010", - "gp": { - "\u0010": "http://shop.tcgplayer.com/productcatalog/product/show?newSearch=false&ProductType=All&IsProductNameExact=false&ProductName=\u0002\u000178", - "layer": "http://store.tcgplayer.com/magic/product/show?cardname=\u0002\u000110" - }, - "ol": "//www.todocoleccion.net/buscador?bu=\u0002\u00010", - "rf": "http://tcrf.net/index.php?search=\u0002\u000192", - "freview": "//www.thechristianfilmreview.com/?s=\u0002\u00010", - "net": "http://tedcurran.net/?s=\u0002\u00010", - "ode": "http://www.tcodesearch.com/tcodes/search?q=\u0002\u00010" - }, - "d": { - "b": { - "\u0010": "//thronesdb.com/find?q=\u0002\u00010", - "ank": "//www.tdbank.com/CustomerService/search-results.aspx?q=\u0002\u00010" - }, - "g": "http://www.tdg.ch/services/recherche/?order=date&q=\u0002&submitSearch=Chercher&date=alle\u00010", - "k": "//sozluk.gov.tr/?kelime=\u0002\u000173", - "\u0010": "http://www.timeanddate.com/search/results.html?query=\u0002\u000118", - "t": "//tarotdetiziana.com/?s=\u0002\u00010", - "canada": "//www.tdcanadatrust.com/search/index.jsp?query=\u0002&language=en&site=td_tdct_tdcb_en\u00010", - "egr": "http://www.ulisses-regelwiki.de/index.php/search.html?keywords=\u0002\u00010", - "notes": "//www.tdstructurednotes.com/snp/searchByKeyword.action?criteria.keyword=\u0002\u00010" - }, - "e": { - "c": { - "h": { - "\u0010": "http://technxt.net/?s=\u0002\u00017", - "2days": "http://tech2days.com/?q=\u0002:\u00010", - "copp": "//techcopp.com/?s=\u0002\u00010", - "crunch": "http://techcrunch.com/search/\u0002\u000114", - "dai": "//techdai.info/?s=\u0002\u00010", - "dirt": "http://www.techdirt.com/search.php?site=&q=\u0002\u00010", - "geek": "//techgeek.com.au/?s=\u0002\u00010", - "ified": "http://techified-news.blogspot.co.uk/\u0002 uds-search-results\u00010", - "info": "//techinfoeasy.blogspot.com/search?q=\u0002\u00010", - "monk": "//code.kx.com/q/search?query=\u0002\u00010", - "net": { - "\u0010": "http://social.technet.microsoft.com/search/en-us/?query=\u0002\u00010", - "lib": "http://social.technet.microsoft.com/search/en-us/?query=\u0002#refinementChanges=85\u00010" - }, - "news": "//www.techiitalks.com/\u0002\u00010", - "nikdirekt": "http://www.technikdirekt.de/search?sSearch=\u0002\u00010", - "nobyte": "//www.technobyte.org/?s=\u0002\u00010", - "posts": "//techposts.org/?s=\u0002\u00010", - "radar": "//www.techradar.com/search?searchTerm=\u0002\u00010", - "rights": "http://techrights.org/wiki/index.php/Special:Search?search=\u0002&fulltext=Search\u00010", - "spot": "//www.techspot.com/search/?cx=partner-pub-7395890353660701%3Aj5claj-6kfy&cof=FORID%3A11&ie=UTF-8&q=\u0002\u00010", - "tips4u": "http://www.techtips4u.com/?s=\u0002\u00010", - "tudo": "http://www.techtudo.com.br/busca/?q=\u0002\u00010", - "vorm": "//techvorm.com/?s=\u0002\u00010", - "-wd": "http://www.tech-wd.com/wd/?s=\u0002\u00010" - }, - "\u0010": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Fwww.ecologicalcitizen.net%2F&ia=web\u00010", - "mint": "//www.tecmint.com/search/?cx=partner-pub-2601749019656699%3A2173448976&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.tecmint.com%2F&ref=duckduckgo.com%2F&ss=3875j2780811j15\u00010", - "mundo": "//www.tecmundo.com.br/busca?q=\u0002\u00010", - "noblog": "//tecnoblog.net/?s=\u0002\u000134" - }, - "d": { - "i": "http://www.tedi-shop.com/catalogsearch/result/?q=\u0002\u00010", - "\u0010": "//www.ted.com/search?q=\u0002\u00018", - "ed": "//ed.ted.com/search?utf8=✓&qs=\u0002\u00010" - }, - "i": "http://www.tei-c.org/?s=\u0002\u00010", - "k": { - "n": { - "o": { - "\u0010": "http://teknosains.com/search?q=\u0002:\u00010", - "fiyat": "http://www.teknofiyat.com/?search=\u0002\u00010", - "seyir": "//teknoseyir.com/?s=\u0002\u00010" - }, - "\u0010": "//www.teknologimasakini.com/search?q=\u0002&max-results=8\u00010" - }, - "\u0010": "//www.tek.com/search?keywords=\u0002\u00010", - "eten": "http://teketen.com/?s=\u0002&submit=Search\u00010", - "mag": "http://www.teknikmagasinet.se/sokresultat?CMS_SearchString=\u0002\u00010", - ".no": "//www.tek.no/sok?query= \u0002\u00010", - "stowo": "http://www.tekstowo.pl/szukaj,wykonawca,\u0002 ,tytul,\u0002.html\u00010" - }, - "l": { - "\u0010": "http://yellowpages.superpages.com/listings.jsp?C=\u0002&CS=L&MCBP=true&search=Find+It&SRC=&STYPE=S&SCS=&channelId=&sessionId=\u00013", - "ch": "http://tel.search.ch/?q=\u0002\u00010", - "su": "http://www.telsu.fi/\u0002\u00010", - "efang": "http://wiki.telefang.net/index.php?search=\u0002\u00010", - "efonbuch": "http://www.dastelefonbuch.de/?pid=OpenSearch&cmd=search&kw=\u0002\u00010", - "egram": "//www.telegram.hr/?s=\u0002\u000118", - "egraaf": "http://www.telegraaf.nl/zoeken/\u0002\u00010", - "egraph": "//www.telegraph.co.uk/search.html?q=\u0002\u00010", - "erama": "http://www.telerama.fr/recherche/recherche.php?query=\u0002\u00010", - "etekst": "http://teletekst-data.nos.nl/webplus?p=\u0002\u00010", - "kku": "http://www.telkku.com/search?searchText=\u0002\u00010", - "search": "http://tel.search.ch/\u0002\u00010", - "stra": "//www.telstra.com.au/search/simple-search?inpSearch=\u0002&requestSiteId=personal&searchFormSubmited=Yes\u00010" - }, - "n": { - "a": "http://www.tennisabstract.com/cgi-bin/player.cgi?p=\u0002\u00010", - "c": "http://www.treccani.it/enciclopedia/tag/\u0002/\u00010", - "\u0010": "//translate.google.com/?hl=en&tab=TT#auto/en/\u0002\u000171", - "or": "//tenor.com/search/\u0002\u0001462", - "kijp": "http://www.tenki.jp/search/zip/?keyword=\u0002\u00014", - "sorflow": "//www.tensorflow.org/s/results/?q=\u0002\u00010" - }, - "o": "//teonanacatl.org/search/1/?q=\u0002\u00010", - "r": { - "a": { - "\u0010": "http://tera.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "t": "//teratail.com/questions/search?q=\u0002&conditions=and\u00010", - "data": "//www.teradata.com/Search?SearchText=\u0002\u00010" - }, - "p": "http://brettterpstra.com/search/?q=\u0002\u00010", - "\u0010": "//extensions.typo3.org/?L=0&id=1&tx_solr[q]=\u0002\u000133", - "rg": "http://terraria.gamepedia.com/index.php?search=\u0002\u000131", - "mania": "http://www.termania.net/iskanje?query=\u0002&SearchIn=All\u00010", - "mcat": "//www.termcat.cat/cercaterm/\u0002?type=basic\u00010", - "mium": "http://www.btb.termiumplus.gc.ca/tpv2alpha/alpha-eng.html?srchtxt=\u0002\u00010", - "raria": "//terraria.gamepedia.com/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u0001437" - }, - "s": { - "\u0010": "//translate.google.com/?hl=es&tab=TT#auto/es/\u0002\u000172", - "t": { - "\u0010": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=\u0002\u00010", - "i": "//testi.xyz/results/?q=\u0002\u00010", - "berichte": "http://www.testberichte.de/d/search.php?searchstr=\u0002&submit=Suchen\u00010" - }, - "co": "http://www.tesco.com/groceries/product/search/default.aspx?searchBox=\u0002\u000145", - "larati": "//www.teslarati.com/?s=\u0002\u00010", - "oro": "//tesoro.pr/busqueda?q=\u0002\u00016", - "wiki": "http://elderscrolls.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "\u0010": "http://www.treccani.it/enciclopedia/tag/\u0002/\u00010", - "u": "http://eur-lex.europa.eu/search.html?wh0=DN%3D12012M*&lbStatus=ALL&qid=1459001887262&DTS_DOM=EU_LAW&ARTICLE_NUM=\u0002&treatyStatus=ARTICLE_NUMBER&type=advanced&lang=en&SUBDOM_INIT=TREATIES&legalCelex=TEU_2012&DTS_SUBDOM=TREATIES\u00010", - "x": { - "\u0010": "http://tex.stackexchange.com/search?q=\u0002\u00010", - "se": "http://tex.stackexchange.com/search?q=\u0002\u00010", - "ty": "http://texty.krestys.lt/paieska.php?t=\u0002\u00010", - "doc": "http://texdoc.net/pkg/\u0002\u000145", - "tise": "//www.textise.net/showText.aspx?strURL=\u0002\u00016", - "tileschool": "//www.textileschool.com/?s=\u0002\u00010", - "ture": "//duckduckgo.com/?q=\u0002+texture&iax=images&ia=images\u00010" - }, - "amliquid": "http://www.teamliquid.net/forum/search.php?q=\u0002\u00010", - "amsnap": "http://duckduckgo.com/?q=\u0002+site:teamsnap.com\u00010", - "arma": "http://www.tearma.ie/Search.aspx?term=\u0002\u00010", - "flo": "//www.tensorflow.org/s/results/?q=\u0002\u00010", - "ma18": "//tema18.blogspot.com/search?q=\u0002\u00013", - "matimi": "//www.tematimi.com/ara&search=\u0002\u00010", - "mplate": "//en.wikipedia.org/wiki/Template:\u0002\u00010", - "mpmail": "//temp-mail.org/\u0002/\u000135", - "-st": "//te-st.ru/?s=\u0002\u00010", - "wiki": "//te.wikipedia.org/w/index.php?search=\u0002\u00010", - "zaurs": "http://tezaurs.lv/#/sv/?\u0002\u00015" - }, - "f": { - "2": { - "r": "//www.reddit.com/r/tf2/search?q=\u0002&restrict_sr=on\u00010", - "\u0010": "http://wiki.teamfortress.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001113", - "bp": "http://backpack.tf/id/\u0002\u000122", - "wiki": "http://wiki.teamfortress.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001113" - }, - "d": { - "\u0010": "http://www.thefreedictionary.com/\u0002\u0001835", - "de": "http://de.thefreedictionary.com/\u0002\u000180", - "acronyms": "http://acronyms.thefreedictionary.com/\u0002\u00010", - "encyclopedia": "http://encyclopedia2.thefreedictionary.com/\u0002\u00010", - "financial": "http://financial-dictionary.thefreedictionary.com/\u0002\u00010", - "idioms": "http://idioms.thefreedictionary.com/\u0002\u0001105", - "legal": "http://legal-dictionary.thefreedictionary.com/\u0002\u00010", - "medical": "http://medical-dictionary.thefreedictionary.com/\u0002\u00014" - }, - "e": { - "s": "//forum.tfes.org/index.php?action=search2;search=\u0002\u00010", - "\u0010": "//ticketforevent.com/events/?q=\u0002\u00010" - }, - "l": { - "\u0010": "http://www.tfl.gov.uk/tfl/search/?keywords=\u0002\u000111", - "ow": "//www.tensorflow.org/s/results/?q=\u0002 \u00014" - }, - "s": "http://www.thermofisher.com/search/results?query=\u0002\u00013", - "\u0010": "//www.tensorflow.org/s/results/?q=\u0002\u00010", - "t": { - "\u0010": "//www.freethesaurus.com/\u0002\u00010", - "v": "http://www.teamfortress.tv/search?q=\u0002\u00014" - }, - "3d": "//free3d.com/3d-models/\u0002\u00010", - "opr": "//www.terraform.io/docs/providers/openstack/r/\u0002.html\u00010", - "wiki": "http://tfwiki.net/wiki/Special:Search?search=\u0002&go=Go\u000112" - }, - "i": { - "a": "//www.techinasia.com/search?query=\u0002\u00010", - "b": { - "\u0010": "http://opac.tib.uni-hannover.de/DB=1/CHARSET=UTF-8/SRCH?IKT=1016&TRM=\u0002\u00010", - "ia": { - "\u0010": "//secure.tibia.com/community/?subtopic=characters&name=\u0002\u00010", - "wiki": "http://tibia.wikia.com/wiki/Special:Search?query=\u0002\u00013" - }, - "ub": "http://opac.tib.uni-hannover.de/DB=1/SET=1/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010" - }, - "g": { - "\u0010": "http://www.tigsource.com/?s=\u0002\u00010", - "db": "http://db.tigsource.com/search?game[name]=\u0002\u00010", - "erdirect": "http://www.tigerdirect.com/applications/SearchTools/search.asp?keywords=\u0002\u00010", - "source": "http://www.tigsource.com/?s=\u0002\u00010", - "tag": "http://www.tigtagcarolina.com/search/?q=\u0002\u00010" - }, - "m": { - "\u0010": "http://duckduckgo.com/?q=timer+\u0002&ia=answer\u00010", - "e": { - "r": { - "\u0010": "http://duckduckgo.com/?q=timer+\u0002&ia=answer\u00010", - "ep": { - "\u0010": "//timerepublik.com/?q=\u0002\u00010", - "ublik": "//timerepublik.com/?q=\u0002\u00010" - } - }, - "\u0010": "http://www.unixtimestamp.org/?timestamp=\u0002\u000115", - "is": "//time.is/\u0002\u000125", - "killer": "//ideja.d2.si/results?q=\u0002\u00010", - "stamp": "http://unixtimestamp.com/?unixTimestampInput=\u0002\u00016", - "zone": "http://www.timeanddate.com/time/zones/\u0002\u000128" - }, - "hortons": "http://www.timhortons.com/ca/en/search/search-results.php?q=\u0002\u00010" - }, - "p": { - "\u0010": "//www.tipeee.com/creators?search=\u0002\u00010", - "pie": "//tippie.uiowa.edu/google-search?search=\u0002\u00010", - "ranks": "//www.tipranks.com/stocks/\u0002\u00013" - }, - "s": { - "s": "//tiss.tuwien.ac.at/adressbuch/adressbuch/suche?suchtext=\u0002\u00013", - "\u0010": "//time.is/\u0002\u000125" - }, - "t": "http://www.tradooit.com/info.php?q=\u0002 &btn-recherche.x=0&btn-recherche.y=0&langFrom=en&langTo=fr\u00010", - "\u0010": "http://tunein.com/search/?query=\u0002\u00017", - "ho": "http://opac.tib.uni-hannover.de/DB=5/LNG=DU/SID=40343eab-1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010", - "ki": "//tiki.vn/search?q=\u0002\u00016", - "nk": "//www.tinkercad.com/search?q=\u0002\u00010", - "vi": "//www.tivi.fi/haku/?q=\u0002\u00010", - "vo": "http://www3.tivo.com/tivo-tco/search.do?dispatch=simplesearch&searchFor=\u0002\u00010", - "cker": "//stockflare.com/#stocks/$\u0002 \u00010", - "ckets": "http://www.stubhub.com/search/doSearch?searchStr=\u0002&pageNumber=1&resultsPerPage=50&searchMode=event&start=0&rows=50\u00014", - "cketmaster": { - "\u0010": "//www.ticketmaster.com/search?q=\u0002\u00017", - "uk": "http://www.ticketmaster.co.uk/search?tm_link=tm_homeA_header_search&user_input=test&q=\u0002\u00010" - }, - "cketnetwork": "//www.ticketnetwork.com/en/search/?text=\u0002\u00010", - "cmate": "//www.ticmate.com/search?freeText=\u0002\u00010", - "dal": "//listen.tidal.com/search/\u0002\u00018", - "eba": { - "\u0010": "http://tieba.baidu.com/f?ie=utf-8&kw=\u0002\u000124", - "id": "//passport.baidu.com/v2/?regnamesugg&username=\u0002\u00010" - }, - "ketti": { - "\u0010": "http://www.tiketti.fi/tapahtumat#q=\u0002\u00010", - "en": "http://www.tiketti.fi/events#q=\u0002\u00010" - }, - "lde": { - "\u0010": "//llevatilde.es/palabra/\u0002\u00013", - "s": "//tildes.net/search?q=\u0002\u00010" - }, - "ndie": "//www.tindie.com/search/?q=\u0002\u00010", - "neye": "http://www.tineye.com/search?url=\u0002\u0001254", - "nglesa": "//www.tiendainglesa.com.uy/busqueda?0,0,\u0002,0\u00010", - "nhouse": "http://www.tinhouse.com/blog/search_results?cx=011725669505340441470%3Ak2fqsblnr5c&cof=FORID%3A9&ie=UTF-8&q=\u0002&sa=Search\u00010", - "nycards": "//tinycards.duolingo.com/search?query=\u0002\u00010", - "nypic": "http://tinypic.com/search.php?tag=\u0002\u00013", - "nyurl": "http://tinyurl.com/create.php?url=\u0002\u000112", - "ragegagnant": "http://tirage-gagnant.com/?s=\u0002\u00010", - "wimb": "http://www.thisiswhyimbroke.com/\u0002\u00010" - }, - "j": { - "p": "//tower.jp/search/item/\u0002\u00010", - "\u0010": "//www.tacojohns.com/?s=\u0002\u00010", - "ournal": "//tjournal.ru/search/\u0002\u00010" - }, - "l": { - "d": { - "\u0010": "http://wiki.teamliquid.net/dota2/index.php?search=\u0002\u000198", - "p": "http://www.google.com/cse?cx=017644269519104757279%3Agm62gtzaoky&q=\u0002\u00014", - "r": { - "\u0010": "//tldr.ostera.io/\u0002\u000151", - "legal": "//tldrlegal.com/search?q=\u0002 \u00010" - } - }, - "f": { - "i": "http://www.cnrtl.fr/definition/\u0002\u0001284", - "\u0010": "http://theladiesfinger.com/?s=\u0002\u00010" - }, - "h": "//thelasthunt.com/search?type=product&q=\u0002\u00010", - "i": { - "b": "//toolslib.net/search/projects/?q=\u0002\u00010", - "\u0010": "http://thelogicalindian.com/?s=\u0002\u00010" - }, - "k": "//tlk.io/\u0002\u00010", - "s": "//www.thorlabs.com/search/thorsearch.cfm?search= \u0002\u00016", - "\u0010": "http://www.teamliquid.net/forum/search.php?q=\u0002\u00010", - "w": "http://wiki.teamliquid.net/starcraft2/index.php?title=Special%3ASearch&search=\u0002\u000161", - "ld": "//www.thetrainline.com/live/departures/\u0002\u00010", - "enge": "//www.linguee.com/english-german/search?source=auto&query=\u0002\u000127", - "grm": "//web.telegram.org/#/im?p=\u0002 \u000136" - }, - "m": { - "e": { - "n": "http://www.transfermarkt.com/schnellsuche/ergebnis/schnellsuche?query=\u0002\u000122", - "\u0010": "//www.tme.eu/pl/katalog/?search=\u0002\u00013" - }, - "g": "//registry.terraform.io/search?q=\u0002\u000126", - "k": "//www.tematika.com/buscar.do?txtencoded=\u0002&idSeccionPropia=0&optSeleccionada=DuckDuckGo.com&idSeccion=0&seccionDeBusqueda=DuckDuckGo.com&texto=\u0002\u00010", - "n": "http://www.travelmath.com/nearest-airport/\u0002\u00010", - "r": "http://www.rezeptwelt.de/search/?rec_all=0&search=\u0002\u00010", - "\u0010": "http://www.trademe.co.nz/Browse/SearchResults.aspx?searchString=\u0002\u000137", - "t": "http://www.tinymixtapes.com/?search=\u0002\u00010", - "w": "//www.techmansworld.com/search?q=\u0002\u00010", - "z": "http://www.tmz.com/search/articles/\u0002/1/\u00013", - "an": "http://help.trello.com/search?query=\u0002\u00010", - "bw": "http://tmbw.net/wiki/Special:Search?search=\u0002&x=0&y=0\u000120", - "db": "//www.themoviedb.org/search?query=\u0002\u0001886", - "uk": "http://www.transfermarkt.co.uk/schnellsuche/ergebnis/schnellsuche?query=\u0002&x=0&y=0\u00013", - "all": "//list.tmall.com/search_product.htm?q=\u0002\u00010", - "ark": { - "\u0010": "http://trademarks.justia.com/search.php?q=\u0002\u00010", - "et": "//www.torn.com/imarket.php#/p=shop&step=shop&type=&searchname=\u0002\u00010" - }, - "blog": "//blog.trendmicro.com/?s=\u0002\u00010" - }, - "n": { - "a": "http://discovery.nationalarchives.gov.uk/results/r?_q=\u0002\u00010", - "p": "//thenounproject.com/search/?q=\u0002\u00014", - "s": "//thenerdystudent.com/?s=\u0002\u00010", - "\u0010": "//www.timesnownews.com/latest-news?search=\u0002\u00010", - "t": { - "\u0010": "http://webtracker.tnt.com/webtracker/tracking.do?requestType=GEN&searchType=CON&respLang=en&respCountry=US&sourceID=1&sourceCountry=ww&cons=\u0002\u00013", - "news": "//www.tntnews.net/?s=\u0002\u00010" - }, - "w": "//thenextweb.com/?q=\u0002\u00010", - "-annonces": "http://www.tunisie-annonce.com/search.asp?cx=partner-pub-4455074141785177%3Aabc2p7-5h3d&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&sa=Rechercher&siteurl=www.tunisie-annonce.com%2F&ref=&ss=1479j334475j10\u00010", - "bc1": "//tnbc1.com/?s=\u0002 \u00010", - "yims": "http://tny.im/yourls-api.php?action=shorturl&url=\u0002\u00010" - }, - "p": { - "c": "http://thepeoplescube.com/searchGoogle.php?cx=partner-pub-8404716009789025%3A4p2aqaojris&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=\u00013", - "h": "//paintedheirloom.com/search?q=\u0002\u00010", - "l": "http://www.torontopubliclibrary.ca/search.jsp?Ntt=\u0002\u00013", - "o": "http://tpo.nl/?s=\u0002\u00010", - "\u0010": "//thesaurus.plus/search?q=\u0002\u00010", - "t": "//www.teacherspayteachers.com/Browse/Search:\u0002\u00010", - "w": "//tweakers.net/pricewatch/zoeken/?keyword=\u0002\u000133", - "erth": "//www.transperth.wa.gov.au/Search-Results?Search=\u0002\u00010", - "press": "//themeparkpress.com/?s=\u0002\u00010" - }, - "r": { - "f": { - "\u0010": "http://www.rolexforums.com/tags.php?tag=\u0002\u00010", - "de": "http://www.transfermarkt.de/de/undefined/suche/ergebnis.html?quicksearch=\u0002&x=0&y=0\u00010", - "uk": "http://www.transfermarkt.co.uk/schnellsuche/ergebnis/schnellsuche?query=\u0002\u00010" - }, - "\u0010": "//translate.google.com/#auto/en/\u0002\u0001734", - "l": "http://theringlord.com/cart/shopdisplayproducts.asp?Search=Yes&Keyword=\u0002\u00010", - "n": { - "l": "//translate.google.com/#auto/nl/\u0002\u00010", - "\u0010": "//therealnews.com/?s=\u0002\u00010" - }, - "w": "http://wiki.travellerrpg.com/index.php?title=Special%3ASearch&search=\u0002\u00010", - "ad": { - "\u0010": "http://dictionary.reverso.net/french-english/\u0002\u00014", - "eme": "http://www.trademe.co.nz/Browse/SearchResults.aspx?searchString=\u0002\u000137", - "emachines": "//trademachines.com/search?phrase=\u0002 \u00010", - "emarks": "http://www.trademarkia.com/trademarks-search.aspx?tn=\u0002\u00010", - "era": "http://www.tradera.com/finding.mvc/itemlisting?header=true&search=\u0002\u000124", - "ingview": "//www.tradingview.com/chart/?symbol=\u0002\u000164" - }, - "ap": { - "\u0010": "//www.trappersreport.com/?q=\u0002\u00010", - "per": "http://www.trappersreport.com/?q=\u0002\u00010", - "ping": "//www.trappersreport.com/search/\u0002\u00013" - }, - "ef": "http://www.thesaurus.com/browse/\u0002\u0001329", - "ep": "//timerepublik.com/?q=\u0002\u00010", - "ip": { - "\u0010": "http://www.tripdatabase.com/search?criteria=\u0002\u00014", - "advisor": "http://www.tripadvisor.com/Search?q=\u0002&sub-search=Go\u000154", - "lea": "http://axisandallies.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00010", - "oto": "//www.tripoto.com/travel-guide/\u0002\u00010", - "sit": "//wiki.tripsit.me/index.php?search=\u0002\u00013", - "wire": "//www.tripwire.com/state-of-security?s=\u0002\u00010" - }, - "pl": "http://translatica.pl/szukaj/\u0002\u00010", - "ue": { - "\u0010": "//www.truecaller.com/search/in/\u0002\u00018", - "achievements": "//www.trueachievements.com/searchresults.aspx?search=\u0002\u000112", - "steam": "//truesteamachievements.com/searchresults.aspx?search=\u0002\u00014", - "trophies": "//www.truetrophies.com/searchresults.aspx?search=\u0002\u00010" - }, - "ack": { - "\u0010": "http://www.packagemapping.com/?action=track&tracknum=\u0002\u00017", - "r": "http://www.packagetrackr.com/track/?submit=&n=\u0002&c=\u000113", - "itdown": "http://www.trackitdown.net/search/keyword?q=\u0002\u00010" - }, - "acemyip": "http://tools.tracemyip.org/lookup/\u0002\u00010", - "aceroute": "http://network-tools.com/default.asp?prog=trace&host=\u0002\u00017", - "actorhouse": "//www.tractorhouse.com/listings/farm-equipment/for-sale/list/?fulltext=\u0002\u00010", - "aeger": "//www.traegergrills.com/recipes?types=RecipeDetail&term=\u0002\u00010", - "ail": { - "\u0010": "//www.trailandmountain.co.uk/search?q=\u0002\u00010", - "er": { - "\u0010": "http://www.traileraddict.com/search.php?sitesearch=www.traileraddict.com&q=\u0002\u00010", - "addict": "http://www.traileraddict.com/search/\u0002\u00010" - } - }, - "aining": "//trainingindustry.com/?s=\u0002\u00010", - "akt": "http://trakt.tv/search?utf8=%E2%9C%93&query=\u0002\u0001228", - "amper": "http://tramper.nz/?view=search&keywords=\u0002\u00010", - "ans": { - "\u0010": "//translate.google.com/?source=osdd#auto/en/\u0002\u00011658", - "nl": "//translate.google.com/#auto/nl/\u0002\u00010", - "fermarkt": "http://www.transfermarkt.de/schnellsuche/ergebnis/schnellsuche?query=\u0002&x=0&y=0\u000123", - "late": { - "\u0010": "//translate.google.com/#auto/en/\u0002\u0001734", - "de": "//translate.google.com/#auto/de/\u0002\u000192", - "nl": "//translate.google.com/#auto/nl/\u0002\u00010", - "site": "http://www.microsofttranslator.com/bv.aspx?from=&to=en&a=\u0002\u00019" - } - }, - "anz": "http://gizoogle.net/tranzizzle.php?search=\u0002&se=Go+Git+Dis+Shiznit\u00010", - "ash": { - "\u0010": "http://www.trashmail.de/?search=\u0002\u00010", - "wiki": "http://trashwiki.org/w/index.php?search=\u0002&title=Special:Search\u00010" - }, - "aumdeutung": "//traum-deutung.de/?s=\u0002\u00010", - "avel": { - "\u0010": "//thewelltravelledfamily.com/?s=\u0002\u00015", - "gator": "//www.travelgator.com/en/search/?locationquery=\u0002\u00010" - }, - "avis": "//travis-ci.org/search/\u0002\u00010", - "axsource": "//www.traxsource.com/search?term=\u0002\u00010", - "eccani": "http://www.treccani.it/vocabolario/tag/\u0002\u000189", - "ello": "//trello.com/search?q=\u0002\u000138", - "ends": { - "\u0010": "//www.google.com/trends/explore#q=\u0002\u000153", - "top": "http://trendstop.knack.be/nl/results.aspx?s1=\u0002\u00010" - }, - "enth": "//translate.google.com/#en/th/\u0002\u00010", - "ending": "//trendingimages.in/search/images/?q=\u0002\u00010", - "endmicro": "//www.trendmicro.com/en_us/common/cse.html#?cludoquery=\u0002\u00010", - "endyscooter": "http://trendyscooter.com/?route=product/search&search=\u0002\u00010", - "ictrac": "http://www.trictrac.net/recherche?query=\u0002\u00016", - "isquel": "http://trisquel.info/en/search/node/\u0002 & https://trisquel.info/en/search/node/\u0002\u00010", - "ivago": "//www.trivago.com/?sQuery=\u0002\u00010", - "iviaowl": "//triviaowl.com/?s=\u0002 \u00010", - "oll": "//www.trollandtoad.com/products/search.php?searchmode=basic&search_words=\u0002\u00010", - "ome": "//trome.pe/buscar/?query=\u0002\u00010", - "ope": { - "s": "http://allthetropes.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "\u0010": "//tvtropes.org/pmwiki/pmwiki.php/Main/\u0002\u000136" - }, - "opicalprice": "//tropicalprice.com/?query=\u0002\u00010", - "ouva": "//www.trouva.com/shop/search/\u0002\u00010", - "ove": "http://trove.nla.gov.au/result?q=\u0002 \u000119", - "ovaprezzi": "http://www.trovaprezzi.it/categoria.aspx?libera=\u0002&id=-1&prezzomin=&prezzomax=\u000153", - "rust": "http://www.grnpedia.org/trrust/result.php?gene=\u0002&species=human&confirm=0\u00010", - "ulia": "http://www.trulia.com/validate.php?tst=h&display=for+sale&search=\u0002&type=&min_price=min&max_price=max&min_num_beds=0&min_num_baths=0&min_size=0&submit_btn=SEARCH\u00014", - "ulytexan": "http://www.trulytexan.com/?\u0002\u00010", - "ump": "//twitter.com/search?q=from%3Arealdonaldtrump%20\u0002&src=typd\u00010", - "ustpilot": "//www.trustpilot.com/search?query=\u0002\u000117", - "yggehandel": "//www.tryggehandel.se/?s=\u0002\u00010" - }, - "s": { - "a": "http://www.techsupportalert.com/search/google?query=\u0002\u00010", - "c": { - "o": "//www.tractorsupply.com/tsc/search/\u0002\u00014", - "\u0010": "//www.theshoppingchannel.com/search/\u0002\u00013" - }, - "j": "http://www.thesinglesjukebox.com/?s=\u0002\u00010", - "r": "//www.thestudentroom.co.uk/search/?tsr-search-query=\u0002\u00010", - "\u0010": "http://www.turbosquid.com/Search/Index.cfm?keyword=\u0002\u000123", - "x": "//web.tmxmoney.com/company.php?qm_symbol=\u0002&locale=en\u00010", - "21": "//teeshirt21.com/shop/\u0002\u00010", - "in": "http://www.treccani.it/sinonimi/?q=\u0002\u00010", - "hirt": { - "s": "//www.teeterritory.com/search?q=\u0002\u00010", - "\u0010": "//www.tpop.fr/search?type=product&q=\u0002\u00010" - }, - "types": "//www.npmjs.com/search?q=%40types%2F\u0002\u00010" - }, - "t": { - "i": "http://www.tutti.ch/ticino?q=\u0002\u00010", - "r": { - "\u0010": "http://toontownrewritten.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "uyen": "http://truyendi.com/tim-kiem-truyen.html?q=\u0002\u00010" - }, - "s": "//www.triestetrasporti.it//?s=\u0002&lang=it\u00013", - "\u0010": "//www.texastribune.org/search/?q=\u0002\u000167", - "t": "//techterms.com/search?query=\u0002\u00010", - "v": "//www.twitch.tv/search?term=\u0002\u00012837", - "y": "//duckduckgo.com/tty/#q=\u0002\u00017", - "b-ita": "http://tatoeba.org/eng/sentences/search?query=\u0002&from=und&to=ita\u00010", - "books": "//books.google.com/talktobooks/query?q=\u0002\u00010" - }, - "+": "http://www.btb.termiumplus.gc.ca/tpv2alpha/alpha-fra.html?lang=fra&i=&index=alt&__index=alt&srchtxt=\u0002&comencsrch.x=0&comencsrch.y=0\u00010", - "\u0010": "http://www.thesaurus.com/browse/\u0002\u0001329", - "u": { - "b": { - "e": "//bit.tube/results?term=\u0002\u00016", - "\u0010": "//katalog.tub.tuhh.de/Search/Results?lookfor=\u0002&type=AllFields&limit=20&sort=relevance\u00010", - "afm": "http://fm.tuba.pl/artysta/\u0002\u00010" - }, - "c": "//duckduckgo.com/?q=\u0002+site%3Awww.tu-chemnitz.de\u00010", - "d": { - "a": "//www.tu-darmstadt.de/suche.de.jsp?q=\u0002\u00010", - "\u0010": "//www.tudelft.nl/en/search/?q=\u0002\u00010", - "ou": "http://so.tudou.com/nisearch.do?kw=\u0002\u00010", - "ogostoso": "http://www.tudogostoso.com.br/busca?q=\u0002\u00010" - }, - "g": "http://search.tugraz.at/search?q=\u0002&site=Alle&btnG=Suchen&client=tug_portal&output=xml_no_dtd&proxystylesheet=tug_portal&sitesearch=www.tugraz.at\u00010", - "j": "http://www.tujavortaro.net/?vorto=\u0002\u00010", - "m": { - "\u0010": "//www.tum.de/en/spezialseiten/search/?q=\u0002&sites=all\u00017", - "blr": "//www.tumblr.com/search/\u0002\u0001399", - "bview": "http://tumbview.com/\u0002/grid/\u00013" - }, - "r": { - "\u0010": "http://tureng.com/tr/turkce-ingilizce/\u0002\u0001389", - "bo": "//www.theturboforums.com/search/153518/?q=\u0002\u00010", - "eng": "http://tureng.com/tr/turkce-ingilizce/\u0002\u0001389", - "nstone": "http://myturnstone.com/?s=\u0002&lang=en\u00010" - }, - "t": { - "s": { - "\u0010": "http://hub.tutsplus.com/search?utf8=✓&view=grid&search%5Bkeywords%5D=\u0002\u00010", - "plus": "http://tutsplus.com/tutorials/search?utf8=%E2%9C%93&search[topic]=&search[terms]=\u0002&button=\u00010" - }, - "\u0010": "http://search.tut.by/?status=1&ru=1&encoding=1&page=0&how=rlv&query=\u0002\u00010", - "ti": { - "\u0010": "//www.tutti.ch/de/li/ganze-schweiz?q=\u0002\u000138", - "ch": "http://www.tutti.ch/ganze-schweiz?q=\u0002 \u00010" - }, - "anota": "//mail.tutanota.com/search/mail/LSWThzP--3-1?query=\u0002\u000182", - "news": "http://news.tut.by/search/?str=\u0002\u00010", - "orilio": "//www.tutorilio.com/?q=\u0002\u00010", - "tocitta": "//www.tuttocitta.it/mappe/\u0002\u00010" - }, - "\u0010": "//tu-dresden.de/@@search?SearchableText=\u0002\u00018", - "x": { - "\u0010": "http://linuxinthebox.company/?product_cat=&post_type=product&s=\u0002\u00010", - "db": "//tuxdb.com/section/db&page=0&search=\u0002\u00010" - }, - "hh": "//www.tuhh.de/tuhh/suche/suchergebnis.html?cx=013498366615220259019:ljc1ircsxvi&ie=utf8&hl=de&q=\u0002\u00010", - "po": "//duckduckgo.com/?q=\u0002+site%3Awww.tutorialspoint.com&ia=web\u00010", - "ffyproducts": "//www.tuffyproducts.com/search.aspx?searchterm=\u0002\u00010", - "ndra": "//www.tundra.com/search?q=\u0002\u00010", - "nef": { - "\u0010": "//www.tunefind.com/search/site?q=\u0002\u00017", - "ind": "//www.tunefind.com/search/site?q=\u0002\u00017" - }, - "nein": "http://tunein.com/search/?query=\u0002\u00017", - "nearch": "//tunearch.org/w/index.php?search=\u0002\u00010", - "nebat": "//tunebat.com/Search?q=\u0002\u000126", - "wlib": "//catalogplus.tuwien.ac.at/primo_library/libweb/action/dlSearch.do?queryfield=&x=0&y=0&institution=UTW&vid=UTW&tab=default_tab&search_scope=UTW&mode=Basic&indx=1&bulkSize=10&dum=true&highlight=true&pcAvailabiltyMode=false&prefLang=en_US&dummyChar=♥&query=any%2Ccontains%2C\u0002&displayField=title\u00010" - }, - "v": { - "2": "//search.tv2.dk/?query=\u0002&sort=relevance&page=1\u00010", - "3": "http://www.ccma.cat/tv3/alacarta/cercador/?items_pagina=15&perfil=rellevancia&profile=videos&text=\u0002\u00010", - "5": "http://www.tv5monde.com/?q=\u0002\u00010", - "a": { - "\u0010": "//tweakers.net/aanbod/zoeken/?keyword=\u0002\u00015", - "rt": "//bendodson.com/projects/itunes-artwork-finder/index.html?entity=tvSeason&country=us&query=\u0002\u00010" - }, - "d": { - "b": { - "\u0010": "//www.thetvdb.com/search?query=\u0002&l=en\u0001511", - "fr": "//www.thetvdb.com/search?q=\u0002&l=fr\u00010" - }, - "\u0010": "http://vampirediaries.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "i": { - "\u0010": "http://www.tvi24.iol.pt/pesquisa/\u0002 \u00010", - "ew": "//www.tradingview.com/chart/?symbol=\u0002\u000164" - }, - "l": "http://tvlanguedoc.com/search_gcse/?q=\u0002\u00010", - "p": "//www.tvp.pl/szukaj?query=\u0002\u00010", - "t": { - "\u0010": "http://tvtropes.org/pmwiki/search_result.php?q=\u0002\u00011974", - "hek": "http://tvthek.orf.at/search?q=\u0002\u00010", - "ropes": "http://tvtropes.org/pmwiki/search_result.php?cx=partner-pub-6610802604051523%3Aamzitfn8e7v&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&siteurl=tvtropes.org%2Fpmwiki%2Fpmwiki.php%2FMain%2FHomePage\u00011051" - }, - "\u0010": "http://www.tv.com/search?q= \u0002\u000161", - "nz": "//www.tvnz.co.nz/search?q=\u0002\u00010", - "oc": "http://www.treccani.it/vocabolario/tag/\u0002/\u000184", - "st": "http://www.tvshowtime.com/en/search?q=\u0002\u00010", - "4play": "//www.tv4play.se/s%C3%B6k/\u0002\u00014", - "com": "http://www.tv.com/search?q=\u0002\u00010", - "guide": "http://www.tvguide.com/search/index.aspx?keyword=\u0002\u00010", - "maze": "//www.tvmaze.com/search?q=\u0002\u000159", - "seriesfinale": "http://tvseriesfinale.com/?s=\u0002\u00010", - "spielfilm": "http://www.tvspielfilm.de/suche/?q=\u0002 \u00010" - }, - "w": { - "c": "//thewirecutter.com/?s=\u0002\u0001132", - "f": { - "\u0010": "//www.thewebflash.com/?s=\u0002\u00010", - "y": "http://www.theyworkforyou.com/search/?q=\u0002\u00010" - }, - "g": "//www.twitch.tv/directory/game/\u0002\u000181", - "l": { - "b": "//tweaklibrary.com/?s=\u0002\u00010", - "\u0010": "//twitter.com/search?f=tweets&vertical=news&q=\u0002\u0001207" - }, - "n": "//www.theweathernetwork.com/search?q=\u0002\u000118", - "p": { - "\u0010": "http://www.washingtonpost.com/newssearch/search.html?st=\u0002\u000129", - "w": "//tweakers.net/pricewatch/zoeken/?keyword=\u0002\u000133", - "ro": "//twpro.jp/search?word=\u0002\u00010" - }, - "\u0010": "//twitter.com/search?q=\u0002\u00017328", - "w": "http://witcher.gamepedia.com/index.php?search=\u0002\u000149", - "id": "//twitter.com/intent/user?user_id=\u0002\u00010", - "ig": "//twig.symfony.com/\u0002\u00010", - "it": { - "\u0010": "//twitter.com/search?q=\u0002\u00017328", - "ch": { - "c": { - "\u0010": "//twitch.tv/\u0002\u000125", - "hat": "//www.twitch.tv/\u0002/chat?popout=\u00010" - }, - "e": "//twitchemotes.com/search?query=\u0002\u00010", - "g": "//www.twitch.tv/directory/game/\u0002\u000181", - "\u0010": "//twitch.tv/\u0002\u000125", - "2steam": "http://tab-bot.net/botcheck?twitchname_botcheck=\u0002&submit_twitch=&steam_botcheck=\u00010", - "bots": "//twitchbots.info/check?username=\u0002\u00010", - "pop": "//player.twitch.tv/?volume=0.5&channel=\u0002\u00010" - }, - "tv": "//twit.tv/search/\u0002\u00010", - "ter": { - "s": "//twitter.com/\u0002\u000140", - "\u0010": "//twitter.com/search?q=\u0002\u00017328", - "user": "//twitter.com/\u0002\u000140" - } - }, - "rv": "//www.thewanderingrv.com/search/\u0002\u00010", - "eak": { - "\u0010": "//tweakers.net/zoeken/?keyword=\u0002\u00017", - "ers": "//tweakers.net/nieuws/zoeken/?keyword=\u0002\u0001103" - }, - "eet": "//mobile.twitter.com/search?q=\u0002\u000192", - "ich": "http://www.twitch.tv/search?query=\u0002 \u000121", - "iki": "http://trove.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "met": "//www.twitchmetrics.net/search?q=\u0002\u00010", - "user": "//twitter.com/search/users?q=\u0002\u00014" - }, - "x": { - "i": "http://www.ti.com/sitesearch/docs/universalsearch.tsp?searchTerm=\u0002\u00010", - "\u0010": "http://search2.tv-tokyo.co.jp/pc/?enc=UTF-8&q=\u0002\u00010" - }, - "y": { - "d": { - "a": { - "\u0010": "http://tyda.se/search?w=\u0002\u0001103", - "de": "http://tyda.se/search/\u0002?lang%5B0%5D=de&lang%5B1%5D=sv\u00010", - "la": "http://tyda.se/search/\u0002?lang%5B0%5D=la&lang%5B1%5D=sv\u00010" - }, - "\u0010": "http://tyda.se/search/\u0002?lang%5B0%5D=en&lang%5B1%5D=fr&lang%5B2%5D=de&lang%5B3%5D=es&lang%5B4%5D=la&lang%5B5%5D=nb&lang%5B6%5D=da&lang%5B7%5D=sv\u00010" - }, - "\u0010": "//www.youtube.com/results?search_query=\u0002\u00011113", - "ndale": "//www.tyndale.com/search?q=\u0002&f=\u00010", - "pescript": "http://duckduckgo.com/?q=\u0002+site:www.typescriptlang.org\u000112", - "po3": "//typo3.org/search/?tx_solr[q]=\u0002\u00010", - "url": "//tinyurl.com/create.php?source=indexpage&url=\u0002&submit=Make+TinyURL%21&alias= \u00010" - }, - "z": "http://www.timeanddate.com/worldclock/results.html?query=\u0002\u000137", - "2g": "http://www.time2game.be/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010", - "2w": "//\u0002.tor2web.org/\u00013", - "3n": "http://t3n.de/search?q=\u0002\u00010", - "åg": "//www.trafikverket.se/trafikinformation/tag/?&TrainOrStation=\u0002\u00010", - "ga": { - "\u0010": "//search.tga.gov.au/s/search.html?collection=tga-websites-web&query=\u0002&op=Search\u00010", - "te": "http://tolkiengateway.net/wiki/Special:Search?search=\u0002&go=Go\u000113" - }, - "gc": "http://www.thegreatcourses.com/search/result/?q=\u0002\u00010", - "gd": { - "b": "http://thegamesdb.net/search/?string=\u0002&function=Search\u00010", - "\u0010": "//tgd.kr/search?q=\u0002\u00010", - "ict": "//tangorin.com/words?search=\u0002\u00010" - }, - "ge": "//translate.ge/word/\u0002\u000128", - "gr": "http://tangorin.com/general/\u0002\u00010", - "gs": "//tgstation13.org/wiki//index.php?search=\u0002&title=Special%3ASearch\u00014", - "gt": { - "\u0010": "//www.target.com/s?searchTerm=\u0002\u000129", - "au": "//www.target.com.au/search?text=\u0002\u00010" - }, - "hb": "//thwiki.cc/%E7%89%B9%E6%AE%8A:%E6%90%9C%E7%B4%A2?search=\u0002&go=%E5%89%8D%E5%BE%80&searchToken=d3hpaqueyzu0cl5im2izrofz8\u00010", - "hg": { - "\u0010": "http://www.thingiverse.com/search?q=\u0002&sa=\u000153", - "w": "http://tonyhawkgames.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "hj": "//suche.thulb.uni-jena.de/Search/Results?lookfor=\u0002\u00010", - "hm": { - "e": "//www.thomann.de/es/search_dir.html?sw=\u0002&smcs=80cfba\u00010", - "\u0010": "http://www.thomann.de/de/search_dir.html?sw=\u0002\u00013", - "ods": "http://thmods.com/forum/search.php?keywords=\u0002\u00010" - }, - "hp": "http://www.huffingtonpost.com/search.php/?q=\u0002\u00010", - "hr": { - "\u0010": "//www.hollywoodreporter.com/search/\u0002\u00010", - "ee": "http://www.three.co.uk/Search/?q=\u0002\u00010", - "ead": "//threadreaderapp.com/search?q=\u0002\u000125", - "iftb": "//www.thriftbooks.com/browse/?b.search=\u0002\u00010", - "iftyfoods": "//www.thriftyfoods.com/search?k=\u0002\u00010", - "ive": "//thrivemarket.com/search/results?filter%5Bsearch%5D=\u0002\u00010", - "ustcurve": "http://www.thrustcurve.org/motorsearch.jsp?designation=\u0002\u00010" - }, - "hw": { - "\u0010": "http://en.touhouwiki.net/index.php?title=Special:Search&search=\u0002\u000139", - "ack": "//thwack.solarwinds.com/search.jspa?q=\u0002\u00010", - "iki": "http://en.touhouwiki.net/index.php?title=Special%3ASearch&search=\u0002\u000120" - }, - "ki": "//trakt.tv/search/imdb?query=\u0002\u00010", - "kk": { - "\u0010": "http://tradukka.com/translate/en/\u0002\u00010", - "2es": "http://tradukka.com/translate/es/\u0002\u00010", - "rlab": "http://tkkrlab.nl/wiki/Special:Search?search=\u0002&go=Go\u00010" - }, - "km": "http://trakt.tv/search/movies?q=\u0002\u00010", - "ko": "//trovu.komun.org/?q=\u0002&categories=general&language=en-US\u00010", - "ks": "http://trakt.tv/search/shows?q=\u0002\u00010", - "kw": "//www.thomas-krenn.com/de/wiki/Spezial:Suchergebnisseite?type=mediawiki_page&q=\u0002\u00010", - "oa": "//theorangealliance.org/teams/\u0002\u000121", - "of": "http://www.tolweb.org/tree/\u0002\u00010", - "oi": { - "\u0010": "http://timesofindia.indiatimes.com/topic/\u0002\u00010", - "con": "http://www.toicon.com/icons?query=\u0002\u00010" - }, - "ok": { - "\u0010": "http://tomeofknowledge.info/?q=\u0002\u00010", - "manni": "//www.tokmanni.fi/catalogsearch/result/?q=\u0002\u00010", - "obagus": "http://www.olx.co.id/halaman/mencari/\u0002/search\u00018", - "opedia": "//www.tokopedia.com/search?q=\u0002\u000128", - "yonoise": "http://www.tokyonoise.net/cerca.php?s=\u0002&p=1\u00010" - }, - "ol": { - "\u0010": "http://tolweb.org/tree/home.pages/search.html?q=\u0002&sa=Search\u00010", - "kien": { - "\u0010": "http://tolkiengateway.net/wiki/Special:Search?search=\u0002\u00019", - "gateway": "http://tolkiengateway.net/wiki/Special:Search?search=\u0002\u00019" - } - }, - "om": { - "e": "//te4.org/w/index.php?search=\u0002\u00010", - "\u0010": "//tomwoods.com/search/\u0002/\u00015", - "shw": "http://www.tomshardware.com/s/\u0002/\u00010", - "shardware": "http://www.tomshardware.com/s/\u0002\u00010" - }, - "on": { - "\u0010": "//tontonroger.org/?q=\u0002\u00010", - "ton": "//tontonroger.org/?q=\u0002\u00010", - "ymacx86": "//www.tonymacx86.com/search/48223690/?q=\u0002&o=date\u00010" - }, - "op": { - "l": "//pl.bab.la/slownik/angielski-polski/\u0002\u000113", - "\u0010": "//www.techopedia.com/search?q=\u0002§ion=all\u00016", - "ed": "//www.tokopedia.com/search?st=product&q=\u0002\u0001127", - "achat": "http://www.topachat.com/pages/recherche.php?mc=\u0002\u00013", - "geek": "http://www.topgeek.net/fr/recherche?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Rechercher\u00010", - "hatter": "//tophatter.com/catalogs/search?utf8=%E2%9C%93&category=&query=\u0002\u00010", - "preise": "http://www.toppreise.ch/index.php?search=\u0002&res=OK\u000146", - "shop": "http://us.topshop.com/webapp/wcs/stores/servlet/CatalogNavigationSearchResultCmd?langId=-1&storeId=13052&catalogId=33060&beginIndex=1&viewAllFlag=false&pageSize=20&sort_field=Relevance&searchTerm=\u0002\u00010", - "tenrevs": "//www.toptenreviews.com/search/?q=\u0002\u00010" - }, - "or": { - "i": "//www.tori.fi/koko_suomi?q=\u0002\u000169", - "\u0010": "//\u0002.tor2web.org/\u00013", - "ob": "//torob.com/search/?query=\u0002\u00013", - "amp": "http://www.toramp.com/search.php?search=\u0002\u00010", - "atlas": "//atlas.torproject.org/#search/\u0002\u00010", - "rentfreak": "http://torrentfreak.com/search/\u0002\u000112", - "wiki": "//trac.torproject.org/projects/tor/search?q=\u0002 \u00010" - }, - "oy": { - "\u0010": "//protinkertoys.com/search?type=product&q=\u0002\u00010", - "s": "//kidultkingdom.com/?s=\u0002\u00010" - }, - "-p": "http://www.telemark-pyrenees.com/en/search.php?keywords=\u0002\u00010", - "hai": { - "l": "//thailyrics.top/results/?q=\u0002\u00010", - "\u0010": "http://www.thai-language.com/default.aspx?search=\u0002\u00010" - }, - "halia": "//www.thalia.de/suche?sq=\u0002\u000140", - "hdb": "//thronesdb.com/find?q=\u0002\u00010", - "hen": { - "\u0010": "//translate.google.com/#th/en/\u0002\u00010", - "oun": { - "\u0010": "//thenounproject.com/search/?q=\u0002\u00014", - "project": "//thenounproject.com/search/?q=\u0002\u00014" - } - }, - "hes": { - "\u0010": "http://www.thesaurus.com/browse/\u0002\u0001329", - "es": { - "\u0010": "http://www.theses.fr/?q=\u0002\u00016", - "sion": "//thesession.org/tunes/search?type=&mode=&q=\u0002\u00010" - }, - "aurus": { - "\u0010": "//www.thesaurus.com/browse/\u0002?s=t\u0001904", - "de": "//www.openthesaurus.de/synonyme/\u0002\u000117" - }, - "etel": "//tel.archives-ouvertes.fr/search/index/?q=\u0002\u00010", - "ource": "http://www.thesource.ca/en-ca/search/?text=\u0002&search_submit=\u00010", - "tar": "//www.thestar.com/search.html?q=\u0002\u00010" - }, - "heage": "//www.theage.com.au/search?text=\u0002\u000126", - "heatlantic": "http://www.theatlantic.com/search/?q=\u0002 \u000118", - "heatricalia": "//theatricalia.com/search?q=\u0002\u00010", - "heaustralian": "//www.theaustralian.com.au/search-results?q=\u0002\u00010", - "heblaze": "//www.theblaze.com/search/?q=\u0002\u00010", - "hebrick": "//www.thebrick.com/pages/search-results?limit=48&q=\u0002\u00010", - "hecheckeredflag": "http://www.thecheckeredflag.co.uk/?s=\u0002 \u00010", - "hecolumbian": "http://www.columbian.com/search/?q=\u0002\u00010", - "hecrag": "//www.thecrag.com/nodes/fuzzy-search/\u0002?S=\u0002&ST=w\u00010", - "hedonald": "//www.reddit.com/r/the_donald/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010", - "hefastmode": "http://www.thefastmode.com/site-search?q=\u0002\u00010", - "hefella": "//thefella.com/search?q=\u0002\u00010", - "hefreedictionary": "http://www.thefreedictionary.com/\u0002\u0001835", - "hefunny": "//www.thefunny.in/?s=\u0002\u00010", - "hefutoncritic": "http://www.thefutoncritic.com/search.aspx?q=\u0002&type=titles\u00010", - "hegloor": "//thegloor.com/?s=\u0002\u00010", - "hegreat": "//www.thegreat.uk/?s=\u0002\u00010", - "hehackernews": "//www.google.com/cse?q=test&cx=partner-pub-7983783048239650%3A3179771210#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010", - "hehdroom": "//www.thehdroom.com/?s=\u0002\u00010", - "hehimalayantimes": "//thehimalayantimes.com/?s=\u0002\u00010", - "hehindu": "//www.thehindu.com/search/?q=\u0002\u00010", - "heitdepot": "//www.theitdepot.com/search.html?keywords=\u0002\u00010", - "hemeforest": "http://themeforest.net/search?utf8=%E2%9C%93&term=\u0002\u00010", - "hemighty": "//www.themighty.com/search/?search=\u0002\u00010", - "hemoviedb": "http://www.themoviedb.org/search?query=\u0002\u000162", - "heonion": "http://www.theonion.com/search/?q=\u0002&x=0&y=0\u00010", - "heorytab": "//www.hooktheory.com/theorytab/results?path=\u0002\u00010", - "heregister": "http://search.theregister.co.uk/?q=\u0002&advanced=1&author=&date=the+dawn+of+time&site=all+The+Register+sites&results_per_page=100\u00015", - "hermatru": "//www.thermatru.com/search/?q=\u0002\u00010", - "hetoptens": "http://www.thetoptens.com/search.asp?q=\u0002&cx=partner-pub-5900458016987292%3Agdkm434o44o&cof=FORID%3A9&ie=ISO-8859-1&siteurl=www.thetoptens.com%2F%3Fq%3Da&ref=&ss=421j55697j9\u00010", - "hetvdb": "//www.thetvdb.com/search?q=\u0002&l=en\u00010", - "heverge": "http://www.theverge.com/search?q=\u0002\u000140", - "heweek": "http://www.theweek.co.uk/search/site/\u0002\u00010", - "hewebflash": "//www.thewebflash.com/?s=\u0002\u00010", - "heyarddr": "http://theyarddr.com/?s=\u0002\u00010", - "heyworkforyou": "http://www.theyworkforyou.com/search/?q=\u0002\u00010", - "hing": { - "\u0010": "//www.thingiverse.com/search?q=\u0002\u0001131", - "y": "//www.thingiverse.com/search?q=\u0002\u0001131", - "iverse": "http://www.thingiverse.com/search?cx=015525747728168968820%3Arqnsgx1xxcw&cof=FORID%3A9&q=\u0002\u0001222" - }, - "hilina": "//thilina.piyasundara.org/search?q=\u0002\u00010", - "hinktutorial": "http://thinktutorial.com/index.php?s=\u0002\u00010", - "hinkwiki": { - "\u0010": "http://www.thinkwiki.org/w/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010", - "de": "http://thinkwiki.de/index.php?search=\u0002\u00010" - }, - "hislife": "//www.thisamericanlife.org/archive?keyword=\u0002\u00010", - "hnuernberg": "//www.th-nuernberg.de/suche/?id=1&L=0&q=\u0002\u00010", - "homann": "http://www.thomann.de/de/search_dir.html?sw=\u0002\u00013", - "honky": "//www.thonky.com/search.php?q=\u0002\u00010", - "horiummod": "//thoriummod.gamepedia.com/index.php?search=\u0002\u00010", - "horlabs": "http://www.thorlabs.de/search/thorsearch.cfm?search=\u0002\u00016", - "horne": "//www.thorne.com/search?q=\u0002\u00010", - "houghtco": "//www.thoughtco.com/search?q=\u0002\u00014", - "housand": "http://www.thousand-sunny.org/?s=\u0002\u00010", - "kpd": "//www.tokopedia.com/search?q=\u0002\u000128", - "ockdom": "http://wiki.tockdom.com/w/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010", - "odoist": "//todoist.com/app?lang=en#agenda%2F\u0002 \u000129", - "odonoticias": "http://tn.com.ar/buscar/\u0002\u00010", - "oogit": "//www.toogit.com/find-freelance-jobs?JobSearch%5Bsearch_text%5D=\u0002\u00010", - "oogles": "http://toogl.es/#/search/\u0002\u00010", - "ookapic": "//stock.tookapic.com/search?q=\u0002\u00013", - "oolslib": "//toolslib.net/search/projects/?q=\u0002\u00010", - "ost": { - "\u0010": "//toster.ru/search?q=\u0002\u00010", - "ar": "//www.thestar.com/search.html?q=\u0002\u00010" - }, - "osdr": "//tosdr.org/#search=\u0002\u00016", - "oswikia": "http://towerofsaviors.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "otalcmd": "http://www.totalcmd.net/search.php?s=\u0002\u00010", - "outs": "//www.touts.com.br/arts?search=\u0002\u00010", - "oucharcade": "http://toucharcade.com/?s=\u0002\u00010", - "ouhou": "http://en.touhouwiki.net/index.php?search=\u0002 \u000161", - "ourindo": "//www.touristindonesia.tk/search?q=\u0002\u00010", - "ouslesprix": "//www.touslesprix.com/achat,\u0002.html\u00010", - "outvendre": "//www.toutvendre.fr/s?k=\u0002\u00010", - "oxif": "//www.toxif.com/tags/\u0002 \u00017", - "üren": "//tuerenmarkt24.de/suche?controller=search&orderby=position&orderway=desc&search_query=deur\u0002\u00010" - }, - "u": { - "b": { - "\u0010": "//gu-se-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=46GUB_VU1&lang=sv_SE&offset=0\u000124", - "h": { - "d": "http://www.ub.uni-heidelberg.de/suche/suche.html?cx=009778813800417314295%3Af3s5sfjqeck&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Suche\u00010", - "h": "//beluga.sub.uni-hamburg.de/vufind/Search/Results?lookfor=\u0002&submitForm=Suchen&library=BELUGA_ALL\u00010", - "u": "//duckduckgo.com/?q=\u0002+site:ubuntu.hu\u00010", - "\u0010": "//www.youbehero.com/gr/search/causes?loose_type=1&term=\u0002\u00010" - }, - "l": "//katalog.ub.uni-leipzig.de/Search/Results?lookfor=\u0002\u00010", - "t": "//rds-tue.ibs-bw.de/opac/RDSIndex/Search?lookfor=\u0002\u00010", - "u": { - "\u0010": "http://search.freefind.com/find.html?si=61902956&pid=r&n=0&_charset_=UTF-8&bcd=%C3%B7&query=\u0002\u00010", - "fr": "//duckduckgo.com/?q=site%3Aubuntu-fr.org+\u0002&ia=web\u00013", - "ntu": { - "f": { - "r": "//www.google.fr/search?q=\u0002+site%3Aubuntu-fr.org&gws_rd=ssl\u00010", - "\u0010": "http://ubuntuforums.org/search.php?do=process&query=\u0002\u00010", - "orums": "http://ubuntuforums.org/search.php?do=process&query=\u0002\u00010" - }, - "\u0010": "//www.ubuntu.com/search?q=\u0002\u000125", - "tr": "http://forum.ubuntu-tr.net/index.php?action=search;q=\u0002\u00010", - "china": "//forum.ubuntu.org.cn/search.php?keywords=\u0002\u00010", - "pack": "http://packages.ubuntu.com/search?keywords=\u0002\u000150", - "users": "http://ubuntuusers.de/search/?query=\u0002&area=all\u00010", - "wikide": "http://duckduckgo.com/?q=site%3Awiki.ubuntuusers.de+\u0002\u00010" - } - }, - "fr": "//katalog.ub.uni-freiburg.de/opac/RDSIndex/Search?lookfor=\u0002&source=homepage\u00010", - "ks": "//hds.hebis.de/ubks/Discover/EBSCO?lookfor=\u0002 \u00010", - "clib": "http://ubc.summon.serialssolutions.com/search?s.cmd=addFacetValueFilters%28ContentType%2CNewspaper+Article%3At%29&spellcheck=true&s.q=\u0002\u00014", - "ergizmo": "http://www.ubergizmo.com/search/?q=\u0002\u00010", - "erspace": "//wiki.uberspace.de/start?do=search&id=\u0002\u00010", - "iquiti": "//community.ubnt.com/t5/forums/searchpage/tab/message?q=\u0002\u00010", - "jgu": "//hds.hebis.de/ubmz/Search/Results?lookfor=\u0002&trackSearchEvent=Einfache+Suche&type=allfields&search=new&submit=Suchen\u00010", - "ottu": "http://ubottu.com/factoids.cgi?search=\u0002\u00010" - }, - "c": { - "d": "//www.ucdavis.edu/search/google/\u0002\u00010", - "f": { - "l": "//search.ucf.edu/#?q=\u0002\u00010", - "\u0010": "http://www.mclean.net.nz/ucf/?q=\u0002\u00010" - }, - "i": "//www.uci.org/search?q=\u0002\u00010", - "l": { - "\u0010": "//search2.ucl.ac.uk/s/search.html?query=\u0002&collection=website-meta&profile=_website&tab=websites&submit=Go\u00010", - "lib": "//ucl-new-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&offset=0&tab=local&vid=UCL_VU2&search_scope=CSCOP_UCL\u00010" - }, - "t": "http://unicode-table.com/search/?q=\u0002\u000116", - "\u0010": "//catalog.lib.uchicago.edu/vufind/Search/Results?lookfor=\u0002&type=AllFields\u00013", - "v": "http://vancouverunitarians.ca/?s=\u0002\u00013", - "hi": "//catalog.lib.uchicago.edu/vufind/Search/Results?lookfor=\u0002 &type=AllFields\u00010", - "ern": "//search.ucern.com/search?cp=connect&q=\u0002\u00010", - "hamp": "//u.gg/lol/champions/\u0002\u00010", - "pjp": "http://ja.uncyc.org/index.php?search=\u0002\u00010", - "scgb": "http://www.genome.ucsc.edu/cgi-bin/hgTracks?hgsid=592541357_hq8TArn5c0CoLwcXM3n3eZOaR8ZC&org=Human&db=hg38&position=\u0002&pix=800\u00010" - }, - "d": { - "\u0010": "//www.urbandictionary.com/define.php?term=\u0002\u00015376", - "ev": "//developer.ubuntu.com/en/search/?q=\u0002\u00010", - "emy": "//www.udemy.com/courses/search/?q=\u0002\u0001101" - }, - "g": { - "g": "//u.gg/opensearch/?query=\u0002\u0001462", - "o": "http://www.ugodecoracion.com/buscar?controller=search&orderby=position&orderway=desc&search-cat-select=0&search_query=\u0002&submit_search=\u00010", - "r": "http://www.ugr.es/pages/search?query=\u0002\u00010", - "\u0010": "//www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u0001740" - }, - "h": "//www.uhasselt.be/google-search?q=\u0002\u00010", - "l": { - "b": { - "\u0010": "//cibleplus.ulb.ac.be/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=32ULB_VU1&lang=fr_FR&offset=0\u00010", - "d": { - "a": "//hds.hebis.de/ulbda/Search/Results?lookfor= \u0002&service=catalog\u00010", - "\u0010": "//katalog.ulb.hhu.de/Search/Results?lookfor=\u0002&type=AllFields\u00014" - }, - "h": "//hds.hebis.de/ulbda/Search/Results?lookfor=\u0002&service=catalog\u00010" - }, - "\u0010": "//www.ulule.com/discover/?q=\u0002\u00010", - "ta": "http://www.ulta.com/ulta/a/_/Ntt-\u0002/Nty-1?Dy=1&ciSelector=searchResults\u00010", - "abox": "//www.ulabox.com/busca?q=\u0002\u00010", - "ine": "//www.uline.com/Product/AdvSearchResult?keywords=\u0002\u00010", - "timate-guitar": "//www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u0001740", - "timateguitar": "//www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u0001740", - "trastares": "http://ultrastar-es.org/en/canciones?busqueda=\u0002\u00010", - "udagsozluk": "http://www.uludagsozluk.com/?q=\u0002\u00010" - }, - "n": { - "e": { - "\u0010": "//www.une.edu.au/search?collection=une-meta&query=\u0002\u00010", - "scowhc": "http://whc.unesco.org/en/search/?criteria=\u0002\u00010" - }, - "i": { - "c": { - "\u0010": "//unicode-table.com/en/search/?q=\u0002\u000118", - "at": "http://unicat.be/uniCat?func=search&language=en&fromWeb=1&formQuery=\u0002\u00010", - "ef": "http://www.unicef.org/search/search.php?q_en=\u0002\u00010", - "ode": { - "\u0010": "http://www.fileformat.info/info/unicode/char/search.htm?q=\u0002&preview=entity\u000147", - "party": "http://unicode.party/?query=\u0002\u00010", - "table": "http://unicode-table.com/en/search/?q=\u0002\u00015" - } - }, - "\u0010": "http://unicode-search.net/unicode-namesearch.pl?term=\u0002\u000111", - "x": { - "\u0010": "http://minnie.tuhs.org/cgi-bin/utree.pl?filesearch=\u0002&submit=Go\u00013", - "how": "//unixhow.com/search?q=\u0002\u00010" - }, - "gö": "http://www.uni-goettingen.de/de/suche.html?query=\u0002\u00010", - "ma": "//www.uni-mannheim.de/suche/?tx_solr%5Bq%5D=\u0002\u00010", - "mc": "http://www.unimc.it/@@search?SearchableText=\u0002\u00010", - "ty": { - "m": "http://docs.unity3d.com/Manual/30_search.html?q=\u0002\u00010", - "\u0010": "http://unity3d.com/search?gq=\u0002 \u00017", - "sr": "http://docs.unity3d.com/ScriptReference/30_search.html?q=\u0002\u00010", - "ans": { - "\u0010": "http://unity3d.com/search?refinement=answers&gq=\u0002 \u00010", - "wers": "http://answers.unity3d.com/search.html?q=\u0002\u00010" - }, - "api": "http://docs.unity3d.com/ScriptReference/30_search.html?q=\u0002 \u00017", - "ast": "//www.assetstore.unity3d.com/en/#!/search/page=1/sortby=relevance/query=\u0002\u00010" - }, - "lad": "//www.unilad.co.uk/search/\u0002\u00010", - "prot": "http://www.uniprot.org/uniprot/?query=\u0002\u000127", - "qlo": "//www.uniqlo.com/us/en/search/?q=\u0002&lang=default\u00019", - "salib": "http://search.library.unisa.edu.au/?query=any,contains,\u0002\u00010", - "versalis": "//www.universalis.fr/recherche/q/\u0002\u00010", - "vie": "http://ufind.univie.ac.at/en/search.html?query=\u0002\u00010", - "wiki": "//wiki.eveuniversity.org/index.php?title=Special%3ASearch&search=\u0002&button=\u00010", - "zar": "http://www.unizar.es/search/node/\u0002\u00010" - }, - "m": "http://search.unm.edu/search?q=\u0002\u00010", - "p": { - "\u0010": "http://www.unp.me/search/1/?q=\u0002\u00010", - "kg": "//unpkg.com/\u0002\u000110" - }, - "s": { - "\u0010": "//unsplash.com/search/photos/\u0002\u00015", - "pl": { - "s": "//unsplash.com/search/photos/\u0002\u00015", - "\u0010": "//unsplash.com/search?utf8=✓&keyword=\u0002\u0001154", - "ash": "//unsplash.com/search?utf8=✓&keyword=\u0002\u0001154" - }, - "een64": "http://www.unseen64.net/?s=\u0002\u00010", - "horten": "//unshorten.me/s/\u0002\u00017", - "pider": "http://www.un-spider.org/search/apachesolr_search/\u0002\u00010" - }, - "\u0010": "http://search.un.org/search?ie=utf8&site=un_org&output=xml_no_dtd&client=UN_Website_en&num=10&lr=lang_en&proxystylesheet=UN_Website_en&oe=utf8&q=\u0002&Submit=Go\u00013", - "v": "http://unvis.it/\u0002\u00014", - "cg": "http://search.uncg.edu/search?q=\u0002&site=default_collection&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend\u00010", - "ja": "http://ja.uncyclopedia.info/wiki/\u0002\u00010", - "bri": "http://repositorio.unb.br/simple-search?query=\u0002&submit=Ir\u00010", - "clib": "//library.unc.edu/find/combinedresults/?Ntt=\u0002&Ntk=Keyword\u00010", - "cyc": { - "\u0010": "//en.uncyclopedia.co/w/index.php?search=\u0002\u00017", - "lopedia": "http://uncyclopedia.wikia.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010" - }, - "dertale": "http://undertale.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010", - "derwear": "//www.calida.com/search/#/q/\u0002\u00010", - "fpa": "http://www.unfpa.org/search/node/\u0002 \u00010", - "hcr": "//duckduckgo.com/?q=\u0002+site:http://www.unhcr.org/\u00010", - "kompliziert": "//unkompliziert.eu/index.php?search=\u0002\u00010", - "limitedbr": "//www.amazon.com.br/s?k=\u0002&i=digital-text\u00010", - "notchslayer1yt": "//www.youtube.com/channel/UCBX3P-QmXmCgWmCU2Mqt9sg/search?query=\u0002\u00010", - "ogs": "http://unogs.com/search/?q=\u0002\u00014", - "omaha": "//www.unomaha.edu/search/?q=\u0002\u00010", - "realengine": "//docs.unrealengine.com/en-us/Search-Results?Search=\u0002\u00010", - "tappd": "//untappd.com/search?q=\u0002 \u000128", - "term": "http://untermportal.un.org/search/\u0002\u00010", - "tergang": "http://untergang.de/index.php?option=search&searchword=\u0002\u00010", - "wiki": "http://uncyclopedia.wikia.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "xprn": "//www.reddit.com/r/unixporn/search?q=\u0002&restrict_sr=1\u000149" - }, - "p": { - "c": "http://www.upcdatabase.com/item/\u0002\u00010", - "s": { - "\u0010": "//wwwapps.ups.com/WebTracking/processInputRequest?tracknum=\u0002&\u0001412", - "es": "//www.ups.com/track?loc=es_ES&tracknum=\u0002\u00010" - }, - "\u0010": "http://packages.ubuntu.com/search?keywords=\u0002&searchon=names\u000139", - "kg": "//launchpad.net/ubuntu/+source/\u0002\u000161", - "ng": "http://www.upng.ac.pg/site/component/search/?searchword=\u0002&searchphrase=all&Itemid=101\u00010", - "ackages": "http://packages.ubuntu.com/search?keywords=\u0002&searchon=names&suite=all§ion=all\u000125", - "down": "//downforeveryoneorjustme.com/\u0002\u00010", - "labs": "http://www.uplabs.com/search?q=\u0002\u00010", - "todate": "http://www.uptodate.com/contents/search?search=\u0002\u000144", - "todown": "//en.uptodown.com/android/search/\u0002\u00014", - "work": "//www.upwork.com/o/jobs/browse/?q=\u0002\u00015" - }, - "q": { - "l": "//search.library.uq.edu.au/primo-explore/search?query=any,contains,\u0002&tab=61uq_all&search_scope=61UQ_All&sortby=rank&vid=61UQ&offset=0\u00018", - "m": "http://wiki.uqm.stack.nl/index.php?search=\u0002\u00010", - "\u0010": "http://wiki.uqm.stack.nl/script/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010" - }, - "r": { - "\u0010": "http://suche.uni-regensburg.de/index.php?q=\u0002\u00018", - "ban": { - "\u0010": "//www.urbandictionary.com/define.php?term=\u0002\u00015376", - "fx": "http://urbaneffect.net/?s=\u0002\u00010", - "dictionary": "//www.urbandictionary.com/define.php?term=\u0002\u00015376" - }, - "baani": "http://urbaanisanakirja.com/search/?q=\u0002\u00016", - "bout": "http://www.urbanoutfitters.com/fr/catalog/search.jsp?q=\u0002\u00010", - "ealms": { - "\u0010": "//wiki.urealms.com/index.php?search=\u0002\u00010", - "forums": "//forums.urealms.com/search?Search=\u0002\u00010" - }, - "eka": "//www.ureka.org/search?loader=1&q=\u0002\u00010", - "lquery": "http://urlquery.net/search.php?q=\u0002&type=string&max=50\u00010", - "lscan": "//urlscan.io/search/#\u0002\u00014", - "lvoid": "http://www.urlvoid.com/scan/\u0002\u00015" - }, - "s": { - "a": { - "l": "http://www.usal.es/webusal/usal_buscador?query=\u0002\u00010", - "\u0010": "//search.usa.gov/search?utf8=✓&affiliate=usagov&query=\u0002\u00015", - "spending": "http://www.usaspending.gov/search?form_fields=%7B%22search_term%22%3A%22\u0002%22%7D\u00010", - "today": "http://www.usatoday.com/search/\u0002/\u00010" - }, - "c": { - "\u0010": "//apps.ubuntu.com/cat/search/?q=\u0002 \u00010", - "hess": "http://www.uschess.org/datapage/player-search.php?name=\u0002&state=ANY&ratingmin=&ratingmax=&order=N&rating=R&mode=Find\u00010", - "lib": "//usc-primo.hosted.exlibrisgroup.com/primo-explore/search?institution=01USC_INST&vid=01USC&mode=Basic&facet=&displayMode=full&bulkSize=25&highlight=true&dum=true&query=any,contains,\u0002&displayField=all&pcAvailabiltyMode=true&sortby=rank&lang=en_US\u00010", - "ript": "http://docs.unity3d.com/Documentation/ScriptReference/30_search.html?q=\u0002\u00010" - }, - "e": { - "d": { - "\u0010": "//www.machineseeker.com/fy/inserat/inseratliste/index?stichwort=\u0002&submit=\u00014", - "victoria": "http://www.usedvictoria.com/classifieds/all?description=\u0002\u00010" - }, - "\u0010": "http://unix.stackexchange.com/search?q=\u0002 \u00019", - "galaxy": "//galaxyproject.org/search/?q=\u0002\u00010", - "rbench": "http://www.userbenchmark.com/Search?searchTerm=\u0002\u000118", - "rstyles": "http://userstyles.org/styles/browse/all/\u0002\u00010" - }, - "q": "//usq.summon.serialssolutions.com/search?s.q=\u0002 \u00010", - "r": "//docs.unity3d.com/ScriptReference/30_search.html?q=\u0002\u00019", - "\u0010": "//userstyles.org/styles/browse?search_terms=\u0002\u00010", - "da": "//ndb.nal.usda.gov/ndb/search/list?SYNCHRONIZER_TOKEN=f84a82f2-08ef-411f-a08f-2ae87edece78&SYNCHRONIZER_URI=%2Fndb%2Fsearch%2Flist&qt=&qlookup=\u0002&ds=&manu=\u00010", - "ps": "//tools.usps.com/go/TrackConfirmAction?qtc_tLabels1=\u0002\u0001876", - "yd": { - "l": { - "\u0010": "//usyd.summon.serialssolutions.com/search?q=\u0002\u00010", - "ib": "http://opac.library.usyd.edu.au/search/?searchtype=X&SORT=D&searcharg=\u0002&searchscope=4&submit=Submit\u00010" - }, - "\u0010": "http://sydney.edu.au/s/search.html?collection=Usyd&query=\u0002\u00010" - }, - "d2brl": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=USD&To=BRL\u00010", - "d2cop": "http://www.xe.com/currencyconverter/convert/?From=USD&To=COP&Amount=\u0002\u00010", - "d2eur": "http://www.xe.com/currencyconverter/convert/?From=USD&To=EUR&Amount=\u0002\u00010", - "d2gbp": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=USD&To=GBP\u00010", - "ite": "http://usite.hu/\u0002\u00010", - "mint": "http://search.usmint.gov/search?affiliate=usmint.gov&formFocused=0&query=\u0002\u00010", - "open": "//www.usopen.org/en_US/search/results.html?query=\u0002\u00010", - "tyles": "//userstyles.org/styles/browse?search_terms=\u0002\u00010" - }, - "t": { - "a": { - "\u0010": "http://www.uta.edu/search/?q=\u0002\u00013", - "ite": "http://utaitedb.net/Search?filter=\u0002\u00010" - }, - "k": "//utk-almaprimo.hosted.exlibrisgroup.com/primo-explore/search?vid=01UTK&institution=01UTK&facet=rtype,exclude,reviews&facet=rtype,exclude,reference_entrys&search_scope=OneSearch&tab=default_tab&onCampus=false&group=GUEST&query=any,contains,\u0002&lang=en_US\u00010", - "l": { - "\u0010": "//onesearch.library.utoronto.ca/onesearch/\u0002\u00010", - "eg": "http://le.utah.gov/solrsearch.jsp?request=\u0002\u00010", - "ib": { - "\u0010": "//onesearch.library.utoronto.ca/onesearch/\u0002/\u00010", - "rary": "//catalog.lib.utexas.edu/search/?searchtype=X&SORT=D&searcharg=\u0002&searchscope=29\u00010" - } - }, - "\u0010": "//www.utexas.edu/search/results?query=\u0002\u0001128", - "f8": "http://www.fileformat.info/info/unicode/char/search.htm?q=\u0002&preview=entity\u000147", - "no": "http://ut.no/finn?search=\u0002\u00010", - "os": "//open-store.io/?sort=relevance&search=\u0002\u00010", - "dol": "//www.uptodate.com/contents/search?search=\u0002\u00010", - "opia": "http://wiki.utopia-game.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "oronto": "http://find.utoronto.ca/search?proxystylesheet=default_frontend&q=\u0002\u00010" - }, - "u": { - "\u0010": "//duckduckgo.com/?q=site%3Aubuntuusers.de+\u0002\u00010", - "w": { - "\u0010": "//duckduckgo.com/?q=site:wiki.ubuntuusers.de+\u0002\u00010", - "iki": "//duckduckgo.com/?q=site:wiki.ubuntuusers.de+\u0002\u00010" - }, - "de": "//duckduckgo.com/?q=site%3Aubuntuusers.de+\u0002\u00010" - }, - "\u0010": "//www.urbandictionary.com/define.php?term=\u0002\u00015376", - "w": { - "d": "http://www.dailyuw.com/search/?t=article&nsa=eedition&q=&x=17&y=23\u0002: \u00010", - "o": "//www.ssjoy.org/dho/?vid=&mid=home&act=IS&is_target=all&is_keyword=\u0002\u00010", - "\u0010": "//www.ssjoy.org/dho/?vid=&mid=home&act=IS&is_target=all&is_keyword=\u0002\u00010", - "mc": "//unlimitedworld.de/search/1786851/?q=\u0002\u00010", - "alib": "//onesearch.library.uwa.edu.au/discovery/search?query=any,contains,\u0002&tab=Everything&search_scope=MyInst_and_CI&sortby=rank&vid=61UWA_INST:UWA&offset=0\u00010", - "flow": "//uwflow.com/courses?keywords=\u0002\u00010", - "iki": "//wiki.ubuntu.com/Home?action=fullsearch&context=180&value=\u0002\u00010", - "lib": "//search.library.wisc.edu/search/catalog?q=\u0002\u00010" - }, - "x": { - "\u0010": "http://ux.stackexchange.com/search?q=\u0002\u00010", - "ul": "//uxul.de/find?search=\u0002\u00010" - }, - "24": "http://www.urgente24.com/search/node/\u0002\u00010", - "ea": "//answers.unrealengine.com/search.html?q=\u0002\u00010", - "fc": "//ufc.com/search?search=\u0002&sort_by=created\u00015", - "ib": { - "a": "http://uiba.co/?s=\u0002\u00010", - "\u0010": "//ordbok.uib.no/perl/ordbok.cgi?OPP=\u0002&ant_bokmaal=5&ant_nynorsk=5&begge=+&ordbok=begge\u0001101" - }, - "if": "http://www.ultralingua.com/onlinedictionary/dictionary#src_lang=Italian&dest_lang=French&query=\u0002\u00010", - "io": "//www.uio.no/studier/emner/?course-query=\u0002&vrtx=search&searchMode=emne\u000111", - "it": { - "m": "http://www.uitmuntend.de/woerterbuch/\u0002/\u000119", - "\u0010": "http://www.uitmuntend.de/search.html?search=\u0002\u00019", - "inv": "http://www.uitinvlaanderen.be/agenda/search?query=\u0002\u00010" - }, - "ja": "//www.ujaen.es/search?s=\u0002\u00010", - "jc": "http://prirucka.ujc.cas.cz/?slovo=\u0002&Hledej=Hledej\u000112", - "kn": "//www.uni-konstanz.de/suche/?q=\u0002\u00010", - "kp": { - "\u0010": "http://www.parliament.uk/search/results/?q=\u0002\u00010", - "pp": "//uk.pcpartpicker.com/search/?cc=uk&q=\u0002\u00010", - "arl": "http://www.parliament.uk/search/results/?q=\u0002\u00010" - }, - "ku": "//ukutabs.com/?s=\u0002\u00010", - "mb": "//www.umb.edu/search?cx=001225130692263366863%3Auxj4oosyzxy&cof=FORID%3A11&q=\u0002\u00010", - "md": "http://www.searchum.umd.edu/search?site=UMCP&client=UMCP&proxystylesheet=UMCP&output=xml_no_dtd&q=\u0002\u00010", - "mk": "http://opac.bu.umk.pl/webpac-bin/B_horizonPL/wgbroker.exe?new+-access+top+search+open+CI+\u0002\u00010", - "ml": "//primo-pmtna01.hosted.exlibrisgroup.com/primo-explore/search?institution=UMB&vid=UMB&tab=default_tab&search_scope=UManitoba&mode=basic&displayMode=full&bulkSize=10&highlight=true&dum=true&query=any,contains,\u0002&displayField=all&pcAvailabiltyMode=true&sortby=rank&lang=en_US\u00010", - "mn": "//search.umn.edu/tc/index.php?q=\u0002 \u000110", - "mo": "http://www.umart.com.au/newsite/search.php?type=0&keywords=\u0002\u00010", - "oa": { - "l": { - "\u0010": "//search.library.ualberta.ca/symphony?q=\u0002\u00010", - "ib": "//www.library.auckland.ac.nz/search/\u0002\u00010" - }, - "\u0010": "//search.auckland.ac.nz/search?site=All_university_websites&client=uoa_frontend&proxystylesheet=uoa_frontend&proxyreload=0&output=xml_no_dtd&q=\u0002\u00010" - }, - "od": "http://udallas.edu/searchresults.html?q=\u0002\u00010", - "ok": "//www.kent.ac.uk/search/?q=\u0002\u00010", - "om": "http://www.manchester.ac.uk/search/?q=\u0002\u00010", - "on": "http://www.nottingham.ac.uk/search.aspx?q=\u0002:\u00010", - "os": "//www.surrey.ac.uk/search?query=\u0002\u00010", - "va": { - "c": "http://search.lib.virginia.edu/catalog?q=\u0002\u00010", - "\u0010": "http://www.virginia.edu/search/site/\u0002\u00010", - "faulk": "http://faulkner.lib.virginia.edu/results?type=transcription&q=\u0002 \u00010", - "lib": "http://search.lib.virginia.edu/catalog?q=\u0002\u00010" - }, - "ym": "//www.unwrapyourmind.com/?s=\u0002&submit=Search\u00010", - "zg": "//www.npo.nl/zoeken?term=\u0002\u00017", - "zh": "http://www.uzh.ch/de/search.html?q=\u0002\u00010", - "aar": "http://www.uaar.it/news/?s=\u0002\u00010", - "apps": "//apps.ubuntu.com/cat/search/?q=\u0002\u00010", - "appex": "//uappexplorer.com/apps?q=\u0002&sort=relevance\u00010", - "e4docs": "//docs.unrealengine.com/en-us/Search-Results?Search=\u0002\u00010", - "embb": "//uem.blackboard.com/\u0002\u00010", - "esp": "http://en.uesp.net/w/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u0001259", - "find": "//ufind.univie.ac.at/de/search.html?filter=all&query=\u0002\u00017", - "frj": "http://www.ufrj.br/buscagoogle2.php?ie=utf-8&oe=utf-8&cx=001879131226118048161%3Ac12ayzh7sok&cof=FORID%3A11&q=\u0002\u00010", - "fret": "http://www.ufret.jp/search.php?key=\u0002\u00018", - ".gg": "//u.gg/opensearch/?query=\u0002\u0001462", - "kappstore": "//duckduckgo.com/?q=site%3Aapps.apple.com%2Fgb%2Fapp%2F+\u0002\u00010", - "kcsgo": "http://ukcsgo.com/forums/search/\u0002/\u00010", - "keys": "//keyserver.ubuntu.com/pks/lookup?search=\u0002&fingerprint=on&hash=on&op=vindex\u00010", - "ketabs": "//www.ukulele-tabs.com/search-uke-chords.html?find=\u0002\u00010", - "kgr": "//gridreferencefinder.com/bing.php?gr=\u0002\u00010", - "kgovpeti": "//petition.parliament.uk/petitions?q=\u0002\u00010", - "kiki": "//ukikipedia.net/mediawiki/index.php?search=\u0002\u00013", - "klaw": "http://www.legislation.gov.uk/all?title=\u0002\u00013", - "kwiki": "//uk.wikipedia.org/w/index.php?search=\u0002\u00010", - "m3bd": "http://um3bd.free.fr/?s=\u0002\u00010", - "man": "//manpages.ubuntu.com/cgi-bin/search.py?q=\u0002\u000130", - "mass": { - "d": "//www.umassd.edu/universitysearch/?q=\u0002\u00010", - "\u0010": "//www.umass.edu/search/#stq=\u0002&stp=1\u00010" - }, - "magine": "//www.youmagine.com/search/designs?utf8=%E2%9C%93&search=\u0002\u00010", - "melb": "//search.unimelb.edu.au/?q=\u0002\u00010", - "mich": "http://umich.edu/search/keywords/\u0002/\u00010", - "oft": { - "\u0010": "//onesearch.library.utoronto.ca/onesearch/\u0002\u00010", - "lib": "//onesearch.library.utoronto.ca/onesearch/\u0002//\u00010" - }, - "vic": "//www.uvic.ca/search/q/web.php?q=\u0002&t=4&p=1&g=true\u00010" - }, - "v": { - "a": { - "g": { - "\u0010": "http://db.vanillagaming.org/?search=\u0002\u00010", - "w": "http://www.vagonweb.cz/razeni/razeni.php?jmeno=\u0002&najit=Suchen\u00010", - "as": "//www.vagas.com.br/vagas-de-\u0002?\u00010", - "alume": "http://www.vagalume.com.br/search.php?q=\u0002\u00010", - "rant": "//app.vagrantup.com/boxes/search?q=\u0002\u00013", - "ssp": "//procarmanuals.com/?s=\u0002\u00010" - }, - "n": { - "i": "//vanillawowdb.com/?search=\u0002\u00010", - "s": "//www.vans.com/webapp/wcs/stores/servlet/VFSearchDisplay?storeId=10153&catalogId=10703&langId=-1&beginIndex=0&searchSource=Q&sType=SimpleSearch&searchTerm=\u0002\u00010", - "\u0010": "//vandal.elespanol.com/busqueda/\u0002\u00010", - "couver": "http://vancouver.ca/search.aspx?q=\u0002&searchEngine=GSA\u00010", - "dale": "http://www.vandale.nl/opzoeken?pattern=\u0002&lang=nn\u000172", - "guard": "//www.vanguardinvestments.com.au/retail/mvc/searchresults.htm?https%3A%2F%2Fwww.vanguardinvestments.com.au%2Fretail%2Fmvc%2Fsearchresults.htm=&searchtext=\u0002\u00010" - }, - "\u0010": "http://vimawesome.com/?q=\u0002\u00010", - "pe": { - "\u0010": "http://www.vapeoildirect.co.uk/?s=\u0002\u00010", - "fiend": "//vapefiend.co.uk/search?q=\u0002&type=product\u00010", - "time": "//www.vapetime-ec.com/?s=\u0002\u00010" - }, - "jeh": "//vajehyab.com/?q=\u0002 \u00010", - "jje": "http://www.vajje.com/vajje/search/index?query=\u0002\u00010", - "kblog": "http://rsnijders.info/vakblog/?s=\u0002 \u00010", - "ladoc": "//valadoc.org/?q=\u0002\u00015", - "lidate": { - "\u0010": "http://validator.w3.org/check?uri=\u0002&charset=%28detect+automatically%29&doctype=Inline&group=0\u00015", - "css": "http://jigsaw.w3.org/css-validator/validator?uri=\u0002&profile=css3&usermedium=all&warning=1&vextwarning=&lang=en\u00010" - }, - "lidatornu": "//validator.nu/?doc=\u0002\u00010", - "lve": { - "s": { - "\u0010": "//www.valvesonline.co.uk/catalogsearch/result/?q=\u0002\u00010", - "online": "//www.valvesonline.co.uk/catalogsearch/result/?q=\u0002\u00010" - }, - "\u0010": "//developer.valvesoftware.com/w/index.php?title=Special%3ASearch&search=\u0002\u00016" - }, - "riety": "//variety.com/results/#?q=\u0002 \u00010", - "rle": "//www.varle.lt/search/?q=\u0002\u00010", - "rsome": "//varsome.com/variant/search?query=\u0002\u00015", - "rtoslo": "//www.vartoslo.no/?s=\u0002 \u00010", - "ski": "//vaski.finna.fi/Search/Results?lookfor=\u0002\u00010", - "t19": "//www.vat19.com/products/search?q=\u0002\u00013", - "tera": "http://www.vatera.hu/listings/index.php?q=\u0002\u00014", - "tican": "http://gsearch.vatican.va/search?q=\u0002&btnG=Search+on&site=default_collection&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend&sort=date%3AD%3AL%3Ad1&entsp=a__policy_documenti&wc=200&wc_mc=1&oe=UTF-8&ie=UTF-8&ud=1&exclude_apps=1&filter=0\u00010", - "ult": "http://fallout.gamepedia.com/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00013" - }, - "b": { - "a": "//duckduckgo.com/?q=\u0002+site%3Amsdn.microsoft.com%2Fen-us%2Fvba&t=ffab&ia=web\u00010", - "p": "http://www.vbprofiles.com/search?q=\u0002\u00010", - "\u0010": "http://vedabase.com/en/search/site/\u0002\u00013", - "ot": "//volumebot.com/?s=\u0002\u00010", - "ox7": "//www.vbox7.com/search/?q=\u0002\u00010" - }, - "c": { - "m": "//vision.org.au/site-search/?phrase=\u0002&cbi=1\u00010", - "p": "http://shop.vcp-san.at/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010", - "\u0010": "//www.vouchercodes.co.uk/search/?q=\u0002\u00010", - "ru": "//vc.ru/search/\u0002\u00010" - }, - "\u0010": "//duckduckgo.com/?q=\u0002&ia=videos&iax=videos\u00011077", - "e": { - "f": "//www.venuefirst.com/all/venues?search_keyword=\u0002\u00013", - "m": { - "o": "http://www.vemo.it/cerca.php?prodotto=\u0002\u00010", - "\u0010": "http://vemringde.se/?q=\u0002\u00010" - }, - "\u0010": "//videoeta.com/search?utf8=%E2%9C%93&keywords=\u0002\u00010", - "rb": { - "s": "http://www.verbs.cat/ca/conjugacio.html?infinitive=\u0002\u00010", - "\u0010": "http://conjugator.reverso.net/conjugation-english-verb-\u0002.html\u00010", - "en": "http://www.verbformen.de/konjugation/?i=\u0002\u00010", - "es": "http://www.les-verbes.com/conjuguer.php?verbe=\u0002\u000111", - "fi": "http://www.dictionar-finlandez.net/online/verbs/conjugate_verb.php?verb=\u0002\u00010", - "ix": { - "\u0010": "http://verbix.com/find-verb/?verb=\u0002\u00010", - "es": "http://www.verbix.com/webverbix/Spanish/\u0002.html\u00010", - "pt": "http://www.verbix.com/webverbix/Portuguese/\u0002.html\u00010", - "eng": "http://www.verbix.com/webverbix/English/\u0002r.html\u00010" - }, - "cat": "http://www.verbs.cat/ca/conjugacio.html?infinitive=\u0002 \u00010", - "omatic": "http://conjugator.reverso.net/conjugation-english-verb-\u0002.html\u00010" - }, - "rk": { - "\u0010": "//www.verkkokauppa.com/fi/search/?query=\u0002\u000151", - "kis": "//www.verkkokauppa.com/fi/search/?query=\u0002\u000151", - "kokauppa": "//www.verkkokauppa.com/fi/search/?query=\u0002\u000151", - "oper": "//www.politie.nl/zoek?query=\u0002\u00010" - }, - "vo": "//www.youtube.com/user/VEVO/search?query=\u0002\u00010", - "ctor": { - "\u0010": "http://vector.me/search/\u0002 \u00010", - "space": "http://vectorspace.ai/recommend/app/crypto_discover?query=\u0002\u00010" - }, - "cteezy": "http://www.vecteezy.com/free-vector/\u0002\u00010", - "dant": "//www.vedantcomputers.com/index.php?route=product/search&search=\u0002&description=true\u00010", - "ekun": "http://veekun.com/dex/lookup?lookup=\u0002\u00017", - "gas": "http://find.vegas.com/search?entqr=1&output=xml_no_dtd&sort=date%3AD%3AL%3Ad1&entsp=0&client=vegas&ud=1&oe=UTF-8&ie=UTF-8&proxystylesheet=vegas&site=vegas&q=\u0002&btnG=%E2%8C%95\u00010", - "ganistan": "http://veganistan.se/search/innehall/\u0002\u00010", - "gess": "//store.veganessentials.com/categories.aspx?Keyword=\u0002\u00010", - "gewel": "//vegewel.com/en/search?utf8=%E2%9C%93&q%5Bg%5D%5B1%5D%5Brestaurant_search%5D=\u0002&q%5Bg%5D%5B0%5D%5Bm%5D=or&commit=Search\u00010", - "loz": "http://www.diarioveloz.com/contenidos/resultado.html?text=\u0002\u00010", - "nturebeat": "http://venturebeat.com/?s=\u0002\u00010", - "rge": "http://www.theverge.com/search?q=\u0002\u000140", - "risure": "//www.verisure.se/hidden/search-results.html?query=\u0002\u00010", - "root": "http://veroot.com/search/\u0002\u00010", - "rse": "//www.bible.com/search/bible?q=\u0002\u00010", - "rsus": "//versus.com/en/\u0002\u00010", - "rtalen": { - "\u0010": "http://www.vertalen.nu/vertaal?van=nl&naar=en&vertaal=\u0002\u00014", - "nu": "http://www.vertalen.nu/vertaal?vertaal=\u0002&van=en&naar=nl\u00010" - }, - "rtigocomics": "http://vertigo.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "f": { - "t": "//veriforcetactical.com/?s=\u0002\u00010", - "\u0010": "http://www.verbformen.de/konjugation/?i=\u0002\u00010" - }, - "g": { - "d": "http://v.gd/create.php?url=\u0002\u00010", - "g": { - "\u0010": "http://www.viagogo.com/searchResults.aspx?SearchText=\u0002\u00010", - "de": "http://www.viagogo.de/searchResults.aspx?SearchText=\u0002\u00010", - "uk": "http://www.viagogo.co.uk/searchResults.aspx?SearchText=\u0002\u00010" - }, - "\u0010": "//google.com/search?hl=en&q=\u0002&tbs=li:1\u000121", - "n": "//www.vgn.de/verbindungen/?td=\u0002\u00010", - "pc": "http://videogames.pricecharting.com/search?q=\u0002&submit=Go\u00010", - "collect": "http://vgcollect.com/search/\u0002\u00010", - "mdb": "//vgmdb.net/search?q=\u0002\u000150" - }, - "h": { - "\u0010": "//www.vantagehunt.com/jobs?search=\u0002\u00010", - "ck": "//victorhckinthefreeworld.wordpress.com/?s=\u0002\u00010", - "unt": "//visualhunt.com/search/instant/?q=\u0002\u00010" - }, - "j": "http://vjphotos.net/?s=\u0002\u00010", - "k": { - "\u0010": "http://vk.com/search?c[q]=\u0002&c[section]=auto\u0001303", - "v": "//vk.com/video?q=\u0002\u000117", - "dia": "//fr.vikidia.org/w/index.php?search=\u0002&title=Sp%C3%A9cial:Recherche&go=Trouver\u00010" - }, - "o": { - "\u0010": "//eo.wikipedia.org/w/index.php?search=\u0002\u00010", - "l": { - "\u0010": "http://www.vivaolinux.com.br/busca/?cx=partner-pub-3535276187000580%3A4725058203&cof=FORID%3A10&ie=UTF-8&q=\u0002&tipoBusca=0&siteurl=www.vivaolinux.com.br\u00010", - "cans": "http://www.librairielesvolcans.com/listeliv.php?RECHERCHE=simple&MOTS=\u0002&x=0&y=0\u00010", - "tron": "http://voltron.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "x": "http://www.vox.com/search?q=\u0002\u00010", - "an": "//www.voanews.com/s?k=\u0002&tab=all&pi=1&r=any&pp=10\u00010", - "at": "//searchvoat.co/?all=\u0002\u00010", - "da": { - "\u0010": "http://www.vodafone.it/area-utente/appmanager/fai-da-te/Common?_nfpb=true&_pageLabel=P5000626721379247340997&categoryId=&pageNumber=&slideNumber=&defaultView=true&searchQuery=\u0002\u00010", - "fone": "//www.vodafone.com/content/index/search.html?search-query=\u0002\u00010" - }, - "id": { - "\u0010": "//wiki.voidlinux.org/index.php?search=\u0002\u00013", - "docs": "//docs.voidlinux.org/?search=\u0002\u00017", - "wiki": "//wiki.voidlinux.org/index.php?search=\u0002\u00013" - }, - "it": "//duckduckgo.com/?q=\u0002+site%3AKarl-Voit.at&ia=web\u00010", - "te": { - "\u0010": "//vote.us.org/search/?q=\u0002\u00010", - "formost": "//voteformost.net/?s=\u0002\u00010", - "rly": "//voterly.com/search/politicians?q=\u0002\u00010" - }, - "cab": { - "\u0010": "//www.vocabulary.com/dictionary/\u0002\u00010", - "ulary": "//www.vocabulary.com/dictionary/\u0002\u00010" - }, - "cadb": "http://vocadb.net/Search?filter=\u0002\u000114", - "caloid": "http://vocaloid.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "ced": "http://www.voced.edu.au/search/apachesolr_search/\u0002\u00010", - "edingswaarde": "http://www.voedingswaardetabel.nl/voedingswaarde/?q=\u0002\u00010", - "gue": { - "\u0010": "//www.vogue.com/?s=\u0002\u00010", - "uk": "//www.vogue.co.uk/search?q=\u0002\u00010" - }, - "ice": "//www.google.com/voice#search/\u0002\u00010", - "icy": "//www.voicy.network/clips/search?search=\u0002\u00010", - "rtaro": { - "\u0010": "http://vortaro.net/#\u0002\u000117", - "nl": "//vortaro.nl/?v=\u0002\u00010" - }, - "rtexcg": "//vortex.gg/games?title=\u0002\u00010", - "ssey": "http://www.vossey.com/recherche/index.php?ac=recherche&titre=\u0002\u00010", - "traro": "http://vortaro.net/?w=\u0002\u00010" - }, - "p": { - "l": "//vpl.bibliocommons.com/search?q=\u0002&t=smart&search_category=keyword\u00016", - "n": "//www.vpncompare.co.uk/?s=\u0002\u00010", - "\u0010": "http://videogames.pricecharting.com/search?q=\u0002&type=videogames&go=Go\u000124" - }, - "s": { - "b": "http://www.vsb.bc.ca/search/node/\u0002\u00010", - "c": { - "\u0010": "//sapere.virgilio.it/parole/sinonimi-e-contrari/\u0002\u00010", - "hart": "http://vschart.com/search?q=\u0002\u00010", - "ode": "//marketplace.visualstudio.com/search?term=\u0002&target=VSCode&sortBy=Relevance\u000135" - }, - "e": "http://www.vintagesynth.com/google_results.php?cx=partner-pub-9231860735104128%3A7369484958&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.vintagesynth.com%2F&ref=&ss=572j143576j4\u00010", - "g": "http://valuestockguide.com/?s=\u0002\u00010", - "\u0010": "http://www.vividseats.com/Search.action?searchTerm=\u0002\u00013", - "un": "http://www.vancouversun.com/search/search.html?q=\u0002\u00010", - "docs": "//code.visualstudio.com/Search?q=\u0002\u00010", - "t4free": "http://www.vst4free.com/index.php?s_keywords=\u0002&s_name=1&s_kind=1&s_sent2=1&Submit=Search\u00010" - }, - "t": { - "f": { - "c": "//www.vatefaireconjuguer.com/search?verb=\u0002\u00010", - "\u0010": "http://www.vatefaireconjuguer.com/conjugaison/verbe/\u0002\u00010" - }, - "\u0010": "http://www.vulgumtechus.com/index.php?title=Spécial:Recherche&search=\u0002\u000112", - "ip": "//www.virustotal.com/en/ip-address/\u0002/information/\u000167", - "mb": "http://vtmb.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "ech": "//search.vt.edu/search/pages.html;sa=Search&q=\u0002\u00010", - "kcd": "http://www.vtk.org/doc/nightly/html/class\u0002.html\u00010", - "luug": "//vtluug.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "w": { - "e": "http://www.vwe.nl/zoeken_resultaten.aspx?q=\u0002\u00010", - "r": "//us.vwr.com/store/product?keyword=\u0002\u00010", - "\u0010": "//wiki.voidlinux.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00013" - }, - "y": { - "\u0010": "//www.vajehyab.com/?q=\u0002\u00018", - "avasthit": "//vyavasthit.com/?s=\u0002\u00010" - }, - "z": "//www.vz.lt/section/?template=search&search=\u0002\u00010", - "db": "//www.vandenborre.be/zoekresultaat?query=\u0002&v2\u00010", - "dc": "//developer.valvesoftware.com/w/index.php?search=\u0002 \u000127", - "ik": { - "i": { - "\u0010": "//et.wikipedia.org/w/index.php?search=\u0002 \u00015", - "pedi": { - "o": "//eo.wikipedia.org/w/index.php?search=\u0002\u00010", - "\u0010": "//tr.wikipedia.org/wiki/Special:Search?search=\u0002\u000119" - } - }, - "\u0010": "//www.viki.com/search?q=\u0002\u00010", - "atan": "//www.vikatan.com/search.php?search=\u0002\u00010" - }, - "im": { - "\u0010": "//www.google.com/cse?cx=partner-pub-3005259998294962%3Abvyni59kjr1&q=\u0002\u000133", - "w": "http://vim.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "aw": { - "\u0010": "http://vimawesome.com/?q=\u0002\u00010", - "esome": "http://vimawesome.com/?q=\u0002\u00010" - }, - "eo": "//vimeo.com/search?q=\u0002\u0001117", - "doc": "http://vimdoc.sourceforge.net/search.php?search=\u0002&docs=help\u00013", - "scripts": "http://www.vim.org/scripts/script_search_results.php?keywords=\u0002&script_type=&order_by=rating&direction=descending&search=search\u00010" - }, - "in": { - "\u0010": "http://www.decodethis.com/VINdecoder/65/vin/\u0002\u00010", - "g": "http://www.ving.no/searchresult?q=\u0002\u00010" - }, - "ir": { - "\u0010": "http://ricerca.virgilio.it/ricerca?qs=\u0002\u00010", - "giliomail": "http://mail.virgilio.it/login/?q=\u0002:\u00010", - "tus": "//duckduckgo.com/?q=site:virtus.com+\u0002\u00010", - "ustotal": { - "\u0010": "//www.virustotal.com/url/submission/?force=1&url=\u0002\u000167", - "filesearch": "//www.virustotal.com/en/search?query=\u0002\u00010" - } - }, - "is": { - "o": "//vi.stackexchange.com/search?q=\u0002\u00013", - "\u0010": "http://visuwords.com/?q=\u0002\u00010", - "iondirect": "//www.visiondirect.com.au/search?query=\u0002\u00010", - "itwarrington": "//visitwarrington.com/explore/?type=search-all&search_keywords=\u0002&sort=latest\u00010", - "ualh": "//visualhunt.com/search/instant/?q=\u0002\u00010", - "ual-youtube": "http://www.yasiv.com/youtube#?q=\u0002\u00010", - "uwords": "//visuwords.com/\u0002\u00010" - }, - "la": { - "\u0010": "http://vlasisku.lojban.org/vlasisku/\u0002\u00014", - "sisku": "http://vlasisku.lojban.org/vlasisku/\u0002\u00014" - }, - "lh": "//www.vlh.de/suchergebnis.html?q=\u0002\u00010", - "ml": "//www.viamichelin.com/web/Maps?address=\u0002\u00010", - "rv": "//vrv.co/?q=\u0002\u00016", - "ub": "http://biblio.vub.ac.be/vubissmartweb/List.csp?SearchT1=\u0002&Index1=Vuballewoorden&Database=3_UB01&OpacLanguage=dut&NumberToRetrieve=20&SearchMethod=Find_1&SearchTerm1=test&Profile=Default&PreviousList=Start&PageType=Start&EncodedRequest=p*20W*20*0A*20*B5*86*DF*D6*7E*A7*15*FD*0F*5E&WebPageNr=1&WebAction=NewSearch&StartValue=1&RowRepeat=0&MyChannelCount=\u00010", - "ue": { - "\u0010": "//vuejs.org/v2/search/?q=\u0002\u000112", - "tify": "//vuetifyjs.com/en/components/\u0002#\u0002\u00010" - }, - "uo": "//vuo.org/search/site/\u0002\u000115", - "uw": "http://www.victoria.ac.nz/search?q=\u0002\u00010", - "2ex": "//www.duckduckgo.com/?q=site:v2ex.com/t+\u0002\u00010", - "2ve": "http://www.verb2verbe.com/EnglishConj.aspx?verb=\u0002&tail=&type=query\u00010", - "2vf": "http://www.verb2verbe.com/francais/FrenchConj.aspx?verb=\u0002&tail=&ref=0&type=query\u00010", - "dfn": "http://www.vandale.nl/opzoeken?pattern=\u0002&lang=fn\u00010", - "disk": "http://vdisk.weibo.com/search/?type=public&keyword=\u0002\u00010", - "dnf": "http://www.vandale.nl/opzoeken?pattern=\u0002&lang=nf\u00010", - "iaf": "http://viaf.org/viaf/search?query=local.names+all+%22\u0002%22&stylesheet=/viaf/xsl/results.xsl&sortKeys=holdingscount&maximumRecords=100\u000125", - "iaplay": "//viaplay.com/search?query=\u0002\u00010", - "iasona": "http://www.viasona.cat/cerca?que=\u0002&cerca=&sourceid=duckduckgo\u00010", - "ibed": "//vibed.org/api/search?q=\u0002\u00010", - "ic2": "//vic2.paradoxwikis.com/index.php?search=\u0002\u00010", - "ice": "//www.vice.com/en_us/search?q=\u0002\u00016", - "ici": "//la.wikipedia.org/w/index.php?search=\u0002 \u00010", - "icgov": { - "\u0010": "//www.vic.gov.au/search?q=\u0002\u00010", - "au": "//www.vic.gov.au/search?q=\u0002\u00010" - }, - "ids": "//duckduckgo.com/?q=\u0002&ia=videos&iax=videos\u00011077", - "idal": "//www.vidal.fr/recherche/index/q:\u0002/\u00010", - "idea": "//videa.seznam.cz/?q=\u0002\u00010", - "iden": "//videnskab.dk/s?query=\u0002\u00010", - "ideo": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=videos&iax=videos\u00011077", - "s": { - "\u0010": "//duckduckgo.com/?q=\u0002&ia=videos&iax=1\u000140", - "ift": "http://videosift.com/search?q=\u0002\u00010" - }, - "culinary": "http://www.videoculinary.ru/search/?q=\u0002\u00010", - "detective": "http://www.videodetective.com/Search/Results?id=\u0002\u00010", - "gamegeek": "http://videogamegeek.com/geeksearch.php?action=search&objecttype=videogameunified&q=\u0002&B1=Go\u00010", - "hive": "http://videohive.net/search?utf8=%E2%9C%93&term=\u0002\u00010", - "news": "//www.videonews.com/?s=\u0002\u00010" - }, - "idangel": "http://www.vidangel.com/?s=\u0002\u00016", - "idaxl": "//www.vidaxl.nl/catalogsearch/result/?q=\u0002\u00010", - "idlii": "//www.vidlii.com/results?q=\u0002\u00010", - "igcit": "http://vigilantcitizen.com/?s=\u0002 \u00010", - "ijesti": "http://www.vijesti.me/trazi/?q=\u0002\u00010", - "illain": "http://villains.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "ipon": "//www.vipon.com/promotion/index?search=\u0002\u00010", - "iquipedia": "//ca.wikipedia.org/w/index.php?search=\u0002&title=Especial%3ACerca&go=V%C3%A9s-hi\u00010", - "iul": "http://viu.summon.serialssolutions.com/search?s.q=\u0002\u00010", - "ivo": "http://www.kono.be/cgi-bin/vivo/ViVo.cgi?lingvo=eo&esprimo=\u0002\u00010", - "ivaldi": "//forum.vivaldi.net/search?term=\u0002\u00010", - "iveport": "//www.viveport.com/list/desktop?keyword=\u0002\u00010", - "ivino": "//www.vivino.com/search/wines?q=\u0002\u00010", - "live": "//www.vlive.tv/search/all?query=\u0002\u00013", - "mdocs": "//docs.vmware.com/en/search/#/\u0002\u00010", - "mkb": "//kb.vmware.com/s/global-search/%40uri#q=\u0002\u00010", - "ndb": "http://vndb.org/v/all?sq=\u0002\u0001284", - "nillo": "//vanillo.co/search?q=\u0002\u00010", - "nwiki": "//vi.wikipedia.org/w/index.php?search=\u0002 \u00010", - "rchat": "//vrchat.net/home/search/\u0002\u000110", - "rijuit": "//vrijuit.nl/algemeen/ListerPage.aspx?filter=search(\u0002)\u00010", - "rtnu": "//www.vrt.be/vrtnu/zoeken/#query=\u0002\u00010", - "udu": "//www.vudu.com/content/movies/search?searchString=\u0002\u00010", - "ukajlija": "http://vukajlija.com/pretraga/izraz?s=\u0002\u00010", - "ulners": "//vulners.com/search?query=\u0002\u00010", - "ulnhub": "//www.vulnhub.com/?q=\u0002&sort=date-asc&type=vm\u00010" - }, - "w": { - "0": "//www.wikizero.com/search.php?s=\u0002&lang=en\u00010", - "2": { - "\u0010": "//en.wiki2.org/w/index.php?search=\u0002\u00010", - "fr": "//fr.wiki2.org/w/index.php?search=\u0002\u00010" - }, - "3": { - "c": "/?q=\u0002+site:w3.org\u00018", - "d": "//welovedevs.com/app/companies/search?query=\u0002&type=company\u00010", - "s": { - "\u0010": "//duckduckgo.com/?q=\u0002+site:w3schools.com\u000143", - "cn": "http://www.google.com/search?q=\u0002+site:w3school.com.cn\u00010", - "att": "//www.w3schools.com/tags/att_\u0002.asp\u00010", - "chools": "http://duckduckgo.com/?q=\u0002+site:w3schools.com\u00015", - "tag": "http://www.w3schools.com/tags/tag_\u0002.asp\u000112" - }, - "v": "//validator.w3.org/nu/?doc=\u0002\u00010", - "\u0010": "/?q=\u0002+site:w3.org\u00018", - "w": "//map.what3words.com/\u0002\u000140", - "kaskus": "http://www.kaskus.co.id/search/forum?q=\u0002\u00010" - }, - "a": { - "d": { - "\u0010": "http://www.wad-archive.com/search?o=d&q=\u0002\u00013", - "oku": "http://www.wadoku.de/search/\u0002\u000144" - }, - "i": { - "\u0010": "//www.w3.org/WAI/search/?q=\u0002\u00010", - "tbutwhy": "http://waitbutwhy.com/?s=\u0002\u00010", - "trose": "http://www.waitrose.com/shop/HeaderSearchCmd?searchTerm=\u0002\u000113" - }, - "m": "http://m.wolframalpha.com/input/?i=\u0002\u000130", - "n": { - "\u0010": "//an.wikipedia.org/w/index.php?search=\u0002&title=Especial%3AMirar\u000115", - "dsk": "//www.wikiwand.com/sk/\u0002\u00010", - "elo": "http://wanelo.com/search?query=\u0002\u00010" - }, - "p": { - "f": "//www.westonaprice.org/?s=\u0002\u00010", - "p": "//api.whatsapp.com/send?phone=\u0002&text=\u000188", - "\u0010": "//www.wap.org/search?q=\u0002\u00010" - }, - "r": { - "u": "http://www.world-art.ru/search.php?public_search=\u0002&global_sector=all\u00010", - "\u0010": "//ar.wikipedia.org/w/index.php?search=\u0002\u00017", - "frame": "http://warframe.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u000195", - "hammer": "//totalwarwarhammer.gamepedia.com/index.php?search=\u0002\u00010", - "wick": "//search.warwick.ac.uk/?q=\u0002\u00010" - }, - "\u0010": "//www.wolframalpha.com/input/?i=\u0002\u000117", - "z": "//az.wikipedia.org/wiki/\u0002\u00010", - "ls": "//als.wikipedia.org/w/index.php/search=\u0002\u00010", - "ve": "http://wave.webaim.org/report#/\u0002\u00013", - "apt": "//waapt.wiki.tropi.us/wiki/Special:Search/\u0002\u00010", - "cotrib": "http://www.wacotrib.com/search/?sd=desc&l=25&s=start_time&f=html&t=article%2Cvideo%2Cyoutube%2Ccollection&app=editorial&nsa=eedition&q=\u0002\u00010", - "fresh": "//www.wafresh.com.au/search.php?Search=&search_query=\u0002\u00010", - "koopa": "http://social.wakoopa.com/search?query=\u0002\u00010", - "lky": "http://walkypedia.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "lkscore": "http://www.walkscore.com/score/\u0002\u00014", - "lla": { - "\u0010": "//wallhaven.cc/search?q=\u0002\u00010", - "pop": "//es.wallapop.com/search?keywords=\u0002\u000114" - }, - "llh": { - "\u0010": "//wallhaven.cc/search?q=\u0002\u00010", - "aven": "//wallhaven.cc/search?q=\u0002\u00010", - "eaven": "//wallhaven.cc/search?q=\u0002\u00010" - }, - "llbase": "//wallhaven.cc/search?q=\u0002\u00010", - "llpaper": "http://google.com/search?tbm=isch&imgsz=xxlarge&gbv=2&safe=off&q=\u0002+wallpaper&btnG=Search+Images&tbs=imgo:1\u00019", - "lmart": { - "\u0010": "//www.walmart.com/search/?query=\u0002\u0001607", - "ca": "http://www.walmart.ca/search/\u0002\u000117" - }, - "lpha": "//www.wolframalpha.com/input/?i=\u0002\u000117", - "lrus": "//thewalrus.ca/?s=\u0002\u00010", - "schbaer": "//www.waschbaer.de/shop/frontend/search/result?q=\u0002\u00010", - "shingtonpost": "http://www.washingtonpost.com/ac2/wp-dyn/NewsSearch?sb=-1&st=\u0002\u00015", - "tch": { - "\u0010": "//www.youtube.com/results?search_query=\u0002\u00011113", - "es": "//myrwatches.com/?s=\u0002 &post_type=product\u00010", - "count": "http://www.watchcount.com/completed.php?bkw=\u0002&bcat=0&bcts=&sfsb=Show+Me%21&csbin=all&cssrt=ts&bslr=&bnp=&bxp=\u00010", - "kin": "//watchkin.com/search.php?q=\u0002\u00014", - "tower": "http://wol.jw.org/en/wol/qt/r1/lp-e?q=\u0002\u00010" - }, - "terstones": "//www.waterstones.com/books/search/term/\u0002\u00015", - "tertank": "//watercontainerstore.com/search?type=product&q=\u0002\u00010", - "tson": "http://www.watson.ch/u/search?#\u0002\u00010", - "ttpad": "http://www.wattpad.com/stories/search/\u0002\u000122", - "yback": { - "\u0010": "//web.archive.org/web/*/\u0002\u000157", - "machine": "//web.archive.org/web/*/\u0002\u000157" - }, - "yfair": { - "\u0010": "http://www.wayfair.com/keyword.php?keyword=\u0002\u000119", - "ca": "//www.wayfair.ca/keyword.php?keyword=\u0002&command=dosearch&new_keyword_search=true\u00010" - }, - "yne": "//wayne.edu/search/?type=all&q=\u0002\u00010" - }, - "b": { - "3": "//wb3.io/\u0002\u00010", - "d": { - "e": "//de.wikibooks.org/w/index.php?search=\u0002\u00010", - "\u0010": "//www.reddit.com/r/worldbuilding/?q=\u0002&restrict_sr=on&include_over_18=on&sort=relevance&t=all\u00010" - }, - "g": { - "\u0010": "//bg.wikipedia.org/wiki/Special:Search?search=\u0002\u00015", - "w": "//mywiki.wooledge.org/EnglishFrontPage?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00010" - }, - "i": "http://boilerinvasion.org/search?search=\u0002\u00010", - "j": "//ja.wikibooks.org/w/index.php?search=\u0002&title=特別%3A検索&go=表示\u00010", - "m": { - "l": "//ml.wikibooks.org/wiki/special:search/\u0002\u00010", - "p": "//webmasterparadies.de/?s=\u0002\u00010", - "\u0010": "//web.archive.org/web/*/\u0002\u000157" - }, - "r": "//br.wikipedia.org/w/index.php?search=\u0002\u00014", - "s": "//web.archive.org/save/*/\u0002\u00013", - "\u0010": "http://en.wikibooks.org/wiki/Special:Search?search=\u0002\u000124", - "ur": "http://www.wbur.org/search?q=\u0002\u00010", - "afc": "//www.wba.co.uk/search/?q=\u0002\u00010" - }, - "c": { - "a": { - "t": "//ca.wikipedia.org/w/index.php?search=\u0002\u000142", - "\u0010": "//ca.wikipedia.org/wiki/Special:Search?search=\u0002\u0001118", - "ch": "//www.worldcubeassociation.org/competitions?utf8=%E2%9C%93®ion=\u0002&search=&state=present&year=all+years&display=list\u00017", - "naan": "http://www.wikicanaan.org/wiki/bienvenue?do=search&id=\u0002&fulltext=Recherche\u00010" - }, - "i": "http://www.worldcat.org/identities/find?fullName=\u0002\u00010", - "l": "//www.warcraftlogs.com/search/?term=\u0002\u00010", - "m": { - "e": "//spark.apache.org/docs/latest/api/python/search.html?q=\u0002\u00019", - "\u0010": "http://whocallsme.com/nb/search.aspx?q=\u0002\u00010" - }, - "s": "//cs.wikipedia.org/w/index.php?search=\u0002\u0001126", - "\u0010": "http://www.weather.com/search/enhancedlocalsearch?where=\u0002&loctypes=1/5/9/11/13/19/\u000145", - "u": "http://whocalled.us/lookup/\u0002\u00010", - "y": "//cy.wikipedia.org/wiki/\u0002\u00010", - "z": "//cs.wikipedia.org/w/index.php?search=\u0002&title=Speci%C3%A1ln%C3%AD%3AHled%C3%A1n%C3%AD&go=J%C3%ADt+na\u000174", - "cls": "http://catalog.wccls.org/polaris/search/searchresults.aspx?term=\u0002\u00010", - "oulls": "//www.whitcoulls.co.nz/search?q=\u0002\u00010" - }, - "d": { - "a": "http://da.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000147", - "e": { - "\u0010": "//de.wikipedia.org/w/index.php?search=\u0002\u00018852", - "x": "http://es.pokemon.wikia.com/wiki/Especial:Buscar?query=\u0002\u00010" - }, - "g": "http://en.wikipedia.org/w/index.php?title=Special:Search&search=\u0002+discography&go=Go\u00010", - "k": "//da.wikipedia.org/w/index.php?search=\u0002\u000116", - "r": "http://www.wordreference.com/es/translation.asp?tranword=\u0002 \u000145", - "t": { - "k": "//www.whatdotheyknow.com/search/\u0002/all\u00013", - "\u0010": "//www.wikidata.org/w/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u000134", - "prs": "http://wdtprs.com/blog/?s=\u0002\u00010" - }, - "\u0010": "//www.wikidata.org/w/index.php?search=\u0002\u0001804", - "x": "http://es.pokemon.wikia.com/wiki/WikiDex=\u0002\u00010", - "ic": "//en.wiktionary.org/wiki/\u0002\u0001144" - }, - "e": { - "b": { - "o": { - "\u0010": "//www.webopedia.com/sgsearch/results?q=\u0002\u00010", - "ftrust": "//www.mywot.com/en/scorecard/\u0002\u00010" - }, - "\u0010": "//www.webopedia.com/sgsearch/results?q=\u0002\u00010", - "md": "http://www.webmd.com/search/search_results/default.aspx?query=\u0002\u00017", - "st": { - "a": { - "\u0010": "http://websta.me/search/\u0002 \u00010", - "ts": "http://www.webstatsdomain.com/?q=\u0002 \u00010", - "gram": "http://web.stagram.com/search/\u0002\u00014" - }, - "\u0010": "//www.webstaurantstore.com/search/\u0002.html\u00010", - "ers": "http://www.webster-dictionary.org/definition/\u0002\u00014", - "ore": "http://www.webstore.com/search.php?option=basic_search&basic_search=\u0002&form_basic_search=Search\u00013" - }, - "1913": "//www.websters1913.com/words/\u0002\u000112", - "2py": "http://web2py.com/books/default/search/29?search=\u0002\u00010", - "archive": "//web.archive.org/web/*/\u0002\u000157", - "bco": "http://webbco.us/search.php?q=\u0002\u00010", - "bkoll": "//webbkoll.dataskydd.net/en/results?url=\u0002\u00013", - "bspy": "//www.webbspy.com/?s=\u0002\u00013", - "cams": "http://www.webcams.travel/search/\u0002\u00015", - "comp": { - "\u0010": "//www.webcomponents.org/search/\u0002\u00010", - "onents": "//www.webcomponents.org/search/\u0002\u00010" - }, - "crawler": "http://www.webcrawler.com/search/web?fcoid=417&fcop=topnav&fpid=2&aid=3ebe8f19-0a9d-425b-a3ff-9d59e6c12c5e&ridx=2&q=\u0002&ql=&ss=t\u00010", - "designerdepot": "http://www.webdesignerdepot.com/?q=\u0002\u00010", - "ext": "//developer.mozilla.org/en-US/search?q=\u0002&topic=addons\u00010", - "hallen": "//www.webhallen.com/se/search?searchString=\u0002&sort=searchRating\u00010", - "lio": { - "e": "http://ejje.weblio.jp/content/\u0002\u0001162", - "j": "http://www.weblio.jp/content/\u0002\u00010", - "t": "http://thesaurus.weblio.jp/content/\u0002\u00010", - "\u0010": "http://www.weblio.jp/content/\u0002\u00010" - }, - "min": "http://webmineral.com/cgi-bin/search/search.pl?sitesearch=&Terms=\u0002&x=0&y=0\u00010", - "novel": "//www.webnovel.com/search?keywords=\u0002\u00010", - "ref": "//webref.ru/search/?s=\u0002&cx=partner-pub-0708135098984815%3A9970767379&cof=FORID%3A10&ie=UTF-8\u00010", - "tender": "http://duckduckgo.com/?q=site%3Awebtender.com+\u0002\u00010", - "toon": { - "\u0010": "//www.webtoons.com/search?keyword=\u0002\u000110", - "s": "//www.webtoons.com/search?keyword=\u0002\u000110" - }, - "utation": "http://www.webutations.org/go/review/\u0002\u00010", - "xicon": { - "\u0010": "http://webxicon.org/search.php?q=\u0002\u00010", - "en": "http://webxicon.org/search.php?l=-1&l2=3&q=\u0002\u00010", - "fi": "http://webxicon.org/search.php?l=-1&l2=17&q=\u0002\u00010", - "se": "http://webxicon.org/search.php?l=-1&l2=15&q=\u0002\u00010", - "su": "http://webxicon.org/search.php?l=-1&l2=17&q=\u0002\u00010", - "sv": "http://webxicon.org/search.php?l=-1&l2=15&q=\u0002\u00010" - } - }, - "l": { - "\u0010": "//el.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00016", - "adee": "//job.weladee.com/?q=\u0002\u00010", - "klidwoord": "//www.welklidwoord.nl/\u0002\u00010", - "tbild": "//www.weltbild.de/suche?q=\u0002\u00010" - }, - "n": { - "\u0010": "http://en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "fr": "http://www.wordreference.com/enfr/\u0002\u000168" - }, - "o": "http://eo.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000131", - "r": { - "\u0010": "//www.werstreamt.es/filme-serien?q=\u0002&action_results=suchen\u000141", - "streamt": "//www.werstreamt.es/filme-serien?q=\u0002\u000121" - }, - "s": { - "1": "http://wesleyan.summon.serialssolutions.com/search?utf8=✓&s.q=\u0002\u00010", - "u": "http://www.wesleyan.edu/search/search-results.html?cx=001254463385620737445%3Anbar83le1bc&cof=FORID%3A11&ie=UTF-8&q=\u0002\u00010", - "\u0010": "http://es.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00011417", - "lib": "http://wesleyan.summon.serialssolutions.com/search?utf8=✓&s.q=\u0002\u00010", - "telm": "http://www.westelm.com/search/results.html?words=\u0002\u00010" - }, - "u": { - "s": "//eu.wikipedia.org/wiki/Special:Search?search=\u0002\u00010", - "\u0010": "//eu.wikipedia.org/wiki/\u0002\u00013" - }, - "\u0010": "http://en.wikipedia.org/wiki/\u0002\u0001709", - "ek": "//duckduckgo.com/?q=\u0002&df=w\u000111", - "ather": { - "\u0010": "http://www.weather.com/search/enhancedlocalsearch?where=\u0002&loctypes=1/5/9/11/13/19/&from=hdr\u0001198", - "gc": "//weather.gc.ca/city/jump_e.html?city=\u0002\u00010", - "bug": "http://weather.weatherbug.com/Common/SearchResults.html?loc=\u0002&nav_section=1&zcode=z6169&lang_id=en-us&country=US&x=0&y=0&is_search=true\u00013", - "channel": "http://www.weather.com/search/enhancedlocalsearch?where=\u0002&loctypes=1/5/9/11/13/19/\u000145", - "spark": "http://weatherspark.com/#!dashboard;q=\u0002\u00010" - }, - "athforyou": "//www.weatherforyou.com/reports/index.php?forecast=zandh&pands=\u0002&Submit=Get+Weather\u00010", - "eronline": "http://www.weeronline.nl/Go/Search/SearchResults?searchCriteria=\u0002&pageIndex=0&searchAction=WeatherInformation\u00010", - "ezer": "http://weezerpedia.com/wiki/index.php?search=\u0002\u00010", - "gmans": "//www.wegmans.com/search.html?searchKey=\u0002\u00015", - "heartit": "http://weheartit.com/search?query=\u0002\u00010", - "hkamp": "http://www.wehkamp.nl/Winkelen/SearchOverview.aspx?N=186&Nty=1&Ntk=ART&VIEW=Grid&Ntt=\u0002\u00010", - "ibo": "http://s.weibo.com/weibo/\u0002?frm=opensearch\u000119", - "ixin": "//weixin.sogou.com/weixin?type=2&query=\u0002\u00010", - "tten": "http://wetten.overheid.nl/zoeken/rs/2,3,4/titel/\u0002/\u00010", - "tter": { - "\u0010": "http://www.wetter.com/suche/?q=\u0002\u0001102", - "de": "http://www.wetter.de/suche.html?search=\u0002\u00010", - "online": "//www.wetteronline.de/wetter/\u0002\u00016" - } - }, - "f": { - "a": "//fa.wikipedia.org/w/index.php?search=\u0002\u000118", - "\u0010": "//fr.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001595", - "i": "//fi.wikipedia.org/wiki/\u0002\u0001322", - "m": "http://www.wholefoodsmarket.com/site_search/\u0002 \u00010", - "o": { - "\u0010": "http://fo.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "otball": "http://www.worldfootball.net/search/?q=\u0002&kind=1\u00010" - }, - "r": { - "\u0010": "//fr.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001595", - "en": "http://www.wordreference.com/fren/\u0002\u000180", - "ame": "http://warframe.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u000195" - }, - "t": "//warframe.market/items/\u0002\u000113", - "w": { - "\u0010": "http://warframe.wikia.com/wiki/Special:WikiaSearch?search=\u0002&fulltext=Search\u000153", - "iki": "http://warframe.wikia.com/wiki/Special:Search?search=\u0002\u000110" - }, - "y": "//fy.wikipedia.org/w/index.php?search=\u0002\u00010", - "de": { - "p": "http://www.weltfussball.de/suche/?q=\u0002&kind=1\u00010", - "t": "http://www.weltfussball.de/suche/?q=\u0002&kind=2\u00010", - "\u0010": "http://de.warframe.wikia.com/wiki/Spezial:Suche?search=\u0002\u00010", - "hu": "http://www.webforditas.hu/szotar.php?S=\u0002&l1=de&l2=hu\u00010" - }, - "en": { - "\u0010": "http://warframe.wikia.com/wiki/Special:Search?query=\u0002\u000154", - "hu": "http://www.webforditas.hu/szotar.php?S=\u0002&l1=en&l2=hu\u00010" - }, - "eet": "http://www.wikifeet.com/search/?query=\u0002\u00010", - "hude": "http://www.webforditas.hu/szotar.php?S=\u0002&l1=hu&l2=de\u00010", - "huen": "http://www.webforditas.hu/szotar.php?S= \u0002&l1=hu&l2=en\u00010" - }, - "g": { - "a": { - "\u0010": "//ga.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "l": "//gl.wikipedia.org/w/index.php?search=\u0002\u00010" - }, - "e": "//de.wikipedia.org/w/index.php?search=\u0002\u00018852", - "l": "//gl.wikipedia.org/w/index.php?search=\u0002\u00010", - "r": "//el.wikipedia.org/wiki/Special:Search?search=\u0002 &go=Go&go=Go&go=Go\u00015", - "s": "http://www.walgreens.com/search/results.jsp?Ntt=\u0002&x=0&y=0\u00010", - "\u0010": "//www.wunderground.com/cgi-bin/findweather/getForecast?query=\u0002\u00014", - "w": "http://wiki.wargaming.net/en/index.php?search=\u0002\u00010", - "bh": "http://wgbhnews.org/search/google/\u0002 \u00010", - "ov": "http://forecast.weather.gov/zipcity.php?inputstring=\u0002 \u000164" - }, - "h": { - "c": "//classic.wowhead.com/search?q=\u0002\u00010", - "e": { - "s": "//es.wikihow.com/wikiHowTo?search=\u0002\u00010", - "\u0010": "//he.wikipedia.org/w/index.php?search=\u0002\u000144" - }, - "h": "//www.webhostinghub.com/help/search?searchword=\u0002\u00010", - "i": { - "p": "//www.wordhippo.com/what-is/another-word-for/\u0002.html\u000164", - "\u0010": "http://hi.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "ch": { - "\u0010": "//search.which.co.uk/search?w=\u0002\u00010", - "it": "//www.getwhichit.com/whichitapp.html#!/Search/\u0002\u00010" - }, - "tl": "http://www.archives.nd.edu/cgi-bin/wordz.pl?keyword=\u0002\u000110", - "rlpool": "http://forums.whirlpool.net.au/forum/?action=search&q=\u0002\u000113", - "skyde": "//www.whisky.de/shop/index.php?&cl=search&searchparam=\u0002\u00010", - "sper": "http://whisper.sh/search?q=\u0002\u00015", - "takers": "http://www.archives.nd.edu/cgi-bin/wordz.pl?english=\u0002\u00010", - "tetailproperties": "//www.whitetailproperties.com/hunting-land/filtered-search?search_mode=all&keywords=\u0002\u00010" - }, - "o": { - "w": { - "\u0010": "http://www.wikihow.com/Special:LSearch?search=\u0002\u00017", - "es": "//es.wikihow.com/wikiHowTo?search=\u0002\u00010" - }, - "\u0010": "http://www.who.is/whois/\u0002 \u000112", - "is": { - "\u0010": "//whois.domaintools.com/\u0002\u0001617", - "bg": "http://www.whoisbg.com/?domain=\u0002\u00010", - "br": "//registro.br/cgi-bin/whois/?qr=\u0002\u00010", - ".com": "http://www.whois.com/search.php?query=\u0002\u000146" - }, - "pm": "//who.pm/\u0002\u00010", - "hosts": "http://www.whoishostingthis.com/?q=\u0002\u00010", - "int": "//www.who.int/search?query=\u0002\u00010", - "izh": "http://whoiz.herokuapp.com/lookup?url=\u0002\u00010", - "nix": "http://kkkkkkkkkk63ava6.onion/w/index.php?search=\u0002\u00010", - "sampled": "http://whosampled.com/search/?q=\u0002\u0001126", - "scalltw": "//whoscall.com/en-US/tw/\u0002\u00010", - "scored": "http://www.whoscored.com/Search/?t=\u0002\u00015" - }, - "r": "http://hr.wikipedia.org/w/index.php?search=\u0002\u000115", - "t": "//www.who-hosts-this.com/?s=\u0002\u00010", - "u": "//hu.wikipedia.org/w/index.php?search=\u0002&button=&title=Speci%C3%A1lis%3AKeres%C3%A9s\u000165", - "\u0010": "http://www.wikihow.com/wikiHowTo?search=\u0002\u000158", - "w": "http://wikihow.com/wikiHowTo?search=\u0002\u00010", - "de": "//de.wikihow.com/wikiHowTo?search=\u0002:\u00010", - "fr": "//fr.wikihow.com/wikiHowTo?search=\u0002\u00010", - "lp": "//forums.whirlpool.net.au/forum/?action=search&q=\u0002\u00014", - "nl": "//nl.wikihow.com/wikiHowTo?search=\u0002\u00010", - "ale": "//store.whale.naver.com/search/\u0002\u00010", - "ats": "//www.vocabulary.com/dictionary/\u0002\u00010", - "atif": "http://duckduckgo.com/?q=\u0002+site:what-if.xkcd.com\u00010", - "atis": "http://whatis.techtarget.com/wsearchResults/1,290214,sid9,00.html?query=\u0002\u00013", - "atcms": "http://whatcms.org/?s=\u0002\u00015", - "atruns": "//www.whatruns.com/website/\u0002\u00010", - "atupintown": "//whatupintown.com/search/?q=\u0002\u00010", - "foods": "http://whfoods.org/sitesearch.php?sstr=\u0002&how=1\u00010" - }, - "i": { - "a": "http://www.wiki-aventurica.de/index.php?title=Spezial:Suche&search=\u0002\u00010", - "d": "//id.wikipedia.org/w/index.php?search=\u0002\u000112", - "e": "//www.wie-sagt-man-noch.de/synonyme/\u0002.html\u00013", - "m": { - "p": "http://www.wimp.com/search/\u0002\u00010", - "\u0010": "//commons.wikimedia.org/w/index.php?search=\u0002\u0001128" - }, - "n": { - "c": "http://incubator.wikimedia.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010", - "d": { - "\u0010": "//www.wind.gr/search?_dyncharset=utf-8&Dy=1&Ntt=\u0002\u00010", - "ev": "//wpdev.uservoice.com/search?query=\u0002\u00010", - "owparts": "http://www.windowparts.co.uk/catalogsearch/result/?q=\u0002\u00010", - "owsphone": "//www.microsoft.com/en-us/search/result.aspx?q=\u0002&form=apps\u00010", - "owsreport": "http://windowsreport.com/?s=\u0002\u00010" - }, - "e": { - "\u0010": "http://winehq.org/search?cx=partner-pub-0971840239976722%3Aw9sqbcsxtyf&cof=FORID%3A10&q=\u0002\u000125", - "hq": "//www.winehq.org/search?q=\u0002\u000131" - }, - "\u0010": "http://windows.microsoft.com/en-US/windows/search#q=\u0002\u00015", - "fu": "http://winfuture.de/suche/?cx=001589123709424097799%3Asbdrzmcykc8&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002\u00010", - "store": "http://windows.microsoft.com/en-us/windows/search#q=\u0002&s=Store\u00010" - }, - "s": { - "h": "//www.wish.com/search/\u0002\u00010", - "\u0010": "//is.wikipedia.org/w/index.php?search=\u0002\u00014", - "edir": "http://www.wisemarketplace.org/k:\u0002\u00010", - "epick": "//themindsjournal.com/?s=\u0002\u00010", - "sen": "http://www.wissen.de/wissensserver/search?keyword=\u0002\u00010" - }, - "t": { - "\u0010": "http://it.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00011032", - "gr": "//el.m.wiktionary.org/wiki/\u0002\u00010", - "pl": "//pl.wiktionary.org/wiki/\u0002\u00010" - }, - "\u0010": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "by": "//wiby.me/?q=\u0002\u00018", - "fr": "//fr.wiktionary.org/wiki/\u0002\u00010", - "ht": "http://www.whoishostingthis.com/?q=\u0002\u00010", - "ki": { - "a": { - "\u0010": "//community-search.fandom.com/wiki/Special:Search?search=\u0002\u00010", - "rt": "http://wikiart.org/en/search/\u0002/1\u00010", - "nswers": "http://answers.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns112=1&ns500=1&ns502=1\u00010", - "rms": "http://www.wikiarms.com/guns?q=\u0002\u00010" - }, - "c": { - "\u0010": "//commons.wikimedia.org/w/index.php?search=\u0002\u0001128", - "hip": { - "s": "//en.wikichip.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010", - "\u0010": "//en.wikichip.org/w/index.php?search=\u0002\u00010" - }, - "ook": "//en.wikibooks.org/wiki/Special:Search?search=\u0002&prefix=Cookbook%3A&fulltext=Search+Cookbook&fulltext=Search\u00010" - }, - "t": { - "\u0010": "http://wikitravel.org/en/Special:Search?search=\u0002&go=Go\u000124", - "ox": "http://curriculum.toxicology.wikispaces.net/search/view/\u0002\u00010", - "ravel": "http://wikitravel.org/en/Special:Search?search=\u0002&go=Go\u000124", - "roid": "http://metroid.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "\u0010": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "br": "//pt.wikipedia.org/wiki/\u0002\u00010", - "de": { - "\u0010": "http://de.wikipedia.org/w/index.php?search=\u0002 \u0001796", - "x": "//www.wikidex.net/index.php?search=\u0002\u0001138", - "vi": "//wikidevi.com/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010" - }, - "en": "//en.wikipedia.org/w/index.php?search=\u0002&title=Special:Search\u0001837", - "es": "//es.wikipedia.org/w/index.php?search=\u0002\u000190", - "fr": "//fr.wikipedia.org/wiki/Special:Search?search=\u0002\u0001275", - "id": "//id.wikipedia.org/w/index.php?search=\u0002 \u00010", - "ko": "//ko.wikipedia.org/wiki/\u0002\u00014", - "nl": "//nl.wikipedia.org/w/index.php?search=\u0002\u000113", - "pt": "//pt.wikipedia.org/wiki/\u0002\u00010", - "ru": "//ru.wikipedia.org/w/index.php?search=\u0002\u00014", - "vg": "http://wiki.vg/index.php?search=\u0002\u00010", - "books": "http://en.wikibooks.org/w/index.php?title=Special%3ASearch&search=\u0002\u000113", - "bound": "http://wikibound.info/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010", - "data": "//www.wikidata.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u0001129", - ".de": "//de.wikipedia.org/w/index.php?search=\u0002\u00018852", - ".pl": "//pl.wikipedia.org/wiki/\u0002\u00017", - ".splunk": "http://wiki.splunk.com/Special:SplunkSearch/wiki?q=\u0002\u00010", - "feet": "//www.wikifeet.com/search/\u0002\u00010", - "fur": "//en.wikifur.com/wiki/Special:Search?search=\u0002&go=Go\u00016", - "how": "//www.wikihow.com/wikiHowTo?search=\u0002\u000155", - "hybris": "//wiki.hybris.com/dosearchsite.action?queryString=\u0002\u00010", - "index": "http://wikiindex.org/index.php?search=\u0002\u00010", - "leaks": "//search.wikileaks.org/?q=\u0002\u00010", - "lengua": "http://www.wikilengua.org/index.php/Especial:Buscar?search=\u0002&fulltext=Buscar\u00010", - "loc": "http://www.wikiloc.com/wikiloc/find.do?q=\u0002\u00010", - "mapia": "http://www.wikimapia.org/#search=\u0002\u00010", - "mini": "//fr.wikimini.org/w/index.php?search=\u0002&title=Sp%C3%A9cial%3ARecherche&fulltext=Rechercher\u00010", - "moon": "http://wikimoon.org/index.php?search=\u0002\u00010", - "news": "http://en.wikinews.org/w/index.php?title=Special%3ASearch&redirs=0&search=\u0002\u00010", - "painting": { - "s": "http://www.wikipaintings.org/en/search/\u0002/1\u00010", - "\u0010": "http://www.wikipaintings.org/en/search/\u0002/1\u00010" - }, - "pedia": { - "\u0010": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "de": "//de.wikipedia.org/w/index.php?search=\u0002\u00018852", - "it": "//it.wikipedia.org/w/index.php?search=\u0002\u000110" - }, - "pediocracy": "http://wikipediocracy.com/?s=\u0002\u00010", - "quote": "//en.wikiquote.org/w/index.php?search=\u0002\u000134", - "rby": "http://wikirby.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000167", - "rhymer": "http://wikirhymer.com/words/\u0002\u00010", - "sco": "//sco.wikipedia.org/w/index.php?search=\u0002\u00010", - "search": "http://www.wiki.com/results1.htm?cx=009420061493499222400%3Ae8sof1xaq-u&q=\u0002&btnG=Wiki+Search&cof=GIMP%3A009900%3BT%3A000000%3BALC%3AFF9900%3BGFNT%3AB0B0B0%3BLC%3A003F7D%3BBGC%3AFFFFFF%3BVLC%3A666666%3BGALT%3A36A200%3BFORID%3A9%3B&as_q=on\u00010", - "simple": "//simple.wikipedia.org/wiki/Special:Search?search=\u0002\u00010", - "source": "//en.wikisource.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000132", - "species": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "sum": "http://www.wikisummaries.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "versity": "//en.wikiversity.org/w/index.php?search=\u0002\u00010", - "voyage": { - "\u0010": "http://en.wikivoyage.org/w/index.php?search=\u0002\u000182", - "de": "//de.wikivoyage.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "el": "//el.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "en": "//en.wikivoyage.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "es": "//es.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "fr": "//fr.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "he": "//he.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "it": "//it.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "nl": "//nl.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "pl": "//pl.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "pt": "//pt.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "ro": "//ro.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "ru": "//ru.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "sv": "//sv.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "uk": "//uk.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "vi": "//vi.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "zh": "//zh.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010" - }, - "-vn": "//vi.wikipedia.org/w/index.php?search=\u0002\u00010", - "wand": "http://www.wikiwand.com/en/\u0002\u000145", - "zimbra": "//wiki.zimbra.com/index.php?search=\u0002\u00010", - "zionario": "//it.wiktionary.org/wiki/\u0002\u00010" - }, - "kt": { - "\u0010": "http://en.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u0001912", - "br": "//br.wiktionary.org/w/index.php?search=\u0002\u00010", - "de": "http://de.wiktionary.org/wiki/Special:Search?search=\u0002&go=Go\u0001382", - "en": "http://en.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u0001912", - "eo": "//eo.wiktionary.org/w/index.php?search=\u0002\u00010", - "es": "//es.wiktionary.org/w/index.php?search=\u0002\u00015", - "fr": "//fr.wiktionary.org/wiki/\u0002\u00010", - "gr": "//el.m.wiktionary.org/wiki\u0002\u00010", - "hu": "//hu.wiktionary.org/w/index.php?search=\u0002&title=Speci%C3%A1lis%3AKeres%C3%A9s\u00010", - "it": "http://it.wiktionary.org/w/index.php?search=\u0002&title=Speciale%3ARicerca\u00010", - "ja": "//ja.wiktionary.org/wiki/\u0002\u00013", - "ko": "//ko.wiktionary.org/wiki/\u0002\u00010", - "la": "//la.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u00010", - "nl": "//nl.wiktionary.org/w/index.php?search=\u0002&title=Speciaal%3AZoeken\u0001120", - "no": "//no.wiktionary.org/w/index.php?search=\u0002\u00010", - "pt": "//pt.wiktionary.org/wiki/\u0002\u00010", - "ru": "//ru.wiktionary.org/w/index.php?search=\u0002\u00014", - "sv": "//sv.wiktionary.org/w/index.php?search=\u0002&title=Special%3AS%C3%B6k\u000124", - "ionary": "http://en.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u0001912" - }, - "on": "http://www.wionews.com/search?q=\u0002\u00014", - "re": { - "d": "//www.wired.com/search/?q=\u0002&page=1&sort=score\u00016", - "\u0010": "//www.thewire.co.uk/search/?q=\u0002\u00010", - "cutter": "http://thewirecutter.com/search/?s=\u0002\u0001143" - }, - "zh": "//zh.wikipedia.org/w/index.php?search=\u0002\u000117", - "ckes": "//www.wickes.co.uk/search?text=\u0002\u00010", - "ctionary": "//en.wiktionary.org/wiki/\u0002\u0001144", - "-fi": "http://fi.wikipedia.org/w/index.php?search=\u0002 \u00010", - "ggle": "http://www.wiggle.co.uk/?s=\u0002\u000110", - "kru": "//ru.wiktionary.org/w/index.php?search=\u0002\u00014", - "ley": "//www.onlinelibrary.wiley.com/action/doSearch?AllField=\u0002\u00013", - "lko": "http://www.wilko.com/search?q=\u0002\u00014", - "llh": { - "\u0010": "http://blog.miniasp.com/search.aspx?q=\u0002\u00010", - "aben": "http://www.willhaben.at/iad/kaufen-und-verkaufen/marktplatz?keyword=\u0002&x=0&y=0\u0001171" - }, - "lliamssonoma": "http://www.williams-sonoma.com/search/results.html?words=\u0002\u00010", - "ringa": "//wiringa.nl/search?q=\u0002\u00010", - "ringherlant": "http://www.wiringherlant.nl/?s=\u0002\u00010" - }, - "j": { - "a": "http://ja.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001401", - "\u0010": "//ja.wikipedia.org/wiki/\u0002\u0001164", - "ec": "http://www.wjec.co.uk/search/pf_search.php?q=\u0002\u00010", - "vf": "//wiki.jvflux.com/index.php?title=Spécial:Recherche&search=\u0002\u00010" - }, - "k": { - "b": "//bugs.webkit.org/buglist.cgi?quicksearch=\u0002\u00010", - "d": { - "\u0010": "//wikidevi.com/w/index.php?search=\u0002\u00010", - "x": "//www.wikidex.net/index.php?title=Especial:Buscar&search=\u0002\u000132" - }, - "k": "//kk.wikipedia.org/w/index.php?search=\u0002\u00010", - "l": { - "t": "//lt.wiktionary.org/w/index.php?search=\u0002\u00010", - "\u0010": "//www.wikiloc.com/wikiloc/find.do?q=\u0002\u00010" - }, - "m": "//en.m.wikipedia.org/wiki/\u0002\u00017", - "n": "//kn.wikipedia.org/w/index.php?search=\u0002\u00010", - "o": "//ko.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000179", - "p": "http://www.wykop.pl/szukaj/\u0002/?\u000135", - "s": { - "p": "//species.wikimedia.org/w/index.php?search=\u0002\u00010", - "\u0010": "//species.wikimedia.org/w/index.php?search=\u0002\u00010" - }, - "u": "//en.wikiversity.org/w/index.php?search=\u0002\u00010", - "\u0010": "//en.wikipedia.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00011837", - "an": "http://nl.wikisage.org/w/index.php?search=\u0002&title=Speciaal%3AZoeken&go=OK\u00010", - "it": "//it.wiktionary.org/w/index.php?search=\u0002\u00010", - "tde": "http://de.wiktionary.org/w/index.php?search= \u0002\u000115", - "ten": "//en.wiktionary.org/wiki/\u0002\u0001144" - }, - "l": { - "a": "//la.wikipedia.org/w/index.php?search=\u0002 \u00010", - "n": "//a.next.westlaw.com/Search/Results.html?query=\u0002&jurisdiction=ALLCASES\u00016", - "r": "http://reference.wolfram.com/search/?q=\u0002\u00019", - "t": "//lt.wikipedia.org/w/?search=\u0002\u00010", - "v": "//lv.wikipedia.org/w/index.php?search=\u0002\u00019", - "\u0010": "//search.wikileaks.org/?q=\u0002\u00010", - "w": "//www.wlw.de/search?suchbegriff=\u0002\u00010", - "95": "//www.youtube.com/user/WiiLord95/search?query=\u0002\u00010", - "de": "http://www.wunschliste.de/suche/\u0002\u00010", - "fr": "http://fr.wikiloc.com/wikiloc/find.do?q=\u0002\u00010", - "hb": "//www.willhaben.at/iad/kaufen-und-verkaufen/marktplatz?keyword=\u0002\u00010" - }, - "m": { - "c": { - "c": "//commons.wikimedia.org/w/index.php?search=\u0002&ns14=1\u00010", - "\u0010": "//commons.wikimedia.org/w/index.php?title=Special%3ASearch&search=\u0002\u000183" - }, - "e": { - "\u0010": "http://wolnemedia.net/?s=\u0002\u00010", - "ta": "http://meta.wikimedia.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010" - }, - "l": "//ml.wikipedia.org/w/index.php?search=\u0002\u00010", - "o": "//public.wmo.int/en/search?search_api_views_fulltext=\u0002\u00010", - "t": "http://mt.wikipedia.org/w/index.php?search=\u0002\u00010", - "v": "http://www.meteovista.com/Go/Search/SearchResults?searchCriteria=\u0002&pageIndex=0&searchAction=WeatherInformation\u00010", - "\u0010": "http://en.m.wikipedia.org/wiki?search=\u0002\u0001493", - "y": "//my.wikipedia.org/w/index.php?title=Special:Search&search=\u0002\u00010", - "de": "//de.m.wikipedia.org/w/index.php?search=\u0002\u00019", - "fr": "//fr.m.wikipedia.org/w/index.php?search=\u0002\u00010", - "id": "//passport.webmoney.ru/asp/CertView.asp?wmid=\u0002\u00010", - "se": "//mathematica.stackexchange.com/search?q=\u0002\u00010", - "sr": "//sr.m.wikipedia.org/wiki/\u0002\u00010", - "dns": "//www.whatsmydns.net/#A/\u0002\u00015", - "phab": "//phabricator.wikimedia.org/search/?query=\u0002\u00010" - }, - "n": { - "d": "http://www.wandaloo.com/search-result.php?pg=1&q=\u0002&w=news&m=pertinence\u00010", - "g": "//world.wng.org/search/site/\u0002\u00010", - "k": "//www.wordnik.com/words/?myWord=\u0002\u000138", - "l": "//nl.wikipedia.org/w/index.php?search=\u0002\u000113", - "n": "//nn.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00019", - "o": "//no.wikipedia.org/w/index.php?search=\u0002\u0001195", - "p": "http://www.wnp.pl/wyszukiwanie.html?szukaj=\u0002\u00010", - "v": "http://wagingnonviolence.org/?s=\u0002\u00010", - "\u0010": "//en.wikinews.org/wiki/Special:Search?search=\u0002\u000113", - "yc": "http://www.wnyc.org/search/?q=\u0002\u00010", - "all": "//duckduckgo.com/?q=\u0002+site%3Awikinews.org\u00010", - "etwork": "//www.theweathernetwork.com/search?q=\u0002\u000118" - }, - "o": { - "b": "http://www.worldofboardgames.com/webshop-sok.php?searchString=\u0002&search=S%F6k\u00010", - "l": { - "f": { - "\u0010": "//www.wolframalpha.com/input/?i=\u0002\u000117", - "ram": { - "\u0010": "//www.wolframalpha.com/input/?i=\u0002\u000117", - "alpha": "//www.wolframalpha.com/input/?i=\u0002\u000117" - } - }, - "\u0010": "http://wol.jw.org/wol/finder?q=\u0002\u000136", - "w": "//westofloathing.gamepedia.com/index.php?search=\u0002\u00010", - "sv": "//wol.jw.org/wol/finder?wtlocale=Z&q=\u0002\u00010" - }, - "o": { - "d": { - "\u0010": "http://www.wood-database.com/?s=\u0002\u00010", - "brass": "//www.woodbrass.com/advanced_search_result.php?keywords=\u0002\u00010", - "mac": "//www.woodmac.com/store/search/?q=\u0002\u00010" - }, - "k": { - "\u0010": "//www.wook.pt/pesquisa/\u0002\u000137", - "ie": { - "\u0010": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002&go=&fulltext=Search\u000125", - "epedia": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00017" - } - }, - "\u0010": "http://wooordhunt.ru/word/\u0002\u000149", - "rd": { - "\u0010": "//www.woorden.org/woord/\u0002\u00013", - "enlijst": "http://woordenlijst.org/zoek/?q=\u0002&w=w\u00018" - }, - "lies": "//www.woolworths.com.au/shop/search/products?searchTerm=\u0002\u000111", - "lworths": "//www.woolworths.com.au/shop/search/products?searchTerm=\u0002\u000111", - "roll": "http://www.wooroll.com/search.html?q=\u0002&ref=duckduckgo\u00010" - }, - "s": { - "c": "//gateway.webofknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcApp=WEB&SrcAuth=ProQuest&DestApp=UA&DestLinkType=GeneralSearchSummary&topic=\u0002\u00019", - "m": "http://wiki.openstreetmap.org/w/index.php?search=\u0002\u0001188", - "\u0010": "http://www.worldofspectrum.org/infoseek.cgi?regexp=\u0002&model=any&loadpics=3&fast=on\u00010", - "rs": "//oldschool.runescape.wiki/?search=\u0002&title=Special:Search&go=Go\u00010" - }, - "t": { - "\u0010": "//www.mywot.com/en/scorecard/\u0002\u00010", - "if": "http://www.wotif.com/search/TextSearch?searchTerms=\u0002\u00010", - "wiki": "http://wiki.wargaming.net/en/index.php?search=\u0002\u00010" - }, - "w": { - "h": { - "c": "//classic.wowhead.com/search?q=\u0002\u00010", - "r": "http://ru.wowhead.com/search?q=\u0002\u00010", - "\u0010": "http://www.wowhead.com/search?q=\u0002\u0001350", - "es": "//es.wowhead.com/search?q=\u0002\u00010", - "ead": { - "\u0010": "http://www.wowhead.com/search?q=\u0002\u0001350", - "de": "http://de.wowhead.com/search?q=\u0002\u000151", - "fr": "//fr.wowhead.com/search?q=\u0002\u00010" - } - }, - "\u0010": "//worldofwarcraft.com/search?q=\u0002\u000117", - "ch": "//www.worldofwhisky.ch/suche?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Search\u00010", - "db": "http://www.wowdb.com/search?search=\u0002\u00010", - "fr": "//fr.wowhead.com/search?q=\u0002\u00010", - "armory": { - "\u0010": "http://us.battle.net/wow/en/search?q=\u0002\u00010", - "eu": "http://eu.battle.net/wow/en/search?q=\u0002\u00010", - "us": "http://us.battle.net/wow/en/search?q=\u0002\u00010" - }, - "battlenet": "http://eu.battle.net/wow/en/search?q=\u0002\u00010", - "classic": "//classic.wowhead.com/search?q=\u0002\u00010", - "pedia": "http://www.wowpedia.org/index.php?title=Special:Search&search=\u0002\u000144", - "progress": "//www.wowprogress.com/search?q=\u0002\u00010", - "trk": "//www.wowtrk.com/offers/?keyword=\u0002\u00010", - "wiki": "http://www.wowwiki.com/Special:Search?search=\u0002\u00010" - }, - "\u0010": "//www.wetteronline.de/wetter/\u0002\u00016", - "x": { - "\u0010": "http://www.woxikon.com/?q=\u0002 \u00010", - "ikon": "http://synonyme.woxikon.de/synonyme/\u0002.php\u00016" - }, - "rd": { - "\u0010": "//www.wordnik.com/words?myWord=\u0002\u000162", - "central": "http://wordcentral.com/cgi-bin/student?book=Student&va=\u0002\u00010", - "ery": "//wordery.com/search?term=\u0002\u00010", - "hippo": "//www.wordhippo.com/what-is/another-word-for/\u0002.html\u000164", - "info": "http://wordinfo.info/results?searchString=\u0002\u00010", - "lift": "//wordlift.io/blog/en/?s=\u0002\u00010", - "net": "http://wordnetweb.princeton.edu/perl/webwn?s=\u0002&sub=Search+WordNet&o2=&o0=1&o7=&o5=&o1=1&o6=&o4=&o3=&h=\u000122", - "nik": "http://www.wordnik.com/words/\u0002\u0001168", - "press": "http://wordpress.org/search/\u0002\u000110", - "reference": "http://www.wordreference.com/es/translation.asp?tranword=\u0002\u0001193", - "smyth": "http://www.wordsmyth.net/?level=3&ent=\u0002\u00010", - "web": "http://www.wordwebonline.com/search.pl?w=\u0002\u00014" - }, - "rm": { - "s": "http://worms2d.info/?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "\u0010": "http://www.wormbase.org/species/c_elegans/gene/\u0002\u000127" - }, - "rt": { - "\u0010": "//www.wort-suchen.de/kreuzwortraetsel-hilfe/loesungen/\u0002/\u00010", - "en": "//www.worten.es/?qs=\u0002\u00010", - "schatz": "http://corpora.uni-leipzig.de/de/res?corpusId=deu_newscrawl_2011&word=\u0002\u00010", - "vogel": "http://wortvogel.de/?s=\u0002\u00010" - }, - "erterbuch": { - "\u0010": "http://www.woerterbuch.info/?query=\u0002\u00014", - "netz": "http://woerterbuchnetz.de/cgi-bin/WBNetz/startGlobalSearch.tcl?stichwort=\u0002\u00010" - }, - "gch": "http://www.wog.ch/index.cfm/search/type/Games/term/\u0002\u00010", - "nkette": "//www.wonkette.com/search/?q=\u0002\u00010", - "rkatremote": "//workatremote.com/remote-\u0002-jobs\u00010", - "rkcircle": "http://www.workcircle.com/jobs/?search=1&query=\u0002\u00010", - "rld": { - "\u0010": "//world.wng.org/search/site/\u0002}\u00017", - "art": "http://www.world-art.ru/search.php?public_search=\u0002&global_sector=all\u00010", - "atlas": "//www.worldatlas.com/search?q=\u0002\u00010", - "building": "http://worldbuilding.stackexchange.com/search?q=\u0002\u00015", - "cat": { - "m": "http://worldcatmobile.org/?q=\u0002\u00010", - "\u0010": "http://www.worldcat.org/search?qt=worldcat_org_all&q=\u0002\u000155" - }, - "cubeassociation": "//www.worldcubeassociation.org/search?q=\u0002\u00010", - "music": "//duckduckgo.com/?q=\u0002+site%3Arootsworld.com%2Crootsworld.org&ia=web\u00010", - "ofspectrum": "http://www.worldofspectrum.org/infoseek.cgi?regexp=\u0002&model=any&loadpics=3&fast=on\u00010" - }, - "rshiptogether": "http://worship-songs-resources.worshiptogether.com/search?w=\u0002\u00010", - "utick": "//www.woutick.es/?busqueda=\u0002\u00010" - }, - "p": { - "d": { - "\u0010": "http://wpplugindirectory.org/?s=\u0002\u00010", - "ev": "//developer.wordpress.org/?s=\u0002\u000132" - }, - "l": "http://pl.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001702", - "p": { - "l": { - "\u0010": "//szukaj.wp.pl/szukaj.html?q=\u0002\u00010", - "ugs": "//wordpress.org/plugins/search/\u0002/\u00010", - "ugins": "http://wordpress.org/extend/plugins/search.php?q=\u0002&sort=\u00010" - }, - "\u0010": "//wordpress.org/plugins/search/\u0002/\u00010" - }, - "t": { - "\u0010": "http://pt.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001370", - "hemes": "http://wordpress.org/extend/themes/search.php?q=\u0002\u00010" - }, - "\u0010": "http://wordpress.org/search/\u0002\u000110", - "fr": "//fr.wikipedia.org/wiki/\u0002\u000132", - "se": "http://wordpress.stackexchange.com/search?q=\u0002 \u00010", - "acf": "//support.advancedcustomfields.com/forums/search?bbp_search=\u0002\u00010", - "ackagist": "//wpackagist.org/search?q=\u0002&type=any&search=\u00010", - "beg": "http://www.wpbeginner.com/search/?q=\u0002\u00010", - "blog": "http://\u0002.wordpress.com\u00010", - "ost": "http://www.washingtonpost.com/newssearch/search.html?st=\u0002\u000129", - "vip": "//vip.wordpress.com/?s=\u0002\u00010", - "zen": "http://wpzen.pl/?s=\u0002\u00010" - }, - "q": { - "\u0010": "//en.wikiquote.org/w/index.php?search=\u0002&title=Special%3ASearch\u000150", - "de": "//de.wikiquote.org/w/index.php?search=\u0002&title=Spezial%3ASuche\u00010", - "es": "//es.wikiquote.org/w/?search=\u0002\u00010", - "it": "//it.wikiquote.org/?q=\u0002:\u00010", - "pl": "//pl.wikiquote.org/w/index.php?search=\u0002&title=Specjalna:Szukaj&go=Przejdź\u00010" - }, - "r": { - "a": { - "\u0010": "//www.wolframalpha.com/input/?i=\u0002\u000117", - "nd": "//en.wikipedia.org/wiki/Special:RandomInCategory/\u0002\u00010" - }, - "c": { - "\u0010": "http://www.wordreference.com/conj/FrVerbs.aspx?v=\u0002\u000114", - "fr": "http://www.wordreference.com/conj/FrVerbs.aspx?v=\u0002\u000114" - }, - "d": { - "\u0010": "//www.wiregrind.com/rhyming-dictionary/?word=\u0002\u00010", - "en": "http://www.wordreference.com/deen/\u0002\u000117", - "es": "http://www.wordreference.com/definicion/\u0002\u00014", - "een": "http://www.wordreference.com/deen/\u0002\u000117", - "efr": "http://www.wordreference.com/frde/\u0002\u00010" - }, - "e": { - "f": "//www.wordreference.com/enfr/\u0002\u0001888", - "i": "http://www.wordreference.com/enit/\u0002\u000136", - "n": { - "\u0010": "http://www.wordreference.com/definition/\u0002\u000162", - "de": "http://www.wordreference.com/ende/\u0002\u000110", - "es": "http://www.wordreference.com/redirect/translation.aspx?w=\u0002&dict=enes\u0001441", - "fr": "//www.wordreference.com/enfr/\u0002\u0001888", - "gr": "http://www.wordreference.com/engr/\u0002\u00014", - "it": "http://www.wordreference.com/enit/\u0002 \u0001350", - "nl": "http://www.wordreference.com/ennl/\u0002\u00013", - "pl": "http://www.wordreference.com/enpl/\u0002\u00010", - "pt": "http://www.wordreference.com/enpt/\u0002 \u00010", - "sp": "http://www.wordreference.com/es/translation.asp?tranword=\u0002\u0001193", - "sv": "//www.wordreference.com/ensv/\u0002\u00013", - "syn": "http://www.wordreference.com/thesaurus/\u0002\u00014" - }, - "p": "http://www.wordreference.com/pten/\u0002\u00010", - "s": { - "\u0010": "http://www.wordreference.com/definicion/\u0002\u00014", - "en": "http://www.wordreference.com/es/en/translation.asp?spen=\u0002\u0001276", - "fr": "http://www.wordreference.com/esfr/\u0002\u000122", - "it": "http://www.wordreference.com/esit/\u0002\u000112", - "pt": "http://www.wordreference.com/espt/\u0002\u00010", - "conj": "http://www.wordreference.com/conj/ESverbs.aspx?v=\u0002\u000111", - "sin": "http://www.wordreference.com/sinonimos/\u0002\u00010" - }, - "\u0010": "http://www.wordreference.com/definicion/\u0002\u00014" - }, - "h": { - "\u0010": "http://whatreallyhappened.com/search/node/\u0002\u00010", - "ymer": "http://wikirhymer.com/words/\u0002\u00010" - }, - "n": { - "\u0010": "http://www.wordreference.com/definition/\u0002\u000162", - "len": "http://www.wordreference.com/nlen/\u0002\u00017" - }, - "o": "//ro.wikipedia.org/w/index.php?search=\u0002&title=Special%3AC%C4%83utare\u000126", - "s": { - "e": "http://www.wordreference.com/enes/\u0002\u000157", - "f": "http://www.wordreference.com/esfr/\u0002\u000122", - "s": "http://www.wordreference.com/sinonimos/\u0002\u00010", - "\u0010": "http://www.wordreference.com/es/translation.asp?tranword=\u0002\u0001193", - "pconj": "http://www.wordreference.com/conj/ESverbs.aspx?v=\u0002\u000111", - "ven": "//www.wordreference.com/ensv/\u0002\u00013", - "yes": "//www.wordreference.com/sinonimos//\u0002\u00010" - }, - "u": "//ru.wikipedia.org/wiki/\u0002\u0001447", - "\u0010": "http://www.wordreference.com/definition/\u0002\u000162", - "fe": "http://www.wordreference.com/fren/\u0002\u000180", - "ie": "http://www.wordreference.com/iten/\u0002\u000132", - "it": { - "\u0010": "http://www.wordreference.com/definizione/\u0002\u00018", - "en": "http://www.wordreference.com/iten/\u0002\u000132", - "es": "//www.wordreference.com/iten/\u0002\u00010", - "conj": "http://www.wordreference.com/conj/ItVerbs.aspx?v=\u0002\u00010" - }, - "pe": "http://www.wordreference.com/enpt/\u0002\u00010", - "ro": "http://eprints.whiterose.ac.uk/cgi/search/simple?full=\u0002&_action_search=Search&_order=bytitle&basic_srchtype=ALL&_satisfyall=ALL\u00010", - "ze": "//www.wordreference.com/zhen/\u0002\u00010", - "frde": "http://www.wordreference.com/frde/\u0002\u00010", - "fren": "http://www.wordreference.com/fren/\u0002\u000180", - "fres": "http://www.wordreference.com/fres/\u0002\u000162", - "frconj": "http://www.wordreference.com/conj/FRverbs.aspx?v=\u0002\u00010", - "gren": "http://www.wordreference.com/gren/\u0002\u00010", - "ighttools": "http://wright.tools/en/stable/search.html?q=\u0002&check_keywords=yes&area=default\u00010", - "plen": "http://www.wordreference.com/plen/\u0002\u00010", - "pten": "http://www.wordreference.com/pten/\u0002 \u00015", - "ptes": "http://www.wordreference.com/ptes/\u0002\u00015" - }, - "s": { - "c": { - "o": "//sco.wikipedia.org/w/index.php?search=\u0002\u00010", - "\u0010": "http://sc.wikipedia.org/wiki/\u0002\u00010" - }, - "e": { - "m": "//www.wesleyseminary.edu/?s=\u0002\u00010", - "\u0010": "http://se.wikipedia.org/w/index.php?search=\u0002\u000110" - }, - "g": { - "f": "http://www.wsgf.org/mgl?title_op=contains&game_name=\u0002\u00010", - "\u0010": "//winningstrategy.games/search/\u0002\u00010" - }, - "h": { - "\u0010": "http://en.wikishia.net/view/?search=\u0002\u00010", - "fa": "http://fa.wikishia.net/index.php?search=\u0002\u00010" - }, - "i": { - "\u0010": "//sl.wikipedia.org/w/index.php?search=\u0002\u00010", - "mple": "//simple.wikipedia.org/w/index.php?search=\u0002\u00010" - }, - "j": { - "p": "http://wsjp.pl/index.php?szukaj=\u0002&pwh=0\u000115", - "\u0010": "//www.wsj.com/search/term.html?KEYWORDS=\u0002&isAdvanced=true&daysback=90d&andor=AND&sort=date-desc&source=wsjarticle,wsjblogs,wsjvideo,interactivemedia,sitesearch,wsjpro\u0001206", - "mw": "http://www.marketwatch.com/search?q=\u0002\u00010" - }, - "k": "//sk.wikipedia.org/wiki/Special:Search?search=\u0002\u000121", - "l": "http://sl.wikipedia.org/w/index.php?title=Special%3ASearch&profile=default&search=\u0002\u000116", - "o": "http://www.wallstreetoasis.com/search/apachesolr_search/\u0002\u00013", - "r": "//sr.wikipedia.org/w/index.php?search=\u0002\u00016", - "u": "//wayne.edu/search/?q=\u0002&type=all\u00010", - "v": "http://sv.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001495", - "\u0010": "//en.wikisource.org/wiki/Special:Search?search=\u0002&go=Go\u000136", - "de": "//de.wikisource.org/w/index.php?search=\u0002\u00010", - "fr": "//fr.wikisource.org/w/index.php?search=\u0002&title=Sp%C3%A9cial%3ARecherche&go=Lire\u00010", - "ws": "//www.wsws.org/en/search.html?sectionId=&maxResults=100&phrase=\u0002&submit=Search\u00017", - "yn": "http://words.bighugelabs.com/\u0002\u00010", - "zh": "//zh.wikisource.org/wiki/Special:Search?search=\u0002\u00010", - "pec": "//species.wikimedia.org/w/index.php?search=\u0002\u00010" - }, - "t": { - "a": "http://www.wtatennis.com/search/query/\u0002\u00010", - "e": { - "l": "//el.wiktionary.org/wiki/\u0002\u00013", - "n": "http://en.wiktionary.org/w/index.php?search=\u0002&button=&title=Special%3ASearch\u00011784", - "o": "//eo.wiktionary.org/w/index.php?search=\u0002&title=Speciala%C4%B5o%3ASer%C4%89i&go=Ek!\u00010", - "s": { - "t": "//www.test.de/suche/?q=\u0002\u00010", - "\u0010": "//es.wiktionary.org/w/index.php?search=\u0002&button=&title=Especial%3ABuscar\u000119" - }, - "\u0010": "//te.wikipedia.org/w/index.php?search=\u0002\u00010" - }, - "f": { - "i": "//fi.wiktionary.org/w/index.php?search=\u0002&title=Toiminnot%3AHaku\u000157", - "\u0010": "//www.mirbsd.org/wtf.cgi?q=\u0002\u00013", - "r": "//fr.wiktionary.org/wiki/\u0002 \u0001586" - }, - "g": "//wtg.pt/?s=\u0002\u00010", - "h": "//hi.wiktionary.org/w/index.php?search=\u0002\u00010", - "l": { - "a": "//en.wiktionary.org/wiki/\u0002#Latin\u000187", - "\u0010": "http://whatthefuckshouldilistentorightnow.com/artist.php?artist=\u0002\u000111" - }, - "m": "//en.m.wiktionary.org/wiki/\u0002\u000122", - "r": { - "o": "//ro.wiktionary.org/wiki/\u0002\u00010", - "u": "http://ru.wiktionary.org/wiki/Special:Search?search=\u0002&go=Go\u000164", - "\u0010": "//tr.wikipedia.org/wiki/Special:Search?search=\u0002\u000119" - }, - "t": { - "a": "//ta.wiktionary.org/wiki/Special:Search?search=\u0002&go=Go\u00013", - "r": { - "\u0010": "http://wttr.in/\u0002\u00014", - ".in": "http://wttr.in/\u0002\u00014" - }, - "\u0010": "//tt.wikipedia.org/wiki/\u0002\u00010" - }, - "\u0010": "//en.wiktionary.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u0001138", - "w": "http://wiki.warthunder.com/index.php?search=\u0002 \u000145", - "bg": "//bg.wiktionary.org/wiki/\u0002\u00010", - "br": "//br.wiktionary.org/wiki/\u0002\u00010", - "ca": "//ca.wiktionary.org/wiki/\u0002\u00013", - "cz": "//cs.wiktionary.org/wiki/\u0002\u00010", - "de": "//de.wiktionary.org/w/index.php?search=\u0002\u0001172", - "it": "http://it.wiktionary.org/w/index.php?search=\u0002&title=Speciale%3ARicerca\u00010", - "ja": "//ja.wiktionary.org/wiki/\u0002\u00013", - "nl": "//nl.wiktionary.org/w/index.php?search=\u0002\u000121", - "no": "//no.wiktionary.org/wiki/index.php?title=Special:Search&search=\u0002\u00014", - "pl": "//pl.wiktionary.org/w/index.php?search=\u0002\u000169", - "pt": "//pt.wiktionary.org/wiki/\u0002\u00010", - "sv": "http://sv.wiktionary.org/w/index.php?search=\u0002&button=&title=Special%3AS%C3%B6k\u000179", - "vi": "//vi.wiktionary.org/w/index.php?search=\u0002\u00010", - "zh": "//zh.wiktionary.org/w/index.php?search=\u0002\u00010", - "ionary": "//en.wiktionary.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u0001138", - "oon": "//www.webtoons.com/search?keyword=\u0002\u000110", - "sbooks": "//www.wtsbooks.com/index/page/search?FullText=\u0002\u00010" - }, - "u": { - "k": "http://uk.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000139", - "l": { - "\u0010": "http://corpora.uni-leipzig.de/de/res?corpusId=deu_newscrawl_2011&word=\u0002\u00010", - "fila": "http://www.wulfila.be/gothic/browse/search/?find=\u0002&mode=1\u00010" - }, - "s": "//www.walmart.com/search/?query=\u0002&country=US\u000144", - "\u0010": "//www.wunderground.com/cgi-bin/findweather/getForecast?query=\u0002\u00014", - "rm": { - "\u0010": "http://wurmpedia.com/index.php?search=\u0002&fulltext=Search&title=Special%3ASearch\u00010", - "web": "http://www.wurmweb.at/?s=\u0002\u00010" - }, - "age": "//s.wuage.com/product/search?keywords= \u0002\u00010", - "ming": "http://www.wumingfoundation.com/giap/?s=\u0002\u00010", - "nderground": "//www.wunderground.com/cgi-bin/findweather/getForecast?query=\u0002\u00014", - "nderlist": "//www.wunderlist.com/#/search/\u0002\u00010", - "rthe": "//www.we-online.com/web/en/wuerth_elektronik/searchpage.php?search=\u0002\u00010" - }, - "v": { - "l": "//worldvectorlogo.com/search/\u0002\u00010", - "o": "http://vo.wikipedia.org/w/index.php?search=\u0002\u00010", - "\u0010": "//en.wikivoyage.org/w/index.php?search=\u0002\u0001234", - "de": "//de.wikivoyage.org/w/index.php?search=\u0002\u00016", - "en": "//en.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "es": "//es.wikivoyage.org/w/index.php?search=\u0002\u00010", - "fr": "//fr.wikivoyage.org/w/index.php?search=\u0002\u00010", - "it": "//it.wikivoyage.org/w/index.php?search=\u0002\u00010", - "nl": "//nl.wikivoyage.org/w/index.php?search=\u0002\u00010", - "pt": "//pt.wikivoyage.org/w/index.php?search=\u0002\u00010", - "ru": "//ru.wikivoyage.org/w/index.php?search=\u0002\u00010", - "sv": "//sv.wikivoyage.org/w/index.php?search=\u0002\u00010", - "ers": "http://en.wikiversity.org/w/index.php?search=\u0002&title=Special%3ASearch\u00010" - }, - "w": { - "e": { - "n": { - "d": "http://www.worldswithoutend.com/searchwwe.asp?st=\u0002\u00010", - "\u0010": "http://www.wikiwand.com/en/\u0002\u000145" - }, - "s": "http://www.wikiwand.com/es/\u0002\u00010", - "\u0010": "//www.wwe.com/search/all/relevance/\u0002\u00010" - }, - "f": { - "r": "//www.wikiwand.com/fr/\u0002\u00010", - "\u0010": "//www.worldwildlife.org/search?cx=003443374396369277624%3Av3nraqhmeyk&ie=UTF-8&x=\u0002&sa=\u00010" - }, - "p": { - "\u0010": "//www.whatpeopleplay.com/search/all/\u0002\u00010", - "t": "//www.wikiwand.com/pt/\u0002\u00010" - }, - "w": { - "\u0010": "//publicwww.com/websites/\u0002/\u00014", - ".89porno.com": "http://www.89porno.com/?s=\u0002\u000194", - "jdic": "http://nihongo.monash.edu/cgi-bin/wwwjdic?1MUE\u0002\u000120" - }, - "\u0010": "//www.wikiwand.com/en/\u0002\u000176", - "bw": "http://www.wwbw.com/Search/Default.aspx?src=\u0002\u00010", - "dc": "http://asciiwwdc.com/search?q=\u0002\u00013", - "de": "//www.wikiwand.com/de/\u0002\u00010", - "nl": "http://www.wikiwand.com/nl/\u0002\u00010", - "tr": "http://www.wikiwand.com/tr/\u0002\u00010", - "zh": "//www.wikiwand.com/zh/\u0002\u00010", - "iki": "http://www.wegenwiki.nl/index.php?search=\u0002&title=Speciaal%3AZoeken\u00010", - "oof": "http://www.wwoof.net/?s=\u0002\u00010" - }, - "\u0010": "//en.wikipedia.org/wiki/Special:Search?search=\u0002\u0001223846", - "y": { - "\u0010": "http://www.wykop.pl/szukaj/\u0002\u00016", - "nk": "//wynk.in/music/detailsearch/\u0002?q=\u0002\u00010", - "nn": "//wynncraft.gamepedia.com/index.php?search=\u0002\u00016", - "kop": "http://www.wykop.pl/szukaj/\u0002/\u00017" - }, - "z": { - "h": "http://zh.wikipedia.org/w/wiki.phtml?search=\u0002&go=Go\u0001303", - "l": "//www.weasyl.com/search?q=\u0002\u00010", - "\u0010": "//www.warpzone.ms/?s=\u0002 \u00010", - "w": "http://wiki.warpzone.ms/start?do=search&id=\u0002\u00010" - }, - "xd": { - "\u0010": "http://synonyme.woxikon.de/synonyme/\u0002.php\u00016", - "ev": "//duckduckgo.com/?q=\u0002+site:https://developers.weixin.qq.com/miniprogram/dev\u00010" - }, - "xf": "//forum.wuxiaworld.com/search?Search=\u0002\u00010", - "xw": "http://docs.wxwidgets.org/trunk/search.php?query=\u0002\u00010", - ".br": "//pt.wikipedia.org/wiki/\u0002\u00010", - ".de": "//de.wikipedia.org/w/index.php?search=\u0002\u00018852", - ".en": "http://en.wikipedia.org/wiki/Special:Search?search=\u0002\u000170", - ".ru": "//ru.wikipedia.org/w/index.php?search=\u0002\u00014", - "-es": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010", - "-hy": "//hy.wikipedia.org/w/index.php?search=\u0002\u00010", - "xmp": "//developers.weixin.qq.com/doc/search.html?query=\u0002\u00010" - }, - "y": { - "8": "http://www.y8.com/search?utf8=%E2%9C%93&kind=game&q=\u0002\u00016", - "a": { - "d": { - "2": "//www.yad2.co.il/products/all?info=\u0002\u00010", - "\u0010": "//slovari.yandex.ru/\u0002/\u00010" - }, - "m": { - "a": { - "\u0010": "//market.yandex.ru/search?text=\u0002\u000140", - "rket": "//ya-market.org/products?search=\u0002\u00010" - }, - "u": { - "\u0010": "//music.yandex.ru/search?text=\u0002\u00014", - "sic": "//music.yandex.ru/search?text=\u0002\u00014" - }, - "\u0010": "//www.yammer.com/search?search=\u0002\u00017", - "go": "http://yamgo.com/search?q=\u0002\u00010" - }, - "n": { - "\u0010": "//www.yandex.com/?q=\u0002\u0001316", - "dex": { - "m": { - "\u0010": "http://market.yandex.ru/search.xml?text=\u0002\u00014", - "aps": "http://maps.yandex.ru/?text=\u0002 \u000146" - }, - "w": "//yandex.ru/pogoda/\u0002\u00010", - "\u0010": "//www.yandex.ru/yandsearch?text=\u0002\u00011432", - "en": "http://www.yandex.com/yandsearch?text=\u0002\u0001209" - }, - "swers": "http://answers.yahoo.com/search/search_result;_ylt=AnPnri0ekBBFsWt64sNbHmvj1KIX;_ylv=3?p=\u0002&submit-go=Search+Y!+Answers\u00014" - }, - "t": { - "r": "//www.yandex.com.tr/search/?text=\u0002\u00010", - "u": "//www.youtube.be/?q=\u0002: \u00010", - "\u0010": "//translate.yandex.com/?text=\u0002\u0001307" - }, - "v": "http://yandex.ru/video/search?text=\u0002\u000138", - "w": "//yandex.ru/pogoda/search?request=\u0002\u00010", - "\u0010": "//yandex.ru/search/?text=\u0002\u00018083", - "y": { - "\u0010": "//www.yay.bg/index.php?route=product/search&search=\u0002\u000119", - "img": "//yayimages.com/search?phrase=\u0002\u00014" - }, - "cy": "//search.yacy.net/yacysearch/index.html?query=\u0002&Enter=&verify=false&nav=filetype%2Cprotocol%2Chosts%2Cauthors%2Ccollections%2Cnamespace%2Ctopics%2Cdate&startRecord=0&indexof=off&meanCount=5&resource=global&prefermaskfilter=&maximumRecords=10&timezoneOffset=0\u00010", - "en": "http://yandex.com/yandsearch?text=\u0002&lr=103421\u0001147", - "jp": "http://auctions.search.yahoo.co.jp/search?p=\u0002\u0001196", - "rn": { - "\u0010": "//yarnpkg.com/en/packages?q=\u0002\u00013", - "pkg": "//yarnpkg.com/en/packages?q=\u0002\u00013" - }, - "bla": "//chinese.yabla.com/chinese-english-pinyin-dictionary.php?define=\u0002 \u00010", - "hoo": { - "\u0010": "http://search.yahoo.com/search?p=\u0002\u000187", - "finau": "//au.finance.yahoo.com/q?s=\u0002\u00010", - "jdic": "http://dic.search.yahoo.co.jp/search?p=\u0002\u00015" - }, - "oota": "//www.yaoota.com/en/search/?q=\u0002\u00010", - "slovari": "//slovari.yandex.ru/\u0002\u00010" - }, - "c": { - "\u0010": "//hn.algolia.com/?query=\u0002\u0001105", - "hiejp": "http://chiebukuro.search.yahoo.co.jp/search?p=\u0002\u00010" - }, - "d": { - "d": "http://dict.youdao.com/search?q=\u0002\u000152", - "e": "//de.yahoo.com/?q=\u0002\u00013", - "\u0010": "http://www.yourdictionary.com/search/?ydQ=\u0002\u000114", - "ic": "http://dic.search.yahoo.co.jp/search?ei=UTF-8&p=\u0002&stype=full&fr=dic\u00010" - }, - "f": { - "c": "http://finance.yahoo.com/echarts?s=\u0002\u000131", - "d": "http://yufid.com/result/?search=\u0002 \u00010", - "p": "http://finance.yahoo.com/q/pr?s=\u0002+Profile\u00010", - "\u0010": "http://finance.yahoo.com/q?s=\u0002\u000111", - "inance": "http://finance.yahoo.com/q?s=\u0002\u000111" - }, - "g": { - "o": "http://yugioh.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000124", - "\u0010": "//www.yeastgenome.org/search?q=\u0002\u000125" - }, - "h": "//yandex.com.tr/harita/?text=\u0002\u00018", - "i": { - "i": "http://www.yiiframework.com/search/?q=\u0002\u00010", - "m": { - "\u0010": "http://images.search.yahoo.com/search/images?p=\u0002&fr=alltheweb&ei=utf-8&n=30&x=wrt&y=Search\u00013", - "ages": "http://images.search.yahoo.com/search/images;_ylt=A0WTefMw66dLrEoAACeLuLkF?p=\u0002&ei=utf-8&iscqry=&fr=sfp\u000120" - }, - "\u0010": "//images.search.yahoo.com/search/images?p=\u0002\u000150", - "dio": "http://www.yidio.com/search/entertainment/\u0002/1?find=\u0002\u00014", - "ppy": "//www.yippy.com/search/?v%3Aproject=clusty-new&query=\u0002\u00010" - }, - "j": { - "m": "//map.yahoo.co.jp/mapsearch/search?p=\u0002\u00013", - "p": "http://search.yahoo.co.jp/search?p=\u0002\u0001160", - "r": "//search.yahoo.co.jp/realtime/search?p=\u0002\u0001404", - "\u0010": "//search.yahoo.co.jp/search?p=\u0002\u0001970", - "tv": "//tv.yahoo.co.jp/search/?q=\u0002\u00010", - "isho": "http://dic.search.yahoo.co.jp/search?ei=UTF-8&p=\u0002&fr=dic&stype=prefix\u00010", - "wiki": "http://youngjustice.wikia.com/wiki/Special:Search?query=\u0002\u00010" - }, - "n": { - "\u0010": "http://yubnub.org/parser/parse?command=\u0002 \u000190", - "ab": "//www.youneedabudget.com/?s=\u0002\u000130", - "fr": "//fr.news.search.yahoo.com/search?p=\u0002\u00010", - "ews": "http://news.search.yahoo.com/news/search?ei=UTF-8&fr=news-us-ss&c=&p=\u0002\u00016" - }, - "o": { - "u": { - "t": { - "v": "//www.youtv.de/suche?search[q]=\u0002\u00015", - "\u0010": "//yout.com/search?terms=\u0002\u000118", - "ube": { - "\u0010": "//www.youtube.com/results?search_query=\u0002\u00011113", - "onrepeat": "http://youtubeonrepeat.com/results/?search_query=\u0002\u000128" - } - }, - "\u0010": "//www.youtube.com/results?search_query=\u0002\u00011113", - "ku": "http://www.soku.com/search_video/q_\u0002\u00010", - "la": "//youla.ru/?q=\u0002\u00010", - "rs": "//www.yours.org/search?q=\u0002\u00010", - "dao": { - "d": "http://dict.youdao.com/search?q=\u0002\u000152", - "\u0010": "http://www.youdao.com/search?q=\u0002&ue=utf8&keyfrom=web.index\u00013" - }, - "glish": "http://youglish.com/search/\u0002/us\u000139", - "loop": "http://youloop.org/search.php?q=\u0002\u00010", - "magine": "//www.youmagine.com/search/designs?utf8=%E2%9C%93&search=\u0002\u00010", - "pak": "//www.youpak.com/search?q=\u0002\u00014", - "rei": "http://yourei.jp/\u0002\u00010", - "rglish": "//youglish.com/search/\u0002?\u00010", - "rtv": "http://www.yourtv.com.au/guide/search.aspx?q=\u0002\u00010", - "version": "//www.bible.com/search/bible?q=\u0002\u00010" - }, - "\u0010": "http://yochicago.com/?s=\u0002\u000123", - "pi": "http://www.yopi.de/search?search_str=\u0002\u00010", - "bi3d": "//www.yobi3d.com/#!/search?q=\u0002\u00010", - "dobashi": "http://www.yodobashi.com/ec/category/index.html?word=\u0002\u0001115", - "gscast": "http://yogscast.wikia.com/wiki/index.php?search=\u0002&fulltext=Search\u00010", - "mikata": "//yomikatawa.com/kanji/\u0002\u00015", - "p.email": "http://www.yopmail.com/en/?login=\u0002\u00010", - "pmail": "http://www.yopmail.com/en/index.php?login=\u0002\u00016" - }, - "p": { - "p": "//yppedia.puzzlepirates.com/Special:Search?search=\u0002\u00010", - "w": "//wiki.yoctoproject.org/wiki/index.php?search=\u0002\u00010", - "\u0010": "//www.yellowpages.com/search?search_terms=\u0002\u000110", - "y": "http://yippy.com/search/?v%3Aproject=clusty-new&query=\u0002\u00010" - }, - "r": { - "i": "//yandex.com/images/search?source=collections&&url=\u0002&rpt=imageview\u000198", - "\u0010": "http://www.yr.no/soek/soek.aspx?sted=\u0002\u0001342", - "tjp": "//search.yahoo.co.jp/realtime/search?p=\u0002\u0001404" - }, - "s": { - "\u0010": "//slovari.yandex.ru/\u0002\u00010", - "ports": "//search.yahoo.com/search?p=/\u0002\u00017", - "tream": "//ystream.tv/q/?s=\u0002\u00010" - }, - "t": { - "b": "//www.youtube.com/results?search_query= \u0002\u00011962", - "c": { - "c": "//www.youtube.com/results?search_query=\u0002&sp=EgIwAQ%253D%253D\u00010", - "h": "//www.youtube.ch/results?search_query=\u0002\u00013", - "v": "//www.youtube.com/user/\u0002/videos\u00014", - "\u0010": "//www.youtube.com/user/\u0002\u000178" - }, - "d": { - "e": "//www.youtube.com/results?search_query=\u0002&gl=DE&hl=de\u000147", - "\u0010": "//www.youtube.com/watch?v=\u0002\u00015", - "ay": "//www.youtube.com/results?search_query=\u0002&sp=EgIIAg%253D%253D\u00010", - "ate": "//www.youtube.com/results?search_query=\u0002&search_sort=video_date_uploaded\u00010" - }, - "g": { - "\u0010": "//gaming.youtube.com/results?search_query=\u0002\u00010", - "aming": "//gaming.youtube.com/results?search_query=\u0002\u00010" - }, - "h": "//www.youtube.com/feed/history?query=\u0002\u00019", - "i": "//in.youtube.com/results?search_query=\u0002\u000169", - "j": "//travel.yahoo.co.jp/dhotel/search/?qry=\u0002\u00010", - "l": { - "\u0010": "//www.youtube.com/results?search_type=videos&search_query=\u0002&search_duration=long&uni=3\u000111", - "ist": "//www.youtube.com/results?filters=playlist&lclk=playlist&search_query=\u0002\u00010" - }, - "m": { - "u": { - "\u0010": "//music.youtube.com/search?q=\u0002\u0001361", - "sic": "//music.youtube.com/search?q=\u0002\u0001361" - }, - "x": "//www.youtube.com/results?search_query=\u0002&gl=MX\u00019", - "\u0010": "//music.youtube.com/search?q=\u0002\u0001361", - "nd": "http://ytmnd.com/search?q=\u0002\u00014" - }, - "n": "//youtubenews.de/?s=\u0002\u00019", - "p": "//www.youtube.com/results?q=\u0002&sp=EgIQAw%253D%253D\u000152", - "r": { - "\u0010": "//translate.yandex.ru/?text=\u0002\u0001185", - "en": "//translate.yandex.com/?text=\u0002\u0001307", - "ack": "//youtrack.jetbrains.com/issues?q=\u0002\u00010" - }, - "v": { - "\u0010": "http://www.yourtv.com.au/guide/search.aspx?q=\u0002\u00010", - "ideo": "//www.youtube.com/watch?v=\u0002\u00015" - }, - "w": { - "d": "//tw.dictionary.search.yahoo.com/search?p=\u0002\u000130", - "\u0010": "http://tw.search.yahoo.com/search?p=\u0002\u00014" - }, - "\u0010": "//www.youtube.com/results?search_query=\u0002\u00011113", - "24": "//www.youtube.com/results?q=\u0002&sp=EgIIAg%253D%253D\u00010", - "es": "//www.youtube.com/results?search_query=\u0002&gl=ES&hl=es\u000117", - "fr": "http://www.youtube.fr/results?search_query=\u0002\u0001221", - "or": "http://youtubeonrepeat.com/results/?search_query=\u0002\u000128", - "tv": "//tv.youtube.com/search/\u0002\u00016", - "us": "//www.youtube.com/results?search_query=\u0002&gl=US\u0001320" - }, - "u": { - "\u0010": "//hooktube.com/results?search_query=\u0002\u00010", - "m": { - "\u0010": "http://www.yummly.com/recipes?q=\u0002\u00010", - "e100": "http://yume100prince.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "mly": "http://www.yummly.com/recipes?q=\u0002\u00010" - }, - "bnub": "http://yubnub.org/parser/parse?command=\u0002\u000114", - "gioh": { - "\u0010": "//yugipedia.com/wiki/Special:Search?search=\u0002&button=Go\u000159", - "db": "http://www.db.yugioh-card.com/yugiohdb/card_search.action?ope=1&sess=1&keyword=\u0002&stype=1&ctype=&starfr=&starto=&atkfr=&atkto=&deffr=&defto=&othercon=1\u00010" - } - }, - "v": { - "r": "http://www.yvr.ca/en/search#q=\u0002\u00010", - "\u0010": "//video.search.yahoo.com/search/video?p=\u0002\u000119" - }, - "w": "//duckduckgo.com/?q=site%3Aweather.yahoo.com+\u0002\u000119", - "\u0010": "http://search.yahoo.com/search?p=\u0002\u000187", - "z": "http://youzeek.com/?lng=RU#xPAGE_V3-Artist_%3Flng%3DRU%26Artist%3D\u0002%26page%3DGeneral\u000122", - "le": "http://haku.yle.fi/?language=fi&UILanguage=fi&q=\u0002\u00018", - "mg": { - "n": "//www.youmagine.com/search/designs?search=\u0002\u00010", - "\u0010": "//yandex.com/images/search?text=\u0002\u0001381" - }, - "yh": "http://yuyuhakusho.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "east": "//www.yeastgenome.org/search?q=\u0002&is_quick=true\u00010", - "egg": { - "\u0010": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Fwww.gabrielweinberg.com%2Fblog+\u0002\u00010", - "i": "http://www.yeggi.com/q/\u0002/\u000169" - }, - "elp": { - "\u0010": "http://www.yelp.com/search?find_desc=\u0002&ns=1&rpp=10&find_loc=\u0001394", - "de": "http://www.yelp.de/search?find_desc=\u0002&ns=1&rpp=10&find_loc=\u00010", - "sd": "http://www.yelp.com/search?find_desc=\u0002&find_loc=san+diego&ns=1\u00010" - }, - "ellowlu": "http://www.yellow.lu/en/yellow-pages/search?location=&query=\u0002&sort_by=relevance\u00010", - "ellownz": "http://yellow.co.nz/yellow+pages/\u0002/New+Zealand\u00010", - "entlendeboer": "http://www.yentlendeboer.nl/?s=\u0002\u00010", - "esasia": "http://www.yesasia.com/us/search/\u0002/0-0-0-q.\u0002_bpt.48-en/list.html\u00010", - "eti": "//yetigogo.com/?q=\u0002\u00013", - "lilauta": "//ylilauta.org/\u0002 \u00013", - "mail": "//mail.yahoo.com/d/search/keyword=\u0002\u000149", - "xmaps": "//maps.yandex.ru/?text=\u0002\u000116" - }, - "z": { - "d": { - "f": "//www.zdf.de/suche?q=\u0002\u000152", - "s": "http://zestedesavoir.com/rechercher/?q=\u0002\u000192", - "w": "//www.zeldadungeon.net/wiki/Special:Search/\u0002\u00010", - "\u0010": "//www.zeldadungeon.net/?s=\u0002\u00010", - "ic": "http://www.zdic.net/search/?q=\u0002\u000130", - "net": "http://www.zdnet.com/search?q=\u0002\u00010", - "oom": "http://zdoom.org/w/index.php?search=\u0002\u000152" - }, - "f": { - "f": "http://foundation.zurb.com/forum/posts?utf8=✓&search=\u0002&button=\u00010", - "\u0010": "//duckduckgo.com/?q=\u0002+site:framework.zend.com\u00010" - }, - "h": { - "i": { - "\u0010": "http://www.zhihu.com/search?q= \u0002 &type=question\u00017", - "hu": "//www.zhihu.com/search?type=content&q=\u0002\u0001205" - }, - "\u0010": "//www.zerohedge.com/search-content?search_api_fulltext=\u0002\u0001148", - "en": "http://nciku.com/search/zh/\u0002\u00010" - }, - "u": { - "m": { - "i": "//www.zumi.pl/\u0002,namapie.html\u00010", - "\u0010": "http://search.zum.com/search.zum?query=\u0002\u00010" - }, - "\u0010": "http://www.zeldauniverse.net/?s=\u0002\u00010", - "ckerzauber": "http://shop.zuckerzauber.at/epages/es121414.sf/de_AT/?ObjectPath=/Shops/es121414_Caros_Zuckerzauber&ViewAction=DetailSearchProducts&Search=SF-AllStrings&SearchString=\u0002\u00010", - "lily": "http://www.zulily.com/\u0002?fromSearch=true&searchTerm=\u0002\u00010", - "rbf": { - "\u0010": "http://foundation.zurb.com/docs//?q=\u0002: \u00010", - "oundation": "http://foundation.zurb.com/docs//?q=\u0002: \u00010" - } - }, - "w": { - "j": "http://wiki.killuglyradio.com/index.php?title=Special%3ASearch&profile=default&search=\u0002\u00010", - "\u0010": "//zelda.gamepedia.com/index.php?search=\u0002\u00015" - }, - "\u0010": "//www.zalando.de/katalog/?q=\u0002\u00010", - "z": { - "\u0010": "http://www.zerozero.pt/search.php?op=all&inputString=\u0002\u00010", - "ounds": "http://www.zzounds.com/prodsearch?q=\u0002\u00016" - }, - "3s": "//zaufanatrzeciastrona.pl/?s=\u0002\u00010", - "al": { - "\u0010": "//www.zalando.de/katalog/?q=\u0002&qf=1\u00014", - "ando": { - "\u0010": "//www.zalando.co.uk/catalog/?q=\u0002\u00015", - "de": "//www.zalando.de/katalog/?q=\u0002\u00010" - } - }, - "ap": { - "\u0010": "http://www.zap.co.il/search.aspx?keyword=\u0002\u000132", - "iks": "http://www.zapiks.fr/search.php?action=search&search=\u0002 \u00010", - "meta": "http://www.zapmeta.es/?vid=l791573315I1470912501&sess=a3a3a303a3a313&template=&asid=zapmeta_es&awc=&de=&nwc=&suggest=1&q=\u0002\u00010", - "pos": "//www.zappos.com/\u0002\u000124" - }, - "en": { - "o": { - "\u0010": "http://www.zeno.org/Zeno/0/Suche?q=\u0002&k=Bibliothek\u00010", - "do": "//zenodo.org/search?q=\u0002\u00010" - }, - "\u0010": "//arcade.zenzo.io/search?for=\u0002\u00010", - "trum": "//zentrum-online.at/?s=\u0002\u00010" - }, - "ic": "http://www.zic.it/?s=\u0002\u00010", - "ip": "//www.zip-codes.com/search.asp?srch-type=fuzzy&q=\u0002\u00010", - "kb": "//zkillboard.com/search/\u0002/\u00017", - "li": "//www.zli.ch/service/suche/?q=\u0002\u00010", - "pl": "//www.zakonyprolidi.cz/hledani?text=\u0002\u00010", - "xr": "//elixir.bootlin.com/zephyr/latest/ident/\u0002\u00010", - "100": "http://www.z100.com/main.html/?q=\u0002\u00010", - "abasearch": "http://www.zabasearch.com/people/\u0002\u00010", - "akony": "http://www.zakonypreludi.sk/main/search.aspx?text=\u0002\u00010", - "ameq": { - "2": "http://eq2.zam.com/search.html?q=\u0002\u00010", - "\u0010": "http://everquest.allakhazam.com/search.html?q=\u0002\u00010" - }, - "anran": "http://www.zanran.com/q/?search=\u0002\u00010", - "ara": { - "\u0010": "http://www.zara.com/webapp/wcs/stores/servlet/ItxSolrSearchingDataCmd?storeId=10701&langId=-5&searchTerm=\u0002\u00013", - "goza": "http://www.zaragoza.es/ciudad/servicios/buscar_Web?q=\u0002\u00010" - }, - "argan": "http://www.zargan.com/tr/q/\u0002\u000111", - "avvi": "//www.zavvi.com/elysium.search?search=\u0002\u00010", - "aycev": "//zaycev.net/search.html?query_search=\u0002\u00010", - "bmath": "http://www.zentralblatt-math.org/zbmath/search/?q=\u0002\u00010", - "bozi": "http://www.zbozi.cz/hledani/?q=\u0002\u00013", - "bsamp": "http://www.zbsamp.com/index.php?action=search2;search=\u0002\u00010", - "edat": "//www.zedat.fu-berlin.de/FAQ?q=\u0002\u00010", - "eef": "//zeef.com/?query=\u0002&in=all\u00010", - "ehrs": "//www.zehrs.ca/search/?search-bar=\u0002\u00010", - "eit": "http://www.zeit.de/suche/index?q=\u0002\u000154", - "eldapedia": "http://zelda.wikia.com/wiki/Special:Search?search=\u0002\u00010", - "eldauniverse": "http://www.zeldauniverse.net/?s=\u0002\u00010", - "eldawiki": "//zelda.gamepedia.com/index.php?search=\u0002\u00015", - "emljevid": "http://zemljevid.najdi.si/search_maps.jsp?q=\u0002\u00010", - "ero": { - "\u0010": "http://www.zero.eu/?s=\u0002\u00010", - "chan": "http://www.zerochan.net/search?q=\u0002\u00013", - "hedge": "http://www.zerohedge.com/search/apachesolr_search/\u0002\u00015" - }, - "etax": "http://zetax.net/search/?q=\u0002\u00010", - "etawiki": "//zetawiki.com/w/index.php?search=\u0002\u00010", - "ikinf": "//www.zikinf.com/recherche/?query=\u0002\u00010", - "illow": "http://www.zillow.com/homes/\u0002_rb/\u0001490", - "ivefirmy": "http://www.zivefirmy.cz/?q=\u0002\u00010", - "kill": { - "\u0010": "//zkillboard.com/search/\u0002 /\u00010", - "board": "//zkillboard.com/search/\u0002/\u00017" - }, - "mp3": "http://mp3.zing.vn/tim-kiem/bai-hat.html?q=\u0002 \u00010", - "oho": "//search.zoho.com/searchresult?query=\u0002&search_type=all&index_key=-1&embed=false\u00010", - "omato": "http://zomato.com/restaurants?q=\u0002\u00013", - "oom": { - "\u0010": "http://www.zoom.com.br/search?q=\u0002\u00010", - "br": "http://www.zoom.com.br/search?q=\u0002\u00010", - "thelist": "http://zoomthelist.com/?q=\u0002\u00010", - ".us": "//zoom.us/?q=\u0002\u00015" - }, - "oopla": "http://www.zoopla.co.uk/search/?q=\u0002&geo_autocomplete_identifier=&country_code=&flatshare_q=§ion=for-sale&search_source=nav&include_shared_ownership=true&include_retirement_homes=true&new_homes=include\u00010", - "vab": "http://www.zvab.com/basicSearch.do?anyWords=\u0002\u00014", - "von": "http://zvon.org/comp/m/\u0002.html\u00010", - "ythom": "//duckduckgo.com/?q=site%3Azythom.blogspot.com+\u0002\u00010" - }, - "و": "//ar.wikipedia.org/wiki/Special:Search?search=\u0002\u00010", - "ג": "//www.google.co.il/\u0002\u00010", - "γ": "//www.google.gr/?gws_rd=ssl#q=\u0002\u00010", - "в": { - "\u0010": "//uk.m.wikipedia.org/wiki/\u0002\u00010", - "н": "//ru.wikinews.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D0%B8%D1%81%D0%BA?search=\u0002\u00010", - "с": "//ru.wiktionary.org/w/index.php?search=\u0002&ns0=1\u00010", - "ики": "//ru.wikipedia.org/w/index.php?search=\u0002&\u00010" - }, - "г": { - "\u0010": "//google.com/search?hl=ru&q=\u0002\u00010", - "к": "//www.google.ru/search?q=\u0002&tbm=isch\u00010", - "бг": "//www.google.bg/search?source=hp&q=\u0002\u00010", - "ост": "http://docs.cntd.ru/search/intellectual?q=\u0002\u00010" - }, - "л": "http://www.labirint.ru/search/\u0002\u00010", - "п": { - "\u0010": "//www.google.com/search?q=\u0002\u00012502564", - "ш": "//www.google.ru/search?tbm=isch&q=\u0002\u00010" - }, - "ц": "//ru.wikipedia.org/wiki/Special:Search?search=\u0002\u00010", - "ш": { - "\u0010": "//ru.wikipedia.org/w/index.php?search=\u0002\u00014", - "ру": "//ru.wikipedia.org/w/index.php?search=\u0002\u00014" - }, - "я": { - "\u0010": "//yandex.ru/yandsearch?text=\u0002\u00010", - "к": "//yandex.ru/images/search?text=\u0002\u00010", - "м": { - "у": "//music.yandex.com/search?text=\u0002\u00010", - "\u0010": "//yandex.ru/maps/?text=\u0002\u00010" - } - }, - "14": { - "0": "//140journos.com/search?q=\u0002\u00010", - "\u0010": "//14-tage-wettervorhersage.de/suche/?q=\u0002&lg=de\u00013", - "4": "http://b144.co.il/PrivateResults.aspx?&p_name=\u0002\u00010" - }, - "1c": "//1cak.com/search-0-\u0002\u00014", - "3m": "http://www.trojmiasto.pl/s/\u0002/\u00010", - "3t": { - "\u0010": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Engelsk&Fra=\u0002&button=Translate%21\u00010", - "ailer": "//3tailer.com/search/?q=\u0002\u00010" - }, - "8a": "//www.8a.nu/scorecard/Search.aspx?Mode=SIMPLE&AscentType=0&CragName=\u0002\u00010", - "äx": "//www.levykauppax.fi/search/?q=\u0002\u00010", - "'f": "//www.fransktlexikon.se/\u0002\u00010", - "/.": { - "j": "http://slashdot.jp/index2.pl?fhfilter=\u0002\u00010", - "\u0010": "http://slashdot.org/index2.pl?fhfilter=\u0002\u00010" - }, - "l1": { - "\u0010": "//level-1.fr/?s=\u0002\u00010", - "sp": "http://l1sp.org/search?q=\u0002\u000110" - }, - "la": { - "c": { - "\u0010": "http://www.bac-lac.gc.ca/eng/collectionsearch/Pages/collectionsearch.aspx?q=\u0002\u00010", - "uerda": "http://acordes.lacuerda.net/busca.php?canc=0&exp=\u0002\u00014" - }, - "d": "//glosbe.com/la/en/\u0002\u00010", - "f": { - "\u0010": "http://www.lafeltrinelli.it/fcom/it/home/pages/catalogo/searchresults.html?srch=0&sort=1&page=1&prkw=\u0002&cat1=1\u00010", - "ourchette": "//www.lafourchette.com/search-refine/\u0002\u00010", - "tel": "//laftel.net/search?keyword=\u0002\u00010" - }, - "\u0010": "//de.langenscheidt.com/deutsch-englisch/search?term=\u0002\u000115", - "m": { - "\u0010": "//www.lambdatest.com/blog/?s=\u0002\u00010", - "ps": "//www.lamps.com/catalogsearch/result?q=\u0002\u00010", - "etayel": "http://forum.lametayel.co.il/index.php?t=search&forum_limiter=0&field=all&search_logic=AND&type=msg&srch=\u0002&btn_submit=\u00010", - "hatech": "//www.lamhatech.com/search?q=\u0002\u00010", - "laminkings": "//lamlaminkings.com.ng/?s=\u0002&submit=Search\u00010", - "mps": "http://lammps.sandia.gov/doc/search.html?q=\u0002\u00010" - }, - "r": { - "\u0010": "http://www.larousse.fr/dictionnaires/francais/\u0002\u0001182", - "acasts": "//laracasts.com/search?q=\u0002\u00010", - "avel": "//laravel.com/docs/\u0002\u000187", - "enfr": "http://www.larousse.fr/dictionnaires/anglais-francais/\u0002\u000134", - "esfr": "http://www.larousse.fr/dictionnaires/espagnol-francais/\u0002/\u00010", - "fren": "//www.larousse.fr/dictionnaires/rechercher?q=\u0002&l=francais-anglais&culture=\u00014", - "fres": "http://www.larousse.fr/dictionnaires/francais-espagnol/\u0002/\u00010", - "frit": "//www.larousse.fr/dictionnaires/francais-italien/\u0002/?q=\u0002\u00010", - "ousse": "http://www.larousse.fr/dictionnaires/francais/\u0002\u0001182" - }, - "s": { - "\u0010": "http://www.perseus.tufts.edu/hopper/morph?&la=la&l=\u0002&la=la\u00010", - "er": { - "\u0010": "http://lasership.com/track/\u0002\u00010", - "ship": "http://lasership.com/track/\u0002\u00010" - }, - "tampa": "http://www.lastampa.it/ricerca?search=\u0002\u00010", - "tfm": { - "\u0010": "http://www.last.fm/search?q=\u0002\u0001160", - "music": "//www.last.fm/music/\u0002\u00013" - }, - "t.fm": "http://www.last.fm/search?q=\u0002&from=ac\u000119" - }, - "t": { - "\u0010": "http://www.archives.nd.edu/cgi-bin/wordz.pl?keyword=\u0002\u000110", - "in": { - "\u0010": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=la\u000127", - "o": "//www.dizionario-latino.com/dizionario-latino-italiano.php?parola=\u0002\u00017" - }, - "dict": "http://latin-dictionary.net/search/latin/\u0002\u00010", - "einde": "//www.albertmartin.de/latein/?q=\u0002\u00010", - "emodelresto": { - "\u0010": "http://www.latemodelrestoration.com/product/search?q=\u0002\u00010", - "ration": "http://www.latemodelrestoration.com/product/search?q=\u0002\u00010" - }, - "ency": "//latency.apex.sh/?url=\u0002\u00010", - "exwb": "//en.wikibooks.org/wiki/Search?search=\u0002&prefix=LaTeX\u00010", - "imes": "http://search.latimes.com/search?q=\u0002\u000137", - "long": "http://www.latlong.net/search.php?keyword=\u0002\u00010" - }, - "u": { - "\u0010": "//www.lau.edu.lb/search/index.php?q=\u0002\u00010", - "t": "//www.laut.de/Suche?q=\u0002\u00010", - "nchpad": "//launchpad.net/+search?field.text=\u0002\u00014" - }, - "w": { - "\u0010": "//www.law.cornell.edu/search/site/\u0002\u00010", - "s": "//www.global-regulation.com/search.php?year&country&province&d=1&start&q=\u0002&advanced=false\u00010", - "tw": "//law.moj.gov.tw/Law/LawSearchResult.aspx?ty=ONEBAR&kw=\u0002\u00010", - "phil": "//cse.google.com/cse?cx=000327027907964447955:65fjwortx5c&q=\u0002&oq=\u0002&gs_l=partner-generic.3...6080.6409.0.9078.4.4.0.0.0.0.157.426.2j2.4.0.gsnos%2Cn%3D13...0.264j30168j4...1.34.partner-generic..2.2.173.cXIan67Quoc\u000121", - "yer": "//www.avvo.com/search?query=\u0002\u00010" - }, - "z": { - "\u0010": "//www.lazada.com.ph/catalog/?q=\u0002\u000151", - "th": "http://www.lazada.co.th/catalog/?scs=0&q=\u0002 \u00010", - "adaid": "http://www.lazada.co.id/catalog/?q=\u0002 \u00010", - "adaph": "//www.lazada.com.ph/catalog/?q=\u0002\u000151" - }, - "ec": "//laec.fr/recherche?termes=\u0002\u00010", - "ng": { - "\u0010": "//LanguageTool.org/?text=\u0002\u000124", - "en": "//en.langenscheidt.com/german-english/\u0002\u00013" - }, - "pa": { - "\u0010": "http://lapatilla.com/?s=\u0002\u00010", - "ck": "http://www.netlib.org/lapack/complex16/\u0002.f\u00010", - "tria": "http://lapatria.com/?q=\u0002\u00010" - }, - "pl": "//ls2pac.lapl.org/?section=search&term=\u0002\u00010", - "bdoor": "//labdoor.com/review?q=\u0002\u00010", - "emmle": "//www.laemmle.com/search?q=\u0002\u00010", - "inwiki": "//lain.wiki/index.php?search=\u0002\u00010", - "nacion": "http://buscar.lanacion.com.ar/\u0002/sort-new\u00010", - "npor": "http://www.microsoft.com/Language/en-US/Search.aspx?sString=\u0002&langID=pl-pl\u00010", - "opinione": "//laopinione.com/?s=\u0002\u00010", - "poste": "http://www.csuivi.courrier.laposte.fr/suivi?id=\u0002\u00017", - "ptopdirect": "http://www.laptopdirect.co.za/search.php?SearchTerm=\u0002\u00010", - "voro": "http://www.motorelavoro.it/?q=\u0002\u00010" - }, - "lb": { - "c": { - "\u0010": "http://www.leboncoin.fr/recherche/?text=\u0002\u0001583", - "ra": "//www.leboncoin.fr/recherche/?text=\u0002®ions=22\u00010", - "idf": "//www.leboncoin.fr/recherche/?text=\u0002®ions=12\u00010" - }, - "f": "//labonneformation.pole-emploi.fr/toutes-les-formations?motscles=\u0002\u00010", - "\u0010": "//letterboxd.com/search/\u0002/\u00011086", - "p": "//lbp.me/search/v?q=\u0002\u00010", - "s": "//www.logos.com/products/search?q=\u0002\u00010", - "x": "//letterboxd.com/search/\u0002\u000150" - }, - "lc": { - "c": { - "\u0010": "http://eng.letscc.net/?t=all&k=\u0002\u00010", - "n": "//lccn.loc.gov/\u0002\u00010" - }, - "\u0010": "//laracasts.com/search?q=\u0002\u00010", - "r": "http://lxr.free-electrons.com/ident?i=\u0002\u00010", - "bs": "//www.luftfahrtclubbraunschweig.de/suchen.php?such=\u0002\u00010", - "id": "http://id.loc.gov/search/?q=\u0002&q=\u00010", - "sc": "//lcsc.com/search?q=\u0002\u000136", - "auth": "http://authorities.loc.gov/cgi-bin/Pwebrecon.cgi?Search_0Arg=\u0002&Search_Code=SHED_&PID=pyauyDhI6ZL9vR3exz9cx8t8BF&SEQ=20161101104025&CNT=100&HIST=1\u00010", - "harts": "//www.litcharts.com/search?query=\u0002\u00010", - "onj": "//www.larousse.fr/conjugaison/francais/\u0002\u000119", - "sgo": "http://wiki.teamliquid.net/counterstrike/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00015", - "uerdanet": "http://acordes.lacuerda.net/busca.php?exp=\u0002 \u00010" - }, - "ld": { - "a": "http://de.langenscheidt.com/deutsch-arabisch/search?term=\u0002\u00010", - "e": "//en.langenscheidt.com/german-english/\u0002\u00013", - "\u0010": "http://www.ldoceonline.com/search/?q=\u0002\u0001193", - "s": { - "\u0010": "//www.lds.org/search?lang=eng&query=\u0002 \u000135", - "s": "//www.lds.org/scriptures/search?lang=eng&query=\u0002\u00013", - "dk": "//www.lav-det-selv.dk/find?q=\u0002\u00010" - }, - "db": "http://www.lddb.com/search.php?search=\u0002\u00015", - "lc": { - "\u0010": "http://www.ldlc.com/navigation/\u0002/\u000122", - "be": "http://www.ldlc.be/navigation/\u0002/\u00010" - }, - "ota": "http://wiki.teamliquid.net/dota2/index.php?search=\u0002\u000198" - }, - "le": { - "b": { - "\u0010": "http://lowendbox.com/?s=\u0002\u00010", - "oncoin": "//www.leboncoin.fr/recherche/?text=\u0002\u000177" - }, - "f": "//www.linguee.com/english-french/search?source=french&query=\u0002\u000113", - "i": { - "\u0010": "//leifinder.com/search/\u0002/0/15/results.html?\u00016", - "fi": "//www.leifiphysik.de/suche?search_api_fulltext=\u0002\u00010", - "denlib": "//www.bibliotheek.universiteitleiden.nl/zoeken?q=\u0002\u00010", - "surepro": "http://www.leisurepro.com/search?searchinfo=\u0002\u00010" - }, - "n": { - "\u0010": "//mothereff.in/byte-counter#\u0002\u00010", - "fr": "//www.linguee.fr/francais-anglais/search?source=anglais&query=\u0002\u00013", - "ovo": "http://shop.lenovo.com/SEUILibrary/controller/e/web/LenovoPortal/en_US/site.workflow:SimpleSiteSearch?q=\u0002&v=15&lang=en&cc=us&en=utf&Search.x=0&Search.y=0&Search=Search\u00015" - }, - "o": { - "c": "http://dict.leo.org/chde?lp=chde&search=\u0002\u00013", - "\u0010": "//dict.leo.org/englisch-deutsch/\u0002\u00016902", - "e": "http://dict.leo.org/ende?lp=ende&search=\u0002\u0001507", - "f": { - "\u0010": "http://dict.leo.org/frde?lp=frde&search=\u0002\u000180", - "r": "//dict.leo.org/französisch-deutsch/\u0002\u000173" - }, - "i": "http://dict.leo.org/itde?lp=itde&search=\u0002\u000155", - "p": { - "\u0010": "http://dict.leo.org/ptde/?lp=ende&lang=de&searchLoc=0&cmpType=relaxed§Hdr=on&spellToler=&search=\u0002\u000111", - "l": "//dict.leo.org/plde/?search=\u0002\u00010", - "t": "//dict.leo.org/portugiesisch-deutsch/\u0002\u00010" - }, - "r": { - "\u0010": "http://dict.leo.org/rude?lp=rude&search=\u0002\u00019", - "u": "//dict.leo.org/russisch-deutsch/\u0002\u00017" - }, - "s": "http://dict.leo.org/esde?lp=esde&search=\u0002\u0001155", - "ns": "//www.leons.ca/pages/search-results?limit=48&q=\u0002\u00010" - }, - "s": { - "\u0010": "http://www.linguee.es/espanol-ingles/search?source=auto&query=\u0002\u0001158", - "fr": "//www.linguee.fr/francais-espagnol/search?source=espagnol&query=\u0002\u00010", - "cris": "//duckduckgo.com/?q=site%3Ales-cris.com+\u0002\u00010", - "num": { - "\u0010": "http://www.lesnumeriques.com/recherche?q=\u0002\u00013", - "eriques": "http://www.lesnumeriques.com/recherche.html?q=\u0002&cx=partner-pub-8349656358827352%3A8590362607&cof=FORID%3A10&ie=UTF-8&hl=fr\u00010" - }, - "oir": "//www.lesoir.be/archives/recherche?word=\u0002&sort=date%20desc&datefilter=lastyear&form_build_id=form-OccakxlLTXnbavxnbgZGoqHzkT0bEeOrjy3PPlFais4&form_id=dpidamwidgets_damsimplesearch_content_type_search_form\u00010" - }, - "t": { - "\u0010": "http://www.lowendtalk.com/search?Search=\u0002\u00010", - "o": "http://letonika.lv/default.aspx?q=\u0002\u00017", - "ra": { - "\u0010": "//letras.top/results/?q=\u0002\u00010", - "s": { - "\u0010": "http://letras.mus.br/?q=\u0002 \u00016", - "br": "http://letras.mus.br/?q=\u0002\u00010" - } - }, - "ssingit": "//search.letssingit.com/?s=\u0002&a=search&l=archive\u00010", - "terboxd": "http://letterboxd.com/search/films/\u0002/\u0001248" - }, - "\u0010": "//le.ac.uk/search?q=\u0002\u000111", - "el": "//www.clsfyd.com/search-results/?ad_title=\u0002\u00010", - "go": { - "\u0010": "//search2.lego.com/en-GB/\u0002\u000111", - "ideas": "//ideas.lego.com/discover#search/q:\u0002\u00010", - "wiki": "//lego.fandom.com/search?query=\u0002\u00010" - }, - "ka": "//www.varusteleka.fi/fi/bestsearch/\u0002?q=\u0002\u00010", - "mo": { - "\u0010": "//www.hdg.de/lemo/search/?q=\u0002\u00010", - "nde": "http://www.lemonde.fr/recherche/?search_keywords=\u0002\u000152" - }, - "vi": "//levidsmith.com/?s=\u0002\u00010", - "xp": "http://lexparency.org/eu/EN/search?deep=True&search_words=\u0002\u00010", - "xt": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=\u0002\u00010", - "afly": "//www.leafly.com/search?q=\u0002\u000116", - "arn": { - "\u0010": "//learningapps.org/index.php?s=\u0002\u00010", - "dev": "//php.learndev.info/?q=\u0002\u00010", - "ersdictionary": "http://www.learnersdictionary.com/definition/\u0002\u00010", - "gaelic": "http://www.learngaelic.net/dictionary/index.jsp?slang=both&wholeword=false&abairt=\u0002\u00014", - "-js": "http://learn.javascript.ru/search?query=\u0002\u00010", - "lol": "//www.reddit.com/r/summonerschool/search/?q=\u0002&restrict_sr=1\u00010", - "xiny": "//learnxinyminutes.com/docs/\u0002/\u000114", - "zone": "http://learnzone.org.uk/courses/?q=\u0002\u00010" - }, - "cker": "http://www.lecker.de/suche-rezept/\u0002\u00010", - "clerc": "//www.culture.leclerc/pageRecherche?q=\u0002&univers=all\u00010", - "dict": "http://www.le-dictionnaire.com/resultats.php?mot=\u0002\u00010", - "dom": "//ledom.com.ua/search?controller=search&orderby=position&orderway=desc&search_category=all&s=\u0002\u00010", - "gal": "http://scholar.google.com/scholar?hl=en&q=\u0002&btnG=Search&as_sdt=2%2C5&as_ylo=&as_vis=0\u00010", - "gimi": "//www.legimi.pl/ebooki/?szukaj=\u0002\u00010", - "gisqc": "http://legisquebec.gouv.qc.ca/fr/result?command=search&length=10&search_type=all&title_search_type=any&corpus=all&corpusType=c&langCont=fr&fragment=\u0002&shorttitle=&stemmed=stemmed\u00010", - "long": "//www.lelong.com.my/catalog/all/list?TheKeyword=\u0002\u00010", - "rnabit": "//lernabit.com/search?q=\u0002\u00010", - "rnuen": "//lernu.net/en/vortaro/\u0002\u00010", - "rnues": "//lernu.net/es/vortaro/\u0002\u00010", - "roymerlinit": "//www.leroymerlin.it/ricerca?q=\u0002&page=1\u00010", - "wrockwell": "//duckduckgo.com/?q=site%3Alewrockwell.com+\u0002 \u00010", - "xin": "http://lexin.udir.no/?search=\u0002&dict=nbo-maxi&ui-lang=NBO&startingfrom=&count=10&checked-languages=E&checked-languages=N\u00010", - "xicanum": "http://wh40k.lexicanum.com/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u000192", - "xisnexis": "//www.lexisnexis.com.au/en/global-pages/search?query=\u0002\u00010", - "xml": "//www.lexml.gov.br/busca/search?keyword=\u0002&f1-tipoDocumento=\u00010" - }, - "lf": { - "c": "//old.reddit.com/r/LiverpoolFC/search?q=\u0002&restrict_sr=on\u00010", - "\u0010": "http://www.lesfrontaliers.lu/search?text=\u0002\u00010", - "m": "http://www.last.fm/music/\u0002/\u0001125", - "pl": "http://pac.lfpl.org/polaris/search/searchresults.aspx?&type=Default&by=KW&sort=RELEVANCE&term=\u0002\u00010", - "twiki": "http://lapfoxtrax.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010" - }, - "lh": { - "\u0010": "http://lifehacker.com/search?q=\u0002\u00016", - "v": { - "\u0010": "http://lehollandaisvolant.net/?q=\u0002\u00016", - "l": "http://lehollandaisvolant.net/?mode=links&q=\u0002\u00010" - } - }, - "li": { - "c": { - "\u0010": "//www.linkedin.com/search/results/companies/?keywords=\u0002\u0001188", - "entium": "//licentium.net/w/index.php?search=\u0002\u00010" - }, - "i": "//www.law.cornell.edu/search/site/\u0002\u00010", - "\u0010": "//www.linkedin.com/search/results/all/?keywords=\u0002\u00012687", - "m": "//www.limundo.com/pretragaLimundo.php?bSearchBox=1&txtPretraga=\u0002&Submit=\u00010", - "n": { - "g": { - "e": { - "\u0010": "http://www.linguee.com/deutsch-englisch/search?source=auto&query=\u0002\u000168", - "rka": "//lingerka.pl/catalogsearch/result/?q=\u0002\u00010" - }, - "f": { - "e": "http://www.linguee.fr/francais-anglais/search?source=auto&query=\u0002\u000117", - "\u0010": "//www.linguee.de/deutsch-franzoesisch/search?source=auto&query=\u0002\u00014", - "n": "http://www.linguee.fr/francais-neerlandais/search?source=auto&query=\u0002\u00010", - "p": "http://www.linguee.fr/francais-portugais/search?source=auto&query=\u0002\u00010", - "r": "http://www.linguee.fr/francais-anglais/search?source=auto&query=\u0002\u000117" - }, - "\u0010": "//ling.pl/slownik/angielsko-polski/\u0002\u000134", - "o": "http://www.netlingo.com/search.php?searchtxt=\u0002\u00010", - "p": { - "f": "http://www.linguee.fr/francais-portugais/search?source=portugais&query=\u0002\u00010", - "\u0010": "http://www.linguee.de/deutsch-portugiesisch/search?source=auto&query=\u0002\u00010", - "l": "http://www.linguee.pl/angielski-polski/t%C5%82umaczenie/\u0002.html\u00010" - }, - "vo": "//lingvolive.ru/translate/en-ru/\u0002\u00010", - "ualeo": "//lingualeo.com/ru/glossary/learn/dictionary#\u0002\u00010", - "uee": { - "\u0010": "http://www.linguee.de/deutsch-englisch/search?source=auto&query=\u0002\u0001127", - "fe": "//www.linguee.de/francais-englisch/search?source=auto&query=\u0002 \u00010" - }, - "ues": "//www.linguee.es/espanol-ingles/search?source=auto&query=\u0002\u000194" - }, - "\u0010": "http://www.linguee.com/english-french/search?source=auto&query=\u0002 \u0001116", - "br": "http://www.linguee.com.br/portugues-ingles/search?source=auto&query=\u0002\u000114", - "dp": "http://www.linguee.de/deutsch-portugiesisch/search?source=auto&query=\u0002\u00010", - "ef": "//www.linguee.com/english-french/search?source=auto&query=\u0002\u000143", - "eg": "http://www.linguee.com/english-german/search?source=german&query=\u0002\u00013", - "ei": "//www.linguee.it/italiano-inglese/search?query=\u0002\u00010", - "en": "http://www.linguee.com/english-dutch/search?source=auto&query=\u0002\u000115", - "ep": "http://www.linguee.com/english-portuguese/?query=\u0002\u000126", - "es": { - "\u0010": "http://www.linguee.com/english-spanish/?query=\u0002\u000157", - "in": "http://www.linguee.es/espanol-ingles/search?source=auto&query=\u0002\u0001158" - }, - "fd": "http://www.linguee.fr/francais-allemand/search?source=auto&query=\u0002 \u00010", - "fe": "//www.linguee.fr/francais-anglais/search?query= \u0002\u000123", - "kl": "//linklocker.co/search?query=\u0002\u00010", - "pe": "http://www.linguee.com/english-portuguese/search?source=portuguese&query=\u0002\u00010", - "se": "http://www.linguee.com/english-swedish/search?query=\u0002\u00010", - "sv": "http://www.linguee.com/english-swedish/search?source=auto&query=\u0002\u00010", - "ux": { - "\u0010": "//explicativolinux.wordpress.com/?s=\u0002\u000113", - "q": "http://www.linuxquestions.org/questions/\u0002\u00010", - "fr": "//duckduckgo.com/?q=\u0002+site%3Alinuxfr.org&ia=web\u00010", - "mint": "http://forums.linuxmint.com/search.php?keywords=\u0002\u00013", - "tracker": "http://linuxtracker.org/index.php?page=torrents&search=\u0002\u00013" - }, - "coder": "http://www.lincoder.com/?s=\u0002:\u00010", - "dit": "http://www.linguee.de/deutsch-italienisch/search?source=auto&query=\u0002\u00010", - "kedin": "//www.linkedin.com/search/results/all/?keywords=\u0002\u00012687", - "kiesta": "http://www.linkiesta.it/cerca/\u0002\u00010", - "kup": "http://www.linkup.com/results.php#q=\u0002\u00010", - "-nlen": "http://www.linguee.nl/nederlands-engels/search?source=auto&query=\u0002\u00010", - "ode": "//library.linode.com/search?query=\u0002\u00010", - "org": "//www.linux.org/search/?q=\u0002\u00010", - "snipp": "http://linuxsnippets.net/en/search/node/\u0002\u00010", - "ternaute": { - "\u0010": "http://www.linternaute.com/encyclopedie/recherche/?f_libelle=\u0002\u00010", - "sy": "//www.linternaute.fr/dictionnaire/fr/synonyme/\u0002/\u00010" - } - }, - "o": "//libraries.io/search?q=\u0002\u00010", - "t": { - "e": { - "\u0010": "//duckduckgo.com/lite?q=\u0002\u0001283", - "r": { - "\u0010": "//www.montygreylock.com/search/?q=\u0002\u00010", - "ana": "//literana.de/?s=\u0002\u00010" - }, - "fx": "//www.litefx.to/search?q=\u0002\u00010" - }, - "\u0010": "//luvit.io/lit.html#\u0002\u00010", - "fl": "//litfl.com/?s=\u0002\u00010", - "blog": "//learneditonline.blog/?s=\u0002\u00010", - "dev": "//literarydevices.net/?s=\u0002\u00010", - "res": "//www.litres.ru/pages/rmd_search/?q=\u0002\u00013", - "tre": "http://www.littre.org/definition/\u0002\u00010" - }, - "u": "http://search.liu.se/en/?query=\u0002\u00010", - "be": { - "\u0010": "//www.liberation.fr/recherche/?q=\u0002\u000117", - "ria": "http://www.libreriauniversitaria.it/c_power_search.php?shelf=BIT&q=\u0002&submit=\u00010" - }, - "de": "http://www.linguee.de/deutsch-englisch/search?source=auto&query=\u0002\u0001127", - "df": "//www.linguee.de/deutsch-franzoesisch/search?source=auto&query=\u0002\u00014", - "di": "http://www.linguee.de/deutsch-italienisch/search?query=\u0002\u00010", - "ed": "//www.linguee.de/deutsch-englisch/search?source=englisch&query=\u0002\u000166", - "es": "//www.linguee.es/espanol-ingles/search?query=\u0002\u00010", - "fd": "//www.linguee.fr/francais-allemand/search?source=auto&query=\u0002\u00010", - "fe": { - "\u0010": "//www.lifesitenews.com/archives/search/?q=\u0002\u00010", - "hack": { - "\u0010": "http://lifehacker.com/search?q=\u0002\u00016", - "er": "http://lifehacker.com/search?q=\u0002\u00016", - "ing": "http://lifehacking.nl/?s=\u0002\u00010" - }, - "print": "http://www.google.com/cse?cx=partner-pub-2513564923850231%3Anzof3qz9abm&ie=ISO-8859-1&q=time&sa=Search#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010", - "ray": "//dev.liferay.com/es/search?p_p_id=3&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_3_struts_action=%2Fsearch%2Fsearch&_3_redirect=%2Fes%2Fdevelop%2Ftutorials%2F-%2Fknowledge_base%2F7-1%2Fupgrading-a-liferay-mvc-portlet&_3_keywords=\u0002&_3_groupId=10184\u00010" - }, - "fo": "//www.lifo.gr/search?q=\u0002\u00010", - "hu": "//www.linguee.com/english-hungarian/search?source=auto&query=\u0002\u00010", - "ke": "http://thesaurus.com/browse/\u0002\u000188", - "lo": "//search.lilo.org/searchweb.php?q=\u0002\u00010", - "bby": "//libbyapp.com/library/reads/search/query-\u0002/page-1\u00010", - "bcom": "//libcom.org/search/node/\u0002\u00010", - "bdems": "http://www.libdems.org.uk/search?q=\u0002\u00010", - "bgdx": "//duckduckgo.com/?q=site%3Alibgdx.badlogicgames.com+\u0002&t=h&ia=web\u00010", - "biiitd": "http://library.iiitd.edu.in/cgi-bin/koha/opac-search.pl?idx=&q=\u0002\u00010", - "bre": { - "\u0010": "//librewiki.net/wiki/Special:Search?search=\u0002&go=Go\u00014", - "fm": "http://libre.fm/search.php?search_term=\u0002\u00010", - "flix": "//www.libreflix.org/busca/\u0002\u00010", - "stock": "http://librestock.com/search/?query=\u0002\u00010", - "ture": "//www.libreture.com/search/?q=\u0002\u00010", - "wiki": "//librewiki.net/index.php?title=%ED%8A%B9%EC%88%98%3A%EA%B2%80%EC%83%89&search=\u0002\u00013" - }, - "brs": "//lib.rs/search?q=\u0002\u0001408", - "bris": "http://libris.kb.se/hitlist?d=libris&q=\u0002&f=simp&spell=true\u000116", - "braries": "//libraries.io/search?q=\u0002\u00010", - "brarything": "http://www.librarything.com/search_works.php?q=\u0002\u000126", - "brivox": "http://librivox.org/newcatalog/search.php?title=\u0002&author=&status=all&action=Search\u00014", - "bth": { - "\u0010": "http://lib.thessaloniki.gr/ipac20/ipac.jsp?session=14048C549F1N5.44906&menu=search&aspect=subtab37&npp=10&ipp=20&spp=20&profile=central--1&ri=&term=\u0002&index=.GW&x=0&y=0&aspect=subtab37\u00010", - "ing": "//www.librarything.com/search.php?term=\u0002\u00010" - }, - "buv": { - "a": "//lib.uva.nl/primo-explore/search?query=any,contains,\u0002&tab=all&search_scope=uva_all&vid=UVA\u00010", - "\u0010": "http://docs.libuv.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00010" - }, - "buniversitaria": "http://www.libreriauniversitaria.it/c_power_search.php?shelf=BIT&q=\u0002&submit=\u00010", - "dwoord": "//www.welklidwoord.nl/\u0002\u00010", - "ende": "//www.linguee.com/english-german/search?source=auto&query=\u0002\u000127", - "enit": "http://www.linguee.com/english-italian/search?source=auto&query=\u0002\u00010", - "fpv": "//lifpv.com/?s=\u0002\u00010", - "ght": { - "\u0010": "//www.light.gg/db/search/?q=\u0002 \u000114", - "fm": "//www.lightfm.com.au/?s=\u0002\u00010", - "gg": "//www.light.gg/db/search/?q=\u0002\u000112" - }, - "gnux": "http://lignux.com/?s=\u0002\u00010", - "hkg": "//lihkg.com/search?q=\u0002\u00016", - "-ion": "//www.battdepot.com/nl/Search.aspx?keywords=\u0002\u00010", - "learning": "//www.linkedin.com/learning/search?keywords=\u0002\u00010", - "lypond": "http://lsr.di.unimi.it/LSR/Search?q=\u0002\u00010", - "pad": "//www.lipad.ca/search/?q=\u0002\u00010", - "psum": "http://www.lipsum.com/feed/html?amount=\u0002\u00016", - "quidation": "http://www.liquidation.com/auction/search?cmd=keyword&searchparam_words=\u0002&flag=new\u00010", - "quidpedia": "http://wiki.teamliquid.net/starcraft2/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00014", - "quipedia": "http://wiki.teamliquid.net/starcraft2/index.php?title=Special%3ASearch&go=Go&search=\u0002\u000165", - "quorland": "//www.liquorland.com.au/Search?q=\u0002\u00010", - "rik": "//lirik.web.id/results/?q=\u0002\u00010", - "stal": "http://www.listal.com/search/\u0002\u000112", - "stam": "http://www.list.am/category?q=\u0002\u00010", - "stadomangablog": "http://www.listadomanga.es/blog/?s=\u0002\u00010", - "stcorp": "//www.listcorp.com/search?q=\u0002\u00010", - "stennotes": "//www.listennotes.com/search?q=\u0002\u00014", - "stverse": "http://listverse.com/search/?q=\u0002&sa=Search\u00010", - "vec": "//www.livechart.me/search?q=\u0002\u000127", - "vely": "//shirts.ly/shop?search=\u0002\u00010", - "veatc": "//www.liveatc.net/search/?icao=\u0002\u00010", - "veleak": "http://www.liveleak.com/browse?q=\u0002 \u00017", - "vemint": "//www.livemint.com/Search/Link/Keyword/\u0002\u00010", - "veplasma": "http://www.liveplasma.com/#/artist/\u0002 \u00010", - "vestrong": "http://www.livestrong.com/search/?mode=standard&search=\u0002\u00010", - "zzart": "http://www.lizzart.fr/boutique/tout/recherche.html?keyword=\u0002&limitstart=0&option=com_virtuemart&view=category\u00010" - }, - "lj": "http://duckduckgo.com/?q=site%3Alivejournal.com+\u0002 \u00010", - "lk": { - "\u0010": "http://www.lolking.net/search?name=\u0002\u00014", - "n": "//lokan.jp/?s=\u0002\u00010" - }, - "ll": { - "\u0010": "http://www.liveleak.com/browse?q=\u0002\u000118", - "ib": "//leeds.summon.serialssolutions.com/?q=elonmsuck&fvf=ContentType%2CBook+Review%2Ct#!/search?ho=t&fvf=ContentType,Book%20Review,t&l=en&q=\u0002\u00010", - "uk": "http://capitadiscovery.co.uk/liverpool/items?query=\u0002\u00010", - "vm": "//duckduckgo.com/?q=site%3Allvm.org+\u0002\u000116", - "bean": "http://www.llbean.com/llb/search/?freeText=\u0002&init=1\u00014" - }, - "lm": { - "a": "http://archive.org/search.php?query=\u0002%20AND%20collection%3Aetree\u00010", - "c": "//les-maitres-composeurs.fr/?s=\u0002&post_type=product\u00010", - "\u0010": "http://www.livemixtapes.com/main.php?artist=\u0002\u00010", - "r": "http://www.latemodelrestoration.com/Product/Search?q=\u0002\u00010", - "s": "//lemmasoft.renai.us/forums/search.php?keywords=\u0002\u00010", - "u": "//opac.ub.uni-muenchen.de/TouchPoint/start.do?View=sunrise&Language=de&Query=-1=%22\u0002%22\u00010", - "w": { - "\u0010": "//lostmediawiki.com/index.php?search=\u0002\u000113", - "iki": "http://luigi-mansion.wikia.com/wiki/Special:Search?search=\u0002\u00010" - }, - "x": "//www.linio.com.mx/search?q=\u0002\u00010", - "ec": "//collections.leventhalmap.org/search?&q=\u0002\u00010", - "ms": "//lmms.io/wiki/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010", - "ddgtfy": "//lmddgtfy.net/?q=\u0002\u00013", - "gtfy": "http://www.lmgtfy.com/?s=d&q=\u0002\u00015" - }, - "ln": { - "\u0010": "http://lenewbie.com/?s=\u0002\u00018", - "p": "//logbuch-netzpolitik.de/?s=\u0002\u00010", - "u": "//lnu-se-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&search_scope=default_scope&sortby=rank&vid=primo-custom-lnu&pcAvailability=false&lang=sv_SE\u00010", - "db": "http://lndb.info/search?text=\u0002\u00010" - }, - "lp": { - "h": "//www.leifiphysik.de/suche/\u0002\u00010", - "\u0010": "//launchpad.net/+search?field.text=\u0002\u00014", - "m": "//www.die.net/search/?q=\u0002\u00014", - "o": "http://www.lapoliticaonline.com/0/buscar/index.vnc?id=\u0002\u00010", - "s": "http://www.laptopspirit.fr/search/\u0002\u00010", - "archive": "http://lparchive.org/search/\u0002 #results\u00013", - "bug": "//bugs.launchpad.net/bugs/+bugs?field.searchtext=\u0002\u00014" - }, - "lq": { - "\u0010": "//forum.linuxquimper.org/search?q=\u0002\u00010", - "w": "http://wiki.linuxquestions.org/index.php?search=\u0002\u00010", - "dn": "//www.laquadrature.net/fr/search/apachesolr_search/\u0002\u00010", - "pcs": "//liquipedia.net/counterstrike/index.php?search=\u0002\u00010" - }, - "ls": { - "e": { - "\u0010": "//linuxsecurity.expert/search/?q=\u0002\u00010", - "lib": "//librarysearch.lse.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=CSCOP_ALL&sortby=rank&vid=44LSE_VU1\u00010" - }, - "f": "http://www.lsf.com.ar/resulta.aspx?key=\u0002\u00010", - "g": "http://www.lazada.sg/catalog/?q=\u0002\u00010", - "i": "http://search.letssingit.com/cgi-exe/am.cgi?a=search&l=archive&typeid=2&s=\u0002\u00010", - "\u0010": "http://littlesis.org/search?q=\u0002\u000117", - "r": "http://lsr.di.unimi.it/LSR/Search?q=\u0002\u00010", - "dh": "//lasombradelhelicoptero.com/?s=\u0002\u00010", - ".de-sv": "http://de.langenscheidt.com/deutsch-schwedisch/search?term=\u0002&q_cat=%2Fdeutsch-schwedisch%2F\u00010", - ".sv": "http://de.langenscheidt.com/schwedisch-deutsch/search?term=\u0002&q_cat=%2Fschwedisch-deutsch%2F\u00010", - "pace": "http://www.lspace.org/cgi-imps/perlfect/search/search.pl?q=\u0002\u00010", - "tarcraft": "//liquipedia.net/starcraft2/index.php?search=\u0002\u00010" - }, - "lt": { - "a": "//www.lta.org.uk/search-results/?q=\u0002\u00010", - "b": "//www.letras.mus.br/?q=\u0002 \u00010", - "c": "//litecoin.holytransaction.com/address/\u0002\u00010", - "\u0010": "//www.librarything.com/search.php?searchtype=work&search=\u0002\u0001416", - "r": { - "\u0010": "//letterboxd.com/search/\u0002\u000150", - "ans": "//www.linguee.es/espanol-ingles/search?&query=\u0002\u00010" - }, - "s": "http://www.latoilescoute.net/spip.php?page=recherche&recherche=\u0002 \u00010", - "t": { - "\u0010": "//linustechtips.com/main/search/?&q=\u0002\u000119", - "forum": "//duckduckgo.com/?q=\u0002+site%3Alinustechtips.com\u00010" - }, - "u": { - "\u0010": "http://lambda-the-ultimate.org/search/node/\u0002\u00010", - "lib": "http://search.lib.latrobe.edu.au/primo_library/libweb/action/dlSearch.do?vid=LATROBE&institution=LATROBE&search_scope=All&query=any,contains, \u0002 \u00010" - }, - "fr": "//www.larousse.fr/dictionnaires/italien-francais/\u0002\u00010", - "wiki": "//lt.wikipedia.org/w/index.php?search=\u0002\u00010" - }, - "lu": { - "\u0010": "//www.liberty.edu/search/?q=\u0002\u00010", - "t": { - "\u0010": "//www.bibleserver.com/text/LUT/\u0002\u00010", - "her": "//www.luther.edu/search/?q=\u0002\u00010", - "ris": "//lutris.net/games/?q=\u0002\u0001148" - }, - "x": { - "\u0010": "//lux.leuphana.de/vufind/Search/Results?lookfor=\u0002&submit=Suchen\u00010", - "or": "http://neoluxor.cz/vyhledavani/?query=\u0002\u00010", - "flair": "//www.luxflair.de/search?sSearch=\u0002 \u00010" - }, - "ch": "//de.lush.com/search/site/\u0002\u00010", - "do": { - "\u0010": "http://ludopedia.com.br/search?search=\u0002\u00010", - "pedia": "http://ludopedia.com.br/search?search=\u0002\u00010" - }, - "lu": "//www.lulu.com/shop/search.ep?keyWords=\u0002\u00010", - "pa": "//duckduckgo.com/?q=\u0002+site%3Apiaui.folha.uol.com.br+inurl%3Alupa&ia=web\u00010", - "rk": { - "\u0010": "http://lurkmore.to/index.php?search=\u0002\u000132", - "more": "http://lurkmore.to/index.php?search=\u0002\u000132" - }, - "adoc51": "//www.lua.org/manual/5.1/manual.html#pdf-\u0002\u00010", - "adoc52": "//www.lua.org/manual/5.2/manual.html#pdf-\u0002\u00010", - "adoc53": "//www.lua.org/manual/5.3/manual.html#pdf-\u0002\u00010", - "aforge": "http://luaforge.net/search/?type_of_search=soft&words=\u0002&Search=Search\u00010", - "arocks": "//luarocks.org/search?q=\u0002\u00013", - "bimyczytac": "http://lubimyczytac.pl/szukaj/ksiazki?phrase=\u0002\u00019", - "buntu": "http://lubuntu.me/?s=\u0002\u00010", - "cire": "//duckduckgo.com/?q=\u0002+site%3Alucire.com\u00010", - "cky": "http://www.google.com/search?q=\u0002&btnI\u0001101", - "dwig": "//ludwig.guru/s/\u0002 \u000122", - "gat": { - "\u0010": "http://www.lugatim.com/s/\u0002\u00015", - "ım": "http://lugatim.com/s/\u0002\u00010" - }, - "kol": "http://www.lukol.com/s.php?q=\u0002\u000116", - "mas": "//www.lumas.de/search/?q=\u0002\u00010", - "men": "http://lumendatabase.org/notices/search?utf8=✓&term=\u0002\u00010", - "naavr": "http://avr.myluna.de/doku.php?do=search&id=\u0002\u00010", - "zme": "http://luzme.com/search_all?keyword=\u0002\u00010" - }, - "lv": { - "\u0010": "http://www.livermore.lib.ca.us/search/a?searchtype=X&SORT=D&searchscope=7&searcharg=\u0002\u00010", - "l": "http://la-vache-libre.org/?s=\u0002\u00010", - "dl": "//www.lavocedellelotte.it/it/?s=\u0002\u00010", - "mag": "http://www.linuxvoice.com/?s=\u0002\u00010", - "oenru": "//www.lingvolive.com/en-us/translate/en-ru/\u0002\u00010" - }, - "lw": { - "g": "//ludwig.guru/s/\u0002\u000117", - "\u0010": "http://lesswrong.com/search/results?cx=015839050583929870010%3A-802ptn4igi&cof=FORID%3A11&ie=UTF-8&sa=Search&siteurl=lesswrong.com%2F&q=\u0002\u00018", - "n": "//lwn.net/Search/DoSearch?words=\u0002\u00010", - "jgl": "http://duckduckgo.com/?q=\u0002+site:http://lwjgl.org/javadoc/\u00010" - }, - "lx": { - "\u0010": "//www.lexico.com/definition/\u0002\u000120", - "r": "http://elixir.bootlin.com/linux/latest/ident/\u0002\u000147", - "le": "http://lxle.net/forum/#/search?Search=\u0002\u00010", - "ml": "http://marc.info/?l=linux-kernel&w=2&r=1&s=\u0002&q=b\u00010", - "iny": "//learnxinyminutes.com/docs/\u0002\u00010" - }, - "./": "http://slashdot.org/index2.pl?fhfilter=\u0002\u00010", - "xe": { - "\u0010": "//xe.com/currency/\u0002\u000133", - "n": { - "\u0010": "//en.xen.wiki/index.php?search=\u0002\u000112", - "de": "//de.xen.wiki/index.php?search=\u0002\u00010", - "oblade": "http://xenoblade.wikia.com/wiki/Special:Search?search=\u0002\u00017" - }, - "p": "//xmpp.org/extensions/xep-\u0002.html\u00010" - }, - "xf": { - "e": "//exchange.xforce.ibmcloud.com/search/\u0002\u00010", - "\u0010": "//forum.xojo.com/conversations/all?search=\u0002\u00010", - "ce-look": "//www.xfce-look.org/search?projectSearchText=\u0002 \u00010" - }, - "xl": { - "m": "//stellar.expert/explorer/public/account/\u0002\u00010", - "\u0010": "http://www.xtend-life.com/search-results?cx=005442268687610389394%3a4wscy8mawc0&cof=FORID%3a10&q=\u0002\u00010" - }, - "xt": "//xtupleuniversity.xtuple.com/search/node/\u0002\u000110", - "xu": "//www.xavier.edu/search/?q=\u0002\u00010", - "υτ": "//www.youtube.com/results?search_query=\u0002\u00011113", - "01net": "http://www.01net.com/recherche/recherche.php?searchstring=\u0002&chaine=home\u00014", - "02faq": "//www.bmw2002faq.com/search/?q=\u0002\u00010", - "0bo": "http://boxofficemojo.com/search/?q=\u0002\u00013", - "0to255": "http://0to255.com/\u0002\u00013", - "101": { - "\u0010": "http://www.101domain.com/domain-availability-search.htm?q=\u0002&sa.x=0&sa.y=0\u000153", - "domain": "//www.101domain.com/domain-availability-search.htm?q=\u0002\u00010" - }, - "1001": { - "\u0010": "http://1001boom.com/?s=\u0002\u00010", - "fonts": "http://www.1001fonts.com/search.html?search=\u0002&x=0&y=0\u00010" - }, - "118": { - "\u0010": "http://118.dk/search/go?what=\u0002\u00010", - "70": "http://11870.com/konsulto?q=\u0002\u00010" - }, - "1122": "//1122.com.uy/buscar/\u0002/todo-el-pais\u00010", - "1177": "http://www.1177.se/Sok/?q=\u0002\u00014", - "11st": "http://search.11st.co.kr/SearchPrdAction.tmall?method=getTotalSearchSeller&kwd=\u0002\u00016", - "11freunde": "http://www.11freunde.de/search/gss/\u0002\u00010", - "15min": "//www.15min.lt/paieska?q=\u0002\u00010", - "15mpedia": "//15mpedia.org/w/index.php?search=\u0002\u00010", - "17t": "http://www.17track.net/en/track?nums=\u0002\u000121", - "180": "//www.180.no/Search/All?w=\u0002\u00013", - "1881": "http://www.1881.no/?query=\u0002\u000142", - "1dr": "http://onedrive.live.com/?q=\u0002\u000111", - "1d4chan": "//1d4chan.org/index.php?search=\u0002\u000132", - "1gabba": "http://1gabba.net/frontpage?title=\u0002\u00010", - "1mg": "//www.1mg.com/search/all?name=\u0002\u00014", - "1p5": "//onepeterfive.com/?s=\u0002\u00014", - "1und1": "//www.1und1.de/suche?query=\u0002\u00010", - "20m": "http://www.20minutes.fr/search?q=\u0002\u00018", - "24au": "//krsk.au.ru/nextauction/?search=\u0002\u00010", - "24matins": "http://www.24matins.fr/?s=\u0002\u00010", - "24sessions": "http://24sessions.com/search/text:\u0002\u00010", - "27crags": "//27crags.com/site/search?qs=\u0002\u00010", - "2b2t": "//2b2t.miraheze.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00018", - "2channel": "http://find.5ch.net/search?q=\u0002\u00010", - "2dehands": "http://www.2dehands.be/markt?qq=\u0002\u00016", - "2eme": { - "\u0010": "http://www.2ememain.be/marche/2/\u0002/\u000123", - "main": "http://www.2ememain.be/marche/?qq=\u0002\u00010" - }, - "2gis": { - "\u0010": "http://2gis.ru/moscow/search/\u0002\u000120", - "sbp": "//2gis.ru/spb/search/\u0002\u00010", - "ufa": "//2gis.ru/ufa/search/\u0002\u00010" - }, - "2hu": "//touhoudb.com/Search?filter=\u0002\u00010", - "2nn": "//www.2nn.jp/word/\u0002\u00010", - "2pl": "http://2player.com/search/?search=\u0002\u00010", - "2xmc": "//www.2xmoinscher.com/r?q=\u0002\u00010", - "34travel": "//34travel.me/search?text=\u0002\u00010", - "35c3": "//events.ccc.de/congress/2018/wiki/index.php?search=\u0002\u00010", - "360": { - "\u0010": "http://www.360skate.com/catalogsearch/result/?q=\u0002 \u00010", - "so": "//www.so.com/s?q=\u0002\u00010", - "app": "//www.360androidapp.com/\u0002\u00010", - "iso": "http://image.so.com/i?q=\u0002\u00010" - }, - "3bm": "//www.3bmeteo.com/meteo/\u0002\u000137", - "3da": "//3dagogo.com/search?q=\u0002\u00010", - "3dj": "//www.3djuegos.com/?q=\u0002&zona=resultados-buscador&ni=1\u00010", - "3ds": "http://www.3ds.com/search/?q=\u0002\u00010", - "3dbrew": "http://3dbrew.org/wiki/Special:Search?search=\u0002&go=Go\u000114", - "3druck": "http://3druck.com/?s=\u0002\u00010", - "3dware": "//3dwarehouse.sketchup.com/search.html?q=\u0002\u00010", - "3gpp": "http://www.3gpp.org/DynaReport/\u0002.htm\u00013", - "6pm": "//www.6pm.com/search?term=\u0002\u00013", - "750g": "//www.750g.com/recherche.htm?search=\u0002\u00010", - "7digital": { - "\u0010": "//www.7digital.com/search?q=\u0002\u00010", - "no": "//no.7digital.com/search?q=\u0002\u00010" - }, - "7switch": "//www.7switch.com/fr/list/search/page/1?q=\u0002\u00010", - "7tv": "//www.7tv.de/suche?q=\u0002\u00016", - "800": "http://800notes.com/Phone.aspx/\u0002\u000114", - "80k": "//80000hours.org/search/?q=\u0002\u00010", - "8020": "//8020.net/freetextsearch/search/result/?keyword=\u0002\u00010", - "89.9": "//www.lightfm.com.au/?s=\u0002\u00010", - "8chb": "http://8ch.net/boards.php?title=\u0002\u00010", - "8chc": "http://8ch.net/\u0002/catalog.html\u00010", - "8tracks": "http://8tracks.com/explore/all?q=\u0002\u00010", - "àax": "http://www.albumartexchange.com/covers?fltr=ALL&sort=TITLE&q=\u0002\u00010", - "AUD2EUR": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=AUD&To=EUR\u00010", - "AUD2GDP": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=AUD&To=GBP\u00010", - "BangPeople": "//pipl.com/search/?q=\u0002\u00010", - "Binguk": "http://bing.co.uk/?q=\u0002\u00010", - "CajunLyrics": "//www.cajunlyrics.com/?page=search&word=\u0002\u00010", - "Cololib": "//colostate-primo.hosted.exlibrisgroup.com/primo-explore/search?vid=01COLSU&lang=en_US&primoQueryTemp=d&search_field=any&search_scope=Everything&query=any,contains,\u0002\u00010", - "Coolapk": "//www.coolapk.com/search?q=\u0002\u00010", - "다음사전": "http://dic.daum.net/search.do?q=\u0002\u000159", - "DscSrv": "//discordservers.com/?term=\u0002\u00010", - "/?s": "//activehi.com/?s=\u0002\u00010", - "KarmaPlace": "http://www.karmaplace.com/catalogsearch/result/?q=\u0002\u00010", - "l2d": "http://www.love2d.org/w/index.php?search=\u0002\u00010", - "l3u": "//duckduckgo.com/?q=\u0002+site:l3utterfish.blogspot.com\u00010", - "l365": "http://www.live365.com/cgi-bin/directory.cgi?searchdesc=\u0002\u00010", - "l4c": "//www.left4craft.org/search.php?keywords=\u0002\u00010", - "l-d": "//www.legends-decks.com/search.php?q=\u0002\u00010", - "lgp": "http://geekpauvre.com/?s=\u0002 \u00010", - "lgw": "//libregamewiki.org/index.php?search=\u0002\u00010", - "lg.go": "//libs.garden/go/search?q=\u0002\u00010", - "loc": { - "\u0010": "//www.loc.gov/search/?q=\u0002 \u00013", - "al": { - "\u0010": "http://local.google.com/maps?f=q&source=s_q&geocode=&q=\u0002\u00010", - "ch": "http://tel.local.ch/de/q?what=\u0002\u00010", - "ist": "//local-list.co.il?p=106&stag=\u0002\u00010", - "time": "http://www.timeanddate.com/time/zone/?query=\u0002\u00014" - }, - "fr": "http://tel.local.ch/fr/q?what=\u0002\u00010", - "ast": "//locast.be/?s=\u0002\u00013" - }, - "lof": "//learnomnifocus.com/?s=\u0002\u00010", - "log": { - "h": "//gineipaedia.com/w/index.php?title=Special:Search&search=\u0002&go=Go\u00010", - "\u0010": "http://logeion.uchicago.edu/\u0002\u00010", - "o": { - "\u0010": "http://logopond.com/search/?search=\u0002\u00010", - "s": "http://instantlogosearch.com/?q=\u0002\u00010" - }, - "eion": "http://logeion.uchicago.edu/\u0002\u00010" - }, - "loh": "//help.libreoffice.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010", - "lol": { - "\u0010": "//www.locksonline.co.uk/index.php?route=product/search&search=\u0002\u000111", - "champ": "//lolalytics.com/ranked/worldwide/current/diamond/plus/champion/\u0002\u000113", - "com": "//www.locksonline.com/search/search.html?zoom_query=\u0002\u00010", - "counter": "http://www.lolcounter.com/champions/\u0002\u00010", - "king": "http://www.lolking.net/search?name=\u0002\u00014", - "names": "//lolnames.gg/en/na/\u0002/\u00010", - "olyrics": "http://www.lololyrics.com/search?q=\u0002 \u00010", - "pro": "http://www.lolpro.com/search?search=\u0002\u00010", - "skill": "http://www.lolskill.net/\u0002 \u00010", - "wiki": { - "a": "http://leagueoflegends.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "\u0010": "http://leagueoflegends.wikia.com/wiki/Special:Search?search=\u0002 \u000194" - } - }, - "lor": "//www.linux.org.ru/search.jsp?q=\u0002&range=ALL&interval=ALL&user=&_usertopic=on\u00015", - "loop": { - "\u0010": "http://www.frontiersin.org/SearchData.aspx?sq=\u0002\u00010", - "backjs": "http://duckduckgo.com/?q=site:loopback.io/doc/en/lb3+\u0002\u00010" - }, - "loot": "http://www.loot.co.za/search?cat=b&terms=\u0002\u00010", - "lost": "http://lostpedia.wikia.com/wiki/Special:Search?search=\u0002\u00014", - "lotr": { - "\u0010": "http://lotr.wikia.com/wiki/Special:Search?query=\u0002\u000157", - "ow": "http://lotro-wiki.com/index.php?search=\u0002&button=&title=Special%3ASearch\u00010" - }, - "love": { - "\u0010": "http://love2d.org/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00014", - "2d": "http://www.love2d.org/w/index.php?search=\u0002\u00010", - "businessexpo": "//www.lovebusinessexpo.co.uk/search/?q=\u0002\u00010", - "live": "http://love-live.wikia.com/wiki/Special:Search?query=\u0002\u00010", - "seat": "//www.loveseat.com/search/?term=\u0002\u00010", - "wiki": "//love2d.org/w/index.php?search=\u0002\u00010" - }, - "loask": "http://ask.libreoffice.org/en/questions/scope:all/sort:activity-desc/page:1/query:=\u0002/\u00010", - "loblaws": "//www.loblaws.ca/search/?search-bar=\u0002\u00010", - "lobsters": "//lobste.rs/search?q=\u0002\u000113", - "lobugs": "//bugs.documentfoundation.org/buglist.cgi?quicksearch=\u0002\u00010", - "lodash": "//lodash.com/docs#\u0002\u000136", - "lojban": "//mw.lojban.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010", - "lonelyplanet": "//www.lonelyplanet.com/search?q=\u0002\u00016", - "longdo": "//dict.longdo.com/search/\u0002\u00013", - "lookdocs": "//docs.looker.com/#stq=\u0002&stp=1\u00010", - "loolib": "//primo.tug-libraries.on.ca/primo_library/libweb/action/dlSearch.do?institution=WATERLOO&vid=WATERLOO&onCampus=false&lang=eng&indx=1&dym=true&highlight=true&displayField=title&bulkSize=10&query=any%2Ccontains%2C\u0002&search_scope=books_tab&tab=default_tab\u00010", - "loomis": "//www.loomisexpress.com/ca/wfTrackingStatus.aspx?PieceNumber=\u0002\u00010", - "loseit": "//www.loseit.com/search/?term=\u0002\u00010", - "loslog": "//www.lineageoslog.com/search?q=\u0002\u00010", - "losource": "http://opengrok.libreoffice.org/search?q=\u0002&project=core\u00010", - "louisville": "//louisvilleky.gov/search/site/\u0002\u00010", - "lovdata": "http://lovdata.no/sok?q=\u0002\u00014", - "lowcarb": "//recipegym.com/?s=\u0002\u00010", - "lowes": { - "\u0010": "http://www.lowes.com/SearchCatalogDisplay?Ntt=\u0002#!\u0001196", - "ca": "//www.lowes.ca/search/\u0002.html\u00010" - }, - "loweringthebar": "http://www.loweringthebar.net/?s=\u0002\u00010", - "lowongan": "//www.lowonganterpadu.com/search?q=\u0002\u00010", - "lrb": "http://www.lrb.co.uk/search?q=\u0002\u00010", - "lyle": "//duckduckgo.com/?q=\u0002+site:forums.lylemcdonald.com\u00010", - "lycos": "http://search.lycos.com/web?q=\u0002\u00010", - "lynda": "http://www.lynda.com/search?q=\u0002\u00010", - "lyrics": { - "\u0010": "http://lyrics.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000130", - "ing": "//lyricsing.com/search/\u0002\u00010", - "translate": "http://lyricstranslate.com/en/site-search?query=\u0002\u000114", - "tune": "//www.lyricstune.in/search?q=\u0002\u00010", - "wiki": "http://lyrics.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000130" - }, - "lyriki": "http://lyriki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010", - "lyrical": "http://duckduckgo.com/?q=site%3Alyrical-nonsense.com+\u0002\u00010", - "lyricwiki": "http://lyrics.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000130", - "lyrster": "http://www.lyrster.com/songs-lyrics/\u0002.html\u00010", - "lzd": { - "\u0010": "//www.lazada.com.ph/catalog/?q=\u0002\u000151", - "ph": "//www.lazada.com.ph/catalog/?q=\u0002\u000151", - "sg": "http://www.lazada.sg/catalog/?q=\u0002\u00010", - "th": "http://www.lazada.co.th/catalog/?q=\u0002\u00010" - }, - "LzdMy": "http://www.lazada.com.my/catalog/?q=\u0002\u00010", - ".net": "http://www.searchdotnet.com/results.aspx?cx=002213837942349435108:jki1okx03jq&q=\u0002&sa=Search+.NET+sites&cof=FORID:9&siteurl=www.searchdotnet.com/\u00016", - "Perlen": "//www.perlentaucher.de/nsuche?q=\u0002\u00010", - "x86": "http://ref.x86asm.net/geek.html#\u0002\u00010", - "xamarin": { - "\u0010": "//developer.xamarin.com/search?q=\u0002\u00010", - "forums": "http://forums.xamarin.com/search?Search=\u0002\u00010" - }, - "xbox": "http://www.xbox.com/en-GB/Search?q=\u0002#All\u00013", - "xbps": "//github.com/void-linux/void-packages/search?q[]=filename%3Atemplate+path%3A%2Fsrcpkgs&q[]=\u0002&s=indexed\u000122", - "xda": { - "f": "http://forum.xda-developers.com/sitesearch.php?q=\u0002\u00010", - "l": "//labs.xda-developers.com/?search=\u0002\u00010", - "\u0010": "//forum.xda-developers.com/search/?query=\u0002\u000149", - "dev": "http://forum.xda-developers.com/sitesearch.php?q=\u0002\u00010" - }, - "xgn": "//www.xgn.nl/zoeken/\u0002\u00010", - "xgau": "http://www.robertchristgau.com/get_artist.php?name=\u0002\u000114", - "xiv": { - "\u0010": "http://xivdb.com/?search=\u0002\u00010", - "db": "http://xivdb.com/?search=\u0002\u00010" - }, - "xing": "//www.xing.com/app/search?op=combined;keywords=\u0002 \u00013", - "xiny": "//learnxinyminutes.com/docs/\u0002\u00010", - "xiami": "http://www.xiami.com/search?key=\u0002\u00010", - "xinhua": "http://so.news.cn/#search/0/\u0002/1/\u00010", - "xkcd": { - "b": "http://www.xkcdb.com/?search=\u0002\u00010", - "n": "http://xkcd.com/\u0002/\u000116", - "\u0010": "/?q=\u0002+site:xkcd.com\u0001137" - }, - "xkom": "//www.x-kom.pl/szukaj?q=\u0002\u000110", - "xmc": "//xploremycity.com/\u0002\u00013", - "xmostrata": "http://xmostrata.com/?s=\u0002\u00010", - "xmpprooms": "//trafficpixel.tk/chatrooms/showRooms.php?search=\u0002&numberResults=10\u00010", - "xojo": "//forum.xojo.com/conversations/all?search=\u0002\u00010", - "xorp": "//blog.xorp.hu/?s=\u0002\u00010", - "xpresate": "http://xpresate.com.mx/busqueda.php?search=\u0002\u00010", - "xref": "http://search.crossref.org/?q=\u0002\u00010", - "xsh": "//explainshell.com/explain?cmd=\u0002\u00010", - "xvr": "//www.arxiv-vanity.com/convert/?query=\u0002\u00010", - "xwiki": "http://www.xwiki.org/xwiki/bin/view/Main/Search?text=\u0002\u00010", - "xxl": "//xxl.no/search?q=\u0002\u00016", - "الاخبار": "//www.sahifatv.com/category/\u0002\u00010", - "پخشستاره": "//setareh-co.com/?s=\u0002&submit=\u00010", - "تبسيط": "//tapseet.com/?s=\u0002\u00010", - "موبايل": "//mobilesacademy.com/?s=\u0002\u00010", - "ויקי": "//he.wikipedia.org/w/index.php?search=\u0002&title=מיוחד%3Aחיפוש&go=לערך\u00010", - "חוק": "//he.wikisource.org/w/index.php?search=חוק+\u0002\u00010", - "מורפיקס": "http://www.morfix.co.il/\u0002\u00018", - "פרוטוקול": "//www.protocol.co.il/?s=\u0002\u00010", - "Βικι": "//el.m.wikipedia.org/wiki/\u0002\u00010", - "Λεξικό": "//el.m.wiktionary.org/wiki/\u0002\u00010", - "ςγρ": "//el.wikipedia.org/wiki/?search=\u0002\u00010", - "англяз": "http://engramm.su/start?do=search&id=\u0002\u00010", - "карты": "//yandex.ru/maps/?text=\u0002\u00010", - "кгут": "//translate.google.com/#ru/en/\u0002\u00010", - "мапс": "//www.google.bg/maps/search/\u0002/\u00010", - "нпсд": "//npsd.party/?s=\u0002\u00010", - "уики": "//bg.wikipedia.org/wiki/\u0002\u00010", - "նայ": "http://nayiri.com/search?l=hy_LB&dt=HY_HY&r=0&query=\u0002\u00010", - "ასტრო": "http://astronet.ge/?s=\u0002\u00010" - } -} \ No newline at end of file diff --git a/searx/data/external_urls.json b/searx/data/external_urls.json deleted file mode 100644 index 75b153aba..000000000 --- a/searx/data/external_urls.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "facebook_profile": { - "category_name": "Facebook", - "url_name": "Facebook profile", - "urls": { - "default": "https://facebook.com/$1" - } - }, - "youtube_channel": { - "category_name": "YouTube", - "url_name": "YouTube channel", - "urls": { - "default": "https://www.youtube.com/channel/$1" - } - }, - "youtube_video": { - "category_name": "YouTube", - "url_name": "YouTube video", - "urls": { - "default": "https://www.youtube.com/watch?v=$1" - } - }, - "twitter_profile": { - "category_name": "Twitter", - "url_name": "Twitter profile", - "urls": { - "default": "https://twitter.com/$1" - } - }, - "instagram_profile": { - "category_name": "Instagram", - "url_name": "Instagram profile", - "urls": { - "default": "https://www.instagram.com/$1" - } - }, - "imdb_title": { - "category_name": "IMDB", - "url_name": "IMDB title", - "urls": { - "default": "https://www.imdb.com/title/$1" - } - }, - "imdb_name": { - "category_name": "IMDB", - "url_name": "IMDB name", - "urls": { - "default": "https://www.imdb.com/name/$1" - } - }, - "imdb_character": { - "category_name": "IMDB", - "url_name": "IMDB character", - "urls": { - "default": "https://www.imdb.com/character/$1" - } - }, - "imdb_company": { - "category_name": "IMDB", - "url_name": "IMDB company", - "urls": { - "default": "https://www.imdb.com/company/$1" - } - }, - "imdb_event": { - "category_name": "IMDB", - "url_name": "IMDB event", - "urls": { - "default": "https://www.imdb.com/event/$1" - } - }, - "rotten_tomatoes": { - "category_name": "Rotten tomatoes", - "url_name": "Rotten tomatoes title", - "urls": { - "default": "https://www.rottentomatoes.com/$1" - } - }, - "spotify_artist_id": { - "category_name": "Spotify", - "url_name": "Spotify artist", - "urls": { - "default": "https://open.spotify.com/artist/$1" - } - }, - "itunes_artist_id": { - "category_name": "iTunes", - "url_name": "iTunes artist", - "urls": { - "default": "https://music.apple.com/us/artist/$1" - } - }, - "soundcloud_id": { - "category_name": "Soundcloud", - "url_name": "Soundcloud artist", - "urls": { - "default": "https://soundcloud.com/$1" - } - }, - "netflix_id": { - "category_name": "Netflix", - "url_name": "Netflix movie", - "urls": { - "default": "https://www.netflix.com/watch/$1" - } - }, - "github_profile": { - "category_name": "Github", - "url_name": "Github profile", - "urls": { - "default": "https://wwww.github.com/$1" - } - }, - "musicbrainz_artist": { - "category_name": "Musicbrainz", - "url_name": "Musicbrainz artist", - "urls": { - "default": "http://musicbrainz.org/artist/$1" - } - }, - "musicbrainz_work": { - "category_name": "Musicbrainz", - "url_name": "Musicbrainz work", - "urls": { - "default": "http://musicbrainz.org/work/$1" - } - }, - "musicbrainz_release_group": { - "category_name": "Musicbrainz", - "url_name": "Musicbrainz release group", - "urls": { - "default": "http://musicbrainz.org/release-group/$1" - } - }, - "musicbrainz_label": { - "category_name": "Musicbrainz", - "url_name": "Musicbrainz label", - "urls": { - "default": "http://musicbrainz.org/label/$1" - } - }, - "wikimedia_image": { - "category_name": "Wikipedia", - "url_name": "Wikipedia image", - "urls": { - "default": "https://commons.wikimedia.org/wiki/Special:FilePath/$1?width=500&height=400" - } - }, - "map": { - "category_name": "Map", - "url_name": "geo map", - "urls": { - "default": "https://www.openstreetmap.org/?lat=${latitude}&lon=${longitude}&zoom=${zoom}&layers=M" - } - } -} \ No newline at end of file diff --git a/searx/data/lid.176.ftz b/searx/data/lid.176.ftz deleted file mode 100755 index 1fb85b357..000000000 Binary files a/searx/data/lid.176.ftz and /dev/null differ diff --git a/searx/data/osm_keys_tags.json b/searx/data/osm_keys_tags.json deleted file mode 100644 index 5393d05c4..000000000 --- a/searx/data/osm_keys_tags.json +++ /dev/null @@ -1,49905 +0,0 @@ -{ - "keys": { - "addr": { - "*": { - "ar": "عنوان السكن", - "bg": "адрес", - "ca": "adreça", - "cs": "poštovní adresa", - "da": "adresse", - "de": "postanschrift", - "el": "ταχυδρομική διεύθυνση", - "en": "address", - "es": "dirección postal", - "et": "aadress", - "fi": "postiosoite", - "fr": "adresse postale", - "he": "כתובת", - "hr": "poštanska adresa", - "hu": "postacím", - "id": "alamat", - "is": "staðfang", - "it": "indirizzo", - "ja": "住所", - "ko": "주소", - "lv": "pasta adrese", - "nb": "adresse", - "nl": "postadres", - "pl": "adres pocztowy", - "pt": "endereço postal", - "ro": "adresă poștală", - "ru": "почтовый адрес", - "sk": "adresa (pošta)", - "sl": "naslov", - "sr": "адреса", - "sv": "postadress", - "tr": "adres", - "uk": "поштова адреса", - "vi": "địa chỉ", - "zh": "地址" - } - }, - "bench": { - "*": { - "ar": "مقعد حديقة", - "bg": "пейка", - "ca": "banc", - "cs": "lavice", - "da": "bænk", - "de": "bank", - "el": "παγκάκι", - "en": "bench", - "es": "banco", - "et": "pink", - "fi": "penkki", - "fr": "banc", - "he": "ספסל", - "hr": "klupa", - "hu": "pad", - "id": "bangku jalan", - "is": "bekkur", - "it": "panchina", - "ja": "ベンチ", - "ko": "벤치", - "lt": "suolas", - "nb": "benk", - "nl": "bank", - "pl": "ławka", - "pt": "banco", - "ro": "bancă", - "ru": "скамья", - "sr": "парковска клупа", - "sv": "bänk", - "tr": "bank", - "uk": "лава", - "vi": "băng ghế", - "zh": "長椅", - "zh-cn": "长椅" - } - }, - "bin": { - "*": { - "en": "bin", - "fr": "bac", - "it": "bidone", - "sr": "канта", - "sv": "kärl" - } - }, - "brand": { - "wikidata": { - "*": { - "ar": "الماركة", - "bg": "марка", - "ca": "marca", - "cs": "obchodní značka", - "da": "mærke", - "de": "marke", - "en": "brand", - "es": "marca", - "fi": "brändi", - "fr": "marque", - "he": "מותג", - "hr": "zaštitni znak", - "hu": "márkanév", - "id": "merek", - "it": "marca", - "ja": "ブランド", - "ko": "브랜드", - "lt": "ženklas", - "nb": "merkenavn", - "nl": "merk", - "pl": "marka", - "pt": "marca", - "ro": "marcă", - "ru": "бренд", - "sl": "znamka", - "sr": "бренд", - "sv": "handelsnamn", - "th": "ตราสินค้า", - "tr": "marka", - "uk": "бренд", - "vi": "nhãn hiệu", - "zh": "品牌" - } - } - }, - "building": { - "levels": { - "*": { - "ar": "عدد الطوابق فوق الأرض", - "bg": "етажи", - "ca": "pisos per sobre el terra", - "cs": "nadzemní podlaží", - "da": "etager over jorden", - "de": "oberirdische stockwerke", - "de-at": "geschoß", - "de-ch": "geschoss", - "el": "αριθμός ορόφων", - "en": "floors above ground", - "en-ca": "storey", - "es": "pisos sobre el suelo", - "et": "korrus", - "fi": "maanpäällisiä kerroksia", - "fr": "nombre de niveaux au-dessus du sol", - "he": "מספר קומות מעל הקרקע", - "hu": "felszín feletti szintek száma", - "id": "lantai atas permukaan", - "it": "numero di piani", - "ja": "地上階数", - "ko": "지상의 층수", - "lv": "stāvi virs zemes", - "nb": "etasjer over bakken", - "nl": "verdiepingen boven de grond", - "pl": "liczba kondygnacji nad ziemią", - "pt": "andares sobre o solo", - "ru": "количество этажей", - "sk": "nadzemné poschodia", - "sl": "nadstropja nad pritličjem", - "sr": "број спратова", - "sv": "våningar", - "th": "ชั้น", - "tr": "zemin üzerindeki katlar", - "uk": "кількість поверхів", - "vi": "số tầng trên mặt đất", - "zh": "地上层数", - "zh-hk": "地上層數", - "zh-tw": "地上層數" - } - } - }, - "contact": { - "email": { - "*": { - "en": "email" - } - }, - "facebook": { - "*": { - "en": "facebook" - } - }, - "fax": { - "*": { - "en": "fax" - } - }, - "foursquare": { - "*": { - "en": "foursquare" - } - }, - "google_plus": { - "*": { - "en": "google_plus" - } - }, - "instagram": { - "*": { - "en": "instagram" - } - }, - "linkedin": { - "*": { - "en": "linkedin" - } - }, - "mastodon": { - "*": { - "en": "mastodon" - } - }, - "phone": { - "*": { - "en": "phone" - } - }, - "pinterest": { - "*": { - "en": "pinterest" - } - }, - "telegram": { - "*": { - "en": "telegram" - } - }, - "tripadvisor": { - "*": { - "en": "tripadvisor" - } - }, - "twitter": { - "*": { - "en": "twitter" - } - }, - "webcam": { - "*": { - "en": "webcam" - } - }, - "website": { - "*": { - "en": "website" - } - }, - "yelp": { - "*": { - "en": "yelp" - } - }, - "youtube": { - "*": { - "en": "youtube" - } - } - }, - "cuisine": { - "*": { - "ar": "المطبخ", - "bg": "кухня", - "ca": "cuina", - "cs": "kuchyně", - "da": "køkken", - "de": "küche", - "el": "κουζίνα", - "en": "cuisine", - "es": "cocina", - "et": "köök", - "fi": "ruokakulttuuri", - "fr": "cuisine servie", - "he": "מטבח", - "hi": "पाकशैली", - "hu": "konyha", - "id": "hidangan", - "is": "matarhefð", - "it": "cucina", - "ja": "提供料理", - "ko": "요리법", - "lt": "pasaulio virtuvės", - "lv": "virtuve", - "nb": "kjøkken", - "nl": "keuken", - "pl": "kuchnia", - "pt": "cozinha", - "ru": "кухня", - "sk": "kuchárske umenie", - "sl": "kuhinja", - "sr": "кухиња", - "sv": "kök", - "th": "การปรุงอาหาร", - "tr": "mutfağı", - "uk": "кухня", - "vi": "ẩm thực", - "zh": "菜系" - } - }, - "currency": { - "*": { - "ar": "عملة", - "bg": "валута", - "ca": "moneda", - "cs": "měna", - "da": "valuta", - "de": "währung", - "el": "νομισματική μονάδα", - "en": "currency", - "es": "moneda", - "et": "valuuta", - "fi": "valuutta", - "fr": "monnaie", - "he": "מטבע", - "hi": "मुद्रा", - "hr": "valuta", - "hu": "pénznem", - "id": "mata uang", - "is": "gjaldmiðill", - "it": "valuta", - "ja": "通貨", - "ko": "통화", - "lt": "valiuta", - "lv": "valūta", - "nb": "valuta", - "nl": "valuta", - "pl": "waluta", - "pt": "padrão monetário", - "pt-br": "moeda", - "ro": "valută", - "ru": "валюта", - "sk": "mena", - "sl": "valuta", - "sr": "валута", - "sv": "valuta", - "th": "เงินตรา", - "tr": "para birimi", - "uk": "валюта", - "vi": "tiền tệ", - "zh": "通貨", - "zh-hk": "流通貨幣" - } - }, - "delivery": { - "*": { - "ca": "repartiment", - "cs": "dodávka", - "da": "levering", - "de": "lieferung", - "en": "delivery", - "es": "reparto", - "fi": "kuljetus", - "fr": "livraison", - "he": "משלוח", - "hi": "होम डिलीवरी", - "hu": "kézbesítés", - "it": "consegna a domicilio", - "ja": "デリバリー", - "ko": "택배", - "nb": "leveranse", - "nl": "levering", - "pl": "dostawa", - "pt": "entrega ao cliente", - "ro": "livrare", - "ru": "доставка", - "sr": "достава", - "sv": "distribution", - "tr": "teslimat (ticaret)", - "uk": "доставка", - "zh": "宅配" - }, - "covid19": { - "*": { - "ca": "repartiment (COVID19)", - "cs": "dodávka (COVID19)", - "da": "levering (COVID19)", - "de": "lieferung (COVID19)", - "en": "delivery (COVID19)", - "es": "reparto (COVID19)", - "fi": "kuljetus (COVID19)", - "fr": "livraison (COVID19)", - "he": "משלוח (COVID19)", - "hi": "होम डिलीवरी (COVID19)", - "hu": "kézbesítés (COVID19)", - "it": "consegna a domicilio (COVID19)", - "ja": "デリバリー (COVID19)", - "ko": "택배 (COVID19)", - "nb": "leveranse (COVID19)", - "nl": "levering (COVID19)", - "pl": "dostawa (COVID19)", - "pt": "entrega ao cliente (COVID19)", - "ro": "livrare (COVID19)", - "ru": "доставка (COVID19)", - "sr": "достава (COVID19)", - "sv": "distribution (COVID19)", - "tr": "teslimat (ticaret) (COVID19)", - "uk": "доставка (COVID19)", - "zh": "宅配 (COVID19)" - } - } - }, - "email": { - "*": { - "en": "Email" - } - }, - "facebook": { - "*": { - "en": "Facebook" - } - }, - "fax": { - "*": { - "en": "Fax" - } - }, - "fee": { - "*": { - "ar": "الرسم", - "bg": "плата", - "ca": "tarifa", - "cs": "poplatek", - "da": "afgift", - "de": "gebühr", - "en": "fee", - "es": "tarifa", - "fi": "maksu", - "fr": "prix d'accès", - "he": "דמי שימוש", - "hr": "pristojba", - "hu": "használati díj", - "id": "bea atau tarif", - "is": "gjald", - "it": "tariffa", - "ja": "料金", - "ko": "요금", - "lt": "rinkliava", - "nb": "avgift", - "nl": "tarief", - "pl": "opłata", - "pt": "tarifa", - "pt-br": "taxa", - "ro": "tarif", - "ru": "плата", - "sl": "honorar", - "sr": "путарина", - "sv": "avgift", - "tr": "ücret", - "uk": "оплата", - "vi": "phí tham quan", - "zh": "費用" - } - }, - "internet_access": { - "ssid": { - "*": { - "en": "Wi-Fi" - } - } - }, - "level": { - "*": { - "ar": "رقم الطابق", - "ca": "pis", - "cs": "patro", - "da": "etage", - "de": "stockwerk", - "el": "αριθμός ορόφου", - "en": "floor number", - "es": "número de piso", - "fi": "kerrosnumero", - "fr": "numéro d'étage", - "he": "מספר קומה", - "hu": "emelet", - "id": "lantai", - "it": "numero del piano", - "ja": "階数", - "ko": "층 번호", - "lv": "stāva numurs", - "nb": "etasjenummer", - "nl": "etagenummer", - "pl": "numer piętra", - "pt": "número do andar", - "ru": "этаж", - "sl": "številka nadstropja", - "sr": "број спрата", - "sv": "våningsnummer", - "tr": "kat numarası", - "uk": "номер поверху", - "zh-tw": "樓層號碼" - } - }, - "opening_hours": { - "*": { - "ar": "مفتوح في أيام", - "bg": "работно време", - "ca": "dies oberts", - "cs": "otevírací doba", - "da": "åbnet på", - "de": "geöffnet an/am", - "el": "ημέρες λειτουργίας", - "en": "open days", - "es": "días abiertos", - "et": "lahtiolekuajad", - "fi": "avoinna", - "fr": "jours d'ouverture", - "he": "פתוח בימים", - "hi": "खुलने का समय", - "hr": "radno vrijeme", - "hu": "nyitvatartás", - "id": "hari buka", - "is": "opnunartímar", - "it": "giorni di apertura", - "ja": "営業日", - "ko": "개관 요일", - "lt": "darbo valandos", - "lv": "darba laiks", - "nb": "åpningsdager", - "nl": "geopend op", - "pl": "otwarte w dniach", - "pt": "dias de abertura", - "pt-br": "hora de abertura", - "ro": "zile deschis", - "ru": "дни работы", - "sk": "otvárací čas", - "sl": "odpiralni čas", - "sr": "радни дани", - "sv": "öppetdagar", - "th": "เวลาให้บริการ", - "tr": "açık olduğu günler", - "uk": "дні роботи", - "vi": "ngày mở cửa trong tuần" - }, - "covid19": { - "*": { - "ar": "مفتوح في أيام (COVID19)", - "bg": "работно време (COVID19)", - "ca": "dies oberts (COVID19)", - "cs": "otevírací doba (COVID19)", - "da": "åbnet på (COVID19)", - "de": "geöffnet an/am (COVID19)", - "el": "ημέρες λειτουργίας (COVID19)", - "en": "open days (COVID19)", - "es": "días abiertos (COVID19)", - "et": "lahtiolekuajad (COVID19)", - "fi": "avoinna (COVID19)", - "fr": "jours d'ouverture (COVID19)", - "he": "פתוח בימים (COVID19)", - "hi": "खुलने का समय (COVID19)", - "hr": "radno vrijeme (COVID19)", - "hu": "nyitvatartás (COVID19)", - "id": "hari buka (COVID19)", - "is": "opnunartímar (COVID19)", - "it": "giorni di apertura (COVID19)", - "ja": "営業日 (COVID19)", - "ko": "개관 요일 (COVID19)", - "lt": "darbo valandos (COVID19)", - "lv": "darba laiks (COVID19)", - "nb": "åpningsdager (COVID19)", - "nl": "geopend op (COVID19)", - "pl": "otwarte w dniach (COVID19)", - "pt": "dias de abertura (COVID19)", - "pt-br": "hora de abertura (COVID19)", - "ro": "zile deschis (COVID19)", - "ru": "дни работы (COVID19)", - "sk": "otvárací čas (COVID19)", - "sl": "odpiralni čas (COVID19)", - "sr": "радни дани (COVID19)", - "sv": "öppetdagar (COVID19)", - "th": "เวลาให้บริการ (COVID19)", - "tr": "açık olduğu günler (COVID19)", - "uk": "дні роботи (COVID19)", - "vi": "ngày mở cửa trong tuần (COVID19)" - } - } - }, - "organic": { - "*": { - "cs": "bioprodukt", - "de": "bioprodukt", - "en": "organic product", - "fi": "orgaaninen tuote", - "id": "produk organik", - "it": "prodotto organico", - "ja": "有機農産物", - "pt-br": "produto natural", - "sv": "ekologiska produkter", - "zh": "有機產品" - } - }, - "outdoor_seating": { - "*": { - "de": "sitzplätze im freien", - "en": "outdoor seating", - "pt": "assentos ao ar livre" - } - }, - "payment": { - "*": { - "el": "μέθοδος πληρωμής", - "en": "payment method", - "es": "método de pago", - "fi": "maksutapa", - "hu": "fizetőeszköz", - "it": "metodo di pagamento", - "ja": "支払方法", - "nl": "betaalwijze", - "pt": "método de pagamento", - "vi": "phương thức thanh toán", - "zh": "支付方式" - }, - "LINE_Pay": { - "*": { - "en": "line pay", - "ko": "라인페이" - } - }, - "OV-Chipkaart": { - "*": { - "en": "ov-chipkaart", - "zh": "ov晶片卡" - } - }, - "alipay": { - "*": { - "ar": "أليباي", - "en": "alipay", - "ja": "支付宝", - "ko": "알리페이", - "zh": "支付宝", - "zh-hk": "支付寶", - "zh-tw": "支付寶" - } - }, - "american_express": { - "*": { - "de": "american express", - "en": "american express credit card", - "es": "tarjeta de crédito american express", - "ja": "american expressクレジットカード", - "ko": "american express 신용카드", - "nl": "american express-creditcard" - } - }, - "apple_pay": { - "*": { - "ar": "أبل باي", - "en": "apple pay", - "he": "אפל פיי", - "ko": "애플 페이", - "th": "แอปเปิลเพย์" - } - }, - "bancomat": { - "*": { - "en": "bancomat" - } - }, - "bankaxept": { - "*": { - "en": "bankaxept" - } - }, - "bitcoin": { - "*": { - "ar": "بيتكوين", - "bg": "биткойн", - "en": "bitcoin", - "he": "ביטקוין", - "hi": "बिटकाइन", - "ja": "ビットコイン", - "ko": "비트코인", - "ru": "биткойн", - "sr": "биткоин", - "th": "บิตคอยน์", - "uk": "біткоїн", - "zh": "比特幣" - } - }, - "cash": { - "*": { - "ar": "نقد", - "ca": "diners en efectiu", - "cs": "hotové peníze", - "da": "kontanter", - "de": "bargeld", - "el": "μετρητά χρήματα", - "en": "cash", - "es": "dinero en efectivo", - "et": "sularaha", - "fi": "käteinen", - "fr": "argent liquide", - "he": "מזומנים", - "hi": "रोकड़", - "hu": "készpénz", - "it": "contante", - "ja": "現金", - "ko": "현금", - "nb": "kontanter", - "nl": "chartaal geld", - "pl": "gotówka", - "pt": "dinheiro em espécie", - "ro": "numerar", - "ru": "наличные деньги", - "sl": "gotovina", - "sr": "готовина", - "sv": "kontanter", - "th": "เงินสด", - "tr": "nakit", - "uk": "готівка", - "vi": "tiền mặt", - "zh": "現金" - } - }, - "clipper": { - "*": { - "de": "clipper-card", - "en": "clipper card", - "es": "tarjeta clipper", - "ja": "クリッパーカード", - "vi": "thẻ clipper", - "zh": "路路通" - } - }, - "coins": { - "denominations": { - "*": { - "de": "münznominal" - } - } - }, - "contactless": { - "*": { - "ar": "دفع من غير تلامس", - "ca": "pagament sense contacte", - "cs": "bezkontaktní platba", - "da": "kontaktløs betaling", - "de": "kontaktloses bezahlen", - "en": "contactless payment", - "es": "pago sin contacto", - "fi": "lähimaksaminen", - "fr": "paiement sans contact", - "he": "תשלום ללא מגע", - "id": "pembayaran nirkontak", - "it": "pagamento contactless", - "ja": "非接触型決済", - "ko": "비접촉 결제", - "nb": "kontaktløs betaling", - "nl": "contactloos betalen", - "pl": "płatność zbliżeniowa", - "pt": "pagamento por aproximação", - "ru": "бесконтактная оплата", - "sv": "kontaktlös betalning", - "tr": "temassız ödeme", - "uk": "безконтактна оплата", - "zh": "非接觸式支付" - } - }, - "cryptocurrencies": { - "*": { - "ar": "عملة مشفرة", - "bg": "криптовалута", - "ca": "criptomoneda", - "cs": "kryptoměna", - "da": "kryptovaluta", - "de": "kryptowährung", - "el": "κρυπτονόμισμα", - "en": "cryptocurrency", - "es": "criptomoneda", - "et": "krüptoraha", - "fi": "kryptovaluutta", - "fr": "cryptomonnaie", - "he": "מטבע מבוזר", - "hi": "आभासी मुद्रा", - "hr": "kriptovaluta", - "hu": "kriptovaluta", - "id": "mata uang kripto", - "it": "criptovaluta", - "ja": "暗号通貨", - "ko": "암호화폐", - "lt": "kriptovaliuta", - "lv": "kriptonauda", - "nb": "kryptovaluta", - "nl": "cryptogeld", - "pl": "kryptowaluta", - "pt": "criptomoeda", - "ro": "criptomonedă", - "ru": "криптовалюта", - "sk": "kryptomena", - "sl": "kriptovaluta", - "sr": "криптовалута", - "sv": "kryptovaluta", - "th": "คริปโทเคอร์เรนซี", - "tr": "kripto para birimi", - "uk": "криптовалюта", - "vi": "tiền tệ mật mã", - "zh": "加密貨幣", - "zh-cn": "密码货币" - } - }, - "debit_cards": { - "*": { - "ar": "بطاقة المدين", - "bg": "дебитна карта", - "ca": "targeta de dèbit", - "cs": "debetní karta", - "da": "debetkort", - "de": "debitkarte", - "el": "χρεωστική κάρτα", - "en": "debit card", - "es": "tarjeta de débito", - "et": "deebetkaart", - "fi": "pankkikortti", - "fr": "carte de débit", - "he": "כרטיס חיוב מיידי", - "hi": "डेबिट कार्ड", - "hr": "debitna kartica", - "hu": "betéti kártya", - "id": "kartu debit", - "is": "debetkort", - "it": "carta di debito", - "ja": "デビットカード", - "ko": "직불 카드", - "lt": "debeto kortelė", - "nb": "debetkort", - "nl": "debetkaart", - "pl": "karta debetowa", - "pt": "cartão de débito", - "ro": "card de debit", - "ru": "дебетовая карта", - "sk": "debetná karta", - "sr": "дебитна картица", - "sv": "kontokort", - "th": "บัตรเดบิต", - "tr": "banka kartı", - "uk": "дебетова картка", - "vi": "thẻ ghi nợ", - "zh": "借记卡", - "zh-tw": "簽帳金融卡" - } - }, - "diners_club": { - "*": { - "de": "diners club", - "en": "diners club credit card", - "es": "tarjeta de crédito diners club", - "ja": "diners clubクレジットカード" - } - }, - "discover_card": { - "*": { - "en": "discover card", - "fi": "discover", - "ja": "ディスカバーカード", - "ko": "디스커버", - "zh": "发现卡" - } - }, - "dogecoin": { - "*": { - "ar": "دجكوين", - "en": "dogecoin", - "he": "דוז'קוין", - "hi": "डॉजक्वाइन", - "ja": "ドージコイン", - "ko": "도지코인", - "zh": "多吉币", - "zh-hk": "狗狗幣", - "zh-tw": "汪汪幣" - } - }, - "e_zpass": { - "*": { - "en": "e-zpass", - "ja": "e-zパス", - "zh": "快易通" - } - }, - "ebt": { - "*": { - "en": "electronic benefit transfer", - "ja": "ebtカード", - "zh": "电子福利转帐" - } - }, - "ep_beep": { - "*": { - "en": "beep", - "zh": "嗶卡" - } - }, - "ep_geldkarte": { - "*": { - "en": "geldkarte", - "ja": "ゲルトカルテ", - "ko": "선불카드", - "nl": "chipknip", - "pl": "karta przedpłacona" - } - }, - "ep_monedero": { - "*": { - "ca": "targeta moneder", - "en": "monedero", - "es": "tarjeta monedero" - } - }, - "fastrak": { - "*": { - "en": "fastrak", - "ja": "ファストラック" - } - }, - "gift_card": { - "*": { - "ar": "قسائم الهدايا أو كروت الإهداء", - "cs": "dárková karta", - "da": "gavekort", - "de": "geschenkkarte", - "en": "gift card", - "es": "tarjeta regalo", - "fi": "lahjakortti", - "fr": "carte cadeau", - "he": "תו קנייה", - "hu": "ajándékkártya", - "it": "carta regalo", - "ja": "ギフトカード (プラスチックカード型)", - "ko": "기프트 카드", - "lv": "elektroniskās dāvanu kartes", - "nb": "gavekort", - "nl": "cadeaubon", - "pt": "vale presente", - "ru": "подарочный сертификат", - "sr": "поклон-картица", - "sv": "presentkort", - "vi": "thẻ quà tặng", - "zh": "礼物卡" - } - }, - "girocard": { - "*": { - "en": "girocard" - } - }, - "good_to_go": { - "*": { - "en": "good to go!" - } - }, - "google_pay": { - "*": { - "ar": "جوجل باي", - "en": "google pay", - "he": "גוגל פיי", - "hi": "गूगल पे", - "ko": "구글 페이" - } - }, - "i-pass": { - "*": { - "en": "i-pass" - } - }, - "ic": { - "*": { - "ca": "targeta de proximitat de transport", - "en": "public transport proximity card", - "es": "tarjeta de proximidad para el transporte público", - "ja": "公共交通機関の近接型icカード", - "ru": "бесконтактная карта для общественного транспорта" - } - }, - "ipass": { - "*": { - "en": "ipass", - "ja": "一卡通", - "zh": "ipass一卡通" - } - }, - "jcb": { - "*": { - "de": "jcb", - "en": "jcb credit card", - "ja": "jcbクレジットカード", - "sv": "jcb-kort" - } - }, - "linepay": { - "*": { - "en": "line pay", - "ko": "라인페이" - } - }, - "litecoin": { - "*": { - "ar": "لايتكوين", - "bg": "лайткойн", - "en": "litecoin", - "he": "לייטקוין", - "ja": "ライトコイン", - "ko": "라이트코인" - } - }, - "maestro": { - "*": { - "ar": "مايسترو", - "ca": "mastercard maestro", - "cs": "mastercard maestro", - "de": "mastercard maestro", - "en": "mastercard maestro icr c", - "es": "mastercard maestro", - "fr": "mastercard maestro", - "it": "mastercard maestro", - "ja": "マスターカード・マエストロ", - "ko": "마에스트로", - "nl": "mastercard maestro", - "pt": "mastercard maestro", - "ru": "mastercard maestro", - "sr": "маестро", - "sv": "mastercard maestro", - "uk": "maestro", - "zh": "万事顺卡" - } - }, - "mastercard": { - "*": { - "ca": "targeta de crèdit mastercard", - "cs": "kreditní karta mastercard", - "de": "mastercard", - "en": "mastercard credit card", - "es": "tarjeta de crédito mastercard", - "ja": "mastercardクレジットカード", - "ko": "mastercard 신용카드", - "nl": "mastercard-creditcard" - } - }, - "meal_voucher": { - "*": { - "cs": "stravenka", - "de": "verpflegungsgutschein", - "en": "meal voucher", - "es": "vale de comida", - "fi": "lounasseteli", - "fr": "titre restaurant", - "it": "buono pasto", - "ja": "食料バウチャー", - "nl": "maaltijdcheque", - "pt": "vale refeição", - "ro": "tichet de masă", - "sv": "lunchkupong", - "zh": "餐券" - } - }, - "mipay": { - "*": { - "en": "mi-pay", - "ru": "mi pay", - "zh": "小米支付" - } - }, - "nc_quick_pass": { - "*": { - "en": "nc quick pass" - } - }, - "oyster": { - "*": { - "ar": "بطاقة الأویستر", - "en": "oyster card", - "fi": "oyster", - "he": "אויסטר קארד", - "id": "kartu oyster", - "is": "oyster-kort", - "ja": "オイスターカード", - "ko": "오이스터 카드", - "nb": "oyster", - "sr": "ојстер картица", - "zh": "蠔卡", - "zh-cn": "牡蛎卡", - "zh-tw": "牡蠣卡" - } - }, - "paypal": { - "*": { - "ar": "باي بال", - "bg": "пей пал", - "en": "paypal", - "hi": "पेपाल", - "ko": "페이팔", - "th": "เพย์แพล" - } - }, - "paypay": { - "*": { - "ar": "باي باي", - "en": "paypay" - } - }, - "peach_pass": { - "*": { - "en": "peach pass" - } - }, - "pikepass": { - "*": { - "en": "pikepass" - } - }, - "postfinance_card": { - "*": { - "de": "postfinance card direct" - } - }, - "samsung_pay": { - "*": { - "ar": "سامسونج باي", - "en": "samsung pay", - "hi": "सैमसंग पे", - "ko": "삼성 페이", - "zh": "三星智付" - } - }, - "service_voucher": { - "*": { - "en": "service voucher", - "fr": "titre-service", - "nl": "dienstencheque" - } - }, - "sms": { - "*": { - "ar": "خدمة الرسالة القصيرة", - "de": "short message service", - "en": "sms", - "es": "servicio de mensajes cortos", - "fi": "tekstiviesti", - "fr": "short message service", - "he": "מסרון", - "hi": "संक्षिप्त सन्देश सेवा", - "id": "layanan pesan singkat", - "is": "smáskilaboð", - "ja": "ショートメッセージサービス", - "ko": "단문 메시지 서비스", - "lt": "trumpoji žinutė", - "lv": "īsziņa", - "nb": "short message service", - "pt": "serviço de mensagens curtas", - "ro": "short message service", - "sk": "krátka textová správa", - "th": "บริการข้อความสั้น", - "uk": "служба коротких повідомлень", - "zh": "簡訊" - } - }, - "snap": { - "*": { - "en": "supplemental nutrition assistance program", - "es": "programa asistencial de nutrición suplementaria", - "he": "תוכנית הסיוע לתזונה משלימה", - "ja": "フードスタンプ", - "ru": "американская программа льготной покупки продуктов", - "tr": "ek beslenme yardımı programı", - "uk": "програма допомоги у додатковому харчуванні", - "zh": "美國補充營養協助計畫" - } - }, - "sube": { - "*": { - "en": "sube card", - "es": "sistema único de boleto electrónico", - "zh": "sube卡" - } - }, - "sunpass": { - "*": { - "en": "sunpass" - } - }, - "szep": { - "*": { - "hu": "széchenyi pihenőkártya" - } - }, - "telephone_cards": { - "*": { - "bg": "фонокарта", - "ca": "targeta telefònica", - "cs": "telefonní karta", - "da": "telefonkort", - "de": "telefonkarte", - "el": "τηλεφωνική κάρτα", - "en": "telephone card", - "es": "tarjeta telefónica", - "et": "kõnekaart", - "fi": "puhelukortti", - "fr": "télécarte", - "he": "כרטיס חיוג", - "it": "scheda telefonica", - "ja": "テレホンカード", - "ko": "전화카드", - "nb": "telefonkort", - "nl": "telefoonkaart", - "pl": "fonotelistyka", - "pt": "cartão telefônico", - "ru": "телефонная карта", - "sv": "telefonkort", - "uk": "телефонна картка", - "vi": "thẻ điện thoại", - "zh": "电话卡" - } - }, - "token_coin": { - "*": { - "ar": "عملة رمزية", - "bg": "жетон", - "ca": "téssera", - "cs": "žeton", - "da": "polet", - "de": "jeton", - "en": "token coin", - "es": "monetiforme", - "et": "žetoon", - "fi": "rahake", - "fr": "jeton", - "hr": "žeton", - "hu": "zseton", - "is": "vörupeningur", - "it": "gettone", - "ja": "代用貨幣", - "nb": "pollett", - "nl": "betaalpenning", - "pl": "żeton", - "ru": "жетон", - "sk": "žetón", - "sr": "žeton", - "sv": "pollett", - "tr": "jeton", - "uk": "марка", - "vi": "đồng token", - "zh": "代用货币", - "zh-hk": "輔幣" - } - }, - "troika": { - "*": { - "en": "troika card", - "ja": "トロイカカード", - "ru": "тройка", - "zh": "三套车卡", - "zh-hk": "三套車卡", - "zh-tw": "三套車卡" - } - }, - "u-key": { - "*": { - "en": "u-key" - } - }, - "v_pay": { - "*": { - "en": "v pay" - } - }, - "visa": { - "*": { - "ca": "targeta de crèdit visa", - "de": "visa", - "en": "visa electron", - "es": "tarjeta de crédito visa", - "it": "carta di credito visa", - "ja": "visaクレジットカード", - "ko": "visa 신용카드", - "nl": "visa-creditcard", - "sr": "виза кредитна картица", - "vi": "thẻ tín dụng visa", - "zh": "维萨电子卡" - } - }, - "visa_debit": { - "*": { - "en": "visa debit", - "sv": "visa delta", - "zh": "visa金融卡" - } - }, - "visa_electron": { - "*": { - "ca": "targeta de crèdit visa", - "de": "visa", - "en": "visa electron", - "es": "tarjeta de crédito visa", - "it": "carta di credito visa", - "ja": "visaクレジットカード", - "ko": "visa 신용카드", - "nl": "visa-creditcard", - "sr": "виза кредитна картица", - "vi": "thẻ tín dụng visa", - "zh": "维萨电子卡" - } - }, - "wechat": { - "*": { - "en": "wechat pay", - "ja": "ウィーチャット・ペイ", - "ko": "웨이신즈푸", - "zh": "微信支付" - } - }, - "wic": { - "*": { - "en": "wic", - "es": "u.s. federal government program providing food assistance for low-income women and children [edit]", - "he": "חברת הודו המערבית ההולנדית", - "ja": "女性・乳児・児童栄養補助プログラム", - "ru": "специальная дополнительная программа питания для женщин, младенцев и детей в сша (wic)", - "uk": "спеціальна додаткова програма харчування для жінок, немовлят та дітей" - } - }, - "wire_transfer": { - "*": { - "ar": "حوالة مصرفية", - "ca": "transferència bancària", - "cs": "peněžní převod", - "de": "überweisung (zahlungsverkehr)", - "en": "wire transfer", - "es": "transferencia bancaria", - "fr": "virement bancaire", - "he": "העברה בנקאית", - "hu": "banki átutalás", - "it": "bonifico", - "ja": "振込", - "nl": "bankoverschrijving", - "pl": "polecenie przelewu", - "pt": "transferência bancária", - "ru": "денежный перевод", - "sk": "bankový prevod", - "sr": "девизна дознака", - "tr": "virman", - "uk": "грошовий переказ", - "vi": "điện chuyển khoản ngân hàng", - "zh": "电汇" - } - } - }, - "phone": { - "*": { - "ar": "رقم الهاتف", - "bg": "телефонен номер", - "ca": "número de telèfon", - "cs": "telefonní číslo", - "da": "telefonnummer", - "de": "telefonnummer", - "el": "αριθμός τηλεφώνου", - "en": "phone number", - "es": "número de teléfono", - "et": "telefoninumber", - "fi": "puhelinnumero", - "fr": "numéro de téléphone", - "he": "מספר טלפון", - "hi": "फ़ोन नंबर", - "hr": "telefonski broj", - "hu": "telefonszám", - "id": "nomor telepon", - "it": "numero di telefono", - "ja": "電話番号", - "ko": "전화번호", - "lt": "telefono numeris", - "lv": "telefona numurs", - "nb": "telefonnummer", - "nl": "telefoonnummer", - "pl": "numer telefonu", - "pt": "número de telefone", - "ro": "număr de telefon", - "ru": "номер телефона", - "sk": "telefónne číslo", - "sl": "telefonska številka", - "sr": "телефонски број", - "sv": "telefonnummer", - "th": "หมายเลขโทรศัพท์", - "tr": "telefon numarası", - "uk": "номер телефону", - "vi": "số điện thoại", - "zh": "電話號碼", - "zh-cn": "电话号码" - } - }, - "public_transport": { - "*": { - "ar": "مواصلات عامة", - "bg": "обществен транспорт", - "ca": "transport públic", - "cs": "veřejná doprava", - "da": "kollektiv trafik", - "de": "öffentlicher verkehr", - "el": "δημόσια συγκοινωνία", - "en": "public transport", - "es": "transporte público", - "et": "ühistransport", - "fi": "julkinen liikenne", - "fr": "transport en commun", - "he": "תחבורה ציבורית", - "hr": "javni prijevoz", - "hu": "tömegközlekedés", - "id": "transportasi umum", - "is": "almenningssamgöngur", - "it": "trasporto pubblico", - "ja": "公共交通機関", - "ko": "대중교통", - "lt": "viešasis transportas", - "lv": "sabiedriskais transports", - "nb": "kollektivtransport", - "nl": "openbaar vervoer", - "pl": "publiczny transport zbiorowy", - "pt": "transporte coletivo", - "pt-br": "transporte público", - "ro": "transport public", - "ru": "общественный транспорт", - "sk": "verejná doprava", - "sl": "javni prevoz", - "sr": "јавни превоз", - "sv": "kollektivtrafik", - "th": "การขนส่งสาธารณะ", - "tr": "toplu taşımacılık", - "uk": "громадський транспорт", - "vi": "giao thông công cộng", - "zh": "公共交通", - "zh-tw": "公共運輸" - } - }, - "website": { - "*": { - "ar": "الموقع الرسمي", - "bg": "официален уебсайт", - "ca": "lloc web oficial", - "cs": "oficiální web", - "da": "officiel hjemmeside", - "de": "offizielle website", - "de-at": "offizielle homepage", - "el": "επίσημος ιστότοπος", - "en": "official website", - "es": "página web oficial", - "et": "ametlik kodulehekülg", - "fi": "viralliset kotisivut", - "fr": "site officiel", - "he": "אתר רשמי", - "hi": "आधिकारिक वेबसाइट", - "hr": "službena mrežna stranica", - "hu": "hivatalos weboldal", - "id": "laman resmi", - "is": "opinber vefsíða", - "it": "sito web ufficiale", - "ja": "公式ウェブサイト", - "ko": "공식 웹사이트", - "lt": "oficiali svetainė", - "lv": "oficiālā tīmekļa vietne", - "nb": "offisielt nettsted", - "nl": "officiële website", - "pl": "oficjalna strona internetowa", - "pt": "sítio web oficial", - "pt-br": "página web oficial", - "ro": "site oficial", - "ru": "официальный сайт", - "sk": "oficiálny web", - "sl": "uradno spletišče", - "sr": "званични веб-сајт", - "sv": "officiell webbplats", - "th": "เว็บไซต์ทางการ", - "tr": "resmî sitesi", - "uk": "офіційний сайт", - "vi": "trang chủ chính thức", - "zh": "官方网站", - "zh-hk": "官方網站", - "zh-tw": "官方網站" - } - }, - "wheelchair": { - "*": { - "ar": "إمكانية دخول الكراسي المتحركة", - "ca": "accessibilitat amb cadira de rodes", - "cs": "bezbariérový přístup", - "de": "rollstuhlzugänglichkeit", - "el": "προσβασιμότητα με αναπηρική καρέκλα", - "en": "wheelchair accessibility", - "es": "accesibilidad para silla de ruedas", - "fr": "accessibilité aux fauteuils roulants", - "he": "נגישות לכיסא גלגלים", - "hu": "akadálymentesség", - "id": "aksesibilitas kursi roda", - "it": "accessibilità ai disabili", - "ja": "車椅子利用可否", - "ko": "휠체어 사용자 이용 가능 여부", - "lv": "pieejamība ratiņkrēslā", - "nb": "tilretteleggelse for rullestol", - "nl": "rolstoeltoegankelijkheid", - "pl": "dostępność na wózku inwalidzkim", - "pt": "acessibilidade por cadeira de rodas", - "ru": "доступность для кресел-каталок", - "sr": "приступачност инвалидским колицима", - "sv": "tillgänglighet för rullstol", - "tr": "tekerlekli sandalye erişimi", - "uk": "доступність для інвалідних візків", - "zh": "輪椅使用性" - } - }, - "wikidata": { - "*": { - "en": "Wikidata" - } - }, - "wikipedia": { - "*": { - "en": "Wikipedia" - } - } - }, - "tags": { - "NHS": { - "STRAHNET": { - "ca": "xarxa de carreteres estratègiques", - "en": "strategic highway network" - } - }, - "access": { - "private": { - "ca": "carretera privada", - "cs": "účelová komunikace", - "de": "privatstraße", - "de-ch": "privatstrasse", - "el": "ιδιωτική οδός", - "en": "private swimming pool", - "fi": "yksityistie", - "fr": "piscine privée", - "ja": "私道", - "ko": "사도", - "nb": "privat vei", - "nl": "eigen weg", - "sv": "enskild väg", - "zh": "私家路" - }, - "public": { - "de": "öffentliches schwimmbad", - "en": "public swimming pool", - "fr": "piscine publique", - "ru": "общественный бассейн", - "zh-tw": "公共游泳池" - } - }, - "activity": { - "": { - "ar": "المواعدة", - "ca": "relació de parella", - "cs": "námluvy", - "en": "dating", - "es": "noviazgo", - "fi": "seurustelu", - "he": "דייטינג", - "hi": "डेटिंग", - "hu": "randevúzás", - "id": "kencan", - "ja": "デート", - "ko": "데이트", - "nb": "stevnemøte", - "pt": "namoro", - "ru": "поиск партнёра", - "sl": "obiskovanje zmenkov", - "sr": "забављање", - "sv": "dejtning", - "tr": "çıkma", - "uk": "період побачень", - "vi": "hẹn hò", - "zh": "約會" - } - }, - "addr": { - "": { - "ar": "ألمانيا", - "bg": "германия", - "ca": "alemanya", - "cs": "německo", - "da": "tyskland", - "de": "deutschland", - "el": "γερμανία", - "en": "germany", - "es": "alemania", - "et": "saksamaa", - "fi": "saksa", - "fr": "allemagne", - "he": "גרמניה", - "hi": "जर्मनी", - "hr": "njemačka", - "hu": "németország", - "id": "jerman", - "is": "þýskaland", - "it": "germania", - "ja": "ドイツ", - "ko": "독일", - "lt": "vokietija", - "lv": "vācija", - "nb": "tyskland", - "nl": "duitsland", - "pl": "niemcy", - "pt": "alemanha", - "ro": "germania", - "ru": "германия", - "sk": "nemecko", - "sl": "nemčija", - "sr": "немачка", - "sv": "tyskland", - "th": "ประเทศเยอรมนี", - "tr": "almanya", - "uk": "німеччина", - "vi": "đức", - "zh": "德國", - "zh-cn": "德国" - } - }, - "admin_level": { - "2": { - "ar": "دولة", - "bg": "страна", - "ca": "país", - "cs": "státní útvar", - "da": "land", - "de": "land", - "el": "χώρα", - "en": "country", - "es": "país", - "et": "maa", - "fi": "maa", - "fr": "pays", - "he": "ארץ", - "hi": "देश", - "hr": "zemlja (država)", - "hu": "ország", - "id": "negara", - "is": "land", - "it": "paese", - "ja": "国", - "ko": "나라", - "lt": "šalis", - "lv": "zeme", - "nb": "land", - "nl": "land", - "pl": "kraj", - "pt": "país", - "ro": "țară", - "ru": "страна", - "sk": "krajina", - "sl": "država", - "sr": "земља", - "sv": "land", - "th": "ประเทศ", - "tr": "ülke", - "uk": "країна", - "vi": "quốc gia", - "zh": "國家", - "zh-cn": "国家" - }, - "6": { - "ar": "تعلقة وتحصيل", - "ca": "comtat no metropolità", - "cs": "anglické nemetropolitní hrabství", - "da": "tehsil", - "de": "nicht-metropolen-landkreis", - "el": "μη-μητροπολιτική κομητεία", - "en": "non-metropolitan county", - "es": "condado no metropolitano", - "et": "mittelinnkrahvkond", - "fi": "shire-kreivikunta", - "fr": "comté non métropolitain", - "he": "מחוז לא-מטרופוליטני", - "hi": "तहसील", - "hr": "nemetropolitanske grofovije", - "hu": "anglia shire megyéi", - "it": "contea non metropolitana", - "ja": "シャイア・カウンティ", - "ko": "비도시주", - "nb": "taluk", - "nl": "tehsil", - "pl": "hrabstwo niemetropolitalne", - "pt": "condado não-metropolitano", - "ro": "comitat nemetropolitan", - "ru": "неметропольное графство", - "sk": "nemetropolitné grófstvo", - "sr": "mandal", - "sv": "grevskap", - "th": "เทศมณฑลที่ไม่ใช่มหานคร", - "tr": "metropol olmayan şehir", - "uk": "неметропольне графство в англії", - "vi": "tehsil", - "zh": "非都市郡", - "zh-cn": "次区 (南亚)", - "zh-hk": "鄉" - } - }, - "advertising": { - "billboard": { - "ar": "لوحة إعلانية", - "bg": "билборд", - "ca": "tanca publicitària", - "de": "plakatwand", - "el": "διαφημιστική πινακίδα", - "en": "billboard", - "es": "valla publicitaria", - "fi": "mainostaulu", - "fr": "panneau publicitaire", - "he": "שלט חוצות", - "id": "papan reklame", - "it": "poster", - "ja": "看板", - "ko": "간판", - "lt": "plakatas", - "lv": "ziņojumu dēlis", - "nl": "reclamebord", - "pt": "outdoor", - "ru": "рекламный щит", - "sk": "bilbord", - "sr": "билборд", - "sv": "annonstavla", - "th": "ป้ายโฆษณา", - "tr": "reklam panosu", - "uk": "білборд", - "zh": "看板" - }, - "column": { - "ca": "columna publicitària", - "cs": "plakátovací sloup", - "da": "plakatsøjle", - "de": "litfaßsäule", - "de-ch": "litfasssäule", - "en": "advertising column", - "es": "columna publicitaria", - "fr": "colonne morris", - "he": "עמוד פרסום", - "hu": "hirdetőoszlop", - "ja": "リトファスゾイレ", - "nb": "plakatsøyle", - "nl": "aanplakzuil", - "pl": "słup ogłoszeniowy", - "ru": "цилиндрическая афиша", - "sv": "affischpelare", - "uk": "колона морріса", - "vi": "cột morris", - "zh": "广告柱" - }, - "poster_box": { - "ca": "mobiliari urbà com a punt d'informació", - "de": "city-light-poster", - "en": "poster box", - "es": "mobiliario urbano como punto de información", - "pl": "citylight", - "ru": "сити-формат", - "sk": "citylight", - "uk": "сітілайт" - } - }, - "aerialway": { - "cable_car": { - "ar": "جمازة جوية", - "bg": "лифт", - "ca": "telefèric", - "cs": "kabinová lanovka", - "da": "kabinebane", - "de": "pendelseilbahn", - "el": "τελεφερίκ", - "en": "aerial tramway", - "es": "teleférico", - "fi": "kabiinihissi", - "fr": "téléphérique", - "he": "רכבל", - "hi": "आकाशीय रज्जुमार्ग", - "hu": "drótkötélpályás felvonó", - "id": "kereta gantung", - "is": "kláfur", - "it": "funivia a va' e vieni", - "ja": "索道", - "ko": "삭도", - "nb": "taubane", - "nl": "cabinebaan", - "pl": "kolej kabinowa", - "pt": "teleférico", - "ro": "telecabină", - "ru": "воздушный трамвай", - "sr": "ваздушни трамвај", - "sv": "kabinbana", - "tr": "teleferik", - "uk": "повітряний трамвай", - "vi": "cáp treo", - "zh": "往復式纜車", - "zh-hk": "吊車" - }, - "chair_lift": { - "ar": "مصعد الكراسي", - "bg": "лифт", - "ca": "telecadira", - "cs": "sedačková lanová dráha", - "da": "stolelift", - "de": "sesselbahn", - "el": "αναβατήρας", - "en": "chairlift", - "es": "telesilla", - "fr": "télésiège", - "id": "lift kursi", - "it": "seggiovia", - "ja": "チェアリフト", - "ko": "체어리프트", - "nb": "stolheis", - "nl": "stoeltjeslift", - "pl": "wyciąg krzesełkowy", - "ro": "telescaun", - "ru": "кресельный подъёмник", - "sl": "sedežnica", - "sv": "stollift", - "tr": "telesiyej", - "zh": "吊椅式索道" - }, - "gondola": { - "ar": "غندول (مصعد)", - "ca": "telecabina", - "da": "gondolbane", - "de": "gondelbahn", - "en": "gondola lift", - "es": "telecabina", - "fi": "gondolihissi", - "fr": "télécabine", - "he": "מעלית גונדולה", - "hr": "gondola", - "id": "kereta gantung gondola", - "it": "cabinovia", - "ja": "ゴンドラリフト", - "ko": "곤돌라 리프트", - "nb": "gondolbane", - "nl": "gondel", - "pl": "kolej gondolowa", - "ru": "гондольная канатная дорога", - "sl": "nihalka", - "sv": "gondolbana", - "tr": "gondol", - "zh": "吊厢式索道" - }, - "goods": { - "cs": "nákladní lanová dráha", - "de": "materialseilbahn", - "en": "material ropeway", - "fr": "téléphérique à matériaux", - "it": "teleferica", - "ja": "貨物索道", - "nl": "goederenkabelbaan", - "sv": "transportlinbana", - "uk": "промислова канатна дорога", - "zh": "貨物索道" - }, - "j-bar": { - "en": "j-bar lift", - "fr": "téleski à perches", - "sv": "j-krokslift" - }, - "magic_carpet": { - "ca": "catifa rodant", - "en": "magic carpet", - "fr": "tapis roulant", - "sv": "rullband (skidlift)" - }, - "mixed_lift": { - "ca": "telemix", - "de": "kombibahn", - "en": "hybrid lift", - "fr": "téléporté avec sièges et cabines", - "ja": "ハイブリッドリフト", - "pl": "kolej krzesełkowo-kabinowa", - "sv": "telemixlift" - }, - "platter": { - "cs": "poma", - "en": "platter lift", - "fr": "téléski à enrouleur", - "pl": "wyciąg talerzykowy", - "sv": "knapplift" - }, - "rope_tow": { - "ca": "telecorda", - "cs": "lyžařský vlek", - "de": "seillift", - "en": "rope tow", - "fr": "téléski à câble bas", - "it": "manovia", - "nb": "skitrekk", - "pl": "wyciąg bezpodporowy", - "ru": "бугельный подъёмник", - "sk": "lyžiarsky vlek", - "sv": "replift", - "uk": "бугелний" - }, - "t-bar": { - "cs": "kotva", - "de": "schlepplift", - "en": "t-bar lift", - "fr": "téleski à archet", - "pl": "wyciąg orczykowy" - }, - "zip_line": { - "ar": "زيب لاين", - "ca": "tirolina", - "cs": "zip line dráha", - "de": "seilrutsche", - "de-ch": "seilbrücke", - "en": "zip-line", - "es": "tirolesa", - "fr": "tyrolienne", - "he": "גלישה זוויתית", - "hu": "átcsúszópálya", - "id": "luncur gantung", - "it": "teleferica", - "ja": "ジップライン", - "ko": "집라인", - "nb": "løypestreng", - "nl": "tokkelbaan", - "pl": "tyrolka", - "pt": "tirolesa", - "ro": "tiroliană", - "ru": "зиплайн", - "sl": "žična drča", - "sv": "zipline", - "tr": "zipline", - "uk": "зіплайн", - "vi": "zip line", - "zh": "溜索" - } - }, - "aeroway": { - "aerodrome": { - "ar": "منشأة جوية", - "bg": "летателна площадка", - "ca": "aeròdrom", - "cs": "aerodrom", - "da": "flyveplads", - "de": "flugplatz", - "el": "αεροδρόμιο", - "en": "aerodrome", - "es": "aeródromo", - "et": "lennuväli", - "fi": "lentopaikka", - "fr": "aérodrome", - "he": "שדה תעופה", - "hr": "zračna luka", - "hu": "légikikötő", - "id": "lapangan terbang", - "it": "aerodromo", - "ja": "飛行場", - "ko": "비행장", - "lt": "aerodromas", - "lv": "lidlauks", - "nb": "flyplass", - "nl": "vliegveld", - "pl": "lotnisko", - "pt": "aeródromo", - "ro": "aerodrom", - "ru": "аэродром", - "sr": "аеродром", - "sv": "aerodrom", - "tr": "havaalanı", - "uk": "аеродром", - "zh": "飛行場" - }, - "apron": { - "ar": "موقف الطائرات", - "ca": "plataforma d'estacionament", - "cs": "stojánka", - "da": "lufthavnsforplads", - "de": "vorfeld", - "en": "apron", - "es": "plataforma", - "fi": "asemataso", - "fr": "aire de stationnement", - "he": "רחבת חניה", - "id": "pelataran pesawat", - "it": "area di stazionamento", - "ja": "エプロン", - "ko": "에이프런", - "lv": "perons", - "nb": "oppstillingsplass", - "nl": "platform", - "pl": "płyta postojowa samolotów", - "pt": "plataforma de estacionamento", - "ru": "перрон", - "uk": "перон", - "zh": "機坪", - "zh-cn": "机坪" - }, - "gate": { - "ar": "بوابة", - "ca": "porta d'embarcament", - "cs": "odletová brána", - "de": "flugsteig", - "en": "gate", - "fr": "porte d'embarquement", - "he": "שער עלייה למטוס", - "hu": "kapu", - "id": "gerbang", - "it": "gate aeroportuale", - "ja": "搭乗ゲート", - "ko": "게이트", - "ru": "выход", - "uk": "вихід", - "zh": "登機閘口", - "zh-cn": "登机口" - }, - "hangar": { - "ar": "حظيرة طائرات", - "bg": "хангар", - "cs": "hangár", - "en": "hangar", - "et": "angaar", - "fi": "lentokonehalli", - "he": "האנגר", - "hr": "spremište za zrakoplove", - "ja": "格納庫", - "ko": "격납고", - "lt": "angaras", - "ru": "ангар", - "sk": "hangár", - "sr": "хангар", - "uk": "ангар", - "vi": "xưởng cất máy bay", - "zh": "飞机库" - }, - "helipad": { - "ar": "مهبط مروحية", - "de": "hubschrauber- und evtol-landeplattform", - "en": "helipad", - "es": "helisuperficie", - "fi": "helikopterikenttä", - "fr": "hélisurface", - "he": "מנחת", - "hu": "helikopter-leszállóhely", - "it": "elisuperficie", - "ja": "ヘリパッド", - "ko": "헬리패드", - "lt": "helipadas", - "pt": "heliponto", - "ru": "вертолётная площадка", - "sr": "хеликоптерско постоље", - "sv": "helikopterplatta", - "th": "ลานจอดเฮลิคอปเตอร์", - "zh": "直升机停机坪" - }, - "heliport": { - "ar": "مطار مروحيات", - "de": "hubschrauberlandeplatz", - "el": "ελικοδρόμιο", - "en": "heliport", - "es": "helipuerto", - "et": "kopteriväljak", - "fr": "héliport", - "he": "נמל מסוקים", - "hr": "helidrom", - "id": "pangkalan helikopter", - "it": "eliporto", - "ja": "ヘリポート", - "ko": "헬리포트", - "nb": "helikopterplass", - "nl": "helikopterhaven", - "pt": "heliporto", - "ru": "вертодром", - "sr": "хелидром", - "sv": "helikopterflygplats", - "th": "สนามบินเฮลิคอปเตอร์", - "uk": "вертодром", - "vi": "bãi đáp máy bay trực thăng", - "zh": "直升飞机场" - }, - "highway_strip": { - "de": "autobahn-behelfsflugplatz", - "en": "highway strip", - "fi": "lentokoneiden varalaskupaikka", - "fr": "autoroute à aéronefs", - "hu": "autópálya-szükségrepülőtér", - "it": "pista d'atterraggio stradale", - "ja": "代替滑走路", - "nb": "vägbas", - "nl": "snelweg-noodvliegveld", - "pl": "drogowy odcinek lotniskowy", - "ru": "аэродромный участок дороги", - "sv": "vägbas", - "zh": "戰備跑道" - }, - "launchpad": { - "ar": "منصة إطلاق", - "ca": "plataforma de llançament", - "cs": "odpalovací rampa", - "de": "startrampe", - "el": "εξέδρα εκτόξευσης", - "en": "launch pad", - "es": "plataforma de despegue", - "et": "stardiplatvorm", - "fi": "laukaisualusta", - "fr": "aire de lancement", - "he": "כן שיגור", - "hr": "lansirna rampa", - "hu": "indítóállás", - "it": "rampa di lancio", - "ja": "発射台", - "ko": "발사대", - "nl": "lanceerplatform", - "pl": "platforma startowa", - "pt": "plataforma de lançamento", - "ru": "стартовый комплекс", - "sr": "лансирна рампа", - "th": "ฐานปล่อยจรวด", - "tr": "fırlatma rampası", - "uk": "стартовий комплекс", - "vi": "bệ phóng", - "zh": "发射台" - }, - "navigationaid": { - "en": "approach lighting system", - "es": "sistema de luces de aproximación", - "fi": "lähestymisvalojärjestelmä", - "fr": "dispositif lumineux d'approche", - "he": "מערכת תאורת גישה", - "id": "sistem lampu ancang", - "it": "sistema luminoso di avvicinamento", - "ja": "進入灯", - "ko": "lighting system", - "pt": "sistema de luzes de aproximação", - "ru": "система огней подхода", - "uk": "світлосигнальна система аеродрому", - "zh": "进近灯光系统" - }, - "runway": { - "ar": "مدرج هبوط", - "bg": "самолетна писта", - "ca": "pista d'aterratge", - "cs": "vzletová a přistávací dráha", - "da": "landingsbane", - "de": "start- und landebahn", - "el": "διάδρομος αεροδρομίου", - "en": "runway", - "es": "pista de aterrizaje", - "et": "rada", - "fi": "kiitotie", - "fr": "piste d'aérodrome", - "he": "מסלול טיסה", - "hi": "उड़ानपट्टी", - "hu": "futópálya", - "id": "landasan pacu", - "is": "flugbraut", - "it": "pista", - "ja": "滑走路", - "ko": "활주로", - "lt": "kilimo ir tūpimo takas", - "nb": "rullebane", - "nl": "startbaan", - "pl": "droga startowa", - "pt": "pista de aterragem e descolagem", - "pt-br": "pista de pouso e decolagem", - "ru": "взлётно-посадочная полоса", - "sk": "vzletová a pristávacia dráha", - "sl": "vzletno-pristajalna steza", - "sr": "полетно-слетна стаза", - "sv": "landningsbana", - "th": "ทางวิ่งเครื่องบิน", - "tr": "pist", - "uk": "злітно-посадкова смуга", - "vi": "đường băng", - "zh": "跑道" - }, - "spaceport": { - "ar": "ميناء فضائي", - "bg": "космодрум", - "ca": "cosmòdrom", - "cs": "kosmodrom", - "da": "rumhavn", - "de": "weltraumbahnhof", - "el": "διαστημοδρόμιο", - "en": "spaceport", - "es": "base espacial", - "et": "kosmodroom", - "fi": "laukaisukeskus", - "fr": "base de lancement", - "he": "נמל חלל", - "hr": "svemirska luka", - "hu": "űrközpont", - "id": "pelabuhan angkasa", - "it": "spazioporto", - "ja": "宇宙港", - "ko": "우주기지", - "lt": "kosmodromas", - "lv": "kosmodroms", - "nb": "kosmodrom", - "nl": "ruimtehaven", - "pl": "kosmodrom", - "pt": "base de lançamento espacial", - "ro": "cosmodrom", - "ru": "космодром", - "sk": "kozmodróm", - "sl": "vesoljsko izstrelišče", - "sr": "космодром", - "sv": "rymdbas", - "th": "ท่าอวกาศยาน", - "tr": "uzay i̇stasyonu", - "uk": "космодром", - "vi": "sân bay vũ trụ", - "zh": "航天发射中心" - }, - "stopway": { - "de": "stopbahn", - "en": "stopway", - "he": "משטח עצירה" - }, - "taxiway": { - "ar": "ممر تدريج", - "ca": "pista de rodatge", - "cs": "pojezdová dráha", - "da": "rullevej", - "de": "rollbahn", - "el": "τροχόδρομος αεροδρομίου", - "en": "taxiway", - "es": "calle de rodaje", - "et": "ruleerimisrada", - "fi": "rullaustie", - "fr": "voie de circulation", - "he": "מסלול הסעה", - "id": "landas pintas", - "it": "via di rullaggio", - "ja": "誘導路", - "ko": "유도로", - "nb": "taksebane", - "nl": "taxibaan", - "pl": "droga kołowania", - "ru": "рулёжная дорожка", - "uk": "руліжна доріжка", - "vi": "đường lăn", - "zh": "滑行道" - }, - "terminal": { - "ar": "صالة المطار", - "bg": "летищен терминал", - "ca": "terminal d'aeroport", - "cs": "letištní terminál", - "da": "lufthavnsterminal", - "de": "flughafenterminal", - "el": "σταθμός αερολιμένα", - "en": "airport terminal", - "es": "terminal aeroportuaria", - "fi": "lentoterminaali", - "fr": "terminal aéroportuaire", - "he": "טרמינל", - "id": "terminal bandar udara", - "it": "terminal aeroportuale", - "ja": "空港ターミナルビル", - "ko": "공항 터미널", - "nl": "terminal", - "pl": "terminal pasażerski", - "ru": "аэровокзал", - "sk": "letiskový terminál", - "sr": "аеродромски терминал", - "sv": "flygplatsterminal", - "th": "อาคารผู้โดยสารสนามบิน", - "tr": "havalimanı terminali", - "uk": "термінал аеропорту", - "zh": "航站楼", - "zh-hk": "客運大樓", - "zh-tw": "航廈" - }, - "windsock": { - "ar": "كم الريح", - "ca": "anemoscopi", - "cs": "větrný rukáv", - "da": "vindpose", - "de": "windsack", - "el": "ανεμούριο", - "en": "windsock", - "es": "manga de viento", - "fi": "tuulipussi", - "fr": "manche à air", - "he": "שרוול רוח", - "id": "gada gada", - "it": "manica a vento", - "ja": "吹流し", - "ko": "바람자루", - "nb": "vindpølse", - "nl": "windzak", - "pl": "rękaw", - "pt": "manga de vento", - "pt-br": "biruta", - "ro": "mânecă de vânt", - "ru": "ветроуказатель", - "sv": "vindstrut", - "tr": "rüzgâr tulumu", - "uk": "вітровказівник", - "vi": "ống gió", - "zh": "風向袋", - "zh-cn": "风向袋" - } - }, - "amenity": { - "animal_boarding": { - "de": "tierpension", - "en": "animal boarding", - "fi": "lemmikkihoitola", - "nl": "dierenpension" - }, - "animal_breeding": { - "en": "animal breeding establishment", - "fr": "élevage" - }, - "animal_shelter": { - "ar": "مأوى الحيوانات", - "ca": "refugi d'animals", - "cs": "zvířecí útulek", - "de": "tierheim", - "en": "animal shelter", - "es": "refugio de animales", - "et": "loomade varjupaik", - "fr": "refuge animalier", - "he": "בית מחסה לחיות בית", - "id": "tempat perlindungan hewan", - "it": "rifugio per cani", - "ja": "動物保護施設", - "ko": "동물보호소", - "lv": "dzīvnieku patversme", - "nl": "dierenasiel", - "pl": "schronisko dla zwierząt", - "pt": "abrigo para animais", - "ru": "приют для бездомных животных", - "sk": "zvierací útulok", - "sl": "zavetišče za živali", - "sv": "katthem", - "tr": "hayvan sığınağı", - "uk": "притулок для бездомних тварин", - "zh": "動物收容所" - }, - "archive": { - "ar": "أرشيف", - "bg": "архив", - "ca": "arxiu", - "cs": "archiv", - "da": "arkiv", - "de": "archiv", - "el": "αρχείο", - "en": "archives", - "en-ca": "archive", - "en-gb": "archive", - "es": "archivo", - "et": "arhiiv", - "fi": "arkisto", - "he": "ארכיון", - "hi": "पुरालेख", - "hr": "arhiv", - "hu": "archívum", - "id": "arsip", - "is": "skjalasafn", - "it": "archivio", - "ja": "アーカイブ", - "ko": "기록 보관소", - "lt": "archyvas", - "lv": "arhīvs", - "nb": "arkiv", - "nl": "archiefinstelling", - "pl": "archiwum", - "pt": "arquivo", - "ru": "архив", - "sk": "archív", - "sl": "arhiv", - "sr": "архив", - "sv": "arkiv", - "th": "จดหมายเหตุ", - "tr": "belgelik", - "uk": "архів", - "vi": "kho lưu trữ", - "zh": "檔案館", - "zh-cn": "档案馆" - }, - "arts_centre": { - "ar": "مركز فنون", - "ca": "centre artístic", - "de": "kunstzentrum", - "el": "κέντρο τεχνών", - "en": "arts centre", - "es": "centro artístico", - "et": "kunstikeskus", - "fi": "taidekeskus", - "fr": "centre des arts", - "he": "מרכז אומנויות", - "it": "centro artistico", - "ja": "芸術センター", - "ko": "예술 회관", - "nl": "kunstencentrum", - "pt": "centro de artes", - "ru": "арт-центр", - "sl": "umetnostni center", - "uk": "артцентр", - "vi": "trung tâm nghệ thuật", - "zh": "艺术中心" - }, - "atm": { - "ar": "آلة صراف آلي", - "bg": "банкомат", - "ca": "caixer automàtic", - "cs": "bankomat", - "da": "pengeautomat", - "de": "geldautomat", - "de-at": "bankomat", - "de-ch": "bancomat", - "el": "μηχάνημα αυτόματης ανάληψης", - "en": "automated teller machine", - "en-ca": "bancomat", - "en-gb": "cashpoint", - "es": "cajero automático", - "et": "pangaautomaat", - "fi": "pankkiautomaatti", - "fr": "guichet automatique bancaire", - "he": "כספומט", - "hi": "स्वचालित गणक मशीन", - "hr": "bankomat", - "hu": "bankautomata", - "id": "anjungan tunai mandiri", - "is": "hraðbanki", - "it": "sportello automatico", - "ja": "現金自動預け払い機", - "ko": "현금 자동 입출금기", - "lt": "bankomatas", - "lv": "bankas automāts", - "nb": "minibank", - "nl": "geldautomaat", - "pl": "bankomat", - "pt": "caixa eletrônico", - "pt-br": "bancomat", - "ro": "bancomat", - "ru": "банкомат", - "sk": "bankomat", - "sl": "bankomat", - "sr": "банкомат", - "sv": "uttagsautomat", - "th": "เอทีเอ็ม", - "tr": "bankamatik", - "uk": "банкомат", - "vi": "máy rút tiền tự động", - "zh": "自動櫃員機" - }, - "audiologist": { - "ar": "عالم السمع", - "ca": "audiòleg", - "cs": "audiolog", - "de": "audiologe", - "en": "audiologist", - "es": "audiólogo", - "fi": "audiologi", - "fr": "audiologiste", - "he": "אודיולוג", - "hu": "audiológus", - "is": "heyrnarfræðingur", - "it": "audiologo", - "nl": "audioloog", - "pl": "audiolog", - "pt": "audiologista", - "ru": "аудиолог", - "sr": "аудиолог", - "sv": "audionom", - "th": "นักโสตสัมผัสวิทยา", - "tr": "odyolog" - }, - "baby_hatch": { - "ar": "صندوق إيداع الطفل المتخلى عنه", - "bg": "бебешка кутия", - "cs": "babybox", - "de": "babyklappe", - "en": "baby hatch", - "es": "escotilla de bebés", - "fi": "vauvaluukku", - "fr": "tour d'abandon", - "he": "בייבי האץ'", - "hu": "babamentő inkubátor", - "it": "ruota degli esposti", - "ja": "赤ちゃんポスト", - "ko": "베이비박스", - "lv": "glābējsilīte", - "nb": "babyboks", - "nl": "vondelingenluik", - "pl": "okno życia", - "pt": "roda dos expostos", - "ro": "trapa pentru copii abandonați", - "ru": "окно жизни", - "sr": "кутија за бебе", - "sv": "bebislucka", - "uk": "бокс для покинутого немовляти", - "zh": "棄嬰保護艙" - }, - "baking_oven": { - "ar": "الفرن", - "bg": "фурна", - "ca": "forn", - "cs": "pec", - "da": "ovn", - "de": "backofen", - "el": "φούρνος", - "en": "oven", - "es": "horno", - "et": "ahi", - "fi": "uuni", - "fr": "four", - "he": "תנור אפייה", - "hr": "peć", - "is": "ofn", - "it": "forno", - "ja": "オーブン", - "ko": "오븐", - "lt": "krosnis", - "lv": "krāsns", - "nb": "ovn", - "pl": "piekarnik", - "pt": "forno", - "ro": "cuptor", - "ru": "печь", - "sk": "pec", - "sr": "пећница", - "sv": "ugn", - "tr": "fırın", - "uk": "піч", - "vi": "lò", - "zh": "烤爐" - }, - "bank": { - "ca": "edifici bancari", - "cs": "budova banky", - "de": "bankgebäude", - "el": "κτήριο τράπεζας", - "en": "bank building", - "es": "edificio bancario", - "et": "pangahoone", - "fi": "pankkikiinteistö", - "fr": "édifice bancaire", - "he": "בניין בנק", - "ja": "銀行建築", - "ko": "은행 지점", - "nb": "bankbygning", - "nl": "bankgebouw", - "pl": "budynek banku", - "pt": "edifício bancário", - "ro": "agenție bancară", - "ru": "здание банка", - "sr": "зграда банке", - "sv": "bankbyggnad", - "tr": "banka binası", - "uk": "банківська будівля", - "zh": "银行建筑物", - "zh-hk": "銀行建築物", - "zh-tw": "銀行分行" - }, - "bar": { - "ar": "بار", - "bg": "бар", - "el": "μπαρ", - "en": "bar", - "et": "baar", - "fi": "baari", - "he": "בר", - "hu": "bár", - "is": "krá", - "ja": "バー", - "ko": "바", - "lt": "baras", - "nl": "café", - "ru": "бар", - "sr": "бар", - "sv": "barlokal", - "uk": "бар", - "vi": "quán bar", - "zh": "酒吧" - }, - "bbq": { - "bg": "скара", - "ca": "graella", - "cs": "grilovací místo", - "da": "grill", - "de": "grillplatz", - "en": "barbecue", - "es": "asador", - "fi": "grilli", - "hu": "barbecue-sütés", - "id": "pemanggang barbekyu", - "is": "grill", - "it": "griglia", - "ja": "グリル", - "ko": "그릴", - "nb": "grill", - "nl": "grill", - "pl": "grill", - "pt": "grelhador", - "ru": "гриль", - "sv": "grill", - "tr": "mangal alanı", - "uk": "гриль", - "vi": "vỉ nướng", - "zh": "燒烤架" - }, - "bench": { - "ar": "مقعد حديقة", - "bg": "пейка", - "ca": "banc", - "cs": "lavice", - "da": "bænk", - "de": "bank", - "el": "παγκάκι", - "en": "bench", - "es": "banco", - "et": "pink", - "fi": "penkki", - "fr": "banc", - "he": "ספסל", - "hr": "klupa", - "hu": "pad", - "id": "bangku jalan", - "is": "bekkur", - "it": "panchina", - "ja": "ベンチ", - "ko": "벤치", - "lt": "suolas", - "nb": "benk", - "nl": "bank", - "pl": "ławka", - "pt": "banco", - "ro": "bancă", - "ru": "скамья", - "sr": "парковска клупа", - "sv": "bänk", - "tr": "bank", - "uk": "лава", - "vi": "băng ghế", - "zh": "長椅", - "zh-cn": "长椅" - }, - "bicycle_parking": { - "ca": "aparcament de bicicletes", - "cs": "parkování kol", - "de": "fahrradabstellplatz", - "en": "bicycle parking", - "es": "estacionamiento de bicicletas", - "fr": "stationnement cyclable", - "he": "חניה לאופניים", - "it": "parcheggio per biciclette", - "ja": "駐輪", - "nl": "fietsparkeerplaats", - "pl": "parking rowerowy", - "pt": "estacionamento de bicicletas", - "ru": "велопарковка", - "sv": "cykelparkering", - "tr": "bisiklet parkı", - "uk": "велопарковка", - "zh": "腳踏車停車場" - }, - "bicycle_rental": { - "de": "fahrradmietstation", - "en": "bicycle-sharing station", - "fr": "station de vélopartage", - "ko": "자전거 대여소", - "nl": "fietsdeelstation", - "pl": "stacja roweru miejskiego" - }, - "bicycle_repair_station": { - "da": "cykelreparationsstation", - "de": "fahrrad-reparaturstation", - "en": "bicycle repair station", - "pl": "samoobsługowa stacja naprawy rowerów" - }, - "biergarten": { - "ca": "biergarten", - "da": "traktørsted", - "de": "biergarten", - "en": "beer garden", - "es": "biergarten", - "fi": "biergarten", - "fr": "biergarten", - "he": "גן בירה", - "id": "biergarten", - "it": "biergarten", - "ja": "ビアガーデン", - "ko": "비어 가든", - "nb": "traktørsted", - "nl": "biergarten", - "pl": "biergarten", - "pt": "biergarten", - "ru": "пивной сад", - "sv": "biergarten", - "tr": "bira bahçesi", - "uk": "пивний садок", - "zh": "啤酒花園", - "zh-cn": "啤酒花园" - }, - "boat_rental": { - "de": "bootsverleih", - "en": "boat rental" - }, - "boat_sharing": { - "en": "boat sharing" - }, - "brothel": { - "ar": "بيت دعارة", - "bg": "публичен дом", - "ca": "bordell", - "cs": "nevěstinec", - "da": "bordel", - "de": "bordell", - "el": "οίκος ανοχής", - "en": "brothel", - "es": "burdel", - "et": "lõbumaja", - "fi": "bordelli", - "fr": "bordel", - "he": "בית בושת", - "hi": "वेश्यालय", - "hr": "javna kuća", - "hu": "bordélyház", - "id": "bordil", - "it": "casa di tolleranza", - "ja": "売春宿", - "ko": "매춘소", - "lt": "viešnamis", - "lv": "bordelis", - "nb": "bordell", - "nl": "bordeel", - "pl": "dom publiczny", - "pt": "prostíbulo", - "ro": "bordel", - "ru": "публичный дом", - "sk": "verejný dom", - "sl": "javna hiša", - "sr": "бордел", - "sv": "bordell", - "th": "ซ่องโสเภณี", - "tr": "genelev", - "uk": "бурдій", - "vi": "nhà thổ", - "zh": "妓院" - }, - "bts": { - "ar": "محطة الإرسال والاستقبال القاعدية", - "ca": "estació base", - "cs": "základnová převodní stanice", - "el": "σταθμός βάσης", - "en": "base transceiver station", - "es": "estación base", - "it": "stazione radio base", - "ja": "基地局", - "ko": "기지국", - "lt": "mobiliojo ryšio bokštas", - "nb": "basestasjon-transceiver", - "nl": "gsm-mast", - "pl": "stacja bazowa", - "pt": "estação radio base", - "tr": "baz istasyonu", - "uk": "базова станція", - "vi": "trạm thu phát sóng di động", - "zh": "基地收发机站" - }, - "bureau_de_change": { - "ar": "صرافة العملات", - "bg": "обменно бюро", - "cs": "směnárna", - "da": "vekselkontor", - "de": "wechselstube", - "el": "γραφείο αλλαγής", - "en": "bureau de change", - "es": "casa de cambio", - "hr": "mjenjačnica", - "hu": "pénzváltó", - "ja": "両替", - "ko": "환전", - "nl": "geldwisselkantoor", - "pl": "kantor walutowy", - "pt": "casa de câmbio", - "ru": "обменный пункт", - "sv": "växelkontor", - "tr": "döviz bürosu", - "zh": "钱币兑换店" - }, - "bus_garage": { - "ar": "مرأب الحافلات", - "bg": "депо", - "ca": "cotxera d'autobús", - "cs": "autobusová vozovna", - "da": "busgarage", - "de": "busdepot", - "el": "αμαξοστάσιο λεωφορείων", - "en": "bus depot", - "es": "cocheras", - "fr": "dépôt d'autobus", - "he": "חניון אוטובוסים", - "hu": "autóbuszgarázs", - "id": "depo bus", - "it": "deposito autobus", - "ja": "バス車庫", - "ko": "버스 차고지", - "nb": "bussgarasje", - "nl": "busremise", - "pl": "zajezdnia autobusowa", - "pt": "garagem de autocarros", - "pt-br": "garagem de ônibus", - "ru": "автобусный парк", - "sr": "депо", - "sv": "bussgarage", - "zh": "巴士車廠" - }, - "bus_station": { - "ar": "موقف حافلات", - "bg": "автогара", - "ca": "estació d'autobusos", - "cs": "autobusové nádraží", - "da": "busstation", - "de": "busbahnhof", - "el": "σταθμός λεωφορείων", - "en": "bus station", - "es": "estación de autobús", - "et": "bussijaam", - "fi": "linja-autoasema", - "fr": "gare routière", - "he": "מסוף אוטובוסים", - "hr": "autobusni kolodvor", - "hu": "autóbusz-állomás", - "id": "terminal bus", - "it": "autostazione", - "ja": "自動車駅", - "ko": "버스 터미널", - "lt": "autobusų stotis", - "lv": "autoosta", - "nb": "busstasjon", - "nl": "busstation", - "pl": "dworzec autobusowy", - "pt": "estação de autocarros", - "pt-br": "estação de ônibus", - "ro": "autogară", - "ru": "автостанция", - "sk": "autobusová stanica", - "sr": "аутобуска станица", - "sv": "busstation", - "th": "สถานีรถโดยสารประจำทาง", - "tr": "otogar", - "uk": "автовокзал", - "vi": "trạm xe buýt", - "zh": "巴士车站", - "zh-hk": "巴士車站", - "zh-tw": "公車轉運站" - }, - "cafe": { - "ar": "مقهى", - "bg": "кафене", - "ca": "cafeteria", - "cs": "kavárna", - "da": "café", - "de": "café", - "el": "καφετέρια", - "en": "coffeehouse", - "en-ca": "café", - "en-gb": "café", - "es": "cafetería", - "et": "kohvik", - "fi": "kahvila", - "fr": "café", - "he": "בית קפה", - "hi": "कॉफ़ीख़ाना", - "hr": "kafić", - "hu": "kávéház", - "id": "warung kopi", - "is": "kaffihús", - "it": "caffetteria", - "ja": "カフェ", - "ko": "커피집", - "lt": "kavinė", - "lv": "kafejnīca", - "nb": "kafé", - "nl": "koffiehuis", - "pl": "kawiarnia", - "pt": "café", - "pt-br": "cafeteria", - "ro": "cafenea", - "ru": "кафе", - "sk": "kaviareň", - "sl": "kavarna", - "sr": "кафић", - "sv": "kafé", - "th": "ร้านกาแฟ", - "tr": "kafe", - "uk": "кав'ярня", - "vi": "quán cà phê", - "zh": "咖啡店" - }, - "car_pooling": { - "en": "car pooling facility", - "fr": "aire de covoiturage" - }, - "car_rental": { - "ar": "وكالة تأجير السيارات", - "bg": "коли под наем", - "ca": "empresa de lloguer de cotxes", - "cs": "autopůjčovna", - "da": "biludlejning", - "de": "autovermietung", - "en": "car rental company", - "es": "compañía de alquiler de vehículos", - "fi": "autonvuokraamo", - "fr": "location de voiture", - "he": "השכרת רכב", - "id": "persewaan mobil", - "it": "noleggio auto", - "ja": "レンタカー", - "ko": "렌터카", - "nb": "bilutleie", - "nl": "autoverhuur", - "pl": "wypożyczalnia samochodów", - "pt": "aluguer de veículos", - "pt-br": "aluguel de veículos", - "ro": "companie de închirieri auto", - "ru": "прокат автомобилей", - "sv": "biluthyrning", - "tr": "oto kiralama", - "uk": "прокат автомобіля", - "zh": "汽車租賃", - "zh-tw": "租車公司" - }, - "car_sharing": { - "ca": "cotxe multiusuari", - "cs": "sdílení aut", - "da": "delebil", - "en": "carsharing", - "es": "uso temporal de vehículos", - "et": "ühisauto kasutamine", - "fi": "yhteiskäyttöauto", - "fr": "autopartage", - "he": "שיתוף מכוניות", - "hr": "suuporaba automobila", - "it": "auto condivisa", - "ja": "カーシェアリング", - "ko": "카셰어링", - "lt": "dalinimosi automobiliu paslauga", - "nb": "bildeling", - "nl": "autodelen", - "pl": "car-sharing", - "ru": "краткосрочная аренда автомобиля", - "sk": "car-sharing", - "sl": "souporaba avtomobila", - "sv": "bilpool", - "zh": "汽车共享", - "zh-hk": "汽車共享" - }, - "car_wash": { - "ar": "مغسلة سيارات", - "ca": "rentat de cotxes", - "cs": "automyčka", - "da": "bilvask", - "de": "waschanlage", - "en": "car wash", - "es": "lavado autoservicio", - "et": "autopesula", - "fr": "station de lavage", - "he": "רחיצת מכוניות", - "hi": "वाहन धुलाई", - "id": "pencucian mobil", - "it": "autolavaggio", - "ja": "洗車機", - "ko": "세차장", - "lv": "automazgātava", - "nb": "bilvask", - "nl": "wasstraat", - "pl": "myjnia samochodowa", - "pt": "lava-jato", - "ru": "автомойка", - "sv": "biltvätt", - "uk": "автомийка", - "vi": "máy rửa xe", - "zh": "洗車" - }, - "casino": { - "ar": "كازينو", - "bg": "казино", - "cs": "kasino", - "da": "kasino", - "de": "spielbank", - "el": "καζίνο", - "en": "casino", - "et": "kasiino", - "fi": "kasino", - "he": "קזינו", - "hi": "कैसीनो", - "hr": "kockarnica", - "hu": "kaszinó", - "id": "kasino", - "is": "spilavíti", - "it": "casinò", - "ja": "カジノ", - "ko": "카지노", - "lt": "kazino", - "lv": "kazino", - "nb": "kasino", - "pl": "kasyno", - "ro": "cazinou", - "ru": "казино", - "sr": "коцкарница", - "sv": "kasino", - "th": "กาสิโน", - "tr": "kumarhane", - "uk": "казино", - "vi": "sòng bạc", - "zh": "賭場", - "zh-cn": "赌场" - }, - "chair": { - "ar": "كرسي", - "bg": "стол", - "ca": "cadira", - "cs": "židle", - "da": "stol", - "de": "stuhl", - "de-at": "sessel", - "el": "καρέκλα", - "en": "chair", - "es": "silla", - "et": "tool", - "fi": "tuoli", - "fr": "chaise", - "he": "כיסא", - "hi": "कुर्सी", - "hr": "stolica", - "hu": "szék", - "id": "kursi", - "is": "stóll", - "it": "sedia", - "ja": "椅子", - "ko": "의자", - "lt": "kėdė", - "lv": "krēsls", - "nb": "stol", - "nl": "stoel", - "pl": "krzesło", - "pt": "cadeira", - "ro": "scaun", - "ru": "стул", - "sk": "stolička", - "sl": "stol", - "sr": "столица", - "sv": "stol", - "th": "เก้าอี้", - "tr": "sandalye", - "uk": "стілець", - "vi": "ghế", - "zh": "椅" - }, - "charging_station": { - "ar": "محطة شحن", - "ca": "estació de càrrega", - "cs": "dobíjecí stanice", - "da": "ladestation", - "de": "stromtankstelle", - "en": "electric vehicle charging station", - "es": "estación de carga", - "fi": "latausasema", - "fr": "station de recharge", - "he": "תחנת טעינה", - "hr": "punionica za električne automobile", - "id": "stasiun pengisian energi listrik", - "is": "hleðslustöð", - "it": "stazione di ricarica", - "ja": "充電スタンド", - "ko": "충전소", - "nb": "ladestasjon for el-kjøretøy", - "nl": "oplaadpunt", - "pl": "stacja ładowania", - "pt": "estação de carga", - "ru": "электрозаправочная станция", - "sr": "акумулаторска станица", - "sv": "laddstolpe", - "tr": "elektrikli araç şarj istasyonu", - "uk": "зарядна станція", - "vi": "trạm sạc", - "zh": "電動車充電站" - }, - "childcare": { - "ar": "رعاية الأطفال", - "bg": "детска ясла", - "ca": "cura infantil", - "cs": "péče o děti", - "da": "børnepasning", - "de": "kinderbetreuung", - "el": "παιδική φροντίδα", - "en": "child care", - "en-gb": "nursery school", - "es": "cuidado infantil", - "et": "lasteaed", - "fi": "lastenkasvatus", - "fr": "mode de garde d'enfant", - "he": "טיפול בילדים", - "hi": "शिशु देखभाल", - "hu": "gyermekgondozás", - "id": "penitipan anak", - "it": "custodia dei bambini", - "ja": "保育", - "ko": "보육", - "lv": "bērna aprūpe", - "nb": "barnepass", - "nl": "kinderopvang", - "pl": "opieka nad dzieckiem", - "pt": "guarda de crianças", - "ru": "забота о детях", - "sv": "barnomsorg", - "tr": "çocuk bakımı", - "uk": "ясла", - "vi": "chăm sóc trẻ em", - "zh": "兒童照顧" - }, - "cinema": { - "ar": "سينما", - "bg": "киносалон", - "ca": "sala de cinema", - "cs": "kino", - "da": "biograf", - "de": "kino", - "el": "κινηματογράφος", - "en": "movie theater", - "en-gb": "cinema", - "es": "cine", - "et": "kino", - "fi": "elokuvateatteri", - "fr": "salle de cinéma", - "he": "בית קולנוע", - "hr": "kino", - "hu": "filmszínház", - "id": "bioskop", - "is": "kvikmyndahús", - "it": "cinema", - "ja": "映画館", - "ko": "영화관", - "lt": "kino teatras", - "lv": "kinoteātris", - "nb": "kino", - "nl": "bioscoop", - "pl": "kino", - "pt": "sala de cinema", - "ro": "cinematograf", - "ru": "кинотеатр", - "sk": "kino", - "sl": "kino", - "sr": "биоскоп", - "sv": "biograf", - "th": "โรงภาพยนตร์", - "tr": "sinema salonu", - "uk": "кінотеатр", - "vi": "rạp chiếu phim", - "zh": "電影院" - }, - "clinic": { - "bg": "поликлиника", - "ca": "clínica externa", - "cs": "poliklinika", - "de": "poliklinik", - "en": "policlinic", - "es": "policlínico", - "et": "polikliinik", - "fi": "poliklinikka", - "fr": "clinique externe (département hospitalier)", - "hi": "बाह्य रोगी विभाग", - "hr": "poliklinika", - "nb": "poliklinikk", - "nl": "polikliniek", - "pl": "poliklinika", - "pt": "policlínica", - "ru": "поликлиника", - "sv": "öppenvård", - "tr": "poliklinik", - "uk": "поліклініка", - "zh": "門診" - }, - "clock": { - "ar": "برج ساعة", - "bg": "часовникова кула", - "ca": "rellotge de torre", - "cs": "věžní hodiny", - "da": "tårnur", - "de": "turmuhr", - "el": "πύργος ρολογιού", - "en": "turret clock", - "en-ca": "clock", - "en-gb": "clock", - "es": "reloj público", - "et": "tornikell", - "fi": "kellotorni", - "fr": "tour horloge", - "he": "מגדל שעון", - "hi": "घडी", - "hr": "sat", - "hu": "óratorony", - "id": "menara jam", - "is": "klukka", - "it": "torre dell'orologio", - "ja": "タレット・クロック", - "ko": "시계탑", - "lt": "kurantai", - "lv": "pulkstenis", - "nb": "klokke", - "nl": "torenuurwerk", - "pl": "zegar wieżowy", - "pt": "torre do relógio", - "pt-br": "relógio", - "ro": "ceas", - "ru": "башенные часы", - "sk": "hodiny", - "sl": "ura", - "sr": "часовник", - "sv": "tornur", - "th": "หอนาฬิกา", - "tr": "saat kulesi", - "uk": "годинникова вежа", - "vi": "tháp đồng hồ", - "zh": "塔钟", - "zh-cn": "时钟", - "zh-hk": "鐘樓", - "zh-tw": "時鐘" - }, - "college": { - "ar": "كلية", - "bg": "колеж", - "cs": "kolej", - "el": "κολέγιο", - "en": "college", - "et": "kolledž", - "fr": "collège", - "he": "מכללה", - "hi": "महाविद्यालय", - "hu": "főiskola", - "id": "kolese", - "ja": "カレッジ", - "ko": "단과대학", - "lt": "koledžas", - "lv": "koledža", - "pt": "colégio", - "ro": "colegiu", - "ru": "колледж", - "sl": "kolidž", - "sr": "колеџ", - "th": "วิทยาลัย", - "tr": "kolej", - "uk": "коледж", - "vi": "trường cao đẳng", - "zh": "學院", - "zh-cn": "学院" - }, - "community_centre": { - "ar": "المراكز المجتمعية", - "ca": "centre cívic", - "cs": "komunitní centrum", - "da": "medborgerhus", - "de": "gemeinschaftszentrum", - "el": "κοινοτικό κέντρο", - "en": "community center", - "en-gb": "community centre", - "es": "centro comunitario", - "et": "kogukonnakeskus", - "fi": "monitoimitalo", - "fr": "centre communautaire", - "he": "מתנ\"ס", - "hu": "közösségi központ", - "is": "félagsheimili", - "it": "centro sociale", - "ja": "コミュニティセンター", - "lv": "kopienas centrs", - "nb": "samfunnshus", - "nl": "buurtcentrum", - "pt": "centro comunitário", - "ru": "общественный центр", - "sr": "социјални центар", - "sv": "community centre", - "uk": "громадський центр", - "vi": "trung tâm cộng đồng", - "zh": "社區中心" - }, - "compressed_air": { - "ar": "هواء مضغوط", - "ca": "aire comprimit", - "cs": "stlačený vzduch", - "de": "druckluft", - "en": "tyre pressure station", - "es": "aire comprimido", - "et": "suruõhk", - "fi": "paineilma", - "fr": "station de gonflage", - "he": "אוויר דחוס", - "hi": "संपीडित वायु", - "hr": "stlačeni zrak", - "hu": "sűrített levegő", - "id": "udara terkompresi", - "it": "aria compressa", - "ja": "圧縮空気", - "ko": "압축공기", - "nb": "trykkluft", - "nl": "perslucht", - "pl": "sprężone powietrze", - "pt": "ar comprimido", - "ro": "aer comprimat", - "ru": "сжатый воздух", - "sr": "компримовани ваздух", - "sv": "tryckluft", - "uk": "стиснене повітря", - "zh": "压缩空气" - }, - "concert_hall": { - "bg": "концертна зала", - "ca": "sala de concerts", - "cs": "koncertní sál", - "da": "koncerthus", - "de": "konzerthaus", - "el": "μέγαρο μουσικής", - "en": "concert hall", - "es": "sala de conciertos", - "et": "kontserdimaja", - "fi": "konserttitalo", - "fr": "bâtiment de salle de concert", - "he": "אולם קונצרטים", - "hr": "koncertna dvorana", - "id": "gedung konser", - "it": "sala da concerto", - "ja": "コンサートホール", - "ko": "연주회장", - "lv": "koncertzāle", - "nb": "konserthus", - "nl": "concertgebouw", - "pl": "sala koncertowa", - "pt": "casa de concerto", - "pt-br": "sala de concerto", - "ru": "концертный зал", - "sl": "koncertna dvorana", - "sr": "концертна дворана", - "sv": "konserthus", - "tr": "konser salonu", - "uk": "концертна зала", - "zh": "音樂廳" - }, - "conference_centre": { - "ar": "مركز مؤتمرات", - "ca": "centre de convencions", - "cs": "kongresové centrum", - "da": "messecenter", - "de": "kongresszentrum", - "el": "συνεδριακό κέντρο", - "en": "convention center", - "en-gb": "conference centre", - "es": "centro de convenciones", - "fi": "kongressikeskus", - "fr": "palais des congrès", - "he": "מרכז כנסים", - "id": "pusat konvensi", - "it": "centro congressi", - "ja": "コンベンション・センター", - "ko": "컨벤션 센터", - "nb": "konferansesenter", - "nl": "congrescentrum", - "pl": "centrum kongresowe", - "pt": "centro de convenções", - "ro": "centru de convenție", - "ru": "конференц-центр", - "sv": "konferensanläggning", - "th": "ศูนย์ประชุม", - "tr": "gösteri merkezi", - "uk": "конференц-центр", - "vi": "trung tâm hội nghị", - "zh": "展覽館", - "zh-cn": "展览馆" - }, - "cooking_school": { - "ca": "escola de cuina", - "de": "kochschule", - "en": "cooking school", - "es": "escuela de cocina", - "fr": "écoles de cuisine", - "he": "בית ספר לבישול", - "hu": "főzőiskola", - "ja": "調理師養成施設", - "vi": "trường dạy nấu ăn", - "zh": "廚藝學校" - }, - "courthouse": { - "ar": "مبنى محكمة", - "bg": "съдебна палата", - "ca": "palau de justícia", - "cs": "budova soudu", - "da": "domhus", - "de": "gerichtsgebäude", - "el": "δικαστικό μέγαρο", - "en": "courthouse", - "es": "palacio de justicia", - "et": "kohtuhoone", - "fi": "oikeustalo", - "fr": "palais de justice", - "he": "בית משפט", - "id": "gedung pengadilan", - "it": "palazzo di giustizia", - "ja": "裁判所庁舎", - "nb": "tinghus", - "nl": "gerechtsgebouw", - "pl": "budynek sądu", - "pt": "tribunal", - "pt-br": "fórum", - "ro": "palat de justiție", - "ru": "здание суда", - "sl": "sodišče", - "sr": "зграда суда", - "sv": "tingshus", - "tr": "adliye", - "uk": "будівля суду", - "zh": "法院" - }, - "coworking_space": { - "ar": "مساحة عمل مشتركه", - "bg": "коуъркинг", - "ca": "cotreball", - "el": "συνεργασία (εργασία)", - "en": "coworking", - "es": "cotrabajo", - "fi": "ryhmätyötila", - "he": "חלל עבודה משותף", - "id": "kerja bersama", - "ja": "コワーキング", - "nb": "kontorfellesskap", - "nl": "deelkantoor", - "ru": "коворкинг", - "sl": "sodelanje", - "sv": "kontorskollektiv", - "tr": "açık ofis", - "uk": "коворкінг", - "zh": "共用工作空間" - }, - "crematorium": { - "ar": "مرمدة", - "bg": "крематориум", - "ca": "crematori", - "cs": "krematorium", - "da": "krematorie", - "de": "krematorium", - "el": "κρεματόριο", - "en": "crematorium", - "es": "crematorio", - "et": "krematoorium", - "fi": "krematorio", - "fr": "crématorium", - "he": "משרפה", - "hr": "krematorij", - "hu": "krematórium", - "ja": "火葬場", - "ko": "화장장", - "nb": "krematorium", - "pl": "krematorium", - "pt": "crematório", - "ro": "crematoriu", - "ru": "крематорий", - "sk": "krematórium", - "sr": "крематоријум", - "sv": "krematorium", - "th": "ฌาปนสถาน", - "tr": "krematoryum", - "uk": "крематорій", - "zh": "火葬場" - }, - "crypt": { - "ar": "السرداب", - "bg": "крипта", - "ca": "cripta", - "cs": "krypta", - "da": "krypt", - "de": "krypta", - "el": "κρύπτη", - "en": "crypt", - "es": "cripta", - "et": "krüpt", - "fi": "krypta", - "fr": "crypte", - "he": "קריפטה", - "hr": "kripta", - "hu": "kripta", - "it": "cripta", - "ja": "地下聖堂", - "ko": "크립트", - "lt": "kripta", - "lv": "kripta", - "nb": "krypt", - "nl": "crypte", - "pl": "krypta", - "pt": "cripta", - "ru": "крипта", - "sk": "krypta", - "sl": "kripta", - "sr": "крипта", - "sv": "krypta", - "th": "ห้องเก็บศพใต้โบสถ์", - "uk": "крипта", - "zh": "地下墓室" - }, - "dentist": { - "ar": "طبيب أسنان", - "bg": "стоматолог", - "ca": "odontòleg", - "cs": "stomatologická klinika", - "da": "tandlægeklinik", - "de": "zahnarztpraxis", - "de-ch": "zahnarzt", - "el": "οδοντιατρείο", - "en": "dental clinic", - "en-ca": "dentist", - "en-gb": "dentist", - "es": "clínica dental", - "et": "hambaarst", - "fi": "hammaslääkäri", - "fr": "clinique dentaire", - "he": "רופא שיניים", - "hr": "zubar", - "hu": "fogorvos", - "id": "dokter gigi", - "it": "dentista", - "ja": "歯科医院", - "ko": "치과의사", - "lv": "zobārsts", - "nb": "tannlege", - "nl": "tandarts", - "pl": "lekarz stomatolog", - "pt": "clínica dentária", - "pt-br": "dentista", - "ro": "dentist", - "ru": "стоматологическая клиника", - "sk": "zubný lekár", - "sl": "zobozdravnik", - "sr": "стоматолог", - "sv": "tandläkare", - "th": "ทันตแพทย์", - "tr": "diş hekimi", - "uk": "стоматолог", - "vi": "nha sĩ", - "zh": "牙醫", - "zh-cn": "牙医" - }, - "dive_centre": { - "de": "tauchbasis", - "en": "dive center", - "fr": "centre de plongée", - "it": "centro immersioni", - "ja": "ダイビングセンター" - }, - "doctors": { - "ca": "consultori mèdic", - "en": "doctor's office", - "es": "consultorio médico" - }, - "dojo": { - "ar": "دوجو", - "bg": "доджо", - "ca": "dojo", - "cs": "dódžó", - "da": "dojo", - "el": "ντότζο", - "en": "dōjō", - "fr": "dojo", - "he": "דוג'ו", - "hr": "dođo", - "hu": "dódzsó", - "id": "dojo", - "it": "dojo", - "ja": "道場", - "ko": "도장", - "lt": "dodžo", - "nb": "dojo", - "nl": "dojo", - "pl": "dojo", - "pt": "dojo", - "ro": "dojo", - "ru": "додзё", - "sk": "dódžó", - "sl": "dodžo", - "sr": "дођо", - "sv": "dojo", - "tr": "dojo", - "uk": "доджьо", - "vi": "dojo", - "zh": "武館", - "zh-cn": "武馆" - }, - "drinking_water": { - "ar": "مبقبق", - "ca": "font d'aigua", - "cs": "pítko", - "de": "trinkbrunnen", - "el": "κρήνη πόσιμου νερού", - "en": "drinking fountain", - "es": "fuente de agua", - "fr": "point d'eau public", - "hu": "ivókút", - "id": "air mancur minum", - "it": "fontanella", - "ja": "水飲み場", - "ko": "음수대", - "nl": "drinkfontein", - "pl": "pitnik", - "pt": "fontanário", - "pt-br": "bebedouro", - "ru": "питьевой фонтан", - "sk": "fontánka", - "sr": "чесма", - "sv": "dricksfontän", - "zh": "公共飲水機" - }, - "driving_school": { - "ar": "مدرسة تعليم سياقة", - "ca": "autoescola", - "cs": "autoškola", - "da": "køreskole", - "de": "fahrschule", - "en": "driver's education", - "es": "autoescuela", - "fi": "autokoulu", - "fr": "auto-école", - "he": "לימוד נהיגה", - "it": "scuola guida", - "ja": "自動車教習所", - "ko": "운전학원", - "lv": "autoskola", - "nb": "føreropplæring", - "nl": "rijles", - "pl": "szkoła nauki jazdy", - "pt": "centro de formação de condutores", - "ro": "școală de șoferi", - "ru": "автошкола", - "sl": "avtošola", - "sr": "auto škola", - "sv": "trafikutbildning", - "tr": "otomobil sürücüsü eğitimi", - "uk": "автомобільна школа", - "zh": "駕駛員教育", - "zh-tw": "駕駛人訓練班" - }, - "events_centre": { - "ar": "صالة", - "bg": "арена", - "ca": "estadi", - "cs": "aréna", - "el": "αρένα", - "en": "arena", - "es": "estadio cubierto", - "et": "areen", - "fi": "areena", - "fr": "aréna", - "he": "זירה", - "hu": "aréna", - "it": "impianto sportivo al chiuso", - "ja": "アリーナ", - "ko": "아레나", - "lv": "arēna", - "ro": "arenă", - "ru": "арена", - "sr": "арена", - "th": "อะรีนา", - "tr": "arena (kapalı alan)", - "uk": "арена", - "vi": "nhà thi đấu", - "zh": "競技場" - }, - "events_venue": { - "ar": "موقع لاستضافة أحداث", - "ca": "sala d'espectacles", - "de": "veranstaltungsort", - "el": "χώρος εκδηλώσεων", - "en": "event venue", - "es": "lugar para eventos", - "fr": "lieu pour des événements", - "he": "היכל הופעות", - "hu": "rendezvényhelyszín", - "it": "luogo per eventi", - "ja": "イベント会場", - "nb": "eventarena", - "nl": "evenementenlocatie", - "pl": "hala widowiskowo-sportowa", - "pt": "casa de shows", - "ro": "sală de spectacol", - "ru": "место проведения мероприятий", - "sl": "prizorišče", - "sv": "evenemangsplats", - "th": "พื้นที่กิจกรรม", - "tr": "etkinlik alanı", - "uk": "місце проведення заходів", - "vi": "địa điểm tổ chức sự kiện", - "zh": "活動場地" - }, - "exhibition_centre": { - "ar": "معرض تجاري", - "ca": "fira de mostres", - "cs": "veletrh", - "da": "handelsmesse", - "de": "messe", - "el": "εμπορική έκθεση", - "en": "trade fair", - "es": "feria de muestras", - "et": "mess", - "fi": "messut", - "fr": "salon", - "he": "יריד מסחרי", - "hi": "व्यापार मेला", - "hr": "gospodarska izložba", - "hu": "kereskedelmi vásár", - "id": "pameran dagang", - "it": "fiera di settore", - "ja": "見本市", - "ko": "견본시", - "lt": "mugė", - "nb": "varemesse", - "nl": "handelsbeurs", - "pl": "targi", - "pt": "feira profissional", - "ru": "промышленная ярмарка", - "sl": "sejem", - "sr": "сајам", - "sv": "handelsmässa", - "tr": "ticaret fuarı", - "uk": "промислові виставки", - "vi": "hội chợ thương mại", - "zh": "贸易展览会" - }, - "fast_food": { - "ar": "مطعم وجبات سريعة", - "bg": "бързо хранене", - "ca": "restaurant de menjar ràpid", - "cs": "restaurace rychlého občerstvení", - "da": "fastfoodrestaurant", - "de": "schnellrestaurant", - "el": "εστιατόριο γρήγορης εξυπηρέτησης", - "en": "fast food restaurant", - "es": "restaurante de comida rápida", - "et": "kiirtoidurestoran", - "fi": "pikaruokaravintola", - "fr": "restaurant rapide", - "he": "מסעדת מזון מהיר", - "hi": "fast food of usa hindi", - "hr": "restoran brze hrane", - "hu": "gyorsétterem", - "id": "rumah makan siap saji", - "is": "skyndibiti", - "it": "fast food", - "ja": "ファーストフード店", - "ko": "즉석식 식당", - "lt": "greitas maistas", - "lv": "ātrā ēdināšana", - "nb": "gatekjøkken", - "nl": "fastfoodrestaurant", - "pl": "fast food", - "pt": "restaurante de fast food", - "ro": "restaurant fast food", - "ru": "ресторан фастфуда", - "sk": "rýchle občerstvenie", - "sl": "hitra hrana", - "sr": "ресторан брзе хране", - "sv": "snabbmatsrestaurang", - "th": "อาหารจานด่วน", - "tr": "fast food restoranı", - "uk": "ресторан швидкого харчування", - "vi": "nhà hàng ăn nhanh", - "zh": "快餐店", - "zh-tw": "速食店" - }, - "feeding_place": { - "ar": "مذود", - "ca": "menjadora", - "cs": "koryto", - "da": "krybbe", - "de": "futterbehälter", - "el": "φάντη", - "en": "feeder", - "en-ca": "manger", - "es": "pesebre", - "fr": "mangeoire", - "he": "אבוס", - "hu": "etető", - "id": "palungan", - "it": "mangiatoia", - "ja": "アブルボア", - "ko": "구유", - "lt": "lovys", - "nb": "trau", - "nl": "kribbe", - "pl": "żłób", - "pt": "manjedoura", - "ro": "troacă", - "ru": "кормушка", - "sl": "napajalno korito", - "sv": "foderbord", - "uk": "годівниця", - "zh": "馬槽" - }, - "ferry_terminal": { - "ca": "port de ferri", - "da": "færgehavn", - "de": "fährhafen", - "en": "ferry port", - "et": "paadisadam", - "fr": "port à ferry", - "ja": "フェリーターミナル", - "nb": "fergested", - "nl": "veerhaven", - "pl": "terminal promowy", - "pt": "porto de balsa", - "ru": "паромный терминал", - "sv": "färjehamn", - "tr": "feribot iskelesi", - "zh": "客運樓" - }, - "financial_advice": { - "ar": "إدارة الأصول", - "bg": "управление на активи", - "ca": "gestió d'actius", - "cs": "investiční management", - "da": "finansrådgivning", - "de": "vermögensverwaltung", - "el": "διαχείριση περιουσιακών στοιχείων", - "en": "asset management", - "es": "gestión de activos", - "fr": "gestion d'actifs", - "he": "ניהול נכסים", - "hi": "निवेश प्रबंधन", - "hu": "eszközmenedzsment", - "id": "manajemen investasi", - "it": "risparmio gestito", - "ja": "アセット・マネジメント", - "ko": "자산운용", - "lt": "investicijų valdymas", - "nb": "kapitalforvaltning", - "nl": "vermogensbeheer", - "pl": "zarządzanie aktywami", - "pt": "gestão de ativos", - "ro": "gestionarea activelor", - "ru": "управление активами", - "sk": "správcovská spoločnosť", - "sl": "upravljanje premoženja", - "sv": "kapitalförvaltning", - "uk": "управління активами", - "vi": "quản lý tài sản", - "zh": "投資管理" - }, - "fire_station": { - "ar": "محطة إطفاء الحرائق", - "ca": "parc de bombers", - "cs": "hasičská zbrojnice", - "da": "brandstation", - "de": "feuerwehrhaus", - "el": "πυροσβεστικός σταθμός", - "en": "fire station", - "es": "estación de bomberos", - "et": "tuletõrjedepoo", - "fi": "paloasema", - "fr": "caserne de pompiers", - "he": "תחנת כיבוי אש", - "it": "caserma dei vigili del fuoco", - "ja": "消防署", - "ko": "소방서", - "lt": "gaisrinė", - "nb": "brannstasjon", - "nl": "brandweerkazerne", - "pl": "remiza strażacka", - "pt": "corpo de bombeiros", - "ro": "stație de pompieri", - "ru": "пожарное депо", - "sk": "hasičská stanica", - "sv": "brandstation", - "uk": "пожежна частина", - "vi": "trạm cứu hỏa", - "zh": "消防局" - }, - "flowerpot": { - "ar": "أصيص", - "bg": "саксия", - "ca": "test", - "cs": "květináč", - "da": "urtepotte", - "de": "blumentopf", - "el": "γλάστρα", - "en": "flowerpot", - "es": "maceta", - "et": "lillepott", - "fi": "kukkaruukku", - "fr": "pot de fleurs", - "he": "עציץ", - "hi": "गमला", - "id": "pot bunga", - "it": "vaso per fiori", - "ja": "植木鉢", - "ko": "화분", - "nb": "blomsterpotte", - "nl": "bloempot", - "pl": "doniczka", - "pt": "vaso de plantas", - "ru": "цветочный горшок", - "sr": "саксија", - "sv": "blomkruka", - "tr": "saksı", - "zh": "花盆" - }, - "food_court": { - "ar": "قاعة طعام", - "de": "food-court", - "en": "food court", - "fr": "aire de restauration", - "ja": "フードコート", - "ko": "푸드코트", - "nb": "mathall", - "pt": "praça de alimentação", - "ru": "фудкорт", - "th": "ศูนย์อาหาร", - "uk": "ресторанний дворик", - "zh": "美食廣場" - }, - "fountain": { - "ar": "نافورة", - "bg": "фонтан", - "ca": "font", - "cs": "fontána", - "da": "springvand", - "de": "zierbrunnen", - "de-ch": "springbrunnen", - "el": "κρήνη", - "en": "fountain", - "es": "fuente", - "et": "purskkaev", - "fi": "suihkulähde", - "fr": "fontaine", - "he": "מזרקה", - "hr": "fontana", - "hu": "szökőkút", - "id": "air mancur", - "it": "fontana", - "ja": "噴水", - "ko": "분수", - "lt": "fontanas", - "lv": "strūklaka", - "nb": "fontene", - "nl": "fontein", - "pl": "fontanna", - "pt": "fontanário", - "pt-br": "chafariz", - "ro": "fântână", - "ru": "фонтан", - "sk": "fontána", - "sl": "fontana", - "sr": "фонтана", - "sv": "fontän", - "tr": "çeşme", - "uk": "фонтан", - "vi": "đài phun nước", - "zh": "噴泉" - }, - "fuel": { - "ar": "محطة وقود", - "bg": "бензиностанция", - "ca": "benzinera", - "cs": "čerpací stanice pohonných hmot", - "da": "tankstation", - "de": "tankstelle", - "el": "πρατήριο καυσίμων", - "en": "filling station", - "en-gb": "petrol station", - "es": "estación de servicio", - "et": "bensiinijaam", - "fi": "huoltoasema", - "fr": "station-service", - "he": "תחנת דלק", - "hi": "पेट्रोल पंप", - "hu": "benzinkút", - "id": "stasiun pengisian bahan bakar", - "it": "stazione di servizio", - "ja": "ガソリンスタンド", - "ko": "주유소", - "lv": "degvielas uzpildes stacija", - "nb": "bensinstasjon", - "nl": "tankstation", - "pl": "stacja paliw", - "pt": "posto de abastecimento", - "ro": "stație de alimentare", - "ru": "автомобильная заправочная станция", - "sk": "čerpacia stanica", - "sl": "bencinska črpalka", - "sr": "бензинска пумпа", - "sv": "bensinstation", - "tr": "benzin istasyonu", - "uk": "автозаправна станція", - "vi": "cây xăng", - "zh": "加油站" - }, - "funeral_hall": { - "cs": "obřadní síň", - "de": "trauerhalle", - "en": "funeral hall", - "fr": "salle de recueillement", - "hu": "ravatalozó", - "ja": "斎場", - "nl": "rouwaula", - "pl": "dom przedpogrzebowy" - }, - "gambling": { - "de": "glücksspieleinrichtung", - "en": "gambling facility" - }, - "give_box": { - "en": "free box", - "es": "caja libre", - "nl": "givebox", - "pl": "givebox" - }, - "grit_bin": { - "de": "streugutbehälter", - "en": "baltimore salt box", - "fr": "bac à sel", - "ja": "砂箱", - "nl": "zoutbak", - "sv": "vägsandlåda" - }, - "gym": { - "ar": "نادي صحي", - "bg": "фитнес зала", - "ca": "centre de fitness", - "cs": "posilovna", - "da": "motionscenter", - "de": "fitnessstudio", - "en": "health club", - "es": "club de salud", - "et": "jõusaal", - "fi": "kuntosali", - "fr": "centre de remise en forme", - "hr": "teretana", - "hu": "edzőterem", - "id": "pusat kebugaran", - "ja": "フィットネスクラブ", - "ko": "헬스클럽", - "lv": "fitnesa klubs", - "nb": "helsestudio", - "nl": "sportschool", - "pl": "siłownia", - "pt": "academia desportiva", - "ru": "фитнес-клуб", - "sv": "motionssal", - "tr": "fitness merkezi", - "uk": "фітнес-клуб", - "vi": "phòng tập gym", - "zh": "健身房" - }, - "harbourmaster": { - "ca": "capitania de port", - "da": "havnefoged", - "de": "hafenkapitän", - "el": "λιμενάρχης", - "en": "harbourmaster", - "es": "comandante de puerto", - "fi": "satamakapteeni", - "fr": "officier de port", - "he": "רב-חובל נמל", - "id": "syahbandar", - "it": "comandante del porto", - "ja": "港長", - "lt": "uosto kapitonas", - "nb": "havnefogd", - "nl": "havenmeester", - "pl": "kapitan portu", - "pt": "capitania do porto", - "ro": "căpitănie", - "ru": "капитан порта", - "sv": "hamnkapten", - "uk": "капітан морського порту", - "zh": "船政司" - }, - "health_post": { - "ar": "مركز صحي", - "ca": "centre d'atenció primària", - "de": "medizinisches versorgungszentrum", - "el": "κέντρο υγείας", - "en": "community health center", - "en-gb": "community health centre", - "es": "centro de salud", - "fi": "terveyskeskus", - "fr": "maison médicale", - "hr": "dom zdravlja", - "ja": "保健センター", - "nb": "helsesenter", - "nl": "wijkgezondheidscentrum", - "pl": "ośrodek zdrowia", - "pt": "posto de saúde", - "sl": "zdravstveni dom", - "sv": "hälsocentral", - "zh": "社區衛生中心" - }, - "hospital": { - "ar": "مستشفى", - "bg": "болница", - "cs": "nemocnice", - "da": "sygehus", - "de": "krankenhaus", - "de-ch": "spital", - "el": "νοσοκομείο", - "en": "hospital", - "et": "haigla", - "fi": "sairaala", - "fr": "hôpital", - "he": "בית חולים", - "hi": "चिकित्सालय", - "hr": "bolnica", - "hu": "kórház", - "id": "rumah sakit", - "is": "sjúkrahús", - "it": "ospedale", - "ja": "病院", - "ko": "병원", - "lt": "ligoninė", - "lv": "slimnīca", - "nb": "sykehus", - "nl": "ziekenhuis", - "pl": "szpital", - "ro": "spital", - "ru": "больница", - "sk": "nemocnica", - "sl": "bolnišnica", - "sr": "болница", - "sv": "sjukhus", - "th": "โรงพยาบาล", - "tr": "hastane", - "uk": "лікарня", - "vi": "bệnh viện", - "zh": "醫院", - "zh-cn": "医院" - }, - "hunting_stand": { - "cs": "posed", - "da": "skydetårn", - "de": "ansitz", - "en": "shooting stand", - "fi": "hirvitorni", - "fr": "mirador", - "hr": "čeka", - "nb": "jakttårn", - "pl": "ambona", - "ru": "охотничья вышка", - "sl": "lovska preža", - "sv": "jakttorn" - }, - "ice_cream": { - "ar": "محل الآيس كريم", - "ca": "gelateria", - "da": "isbutik", - "de": "eisdiele", - "en": "ice cream parlor", - "en-gb": "ice cream parlour", - "es": "heladería", - "fi": "jäätelöbaari", - "fr": "glacier", - "he": "גלידרייה", - "id": "parlor es krim", - "it": "gelateria", - "ja": "アイスクリーム・パーラー", - "ko": "아이스크림 가게", - "nl": "ijssalon", - "pl": "lodziarnia", - "pt": "sorveteria", - "ru": "кафе-мороженое", - "sr": "сладолеџиница", - "sv": "glasskafé", - "tr": "dondurma salonu", - "vi": "tiệm kem" - }, - "internet_cafe": { - "ar": "مقهى إنترنت", - "ca": "cibercafè", - "cs": "internetová kavárna", - "da": "internetcafé", - "de": "internetcafé", - "el": "ίντερνετ καφέ", - "en": "internet café", - "es": "cibercafé", - "fi": "nettikahvila", - "fr": "cybercafé", - "he": "אינטרנט קפה", - "hi": "इंटरनेट कैफे", - "id": "warung internet", - "is": "netkaffi", - "it": "internet point", - "ja": "インターネットカフェ", - "ko": "인터넷 카페", - "nb": "internettkafé", - "nl": "internetcafé", - "pl": "kafejka internetowa", - "pt": "cyber café", - "ru": "интернет-кафе", - "sk": "internetová kaviareň", - "sv": "internetkafé", - "tr": "i̇nternet kafe", - "uk": "інтернет-кафе", - "vi": "cà phê internet", - "zh": "網吧", - "zh-cn": "网吧", - "zh-tw": "網咖" - }, - "jobcentre": { - "ar": "وكالة توظيف", - "bg": "агенция за човешки ресурси", - "ca": "agència de treball", - "cs": "agentura práce", - "de": "arbeitsvermittler", - "en": "employment agency", - "es": "agencia de empleo", - "fi": "työvoimapalvelu", - "fr": "agence d’emploi", - "he": "חברת השמה", - "hu": "munkaközvetítő", - "id": "kerjantara", - "it": "agenzia per il lavoro", - "ja": "職業紹介事業", - "ko": "노동거래소", - "lt": "įdarbinimo agentūra", - "nb": "arbeidsformindling", - "nl": "arbeidsbureau", - "pl": "agencja zatrudnienia", - "pt": "agência de emprego", - "ru": "кадровое агентство", - "sl": "najem delovne sile", - "sr": "служба за запошљавање", - "sv": "arbetsförmedling", - "uk": "кадрова агенція", - "vi": "công ty nhân sự", - "zh": "人力仲介" - }, - "karaoke_box": { - "ar": "صالة كاراوكي", - "en": "karaoke box", - "es": "karaoke", - "he": "בר קריוקי", - "ja": "カラオケボックス", - "ko": "노래방", - "pt": "bar de karaoke", - "ru": "караоке бар", - "vi": "dàn karaoke", - "zh": "卡拉ok店", - "zh-cn": "卡拉ok包厢" - }, - "kick-scooter_rental": { - "en": "parking for electric kick scooter", - "pl": "parking dla hulajnóg elektrycznych" - }, - "kindergarten": { - "ar": "روضة أطفال", - "bg": "детска градина", - "ca": "llar d'infants", - "cs": "mateřská škola", - "da": "børnehave", - "el": "νηπιαγωγείο", - "en": "kindergarten", - "es": "jardín de infancia", - "et": "lasteaed", - "fi": "esikoulu", - "fr": "école maternelle", - "he": "גן ילדים", - "hi": "किंडरगार्टन", - "hr": "dječji vrtić", - "hu": "óvoda", - "id": "taman kanak-kanak", - "is": "leikskóli", - "it": "scuola dell'infanzia", - "ja": "幼稚園", - "ko": "유치원", - "lt": "vaikų darželis", - "lv": "bērnudārzs", - "nb": "barnehage", - "nl": "kleuterschool", - "pl": "przedszkole", - "pt": "jardim de infância", - "ro": "grădiniță", - "ru": "детский сад", - "sk": "materská škola", - "sl": "vrtec", - "sr": "обданиште", - "sv": "barnträdgård", - "th": "โรงเรียนอนุบาล", - "tr": "anaokulu", - "uk": "дитячий садок", - "vi": "trường mẫu giáo", - "zh": "幼稚園", - "zh-cn": "幼儿园" - }, - "kitchen": { - "de": "öffentliche küche", - "en": "public kitchen" - }, - "kneipp_water_cure": { - "da": "kneippkur", - "de": "kneipp-medizin", - "en": "kneipp cure", - "fr": "cure kneipp", - "ja": "クナイプ式水浴療法", - "nl": "kneippkuur", - "pt": "terapia de kneipp" - }, - "language_school": { - "bg": "езикова гимназия", - "ca": "escola d'idiomes", - "cs": "jazyková škola", - "da": "sprogskole", - "de": "sprachschule", - "en": "language school", - "es": "escuela de idiomas", - "fi": "kielikoulu", - "fr": "école de langue", - "he": "בית ספר לשפות", - "hr": "jezična škola", - "hu": "nyelviskola", - "it": "scuola di lingue", - "ja": "語学学校", - "pl": "szkoła językowa", - "pt": "escola de idiomas", - "sk": "jazyková škola", - "tr": "dil okulu", - "zh": "语言学校", - "zh-cn": "英国剑桥语言学校", - "zh-hk": "語言學校" - }, - "letter_box": { - "ca": "bústica de cartes", - "da": "postkasse", - "de": "hausbriefkasten", - "en": "letter box", - "et": "kirjakast", - "fi": "postilaatikko", - "he": "תיבת מכתבים", - "it": "cassetta postale", - "ja": "郵便受け", - "ko": "우편함", - "nb": "postkasse", - "nl": "brievenbus", - "pl": "skrzynka na listy", - "ru": "ящик для писем", - "sv": "postlåda", - "vi": "hòm thư đến", - "zh": "信箱" - }, - "library": { - "ar": "مكتبة", - "bg": "библиотека", - "ca": "biblioteca", - "cs": "knihovna", - "da": "bibliotek", - "de": "bibliothek", - "el": "βιβλιοθήκη", - "en": "library", - "es": "biblioteca", - "et": "raamatukogu", - "fi": "kirjasto", - "fr": "bibliothèque", - "he": "ספרייה", - "hi": "पुस्तकालय", - "hr": "knjižnica", - "hu": "könyvtár", - "id": "perpustakaan", - "is": "bókasafn", - "it": "biblioteca", - "ja": "図書館", - "ko": "도서관", - "lt": "biblioteka", - "lv": "bibliotēka", - "nb": "bibliotek", - "nl": "bibliotheek", - "pl": "biblioteka", - "pt": "biblioteca", - "ro": "bibliotecă", - "ru": "библиотека", - "sk": "knižnica", - "sl": "knjižnica", - "sr": "библиотека", - "sv": "bibliotek", - "th": "ห้องสมุด", - "tr": "kütüphane", - "uk": "бібліотека", - "vi": "thư viện", - "zh": "圖書館", - "zh-cn": "图书馆" - }, - "life_ring": { - "ar": "طافية النجاة", - "bg": "спасителен пояс", - "ca": "salvavides", - "cs": "záchranný kruh", - "da": "redningskrans", - "de": "rettungsring", - "el": "σωσίβιο", - "en": "lifebuoy", - "es": "salvavidas", - "et": "päästerõngas", - "fi": "pelastusrengas", - "fr": "bouée de sauvetage", - "he": "גלגל הצלה", - "hu": "mentőöv", - "it": "salvagente anulare", - "ja": "救命浮き輪", - "ko": "구명부환", - "nb": "livbøye", - "nl": "reddingsboei", - "pl": "koło ratunkowe", - "ro": "colac de salvare", - "ru": "спасательный круг", - "sv": "livboj", - "tr": "can simidi", - "uk": "рятувальний круг", - "vi": "phao cứu sinh", - "zh": "救生圈" - }, - "lifeboat_station": { - "da": "kystredningsstation", - "de": "rettungsbootstation", - "en": "lifeboat station", - "et": "merepäästejaam", - "fr": "station de sauvetage", - "nb": "redningsstasjon", - "nl": "reddingsbootstation", - "sv": "sjöräddningsstation" - }, - "loading_dock": { - "ca": "moll de càrrega", - "cs": "nakládací rampa", - "de": "laderampe", - "en": "loading dock", - "es": "muelle de carga", - "fr": "quai de chargement", - "it": "piano caricatore", - "ja": "トラックヤード", - "nl": "laad- en losdock", - "sv": "lastkaj", - "zh": "装运平台" - }, - "love_hotel": { - "ca": "meublé", - "cs": "hodinový hotel", - "de": "stundenhotel", - "en": "sex hotel", - "es": "albergue transitorio", - "fi": "seksihotelli", - "id": "hotel cinta", - "ja": "セックス・ホテル", - "pt": "motel", - "sv": "kärlekshotell" - }, - "marae": { - "en": "marae", - "he": "מאראה", - "ja": "マラエ", - "ru": "мараэ", - "uk": "марае", - "zh": "毛利集會場" - }, - "marketplace": { - "ar": "سوق", - "bg": "пазар", - "ca": "mercat", - "cs": "tržiště", - "da": "markedsplads", - "de": "marktplatz", - "de-ch": "grossmarkthalle", - "el": "αγορά", - "en": "marketplace", - "es": "mercado", - "et": "turg", - "fi": "markkinapaikka", - "fr": "marché", - "he": "שוק", - "hr": "tržnica", - "hu": "piac", - "id": "pasar tradisional", - "it": "mercato", - "ja": "市場", - "ko": "시장", - "lt": "turgus", - "lv": "tirgus", - "nb": "torg", - "nl": "marktplaats", - "pl": "targ", - "pt": "mercado", - "ro": "târg", - "ru": "рынок", - "sk": "tržnica", - "sl": "tržnica", - "sr": "тржница", - "sv": "marknadsplats", - "th": "ตลาด", - "tr": "pazar", - "uk": "ринок", - "vi": "chợ", - "zh": "集市", - "zh-cn": "草市", - "zh-hk": "草市", - "zh-tw": "傳統市場" - }, - "mobile_library": { - "ar": "مكتبة متجولة", - "ca": "biblioteca mòbil", - "cs": "pojízdná knihovna", - "da": "bogbus", - "de": "fahrbibliothek", - "el": "κινητή βιβλιοθήκη", - "en": "bookmobile", - "en-gb": "mobile library", - "es": "bibliobús", - "et": "rändraamatukogu", - "fi": "kirjastoauto", - "fr": "bibliothèque mobile", - "he": "ספרייה ניידת", - "hr": "pokretna knjižnica", - "hu": "mozgókönyvtár", - "it": "biblioteca mobile", - "ja": "移動図書館", - "nb": "bokbuss", - "nl": "bibliotheekbus", - "pl": "bibliobus", - "pt": "biblioteca móvel", - "ru": "передвижная библиотека", - "sl": "potujoča knjižnica", - "sr": "mobilna biblioteka", - "sv": "bokbuss", - "uk": "пересувна бібліотека", - "zh": "流動圖書館" - }, - "monastery": { - "ar": "دير", - "bg": "манастир", - "ca": "monestir", - "cs": "klášter", - "da": "kloster", - "de": "kloster", - "el": "μοναστήρι", - "en": "monastery", - "es": "monasterio", - "et": "klooster", - "fi": "luostari", - "fr": "monastère", - "he": "מנזר", - "hr": "samostan", - "hu": "kolostor", - "id": "biara", - "is": "klaustur", - "it": "monastero", - "ja": "僧院", - "ko": "수도원", - "lt": "vienuolynas", - "lv": "klosteris", - "nb": "kloster", - "nl": "kloostercomplex", - "pl": "klasztor", - "pt": "mosteiro", - "ro": "mănăstire", - "ru": "монастырь", - "sk": "kláštor", - "sl": "samostan", - "sr": "манастир", - "sv": "kloster", - "th": "อาราม", - "tr": "manastır", - "uk": "монастир", - "vi": "tu viện", - "zh": "僧院" - }, - "mortuary": { - "ar": "مشرحة", - "bg": "морга", - "ca": "dipòsit de cadàvers", - "cs": "márnice", - "de": "leichenhaus", - "en": "morgue", - "fi": "ruumishuone", - "he": "חדר מתים", - "hr": "mrtvačnica", - "hu": "halottasház", - "id": "kamar mayat", - "it": "obitorio", - "ja": "死体安置所", - "ko": "영안실", - "lv": "morgs", - "nb": "likhus", - "nl": "mortuarium", - "pl": "kostnica", - "pt": "necrotério", - "ro": "morgă", - "ru": "морг", - "sl": "mrtvašnica", - "sv": "bårhus", - "th": "สถานเก็บศพ", - "tr": "morg", - "uk": "морг", - "zh": "殮房", - "zh-cn": "太平间", - "zh-tw": "太平間" - }, - "motorcycle_parking": { - "de": "motorradparkplatz", - "en": "motorcycle parking area" - }, - "music_school": { - "bg": "музикално училище", - "ca": "escola de música", - "cs": "hudební škola", - "da": "musikskole", - "de": "musikschule", - "el": "μουσική σχολή", - "en": "music school", - "en-gb": "music education organisation", - "es": "escuela de música", - "et": "muusikakool", - "fi": "musiikkiopisto", - "fr": "école de musique", - "he": "אקדמיה למוזיקה", - "hr": "glazbena škola", - "hu": "zeneiskola", - "it": "scuola di musica", - "ja": "音楽学校", - "ko": "음악 학교", - "lv": "mūzikas skola", - "nb": "musikkskole", - "nl": "muziekschool", - "pl": "szkoła muzyczna", - "pt": "escola de música", - "ru": "музыкальное учебное заведение", - "sl": "glasbena šola", - "sv": "musikskola", - "tr": "müzik okulu", - "uk": "музична школа", - "vi": "trường âm nhạc", - "zh": "音乐学校", - "zh-hk": "音樂學校", - "zh-tw": "音樂學校" - }, - "music_venue": { - "ar": "صالة موسيقى", - "ca": "sala de concerts", - "da": "spillested", - "de": "veranstaltungsort für musikdarbietungen", - "el": "χώρος συναυλιών", - "en": "music venue", - "es": "sala de conciertos", - "fi": "konserttitila", - "fr": "salle de concert", - "he": "אולם מוזיקה", - "hu": "koncertterem", - "it": "luogo per eventi musicali", - "ja": "コンサート会場", - "lv": "mūzikas norises vieta", - "nb": "konsertlokale", - "nl": "concertzaal", - "pl": "sala koncertowa", - "pt": "casa de espetáculos", - "ru": "концертная площадка", - "sl": "glasbeno prizorišče", - "sv": "konsertlokal", - "th": "พื้นที่แสดงดนตรี", - "tr": "müzik mekanı", - "uk": "концертний майданчик", - "vi": "địa điểm âm nhạc", - "zh": "音乐演出场所" - }, - "nightclub": { - "ar": "ناد ليلي", - "bg": "нощен клуб", - "ca": "club nocturn", - "cs": "noční klub", - "da": "natklub", - "de": "nachtclub", - "el": "νυχτερινό κέντρο διασκέδασης", - "en": "nightclub", - "es": "club nocturno", - "et": "ööklubi", - "fi": "yökerho", - "fr": "boîte de nuit", - "he": "מועדון לילה", - "hi": "नाइट क्लब", - "hr": "noćni klub", - "hu": "éjszakai szórakozóhely", - "id": "klub malam", - "it": "night club", - "ja": "ナイトクラブ", - "ko": "나이트클럽", - "nb": "nattklubb", - "nl": "nachtclub", - "pl": "klub nocny", - "pt": "casa noturna", - "ro": "club", - "ru": "ночной клуб", - "sl": "nočni klub", - "sr": "ноћни клуб", - "sv": "nattklubb", - "th": "ไนต์คลับ", - "tr": "gece kulübü", - "uk": "нічний клуб", - "vi": "hộp đêm", - "zh": "夜總會" - }, - "nursing_home": { - "ar": "التمريض المنزلي", - "ca": "residència de gent gran", - "cs": "dům s pečovatelskou službou", - "de": "pflegeheim", - "en": "nursing home", - "es": "residencia geriátrica", - "et": "hooldekodu", - "fi": "hoitokoti", - "fr": "établissement médico-social", - "hi": "नर्सिंग होम", - "hu": "idősek otthona", - "id": "rumah perawatan", - "it": "casa di riposo", - "ja": "ナーシングホーム", - "nb": "sykehjem", - "nl": "verpleeghuis", - "pl": "dom pomocy społecznej", - "sv": "vårdhem", - "tr": "huzurevi", - "vi": "viện dưỡng lão", - "zh": "介護老人福祉設施" - }, - "parcel_locker": { - "cs": "doručovací box", - "de": "paketautomat", - "en": "parcel locker", - "et": "pakiautomaat", - "fi": "pakettiautomaatti", - "fr": "consigne automatique de colis", - "it": "paccomat", - "nb": "pakkeboks", - "nl": "pakjesautomaat", - "pl": "paczkomat", - "pt": "armário automático", - "ro": "pachetomat", - "ru": "почтомат", - "uk": "поштомат" - }, - "parking": { - "ar": "موقف سيارات", - "ca": "aparcament", - "cs": "parkoviště", - "da": "parkeringsplads", - "de": "parkplatz", - "en": "parking lot", - "en-gb": "car park", - "es": "estacionamiento", - "et": "parkla", - "fi": "pysäköintialue", - "fr": "parc de stationnement", - "he": "מגרש חניה", - "hr": "parkiralište", - "hu": "parkoló", - "id": "pelataran parkir", - "it": "parcheggio", - "ja": "駐車場", - "ko": "주차", - "nb": "parkeringsplass", - "nl": "parkeerterrein", - "pl": "parking", - "pt": "parque de estacionamento", - "ro": "parcare", - "ru": "парковка", - "sk": "parkovisko", - "sr": "паркиралиште", - "sv": "parkeringsplats", - "tr": "otopark", - "uk": "стоянка", - "vi": "bãi đỗ xe", - "zh": "停車場" - }, - "parking_entrance": { - "de": "parkplatzeinfahrt", - "en": "parking entrance" - }, - "parking_space": { - "ar": "مساحة وقوف السيارة", - "ca": "espai d'aparcament", - "de": "stellplatz", - "el": "χώρος στάθμευσης", - "en": "parking space", - "es": "espacio de estacionamiento", - "fi": "pysäköintipaikka", - "fr": "place de parking", - "hr": "parkirno mjesto", - "id": "satuan ruang parkir", - "it": "stallo di sosta", - "ko": "주차공간", - "nl": "parkeerplaats", - "pl": "miejsce postojowe", - "ru": "парковочное место", - "zh": "車位" - }, - "parliament": { - "ca": "edifici parlamentari", - "cs": "budova parlamentu", - "da": "parlamentsbygning", - "de": "parlamentsgebäude", - "el": "κτίριο της βουλής", - "en": "parliament building", - "es": "edificio parlamentario", - "fi": "parlamenttitalo", - "fr": "bâtiment parlementaire", - "he": "מבנה פרלמנט", - "hu": "parlamenti épület", - "id": "gedung parlemen", - "it": "edificio parlamentario", - "ja": "議事堂", - "lt": "parlamento pastatas", - "lv": "parlamenta ēka", - "nb": "parlamentsbygning", - "nl": "parlementsgebouw", - "pl": "budynek parlamentu", - "pt": "edifício parlamentar", - "ro": "clădirea parlamentului", - "ru": "здание парламента", - "sv": "parlamentsbyggnad", - "tr": "meclis binası", - "uk": "будівля парламенту", - "zh": "議會建築物", - "zh-cn": "议会建筑物" - }, - "pharmacy": { - "ar": "صيدلية", - "bg": "аптека", - "ca": "oficina de farmàcia", - "cs": "lékárna", - "da": "apotek", - "de": "apothekengebäude", - "el": "φαρμακείο", - "en": "pharmacy building", - "en-us": "pharmacy", - "es": "farmacia", - "et": "apteek", - "fi": "apteekki", - "fr": "pharmacie", - "he": "בית מרקחת", - "hr": "ljekarna", - "hu": "gyógyszertár", - "id": "apotek", - "is": "apótek", - "it": "farmacia", - "ja": "薬局", - "ko": "약국", - "lt": "vaistinė", - "lv": "aptieka", - "nb": "apotek", - "nl": "apotheek", - "pl": "apteka", - "pt": "farmácia", - "ro": "farmacie", - "ru": "аптека", - "sk": "lekáreň", - "sl": "lekarna", - "sr": "апотека", - "sv": "apotek", - "tr": "eczane", - "uk": "аптека", - "vi": "nhà thuốc", - "zh": "藥房", - "zh-cn": "药房" - }, - "photo_booth": { - "ar": "كشك التصوير", - "ca": "fotomaton", - "cs": "fotoautomat", - "de": "fotoautomat", - "en": "photo booth", - "es": "fotomatón", - "fi": "kuva-automaatti", - "fr": "cabine photographique", - "he": "תא צילום", - "it": "cabina per fototessera", - "ja": "証明写真機", - "ko": "포토 부스", - "nl": "fotoautomaat", - "pl": "fotobudka", - "ru": "фотокабина", - "sv": "fotoautomat", - "tr": "fotoğraf kabini", - "uk": "фотобудка", - "vi": "buồng chụp ảnh", - "zh": "照相亭" - }, - "place_of_mourning": { - "ca": "tanatori", - "cs": "smuteční síň", - "de": "aufbahrungshalle", - "en": "funeral parlour", - "es": "tanatorio", - "fr": "funérarium", - "hu": "ravatalozó", - "it": "camera mortuaria", - "ja": "葬儀ホーム", - "nl": "opbaringsruimte" - }, - "place_of_worship": { - "ar": "دار عبادة", - "ca": "lloc de culte", - "cs": "místo uctívání", - "de": "kultstätte", - "el": "χώρος λατρείας", - "en": "structure of worship", - "en-ca": "place of worship", - "en-gb": "place of worship", - "es": "lugar de culto", - "et": "palvemaja", - "fi": "hartauspaikka", - "fr": "lieu de culte", - "he": "בית תפילה", - "hi": "उपासनास्थल", - "hr": "mjesto štovanja", - "hu": "imahely", - "id": "tempat ibadah", - "it": "luogo di culto", - "ja": "礼拝所", - "lt": "šventvietė", - "lv": "kulta vieta", - "nb": "kultsted", - "nl": "gebedshuis", - "pl": "miejsce kultu", - "pt": "lugar de prática religiosa", - "pt-br": "local de prática religiosa", - "ro": "lăcaș de cult", - "ru": "культовое сооружение", - "sl": "svetišče", - "sr": "богомоља", - "sv": "kultplats", - "th": "ศาสนสถาน", - "tr": "ibadethane", - "uk": "культова споруда", - "vi": "nơi thờ phụng", - "zh": "宗教崇拜場所", - "zh-cn": "宗教场所", - "zh-hk": "宗教場所" - }, - "planetarium": { - "ar": "قبة فلكية", - "bg": "планетариум", - "ca": "planetari", - "cs": "planetárium", - "el": "πλανητάριο", - "en": "planetarium", - "es": "planetario", - "et": "planetaarium", - "fi": "planetaario", - "fr": "planétarium", - "he": "פלנטריום", - "hi": "ताराघर", - "hr": "planetarij", - "hu": "planetárium", - "it": "planetario", - "ja": "プラネタリウム", - "ko": "천문관", - "lt": "planetariumas", - "pt": "planetário", - "ru": "планетарий", - "sk": "planetárium", - "sr": "планетаријум", - "th": "ท้องฟ้าจำลอง", - "tr": "planetaryum", - "uk": "планетарій", - "zh": "天象儀", - "zh-cn": "天象仪" - }, - "police": { - "ar": "مركز شرطة", - "ca": "comissaria", - "cs": "policejní stanice", - "da": "politistation", - "de": "polizeidienststelle", - "el": "αστυνομικό τμήμα", - "en": "police station", - "es": "comisaría", - "fi": "poliisiasema", - "fr": "commissariat de police", - "he": "תחנת משטרה", - "hi": "थाना", - "id": "kantor polisi", - "it": "stazione di polizia", - "ja": "警察署", - "ko": "경찰서", - "nb": "politistasjon", - "nl": "politiebureau", - "pl": "siedziba policji", - "pt": "esquadra", - "pt-br": "delegacia de polícia", - "ru": "полицейский участок", - "sk": "policajná stanica", - "sl": "policijska postaja", - "sv": "polisstation", - "tr": "polis karakolu", - "uk": "поліцейська дільниця", - "vi": "sở cảnh sát", - "zh": "警察局" - }, - "polling_station": { - "ar": "محل اقتراع", - "ca": "lloc de votació", - "cs": "volební místnost", - "da": "afstemningssted", - "de": "wahllokal", - "en": "polling place", - "es": "lugar de votación", - "et": "valimispunkt", - "fi": "äänestyspaikka", - "fr": "bureau de vote", - "hu": "szavazóhelyiség", - "id": "tempat pemungutan suara", - "it": "seggio elettorale", - "ja": "投票所", - "ko": "투표소", - "nb": "stemmelokale", - "nl": "stembureau", - "pl": "lokal wyborczy", - "ro": "secție de votare", - "ru": "избирательный участок", - "sk": "volebná miestnosť", - "sr": "гласачко место", - "sv": "vallokal", - "tr": "oy kullanma yeri", - "uk": "виборча дільниця", - "zh": "投票站" - }, - "post_box": { - "ar": "صندوق بريد", - "bg": "пощенска кутия", - "ca": "bústia", - "cs": "poštovní schránka", - "da": "postkasse", - "de": "postbriefkasten", - "en": "post box", - "es": "buzón", - "et": "postkast", - "fi": "kirjelaatikko", - "fr": "boîte aux lettres", - "he": "תיבת דואר", - "hu": "levélgyűjtő szekrény", - "id": "bis surat", - "it": "cassetta postale", - "ja": "郵便ポスト", - "ko": "우체통", - "lt": "pašto dėžutė", - "nb": "innleveringspostkasse", - "nl": "brievenbus", - "pl": "skrzynka pocztowa", - "pt": "caixa de correio", - "ro": "cutie poștală", - "ru": "почтовый ящик", - "sl": "poštni nabiralnik", - "sr": "poštansko sanduče", - "sv": "brevlåda", - "th": "ตู้ไปรษณีย์", - "uk": "поштова скринька", - "vi": "thùng thư", - "zh": "郵箱" - }, - "post_depot": { - "de": "briefzentrum", - "el": "κέντρο διαλογής", - "en": "sorting office", - "fr": "centre de tri postal", - "it": "centro di distribuzione", - "ja": "区分所", - "nl": "postsorteercentrum", - "zh": "郵件分類處" - }, - "post_office": { - "ar": "مكتب بريد", - "bg": "пощенска станция", - "ca": "oficina de correus", - "cs": "pošta", - "da": "postkontor", - "de": "postamt", - "el": "ταχυδρομείο", - "en": "post office", - "es": "oficina de correos", - "et": "postkontor", - "fi": "postitoimisto", - "fr": "bureau de poste", - "he": "בית דואר", - "hi": "डाकघर", - "hr": "poštanski ured", - "hu": "postahivatal", - "id": "kantor pos", - "it": "ufficio postale", - "ja": "郵便局", - "ko": "우체국", - "nb": "postkontor", - "nl": "postkantoor", - "pl": "placówka pocztowa", - "pt": "posto de correio", - "pt-br": "agência de correio", - "ru": "почтовое отделение", - "sl": "pošta", - "sv": "postkontor", - "th": "ที่ทำการไปรษณีย์", - "tr": "postane", - "uk": "поштове відділення", - "vi": "bưu điện", - "zh": "郵政局", - "zh-tw": "郵局" - }, - "printer": { - "ar": "طابعة", - "bg": "принтер", - "ca": "impressora", - "cs": "počítačová tiskárna", - "de": "drucker", - "el": "εκτυπωτής", - "en": "printer", - "es": "impresora", - "fi": "tulostin", - "fr": "imprimante", - "he": "מדפסת", - "hi": "प्रिण्टर", - "hr": "pisač", - "hu": "nyomtató", - "id": "pencetak", - "is": "prentari", - "it": "stampante", - "ja": "プリンター", - "ko": "프린터", - "lt": "spausdintuvas", - "lv": "printeris", - "nb": "skriver", - "pl": "drukarka", - "pt": "impressora", - "ro": "imprimantă", - "ru": "принтер", - "sk": "tlačiareň", - "sl": "tiskalnik", - "sr": "штампач", - "sv": "skrivare", - "th": "เครื่องพิมพ์", - "tr": "yazıcı", - "uk": "принтер", - "vi": "máy in", - "zh": "打印機", - "zh-cn": "打印机" - }, - "prison": { - "ar": "سجن", - "bg": "затвор", - "ca": "presó", - "cs": "věznice", - "da": "fængsel", - "de": "gefängnis", - "el": "φυλακή", - "en": "prison", - "es": "prisión", - "et": "vangla", - "fi": "vankila", - "he": "בית סוהר", - "hi": "कारागार", - "hr": "zatvor", - "hu": "börtön", - "id": "penjara", - "is": "fangelsi", - "it": "carcere", - "ja": "刑務所", - "ko": "교도소", - "lt": "kalėjimas", - "lv": "cietums", - "nb": "fengsel", - "nl": "gevangenis", - "pl": "zakład karny", - "pt": "prisão", - "ro": "închisoare", - "ru": "тюрьма", - "sk": "väznica", - "sl": "zapor", - "sr": "затвор", - "sv": "anstalt", - "th": "เรือนจำ", - "tr": "cezaevi", - "uk": "в'язниця", - "vi": "nhà tù", - "zh": "監獄", - "zh-cn": "监狱" - }, - "prison_camp": { - "en": "prison camp", - "es": "campo de prisioneros", - "et": "vangilaager", - "fi": "vankileiri", - "nb": "fangeleir", - "nl": "gevangenenkamp", - "sv": "fångläger" - }, - "pub": { - "ar": "حانة", - "bg": "кръчма", - "cs": "hospoda", - "el": "παμπ", - "en": "pub", - "et": "pubi", - "fi": "pubi", - "he": "פאב", - "hu": "söröző", - "is": "pöbb", - "ja": "パブ", - "ko": "퍼브", - "lt": "užeiga", - "nl": "britse pub", - "ro": "local", - "ru": "паб", - "sr": "паб", - "uk": "паб", - "zh": "酒館", - "zh-cn": "英格兰风格的酒吧" - }, - "public_bath": { - "ar": "حمامات عامة", - "ca": "banys públics", - "cs": "veřejné lázně", - "da": "offentligt bad", - "de": "badehaus", - "el": "δημόσιο λουτρό", - "en": "public bath", - "es": "baños públicos", - "fi": "yleinen sauna", - "fr": "bains publics", - "he": "בית מרחץ", - "hu": "közfürdő", - "id": "pemandian umum", - "is": "baðhús", - "it": "bagno pubblico", - "ja": "公衆浴場", - "ko": "목욕탕", - "lt": "garinė pirtis", - "lv": "publiska pirts", - "nb": "offentlig bad", - "nl": "badhuis", - "pt": "banho público", - "ru": "общественная баня", - "sr": "јавно купатило", - "sv": "badanläggning", - "tr": "halk banyosu", - "uk": "лазня", - "vi": "nhà tắm công cộng", - "zh": "公共浴場", - "zh-cn": "公共浴场" - }, - "public_bookcase": { - "ca": "biblioteca lliure", - "cs": "knihobudka", - "da": "bogbytteskab", - "de": "öffentlicher bücherschrank", - "en": "public bookcase", - "en-gb": "bookswap", - "es": "biblioteca libre", - "fr": "microbibliothèque", - "he": "ספרייה זעירה", - "ja": "みんなの本棚", - "lt": "vieša knygų lentyna", - "nl": "boekenruilkast", - "pt": "biblioteca ao ar livre", - "ru": "общественный книжный шкаф", - "uk": "громадська книжкова шафа" - }, - "public_building": { - "ar": "مبنى حكومي", - "bg": "обществена сграда", - "ca": "edifici públic", - "cs": "veřejná budova", - "de": "öffentliches gebäude", - "el": "δημόσιο κτίριο", - "en": "public building", - "es": "edificio público", - "fi": "julkinen rakennus", - "fr": "bâtiment public", - "he": "מבנה ציבורי", - "hu": "középület", - "id": "bangunan publik", - "it": "edificio pubblico", - "ja": "公共建築物", - "ko": "공공건물", - "lt": "viešas pastatas", - "lv": "sabiedriskā ēka", - "nb": "offentlig bygning", - "nl": "openbaar gebouw", - "pl": "budynek użyteczności publicznej", - "pt": "edifício público", - "ro": "clădire publică", - "ru": "общественное здание", - "sl": "javna stavba", - "sv": "offentlig byggnad", - "uk": "громадська будівля", - "zh": "公共建築" - }, - "ranger_station": { - "en": "ranger station", - "es": "puesto de guardabosques", - "fr": "station de rangers", - "ja": "レンジャーステーション", - "ru": "кордон", - "uk": "кордон (сторожа)" - }, - "recycling": { - "ar": "صندوق فرز نفايات", - "ca": "centre de reciclatge", - "de": "wertstoffcontainer", - "el": "κάδος ανακύκλωσης", - "en": "recycling bin", - "fr": "conteneur de recyclage", - "he": "סל מחזור", - "it": "bidone per la raccolta differenziata", - "ko": "재활용함", - "lt": "rūšiavimo konteineriai", - "sv": "återvinningskärl", - "tr": "çöp kutusu", - "zh": "分類回收桶" - }, - "rescue_station": { - "en": "rescue station" - }, - "restaurant": { - "ar": "مطعم", - "bg": "ресторант", - "cs": "restaurace", - "el": "εστιατόριο", - "en": "restaurant", - "es": "restaurante", - "et": "restoran", - "fi": "ravintola", - "he": "מסעדה", - "hi": "रेस्तरां", - "hr": "restoran", - "hu": "étterem", - "id": "rumah makan", - "is": "veitingahús", - "it": "ristorante", - "ja": "レストラン", - "ko": "음식점", - "lt": "restoranas", - "lv": "restorāns", - "pl": "restauracja", - "pt": "restaurante", - "ru": "ресторан", - "sl": "restavracija", - "sr": "ресторан", - "sv": "restaurang", - "th": "ภัตตาคาร", - "tr": "lokanta", - "uk": "ресторан", - "vi": "nhà hàng", - "zh": "餐馆", - "zh-hk": "餐館", - "zh-tw": "餐館" - }, - "sanitary_dump_station": { - "de": "sanitäre entsorgungsstationen", - "en": "sanitary dump station", - "fi": "septitankin tyhjennyspiste" - }, - "sauna": { - "ar": "ساونا", - "bg": "сауна", - "el": "σάουνα", - "en": "sauna", - "et": "saun", - "he": "סאונה", - "hu": "szauna", - "is": "sána", - "ja": "サウナ風呂", - "ko": "사우나", - "lv": "pirts", - "nb": "badstue", - "ro": "saună", - "ru": "сауна", - "sl": "savna", - "sr": "сауна", - "sv": "bastu", - "th": "ซาวน่า", - "uk": "сауна", - "vi": "phòng tắm hơi", - "zh": "桑拿" - }, - "school": { - "ar": "مدرسة", - "bg": "училище", - "ca": "escola", - "cs": "škola", - "da": "skole", - "de": "schule", - "el": "σχολείο", - "en": "school", - "es": "escuela", - "et": "kool", - "fi": "koulu", - "fr": "école", - "he": "בית ספר", - "hi": "विद्यालय", - "hr": "škola", - "hu": "iskola", - "id": "sekolah", - "is": "skóli", - "it": "scuola", - "ja": "学校", - "ko": "학교", - "lt": "mokykla", - "lv": "skola", - "nb": "skole", - "pl": "szkoła", - "pt": "escola", - "ro": "școală", - "ru": "школа", - "sk": "škola", - "sl": "šola", - "sr": "школа", - "sv": "skola", - "th": "โรงเรียน", - "tr": "okul", - "uk": "школа", - "vi": "trường học", - "zh": "学校", - "zh-hk": "學校", - "zh-tw": "學校" - }, - "science_park": { - "ar": "حديقة المرام في تذكرة العلماء الأعلام", - "ca": "parc científic", - "cs": "vědeckotechnický park", - "da": "forskerpark", - "de": "wissenschaftspark", - "el": "επιστημονικό πάρκο", - "en": "science park", - "es": "parque científico", - "et": "teaduspark", - "fi": "tiedepuisto", - "fr": "parc scientifique", - "he": "פארק מדע", - "id": "taman sains", - "it": "parco tecnologico", - "ja": "研究学園都市", - "ko": "사이언스 파크", - "lt": "mokslo ir technologijų parkas", - "nb": "forskningspark", - "nl": "wetenschapspark", - "pl": "park naukowy", - "pt": "parque de ciência e tecnologia", - "ro": "parc științific", - "ru": "научный парк", - "sk": "vedecký park", - "sr": "научно-технолошки парк", - "sv": "vetenskapspark", - "th": "อุทยานวิทยาศาสตร์", - "tr": "bilim parkı", - "uk": "науковий парк", - "vi": "công viên khoa học", - "zh": "科學園區" - }, - "seat": { - "ar": "مقعد", - "ca": "seient", - "da": "sæde", - "de": "sitzplatz", - "el": "κάθισμα", - "en": "seat", - "es": "asiento", - "fi": "istuin", - "fr": "siège", - "he": "מושב (רהיט)", - "hu": "ülőhely", - "id": "kursi", - "it": "sedile", - "ja": "席", - "ko": "좌석", - "lv": "sēdeklis", - "nb": "sete", - "nl": "zitplaats", - "pl": "siedzisko", - "pt": "assento", - "ru": "сидение", - "sl": "sedež", - "sr": "седиште", - "sv": "sits", - "vi": "chỗ ngồi", - "zh": "座位", - "zh-hk": "廂座" - }, - "shelter": { - "ar": "مأوى", - "bg": "заслон", - "ca": "refugi", - "cs": "přístřešek", - "de": "unterstand", - "en": "shelter", - "es": "refugio", - "fi": "suoja", - "fr": "abri", - "he": "מחסה", - "hr": "zaklon", - "it": "rifugio", - "ja": "シェルター", - "ko": "대피소", - "lv": "pajumte", - "nl": "schuilplaats", - "pl": "schron", - "pt": "abrigo", - "ru": "укрытие", - "sl": "zatočišče", - "sr": "склониште", - "sv": "skydd", - "tr": "sığınak", - "uk": "укриття", - "zh": "簡易居所", - "zh-cn": "避难所" - }, - "shower": { - "ar": "دش", - "bg": "душ", - "ca": "dutxa", - "cs": "sprcha", - "da": "brusebad", - "de": "dusche", - "el": "ντους", - "en": "shower", - "es": "ducha", - "et": "dušš", - "fi": "suihku", - "fr": "douche", - "he": "מקלחת", - "hu": "zuhany", - "is": "sturta", - "it": "doccia", - "ja": "シャワー", - "ko": "샤워", - "lt": "dušas", - "lv": "duša", - "nb": "dusj", - "nl": "douche", - "pl": "prysznic", - "pt": "duche", - "pt-br": "chuveiro", - "ro": "duș", - "ru": "душ", - "sl": "prha", - "sr": "туш", - "sv": "dusch", - "tr": "duş", - "uk": "душ", - "vi": "vòi hoa sen", - "zh": "花灑" - }, - "social_center": { - "bg": "социален център", - "ca": "centre social", - "de": "autonomes zentrum", - "en": "social center", - "en-gb": "social centre", - "es": "centro social", - "fi": "sosiaalikeskus", - "fr": "centre social autogéré", - "it": "centro sociale autogestito", - "ja": "ソーシャルセンター", - "nl": "verenigingscentrum", - "pt": "centro social", - "ru": "самоуправляемый общественный центр", - "sr": "социјални центар", - "sv": "invånarhus", - "vi": "trung tâm xã hội" - }, - "social_centre": { - "bg": "социален център", - "ca": "centre social", - "de": "autonomes zentrum", - "en": "social center", - "en-gb": "social centre", - "es": "centro social", - "fi": "sosiaalikeskus", - "fr": "centre social autogéré", - "it": "centro sociale autogestito", - "ja": "ソーシャルセンター", - "nl": "verenigingscentrum", - "pt": "centro social", - "ru": "самоуправляемый общественный центр", - "sr": "социјални центар", - "sv": "invånarhus", - "vi": "trung tâm xã hội" - }, - "social_facility": { - "ar": "التمريض المنزلي", - "ca": "residència de gent gran", - "cs": "dům s pečovatelskou službou", - "da": "plejehjem", - "de": "sozialeinrichtung", - "de-ch": "altersheim", - "el": "γηροκομείο", - "en": "social facility", - "en-ca": "retirement home", - "en-gb": "retirement home", - "es": "residencia geriátrica", - "et": "hooldekodu", - "fi": "hoitokoti", - "fr": "établissement social", - "he": "בית אבות", - "hi": "नर्सिंग होम", - "hr": "starački dom", - "hu": "idősek otthona", - "id": "rumah perawatan", - "is": "elliheimili", - "it": "casa di riposo", - "ja": "ナーシングホーム", - "ko": "양로원", - "nb": "sykehjem", - "nl": "verpleeghuis", - "pl": "dom pomocy społecznej", - "pt": "casa de retiro", - "ru": "дом престарелых", - "sl": "dom upokojencev", - "sv": "vårdhem", - "tr": "huzurevi", - "uk": "геріатричний пансіонат", - "vi": "viện dưỡng lão", - "zh": "介護老人福祉設施" - }, - "stock_exchange": { - "ar": "سوق الأوراق المالية", - "bg": "фондова борса", - "ca": "borsa de valors", - "cs": "burza cenných papírů", - "da": "børs for værdipapirhandel", - "de": "wertpapierbörse", - "el": "χρηματιστήριο", - "en": "stock exchange", - "es": "bolsa de valores", - "et": "aktsiabörs", - "fi": "pörssi", - "fr": "bourse des valeurs", - "he": "בורסה לניירות ערך", - "hi": "शेयर एक्सचेंज", - "hr": "burza vrijednosnih papira", - "hu": "értéktőzsde", - "id": "bursa efek", - "is": "kauphöll", - "it": "borsa valori", - "ja": "証券取引所", - "ko": "증권거래소", - "lt": "vertybinių popierių birža", - "lv": "fondu birža", - "nb": "aksjebørs", - "nl": "effectenbeurs", - "pl": "giełda papierów wartościowych", - "pt": "bolsa de valores", - "ro": "bursă de valori", - "ru": "фондовая биржа", - "sk": "burza cenných papierov", - "sr": "берза вредносних папира", - "sv": "börs", - "th": "ตลาดหลักทรัพย์", - "tr": "menkul kıymetler borsası", - "uk": "фондова біржа", - "vi": "sàn giao dịch chứng khoán", - "zh": "证券交易所", - "zh-hk": "證券交易所", - "zh-tw": "證券交易所" - }, - "stool": { - "ar": "كرسي", - "bg": "стол", - "ca": "cadira", - "cs": "židle", - "da": "stol", - "de": "stuhl", - "de-at": "sessel", - "el": "καρέκλα", - "en": "chair", - "es": "silla", - "et": "tool", - "fi": "tuoli", - "fr": "chaise", - "he": "כיסא", - "hi": "कुर्सी", - "hr": "stolica", - "hu": "szék", - "id": "kursi", - "is": "stóll", - "it": "sedia", - "ja": "椅子", - "ko": "의자", - "lt": "kėdė", - "lv": "krēsls", - "nb": "stol", - "nl": "stoel", - "pl": "krzesło", - "pt": "cadeira", - "ro": "scaun", - "ru": "стул", - "sk": "stolička", - "sl": "stol", - "sr": "столица", - "sv": "stol", - "th": "เก้าอี้", - "tr": "sandalye", - "uk": "стілець", - "vi": "ghế", - "zh": "椅" - }, - "stripclub": { - "ar": "نوادي التعري", - "ca": "club de striptease", - "da": "stripklub", - "de": "stripclub", - "en": "strip club", - "es": "club de striptease", - "fr": "club de striptease", - "he": "מועדון חשפנות", - "id": "klub tari telanjang", - "ja": "ストリップクラブ", - "nl": "stripclub", - "pt": "clube de strip", - "ru": "стриптиз клуб", - "sr": "стриптиз клуб", - "tr": "striptiz kulübü", - "uk": "стриптиз-клуб", - "vi": "câu lạc bộ thoát y", - "zh": "脫衣舞俱樂部" - }, - "stroller_parking": { - "de": "kinderwagenparkplatz", - "en": "stroller parking" - }, - "student_accommodation": { - "ca": "allotjament estudiantil", - "cs": "studentská ubytovna", - "en": "student housing", - "fi": "opiskelija-asunto", - "fr": "dortoir étudiant", - "it": "residenza universitaria", - "nb": "studentbolig", - "nl": "studentenhuisvesting", - "sr": "студентски смештај", - "sv": "studentbostad" - }, - "studio": { - "ca": "instal·lació d'estudi de mitjà de comunicació", - "cs": "filmové či televizní studio", - "da": "film- eller tv-studie", - "de": "film- oder fernsehstudio", - "el": "κινηματογραφικό ή τηλεοπτικό στούντιο", - "en": "media studio facility", - "fr": "studio", - "nl": "film- of televisiestudio", - "ru": "кино- или телестудия", - "sl": "stavba medijskega podjetja" - }, - "swingerclub": { - "cs": "swingers klub", - "de": "swingerclub", - "en": "sex club", - "es": "club de sexo", - "fr": "club échangiste", - "he": "מועדון מין", - "ja": "セックス・クラブ", - "nl": "parenclub", - "sv": "porrklubb", - "tr": "seks kulübü" - }, - "table": { - "ar": "منضدة", - "bg": "маса", - "ca": "taula", - "cs": "stůl", - "da": "bord", - "de": "tisch", - "el": "τραπέζι", - "en": "table", - "en-ca": "table (furniture)", - "es": "mesa", - "et": "laud", - "fi": "pöytä", - "he": "שולחן", - "hr": "stol", - "hu": "asztal", - "id": "meja", - "is": "borð", - "it": "tavolo", - "ja": "テーブル", - "ko": "탁자", - "lt": "stalas", - "lv": "galds", - "nb": "bord", - "nl": "tafel", - "pl": "stół", - "pt": "mesa", - "ro": "masă", - "ru": "стол", - "sk": "stolový nábytok", - "sl": "miza", - "sr": "сто", - "sv": "bord", - "th": "โต๊ะ", - "tr": "masa", - "uk": "стіл", - "vi": "bàn", - "zh": "桌子" - }, - "taxi": { - "ca": "estació de taxis", - "cs": "stanoviště taxislužby", - "de": "taxistand", - "en": "taxicab stand", - "en-gb": "taxi rank", - "fr": "station de taxis", - "hu": "taxiállomás", - "ja": "タクシースタンド", - "ko": "택시 승차장", - "nb": "drosjeholdeplass", - "nl": "taxistandplaats", - "pl": "postój taksówek", - "pt-br": "ponto de táxi", - "ru": "очередь такси", - "tr": "taksi durağı", - "zh": "的士站" - }, - "telephone": { - "ar": "هاتف", - "bg": "телефон", - "ca": "telèfon públic", - "cs": "telefon", - "da": "mønttelefon", - "de": "münzfernsprecher", - "el": "τηλέφωνο", - "en": "payphone", - "es": "teléfono público", - "et": "taksofon", - "fi": "yleisöpuhelin", - "fr": "téléphone public", - "he": "טלפון ציבורי", - "hi": "दूरभाष", - "hr": "telefon", - "hu": "nyilvános telefon", - "id": "telepon umum", - "is": "sími", - "it": "telefono pubblico", - "ja": "公衆電話", - "ko": "공중전화", - "lt": "telefonas", - "lv": "telefons", - "nb": "mynttelefon", - "nl": "betaalde telefoon", - "pl": "automat telefoniczny", - "pt": "telefone público", - "pt-br": "telefone", - "ro": "telefon", - "ru": "таксофон", - "sk": "telefón", - "sl": "telefon", - "sr": "телефон", - "sv": "mynttelefon", - "th": "เครื่องโทรศัพท์", - "tr": "ankesörlü telefon", - "uk": "таксофон", - "vi": "điện thoại thẻ", - "zh": "公共電話", - "zh-cn": "电话", - "zh-tw": "電話" - }, - "theatre": { - "ar": "مسرح", - "bg": "театър", - "ca": "teatre", - "cs": "budova divadla", - "da": "teater", - "de": "theatergebäude", - "de-ch": "theater", - "el": "θέατρο", - "en": "theatre", - "es": "teatro", - "et": "teatrihoone", - "fi": "teatteri", - "fr": "théâtre", - "he": "אולם תיאטרון", - "hr": "kazalište", - "hu": "színházépület", - "id": "teater", - "is": "leikhús", - "it": "teatro", - "ja": "劇場", - "ko": "극장", - "lt": "teatras", - "lv": "teātris", - "nb": "teater", - "nl": "theatergebouw", - "pl": "teatr", - "pt": "teatro", - "ro": "teatru", - "ru": "здание театра", - "sk": "divadlo (budova)", - "sl": "gledališče", - "sr": "позориште", - "sv": "teaterhus", - "th": "โรงละคร", - "tr": "tiyatro", - "uk": "театр", - "vi": "nhà hát", - "zh": "劇場", - "zh-cn": "剧场" - }, - "ticket_validator": { - "ca": "validadora", - "cs": "označovač jízdenek", - "de": "entwerter", - "en": "ticket validator", - "es": "validadora", - "fr": "validation des billets", - "hu": "jegykezelés", - "it": "obliteratrice", - "lt": "komposteris", - "nl": "stempelautomaat", - "pl": "kasownik (urządzenie)", - "ru": "компостер", - "uk": "компостер" - }, - "toilets": { - "ar": "دورة مياه عامة", - "ca": "serveis", - "cs": "veřejné toalety", - "de": "bedürfnisanstalt", - "el": "δημόσια αποχωρητήρια", - "en": "public toilet", - "es": "baño público", - "et": "avalik tualett", - "fi": "julkinen käymälä", - "fr": "toilettes publiques", - "he": "שירותים ציבוריים", - "hu": "nyilvános wc", - "id": "toilet umum", - "it": "bagno pubblico", - "ja": "公衆便所", - "ko": "공중화장실", - "nl": "openbaar toilet", - "pl": "szalet", - "pt": "casa de banho pública", - "pt-br": "banheiro público", - "ro": "toaleta publica", - "ru": "общественный туалет", - "sv": "offentlig toalett", - "th": "ห้องน้ำสาธารณะ", - "tr": "umumi tuvalet", - "uk": "санітарний вузол", - "vi": "nhà vệ sinh công cộng", - "zh": "公共廁所" - }, - "townhall": { - "ar": "مبنى بلدية", - "ca": "seu del govern local", - "cs": "obecní dům", - "da": "rådhus", - "de": "rathaus", - "el": "δημαρχείο", - "en": "town hall", - "es": "casa consistorial", - "et": "vallamaja", - "fi": "kunnantalo", - "fr": "hôtel de ville", - "he": "בניין ממשל מקומי", - "hu": "városháza", - "id": "balai kota", - "it": "palazzo comunale", - "ja": "役所", - "ko": "지방 관청", - "lv": "pilsētas dome", - "nb": "kommunehus", - "nl": "gemeentehuis", - "pl": "ratusz", - "pt": "câmara municipal", - "pt-br": "sede de prefeitura", - "ro": "primărie", - "ru": "дом общины", - "sk": "obecný dom", - "sl": "mestna hiša", - "sr": "градска кућа", - "sv": "kommunhus", - "tr": "belediye binası", - "uk": "ратуша", - "vi": "tòa thị chính", - "zh": "地方政府大樓" - }, - "toy_library": { - "ca": "ludoteca", - "cs": "lekotéka", - "da": "legetek", - "de": "ludothek", - "en": "toy library", - "es": "ludoteca", - "fr": "ludothèque", - "hr": "igroteka", - "it": "ludoteca", - "nl": "speel-o-theek", - "pl": "ludoteka", - "pt": "brinquedoteca", - "zh": "兒童玩具圖書館" - }, - "trolley_bay": { - "en": "shopping cart shelter", - "fr": "abri à chariots de supermarché" - }, - "university": { - "ar": "جامعة", - "bg": "университет", - "ca": "col·legi constituent", - "cs": "univerzita", - "da": "universitet", - "de": "college", - "de-ch": "universität", - "el": "συστατικό κολέγιο", - "en": "constituent college", - "en-ca": "university", - "es": "universidad", - "et": "ülikool", - "fi": "yliopisto", - "fr": "collège constituant", - "he": "אוניברסיטה", - "hi": "विश्वविद्यालय", - "hr": "sveučilište", - "hu": "egyetem", - "id": "universitas", - "is": "háskóli", - "it": "università", - "ja": "大学", - "ko": "대학", - "lt": "universitetas", - "lv": "universitāte", - "nb": "universitet", - "nl": "universiteit", - "pl": "uniwersytet", - "pt": "universidade", - "ro": "universitate", - "ru": "университет", - "sk": "univerzita", - "sl": "univerza", - "sr": "универзитет", - "sv": "universitet", - "th": "มหาวิทยาลัย", - "tr": "kolej oluşumu", - "uk": "університет", - "vi": "viện đại học", - "zh": "大學", - "zh-cn": "大学" - }, - "vehicle_inspection": { - "ar": "الفحص الفني للمركبة", - "ca": "inspecció tècnica de vehicles", - "cs": "technická prohlídka silničního vozidla", - "da": "bilsyn", - "de": "fahrzeuguntersuchung", - "el": "έλεγχος οχημάτων", - "en": "vehicle inspection", - "es": "inspección técnica de vehículos", - "fi": "katsastus", - "fr": "contrôle technique des véhicules automobiles", - "he": "מבחן רישוי שנתי לרכב", - "id": "pengujian kendaraan bermotor", - "it": "revisione", - "ja": "自動車検査", - "nb": "periodisk kjøretøykontroll", - "nl": "autokeuring", - "pl": "badanie zdatności do ruchu drogowego", - "pt": "inspeção veicular", - "ru": "государственный технический осмотр транспортных средств", - "sl": "tehnični pregled vozila", - "sv": "besiktning", - "tr": "araç muayenesi", - "uk": "обов'язковий технічний контроль транспортних засобів", - "zh": "車輛檢驗", - "zh-cn": "车辆年审" - }, - "vending_machine": { - "ar": "ماكينة البيع الذاتي", - "bg": "автомат за стоки", - "ca": "màquina expenedora", - "cs": "prodejní automat", - "da": "møntautomat", - "de": "selbstbedienungsautomat", - "en": "vending machine", - "es": "máquina expendedora", - "et": "müügiautomaat", - "fi": "myyntiautomaatti", - "fr": "distributeur automatique", - "he": "אוטומט מכירות", - "hi": "बिक्री मशीन", - "id": "mesin jual otomatis", - "it": "distributore automatico", - "ja": "自動販売機", - "ko": "자동 판매기", - "lt": "vendingas", - "nb": "myntautomat", - "nl": "verkoopautomaat", - "pl": "automat sprzedający", - "pt": "máquina de venda automática", - "ro": "automat de vânzare", - "ru": "торговый автомат", - "sr": "вендинг машина", - "sv": "varuautomat", - "th": "เครื่องจำหน่ายสินค้าอัตโนมัติ", - "tr": "satış makinesi", - "uk": "торговельний автомат", - "vi": "máy bán hàng", - "zh": "自動販賣機", - "zh-cn": "自动售货机", - "zh-hk": "自動售賣機" - }, - "veterinary": { - "ar": "طبيب بيطري", - "bg": "ветеринар", - "ca": "veterinari", - "cs": "veterinární lékař", - "da": "dyrlæge", - "de": "tierarzt", - "el": "κτηνίατρος", - "en": "veterinarian", - "en-ca": "veterinary physician", - "es": "veterinario", - "et": "loomaarst", - "fi": "eläinlääkäri", - "fr": "vétérinaire", - "he": "וטרינר", - "hr": "veterinar", - "hu": "állatorvos", - "id": "dokter hewan", - "is": "dýralæknir", - "it": "veterinario", - "ja": "獣医師", - "ko": "수의사", - "lt": "veterinaras", - "lv": "veterinārārsts", - "nb": "veterinær", - "nl": "dierenarts", - "pl": "weterynarz", - "pt": "veterinário", - "ro": "medic veterinar", - "ru": "ветеринар", - "sk": "veterinár", - "sl": "veterinar", - "sr": "ветеринар", - "sv": "veterinär", - "th": "สัตวแพทย์", - "tr": "veteriner hekim", - "uk": "лікар ветеринарної медицини", - "vi": "bác sĩ thú y", - "zh": "兽医", - "zh-hk": "獸醫", - "zh-tw": "獸醫" - }, - "waste_basket": { - "ca": "paperera", - "cs": "odpadkový koš", - "de": "papierkorb", - "en": "waste basket", - "es": "papelera", - "fi": "roska-astia", - "fr": "corbeille à papier", - "nl": "prullenbak", - "pt-br": "lata de lixo", - "ru": "мусорная корзина", - "sv": "papperskorg" - }, - "waste_disposal": { - "ar": "حاوية نفايات", - "bg": "кофа за боклук", - "ca": "cubell de la brossa", - "cs": "nádoba na odpad", - "da": "affaldscontainer", - "de": "mülleimer", - "de-ch": "abfalleimer", - "el": "κάδος απορριμμάτων", - "en": "waste container", - "es": "cubo de basura", - "et": "prügikast", - "fi": "roska-astia", - "fr": "poubelle", - "he": "פח אשפה", - "hi": "कचरा पात्र", - "hu": "kuka", - "id": "tempat sampah", - "is": "ruslatunna", - "it": "contenitore per rifiuti", - "ja": "ごみ箱", - "ko": "쓰레기통", - "nb": "søppelkasse", - "nl": "vuilnisbak", - "pl": "kubeł na śmieci", - "pt": "contentor de resíduos", - "ro": "coș de gunoi", - "ru": "контейнер для мусора", - "sk": "smetník", - "sl": "smetnjak", - "sr": "посуда за смеће", - "sv": "soptunna", - "tr": "çöp konteyneri", - "uk": "контейнер для сміття", - "zh": "垃圾桶" - }, - "waste_transfer_station": { - "de": "müllumladestation", - "en": "waste transfer station", - "nl": "afvallaadstation" - }, - "water_point": { - "en": "water point", - "id": "isi ulang air" - }, - "watering_place": { - "ar": "حوض التروية", - "bg": "поилка", - "ca": "abeurador", - "de": "tränke", - "en": "stock tank", - "en-ca": "abreuvoir", - "en-gb": "abreuvoir", - "es": "abrevadero", - "fi": "seimi", - "fr": "abreuvoir", - "he": "שוקת", - "hu": "itatóvályú", - "it": "abbeveratoio", - "ja": "アブルボア", - "nl": "drinkbak", - "pl": "poidło", - "ro": "jgheab", - "ru": "поильник", - "sk": "abreuvoir", - "uk": "напувалка" - }, - "weighbridge": { - "ar": "ميزان بسكول", - "da": "brovægt", - "de": "brückenwaage", - "el": "γεφυροπλάστιγγα", - "en": "weighbridge", - "es": "báscula puente", - "hr": "mosna vaga", - "id": "jembatan timbang", - "it": "pesa pubblica", - "ja": "台貫", - "nl": "weegbrug", - "pl": "waga samochodowa", - "ro": "cântar auto", - "ru": "автомобильные весы", - "uk": "автомобільні ваги", - "zh": "地磅" - } - }, - "animal_shelter": { - "": { - "ar": "مأوى حيوانات", - "ca": "santuari d'animals", - "de": "gnadenhof", - "en": "pet adoption", - "es": "adopción en animales", - "fr": "sanctuaire pour animaux", - "he": "מקלט לבעלי חיים", - "ja": "ペットの譲渡", - "lv": "dzīvnieku saudzētava", - "nb": "kjæledyradopsjon", - "pl": "sanktuarium dla zwierząt", - "pt": "adoção de animais", - "ru": "святилище животных", - "th": "เขตอภัยทาน", - "uk": "адопція тварин", - "vi": "nhận nuôi thú cưng", - "zh": "寵物領養" - } - }, - "animated": { - "trivision_blades": { - "en": "trivision", - "ru": "призматрон", - "uk": "призматрон" - } - }, - "archaeological_site": { - "megalith": { - "ar": "جندل", - "bg": "мегалит", - "ca": "megàlit", - "cs": "megalit", - "da": "megalit", - "el": "μεγάλιθος", - "en": "megalith", - "es": "megalito", - "et": "megaliit", - "fi": "megaliitti", - "fr": "mégalithe", - "he": "מגלית", - "hi": "महापाषाण", - "hr": "megalit", - "id": "megalit", - "it": "megalito", - "ja": "巨石記念物", - "ko": "거석기념물", - "lt": "megalitas", - "nb": "megalitt", - "nl": "megaliet", - "pl": "megalit", - "pt": "megalíto", - "ro": "megalit", - "ru": "мегалит", - "sk": "megalit", - "sl": "megalit", - "sr": "мегалит", - "sv": "megalit", - "tr": "megalit", - "uk": "мегаліти", - "vi": "cự thạch", - "zh": "巨石文化" - }, - "minilith": { - "en": "minilith", - "pt": "minilito" - }, - "rock_shelter": { - "ar": "مأوى صخري", - "ca": "abric rocós", - "cs": "skalní přístřešek", - "de": "abri", - "en": "rock shelter", - "es": "abrigo rocoso", - "fr": "abri sous roche", - "he": "מחסה-סלע", - "hi": "शैलाश्रय", - "ja": "岩陰遺跡", - "nb": "heller", - "nl": "abri", - "pl": "koleba skalna", - "sk": "abri", - "sr": "окапина", - "uk": "колиба", - "zh": "岩棚" - } - }, - "artwork": { - "": { - "ca": "escultura de bronze", - "da": "bronzeskulptur", - "de": "bronzeplastik", - "en": "bronze sculpture", - "es": "escultura en bronce", - "fi": "pronssityö", - "fr": "sculpture en bronze", - "hi": "कांस्य कला", - "it": "scultura bronzea", - "ja": "銅像", - "ko": "동상 (형상)", - "nl": "bronssculptuur", - "pl": "rzeźba w brązie", - "pt": "bronze (escultura)", - "ru": "бронзовая скульптура", - "sr": "бронзана скулптура", - "sv": "bronsarbete", - "tr": "tunç heykel", - "zh": "青銅雕塑" - } - }, - "artwork_type": { - "architecture": { - "ar": "عمارة", - "bg": "архитектура", - "ca": "arquitectura", - "cs": "architektura", - "da": "arkitektur", - "de": "architektur", - "el": "αρχιτεκτονική", - "en": "architecture", - "es": "arquitectura", - "et": "arhitektuur", - "fi": "arkkitehtuuri", - "he": "אדריכלות", - "hi": "वास्तुशास्त्र", - "hr": "arhitektura", - "hu": "építészet", - "id": "arsitektur", - "is": "byggingarlist", - "it": "architettura", - "ja": "建築", - "ko": "건축", - "lt": "architektūra", - "lv": "arhitektūra", - "nb": "arkitektur", - "nl": "architectuur", - "pl": "architektura", - "pt": "arquitetura", - "ro": "arhitectură", - "ru": "архитектура", - "sk": "architektúra", - "sl": "arhitektura", - "sr": "архитектура", - "sv": "arkitektur", - "th": "สถาปัตยกรรม", - "tr": "mimarlık", - "uk": "архітектура", - "vi": "kiến trúc", - "zh": "建筑学", - "zh-hk": "建築" - }, - "azulejo": { - "ar": "بلاط ازوليجو", - "ca": "rajola de valència", - "el": "αζουλέζου", - "en": "azulejo", - "he": "אזולז'ו", - "ja": "アズレージョ", - "ko": "아줄레주", - "lt": "azulechas", - "ru": "азулежу", - "sv": "azulejos", - "uk": "азулєжу", - "zh": "瓷磚畫" - }, - "bust": { - "ar": "تمثال نصفي", - "bg": "бюст (паметник)", - "cs": "busta", - "da": "buste", - "de": "büste", - "el": "προτομή", - "en": "bust", - "es": "busto", - "et": "büst", - "fi": "rintakuva", - "fr": "buste", - "he": "פרוטומה", - "hr": "poprsje", - "hu": "mellszobor", - "id": "patung dada", - "is": "brjóstmynd", - "it": "busto", - "ja": "胸像", - "ko": "흉상", - "nb": "byste", - "nl": "buste", - "pl": "popiersie", - "pt": "busto", - "ru": "бюст", - "sk": "busta", - "sl": "doprsje", - "sr": "статуа", - "sv": "byst", - "tr": "büst", - "uk": "погруддя", - "vi": "tượng bán thân", - "zh": "半身像" - }, - "graffiti": { - "ar": "جرافيتي", - "bg": "графити", - "ca": "grafit", - "el": "γκράφιτι", - "en": "graffiti", - "es": "grafiti", - "et": "grafiti", - "he": "גרפיטי", - "hi": "दीवारकला", - "hr": "grafiti", - "id": "grafiti", - "it": "graffitismo", - "ja": "落書き", - "ko": "낙서", - "lv": "grafiti", - "pt": "grafito", - "pt-br": "grafite", - "ru": "граффити", - "sl": "grafit", - "sr": "графити", - "th": "รอยขูดขีดเขียน", - "uk": "графіті", - "vi": "tranh phun sơn", - "zh": "塗鴉", - "zh-cn": "涂鸦" - }, - "installation": { - "ar": "تنصيبية", - "bg": "инсталационно изкуство", - "ca": "instal·lació artística", - "cs": "instalační umění", - "da": "kunstinstallation", - "de": "installation", - "en": "installation artwork", - "es": "instalación artística", - "et": "installatsioon", - "fi": "installaatio", - "fr": "installation", - "he": "מיצב", - "hr": "umjetnička instalacija", - "hu": "installáció", - "id": "seni instalasi", - "it": "installazione", - "ja": "インスタレーション", - "ko": "설치미술", - "nb": "installasjon", - "nl": "installatie", - "pl": "instalacja", - "pt": "instalação", - "ro": "instalație", - "ru": "инсталляция", - "sl": "instalacija", - "sr": "уметничка инсталација", - "sv": "installation", - "th": "ศิลปะจัดวาง", - "tr": "yerleştirme sanatı", - "uk": "інсталяція", - "vi": "tác phẩm sắp đặt", - "zh": "裝置藝術", - "zh-cn": "装置艺术" - }, - "landart": { - "ar": "فن الأرض", - "bg": "лендарт", - "ca": "art natura", - "en": "land art", - "et": "maakunst", - "fi": "maataide", - "he": "אמנות אדמה", - "ja": "ランド・アート", - "ko": "대지 예술", - "lt": "žemės menas", - "nb": "stedskunst", - "pl": "sztuka ziemi", - "ru": "ленд-арт", - "sr": "ленд-арт", - "sv": "jordkonst", - "th": "ภูมิศิลป์", - "tr": "arazi sanatı", - "uk": "лендарт", - "vi": "nghệ thuật trái đất", - "zh": "大地艺术", - "zh-hk": "大地藝術", - "zh-tw": "大地藝術" - }, - "mural": { - "ar": "لوحة جدارية", - "cs": "nástěnná malba", - "da": "gavlmaleri", - "de": "wandmalerei", - "el": "τοιχογραφία", - "en": "mural", - "et": "seinamaal", - "fi": "seinämaalaus", - "fr": "peinture murale", - "he": "ציור קיר", - "hi": "भित्तिचित्र कला", - "hr": "zidno slikarstvo", - "hu": "murális alkotás", - "is": "veggmynd", - "it": "murale", - "ja": "壁画", - "ko": "벽화", - "lv": "freska", - "nb": "veggmaleri", - "nl": "muurschildering", - "ro": "pictură murală", - "ru": "монументальная живопись", - "sk": "nástenná maľba", - "sl": "stensko slikarstvo", - "sr": "мурал", - "sv": "muralmålning", - "th": "จิตรกรรมฝาผนัง", - "tr": "duvar resmi", - "uk": "стінопис", - "vi": "tranh tường", - "zh": "壁畫", - "zh-cn": "壁画" - }, - "painting": { - "ar": "لوحة فنية", - "bg": "картина", - "ca": "pintura", - "cs": "malba", - "da": "maleri", - "de": "gemälde", - "el": "έργο ζωγραφικής", - "en": "painting", - "es": "pintura", - "et": "maal", - "fi": "maalaus", - "fr": "peinture", - "he": "ציור", - "hr": "slika", - "hu": "festmény", - "id": "lukisan", - "it": "dipinto", - "ja": "絵画作品", - "ko": "회화", - "lt": "paveikslas", - "lv": "glezna", - "nb": "maleri", - "nl": "schilderij", - "pl": "obraz", - "pt": "pintura", - "ro": "pictură", - "ru": "картина", - "sk": "maľba", - "sl": "slika", - "sr": "слика", - "sv": "målning", - "th": "จิตรกรรม", - "tr": "tablo", - "uk": "картина", - "vi": "bức tranh", - "zh": "畫作", - "zh-cn": "画作" - }, - "relief": { - "ar": "نقش بارز", - "bg": "релеф", - "ca": "relleu", - "cs": "reliéf", - "da": "relief", - "de": "relief", - "el": "ανάγλυφη τεχνική", - "en": "relief sculpture", - "en-gb": "relief", - "es": "relieve", - "et": "reljeef", - "fi": "kohokuva", - "fr": "relief", - "he": "תבליט", - "hi": "उच्चावच", - "hr": "reljef", - "hu": "dombormű", - "id": "relief", - "it": "rilievo", - "ja": "レリーフ", - "ko": "부조", - "lt": "reljefas", - "lv": "bareljefs", - "nb": "relieff", - "nl": "reliëf", - "pl": "relief", - "pt": "baixo-relevo", - "pt-br": "relevo", - "ro": "relief", - "ru": "рельеф", - "sk": "reliéf", - "sl": "reliefna plastika", - "sr": "вајарски рељеф", - "sv": "relief", - "tr": "kabartma", - "uk": "барельєф", - "vi": "phù điêu", - "zh": "浮雕" - }, - "sculpture": { - "ar": "منحوتة", - "bg": "скулптура", - "ca": "obra escultòrica", - "cs": "skulptura", - "da": "skulptur", - "de": "skulptur", - "el": "γλυπτό", - "en": "sculpture", - "es": "escultura", - "et": "skulptuur", - "fi": "veistos", - "he": "פסל", - "hr": "skulptura", - "hu": "szobor", - "id": "patung", - "it": "scultura", - "ja": "彫刻", - "ko": "조각품", - "lt": "skulptūra", - "lv": "skulptūra", - "nb": "skulptur", - "nl": "sculptuur", - "pl": "rzeźba", - "pt": "escultura", - "ro": "sculptură", - "ru": "скульптура", - "sk": "socha", - "sl": "skulptura", - "sr": "скулптура", - "sv": "skulptur", - "th": "ประติมากรรม", - "tr": "heykel", - "uk": "скульптура", - "vi": "tác phẩm điêu khắc", - "zh": "雕塑" - }, - "statue": { - "ar": "تمثال", - "bg": "статуя", - "ca": "estàtua", - "cs": "socha", - "el": "άγαλμα", - "en": "statue", - "es": "estatua", - "et": "kuju", - "fi": "patsas", - "he": "פסל דמות", - "hi": "प्रतिमा", - "hr": "kip", - "hu": "figurális szobor", - "id": "patung", - "it": "statua", - "ja": "塑像", - "ko": "상", - "lt": "statula", - "lv": "statuja", - "nl": "standbeeld", - "pl": "posąg", - "pt": "estátua", - "ro": "statuie", - "ru": "статуя", - "sk": "socha", - "sl": "kip", - "sr": "скулптура", - "sv": "staty", - "th": "รูปปั้น", - "tr": "boy heykeli", - "uk": "статуя", - "vi": "tượng", - "zh": "塑像" - }, - "tilework": { - "ar": "بلاط", - "bg": "плочка", - "ca": "rajola", - "cs": "keramický obklad", - "da": "kakkel", - "de": "kachel", - "el": "κεραμικά πλακάκια", - "en": "tile", - "es": "baldosa", - "fi": "keraaminen laatta", - "fr": "carreau", - "he": "אריח", - "hi": "खपरैल और चौके", - "hr": "crijep", - "id": "ubin", - "is": "flís", - "it": "piastrella", - "ja": "タイル", - "ko": "타일", - "nb": "flis", - "nl": "tegel", - "pl": "fliza", - "pt": "ladrilho", - "ro": "faianță", - "ru": "кафель", - "sl": "ploščica", - "sr": "керамичка плочица", - "sv": "kakel", - "th": "กระเบื้อง", - "tr": "karo", - "uk": "кахель", - "vi": "tấm lát", - "zh": "瓷砖", - "zh-hk": "瓷磚", - "zh-tw": "瓷磚" - } - }, - "athletics": { - "discus_throw": { - "ar": "رمي القرص", - "bg": "хвърляне на диск", - "ca": "llançament de disc", - "cs": "hod diskem", - "da": "diskoskast", - "de": "diskuswurf", - "el": "δισκοβολία", - "en": "discus throw", - "es": "lanzamiento de disco", - "et": "kettaheide", - "fi": "kiekonheitto", - "fr": "lancer du disque", - "he": "זריקת דיסקוס", - "hi": "डिस्कस थ्रो", - "hr": "bacanje diska", - "hu": "diszkoszvetés", - "id": "lempar cakram", - "is": "kringlukast", - "it": "lancio del disco", - "ja": "円盤投", - "ko": "원반던지기", - "lt": "disko metimas", - "lv": "diska mešana", - "nb": "diskos", - "nl": "discuswerpen", - "pl": "rzut dyskiem", - "pt": "lançamento de disco", - "ro": "aruncarea discului", - "ru": "метание диска", - "sk": "hod diskom", - "sl": "met diska", - "sr": "бацање диска", - "sv": "diskus", - "tr": "disk atma", - "uk": "метання диска", - "vi": "ném đĩa", - "zh": "铁饼", - "zh-hk": "鐵餅", - "zh-tw": "鐵餅" - }, - "hammer_throw": { - "ar": "رمي المطرقة", - "bg": "хвърляне на чук", - "ca": "llançament de martell", - "cs": "hod kladivem", - "da": "hammerkast", - "de": "hammerwurf", - "el": "σφυροβολία", - "en": "hammer throw", - "es": "lanzamiento de martillo", - "et": "vasaraheide", - "fi": "moukarinheitto", - "fr": "lancer du marteau", - "he": "יידוי פטיש", - "hr": "bacanje kladiva", - "hu": "kalapácsvetés", - "id": "lempar martil", - "it": "lancio del martello", - "ja": "ハンマー投", - "ko": "해머던지기", - "lt": "kūjo metimas", - "lv": "vesera mešana", - "nb": "sleggekast", - "nl": "kogelslingeren", - "pl": "rzut młotem", - "pt": "lançamento de martelo", - "ro": "aruncarea ciocanului", - "ru": "метание молота", - "sk": "hod kladivom", - "sl": "met kladiva", - "sr": "бацање кладива", - "sv": "släggkastning", - "tr": "çekiç atma", - "uk": "метання молота", - "vi": "ném búa", - "zh": "鏈球", - "zh-cn": "链球" - }, - "high_jump": { - "ar": "وثب عالي", - "bg": "висок скок", - "ca": "salt d'alçada", - "cs": "skok do výšky", - "da": "højdespring", - "de": "hochsprung", - "el": "άλμα εις ύψος", - "en": "high jump", - "es": "salto de altura", - "et": "kõrgushüpe", - "fi": "korkeushyppy", - "fr": "saut en hauteur", - "he": "קפיצה לגובה", - "hr": "skok u vis", - "hu": "magasugrás", - "id": "lompat tinggi", - "is": "hástökk", - "it": "salto in alto", - "ja": "走高跳", - "ko": "높이뛰기", - "lt": "šuolis į aukštį", - "lv": "augstlēkšana", - "nb": "høydehopp", - "nl": "hoogspringen", - "pl": "skok wzwyż", - "pt": "salto em altura", - "ro": "săritura în înălțime", - "ru": "прыжок в высоту", - "sk": "skok do výšky", - "sl": "skok v višino", - "sr": "скок увис", - "sv": "höjdhopp", - "tr": "yüksek atlama", - "uk": "стрибки у висоту", - "vi": "nhảy cao", - "zh": "跳高" - }, - "javelin_throw": { - "ar": "رمي الرمح", - "bg": "хвърляне на копие", - "ca": "llançament de javelina", - "cs": "hod oštěpem", - "da": "spydkast", - "de": "speerwurf", - "el": "ακοντισμός", - "en": "javelin throw", - "es": "lanzamiento de jabalina", - "et": "odavise", - "fi": "keihäänheitto", - "fr": "lancer du javelot", - "he": "הטלת כידון", - "hi": "भाला फेंक", - "hr": "bacanje koplja", - "hu": "gerelyhajítás", - "id": "lempar lembing", - "is": "spjótkast", - "it": "lancio del giavellotto", - "ja": "やり投", - "ko": "창던지기", - "lt": "ieties metimas", - "lv": "šķēpa mešana", - "nb": "spydkast", - "nl": "speerwerpen", - "pl": "rzut oszczepem", - "pt": "lançamento de dardo", - "ro": "aruncarea suliței", - "ru": "метание копья", - "sk": "hod oštepom", - "sl": "met kopja", - "sr": "бацање копља", - "sv": "spjutkastning", - "th": "พุ่งแหลน", - "tr": "cirit atma", - "uk": "метання списа", - "vi": "ném lao", - "zh": "擲標槍", - "zh-cn": "掷标枪" - }, - "pole_vault": { - "ar": "قفز بالزانة", - "bg": "овчарски скок", - "ca": "salt de perxa", - "cs": "skok o tyči", - "da": "stangspring", - "de": "stabhochsprung", - "el": "άλμα επί κοντώ", - "en": "pole vault", - "es": "salto con pértiga", - "et": "teivashüpe", - "fi": "seiväshyppy", - "fr": "saut à la perche", - "he": "קפיצה במוט", - "hr": "skok s motkom", - "hu": "rúdugrás", - "id": "lompat galah", - "it": "salto con l'asta", - "ja": "棒高跳", - "ko": "장대높이뛰기", - "lt": "šuolis su kartimi", - "lv": "kārtslēkšana", - "nb": "stavsprang", - "nl": "polsstokhoogspringen", - "pl": "skok o tyczce", - "pt": "salto à vara", - "ro": "săritura cu prăjina", - "ru": "прыжок с шестом", - "sk": "skok o žrdi", - "sl": "skok s palico", - "sr": "скок мотком", - "sv": "stavhopp", - "th": "กระโดดค้ำถ่อ", - "tr": "sırıkla yüksek atlama", - "uk": "стрибки з жердиною", - "vi": "nhảy sào", - "zh": "撑竿跳高", - "zh-hk": "撐竿跳高", - "zh-tw": "撐竿跳高" - }, - "shot_put": { - "ar": "دفع الثقل", - "bg": "тласкане на гюле", - "ca": "llançament de pes", - "cs": "vrh koulí", - "da": "kuglestød", - "de": "kugelstoßen", - "de-ch": "kugelstossen", - "el": "σφαιροβολία", - "en": "shot put", - "es": "lanzamiento de peso", - "et": "kuulitõuge", - "fi": "kuulantyöntö", - "fr": "lancer du poids", - "he": "הדיפת כדור ברזל", - "hr": "bacanje kugle", - "hu": "súlylökés", - "id": "tolak peluru", - "is": "kúluvarp", - "it": "getto del peso", - "ja": "砲丸投", - "ko": "포환던지기", - "lt": "rutulio stūmimas", - "lv": "lodes grūšana", - "nb": "kulestøt", - "nl": "kogelstoten", - "pl": "pchnięcie kulą", - "pt": "arremesso de peso", - "ro": "aruncarea greutății", - "ru": "толкание ядра", - "sk": "vrh guľou", - "sl": "suvanje krogle", - "sr": "бацање кугле", - "sv": "kulstötning", - "tr": "gülle atma", - "uk": "штовхання ядра", - "vi": "đẩy tạ", - "zh": "铅球", - "zh-hk": "鉛球", - "zh-tw": "鉛球" - }, - "steeplechase": { - "ar": "3000 متر موانع", - "ca": "cursa d'obstacles", - "cs": "běh na 3000 metrů překážek", - "da": "forhindringsløb", - "de": "hindernislauf", - "el": "στιπλ", - "en": "steeplechase", - "es": "carreras con obstáculos", - "et": "3000 meetri takistusjooks", - "fi": "estejuoksu", - "fr": "steeple", - "he": "ריצת 3000 מטר מכשולים", - "it": "siepi", - "ja": "3000メートル障害", - "ko": "3000m 장애물경주", - "lt": "kliūtinis bėgimas", - "lv": "3000 metru šķēršļu skrējiens", - "nb": "hinderløp", - "pl": "bieg z przeszkodami", - "pt": "corridas com obstáculos", - "ro": "alergare cu obstacole", - "ru": "стипль-чез", - "sk": "beh na 3 000 metrov cez prekážky", - "sl": "tek na 3000 m z zaprekami", - "sr": "трка на 3.000 метара са препрекама", - "sv": "hinderlöpning", - "tr": "hendekli koşu", - "uk": "стипль-чез", - "zh": "3000米障碍赛", - "zh-hk": "3000米障礙賽", - "zh-tw": "3000米障礙賽" - }, - "triple_jump": { - "ar": "وثب ثلاثي", - "bg": "троен скок", - "ca": "triple salt", - "cs": "trojskok", - "da": "trespring", - "de": "dreisprung", - "el": "άλμα εις τριπλούν", - "en": "triple jump", - "es": "triple salto", - "et": "kolmikhüpe", - "fi": "kolmiloikka", - "fr": "triple saut", - "he": "קפיצה משולשת", - "hr": "troskok", - "hu": "hármasugrás", - "id": "lompat tiga kali", - "is": "þrístökk", - "it": "salto triplo", - "ja": "三段跳", - "ko": "세단뛰기", - "lt": "trišuolis", - "lv": "trīssoļlēkšana", - "nb": "tresteg", - "nl": "hink-stap-springen", - "pl": "trójskok", - "pt": "triplo salto", - "ro": "triplu salt", - "ru": "тройной прыжок", - "sk": "trojskok", - "sr": "троскок", - "sv": "tresteg", - "th": "เขย่งก้าวกระโดด", - "tr": "üç adım atlama", - "uk": "потрійний стрибок", - "vi": "nhảy xa ba bước", - "zh": "三级跳", - "zh-hk": "三級跳", - "zh-tw": "三級跳" - } - }, - "attraction": { - "animal": { - "ar": "أسر الحيوانات", - "ca": "zoocria", - "en": "captivity", - "es": "zoocría", - "et": "loomade vangistus", - "fr": "captivité", - "he": "בעלי חיים בשביה", - "hu": "fogság", - "it": "cattività", - "ja": "飼育環境下", - "nl": "gevangenschap", - "pl": "niewola", - "pt": "cativeiro", - "ru": "неволя", - "sr": "заточеништво", - "sv": "fångenskap", - "vi": "nuôi nhốt động vật", - "zh": "圈養" - }, - "dark_ride": { - "de": "themenfahrt", - "en": "dark ride", - "fi": "kummitusjuna", - "fr": "parcours scénique", - "he": "מתקן אפל", - "id": "wahana gelap", - "ja": "ダーク・ライド", - "nl": "darkride", - "pt": "trem-fantasma", - "ru": "тематические треки", - "sv": "spöktåg" - }, - "roller_coaster": { - "ar": "أفعوانية", - "ca": "muntanya russa", - "cs": "horská dráha", - "da": "rutsjebane", - "de": "achterbahn", - "en": "roller coaster", - "es": "montaña rusa", - "et": "ameerika mäed", - "fi": "vuoristorata", - "fr": "montagnes russes", - "he": "רכבת הרים", - "hr": "vlak smrti", - "hu": "hullámvasút", - "is": "rússíbani", - "it": "montagne russe", - "ja": "ローラーコースター", - "ko": "롤러코스터", - "nb": "berg-og-dal-bane", - "nl": "achtbaan", - "pl": "kolejka górska", - "pt": "montanha-russa", - "ru": "американские горки", - "sk": "horská dráha", - "sr": "ролеркостер", - "sv": "berg- och dalbana", - "th": "รถไฟเหาะตีลังกา", - "uk": "американські гірки", - "zh": "雲霄飛車", - "zh-cn": "过山车", - "zh-hk": "過山車" - }, - "summer_toboggan": { - "ca": "tobogan alpí", - "cs": "bobová dráha", - "de": "wannen-rodelbahn", - "en": "alpine slide", - "fr": "luge d'été", - "nl": "rodelbaan" - } - }, - "authentication": { - "": { - "ar": "إن إف سي", - "bg": "nfc", - "ca": "comunicació de camp proper", - "cs": "near field communication", - "da": "near field communication", - "de": "nahfeldkommunikation", - "el": "nfc", - "en": "near-field communication", - "en-ca": "near field communication", - "en-gb": "near field communication", - "es": "comunicación de campo cercano", - "et": "nfc", - "fi": "near field communication", - "fr": "communication en champ proche", - "he": "תקשורת טווח אפס", - "hi": "नियर फील्ड कम्युनिकेशन", - "hr": "komunikacija bliskog polja", - "hu": "near field communication", - "id": "near field communication", - "it": "near field communication", - "ja": "近距離無線通信", - "ko": "근거리 무선 통신", - "lv": "near field communication", - "nb": "nærfeltskommunikasjon", - "nl": "near field communication", - "pl": "near field communication", - "pt": "near field communication", - "ro": "near field communication", - "ru": "nfc", - "sk": "near field communication", - "sl": "near field communication", - "sr": "nfc", - "sv": "närfältskommunikation", - "th": "เนียร์ฟีลด์คอมมูนิเคชัน", - "tr": "nfc", - "uk": "near field communication", - "vi": "near field communication", - "zh": "近場通訊", - "zh-cn": "近场通信" - } - }, - "barn": { - "horreo": { - "ar": "هري أكواز", - "en": "corn crib", - "en-gb": "corncrib", - "es": "hórreo", - "fr": "crib à maïs", - "hu": "góré", - "nl": "maïsren", - "sr": "кош (грађевина)", - "uk": "кошниця" - } - }, - "barrier": { - "berm": { - "ca": "berma", - "cs": "berma", - "da": "berme", - "de": "berme", - "en": "berm", - "es": "berma", - "fr": "risberme", - "it": "berma", - "ja": "犬走り", - "pl": "berma", - "ru": "берма", - "sl": "berma", - "uk": "берма" - }, - "bollard": { - "cs": "dopravní majáček", - "da": "trafikpullert", - "de": "absperrpoller", - "en": "traffic bollard", - "es": "bolardo de tráfico", - "it": "dissuasore stradale", - "nl": "verkeerspaal" - }, - "border_control": { - "ar": "رقابة حدودية", - "ca": "control de fronteres", - "cs": "hraniční kontrola", - "da": "grænsekontrol", - "de": "grenzkontrolle", - "el": "έλεγχος συνόρων", - "en": "border control", - "es": "control de fronteras", - "fi": "rajavalvonta", - "fr": "contrôle frontalier", - "he": "ביקורת גבולות", - "hr": "granični nadzor", - "id": "kontrol perbatasan", - "it": "controlli di frontiera", - "ja": "出入国管理", - "ko": "출입국관리", - "nl": "grensbewaking", - "pl": "kontrola graniczna", - "pt": "controle de alfândega", - "ru": "пограничный контроль", - "sl": "mejna kontrola", - "sr": "гранична провера", - "sv": "gränsbevakning", - "tr": "sınır kontrolü", - "uk": "зона митного контролю", - "vi": "lực lượng biên phòng", - "zh": "邊境管制" - }, - "bump_gate": { - "de": "anstoßgatter", - "en": "bump gate" - }, - "bus_trap": { - "da": "bussluse", - "de": "busschleuse", - "en": "bus trap", - "ja": "バストラップ", - "nb": "bussluse", - "nl": "bussluis", - "sv": "spårviddshinder" - }, - "cable_barrier": { - "en": "cable barrier", - "nl": "kabelbarrière", - "ru": "тросовый барьер", - "sv": "vajerräcke" - }, - "cattle_grid": { - "ar": "مطب عائق الماشية", - "ca": "pas canadenc", - "da": "færist", - "de": "viehgitter", - "en": "cattle grid", - "es": "paso canadiense", - "fr": "barrière canadienne", - "nb": "ferist", - "nl": "veerooster", - "pt": "mata-burro", - "sv": "färist" - }, - "city_wall": { - "ar": "أسوار مدينة", - "ca": "muralla urbana", - "cs": "městské hradby", - "da": "bymur", - "de": "stadtmauer", - "el": "τείχη της πόλης", - "en": "city walls", - "en-gb": "city wall", - "es": "muralla urbana", - "et": "linnamüür", - "fi": "kaupunginmuuri", - "fr": "rempart de ville", - "he": "חומות עיר", - "hu": "városfal", - "it": "mura cittadine", - "ja": "市壁", - "nb": "bymur", - "nl": "stadsmuur", - "pl": "mury miejskie", - "pt": "muralhas da cidade", - "ru": "городская стена", - "sl": "mestni zidovi", - "sv": "ringmur", - "tr": "sur", - "uk": "стіна міста", - "zh": "城墙" - }, - "cycle_barrier": { - "de": "umlaufgitter", - "en": "pedestrian chicane", - "fr": "barrière à vélos", - "nl": "slingerhek" - }, - "fence": { - "ar": "سور", - "bg": "ограда", - "ca": "tanca", - "cs": "plot", - "da": "hegn", - "de": "zaun", - "el": "φράχτης", - "en": "fence", - "es": "valla", - "et": "tara", - "fi": "aita", - "fr": "clôture", - "he": "גדר", - "hi": "बाड़", - "hu": "kerítés (építmény)", - "id": "pagar", - "it": "recinto", - "ja": "柵", - "ko": "울타리", - "lt": "tvora", - "lv": "žogs", - "nb": "gjerde", - "nl": "hek", - "pl": "płot", - "pt": "cerca", - "ro": "gard", - "ru": "забор", - "sk": "oplotenie", - "sl": "ograja", - "sr": "ограда", - "sv": "stängsel", - "tr": "çit", - "uk": "огорожа", - "vi": "hàng dậu", - "zh": "圍欄" - }, - "full-height_turnstile": { - "en": "full-height turnstile" - }, - "gate": { - "ar": "باب", - "bg": "порта", - "ca": "porta", - "cs": "brána", - "da": "port", - "de": "tor", - "el": "πύλη", - "en": "gate", - "es": "puerta", - "et": "värav", - "fi": "portti", - "fr": "porte", - "he": "שער", - "hu": "kapu", - "id": "gerbang", - "it": "cancello", - "ja": "門", - "ko": "대문", - "lt": "vartai", - "nb": "port", - "nl": "poort", - "pl": "brama", - "pt": "portão", - "ro": "poartă", - "ru": "ворота", - "sk": "brána", - "sr": "капија", - "sv": "grind", - "tr": "kapı", - "uk": "ворота", - "vi": "cổng", - "zh": "門戶" - }, - "guard_rail": { - "ar": "حاجز مروري", - "bg": "мантинела", - "ca": "tanca de contenció", - "cs": "svodidlo", - "da": "autoværn", - "de": "schutzplanke", - "en": "traffic barrier", - "es": "barrera de contención", - "fr": "glissière de sécurité", - "he": "מעקה הפרדה", - "id": "pagar pengaman jalan", - "is": "vegrið", - "it": "barriera di sicurezza", - "ja": "ガードレール", - "nb": "autovern", - "nl": "geleiderail", - "pl": "bariera energochłonna", - "pt": "mureta", - "ru": "барьерное ограждение", - "sv": "vägräckesbalk", - "zh": "交通護欄" - }, - "haha": { - "en": "ha-ha", - "et": "ahaa", - "ja": "ハ・ハ", - "pl": "aha", - "ru": "аха", - "sl": "ha-ha ovira", - "sr": "ха-ха ров", - "uk": "аха", - "zh": "哈哈牆", - "zh-cn": "哈哈墙" - }, - "hedge": { - "ar": "سياج نباتي", - "bg": "жив плет", - "ca": "bardissa", - "cs": "živý plot", - "da": "hæk", - "de": "hecke", - "en": "hedge", - "es": "seto", - "et": "hekk", - "fi": "pensasaita", - "fr": "haie", - "he": "גדר חיה", - "hr": "živica", - "hu": "sövény", - "id": "tanaman pagar", - "is": "limgerði", - "it": "siepe", - "ja": "垣根", - "ko": "생울타리", - "lt": "gyvatvorė", - "nb": "hekk", - "nl": "heg", - "pl": "żywopłot", - "pt": "sebe", - "ro": "gard viu", - "ru": "живая изгородь", - "sk": "živý plot", - "sl": "živa meja", - "sr": "жива ограда", - "sv": "häck", - "th": "รั้วต้นไม้", - "tr": "siyeç", - "uk": "живопліт", - "zh": "樹籬" - }, - "height_restrictor": { - "en": "height barrier" - }, - "jersey_barrier": { - "ar": "حاجز نيوجيرسي", - "ca": "barrera jersey", - "da": "betongris", - "de": "jersey-barriere", - "en": "jersey barrier", - "es": "barrera new jersey", - "fi": "betoniporsas", - "fr": "mur jersey", - "he": "ג'רסי", - "hi": "जर्सी अवरोध", - "it": "barriera new jersey", - "ja": "ジャージー・バリア", - "nb": "betonggris", - "pt": "barreira new jersey", - "sv": "betongsugga", - "tr": "beton bariyer", - "uk": "бар'єр «джерсі»", - "zh": "紐澤西護欄", - "zh-cn": "新泽西护栏" - }, - "kerb": { - "ar": "الجُول", - "ca": "vorada", - "cs": "obrubník", - "da": "kantsten", - "de": "bordstein", - "en": "curb", - "en-gb": "kerb", - "es": "bordillo", - "fi": "reunakiveys", - "fr": "bordure", - "he": "אבן שפה", - "hi": "कोर", - "it": "cordolo", - "ja": "縁石", - "ko": "갓돌", - "lt": "bortelis", - "nb": "kantstein", - "nl": "trottoirband", - "pl": "krawężnik", - "pt": "meio-fio", - "ro": "bordură", - "ru": "бортовой камень", - "sv": "kantsten", - "uk": "бортовий камінь", - "vi": "lề đường", - "zh": "马路牙子" - }, - "kissing_gate": { - "de": "doppelflügliches tor", - "en": "kissing gate", - "ja": "キッシングゲート" - }, - "lift_gate": { - "bg": "бариера", - "cs": "železniční závory", - "de": "schranke", - "de-at": "schranken", - "de-ch": "barriere", - "en": "boom barrier", - "es": "barrera", - "he": "מחסום חנייה", - "hu": "sorompó", - "id": "palang pintu", - "it": "barriera automatica", - "ja": "遮断機", - "lt": "užtvaras", - "nb": "bom", - "nl": "slagboom", - "pl": "rogatka", - "ru": "шлагбаум", - "sk": "železničné závory", - "sr": "баријера", - "sv": "vägbom", - "tr": "kollu bariyer", - "uk": "шлагбаум", - "zh": "遮斷機" - }, - "no": { - "cs": "bezbariérové navrhování staveb", - "de": "barrierefreies bauen", - "en": "barrier-free", - "ja": "バリアフリー", - "ko": "배리어 프리", - "pt": "sem barreiras", - "sk": "bezbariérové navrhovanie stavieb", - "zh": "無障礙建築設計" - }, - "retaining_wall": { - "ar": "جدار استنادي", - "ca": "mur de contenció", - "cs": "opěrná zeď", - "da": "støttemur", - "de": "stützwand", - "el": "αναλημματικός τοίχος", - "en": "retaining wall", - "es": "muro de contención", - "et": "tugimüür", - "fi": "tukimuuri", - "fr": "mur de soutènement", - "he": "קיר תומך", - "hi": "धारक भित्ति", - "hu": "támfal", - "id": "dinding penahan tanah", - "it": "muro di sostegno", - "ja": "擁壁", - "ko": "옹벽", - "nb": "støttemur", - "nl": "keermuur", - "pl": "mur oporowy", - "pt": "muro de suporte", - "ro": "zid de sprijin", - "ru": "подпорная стена", - "sk": "oporný múr", - "sv": "stödmur", - "tr": "i̇stinat duvarı", - "uk": "підпорна стіна", - "vi": "tường chắn đất", - "zh": "護土牆" - }, - "sally_port": { - "ar": "منفذ هجوم", - "de": "sally-port", - "en": "sally port", - "ja": "サリーポート", - "nl": "sortie", - "zh": "暗道" - }, - "spikes": { - "de": "nagelsperre", - "en": "spike strip", - "fi": "piikkimatto", - "fr": "herse", - "he": "רצועת דוקרנים", - "ja": "スパイク・ストライプ", - "nb": "spikermatte", - "nl": "spijkermat", - "ru": "ежи", - "zh": "釘條" - }, - "step": { - "ca": "esglaó", - "cs": "schodišťový stupeň", - "de": "treppenstufe", - "en": "step", - "es": "escalón", - "et": "trepiaste", - "fr": "escalier", - "it": "scalino", - "ja": "段", - "nl": "trede", - "pl": "stopień", - "ru": "ступень", - "sv": "steg" - }, - "stile": { - "ar": "مَرقى", - "da": "stente", - "de": "zauntritt", - "en": "stile", - "es": "montante (escalera)", - "fr": "échalier", - "ja": "踏み越し段", - "ru": "перелаз", - "sr": "вратник", - "sv": "stätta", - "uk": "перелаз" - }, - "sump_buster": { - "en": "sump buster", - "ja": "サンプバスター", - "nl": "carterbreker" - }, - "toll_booth": { - "cs": "mýtnice", - "de": "mautstelle", - "en": "tollbooth", - "fr": "cabine de péage", - "it": "casello", - "ja": "本線料金所", - "nb": "bom", - "nl": "tolhuisje", - "pl": "miejsce poboru opłat", - "sk": "mýtnica", - "zh": "公路收费站", - "zh-hk": "公路收費站" - }, - "turnstile": { - "ar": "باب دوار", - "ca": "torniquet d'accés", - "cs": "turniket", - "da": "korsbom", - "de": "vereinzelungsanlage", - "en": "turnstile", - "es": "molinete", - "fr": "portillon d'accès", - "he": "מחסום כניסה מסתובב", - "id": "indo", - "it": "tornello", - "ja": "ターンスタイル", - "ko": "개집표기", - "lv": "turnikets", - "nb": "rotasjonsport", - "nl": "tourniquet", - "pl": "bramka obrotowa", - "pt": "torniquete", - "pt-br": "catraca", - "ru": "турникет", - "sv": "vändkors", - "tr": "turnike", - "uk": "турнікет", - "zh": "驗票閘門" - }, - "wall": { - "ar": "جدار", - "bg": "стена", - "ca": "paret", - "cs": "zeď", - "da": "mur", - "de": "mauer", - "el": "τοίχος", - "en": "wall", - "es": "pared", - "et": "müür", - "fi": "muuri", - "fr": "mur", - "he": "קיר", - "hi": "दीवार", - "hr": "zid", - "hu": "fal", - "id": "dinding", - "is": "múr", - "it": "muro", - "ja": "壁", - "ko": "벽", - "lt": "siena", - "lv": "mūris", - "nb": "mur", - "nl": "muur", - "pl": "mur", - "pt": "muro", - "ro": "zid", - "ru": "стена", - "sk": "stena", - "sl": "zid", - "sr": "зид", - "sv": "mur", - "th": "ผนัง", - "tr": "duvar", - "uk": "стіна", - "vi": "tường", - "zh": "墙", - "zh-hk": "牆", - "zh-tw": "牆" - }, - "wedge": { - "en": "hydraulic road barricade" - }, - "wicket_gate": { - "ar": "خوخة", - "ca": "schlupfpforte", - "cs": "schlupfpforte", - "da": "schlupfpforte", - "de": "schlupfpforte", - "en": "wicket gate", - "en-ca": "schlupfpforte", - "en-gb": "schlupfpforte", - "es": "schlupfpforte", - "et": "schlupfpforte", - "fi": "schlupfpforte", - "fr": "portillon", - "he": "פשפש", - "hr": "schlupfpforte", - "id": "schlupfpforte", - "is": "schlupfpforte", - "it": "schlupfpforte", - "nb": "schlupfpforte", - "nl": "schlupfpforte", - "pl": "furtka", - "pt": "schlupfpforte", - "ro": "schlupfpforte", - "ru": "калитка", - "sk": "schlupfpforte", - "sl": "schlupfpforte", - "sv": "schlupfpforte", - "uk": "хвіртка", - "vi": "cổng" - } - }, - "baseball": { - "softball": { - "ar": "الكرة اللينة", - "bg": "софтбол", - "ca": "softbol", - "el": "σόφτμπολ", - "en": "softball", - "es": "sóftbol", - "et": "pehmepall", - "he": "סופטבול", - "hr": "softbol", - "id": "sofbol", - "is": "mjúkbolti", - "ja": "ソフトボール", - "ko": "소프트볼", - "lt": "softbolas", - "lv": "softbols", - "nl": "softbal", - "pt": "softbol", - "ru": "софтбол", - "sk": "softbal", - "sr": "софтбол", - "sv": "softboll", - "th": "ซอฟต์บอล", - "tr": "softbol", - "uk": "софтбол", - "vi": "bóng mềm", - "zh": "壘球", - "zh-cn": "垒球" - } - }, - "basin": { - "detention": { - "ar": "حوض الاحتجاز", - "cs": "polder", - "de": "hochwasserrückhaltebecken", - "en": "detention basin", - "it": "bacini di espansione", - "ja": "遊水池", - "ko": "유수지", - "nl": "detentiebekken", - "pl": "polder przeciwpowodziowy", - "sk": "polder", - "th": "แก้มลิง", - "zh": "滯洪池", - "zh-cn": "滞洪区" - }, - "infiltration": { - "ar": "تجفيف مياه الامطار", - "cs": "vsak dešťové vody", - "de": "regenwasserversickerung", - "en": "infiltration basin", - "fr": "bassin d'infiltration", - "zh": "入渗池" - }, - "retention": { - "ar": "حوض التخزين", - "cs": "retenční nádrž", - "de": "regenrückhaltebecken", - "en": "retention basin", - "fr": "bassin de rétention", - "id": "embung", - "ja": "調整池", - "lt": "neišleidžiamasis paviršinių nuotekų tvenkinys", - "nl": "retentiebekken", - "ro": "bazin de acumulare", - "ru": "отстойник", - "sv": "utjämningsmagasin", - "zh": "調整池" - } - }, - "bath": { - "": { - "ar": "حمام عام", - "bg": "хамам", - "ca": "bany turc", - "cs": "turecká lázeň", - "da": "tyrkisk bad", - "de": "hammām", - "el": "χαμάμ", - "en": "hammam", - "et": "türgi saun", - "fi": "turkkilainen sauna", - "he": "חמאם", - "hi": "हमाम", - "hr": "hamam", - "hu": "törökfürdő", - "ja": "ハンマーム", - "ko": "하맘", - "lv": "turku pirts", - "nb": "tyrkisk bad", - "nl": "hamam", - "pl": "sauna turecka", - "pt": "banho turco", - "ru": "хаммам", - "sl": "hamam", - "sr": "турско купатило", - "sv": "hamam", - "tr": "hamam", - "uk": "хамам", - "vi": "nhà tắm thổ nhĩ kỳ", - "zh": "土耳其浴" - } - }, - "beauty": { - "tattoo_removal": { - "de": "entfernen von tätowierungen", - "el": "αφαίρεση τατουάζ", - "en": "tattoo removal", - "fr": "détatouage", - "it": "rimozione dei tatuaggi", - "pt": "remoção de tatuagem", - "zh": "纹身消除" - } - }, - "bicycle": { - "no": { - "da": "cykling forbudt", - "de": "fahrradverbot", - "en": "bikes not allowed", - "fr": "interdiction aux vélos", - "pl": "zakaz jazdy rowerem", - "pt": "proibido bicicleta", - "ru": "велосипеды запрещены" - } - }, - "bicycle_parking": { - "building": { - "de": "fahrradstation", - "en": "bicycle parking station", - "es": "estacionamiento de bicicletas cubierto", - "fr": "garage à vélo", - "id": "parkir sepeda", - "it": "ciclostazione", - "ja": "駐輪場", - "ko": "주거장", - "nb": "sykkelhotell", - "nl": "fietsenstalling", - "pl": "stacja parkowania rowerów", - "pt": "bicicletário", - "zh": "單車停泊場", - "zh-cn": "自行车停车场" - }, - "stands": { - "ca": "aparcabicicletes", - "cs": "stojan na kola", - "da": "cykelstativ", - "de": "fahrradabstellanlage", - "de-ch": "veloständer", - "en": "bicycle stand", - "es": "estacionamiento de bicicletas", - "et": "jalgrattahoidja", - "fi": "pyöräteline", - "fr": "arceau à vélo", - "he": "חנייה לאופניים", - "id": "rak sepeda", - "ja": "自転車スタンド", - "lv": "velostatīvs", - "nl": "fietsenrek", - "pl": "stojak rowerowy", - "pt": "paraciclo", - "ru": "стойка для парковки велосипедов", - "sv": "cykelställ", - "uk": "велостійка", - "zh": "自行車停車架" - }, - "wall_loops": { - "de": "vorderradhalter", - "en": "single-wheel bicycle racks", - "fr": "pince-roue" - } - }, - "biotic_reef": { - "": { - "ar": "شعب حلقي", - "bg": "атол", - "ca": "atol", - "cs": "atol", - "da": "atol", - "el": "ατόλλη", - "en": "atoll", - "en-ca": "fringing reef", - "en-gb": "fringing reef", - "es": "atolón", - "fi": "atolli", - "he": "אטול", - "hi": "एटोल", - "hr": "atol", - "id": "atol", - "is": "hringrif", - "it": "atollo", - "ja": "環礁", - "ko": "환초", - "lt": "atolas", - "lv": "atols", - "nl": "atol", - "pl": "atol", - "pt": "atol", - "ro": "atol", - "ru": "атолл", - "sk": "atol", - "sl": "atol", - "sr": "атол", - "th": "อะทอลล์", - "tr": "mercan adası", - "uk": "атол", - "vi": "đảo san hô vòng", - "zh": "環礁" - } - }, - "books": { - "": { - "bg": "есперантска литература", - "ca": "literatura en esperanto", - "cs": "esperantská literatura", - "de": "esperanto-literatur", - "el": "λογοτεχνία εσπεράντο", - "en": "esperanto literature", - "es": "literatura en esperanto", - "fr": "littérature espérantophone", - "hu": "eszperantó irodalom", - "it": "letteratura in esperanto", - "ja": "エスペラント文学", - "ko": "에스페란토 문학", - "nl": "esperantoliteratuur", - "pl": "kategoria:literatura esperancka", - "pt": "literatura em esperanto", - "ro": "literatură în esperanto", - "ru": "эсперанто-литература", - "tr": "esperanto edebiyatı", - "uk": "література есперанто", - "zh": "世界語文學", - "zh-cn": "世界语文学" - } - }, - "booth": { - "K2": { - "en": "k2 telephone box" - }, - "K6": { - "de": "telefonzellen-typ k6", - "en": "k6 telephone box" - } - }, - "border_type": { - "county": { - "ar": "محافظة", - "bg": "графство", - "ca": "comtat", - "cs": "hrabství", - "el": "κομητεία", - "en": "county", - "es": "condado", - "et": "maakond", - "fi": "piirikunta", - "fr": "comté", - "he": "נפה", - "hi": "काउण्टी", - "hr": "grofovija", - "hu": "megye", - "is": "sýsla", - "it": "contea", - "ja": "カウンティ", - "ko": "카운티", - "lv": "grāfiste", - "nb": "fylke", - "pl": "hrabstwo", - "pt": "condado", - "ro": "comitat", - "ru": "графство", - "sr": "жупанија", - "th": "เทศมณฑล", - "tr": "kontluk", - "uk": "графство", - "vi": "hạt", - "zh": "县/郡/伯国/伯爵领", - "zh-tw": "縣/郡/伯國/伯爵領" - } - }, - "boules": { - "petanque": { - "en": "petanque pitch", - "es": "pista de petanca", - "fr": "pétanquodrome" - } - }, - "boundary": { - "aboriginal_lands": { - "ar": "تصنيف:أراضي يعيش فيها السكان الأصليون", - "ca": "territoris indígenes", - "cs": "domorodé území", - "en": "lands inhabited by indigenous peoples", - "es": "territorios indígenas", - "fr": "territoire indigène", - "nl": "gebieden bewoond door inheemse volkeren", - "pt": "áreas habitadas por povos indígenas", - "ru": "территории коренных народов" - }, - "administrative": { - "ar": "تقسيم إداري", - "bg": "административна единица", - "ca": "entitat territorial administrativa", - "cs": "administrativní jednotka", - "da": "administrativ-territorial enhed", - "de": "administrativ-territoriale entität", - "el": "διοικητική διαίρεση", - "en": "administrative territorial entity", - "es": "entidad territorial administrativa", - "et": "haldusüksus", - "fi": "hallinnollinen alue", - "fr": "entité territoriale administrative", - "he": "חלוקה מנהלית", - "hi": "प्रशासनिक प्रभाग", - "hr": "administrativni teritorijalni entitet", - "hu": "közigazgatási egység", - "id": "wilayah administratif", - "is": "stjórnsýslueining", - "it": "divisione amministrativa", - "ja": "行政区画", - "ko": "행정 구역", - "lt": "administracinis vienetas", - "lv": "administratīvi teritoriāla vienība", - "nb": "administrativ-territorial enhet", - "nl": "bestuurlijk gebied", - "pl": "jednostka administracyjna", - "pt": "entidade territorial administrativa", - "ro": "diviziune administrativă", - "ru": "административно-территориальная единица", - "sk": "administratívny územný celok", - "sl": "upravna ozemeljska enota", - "sr": "управна јединица", - "sv": "administrativ territoriell enhet", - "th": "เขตการปกครอง", - "tr": "idari bölünüş", - "uk": "адміністративно-територіальна одиниця", - "vi": "đơn vị hành chính", - "zh": "行政領土實體", - "zh-cn": "行政领土实体" - }, - "census": { - "ar": "مركز تعداد للسكان", - "ca": "concentració de població designada pel cens", - "cs": "census-designated place", - "de": "census-designated place", - "el": "census-designated place", - "en": "census-designated place in the united states", - "en-ca": "census-designated place", - "en-gb": "census-designated place", - "es": "lugar designado por el censo en los estados unidos", - "et": "census-designated place", - "fi": "census-designated place", - "fr": "localité de recensement aux états-unis", - "he": "יישוב לצורכי מפקד אוכלוסין", - "hr": "popisom određeno mjesto", - "hu": "statisztikai település", - "id": "tempat yang ditunjuk sensus", - "it": "census-designated place", - "ja": "国勢調査指定地域", - "ko": "인구 조사 지정 구역", - "nb": "census-designated place", - "nl": "census-designated place", - "pl": "census-designated place", - "pt": "região censitária", - "ro": "loc desemnat pentru recensământ", - "ru": "статистически обособленная местность", - "sr": "пописом одређено место", - "sv": "census-designated place", - "tr": "sayım yeri", - "uk": "переписна місцевість", - "vi": "nơi ấn định cho thống kê dân số", - "zh": "普查规定居民点", - "zh-hk": "普查規定居民點", - "zh-tw": "人口普查指定地區" - }, - "ceremonial": { - "ar": "مقاطعات ومناطق إنجلترا المراسيمية", - "bg": "церемониално графство", - "ca": "comtat cerimonial", - "cs": "anglické ceremoniální hrabství", - "da": "ceremonielle grevskaber i england", - "de": "zeremonielle grafschaften englands", - "el": "τελετουργική κομητεία της αγγλίας", - "en": "ceremonial county of england", - "en-ca": "ceremonial counties of england", - "es": "condado ceremonial de inglaterra", - "et": "tseremoniaalkrahvkond", - "fi": "englannin muodollinen kreivikunta", - "fr": "comté cérémonial", - "he": "מחוז טקסי של אנגליה", - "hr": "engleske ceremonijalne grofovije", - "id": "provinsi di inggris", - "it": "contea cerimoniale", - "ja": "イングランドの典礼カウンティ", - "ko": "잉글랜드의 전례주", - "lt": "anglijos grafystės", - "lv": "anglijas ceremoniālā grāfiste", - "nb": "seremonielt grevskap", - "nl": "ceremoniële graafschappen van engeland", - "pl": "hrabstwo ceremonialne", - "pt": "condados cerimoniais da inglaterra", - "ro": "comitat ceremonial", - "ru": "церемониальное графство", - "sk": "ceremoniálne grófstvo", - "sl": "ceremonialna grofija anglije", - "sv": "englands ceremoniella grevskap", - "th": "เทศมณฑลทางพิธีการของอังกฤษ", - "tr": "törensel kontluk", - "uk": "церемоніальне графство англії", - "vi": "hạt nghi lễ", - "zh": "英格蘭的名譽郡", - "zh-cn": "英格兰的名誉郡" - }, - "civil_parish": { - "ca": "parròquia civil", - "cs": "civilní farnost", - "de": "parish", - "el": "ενορία", - "en": "civil parish", - "en-gb": "parish", - "es": "parroquia civil", - "fr": "paroisse civile", - "it": "parrocchia civile", - "ja": "行政教区", - "nb": "parish", - "nl": "parochie", - "pl": "parafia", - "pt": "paróquia", - "ro": "parohie (diviziune administrativă)", - "ru": "приход", - "sr": "цивилна парохија", - "sv": "parish", - "tr": "cemaat", - "uk": "парафія", - "zh": "堂区" - }, - "disputed": { - "ar": "منطقة متنازع عليها", - "ca": "territori disputat", - "cs": "sporné území", - "da": "omstridt territorium", - "de": "umstrittenes territorium", - "el": "αμφισβητούμενο έδαφος", - "en": "disputed territory", - "es": "territorio disputado", - "et": "vaidlusalune territoorium", - "fi": "kiistanalainen alue", - "fr": "territoire disputé/contesté", - "he": "חבל ארץ במחלוקת", - "hu": "vitatott terület", - "id": "wilayah yang disengketakan", - "it": "territorio conteso", - "ja": "係争中の領域", - "ko": "분쟁 영토", - "lv": "strīdus teritorija", - "nb": "omstridt område", - "nl": "betwist gebied", - "pl": "terytorium sporne", - "pt": "território disputado", - "ro": "teritoriu disputat", - "ru": "оспариваемая территория", - "sl": "sporno ozemlje", - "sr": "спорна територија", - "sv": "omtvistat territorium", - "tr": "tartışmalı bölge", - "uk": "спірна територія", - "vi": "lãnh thổ bị tranh chấp", - "zh": "争议领土", - "zh-hk": "爭議領土", - "zh-tw": "爭議領土" - }, - "maritime": { - "ar": "حدود بحرية", - "ca": "frontera marítima", - "cs": "námořní hranice", - "da": "havgrænse", - "de": "seegrenze", - "el": "θαλάσσιο σύνορο", - "en": "maritime boundary", - "es": "frontera marítima", - "et": "merepiir", - "fi": "meriraja", - "fr": "frontière maritime", - "he": "גבול ימי", - "hr": "državno područje", - "hu": "tengeri határ", - "it": "confine marittimo", - "ja": "海上境界線", - "ko": "해상경계선", - "lv": "jūras robeža", - "nb": "maritim grense", - "nl": "zeegrens", - "pl": "morska granica państwowa", - "pt": "fronteira marítima", - "ro": "frontieră maritimă", - "ru": "морская граница", - "sl": "morska meja", - "sr": "поморска граница", - "sv": "sjögräns", - "tr": "deniz sınırı", - "uk": "територія держави", - "zh": "海上邊界" - }, - "marker": { - "ar": "علامة حدود", - "ca": "fita", - "cs": "hraniční kámen", - "da": "grænsesten", - "de": "grenzmarkierung", - "en": "boundary marker", - "es": "hito geográfico", - "et": "piirimärk", - "fi": "rajamerkki", - "fr": "borne frontière", - "he": "אבן גבול", - "id": "tugu perbatasan", - "it": "cippo di confine", - "ja": "境界石", - "lt": "riboženklis", - "nb": "grensemerke", - "nl": "grensmarkering", - "pl": "znak graniczny", - "pt": "marco de fronteira", - "ru": "пограничный маркерный знак", - "sl": "mejnik", - "sr": "гранични камен", - "sv": "gränsmärke", - "tr": "sınır taşı", - "uk": "прикордонний знак", - "zh": "界碑" - }, - "national_park": { - "ar": "متنزه وطني", - "bg": "национален парк", - "ca": "parc nacional", - "cs": "národní park", - "da": "nationalpark", - "de": "nationalpark", - "el": "εθνικός δρυμός", - "en": "national park", - "es": "parque nacional", - "et": "rahvuspark", - "fi": "kansallispuisto", - "fr": "parc national", - "he": "פארק לאומי", - "hi": "राष्ट्रीय उद्यान", - "hr": "nacionalni park", - "hu": "nemzeti park", - "id": "taman nasional", - "is": "þjóðgarður", - "it": "parco nazionale", - "ja": "国立公園", - "ko": "국립공원", - "lt": "nacionalinis parkas", - "lv": "nacionālais parks", - "nb": "nasjonalpark", - "nl": "nationaal park", - "pl": "park narodowy", - "pt": "parque nacional", - "ro": "parc național", - "ru": "национальный парк", - "sk": "národný park", - "sl": "narodni park", - "sr": "национални парк", - "sv": "nationalpark", - "th": "อุทยานแห่งชาติ", - "tr": "millî park", - "uk": "національний парк", - "vi": "vườn quốc gia", - "zh": "國家公園", - "zh-cn": "国家公园" - }, - "political": { - "ar": "دائرة انتخابية", - "bg": "избирателен район", - "ca": "circumscripció electoral", - "cs": "volební obvod", - "da": "valgkreds", - "de": "wahlkreis", - "el": "εκλογική περιφέρεια", - "en": "electoral district", - "en-ca": "riding", - "en-gb": "constituency", - "es": "circunscripción electoral", - "et": "valimisringkond", - "fi": "vaalipiiri", - "fr": "circonscription électorale", - "he": "מחוז בחירה", - "hi": "चुनाव क्षेत्र", - "hu": "választókerület", - "id": "daerah pemilihan", - "is": "kjördæmi", - "it": "circoscrizione elettorale", - "ja": "選挙区", - "ko": "선거구", - "lt": "rinkimų apygarda", - "lv": "vēlēšanu apgabals", - "nb": "valgkrets", - "nl": "kieskring", - "pl": "okręg wyborczy", - "pt": "círculo eleitoral", - "ro": "circumscripție electorală", - "ru": "избирательный округ", - "sl": "volilna enota", - "sr": "изборна јединица", - "sv": "valkrets", - "th": "เขตเลือกตั้ง", - "tr": "seçim bölgesi", - "uk": "виборчий округ", - "vi": "khu vực bầu cử", - "zh": "選區", - "zh-cn": "选区" - }, - "protected_area": { - "ar": "محمية طبيعية", - "bg": "резерват", - "ca": "reserva natural", - "cs": "přírodní rezervace", - "da": "naturreservat", - "de": "naturschutzgebiet", - "el": "φυσικό καταφύγιο", - "en": "nature reserve", - "es": "reserva natural", - "et": "looduskaitseala", - "fi": "luonnonpuisto", - "fr": "réserve naturelle", - "he": "שמורת טבע", - "hi": "संरक्षित प्रकृतिक्षेत्र", - "hr": "prirodni rezervat", - "hu": "természetvédelmi terület", - "id": "cagar alam", - "is": "friðland", - "it": "area naturale protetta", - "ja": "自然保護区", - "ko": "자연 보호 구역", - "lt": "draustinis", - "lv": "dabas rezervāts", - "nb": "naturreservat", - "nl": "natuurreservaat", - "pl": "rezerwat przyrody", - "pt": "reserva natural", - "pt-br": "reserva florestal", - "ro": "rezervație naturală", - "ru": "заповедник", - "sk": "prírodná rezervácia", - "sl": "naravni rezervat", - "sr": "резерват природе", - "sv": "naturreservat", - "th": "พื้นที่คุ้มครอง", - "tr": "doğa koruma alanı", - "uk": "природний заповідник", - "vi": "khu bảo tồn thiên nhiên", - "zh": "自然保护区", - "zh-hk": "自然保護區", - "zh-tw": "自然保護區" - }, - "special_economic_zone": { - "ar": "منطقة اقتصادية خاصة", - "bg": "специална икономическа зона", - "ca": "zona econòmica especial", - "cs": "speciální ekonomická zóna", - "da": "særlig økonomisk zone", - "de": "sonderwirtschaftszone", - "el": "ειδική οικονομική ζώνη", - "en": "special economic zone", - "es": "zona económica especial", - "fi": "erityistalousalue", - "fr": "zone économique spéciale", - "he": "אזור סחר מיוחד", - "id": "kawasan ekonomi khusus", - "it": "zona economica speciale", - "ja": "経済特区", - "ko": "경제특구", - "nb": "spesiell økonomisk sone", - "nl": "speciale economische zone", - "pl": "specjalna strefa ekonomiczna", - "pt": "zona económica especial", - "ru": "особая экономическая зона", - "sv": "särskild ekonomisk zon", - "th": "เขตเศรษฐกิจพิเศษ", - "tr": "özel ekonomik bölge", - "uk": "спеціальна економічна зона", - "vi": "đặc khu kinh tế", - "zh": "经济特区", - "zh-hk": "經濟特區" - }, - "vice_county": { - "ar": "نائب مقاطعة", - "ca": "vicecomtat", - "en": "vice-county", - "es": "vicecondado", - "fr": "vice-comté", - "uk": "віце-графство" - } - }, - "brand": { - "": { - "ar": "ألدي", - "ca": "aldi", - "cs": "aldi", - "da": "aldi", - "de": "aldi", - "el": "aldi", - "en": "krowarzywa", - "en-ca": "aldi", - "en-gb": "aldi", - "es": "aldi", - "fi": "aldi", - "fr": "aldi", - "he": "אלדי", - "hr": "aldi", - "hu": "aldi", - "id": "aldi", - "it": "caddy's", - "ja": "aldi", - "ko": "알디", - "lt": "aldi", - "nb": "aldi", - "nl": "aldi", - "pt": "aldi", - "ro": "aldi", - "ru": "aldi", - "sr": "aldi", - "sv": "aldi", - "tr": "aldi", - "uk": "aldi", - "vi": "aldi", - "zh": "aldi" - }, - "Aldi": { - "ar": "ألدي", - "en": "aldi", - "he": "אלדי", - "ko": "알디" - }, - "Caddy's": { - "en": "caddy's" - }, - "Drogeria_Natura": { - "en": "drogeria natura", - "pl": "drogerie natura" - }, - "Krowarzywa": { - "en": "krowarzywa" - }, - "SB_Tank": { - "en": "sb-tank" - }, - "Safe Streets Baltimore": { - "en": "safe streets baltimore" - }, - "Tigre": { - "en": "tigre" - }, - "Tigre_Amico": { - "en": "tigre amico" - } - }, - "bridge": { - "": { - "ar": "جسر نواس", - "bg": "вантов мост", - "ca": "pont basculant", - "cs": "zdvihací most", - "da": "klapbro", - "de": "klappbrücke", - "de-ch": "bogenbrücke", - "el": "τοξωτή γέφυρα", - "en": "bascule bridge", - "en-ca": "arch bridge", - "es": "puente basculante", - "et": "kaarsild", - "fi": "läppäsilta", - "fr": "pont basculant", - "he": "גשר נפתח", - "hi": "बैस्क्यूल सेतु", - "hr": "pontonski most", - "hu": "ívhíd", - "id": "jembatan pelengkung", - "is": "reisibrú", - "it": "ponte basculante", - "ja": "跳開橋", - "ko": "도개교", - "lt": "varstomasis tiltas", - "lv": "arkas tilts", - "nb": "klaffebru", - "nl": "basculebrug", - "pl": "most zwodzony", - "pt": "ponte basculante", - "pt-br": "ponte em arco", - "ro": "pod basculant", - "ru": "раскрывающийся мост", - "sk": "oblúkový most", - "sl": "dvižni most", - "sr": "лучни мост", - "sv": "klaffbro", - "th": "สะพานแบบโค้ง", - "tr": "baskül köprü", - "uk": "підйомні мости", - "vi": "cầu cất", - "zh": "上開橋", - "zh-cn": "平转桥", - "zh-hk": "運渡橋", - "zh-tw": "潛水橋" - }, - "aqueduct": { - "ar": "أنبوب ماء", - "ca": "aqüeducte", - "cs": "akvadukt", - "da": "akvædukt", - "de": "aquäduktbrücke", - "el": "υδραγωγός", - "en": "aqueduct", - "fr": "pont-aqueduc", - "ja": "水路橋", - "ko": "용수로", - "nl": "aqueduct voor watertoevoer", - "ru": "акведук", - "sl": "akvadukt (vodovod)", - "uk": "акведук (міст)", - "zh": "引水道" - }, - "boardwalk": { - "ar": "ممشى خشبي", - "cs": "haťový chodník, povalový chodník", - "da": "bræddevej", - "de": "bohlenweg", - "en": "boardwalk", - "es": "paseo marítimo", - "et": "laudtee", - "fr": "promenade en planches", - "hr": "šetnica", - "ja": "ボードウォーク", - "ko": "산책길", - "nl": "vlonderpad", - "pl": "promenada (budowla)", - "ru": "дощатая тропа", - "zh": "木板路" - }, - "cantilever": { - "ar": "جسر كابولي", - "ca": "pont en mènsula", - "cs": "konzolový most", - "da": "cantileverbro", - "de": "gerberträger", - "el": "πρόβολοι", - "en": "cantilever bridge", - "es": "puente en ménsula", - "et": "konsoolsild", - "fi": "konsolisilta", - "fr": "pont à poutres en porte-à-faux", - "he": "גשר זיזי", - "hu": "konzolos híd", - "it": "ponte a sbalzo", - "ja": "カンチレバー橋", - "ko": "캔틸레버교", - "lt": "konsolinis tiltas", - "nb": "fritt frambygg-bro", - "nl": "cantileverbrug", - "pl": "most wspornikowy", - "pt": "ponte cantilever", - "ru": "консольный мост", - "sk": "konzolový most", - "sl": "konzolni most", - "sv": "konsolbro", - "th": "สะพานยื่น", - "zh": "懸臂", - "zh-cn": "悬臂桥" - }, - "covered": { - "ar": "جسر مغطى", - "bg": "покрит мост", - "ca": "pont cobert", - "cs": "krytý most", - "da": "overdækket bro", - "de": "gedeckte brücke", - "en": "covered bridge", - "es": "puente cubierto", - "et": "katustatud sild", - "fi": "katettu silta", - "fr": "pont couvert", - "he": "גשר מקורה", - "id": "jembatan beratap", - "it": "ponte coperto", - "ja": "屋根付橋", - "nb": "overdekket bro", - "nl": "overdekte brug", - "pl": "kryty most", - "pt": "ponte coberta", - "ro": "pod acoperit", - "ru": "крытый мост", - "sv": "övertäckt bro", - "uk": "критий міст", - "zh": "廊桥", - "zh-hk": "廊橋" - }, - "movable": { - "ar": "جسر قابل للحركة", - "bg": "подвижен мост", - "ca": "pont mòbil", - "cs": "pohyblivý most", - "de": "bewegliche brücke", - "el": "κινητή γέφυρα", - "en": "moveable bridge", - "es": "puente móvil", - "fr": "pont mobile", - "he": "גשר נפתח", - "hi": "चल सेतु", - "it": "ponte mobile", - "ja": "可動橋", - "ko": "가동교", - "lt": "judantis tiltas", - "nb": "bevegelig bro", - "nl": "beweegbare brug", - "pl": "most ruchomy", - "pt-br": "ponte móvel", - "ru": "разводной мост", - "sl": "premični most", - "sr": "покретни мост", - "sv": "öppningsbar bro", - "uk": "розвідний міст", - "vi": "cầu di động", - "zh": "开启桥", - "zh-hk": "開啟橋", - "zh-tw": "開啟橋" - }, - "trestle": { - "de": "trestle-brücke", - "en": "trestle bridge", - "es": "puente de caballetes", - "fi": "pukkisilta", - "fr": "pont à tréteaux", - "he": "גשר חמורים", - "hu": "állványhíd", - "id": "trestel", - "it": "ponte a cavalletto", - "ja": "トレッスル橋", - "pl": "estakada", - "zh": "栈桥" - }, - "viaduct": { - "ar": "قنطرة متعددة الركائز", - "bg": "виадукт", - "ca": "viaducte", - "cs": "viadukt", - "da": "viadukt", - "de": "viadukt", - "el": "οδογέφυρα", - "en": "viaduct", - "es": "viaducto", - "et": "viadukt", - "fi": "maasilta", - "fr": "viaduc", - "he": "ויאדוקט", - "hr": "vijadukt", - "hu": "viadukt", - "id": "viaduk", - "is": "dalbrú", - "it": "viadotto", - "ja": "高架橋", - "ko": "고가교", - "lt": "viadukas", - "lv": "viadukts", - "nb": "viadukt", - "pl": "wiadukt", - "pt": "viaduto", - "ru": "виадук", - "sk": "viadukt", - "sl": "viadukt", - "sr": "вијадукт", - "sv": "viadukt", - "tr": "viyadük", - "uk": "віадук", - "zh": "高架橋", - "zh-cn": "高架桥" - }, - "yes": { - "ca": "pont per a bicicletes", - "cs": "cyklistický most", - "da": "cykelbro", - "de": "fahrradbrücke", - "en": "bicycle bridge", - "es": "puente de bicicleta", - "fr": "passerelle cyclable", - "it": "ponte ciclabile", - "nb": "sykkelbro", - "nl": "fietsbrug", - "pl": "most rowerowy", - "ru": "велосипедный мост", - "sr": "бициклистички мост", - "sv": "cykelbro", - "uk": "велосипедний міст" - } - }, - "building": { - "": { - "ar": "طراز آرت ديكو", - "bg": "ар нуво", - "ca": "arquitectura art déco", - "cs": "art deco architektura", - "da": "jugendstil", - "de": "art deco architektur", - "de-ch": "jugendstil", - "el": "αρ νουβό", - "en": "art deco architecture", - "en-ca": "art nouveau", - "en-gb": "art nouveau", - "en-us": "historicist architecture", - "es": "arquitectura art déco", - "et": "juugend", - "fi": "jugend", - "fr": "architecture art déco", - "he": "אר דקו", - "hi": "बाऊहाउस", - "hr": "secesija", - "hu": "art déco építészet", - "id": "art nouveau", - "is": "arts & crafts", - "it": "architettura art déco", - "ja": "アール・デコ建築", - "ko": "아르 누보", - "lt": "moderno architektūra", - "lv": "art deco arhitektūra", - "nb": "art deco", - "nl": "art deco", - "pl": "architektura art deco", - "pt": "arte nova", - "pt-br": "art nouveau", - "ro": "arhitectura art deco", - "ru": "архитектура арт-деко", - "sk": "secesia", - "sl": "art nouveau", - "sr": "арт нуво", - "sv": "art déco-arkitektur", - "th": "นวศิลป์", - "tr": "art nouveau", - "uk": "ар деко", - "vi": "kiến trúc art deco", - "zh": "装饰艺术建筑", - "zh-cn": "艺术与工艺美术运动", - "zh-hk": "藝術與工藝美術運動", - "zh-tw": "新藝術運動" - }, - "allotment_house": { - "de": "schrebergartenlaube", - "en": "allotment house" - }, - "apartments": { - "ar": "مجمع سكني", - "bg": "кондоминиум", - "ca": "bloc de pisos", - "cs": "bytový dům", - "da": "lejlighedskompleks", - "de": "geschosswohnungsbau", - "el": "πολυκατοικία", - "en": "apartment building", - "en-gb": "block of flats", - "es": "edificio de departamentos", - "fi": "kerrostalo", - "fr": "immeuble d'habitation", - "he": "בניין מגורים", - "hr": "kondominij", - "hu": "bérház", - "id": "bangunan", - "it": "condominio", - "ja": "アパート", - "ko": "콘도미니엄", - "lt": "daugiabutis namas", - "nb": "boligblokk", - "nl": "appartementengebouw", - "pl": "kondominium", - "pt": "edifício residencial", - "ru": "многоквартирное жилое здание", - "sk": "bytový dom", - "sl": "stanovanjski blok", - "sv": "lägenhetshus", - "th": "อาคารชุด", - "tr": "kondominyum", - "uk": "багатоквартирний будинок", - "vi": "tòa chung cư", - "zh": "公寓大廈" - }, - "bakehouse": { - "de": "backhaus", - "en": "bakehouse", - "fi": "leivintupa", - "fr": "four à pain", - "it": "forno comunitario", - "nl": "bakhuis" - }, - "barn": { - "ar": "حظيرة", - "bg": "обор", - "ca": "pallissa", - "cs": "stodola", - "da": "lade", - "de": "scheune", - "el": "αχυρώνας", - "en": "barn", - "es": "galpón", - "et": "küün", - "fi": "lato", - "fr": "grange", - "he": "אסם", - "hi": "खलिहान", - "hu": "csűr", - "id": "gudang pertanian", - "it": "fienile", - "ja": "納屋", - "ko": "헛간", - "lt": "svirnas", - "lv": "klēts", - "nb": "løe", - "nl": "schuur", - "pl": "stodoła", - "pt": "barracão", - "pt-br": "galpão", - "ro": "șură", - "ru": "амбар", - "sk": "stodola", - "sl": "skedenj", - "sr": "амбар", - "sv": "lada", - "tr": "ahır", - "uk": "стодола", - "vi": "chuồng trại", - "zh": "穀倉" - }, - "bell_tower": { - "ar": "برج الناقوس", - "bg": "камбанария", - "ca": "campanar", - "cs": "zvonice", - "da": "klokketårn", - "de": "glockenturm", - "el": "καμπαναριό", - "en": "bell tower", - "es": "torre campanario", - "et": "kellatorn", - "fi": "kellotorni", - "fr": "clocher-tour", - "he": "מגדל פעמונים", - "hr": "zvonik", - "hu": "harangtorony", - "id": "menara lonceng", - "it": "torre campanaria", - "ja": "鐘塔", - "ko": "종탑", - "lt": "varpinė", - "lv": "zvanu tornis", - "nb": "klokketårn", - "nl": "klokkentoren", - "pl": "dzwonnica", - "pt": "torre sineira", - "pt-br": "campanário", - "ro": "clopotniță", - "ru": "колокольня", - "sk": "zvonica", - "sl": "zvonik", - "sr": "звоник", - "sv": "klocktorn", - "tr": "çan kulesi", - "uk": "дзвіниця", - "vi": "tháp chuông", - "zh": "鐘樓", - "zh-cn": "钟楼" - }, - "boathouse": { - "da": "naust", - "de": "bootshaus", - "en": "boathouse", - "et": "paadikuur", - "fi": "venevaja", - "fr": "hangar à bateaux", - "he": "בית סירות", - "ja": "ボートハウス", - "ko": "정고", - "lt": "elingas", - "nb": "naust", - "nl": "botenhuis", - "sv": "båthus" - }, - "brewery": { - "cs": "budova pivovaru", - "de": "brauereigebäude", - "en": "brewery building", - "et": "õlletehas", - "fr": "bâtiment de brasserie", - "hu": "sőrfözde", - "nl": "brouwerijgebouw" - }, - "bridge": { - "ar": "طريق علوية", - "cs": "mostní přechod", - "de": "gebäudebrücke", - "en": "skyway", - "es": "pasadizo elevado", - "fr": "passerelle", - "he": "מדרכה עילית", - "hi": "हवाईपुल", - "id": "jembatan udara", - "ja": "スカイウォーク", - "ko": "구름다리", - "nl": "luchtbrug", - "pl": "łącznik", - "ro": "pasarelă", - "ru": "надземный переход", - "zh": "人行过街天桥", - "zh-hk": "行人天橋", - "zh-tw": "人行天橋" - }, - "bungalow": { - "ar": "بنغل", - "bg": "бунгало", - "ca": "bungalou", - "cs": "bungalov", - "el": "μπανγκαλόου", - "en": "bungalow", - "es": "bungaló", - "et": "bangalo", - "he": "בונגלו", - "hu": "bungaló", - "ja": "バンガロー", - "pt": "bangalô", - "ru": "бунгало", - "th": "บังกะโล", - "tr": "bungalov", - "uk": "бунгало", - "zh": "單層小屋" - }, - "bunker": { - "ar": "ملجأ", - "bg": "бункер", - "ca": "búnquer", - "cs": "bunkr", - "el": "οχυρό καταφύγιο", - "en": "bunker", - "es": "búnker", - "et": "punker", - "fi": "bunkkeri", - "he": "בונקר", - "ja": "掩体壕", - "ko": "벙커", - "lt": "bunkeris", - "pl": "schron", - "pt": "búnquer", - "ro": "buncăr", - "ru": "бункер", - "sr": "бункер", - "sv": "stridsvärn", - "tr": "sığınak", - "uk": "бункер", - "vi": "boong ke", - "zh": "地堡" - }, - "cabin": { - "ca": "cabanya", - "cs": "roubená chatka", - "da": "lafte", - "en": "log cabin", - "es": "cabaña de troncos", - "fi": "hirsirakennus", - "fr": "cabane en rondins", - "it": "capanna di tronchi", - "ja": "ログハウス", - "ko": "귀틀집", - "nb": "lafteverk", - "nl": "blokhut", - "pl": "konstrukcja wieńcowa", - "ru": "сруб", - "sr": "брвнара", - "sv": "timring", - "tr": "ahşap kulübe", - "uk": "зруб", - "zh": "原木屋" - }, - "carport": { - "ar": "سقيفة سيارة", - "bg": "навес за моторно превозно средство", - "en": "carport", - "es": "cochera", - "fi": "päätykatos", - "id": "emper mobil", - "ja": "カーポート", - "nb": "bilbås", - "zh": "车棚" - }, - "cathedral": { - "ar": "كاتدرائية", - "bg": "катедрала", - "ca": "catedral", - "cs": "katedrála", - "da": "domkirke", - "de": "kathedrale", - "el": "καθεδρικός ναός", - "en": "cathedral", - "es": "catedral", - "et": "katedraal", - "fi": "tuomiokirkko", - "fr": "cathédrale", - "he": "קתדרלה", - "hr": "katedrala", - "hu": "székesegyház", - "id": "katedral", - "is": "dómkirkja", - "it": "cattedrale", - "ja": "大聖堂", - "ko": "주교좌 성당", - "lt": "katedra", - "lv": "katedrāle", - "nb": "domkirke", - "nl": "kathedraal", - "pl": "katedra", - "pt": "catedral", - "ro": "catedrală", - "ru": "кафедральный собор", - "sk": "katedrála", - "sl": "stolnica", - "sr": "саборна црква", - "sv": "katedral", - "th": "อาสนวิหาร", - "tr": "katedral", - "uk": "собор", - "vi": "nhà thờ chính tòa", - "zh": "主教座堂" - }, - "chapel": { - "ar": "مصلى كنسي", - "bg": "параклис", - "ca": "capella", - "cs": "kaple", - "da": "kapel", - "de": "kapelle", - "el": "παρεκκλήσιο", - "en": "chapel", - "es": "capilla", - "et": "kabel", - "fi": "kappeli", - "fr": "chapelle", - "he": "קפלה", - "hi": "पुजास्थल", - "hr": "kapela", - "hu": "kápolna", - "id": "kapel", - "it": "cappella", - "ja": "チャペル", - "ko": "경당", - "lt": "koplyčia", - "lv": "kapela", - "nb": "kapell", - "nl": "kapel", - "pl": "kaplica", - "pt": "capela", - "ro": "capelă", - "ru": "капелла", - "sk": "kaplnka", - "sl": "kapela", - "sr": "капела", - "sv": "kapell", - "th": "โบสถ์น้อย", - "tr": "şapel", - "uk": "каплиця", - "vi": "nhà nguyện", - "zh": "小圣堂", - "zh-hk": "小聖堂", - "zh-tw": "小聖堂" - }, - "church": { - "ar": "كنيسة", - "bg": "църква", - "ca": "església", - "cs": "kostel", - "da": "kirke", - "de": "kirchengebäude", - "de-ch": "kirche", - "el": "εκκλησία", - "en": "church building", - "en-ca": "church", - "en-gb": "church", - "es": "iglesia", - "et": "kirik", - "fi": "kirkko", - "fr": "église", - "he": "כנסייה", - "hi": "गिरजाघर", - "hr": "crkva", - "hu": "templom", - "id": "gereja", - "it": "chiesa", - "ja": "教会堂", - "ko": "교회당", - "lt": "bažnyčia", - "lv": "baznīcas celtne", - "nb": "kirkebygning", - "nl": "kerkgebouw", - "pl": "kościół", - "pt": "igreja", - "ro": "biserică", - "ru": "христианский храм", - "sk": "kostol", - "sl": "cerkev", - "sr": "црква", - "sv": "kyrka", - "th": "คริสต์ศาสนสถาน", - "tr": "kilise", - "uk": "церква", - "vi": "nhà thờ kitô giáo", - "zh": "教堂" - }, - "civic": { - "ca": "edifici cívic", - "cs": "občanská stavba", - "de": "bürgerhaus", - "en": "civic building", - "es": "edificio cívico", - "fr": "édifice civil", - "it": "edificio civico", - "nl": "burgerlijk gebouw", - "pt": "construção cívica", - "ro": "construcție civilă", - "sl": "občinska stavba", - "uk": "цивільна будівля", - "zh": "民用建筑" - }, - "college": { - "ar": "كلية", - "bg": "колеж", - "ca": "college", - "cs": "kolej", - "da": "college", - "de": "collegegebäude", - "el": "κολέγιο", - "en": "college building", - "en-ca": "college", - "en-gb": "college", - "es": "college", - "et": "kolledž", - "fi": "college", - "fr": "bâtiment collégial", - "he": "מכללה", - "hi": "महाविद्यालय", - "hu": "főiskola", - "id": "kolese", - "it": "college", - "ja": "カレッジ", - "ko": "단과대학", - "lt": "koledžas", - "lv": "koledža", - "nb": "college", - "nl": "collegegebouw", - "pl": "college", - "pt": "colégio", - "ro": "colegiu", - "ru": "колледж", - "sl": "kolidž", - "sr": "колеџ", - "sv": "college", - "th": "วิทยาลัย", - "tr": "kolej", - "uk": "коледж", - "vi": "trường cao đẳng", - "zh": "學院", - "zh-cn": "学院" - }, - "commercial": { - "ca": "edifici comercial", - "cs": "komerční budova", - "da": "kommerciel bygning", - "de": "geschäftshaus", - "el": "εμπορικό κτήριο", - "en": "commercial building", - "es": "edificio comercial", - "et": "ärihoone", - "fi": "liikerakennus", - "fr": "bâtiment commercial", - "he": "בניין מסחרי", - "hr": "komercijalna zgrada", - "hu": "kereskedelmi épület", - "it": "edificio commerciale", - "ja": "商業施設", - "ko": "상업 시설", - "nb": "næringsbygg", - "nl": "bedrijfsgebouw", - "pl": "nieruchomość komercyjna", - "pt": "edifício comercial", - "ro": "clădire comercială", - "ru": "коммерческое здание", - "sl": "komercialna stavba", - "sr": "пословна зграда", - "sv": "kommersiell byggnad", - "uk": "комерційна споруда", - "zh": "商業建築", - "zh-cn": "商业建筑" - }, - "conservatory": { - "ar": "الغرفة الزجاجية", - "bg": "зимна градина", - "cs": "zimní zahrada", - "da": "udestue", - "de": "wintergarten", - "en": "sunroom", - "es": "conservatorio de plantas", - "fr": "véranda", - "he": "חדר שמש", - "ja": "サンルーム", - "lt": "žiemos sodas", - "nl": "serre", - "pl": "ogród zimowy", - "pt": "jardim de inverno", - "ru": "зимний сад", - "sk": "zimná záhrada", - "sv": "uterum", - "uk": "зимовий сад", - "vi": "phòng tắm nắng", - "zh": "日光室" - }, - "construction": { - "ar": "تحت الإنشاء", - "ca": "edifici en construcció", - "cs": "ve výstavbě", - "da": "under opførelse", - "de": "im bau", - "el": "υπό κατασκευή", - "en": "building or structure under construction", - "es": "edificio en construcción", - "et": "hoone ehitamisel", - "fi": "rakenteilla", - "fr": "en construction", - "he": "בבנייה", - "hu": "építés alatt", - "it": "in costruzione", - "ja": "建設中", - "ko": "건설중인 건물", - "lv": "celtne vai struktūra pašlaik tiek celta", - "nb": "under bygging", - "nl": "in aanbouw", - "pl": "budynek w budowie", - "pt": "estrutura em construção", - "ru": "в процессе строительства", - "sr": "зграда у изградњи", - "sv": "byggnadsverk under konstruktion", - "tr": "inşa hâlinde", - "uk": "на стадії будівництва", - "vi": "công trình đang được xây", - "zh": "兴建中建筑", - "zh-hk": "正在興建的建築", - "zh-tw": "興建中建築" - }, - "container": { - "ar": "حاوية شحن العمارة", - "cs": "kontejnerová architektura", - "de": "containergebäude", - "en": "container building", - "es": "cargotectura", - "et": "konteinermaja", - "fi": "parakki", - "fr": "maison-conteneur", - "ja": "コンテナハウス", - "nl": "containergebouw", - "ru": "контейнерный дом", - "sk": "kontajnerová architektúra", - "sl": "kontejnerska arhitektura", - "sr": "стамбени контејнери", - "sv": "barack", - "zh": "貨櫃屋" - }, - "cowshed": { - "bg": "краварник", - "cs": "kravín", - "da": "kostald", - "de": "kuhstall", - "en": "cowshed", - "fi": "navetta", - "he": "רפת", - "lt": "karvidė", - "nb": "kufjøs", - "nl": "koeienstal", - "pl": "obora", - "ru": "коровник", - "sv": "ladugård", - "uk": "корівник" - }, - "data_center": { - "ar": "مركز بيانات", - "bg": "дата център", - "ca": "centre de càlcul", - "cs": "serverovna", - "da": "datacenter", - "de": "rechenzentrum", - "el": "κέντρο δεδομένων", - "en": "data center", - "es": "centro de procesamiento de datos", - "fi": "datakeskus", - "fr": "centre de données", - "he": "מרכז נתונים", - "hi": "आँकड़ा केन्द्र", - "hu": "adatközpont", - "id": "pusat data", - "is": "netþjónabú", - "it": "centro elaborazione dati", - "ja": "データセンター", - "ko": "데이터 센터", - "lt": "duomenų centras", - "lv": "datu centrs", - "nb": "datasenter", - "nl": "datacenter", - "pl": "centrum danych", - "pt": "centro de processamento de dados", - "ro": "centru de date", - "ru": "дата-центр", - "sk": "datacentrum", - "sl": "podatkovni center", - "sv": "datorhall", - "th": "ศูนย์ข้อมูล", - "tr": "veri merkezi", - "uk": "дата-центр", - "vi": "trung tâm dữ liệu", - "zh": "数据中心", - "zh-hk": "數據中心", - "zh-tw": "資料中心" - }, - "detached": { - "ca": "habitatge unifamiliar", - "cs": "rodinný dům", - "da": "parcelhus", - "de": "einfamilienwohnhaus", - "el": "μονοκατοικία", - "en": "single-family detached home", - "es": "vivienda unifamiliar", - "fi": "omakotitalo", - "fr": "maison unifamiliale", - "he": "בית מגורים למשפחה אחת", - "it": "casa unifamiliare", - "ja": "一戸建て", - "ko": "단독주택", - "nb": "enebolig", - "nl": "eengezinswoning", - "pl": "jednorodzinny budynek mieszkalny", - "pt": "casa unifamiliar", - "sk": "rodinný dom", - "sv": "småhus", - "zh": "独立住宅", - "zh-cn": "一戶建", - "zh-tw": "單戶住宅" - }, - "digester": { - "cs": "bioplynová stanice", - "da": "biogasanlæg", - "de": "biogasanlage", - "en": "biogas plant", - "fi": "biokaasulaitos", - "nl": "biogasinstallatie", - "pl": "biogazownia", - "sv": "biogasanläggning" - }, - "dormitory": { - "ar": "سكن جامعي", - "ca": "dormitori", - "cs": "internát", - "de": "dormitorium", - "de-ch": "schlafunterkunft", - "en": "dormitory", - "et": "ühiselamu", - "fi": "asuntola", - "fr": "dortoir", - "hu": "kollégium", - "id": "asrama", - "it": "dormitorio", - "ja": "寮", - "ko": "기숙사", - "nb": "internat", - "pl": "dormitorium", - "pt": "dormitório", - "ru": "общежитие", - "sk": "internát", - "sr": "студентски дом", - "sv": "studenthem", - "tr": "yurt", - "uk": "гуртожиток", - "zh": "宿舍" - }, - "entrance": { - "ca": "entrada", - "da": "indgang", - "de": "eingang", - "en": "entrance", - "es": "entrada", - "et": "sissepääs", - "fi": "sisäänkäynti", - "fr": "entrée", - "he": "כניסה", - "hu": "bejárat", - "it": "ingresso", - "ja": "入り口", - "ko": "현관", - "nl": "ingang", - "pl": "sień", - "pt": "entrada", - "ru": "вход", - "sv": "entre", - "uk": "під'їзд", - "zh": "入口" - }, - "farm": { - "ar": "حظيرة", - "ca": "masia", - "cs": "statek", - "da": "bondehus", - "de": "bauernhaus", - "el": "αγροικία", - "en": "farmhouse", - "es": "casa de campo", - "et": "moonakamaja", - "fi": "päärakennus", - "fr": "corps de ferme", - "he": "בתי-חווה", - "it": "edificio principale di una fattoria", - "ja": "ファームハウス", - "nb": "våningshus", - "nl": "boerenwoning", - "pl": "gospodarstwo agroturystyczne", - "pt": "casa de campo", - "ru": "фермерский дом", - "sl": "domačija", - "sr": "сеоска кућа", - "sv": "mangårdsbyggnad", - "uk": "фермерський будинок", - "zh": "農舍" - }, - "farm_auxiliary": { - "ca": "edifici agrícola", - "cs": "zemědělská budova", - "de": "landwirtschaftsgebäude", - "el": "γεωργικό κτίριο", - "en": "agricultural structure", - "en-gb": "agricultural building", - "es": "edificio agrícola", - "fi": "maatalousrakennus", - "fr": "construction agricole", - "hu": "mezőgazdasági épület", - "it": "edificio agricolo", - "ja": "農業用構造物", - "nb": "driftsbygning", - "nl": "agrarische bouwconstructie", - "pl": "budynek rolny", - "pt-br": "edifício agrícola", - "ru": "сельскохозяйственное строение", - "sl": "kmetijska zgradba", - "sr": "пољопривредни објекат", - "sv": "ekonomibyggnad", - "uk": "сільськогосподарська споруда", - "zh": "農業建築" - }, - "font": { - "bg": "баптистерий", - "ca": "baptisteri", - "cs": "baptisterium", - "da": "dåbskapel", - "de": "baptisterium", - "el": "βαπτιστήριο", - "en": "baptistery", - "es": "baptisterio", - "et": "baptisteerium", - "fi": "kastekappeli", - "fr": "baptistère", - "he": "בפטיסטריום", - "hr": "krstionica", - "hu": "keresztelőkápolna", - "id": "baptisterium", - "it": "battistero", - "ja": "洗礼堂", - "ko": "세례당", - "nb": "baptisterium", - "nl": "baptisterium", - "pl": "baptysterium", - "pt": "batistério", - "ru": "баптистерий", - "sk": "baptistérium", - "sl": "krstilnica", - "sr": "крстионица", - "sv": "baptisterium", - "th": "หอล้างบาป", - "tr": "vaftizhane", - "uk": "баптистерій", - "zh": "洗禮堂" - }, - "garage": { - "ar": "مرأب", - "bg": "гараж", - "ca": "garatge", - "cs": "garáž", - "el": "γκαράζ", - "en": "garage", - "es": "garaje", - "et": "garaaž", - "fi": "autotalli", - "he": "מוסך (חלק בבית)", - "hr": "garaža", - "hu": "garázs", - "id": "garasi", - "ja": "車庫", - "ko": "차고", - "lt": "garažas", - "nb": "garasje", - "pl": "garaż", - "pt": "garagem", - "ro": "garaj", - "ru": "гараж", - "sl": "garaža", - "sr": "гаража", - "tr": "garaj", - "uk": "гараж", - "vi": "nhà để xe", - "zh": "车库" - }, - "garages": { - "ar": "مرأب", - "bg": "гараж", - "ca": "garatge", - "cs": "garáž", - "el": "γκαράζ", - "en": "garage", - "es": "garaje", - "et": "garaaž", - "fi": "autotalli", - "he": "מוסך (חלק בבית)", - "hr": "garaža", - "hu": "garázs", - "id": "garasi", - "ja": "車庫", - "ko": "차고", - "lt": "garažas", - "nb": "garasje", - "pl": "garaż", - "pt": "garagem", - "ro": "garaj", - "ru": "гараж", - "sl": "garaža", - "sr": "гаража", - "tr": "garaj", - "uk": "гараж", - "vi": "nhà để xe", - "zh": "车库" - }, - "garbage_shed": { - "en": "garbage shed" - }, - "gatehouse": { - "ar": "بوابة مدينة", - "ca": "porta de ciutat", - "cs": "městská brána", - "da": "byport", - "de": "stadttor", - "el": "πύλη της πόλης", - "en": "city gate", - "es": "puerta de la ciudad", - "et": "linnavärav", - "fi": "kaupungin portti", - "fr": "porte de ville", - "he": "שער העיר", - "hu": "városkapu", - "id": "gerbang kota (kuno)", - "it": "porta cittadina", - "ja": "城門", - "ko": "성문", - "nb": "byport", - "nl": "stadspoort", - "pl": "brama miejska", - "pt": "porta da cidade", - "pt-br": "portas da cidade", - "ru": "городские ворота", - "sk": "mestská brána", - "sl": "mestna vrata", - "sr": "капија града", - "sv": "stadsport", - "tr": "şehir kapısı", - "uk": "міська брама", - "vi": "cửa ô", - "zh": "城門" - }, - "grandstand": { - "ar": "مدرج", - "de": "tribüne", - "en": "grandstand", - "es": "tribuna", - "fr": "gradin", - "ja": "グランドスタンド", - "ko": "관중석", - "sv": "huvudläktare", - "th": "อัฒจันทร์", - "vi": "khán đài" - }, - "greenhouse": { - "ar": "دفيئة زراعية", - "bg": "парник", - "ca": "hivernacle", - "cs": "skleník", - "da": "drivhus", - "de": "gewächshaus", - "el": "θερμοκήπιο", - "en": "greenhouse", - "es": "invernadero", - "et": "kasvuhoone", - "fi": "kasvihuone", - "fr": "serre", - "he": "חממה", - "hi": "ग्रीनहाउस", - "hr": "staklenik", - "hu": "üvegház", - "id": "rumah kaca", - "is": "gróðurhús", - "it": "serra", - "ja": "温室", - "ko": "온실", - "lt": "šiltnamis", - "lv": "siltumnīca", - "nb": "drivhus", - "nl": "kas", - "pl": "szklarnia", - "pt": "estufa", - "ro": "seră", - "ru": "теплица", - "sk": "skleník", - "sl": "topla greda", - "sr": "стаклена башта", - "sv": "växthus", - "tr": "sera", - "uk": "оранжерея", - "vi": "nhà kính", - "zh": "溫室", - "zh-cn": "温室" - }, - "ground_station": { - "ar": "محطة أرضية", - "ca": "estació terrestre", - "de": "erdfunkstelle", - "en": "ground station", - "es": "estación de seguimiento de satélites", - "fi": "maa-asema", - "fr": "station terrienne", - "he": "תחנת קרקע", - "hr": "zemaljska satelitska stanica", - "id": "stasiun bumi", - "ja": "地上局", - "ko": "지상국", - "nb": "bakkestasjon", - "nl": "grondstation", - "pl": "stacja naziemna", - "pt": "estação terrestre", - "pt-br": "estação terrena", - "ru": "земная станция", - "sr": "земаљске сателитске станице", - "sv": "markstation", - "tr": "yer istasyonu", - "zh": "地面站" - }, - "hangar": { - "ar": "حظيرة طائرات", - "bg": "хангар", - "cs": "hangár", - "en": "hangar", - "et": "angaar", - "fi": "lentokonehalli", - "he": "האנגר", - "hr": "spremište za zrakoplove", - "ja": "格納庫", - "ko": "격납고", - "lt": "angaras", - "ru": "ангар", - "sk": "hangár", - "sr": "хангар", - "uk": "ангар", - "vi": "xưởng cất máy bay", - "zh": "飞机库" - }, - "hospital": { - "ca": "edifici d'hospital", - "cs": "budova nemocnice", - "de": "krankenhausgebäude", - "el": "νοσοκομειακό κτήριο", - "en": "hospital building", - "es": "edificio de hospital", - "et": "haiglahoone", - "fi": "sairaalarakennus", - "fr": "bâtiment d'hôpital", - "it": "edificio ospedaliero", - "ja": "病院の建築物", - "nl": "ziekenhuisgebouw", - "pl": "budynek szpitalny", - "pt": "prédio do hospital", - "ru": "здание больницы" - }, - "hotel": { - "ca": "edifici d'hotel", - "cs": "budova hotelu", - "da": "hotelbygning", - "de": "hotelgebäude", - "en": "hotel building", - "es": "edificio de hotel", - "et": "hotellihoone", - "fi": "hotellirakennus", - "fr": "hôtel", - "he": "מבנה בית מלון", - "it": "struttura alberghiera", - "ja": "ホテルの建築物", - "nb": "hotellbygning", - "nl": "hotelgebouw", - "pl": "budynek hotelowy", - "pt": "hotel", - "ru": "здание гостиницы", - "sl": "hotelska stavba", - "sv": "hotellbyggnad", - "vi": "toà nhà khách sạn" - }, - "house": { - "ar": "منزل", - "bg": "къща", - "ca": "casa desocupada", - "cs": "dům", - "da": "hus", - "de": "haus", - "el": "οικία", - "en": "vacant house", - "en-ca": "house", - "en-gb": "house", - "es": "casa", - "et": "maja", - "fi": "talo", - "fr": "maison", - "he": "בית מגורים", - "hi": "घर", - "hr": "kuća", - "hu": "ház", - "id": "rumah", - "is": "hús", - "it": "casa", - "ja": "住宅", - "ko": "집", - "lt": "namas", - "lv": "māja", - "nb": "hus", - "nl": "woonhuis", - "pl": "dom", - "pt": "casa", - "ro": "casă", - "ru": "дом", - "sk": "dom", - "sl": "hiša", - "sr": "кућа", - "sv": "övergivet hus", - "th": "บ้าน", - "tr": "ev", - "uk": "житло", - "vi": "nhà ở", - "zh": "住宅" - }, - "houseboat": { - "ar": "بيت عائم", - "ca": "casa vaixell", - "cs": "hausbót", - "da": "husbåd", - "de": "wohnboot", - "en": "houseboat", - "es": "casa flotante", - "fi": "asuntolaiva", - "fr": "maison flottante", - "he": "בית צף", - "hi": "ःईण्डी", - "it": "casa galleggiante", - "ja": "ハウスボート", - "nb": "husbåt", - "nl": "woonboot", - "pl": "barka mieszkalna", - "ru": "хаусбот", - "sv": "husbåt", - "tr": "yüzen ev", - "uk": "вонбот", - "vi": "nhà nổi", - "zh": "住家艇" - }, - "hut": { - "ar": "كوخ", - "bg": "колиба", - "ca": "barraca", - "cs": "chýše", - "de": "hütte", - "en": "hut", - "es": "choza", - "et": "onn", - "fi": "maja", - "fr": "hutte", - "he": "בקתה", - "hi": "hut house in acient", - "id": "pondok", - "it": "capanna", - "ja": "小屋", - "ko": "오두막", - "nb": "hytte", - "pt": "cabana", - "pt-br": "mucambo", - "ru": "лачуга", - "sl": "koča", - "sr": "колиба", - "sv": "koja", - "th": "ปอเนาะ", - "tr": "kulübe", - "uk": "хижа", - "vi": "túp lều", - "zh": "小屋" - }, - "industrial": { - "ar": "منشأة صناعية", - "bg": "индустриално съоръжение", - "ca": "edifici industrial", - "cs": "průmyslová stavba", - "da": "industribygning", - "de": "industriebau", - "el": "βιομηχανικό κτίριο", - "en": "industrial building", - "es": "edificio industrial", - "fi": "teollisuusrakennus", - "fr": "bâtiment industriel", - "hu": "ipari épület", - "id": "bangunan industri", - "it": "edificio industriale", - "ja": "産業構造", - "nb": "industribygning", - "nl": "industrieel gebouw", - "pl": "budynek przemysłowy", - "pt": "edificação industrial", - "ru": "промышленное сооружение", - "sl": "industrijska zgradba", - "sr": "индустријска зграда", - "sv": "industribyggnad", - "uk": "промислова споруда", - "vi": "tòa nhà công nghiệp", - "zh": "工业建筑", - "zh-tw": "工業建築" - }, - "kindergarten": { - "ar": "روضة أطفال", - "bg": "детска градина", - "ca": "llar d'infants", - "cs": "mateřská škola", - "da": "børnehave", - "el": "νηπιαγωγείο", - "en": "kindergarten", - "es": "jardín de infancia", - "et": "lasteaed", - "fi": "esikoulu", - "fr": "école maternelle", - "he": "גן ילדים", - "hi": "किंडरगार्टन", - "hr": "dječji vrtić", - "hu": "óvoda", - "id": "taman kanak-kanak", - "is": "leikskóli", - "it": "scuola dell'infanzia", - "ja": "幼稚園", - "ko": "유치원", - "lt": "vaikų darželis", - "lv": "bērnudārzs", - "nb": "barnehage", - "nl": "kleuterschool", - "pl": "przedszkole", - "pt": "jardim de infância", - "ro": "grădiniță", - "ru": "детский сад", - "sk": "materská škola", - "sl": "vrtec", - "sr": "обданиште", - "sv": "barnträdgård", - "th": "โรงเรียนอนุบาล", - "tr": "anaokulu", - "uk": "дитячий садок", - "vi": "trường mẫu giáo", - "zh": "幼稚園", - "zh-cn": "幼儿园" - }, - "kiosk": { - "ar": "كشك", - "ca": "quiosc", - "cs": "kiosek", - "el": "περίπτερο", - "en": "kiosk", - "es": "quiosco", - "fi": "kioski", - "fr": "kiosque", - "he": "קיוסק", - "hu": "kioszk", - "id": "kios", - "it": "chiosco", - "ja": "キオスク", - "ko": "키오스크", - "lt": "kioskas", - "lv": "kiosks", - "pt": "quiosque", - "ro": "chioșc", - "ru": "киоск", - "sr": "киоск", - "tr": "büfe", - "uk": "кіоск", - "vi": "quầy bán hàng", - "zh": "便亭", - "zh-cn": "自助機台" - }, - "library": { - "ca": "edifici de biblioteca", - "cs": "budova knihovny", - "da": "biblioteksbygning", - "de": "bibliotheksbau", - "el": "κτίριο βιβλιοθήκης", - "en": "library building", - "es": "biblioteca", - "et": "raamatukoguhoone", - "fi": "kirjastorakennus", - "fr": "bibliothèque", - "he": "ספרייה", - "hu": "könyvtárépület", - "id": "gedung perpustakaan", - "it": "edificio bibliotecario", - "ja": "図書館施設", - "lt": "bibliotekos pastatas", - "nl": "bibliotheekgebouw", - "pl": "gmach biblioteki", - "pt": "edifício de biblioteca", - "ro": "bibliotecă", - "ru": "библиотека", - "sl": "stavba knjižnice", - "sv": "biblioteksbyggnad", - "uk": "бібліотечна будівля", - "zh": "圖書館建築" - }, - "manufacture": { - "ar": "حرفية يدوية", - "bg": "манифактура", - "ca": "taller", - "cs": "manufaktura", - "da": "manufaktur", - "de": "manufaktur", - "en": "manufactory", - "es": "manufactura", - "et": "manufaktuur", - "fi": "manufaktuuri", - "fr": "manufacture", - "he": "מלאכת יד", - "hr": "manufaktura", - "hu": "manufaktúra", - "id": "manufaktur", - "it": "manifattura", - "ja": "マニュファクチュア", - "ko": "공장제수공업", - "lt": "manufaktūra", - "lv": "manufaktūras", - "nl": "manufactuur", - "pl": "manufaktura", - "pt": "manufatura", - "ru": "мануфактура", - "sk": "manufaktúra", - "sl": "manufaktura", - "sv": "manufaktur", - "uk": "мануфактура", - "zh": "手工作坊式生产模式" - }, - "marquee": { - "ca": "envelat", - "de": "festzelt", - "en": "pole marquee", - "es": "entoldado", - "fr": "barnum", - "it": "tendone", - "nl": "feesttent", - "sv": "partytält" - }, - "mosque": { - "ar": "مسجد", - "bg": "джамия", - "ca": "mesquita", - "cs": "mešita", - "da": "moské", - "de": "moschee", - "el": "τζαμί", - "en": "mosque", - "es": "mezquita", - "et": "mošee", - "fi": "moskeija", - "fr": "mosquée", - "he": "מסגד", - "hi": "मस्जिद", - "hr": "džamija", - "hu": "mecset", - "id": "masjid", - "is": "moska", - "it": "moschea", - "ja": "モスク", - "ko": "모스크", - "lt": "mečetė", - "lv": "mošeja", - "nb": "moské", - "nl": "moskee", - "pl": "meczet", - "pt": "mesquita", - "ro": "moschee", - "ru": "мечеть", - "sk": "mešita", - "sl": "mošeja", - "sr": "џамија", - "sv": "moské", - "th": "มัสยิด", - "tr": "cami", - "uk": "мечеть", - "vi": "thánh đường hồi giáo", - "zh": "清真寺" - }, - "museum": { - "ar": "بناء متحف", - "ca": "edifici de museu", - "cs": "budova muzea", - "da": "museumsbygning", - "de": "museumsgebäude", - "el": "κτίριο μουσείου", - "en": "museum building", - "es": "edificio de museo", - "et": "muuseumihoone", - "fi": "museorakennus", - "fr": "bâtiment de musée", - "he": "מוזיאון", - "hr": "zgrada muzeja", - "hu": "múzeumépület", - "it": "edificio museale", - "ja": "博物館建築物", - "ko": "박물관 건물", - "lt": "muziejaus pastatas", - "lv": "muzeja ēka", - "nb": "museumsbygning", - "nl": "museumgebouw", - "pl": "budynek muzeum", - "pt": "edifício de museu", - "ro": "clădire de muzeu", - "ru": "здание музея", - "sv": "museibyggnad", - "tr": "müze binası", - "uk": "будівля музею", - "zh": "博物馆建筑" - }, - "office": { - "ar": "مبنى مكاتب", - "bg": "административна сграда", - "ca": "edifici d'oficines", - "cs": "kancelářská budova", - "da": "kontorbygning", - "de": "bürogebäude", - "el": "κτίριο γραφείων", - "en": "office building", - "es": "edificio de oficinas", - "et": "büroohoone", - "fi": "toimistorakennus", - "fr": "immeuble de bureaux", - "he": "בניין משרדים", - "hu": "irodaház", - "id": "bangunan perkantoran", - "it": "edificio per uffici", - "ja": "オフィスビル", - "lv": "biroju ēka", - "nb": "kontorbygning", - "nl": "kantoorgebouw", - "pl": "biurowiec", - "pt": "prédio de escritórios", - "ro": "clădire de birouri", - "ru": "офисное здание", - "sl": "pisarniška stavba", - "sr": "пословна зграда", - "sv": "kontorsbyggnad", - "uk": "офісна будівля", - "vi": "tòa nhà văn phòng", - "zh": "办公大楼", - "zh-hk": "辦公大樓", - "zh-tw": "辦公大樓" - }, - "pagoda": { - "ar": "باغودة", - "bg": "пагода", - "da": "pagode", - "de": "pagode", - "el": "παγόδα", - "en": "pagoda", - "et": "pagood", - "fi": "pagodi", - "fr": "pagode", - "he": "פגודה", - "hi": "पगोडा", - "ja": "仏塔", - "ko": "탑파", - "nb": "pagode", - "nl": "pagode", - "pt": "pagode", - "ro": "pagodă", - "ru": "пагода", - "sr": "пагода", - "sv": "pagod", - "th": "ถะ", - "uk": "пагода", - "vi": "tháp", - "zh": "塔" - }, - "palace": { - "ar": "قصر", - "bg": "дворец", - "ca": "palau", - "cs": "palác", - "da": "palads", - "de": "palast", - "el": "παλάτι", - "en": "palace", - "es": "palacio", - "et": "palee", - "fi": "palatsi", - "fr": "palais", - "he": "ארמון", - "hi": "महल", - "hr": "palača", - "hu": "palota", - "id": "istana", - "is": "höll", - "it": "palazzo", - "ja": "宮殿", - "ko": "궁전", - "lt": "rūmai", - "lv": "pils", - "nb": "palass", - "nl": "paleis", - "pl": "pałac", - "pt": "palácio", - "ro": "palat", - "ru": "дворец", - "sk": "palác", - "sl": "palača", - "sr": "сарај", - "sv": "palats", - "th": "วัง", - "tr": "saray", - "uk": "палац", - "vi": "cung điện", - "zh": "宮殿", - "zh-cn": "宫殿" - }, - "parliament": { - "ca": "edifici parlamentari", - "cs": "budova parlamentu", - "da": "parlamentsbygning", - "de": "parlamentsgebäude", - "el": "κτίριο της βουλής", - "en": "parliament building", - "es": "edificio parlamentario", - "fi": "parlamenttitalo", - "fr": "bâtiment parlementaire", - "he": "מבנה פרלמנט", - "hu": "parlamenti épület", - "id": "gedung parlemen", - "it": "edificio parlamentario", - "ja": "議事堂", - "lt": "parlamento pastatas", - "lv": "parlamenta ēka", - "nb": "parlamentsbygning", - "nl": "parlementsgebouw", - "pl": "budynek parlamentu", - "pt": "edifício parlamentar", - "ro": "clădirea parlamentului", - "ru": "здание парламента", - "sv": "parlamentsbyggnad", - "tr": "meclis binası", - "uk": "будівля парламенту", - "zh": "議會建築物", - "zh-cn": "议会建筑物" - }, - "pavilion": { - "ca": "instal·lacions esportives", - "de": "sporthalle", - "en": "sports pavilion", - "es": "pabellón deportivo", - "it": "palazzetto dello sport", - "ru": "спортивный павильон" - }, - "public": { - "ar": "مبنى حكومي", - "bg": "обществена сграда", - "ca": "edifici públic", - "cs": "veřejná budova", - "de": "öffentliches gebäude", - "el": "δημόσιο κτίριο", - "en": "public building", - "es": "edificio público", - "fi": "julkinen rakennus", - "fr": "bâtiment public", - "he": "מבנה ציבורי", - "hu": "középület", - "id": "bangunan publik", - "it": "edificio pubblico", - "ja": "公共建築物", - "ko": "공공건물", - "lt": "viešas pastatas", - "lv": "sabiedriskā ēka", - "nb": "offentlig bygning", - "nl": "openbaar gebouw", - "pl": "budynek użyteczności publicznej", - "pt": "edifício público", - "ro": "clădire publică", - "ru": "общественное здание", - "sl": "javna stavba", - "sv": "offentlig byggnad", - "uk": "громадська будівля", - "zh": "公共建築" - }, - "residential": { - "ar": "مبنى سكني", - "ca": "edifici residencial", - "cs": "bytová budova", - "da": "beboelsesejendom", - "de": "wohngebäude", - "el": "κτίριο κατοικιών", - "en": "residential building", - "es": "vivienda", - "et": "elamu", - "fi": "asuinrakennus", - "fr": "bâtiment d'habitation", - "he": "בניין מגורים", - "hu": "lakóépület", - "id": "bangunan perumahan", - "it": "edificio abitativo", - "ja": "居住用建築物", - "lv": "dzīvojamā ēka", - "nb": "boligbygning", - "nl": "woongebouw", - "pl": "budynek mieszkalny", - "pt": "edifício residencial", - "ru": "жилое здание", - "sk": "bytová budova", - "sl": "stanovanjska zgradba", - "sv": "bostadshus", - "tr": "konut binası", - "uk": "житловий будинок", - "zh": "居住建築物" - }, - "retail": { - "ca": "edifici de botigues", - "de": "einzelhandelsgebäude", - "en": "retail building", - "es": "edificio de venta al por menor", - "fi": "vähittäiskaupan rakennus", - "fr": "bâtiment de vente au détail", - "lv": "tirdzniecības ēka", - "nl": "gebouw voor detailhandel", - "pl": "budynek z przeznaczeniem dla handlu detalicznego", - "ru": "здание для розничной торговли" - }, - "riding_hall": { - "ca": "picaria", - "cs": "jízdárna", - "de": "reithalle", - "en": "riding hall", - "es": "picadero", - "et": "maneež", - "fi": "maneesi", - "fr": "manège", - "it": "maneggio", - "lt": "maniežas", - "nb": "ridehus", - "nl": "manege", - "pl": "ujeżdżalnia", - "pt": "picadeiro", - "ru": "конноспортивный манеж", - "sv": "ridhus", - "tr": "manej", - "zh": "室内骑马场" - }, - "roof": { - "cs": "přístřešek", - "de": "dach", - "en": "roof", - "pl": "zadaszenie", - "pt-br": "cobertura" - }, - "school": { - "ar": "مبنى مدرسة", - "bg": "училище", - "ca": "edifici escolar", - "cs": "školní budova", - "da": "skolebygning", - "de": "schulgebäude", - "el": "σχολικό κτίριο", - "en": "school building", - "es": "edificio escolar", - "et": "koolihoone", - "fi": "koulurakennus", - "fr": "bâtiment scolaire", - "he": "בניין בית ספר", - "hr": "zgrada škole", - "hu": "iskolaépület", - "id": "bangunan sekolah", - "it": "edificio scolastico", - "ja": "学校施設", - "ko": "학교 건물", - "nb": "skolebygning", - "nl": "schoolgebouw", - "pl": "budynek szkoły", - "pt": "edifício escolar", - "ru": "здание учебного заведения", - "sr": "школска зграда", - "sv": "skolbyggnad", - "th": "อาคารเรียน", - "uk": "будівля школи", - "zh": "学校建筑" - }, - "semi": { - "ca": "casa adossada", - "cs": "dvojdům", - "de": "doppelhaus", - "en": "semi-detached house", - "es": "casa adosada", - "fi": "paritalo", - "fr": "maison jumelée", - "it": "casa bifamiliare", - "ja": "セミ・デタッチド", - "nb": "tomannsbolig", - "nl": "twee-onder-een-kapwoning", - "pl": "bliźniak", - "ru": "сблокированный дом", - "zh": "雙併屋", - "zh-cn": "半独立洋房" - }, - "semidetached_house": { - "ca": "casa adossada", - "cs": "dvojdům", - "de": "doppelhaus", - "en": "semi-detached house", - "es": "casa adosada", - "fi": "paritalo", - "fr": "maison jumelée", - "it": "casa bifamiliare", - "ja": "セミ・デタッチド", - "nb": "tomannsbolig", - "nl": "twee-onder-een-kapwoning", - "pl": "bliźniak", - "ru": "сблокированный дом", - "zh": "雙併屋", - "zh-cn": "半独立洋房" - }, - "service": { - "de": "dienstgebäude", - "en": "service building", - "fi": "huoltorakennus", - "nl": "utiliteitsgebouw", - "sv": "servicebyggnader" - }, - "shed": { - "ar": "سقيفة", - "ca": "cobert", - "cs": "kůlna", - "da": "skur", - "de": "schuppen", - "de-ch": "schopf", - "en": "shed", - "es": "tinglado (cobertizo)", - "et": "kuur", - "fi": "vaja", - "fr": "remise", - "he": "צריף", - "it": "capannone", - "ko": "광", - "lt": "daržinė", - "nb": "skur", - "nl": "loods", - "pl": "szopa", - "pt": "edícula", - "ru": "сарай", - "sv": "skjul", - "uk": "повітка", - "vi": "lán", - "zh": "木棚" - }, - "shrine": { - "ar": "ضريح مقدس", - "bg": "светилище", - "ca": "templet", - "cs": "svatyně", - "da": "helligdom", - "de": "schrein", - "el": "βωμός", - "en": "shrine", - "es": "templete", - "fr": "sanctuaire", - "he": "מקדש", - "hu": "kegyhely", - "id": "mazbah", - "it": "santuario", - "ja": "聖堂", - "ko": "성당", - "lv": "svētnīca", - "nb": "helligdom", - "nl": "schrijn", - "pl": "miejsce święte", - "pt": "santuário", - "ru": "святилище", - "sk": "svätyňa", - "sl": "svetišče", - "sr": "svetilište", - "sv": "helgedom", - "th": "ศาลเจ้า", - "uk": "святилище", - "vi": "điện thờ", - "zh": "聖祠", - "zh-cn": "圣物箱" - }, - "slurry_tank": { - "da": "gylletank", - "de": "güllegrube", - "en": "slurry pit", - "fr": "fosse à lisier", - "ja": "肥溜め", - "nl": "mestsilo", - "sv": "gödselbrunn", - "zh": "漿池" - }, - "stable": { - "ar": "إسطبل", - "bg": "конюшня", - "ca": "cavallerissa", - "cs": "konírna", - "da": "hesteboks", - "de": "pferdestall", - "el": "στάβλος", - "en": "stable", - "es": "cuadra", - "et": "tall", - "fi": "talli", - "fr": "écurie", - "he": "אורווה", - "hi": "अस्तबल", - "hr": "ergela", - "hu": "istálló", - "id": "istal", - "it": "scuderia ippica", - "ja": "厩舎", - "ko": "축사", - "lt": "arklidė", - "lv": "stallis", - "nb": "stall", - "nl": "stal", - "pl": "stajnia", - "pt": "cavalariça", - "ro": "grajd", - "ru": "конюшня", - "sr": "штала", - "sv": "häststall", - "tr": "ahır", - "uk": "стайня", - "zh": "馬棚" - }, - "stadium": { - "ar": "ملعب", - "bg": "стадион", - "ca": "estadi", - "cs": "stadion", - "da": "stadion", - "de": "stadion", - "el": "στάδιο", - "en": "stadium", - "es": "estadio", - "et": "staadion", - "fi": "stadion", - "fr": "stade", - "he": "אצטדיון", - "hi": "क्रीडांगन", - "hr": "stadion", - "hu": "stadion", - "id": "stadion", - "it": "stadio", - "ja": "スタジアム", - "ko": "스타디움", - "lt": "stadionas", - "lv": "stadions", - "nb": "stadion", - "nl": "stadion", - "pl": "stadion sportowy", - "pt": "estádio", - "ro": "stadion", - "ru": "стадион", - "sk": "štadión", - "sl": "stadion", - "sr": "стадион", - "sv": "stadion", - "th": "สนามกีฬา", - "tr": "stadyum", - "uk": "стадіон", - "vi": "sân vận động", - "zh": "體育場" - }, - "static_caravan": { - "ar": "منزل متنقل", - "cs": "mobilní dům", - "da": "mobilehome", - "de": "mobilheim", - "en": "mobile home", - "fi": "siirrettävä talo", - "fr": "maison mobile", - "he": "בית נייד", - "it": "casa mobile", - "ja": "トレーラーハウス", - "nb": "modulhus", - "nl": "woonwagen", - "ru": "переносные дома", - "sl": "mobilni dom", - "th": "บ้านเคลื่อนที่", - "zh": "流動房屋" - }, - "stilt_house": { - "bg": "наколно жилище", - "ca": "palafit", - "de": "pfahlbau", - "el": "αρχική παλαφίτη", - "en": "stilt house", - "es": "palafito", - "fr": "cité lacustre", - "he": "בתי כלונסאות", - "hr": "sojenica", - "hu": "cölöpház", - "id": "rumah panggung", - "it": "palafitta", - "ja": "高床式住居", - "ko": "호상 가옥", - "lt": "palafito", - "nl": "paalwoning", - "pl": "palafit", - "pt": "palafita", - "ro": "palafită", - "ru": "свайное жилище", - "sl": "hiša na kolih", - "sr": "сојеница", - "sv": "pålbyggnader", - "uk": "пальові будівлі", - "vi": "nhà sàn", - "zh": "干欄屋" - }, - "sty": { - "ar": "خنزارة", - "bg": "кочина", - "ca": "porcellera", - "cs": "vepřín", - "da": "svinestald", - "de": "schweinestall", - "en": "pigsty", - "es": "pocilga", - "et": "sigala", - "fi": "sikala", - "fr": "porcherie", - "he": "דיר חזירים", - "id": "kandang babi", - "it": "porcile", - "ko": "돼지우리", - "lt": "tvartas", - "nb": "grisehus", - "nl": "beddenstal", - "pl": "chlew", - "ru": "свинарник", - "sv": "svinstia", - "uk": "свинарник", - "zh": "豬圈" - }, - "supermarket": { - "de": "supermarktgebäude", - "en": "supermarket building", - "nl": "supermarktgebouw" - }, - "synagogue": { - "ar": "كنيس", - "bg": "синагога", - "ca": "sinagoga", - "cs": "synagoga", - "da": "synagoge", - "de": "synagoge", - "el": "συναγωγή", - "en": "synagogue", - "es": "sinagoga", - "et": "sünagoog", - "fi": "synagoga", - "he": "בית כנסת", - "hi": "यहूदी मंदिर", - "hr": "sinagoga", - "hu": "zsinagóga", - "id": "sinagoge", - "is": "sýnagóga", - "it": "sinagoga", - "ja": "シナゴーグ", - "ko": "시나고그", - "lt": "sinagoga", - "lv": "sinagoga", - "nb": "synagoge", - "nl": "synagoge", - "pl": "synagoga", - "pt": "sinagoga", - "ro": "sinagogă", - "ru": "синагога", - "sk": "synagóga", - "sl": "sinagoga", - "sr": "синагога", - "sv": "synagoga", - "th": "สุเหร่ายิว", - "tr": "sinagog", - "uk": "синагога", - "vi": "hội đường do thái giáo", - "zh": "猶太會堂" - }, - "temple": { - "ar": "معبد هندوسي", - "bg": "мандир", - "ca": "mandir", - "cs": "mandir", - "da": "hinduistiske templer", - "de": "hindutempel", - "el": "ινδουιστικός ναός", - "en": "hindu temple", - "en-ca": "temple", - "en-gb": "temple", - "es": "mandir", - "et": "tempel", - "fi": "mandir", - "fr": "mandir", - "he": "מקדש הינדי", - "hi": "मन्दिर", - "hr": "indijski hram", - "hu": "hindu templom", - "id": "mandir", - "it": "mandir", - "ja": "ヒンドゥー教寺院", - "ko": "만디르", - "lt": "šventykla", - "lv": "templis", - "nb": "hindutempel", - "nl": "hindoeïstische tempel", - "pl": "mandir", - "pt": "templo hindu", - "pt-br": "templo", - "ro": "templu", - "ru": "индуистский храм", - "sk": "chrám", - "sl": "tempelj", - "sr": "хиндуистички храм", - "sv": "tempel", - "th": "โบสถ์พราหมณ์", - "tr": "hindu tapınağı", - "uk": "індуїстський храм", - "vi": "đền hindu", - "zh": "印度教神廟", - "zh-cn": "神庙", - "zh-hk": "神廟", - "zh-tw": "神廟" - }, - "terrace": { - "ar": "بيت ملاصق", - "bg": "градска къща", - "ca": "terraced house", - "cs": "řadový dům", - "da": "rækkehus", - "de": "reihenhausgruppe", - "de-ch": "reihenhaus", - "en": "terrace of houses", - "en-ca": "terraced house", - "en-gb": "terraced house", - "es": "casa adosada", - "fi": "rivitalo", - "fr": "ensemble de maisons en rangée", - "he": "רצף בתים", - "id": "rumah teras", - "it": "casa a schiera", - "ja": "テラスハウス", - "ko": "테라스 하우스", - "nb": "rekkehus", - "nl": "huizenrij", - "pt": "terraced house", - "ru": "несколько домов, построенных как террасный дом", - "sk": "radový rodinný dom", - "sv": "radhus", - "th": "บ้านแถว", - "tr": "teraslı evler", - "zh": "排屋", - "zh-cn": "联排房屋" - }, - "tower": { - "ar": "برج", - "bg": "кула", - "ca": "torre", - "cs": "věž", - "da": "tårn", - "de": "turm", - "el": "πύργος", - "en": "tower", - "es": "torre", - "et": "torn", - "fi": "torni", - "fr": "tour", - "he": "מגדל", - "hi": "बुर्ज", - "hr": "toranj", - "hu": "torony", - "id": "menara", - "is": "turn", - "it": "torre", - "ja": "塔", - "ko": "탑", - "lt": "bokštas", - "lv": "tornis", - "nb": "tårn", - "nl": "toren", - "pl": "wieża", - "pt": "torre", - "ro": "turn", - "ru": "башня", - "sk": "veža", - "sl": "stolp", - "sr": "торањ", - "sv": "torn", - "th": "หอคอย", - "tr": "kule", - "uk": "вежа", - "vi": "tháp", - "zh": "塔式建築", - "zh-cn": "塔式建筑" - }, - "townhall": { - "ar": "مبنى بلدية", - "ca": "seu del govern local", - "cs": "obecní dům", - "da": "rådhus", - "de": "rathaus", - "el": "δημαρχείο", - "en": "town hall", - "es": "casa consistorial", - "et": "vallamaja", - "fi": "kunnantalo", - "fr": "hôtel de ville", - "he": "בניין ממשל מקומי", - "hu": "városháza", - "id": "balai kota", - "it": "palazzo comunale", - "ja": "役所", - "ko": "지방 관청", - "lv": "pilsētas dome", - "nb": "kommunehus", - "nl": "gemeentehuis", - "pl": "ratusz", - "pt": "câmara municipal", - "pt-br": "sede de prefeitura", - "ro": "primărie", - "ru": "дом общины", - "sk": "obecný dom", - "sl": "mestna hiša", - "sr": "градска кућа", - "sv": "kommunhus", - "tr": "belediye binası", - "uk": "ратуша", - "vi": "tòa thị chính", - "zh": "地方政府大樓" - }, - "train_station": { - "ar": "مبنى المحطة", - "ca": "edifici d'estació de ferrocarril", - "cs": "staniční budova", - "da": "stationsbygning", - "de": "empfangsgebäude", - "de-at": "aufnahmsgebäude", - "el": "κτίριο σταθμού", - "en": "station building", - "es": "edificio de la estación", - "et": "jaamahoone", - "fi": "asemarakennus", - "fr": "bâtiment voyageurs", - "hu": "állomásépület", - "id": "bangunan stasiun", - "it": "fabbricato viaggiatori", - "ja": "駅ビル", - "ko": "철도역사", - "nb": "stasjonsbygning", - "nl": "stationsgebouw", - "pl": "dworzec kolejowy", - "pt": "edifício da estação ferroviária", - "ru": "железнодорожный вокзал", - "sr": "зграда железничке станице", - "sv": "stationsbyggnad", - "tr": "gar", - "uk": "залізничний вокзал", - "zh": "站房" - }, - "transformer_tower": { - "da": "transformatortårn", - "de": "turmstation", - "en": "transformer tower", - "fr": "cabine haute", - "ro": "post de transformare", - "sv": "transformatortorn" - }, - "transportation": { - "en": "public transportation building" - }, - "university": { - "ca": "edifici universitari", - "cs": "univerzitní budova", - "da": "universitetsbygning", - "de": "universitätsgebäude", - "el": "πανεπιστημιακό κτίριο", - "en": "university building", - "es": "edificio universitario", - "fi": "yliopistorakennus", - "fr": "bâtiment universitaire", - "he": "בניין אוניברסיטאי", - "hu": "egyetemi épület", - "it": "edificio universitario", - "ja": "大学の建築物", - "ko": "대학 건물", - "nb": "universitetsbygning", - "nl": "universiteitsgebouw", - "pl": "budynek uniwersytecki", - "pt": "edifício universitário", - "ro": "clădire de universitate", - "ru": "университетское здание", - "sr": "универзитетска зграда", - "sv": "universitetsbyggnad", - "uk": "університетська будівля", - "zh": "大学建筑物" - }, - "warehouse": { - "ca": "alfòndec", - "cs": "sklad", - "da": "pakhus", - "de": "speicher", - "en": "warehouse", - "es": "almacén", - "fi": "varastorakennus", - "fr": "entrepôt", - "hu": "raktárépület", - "nb": "pakkhus", - "nl": "pakhuis", - "pl": "magazyn", - "pt": "armazém", - "ru": "пакгауз", - "sv": "packhus", - "tr": "depolama", - "uk": "гуртівня" - }, - "water_tower": { - "ar": "برج مياه", - "bg": "водонапорна кула", - "ca": "torre d'aigua", - "cs": "vodárenská věž", - "da": "vandtårn", - "de": "wasserturm", - "en": "water tower", - "es": "torre de agua", - "et": "veetorn", - "fi": "vesitorni", - "fr": "château d'eau", - "he": "מגדל מים", - "hr": "vodotoranj", - "hu": "víztorony", - "id": "menara air", - "it": "serbatoio idrico a torre", - "ja": "給水塔", - "ko": "급수탑", - "lt": "vandens bokštas", - "lv": "ūdenstornis", - "nb": "vanntårn", - "nl": "watertoren", - "pl": "wieża ciśnień", - "pt": "castelo d'água", - "pt-br": "caixa-d'água", - "ro": "castel de apă", - "ru": "водонапорная башня", - "sk": "vodná veža", - "sl": "vodni stolp", - "sr": "водоторањ", - "sv": "vattentorn", - "tr": "su kulesi", - "uk": "водонапірна вежа", - "vi": "tháp nước", - "zh": "水塔" - }, - "yes": { - "ar": "مبنى", - "bg": "сграда", - "ca": "edifici", - "cs": "budova", - "da": "bygning", - "de": "gebäude", - "el": "κτίριο", - "en": "building", - "es": "edificio", - "et": "hoone", - "fi": "rakennus", - "fr": "bâtiment", - "he": "בניין", - "hi": "भवन", - "hr": "zgrada", - "hu": "épület", - "id": "bangunan", - "is": "bygging", - "it": "edificio", - "ja": "建築物", - "ko": "건물", - "lt": "statinys", - "lv": "celtne", - "nb": "bygning", - "nl": "gebouw", - "pl": "budynek", - "pt": "edifício", - "ro": "clădire", - "ru": "здание", - "sk": "budova", - "sl": "stavba", - "sr": "зграда", - "sv": "byggnad", - "th": "อาคาร", - "tr": "bina", - "uk": "будівля", - "vi": "tòa nhà", - "zh": "建筑物", - "zh-hk": "建築物", - "zh-tw": "建築物" - } - }, - "bunker_type": { - "hardened_aircraft_shelter": { - "ar": "ملجأ طائرات محصن", - "en": "hardened aircraft shelter", - "es": "refugio reforzado para aviones", - "he": "דיר תת-קרקעי", - "ja": "堅固化航空機用掩体", - "nb": "shelter", - "nl": "shelter", - "ru": "арочное укрытие", - "zh": "加固飛機掩體" - }, - "personnel_shelter": { - "cs": "einmannbunker", - "de": "splitterschutzzelle", - "en": "single person bunker", - "en-gb": "einmannbunker", - "pl": "jednoosobowy bunkier", - "sk": "einmannbunker" - }, - "pillbox": { - "ar": "منعة", - "bg": "дълговременно огнево съоръжение", - "ca": "fortificació", - "en": "pillbox", - "es": "fortín", - "et": "punker", - "fr": "emplacement de tir abrité", - "he": "פילבוקס", - "id": "benteng pengintai", - "ja": "トーチカ", - "ko": "특화점", - "lt": "atsparioji ugniavietė", - "pl": "umocnione stanowisko ogniowe", - "ru": "долговременная огневая точка", - "tr": "korugan", - "uk": "довгочасна вогнева точка", - "zh": "碉堡" - } - }, - "busway": { - "lane": { - "ar": "مسار محمي للحافلات", - "ca": "carril bus", - "cs": "vyhrazený jízdní pruh", - "da": "busbane", - "de": "busfahrstreifen", - "el": "λεωφορειολωρίδα", - "en": "bus lane", - "es": "carril de buses", - "fi": "linja-autokaista", - "fr": "transport en commun en site propre", - "he": "נתיב תחבורה ציבורית", - "hr": "autobusna traka", - "hu": "buszsáv", - "id": "jalur khusus bus", - "is": "sérakrein", - "it": "corsia preferenziale", - "ja": "バスレーン", - "ko": "버스전용차로", - "lt": "autobusų juosta", - "nb": "kollektivfelt", - "nl": "busbaan", - "pl": "buspas", - "pt": "faixa de bus", - "pt-br": "corredor de ônibus", - "ru": "выделенная полоса", - "sv": "bussfil", - "tr": "otobüs şeridi", - "uk": "автобусна смуга", - "zh": "公車專用道", - "zh-hk": "巴士專線" - } - }, - "capacity": { - "": { - "ar": "تصريح وقوف السيارات للمعاقين", - "de": "behindertenparkplatz", - "en": "disabled parking permit", - "es": "estacionamiento para personas con movilidad reducida", - "fi": "liikkumisesteisen pysäköintitunnus", - "fr": "carte de stationnement pour personne handicapées", - "hu": "mozgáskorlátozottaknak szóló parkolási igazolvány", - "id": "ijin parkir disabilitas", - "it": "contrassegno di parcheggio per disabili", - "ja": "パーキングパーミット", - "ko": "장애인 전용 주차구역", - "nb": "handikapp-parkering", - "nl": "gehandicaptenparkeerkaart", - "sv": "parkeringstillstånd för rörelsehindrad", - "zh": "身心障礙者專用停車位許可證" - } - }, - "capital": { - "yes": { - "ar": "عاصمة", - "bg": "столица", - "ca": "capital", - "cs": "hlavní město", - "da": "hovedstad", - "de": "hauptstadt", - "el": "πρωτεύουσα", - "en": "capital city", - "es": "capital", - "et": "pealinn", - "fi": "pääkaupunki", - "fr": "capitale", - "he": "עיר בירה", - "hi": "राजधानी", - "hr": "glavni grad", - "hu": "főváros", - "id": "ibu kota", - "is": "höfuðborg", - "it": "capitale", - "ja": "首都", - "ko": "수도", - "lt": "sostinė", - "lv": "galvaspilsēta", - "nb": "hovedstad", - "nl": "hoofdstad", - "pl": "stolica", - "pt": "capital", - "ro": "capitală", - "ru": "столица", - "sk": "hlavné mesto", - "sl": "glavno mesto", - "sr": "главни град", - "sv": "huvudstad", - "th": "เมืองหลวง", - "tr": "başkent", - "uk": "столиця", - "vi": "thủ đô", - "zh": "首都" - } - }, - "cargo": { - "vehicle": { - "ca": "grua (vehicle)", - "cs": "odtahový automobil", - "da": "bjærgningskøretøj", - "de": "abschleppfahrzeug", - "en": "tow truck", - "et": "puksiirauto", - "fi": "hinausauto", - "fr": "remorqueuse", - "he": "משאית גרר", - "id": "mobil derek", - "it": "carro attrezzi", - "ja": "レッカー車", - "ko": "견인차", - "nb": "bergingsbil", - "nl": "bergingsvoertuig", - "ro": "tractări auto", - "ru": "эвакуатор (транспортное средство)", - "sv": "bärgningsfordon", - "tr": "çekici", - "zh": "拖吊車" - } - }, - "carpenter": { - "cabinetmaker": { - "ar": "خزانة", - "ca": "ebenisteria", - "cs": "kabinet", - "de": "kunsttischlerei", - "el": "επιπλοποιία", - "en": "cabinetry", - "es": "ebanistería", - "fr": "ébénisterie", - "it": "ebanisteria", - "nb": "møbelsnekring", - "nl": "kabinet (meubel)", - "pl": "kabinet", - "pt": "marcenaria", - "ru": "кабинет", - "tr": "dolap (mobilya)", - "zh": "櫃" - }, - "trim": { - "ar": "مارتكليه", - "bg": "маркетри", - "ca": "marqueteria", - "cs": "marketerie", - "da": "marqueterie", - "de": "marketerie", - "el": "μαρκετερί", - "en": "marquetry", - "es": "marquetería", - "et": "marketrii", - "fr": "marqueterie", - "hu": "intarzia", - "it": "intarsio", - "ja": "マーケトリー", - "lv": "inkrustācija", - "nl": "marqueterie", - "pl": "markieteria", - "pt": "marchetaria", - "ru": "маркетри", - "tr": "marküteri", - "uk": "маркетрі", - "zh": "細木鑲嵌" - } - }, - "castle": { - "folly": { - "ar": "حماقة", - "ca": "capritx", - "da": "folly (havekunst)", - "en": "folly", - "es": "capricho", - "fi": "koristerakennus", - "fr": "fabrique de jardin", - "he": "מבנה שטות", - "it": "capriccio (architettura)", - "ja": "フォリー", - "ru": "каприз", - "sv": "fåfänga", - "th": "สิ่งก่อสร้างตกแต่ง", - "tr": "dekorasyon binası", - "uk": "примха", - "vi": "tòa nhà nực cười", - "zh": "裝飾性建築" - } - }, - "castle_type": { - "castrum": { - "ar": "كاسترا", - "bg": "каструм", - "de": "römisches militärlager", - "el": "ρωμαϊκό στρατόπεδο", - "en": "castrum", - "en-ca": "castra", - "en-gb": "castra", - "fi": "castra", - "fr": "camp romain", - "he": "קסטרום", - "ja": "カストラ", - "pl": "castra romana", - "ro": "castru", - "ru": "каструм", - "sk": "kastrum", - "sl": "rimski tabor", - "sr": "каструм", - "tr": "castra", - "uk": "каструм", - "zh": "古罗马兵营" - }, - "kremlin": { - "ar": "كرملين", - "bg": "кремъл", - "cs": "kreml", - "da": "kreml", - "de": "kreml", - "el": "κρεμλίνο", - "en": "kremlin", - "et": "kreml", - "fi": "kreml", - "he": "קרמלין", - "hi": "क्रेमलिन", - "hr": "kremlj", - "is": "kreml", - "it": "cremlino", - "ja": "クレムリ", - "ko": "크렘린", - "lt": "kremlius", - "lv": "kremlis", - "nb": "kreml", - "pl": "kreml", - "ru": "кремль", - "sk": "kremeľ", - "sl": "kremelj", - "sr": "кремљ", - "sv": "kreml", - "uk": "кремль (фортеця)", - "vi": "kremli", - "zh": "克里姆林" - }, - "manor": { - "ar": "قصر مالك العزبة", - "ca": "casa pairal", - "cs": "panské sídlo", - "da": "herregård", - "de": "herrenhaus", - "el": "αγροτική έπαυλη", - "en": "manor house", - "es": "casa señorial", - "et": "härrastemaja", - "fi": "kartanon päärakennus", - "fr": "manoir", - "he": "אחוזה", - "hr": "kurija", - "hu": "udvarház", - "id": "rumah bangsawan", - "it": "maniero", - "ja": "マナー・ハウス", - "ko": "매너하우스", - "lt": "dvaras", - "lv": "muižas dzīvojamā ēka", - "nb": "herregård", - "nl": "manoir", - "pl": "dwór", - "pt": "solar", - "ro": "conac", - "ru": "усадебный дом", - "sk": "kaštieľ", - "sl": "dvor", - "sr": "каштел", - "sv": "herrgårdshus", - "tr": "malikane", - "uk": "маєток", - "zh": "莊園大屋" - }, - "shiro": { - "ar": "قلعة يابانية", - "ca": "castell japonès", - "cs": "japonský hrad", - "de": "japanische burg", - "el": "ιαπωνικό κάστρο", - "en": "japanese castle", - "es": "castillo japonés", - "fr": "château japonais", - "he": "טירה יפנית", - "hu": "japán várkastélyai", - "id": "istana jepang", - "it": "castello giapponese", - "ja": "日本の城", - "ko": "일본의 성", - "lv": "japāņu pilis", - "nb": "japansk borg", - "nl": "japans kasteel", - "pt": "castelo japonês", - "ru": "японский замок", - "sl": "japonski grad", - "sr": "јапански дворац", - "sv": "japanskt slott", - "th": "ปราสาทญี่ปุ่น", - "tr": "japon kalesi", - "uk": "японський замок", - "zh": "日式城堡" - }, - "stately": { - "ar": "شاتو", - "ca": "country house", - "cs": "zámek", - "da": "slot", - "de": "schloss", - "el": "σατώ", - "en": "stately home", - "es": "château", - "et": "loss", - "fi": "kartanolinna", - "fr": "maison seigneuriale", - "he": "שאטו", - "hr": "dvorac", - "hu": "kastély", - "it": "château", - "ja": "シャトー", - "ko": "샤토", - "lt": "pilis", - "nb": "slott", - "nl": "statig huis", - "pl": "château", - "pt": "château", - "ro": "castel", - "ru": "шато", - "sk": "zámok", - "sl": "graščina", - "sr": "дворац", - "th": "คฤหาสน์ภูมิฐาน", - "tr": "şato", - "uk": "шато", - "zh": "法式城堡" - } - }, - "cemetery": { - "grave": { - "ar": "قبر", - "bg": "гроб", - "ca": "sepultura", - "cs": "hrob", - "da": "grav", - "de": "grab", - "el": "τάφος", - "en": "grave", - "es": "sepultura", - "et": "haud", - "fi": "hauta", - "fr": "tombe", - "he": "קבר", - "hi": "कब्र", - "hr": "grob", - "hu": "síremlék", - "id": "kubur", - "is": "gröf", - "it": "sepoltura", - "ja": "墓穴", - "ko": "묘소", - "lt": "kapas", - "lv": "kaps", - "nb": "grav", - "nl": "graf", - "pl": "grób", - "pt": "túmulo", - "ro": "mormânt", - "ru": "могила", - "sk": "hrob", - "sl": "grob", - "sr": "гроб", - "sv": "grav", - "tr": "mezar", - "uk": "могила", - "vi": "mộ", - "zh": "坟墓", - "zh-hk": "墳墓", - "zh-tw": "墳墓" - }, - "war_cemetery": { - "bg": "военно гробище", - "ca": "cementeri de guerra", - "da": "krigskirkegård", - "de": "kriegsgräberstätte", - "en": "war cemetery", - "es": "cementerio de guerra", - "fi": "sotahautausmaa", - "fr": "cimetière de guerre", - "it": "cimitero di guerra", - "nb": "krigsgravkirkegård", - "nl": "oorlogsbegraafplaats", - "pl": "cmentarz wojenny", - "pt": "túmulo de guerra", - "ru": "военное кладбище", - "sv": "krigsbegravningsplats", - "uk": "військовий цвинтар" - } - }, - "china_class": { - "cun": { - "ar": "قرية صينية", - "bg": "село в китай", - "ca": "poble de la xina", - "cs": "vesnice v čínské lidové republice", - "da": "kinesisk landsby", - "de": "dorf", - "el": "οικισμός της λαϊκής δημοκρατίας της κίνας", - "en": "chinese village", - "es": "aldea", - "fi": "kylä kiinassa", - "fr": "village de chine", - "he": "כפר בסין העממית", - "id": "desa di tiongkok", - "it": "villaggi", - "ja": "村", - "ko": "마을", - "lt": "kaimas", - "nb": "tettsted i kina", - "nl": "dorp in china", - "pl": "wioska w chinach", - "pt-br": "vila chinesa", - "ru": "деревня кнр", - "sr": "село у нр кини", - "sv": "by i kina", - "uk": "село в китаї", - "vi": "đơn vị hành chính cấp thôn", - "zh": "行政村" - }, - "jiedao": { - "ar": "منطقة فرعية في الصين", - "ca": "subdistricte de la xina", - "de": "straßenviertel", - "de-ch": "strassenviertel", - "en": "subdistrict of china", - "es": "subdistrito", - "fr": "sous-district", - "id": "subdistrik, tiongkok", - "it": "sottodistretto della cina", - "ja": "街道", - "ko": "가도변사소", - "nl": "subdistricten van china", - "ru": "уличный комитет (кнр)", - "sv": "kinas stadsdelsdistrikt", - "uk": "підрайони (кнр)", - "vi": "nhai đạo biện sự xứ", - "zh": "街道办事处", - "zh-hk": "街道", - "zh-tw": "街道辦事處" - }, - "village": { - "ar": "قرية صينية", - "bg": "село в китай", - "ca": "poble de la xina", - "cs": "vesnice v čínské lidové republice", - "da": "kinesisk landsby", - "de": "dorf", - "el": "οικισμός της λαϊκής δημοκρατίας της κίνας", - "en": "village", - "es": "aldea", - "fi": "kylä kiinassa", - "fr": "village de chine", - "he": "כפר בסין העממית", - "id": "desa di tiongkok", - "it": "villaggi", - "ja": "中国の村級行政区画", - "ko": "마을", - "lt": "kaimas", - "nb": "tettsted i kina", - "nl": "dorp in china", - "pl": "wioska w chinach", - "pt-br": "vila chinesa", - "ru": "деревня кнр", - "sr": "село у нр кини", - "sv": "by i kina", - "uk": "село в китаї", - "vi": "đơn vị hành chính cấp thôn", - "zh": "行政村" - }, - "xiang": { - "ar": "بلدة مدينة في الصين", - "ca": "poble de la xina", - "de": "gemeinde in china", - "en": "township of the people's republic of china", - "es": "pueblo de la república popular china", - "fr": "canton", - "id": "wilayah administrasi kota praja", - "it": "comune della cina", - "ja": "郷", - "ko": "향", - "nl": "gemeente in china", - "ro": "canton chinez", - "ru": "волость кнр", - "sv": "socken", - "tr": "çin halk cumhuriyeti beldesi", - "vi": "hương", - "zh": "乡", - "zh-hk": "鄉", - "zh-tw": "鄉" - }, - "zhen": { - "ar": "قرية في الصين", - "ca": "poble de la xina", - "cs": "město v číně", - "da": "by i kina", - "de": "großgemeinde in china", - "en": "township in china", - "es": "villa de la república popular china", - "et": "suurvald", - "fr": "bourg", - "he": "עיר בסין", - "id": "kota praja di tiongkok", - "it": "città della cina", - "ja": "鎮", - "ko": "진", - "nl": "grote gemeente van china", - "pl": "mniejsze miasto (chiny)", - "ru": "посёлок кнр", - "sv": "köping", - "th": "เมืองของประเทศจีน", - "tr": "çin halk cumhuriyeti i̇lçesi", - "uk": "містечко кнр", - "vi": "trấn", - "zh": "行政建制镇", - "zh-hk": "行政建制鎮" - } - }, - "climbing": { - "": { - "ar": "بولدرنق", - "ca": "escalada en bloc", - "de": "bouldern", - "en": "bouldering", - "es": "boulder", - "fi": "boulderointi", - "fr": "bloc", - "he": "טיפוס בולדרינג", - "id": "panjat dinding", - "ja": "ボルダリング", - "ko": "볼더링", - "lv": "boulderings", - "nb": "buldring", - "nl": "boulderen", - "pt": "boulder", - "ru": "боулдеринг", - "sl": "balvansko plezanje", - "uk": "боулдеринг", - "zh": "抱石" - }, - "area": { - "ca": "zona d'escalada", - "de": "klettergebiet", - "el": "πεδίο αναρρίχησης", - "en": "climbing area", - "es": "zona de escalada", - "fi": "kiipeilyalue", - "fr": "site d'escalade", - "it": "sito d'arrampicata", - "nl": "klimgebied", - "sl": "plezališče" - }, - "crag": { - "ca": "zona d'escalada", - "de": "klettergebiet", - "el": "πεδίο αναρρίχησης", - "en": "climbing area", - "es": "zona de escalada", - "fi": "kiipeilyalue", - "fr": "site d'escalade", - "it": "sito d'arrampicata", - "nl": "klimgebied", - "sl": "plezališče" - } - }, - "clothes": { - "babies": { - "da": "babytøj", - "de": "babybekleidung", - "en": "infant clothing", - "id": "shailendra tshai group", - "ko": "유아복", - "nb": "babyklær", - "nl": "babykleding", - "pt": "roupa para bebês", - "ru": "детская одежда", - "tr": "bebek kıyafeti", - "zh": "嬰兒服裝" - }, - "children": { - "ar": "ملابس الأطفال", - "cs": "dětský oděv", - "de": "kinderkleidung", - "el": "παιδικό ένδυμα", - "en": "children's clothing", - "es": "indumentaria infantil", - "fi": "lastenvaatteet", - "fr": "costume d'enfant", - "he": "בגדי ילדים", - "hu": "gyermekruházat", - "id": "pakaian anak", - "it": "indumento da bambino", - "ja": "子供服", - "ko": "아동복", - "nb": "barnetøy", - "nl": "kinderkleding", - "pl": "odzież dziecięca", - "pt": "roupa infantil", - "ru": "детская одежда", - "sv": "barnkläder", - "tr": "çocuk kıyafeti", - "zh": "童裝" - }, - "costumes": { - "ar": "زي", - "bg": "носия", - "ca": "vestit", - "cs": "kostým", - "da": "kostume", - "de": "kostüm", - "el": "ενδυμασία", - "en": "costume", - "en-gb": "dress", - "es": "traje", - "et": "kostüüm", - "fi": "asu", - "he": "תחפושת", - "hi": "वेशभूषा", - "hr": "kostim", - "hu": "ruházat", - "id": "kostum", - "ja": "服飾", - "ko": "코스튬", - "lt": "kostiumas", - "lv": "kostīms", - "nb": "drakt", - "nl": "kostuum", - "pl": "kostium", - "pt": "traje", - "ro": "costum", - "ru": "костюм", - "sl": "oblačilo", - "sr": "одежда", - "sv": "dräkt", - "tr": "kostüm", - "uk": "костюм", - "vi": "phục trang", - "zh": "服飾" - }, - "denim": { - "ar": "دنيم", - "bg": "деним", - "en": "denim", - "es": "mezclilla", - "et": "teksariie", - "he": "דנים", - "ja": "デニム", - "ko": "데님", - "nb": "dongeri", - "pl": "dżins", - "ru": "деним", - "tr": "kot", - "uk": "денім", - "zh": "牛仔布" - }, - "fur": { - "ar": "فرو", - "bg": "козина", - "ca": "pelatge", - "cs": "srst", - "da": "pels", - "de": "pelz", - "el": "γούνα", - "en": "fur", - "es": "pelaje", - "et": "karvastik", - "fi": "turkis", - "fr": "fourrure", - "he": "פרווה", - "hi": "ऊर्णाजिन", - "hr": "krzno", - "hu": "szőrzet", - "id": "rambut hewan", - "is": "loðskinn", - "it": "pelliccia", - "ja": "毛皮", - "ko": "모피", - "lt": "kailis", - "lv": "kažokāda", - "nb": "pels", - "nl": "vacht", - "pl": "futro", - "pt": "pelo", - "ro": "blană", - "ru": "шерсть", - "sk": "srsť", - "sl": "krzno", - "sr": "крзно", - "sv": "päls", - "th": "ขนสัตว์", - "tr": "kürk", - "uk": "шерсть", - "vi": "lông thú", - "zh": "毛皮" - }, - "hats": { - "ar": "قبعة", - "bg": "шапка", - "ca": "barret", - "cs": "klobouk", - "de": "hut", - "el": "καπέλο", - "en": "hat", - "es": "sombrero", - "et": "kübar", - "fi": "hattu", - "fr": "chapeau", - "he": "כובע", - "hi": "टोपी", - "hr": "šešir", - "hu": "kalap", - "id": "topi", - "is": "hattur", - "it": "cappello", - "ja": "帽子", - "ko": "모자", - "lt": "skrybėlė", - "lv": "cepure", - "nb": "hatt", - "nl": "hoed", - "pl": "kapelusz", - "pt": "chapéu", - "ro": "pălărie", - "ru": "шляпа", - "sk": "klobúk", - "sl": "klobuk", - "sr": "капа", - "sv": "hatt", - "th": "หมวก", - "tr": "şapka", - "uk": "капелюх", - "vi": "mũ", - "zh": "帽子" - }, - "leather": { - "ar": "جلد", - "bg": "кожа", - "ca": "cuir", - "cs": "kůže", - "da": "læder", - "de": "leder", - "el": "ζωικό δέρμα", - "en": "leather", - "es": "cuero", - "et": "nahk", - "fi": "nahka", - "fr": "cuir", - "he": "עור", - "hi": "चमड़ा", - "hr": "koža", - "hu": "bőr", - "id": "kulit", - "is": "leður", - "it": "cuoio", - "ja": "皮革", - "ko": "가죽", - "lt": "oda", - "lv": "āda", - "nb": "lær", - "nl": "leer", - "pl": "skóra", - "pt": "couro", - "ro": "piele", - "ru": "кожа", - "sl": "usnje", - "sr": "кожа", - "sv": "läder", - "tr": "dericilik", - "uk": "шкіра", - "vi": "da thuộc", - "zh": "皮革" - }, - "men": { - "cs": "pánský oděv", - "da": "herretøj", - "de": "herrenbekleidung", - "el": "ανδρική ένδυση", - "en": "men's clothing", - "es": "moda hombre", - "fr": "vêtement masculin", - "it": "moda maschile", - "ja": "紳士服", - "ko": "남성복", - "nl": "herenkleding", - "pl": "odzież męska", - "pt": "roupa masculina", - "sr": "muška odeća", - "sv": "herrkläder", - "zh": "男装" - }, - "oversize": { - "en": "plus-size clothing", - "ja": "プラスサイズ衣料", - "tr": "büyük beden giyim" - }, - "schoolwear": { - "ar": "زي مدرسي", - "cs": "školní uniforma", - "da": "skoleuniform", - "de": "schuluniform", - "el": "μαθητική στολή", - "en": "school uniform", - "es": "uniforme escolar", - "et": "koolivorm", - "fi": "koulupuku", - "fr": "uniforme scolaire", - "he": "תלבושת בית ספר", - "hi": "विद्यालय गणवेश", - "id": "seragam sekolah", - "it": "uniforme scolastica", - "ja": "学校制服", - "ko": "교복", - "lv": "skolas forma", - "nb": "skoleuniform", - "nl": "schooluniform", - "pl": "mundurek szkolny", - "pt": "uniforme escolar", - "ru": "школьная форма", - "sl": "šolska uniforma", - "sr": "школска униформа", - "sv": "skoluniform", - "th": "เครื่องแบบนักเรียน", - "tr": "okul üniforması", - "uk": "шкільна форма", - "vi": "đồng phục học sinh", - "zh": "校服" - }, - "swimwear": { - "ca": "vestit de bany", - "da": "badetøj", - "de": "bade- und strandkleidung", - "el": "μαγιό και ρούχα παραλίας", - "en": "swimwear", - "es": "trajes de baño", - "fr": "maillot de bain", - "he": "בגדי ים וחוף", - "it": "abbigliamento da bagno e da spiaggia", - "ja": "水泳用の衣類", - "nb": "badetøy", - "nl": "zwem- en strandkleding", - "pl": "kąpielówki", - "pt": "fatos de banho e roupa de praia", - "sr": "odeća za plivanje i plažu", - "sv": "badkläder och strandkläder", - "zh": "泳裝" - }, - "traditional": { - "ar": "زي وطني", - "bg": "народна носия", - "ca": "indumentària tradicional", - "cs": "kroj", - "da": "folkedragt", - "de": "tracht", - "el": "παραδοσιακή ενδυμασία", - "en": "traditional costume", - "es": "traje típico", - "et": "rahvarõivad", - "fi": "kansallispuku", - "fr": "costume traditionnel", - "he": "לבוש מסורתי", - "hr": "narodna nošnja", - "hu": "népviselet", - "id": "pakaian adat", - "is": "þjóðbúningur", - "it": "costume regionale", - "ja": "民族服", - "lt": "tautinis kostiumas", - "lv": "tautastērps", - "nb": "folkedrakt", - "nl": "klederdracht", - "pl": "strój ludowy", - "pt": "traje típico", - "ro": "costum popular", - "ru": "традиционный костюм", - "sk": "kroj", - "sl": "ljudska noša", - "sr": "народна ношња", - "sv": "folkdräkt", - "tr": "halk kostümü", - "uk": "національний одяг", - "vi": "trang phục truyền thống", - "zh": "民族服饰" - }, - "wedding": { - "ar": "لباس عرس", - "ca": "roba de noces", - "de": "hochzeitsbekleidung", - "en": "wedding clothing", - "nl": "bruidskleding", - "pt": "traje de casamento", - "sv": "brudkläder" - }, - "women": { - "ar": "ملابس نسائية", - "cs": "dámský oděv", - "de": "frauenkleidung", - "en": "women's clothing", - "es": "indumentaria femenina", - "fr": "vêtement féminin", - "ko": "여성복", - "lv": "sieviešu apģērbs", - "nl": "vrouwenkleding", - "pl": "odzież damska", - "pt-br": "roupa feminina", - "ru": "женская одежда", - "sv": "damkläder", - "uk": "дівочий одяг" - } - }, - "club": { - "amateur_radio": { - "de": "amateurfunkverein", - "en": "amateur radio club" - }, - "automobile": { - "da": "bilklub", - "de": "automobilclub", - "en": "car club", - "pl": "automobilklub", - "zh": "车友会" - }, - "bicycle": { - "ca": "club de ciclisme", - "da": "cykelklub", - "de": "radfahrerverein", - "en": "cycling club", - "ja": "自転車競技クラブ", - "nl": "fietsclub", - "pl": "klub rowerowy", - "ru": "велоклуб", - "tr": "bisiklet kulübü", - "uk": "велоклуб" - }, - "birds": { - "en": "bird club", - "nl": "vogelvereniging" - }, - "chess": { - "ar": "نادي شطرنج", - "ca": "club d'escacs", - "cs": "šachový klub", - "da": "skakklub", - "de": "schachverein", - "el": "σκακιστικός όμιλος", - "en": "chess club", - "es": "club de ajedrez", - "fi": "shakkiklubi", - "fr": "club d'échecs", - "he": "מועדון שחמט", - "it": "circolo di scacchi", - "ja": "チェスクラブ", - "lv": "šaha klubs", - "nb": "sjakklubb", - "nl": "schaakvereniging", - "pl": "klub szachowy", - "ru": "шахматный клуб", - "sv": "schackklubb", - "uk": "шаховий клуб", - "zh": "西洋棋俱樂部" - }, - "cinema": { - "ar": "نادي السينما", - "ca": "cineclub", - "cs": "filmový klub", - "de": "filmklub", - "en": "film society", - "es": "cineclub", - "fi": "elokuvakerho", - "fr": "ciné-club", - "it": "cine club", - "ja": "シネクラブ", - "ko": "시네클럽", - "nb": "filmklubb", - "nl": "filmclub", - "pl": "dyskusyjny klub filmowy", - "pt": "cineclube", - "ru": "киноклуб", - "sk": "filmový klub", - "sv": "filmklubb", - "uk": "кіноклуб", - "zh": "电影社团" - }, - "computer": { - "de": "computerclub", - "en": "computer club", - "nl": "computerclub" - }, - "dog": { - "en": "kennel club", - "he": "מועדון כלבים", - "ja": "ケネルクラブ", - "ko": "애견협회", - "nb": "kennelklubb", - "nl": "kennelclub", - "ru": "кинологические организации", - "sv": "kennelklubb", - "uk": "кінологічна організація", - "zh": "育犬協會" - }, - "fan": { - "ar": "نادي المعجبين", - "cs": "fanklub", - "da": "fanklub", - "de": "fanklub", - "en": "fan club", - "es": "club de fans", - "ja": "ファンクラブ", - "ko": "팬 클럽", - "lt": "fanų klubas", - "nb": "fanklubb", - "nl": "fanclub", - "pl": "fanklub", - "pt": "fã-clube", - "ru": "фан-клуб", - "sv": "fanklubb", - "th": "แฟนคลับ", - "tr": "fan kulüp", - "uk": "фан-клуб", - "vi": "hội nhóm người hâm mộ", - "zh": "同好會", - "zh-cn": "爱好者俱乐部" - }, - "freemasonry": { - "ar": "محفل ماسوني", - "ca": "lògia maçònica", - "cs": "zednářská lóže", - "da": "frimurerloge", - "de": "freimaurerloge", - "en": "masonic lodge", - "es": "logia masónica", - "et": "loož (vabamüürlus)", - "fr": "loge maçonnique", - "he": "לשכת בונים חופשיים", - "hr": "masonska loža", - "hu": "szabadkőműves páholy", - "it": "loggia massonica", - "ja": "フリーメーソンのロッジ", - "lv": "brīvmūrnieku loža", - "nb": "frimurerlosje", - "nl": "loge", - "pl": "loża wolnomularska", - "pt": "loja maçónica", - "pt-br": "loja maçônica", - "ro": "lojă masonică", - "ru": "масонская ложа", - "sv": "frimurarloge", - "tr": "mason locası", - "uk": "масонська ложа", - "zh": "共濟會會所", - "zh-hk": "what is a lodge" - }, - "hunting": { - "ca": "associació de caça", - "en": "hunting organization", - "fi": "metsästyskerho", - "sv": "jaktförening" - }, - "linux": { - "ar": "مجموعة مستخدمي لينوكس", - "da": "linux-brugergruppe", - "en": "linux user group", - "es": "grupo de usuarios de linux", - "fr": "groupe d'utilisateurs linux", - "ja": "linuxユーザーグループ", - "nl": "linux users group", - "pt": "grupo de usuários linux", - "ro": "grup de utilizatori gnu/linux", - "ru": "группа пользователей linux", - "tr": "linux kullanıcıları öbeği", - "zh": "linux用户组" - }, - "motorcycle": { - "ca": "club de motociclisme", - "de": "motorradclub", - "en": "motorcycle club", - "es": "club de moteros", - "fi": "moottoripyöräkerho", - "fr": "club de motards", - "he": "מועדון אופנוענים", - "it": "moto club", - "ja": "バイカー集団", - "nb": "motorsykkelklubb", - "nl": "motorclub", - "pt": "moto clube", - "ru": "мотоклуб", - "sr": "мотористички клуб", - "sv": "motorcykelklubb", - "tr": "motosiklet kulübü", - "uk": "мотоциклетний клуб" - }, - "music": { - "cs": "hudební klub", - "en": "music club", - "fi": "musiikkiklubi", - "pl": "klub muzyczny", - "sv": "musikklubb" - }, - "photography": { - "de": "fotoclub", - "en": "photo club", - "it": "fotoclub", - "nl": "fotoclub", - "zh-cn": "摄影俱乐部" - }, - "sailing": { - "da": "sejlklub", - "de": "segelverein", - "en": "sailing club", - "he": "מועדון שייט", - "nb": "seilforening" - }, - "social": { - "ar": "نادي اجتماعي", - "ca": "club social", - "cs": "společenský klub", - "en": "social club", - "es": "club social", - "id": "klub sosial", - "ja": "社交クラブ", - "ru": "социальный клуб", - "tr": "sosyal kulüp", - "uk": "соціальний клуб", - "vi": "câu lạc bộ xã hội", - "zh": "社交俱樂部" - }, - "sport": { - "ar": "ناد رياضي", - "bg": "спортен клуб", - "ca": "club esportiu", - "cs": "sportovní klub", - "da": "idrætsforening", - "de": "sportverein", - "el": "αθλητικός σύλλογος", - "en": "parachute club", - "en-gb": "sport club", - "en-us": "sports club", - "es": "club de paracaidismo", - "et": "spordiklubi", - "fi": "urheiluseura", - "fr": "club sportif", - "he": "מועדון ספורט", - "hr": "sportski klub", - "hu": "sportklub", - "id": "klub olahraga", - "is": "íþróttafélag", - "it": "società sportiva", - "ja": "スポーツクラブ", - "ko": "스포츠 구단", - "lt": "sporto klubas", - "lv": "sporta klubs", - "nb": "fallskjermklubb", - "nl": "parachuteclub", - "pl": "klub sportowy", - "pt": "clube desportivo", - "pt-br": "clube de esporte", - "ro": "club sportiv", - "ru": "спортивный клуб", - "sk": "športový klub", - "sl": "športni klub", - "sr": "спортски клуб", - "sv": "idrottsförening", - "tr": "spor kulübü", - "uk": "спортивне товариство", - "vi": "câu lạc bộ thể thao", - "zh": "體育俱樂部", - "zh-cn": "体育俱乐部", - "zh-hk": "體育會" - }, - "surf_life_saving": { - "en": "surf life saving club" - }, - "youth_movement": { - "ar": "منظمة شبابية", - "ca": "organització juvenil", - "cs": "organizace dětí a mládeže", - "da": "ungdomsorganisation", - "de": "jugendorganisation", - "el": "οργανισμός νεολαίας", - "en": "youth organization", - "es": "organización juvenil", - "et": "noorteorganisatsioon", - "fi": "nuorisojärjestö", - "fr": "organisation de pensionnés", - "he": "תנועת נוער", - "hu": "ifjúsági szervezet", - "it": "organizzazione giovanile", - "ja": "青少年組織", - "nb": "ungdomsorganisasjon", - "nl": "jongerenorganisatie", - "pl": "organizacja młodzieżowa", - "pt": "organização juvenil", - "ru": "молодёжная организация", - "sl": "mladinska organizacija", - "sr": "омладинска организација", - "sv": "ungdomsorganisation", - "tr": "gençlik organizasyonu", - "uk": "молодіжна організація", - "vi": "phong trào thanh thiếu niên", - "zh": "青年組織", - "zh-cn": "青年组织" - } - }, - "colour": { - "yellow": { - "en": "baltimore salt box" - } - }, - "comedy": { - "yes": { - "en": "comedy club", - "he": "קומדי-קלאב", - "ja": "コメディクラブ", - "nb": "standupklubb", - "nl": "comedyclub", - "zh": "喜劇俱樂部" - } - }, - "communication": { - "": { - "bg": "телевизионна кула", - "ca": "torre de tv", - "cs": "televizní věž", - "da": "tv-tårn", - "de": "fernsehturm", - "el": "πύργος τηλεόρασης", - "en": "television tower", - "es": "torre de telecomunicaciones", - "et": "teletorn", - "fr": "tour de télévision", - "he": "מגדל טלוויזיה", - "hu": "tévétorony", - "it": "torre televisiva", - "ja": "テレビ塔", - "lt": "televizijos bokštas", - "lv": "televīzijas tornis", - "nb": "tv-tårn", - "nl": "communicatietoren", - "pl": "wieża telewizyjna", - "pt": "torre de telecomunicações", - "ru": "телебашня", - "sk": "televízna veža", - "sr": "телевизијски торањ", - "sv": "tv-mast", - "tr": "televizyon kulesi", - "uk": "телевежа", - "zh": "电视塔" - } - }, - "community": { - "BSCM": { - "cs": "benediktinky od nejsvětějšího srdce ježíšova z montmartre", - "en": "benedictines of the sacred heart of montmartre", - "es": "benedictinas del sagrado corazón de montmartre", - "fr": "bénédictines du sacré-cœur de montmartre", - "it": "benedettine del sacro cuore di montmartre", - "nl": "benedictinessen van het heilig hart van montmartre" - }, - "FSCG": { - "en": "sisters of the family of the sacred heart of jesus", - "es": "hermanas de la familia del sagrado corazón de jesús", - "fr": "sœurs de la famille du sacré-cœur de jésus", - "it": "suore della famiglia del sacro cuore di gesù", - "nl": "zusters van de familie van het heilig hart van jezus (brentana)" - }, - "FSCJ": { - "en": "daughters of the sacred heart of jesus of verzeri", - "es": "hijas del sagrado corazón de jesús", - "fr": "filles du sacré cœur de jésus de verzeri", - "it": "figlie del sacro cuore di gesù della verzeri", - "nl": "dochters van het heilig hart van jezus (verzeri)", - "pt": "congregação das filhas do sagrado coração de jesus" - }, - "OCC": { - "en": "carmelites", - "fr": "carmes mitigés", - "nl": "orde der karmelieten", - "pt-br": "carmelitas" - }, - "OCD": { - "ar": "رهبنة الأخوة المكرسين لمريم العذراء الكرملية", - "ca": "carmelites descalços", - "cs": "řád bosých karmelitánů", - "de": "unbeschuhte karmeliten", - "en": "order of the brothers discalced of the blessed virgin mary of mount carmel", - "es": "orden de los hermanos descalzos de la bienaventurada virgen maría del monte carmelo", - "fr": "ordre des frères déchaux et des moniales déchaussées de la bienheureuse vierge marie du mont-carmel", - "he": "הכרמליטים היחפים", - "hr": "bosonoge karmelićanke", - "hu": "sarutlan kármeliták", - "id": "karmelit tak berkasut", - "it": "ordine dei carmelitani scalzi", - "ja": "跣足カルメル会", - "nb": "de uskodde karmelittene", - "nl": "orde der ongeschoeide karmelieten", - "pl": "karmelici bosi", - "pt": "ordem dos carmelitas descalços", - "ro": "carmeliți desculți", - "ru": "орден босых кармелитов", - "sk": "bosí karmelitáni", - "sr": "bosonoge karmelićanke", - "sv": "oskodda karmeliter", - "th": "คณะคาร์เมไลท์ไม่สวมรองเท้า", - "uk": "кармеліти босі", - "zh": "赤足加爾默羅會", - "zh-cn": "赤足加尔默罗会" - }, - "OCSO": { - "ar": "ترابيون", - "bg": "трапистки орден", - "ca": "orde cistercenc de l'estricta observança", - "cs": "řád cisterciáků přísné observance", - "da": "trappistordenen", - "de": "zisterzienser der strengeren observanz", - "el": "τραπιστές", - "en": "order of cistercians of the strict observance", - "es": "orden cisterciense de la estrecha observancia", - "et": "trapistide ordu", - "fi": "trappistit", - "fr": "ordre cistercien de la stricte observance", - "he": "טראפיסטים", - "hr": "trapisti", - "hu": "trappisták", - "id": "trapis", - "it": "cistercensi della stretta osservanza", - "ja": "厳律シトー会", - "ko": "트라피스트회", - "nb": "trappistordenen", - "nl": "trappisten", - "pl": "trapiści", - "pt": "ordem trapista", - "ro": "ordinul trapist", - "ru": "орден траппистов", - "sk": "rád cisterciánov prísnej observancie", - "sl": "trapisti", - "sr": "траписти", - "sv": "trappistorden", - "th": "คณะแทรปพิสต์", - "tr": "trappistler", - "uk": "траппісти", - "zh": "严规熙笃隐修会", - "zh-cn": "严规熙笃会" - }, - "OCart": { - "ca": "orde de la cartoixa", - "cs": "kartuziánský řád", - "da": "karteuserordenen", - "de": "kartäuser", - "el": "ταγμα των καρθουσιανών", - "en": "carthusian order", - "es": "orden de los cartujos", - "fi": "kartusiaanit", - "fr": "ordre des chartreux", - "he": "קרטוזיאנים", - "hr": "kartuzijanci", - "hu": "karthauzi rend", - "id": "kartusia", - "it": "ordine certosino", - "ja": "カルトジオ会", - "ko": "카르투시오회", - "lv": "kartūzieši", - "nb": "karteuserordenen", - "nl": "orde der kartuizers", - "pl": "kartuzi", - "pt": "ordem dos cartuxos", - "ro": "ordinul cartusian", - "ru": "картезианцы", - "sk": "kartuziánsky rád", - "sl": "kartuzijani", - "sr": "картезијанци", - "sv": "kartusianorden", - "th": "คณะคาร์ทูเซียน", - "tr": "şartrö tarikatı", - "uk": "картезіанці", - "zh": "加爾都西會", - "zh-cn": "卡尔特教会" - }, - "OFM": { - "ar": "الرهبة الصغرى للإخوان", - "ca": "orde de frares menors", - "cs": "řád menších bratří", - "de": "franziskaner", - "el": "τάγμα των ελάσσονων αδελφών", - "en": "order of friars minor", - "es": "orden de frailes menores", - "fr": "ordre des frères mineurs", - "hr": "red manje braće", - "hu": "kisebb testvérek rendje", - "id": "ordo fratrum minorum", - "it": "ordine dei frati minori", - "ja": "小さき兄弟会", - "ko": "작은형제회", - "nb": "ordo fratrum minorum", - "nl": "orde van minderbroeders", - "pl": "zakon braci mniejszych", - "pt": "ordem dos frades menores", - "ro": "ordinul franciscan", - "ru": "орден меньших братьев", - "sk": "rád menších bratov", - "sl": "red manjših bratov", - "vi": "dòng anh em hèn mọn", - "zh": "方濟會小修士" - }, - "OFMCap": { - "ar": "الرهبنة الكبوشية", - "bg": "капуцини", - "ca": "orde dels frares menors caputxins", - "cs": "řád menších bratří kapucínů", - "da": "kapucinerordenen", - "de": "kapuziner", - "el": "τάγμα αδελφών ελάσσονων καπουτσίνων", - "en": "order of friars minor capuchin", - "es": "orden de frailes menores capuchinos", - "fi": "kapusiinit", - "fr": "frères mineurs capucins", - "he": "המסדר הקפוצ'יני", - "hr": "kapucini", - "hu": "kapucinusok", - "id": "ordo saudara dina kapusin", - "it": "ordine dei frati minori cappuccini", - "ja": "カプチン・フランシスコ修道会", - "ko": "카푸친 작은형제회", - "lv": "mazāko brāļu kapucīnu ordenis", - "nb": "kapusinerordenen", - "nl": "kapucijnen", - "pl": "zakon braci mniejszych kapucynów", - "pt": "ordem dos frades menores capuchinhos", - "ro": "capucini", - "ru": "капуцины", - "sk": "rád menších bratov kapucínov", - "sl": "kapucini", - "sr": "капуцинери", - "sv": "kapucinorden", - "th": "คณะภราดาน้อยกาปูชิน", - "tr": "kapusenler", - "uk": "капуцини", - "vi": "dòng phan sinh lúp dài", - "zh": "嘉布虔小兄弟会", - "zh-cn": "嘉布遣会" - }, - "OFMConv": { - "bg": "конвентуалци", - "ca": "orde de frares menors conventuals", - "cs": "řád menších bratří konventuálů", - "de": "minoriten", - "en": "conventual franciscans", - "es": "orden de frailes menores conventuales", - "fr": "frères mineurs conventuels", - "hr": "konventualci", - "hu": "minoriták", - "id": "konventual", - "it": "ordine dei frati minori conventuali", - "ja": "コンベンツァル聖フランシスコ修道会", - "ko": "꼰벤뚜알 프란치스코회", - "nb": "de konventuelle fransiskanere", - "nl": "minorieten", - "pl": "zakon braci mniejszych konwentualnych", - "pt": "cordeliers", - "ro": "minoriți", - "ru": "францисканцы-конвентуалы", - "sk": "rád menších bratov konventuálov", - "sl": "minoriti", - "uk": "францисканці конвентуальні", - "vi": "dòng phan sinh viện tu", - "zh": "方濟各住院兄弟會" - }, - "OM": { - "bg": "минимски орден", - "ca": "orde dels mínims", - "cs": "řád nejmenších bratří sv. františka z pauly", - "de": "paulaner", - "en": "order of the minims", - "es": "orden de los mínimos", - "fr": "ordre des minimes", - "hu": "minimita rend", - "it": "ordine dei minimi", - "ja": "ミニミ会", - "nb": "paulanerordenen", - "nl": "orde der miniemen", - "pl": "minimici", - "pt": "ordem dos mínimos", - "ro": "minimi", - "ru": "минимы", - "sk": "rád najmenších bratov sv. františka z paoly", - "tr": "kategori:minim tarikatı", - "uk": "мініми", - "zh": "最小兄弟会" - }, - "OP": { - "ar": "دومينيكانية", - "bg": "доминикански орден", - "ca": "orde dels predicadors", - "cs": "řád bratří kazatelů", - "da": "dominikanerordenen", - "de": "dominikaner", - "el": "τάγμα των δομινικανών", - "en": "dominican order", - "es": "orden de predicadores", - "et": "dominiiklased", - "fi": "dominikaanit", - "fr": "ordre des prêcheurs", - "he": "דומיניקנים", - "hi": "दोमिनिकी संघ", - "hr": "dominikanci", - "hu": "domonkos-rend", - "id": "dominikan", - "it": "ordine dei frati predicatori", - "ja": "ドミニコ会", - "ko": "도미니코 수도회", - "lt": "dominikonų ordinas", - "lv": "dominikāņu ordenis", - "nb": "dominikanerordenen", - "nl": "dominicanen", - "pl": "dominikanie", - "pt": "ordem dos pregadores", - "ro": "ordinul dominican", - "ru": "доминиканцы", - "sk": "rehoľa kazateľov", - "sl": "dominikanci", - "sr": "доминикански ред", - "sv": "dominikanorden", - "th": "คณะดอมินิกัน", - "tr": "dominikan tarikatı", - "uk": "домініканці", - "vi": "dòng anh em thuyết giáo", - "zh": "道明會", - "zh-cn": "道明会" - }, - "OPraem": { - "bg": "норбертински орден", - "ca": "premonstratencs", - "cs": "řád premonstrátských řeholních kanovníků", - "da": "præmonstratenserordenen", - "de": "prämonstratenser", - "en": "premonstratensians", - "es": "orden de canónigos de prémontré", - "fi": "premonstratenssit", - "fr": "prémontrés", - "he": "פרמונסטרנטנזים", - "hr": "premonstratenški red", - "hu": "premontrei rend", - "it": "canonici regolari premostratensi", - "ja": "プレモントレ修道会", - "ko": "프레몽트레회", - "lv": "premonstrieši", - "nb": "premonstratenserordenen", - "nl": "norbertijnen", - "pl": "norbertanie", - "pt": "ordem premonstratense", - "ro": "ordinul premonstratens", - "ru": "премонстранты", - "sk": "premonštráti", - "sl": "premonstratenci", - "sv": "premonstratensorden", - "uk": "премонстранти", - "zh": "普利孟特瑞會" - }, - "OSA": { - "ca": "orde de sant agustí", - "cs": "augustiniáni obutí", - "da": "augustinerordenen", - "de": "augustinerorden", - "el": "αυγουστίνοι", - "en": "augustinians", - "en-ca": "order of saint augustine", - "en-gb": "order of saint augustine", - "es": "orden de san agustín", - "fr": "ordre de saint-augustin", - "he": "מסדר אוגוסטינוס הקדוש", - "hr": "augustinski heremiti", - "id": "ordo santo agustinus", - "it": "ordine di sant'agostino", - "ja": "聖アウグスチノ修道会", - "nb": "augustinerordenen", - "nl": "augustijnerorde", - "pl": "augustianie", - "pt": "ordem de santo agostinho", - "ro": "ordinul sfântului augustin", - "ru": "августинцы-эремиты", - "sv": "augustinerorden", - "zh": "聖奧古斯丁修道會" - }, - "OSB": { - "ar": "نظام القديس بينديكت", - "bg": "бенедиктински орден", - "ca": "orde de sant benet", - "cs": "řád svatého benedikta", - "da": "benediktinerordenen", - "de": "benediktiner", - "el": "τάγμα του αγίου βενέδικτου", - "en": "benedictines", - "en-ca": "order of saint benedict", - "en-gb": "order of saint benedict", - "es": "orden de san benito", - "et": "benediktlased", - "fi": "benediktiinit", - "fr": "ordre de saint-benoît", - "he": "בנדיקטינים", - "hr": "benediktinci", - "hu": "bencések", - "id": "benediktin", - "is": "benediktsregla", - "it": "ordine di san benedetto", - "ja": "ベネディクト会", - "ko": "베네딕도회", - "lt": "benediktinai", - "lv": "benediktīniešu ordenis", - "nb": "benediktinerordenen", - "nl": "benedictijnen", - "pl": "benedyktyni", - "pt": "ordem de são bento", - "ro": "ordinul benedictin", - "ru": "бенедиктинцы", - "sk": "rád svätého benedikta", - "sl": "benediktinci", - "sr": "бенедиктинци", - "sv": "benediktinorden", - "th": "คณะเบเนดิกติน", - "tr": "benediktin tarikatı", - "uk": "бенедиктинці", - "zh": "本笃会", - "zh-hk": "本篤會", - "zh-tw": "本篤會" - }, - "OSC": { - "ca": "orde de santa clara", - "cs": "chudé sestry svaté kláry", - "da": "clarisserordenen", - "de": "klarissen", - "el": "τάγμα των καρμηλιτών", - "en": "poor clares", - "es": "orden de las hermanas pobres de santa clara", - "fi": "klarissalaiset", - "fr": "ordre de sainte-claire", - "he": "מסדר הקלאריסות העניות", - "hr": "klarise", - "hu": "klarisszák", - "id": "ordo santa klara", - "it": "monache clarisse", - "ja": "クララ会", - "nb": "klarissene", - "nl": "clarissen", - "pl": "ubogie siostry świętej klary", - "pt": "ordem das clarissas", - "ru": "клариссинки", - "sk": "klarisky", - "sl": "klarise", - "sv": "sankta klaras orden", - "th": "คณะกลาริส", - "uk": "кларисинки", - "vi": "dòng chị em thanh bần", - "zh": "贫穷修女会", - "zh-hk": "貧窮修女會" - }, - "SJ": { - "ar": "الرهبنة اليسوعية", - "bg": "йезуитски орден", - "ca": "companyia de jesús", - "cs": "tovaryšstvo ježíšovo", - "da": "jesuiterordenen", - "de": "jesuiten", - "el": "αδελφότητα του ιησού", - "en": "society of jesus", - "es": "compañía de jesús", - "et": "jesuiidid", - "fi": "jesuiitat", - "fr": "compagnie de jésus", - "he": "ישועים", - "hr": "isusovci", - "hu": "jézus társasága", - "id": "serikat yesus", - "is": "jesúítareglan", - "it": "compagnia di gesù", - "ja": "イエズス会", - "ko": "예수회", - "lt": "jėzuitai", - "lv": "jezuīti", - "nb": "jesuittordenen", - "nl": "jezuïeten", - "pl": "jezuici", - "pt": "companhia de jesus", - "ro": "ordinul iezuit", - "ru": "иезуиты", - "sk": "spoločnosť ježišova", - "sl": "družba jezusova", - "sr": "језуити", - "sv": "jesuitorden", - "th": "คณะเยสุอิต", - "tr": "cizvitler", - "uk": "товариство ісуса", - "vi": "dòng tên", - "zh": "耶稣会" - }, - "SOC": { - "ar": "سيسترسية", - "bg": "цистерциански орден", - "ca": "orde del cister", - "cs": "cisterciácký řád", - "da": "cistercienserordenen", - "de": "zisterzienser", - "el": "κιστερκιανό τάγμα", - "en": "cistercians", - "es": "orden del císter", - "et": "tsistertslaste ordu", - "fi": "sisterssiläiset", - "fr": "ordre cistercien", - "he": "נזירים ציסטרציאניים", - "hi": "सिस्टर्सन्स", - "hr": "cisterciti", - "hu": "ciszterciek", - "id": "sistersian", - "it": "ordine cistercense", - "ja": "シトー会", - "ko": "시토회", - "lv": "cisterciešu ordenis", - "nb": "cistercienserordenen", - "nl": "cisterciënzers", - "pl": "cystersi", - "pt": "ordem de cister", - "ro": "ordinul cistercian", - "ru": "цистерцианцы", - "sk": "cisterciánsky rád", - "sl": "cistercijani", - "sr": "цистерцити", - "sv": "cisterciensorden", - "th": "คณะซิสเตอร์เชียน", - "tr": "sistersiyenler", - "uk": "цистерціанці", - "vi": "dòng xitô", - "zh": "熙笃会", - "zh-hk": "熙篤會", - "zh-tw": "熙篤會" - }, - "TOSF": { - "ca": "tercer orde de sant francesc", - "cs": "třetí řád svatého františka", - "en": "third order of saint francis", - "es": "tercera orden de san francisco", - "fr": "tiers-ordre franciscain", - "hu": "ferences világi rend", - "it": "terzo ordine francescano", - "ja": "フランシスコ会", - "nl": "derde orde van sint franciscus", - "pl": "iii zakon franciszkański", - "pt": "ordem terceira de são francisco", - "pt-br": "terceira ordem de são francisco", - "ru": "третий орден святого франциска", - "th": "คณะชั้นสามของนักบุญฟรังซิส", - "vi": "dòng ba phan sinh", - "zh": "方濟各第三會" - } - }, - "community_centre": { - "village_hall": { - "ar": "قاعة القرية", - "da": "forsamlingshus", - "de": "gemeindehaus", - "en": "village hall", - "fi": "kylätalo", - "hu": "községháza", - "ja": "公会堂", - "nb": "bygdegård", - "sv": "bygdegård", - "zh": "公會堂" - }, - "youth_centre": { - "ar": "مركز شباب", - "ca": "equipament juvenil", - "cs": "klub mládeže", - "de": "kinder- und jugendfreizeiteinrichtung", - "en": "youth center", - "en-ca": "youth centre", - "en-gb": "youth centre", - "es": "centro joven", - "et": "noortekeskus", - "fi": "nuorisotalo", - "fr": "maison des jeunes", - "he": "מועדון נוער", - "hu": "ifjúsági központ", - "nb": "ungdomssenter", - "nl": "jeugdcentrum", - "pl": "centrum młodzieżowe", - "sl": "mladinski center", - "sv": "fritidsgård", - "zh": "青年會" - } - }, - "compensator": { - "voltage_regulator": { - "ar": "منظم الجهد", - "bg": "реле-регулатор", - "ca": "regulador de tensió", - "cs": "stabilizátor napětí", - "de": "spannungsregler", - "en": "voltage regulator", - "es": "regulador de tensión", - "et": "pingestabilisaator", - "fi": "jänniteregulaattori", - "fr": "régulateur de tension", - "hi": "वोल्टता नियंत्रक", - "it": "regolatore di tensione", - "ja": "三端子レギュレータ", - "ko": "전압 조정기", - "lt": "įtampos stabilizatorius", - "nb": "spenningsregulator", - "nl": "spanningsregelaar", - "pl": "stabilizator napięcia", - "pt": "regulador de tensão", - "ro": "stabilizator de tensiune", - "ru": "стабилизатор напряжения", - "sl": "regulator napetosti", - "sr": "linearni izvori napajanja", - "sv": "spänningsreglerare", - "tr": "voltaj regülatörü", - "uk": "стабілізатор напруги", - "vi": "ổn áp", - "zh": "稳压器", - "zh-hk": "穩壓器" - } - }, - "concentration_camp": { - "gulag": { - "cs": "gulag", - "da": "gulag-lejr", - "de": "gulag-lager", - "en": "gulag camp", - "es": "campo del gulag", - "fr": "camp du goulag", - "nb": "gulag-leir", - "ru": "гулаг", - "uk": "гулаг" - }, - "nazism": { - "ar": "معسكرات الاعتقال النازية", - "ca": "camp de concentració nazi", - "cs": "koncentrační tábor nacistického německa", - "da": "tysk koncentrationslejr", - "de": "ns-konzentrationslager", - "el": "ναζιστικό στρατόπεδο συγκέντρωσης", - "en": "nazi concentration camp", - "es": "campo de concentración nazi", - "fi": "natsi-saksan keskitysleirit", - "fr": "camp de concentration nazi", - "he": "מחנה ריכוז נאצי", - "hr": "nacistički koncentracijski logori", - "hu": "náci koncentrációs tábor", - "id": "kamp konsentrasi nazi", - "it": "lager", - "ja": "強制収容所", - "ko": "나치 강제 수용소", - "lt": "nacių koncentracijos stovyklos", - "nb": "konsentrasjonsleirer i nazi-tyskland", - "nl": "naziconcentratiekamp", - "pl": "nazistowski obóz koncentracyjny", - "pt": "campo de concentração nazi", - "ro": "lagăr de concentrare nazist", - "ru": "нацистский концлагерь", - "sk": "nacistický vyhladzovací tábor", - "sl": "nacistično koncentracijsko taborišče", - "sr": "нацистички концентрациони логор", - "sv": "koncentrationsläger organiserade av nazityskland", - "th": "ค่ายกักกันนาซี", - "tr": "nazi toplama kampları", - "uk": "нацистські концентраційні табори", - "vi": "trại tập trung của đức quốc xã", - "zh": "納粹集中營", - "zh-cn": "纳粹集中营" - } - }, - "content": { - "salt": { - "en": "baltimore salt box" - }, - "water": { - "ar": "خزان مياه", - "ca": "dipòsit d'aigua", - "cs": "vodojem", - "da": "vandtank", - "de": "wassertank", - "en": "water tank", - "es": "tanque de agua", - "fi": "vesisäiliö", - "fr": "réservoir d'eau", - "he": "מכל מים", - "hr": "vodosprema", - "hu": "hidroglóbusz", - "id": "tangki air", - "it": "serbatoio", - "ja": "貯水槽", - "ko": "저수조", - "nl": "watertank", - "pl": "zbiornik na wodę", - "pt": "caixa-d'água", - "ru": "ёмкость для воды", - "sk": "vodojem", - "tr": "su tankı", - "uk": "ємність для води", - "vi": "bồn nước", - "zh": "水缸" - } - }, - "conveying": { - "yes": { - "ar": "بساط متحرك", - "bg": "траволатор", - "ca": "cinta transportadora", - "cs": "travelátor", - "da": "rullende fortov", - "de": "fahrsteig", - "en": "moving walkway", - "es": "pasillo rodante", - "fi": "liukukäytävä", - "fr": "tapis roulant", - "he": "מסוע הליכה", - "hu": "mozgójárda", - "id": "marga laju", - "it": "marciapiede mobile", - "ja": "動く歩道", - "ko": "자동길", - "nl": "loopband", - "pl": "ruchomy chodnik", - "pt": "tapete rolante", - "pt-br": "esteira rolante", - "ru": "пассажирский конвейер", - "sl": "tekoča klančina", - "sv": "rullande trottoar", - "tr": "yürüyen bant", - "uk": "траволатор", - "zh": "電動步道" - } - }, - "covered": { - "arcade": { - "ar": "رواق معمد", - "bg": "аркада", - "ca": "arcada", - "cs": "arkáda", - "da": "arkade", - "de": "arkade", - "en": "arcade", - "es": "arcada", - "et": "arkaad", - "fi": "arkadi", - "he": "ארקדה", - "hr": "arkada", - "hu": "árkád", - "it": "arcata", - "ja": "アーケード", - "ko": "아케이드", - "lt": "arkada", - "lv": "arkāde", - "nb": "arkade", - "pl": "arkada", - "pt": "arcada", - "ro": "arcadă", - "ru": "аркада", - "sk": "arkáda", - "sl": "arkade", - "sr": "аркада", - "sv": "arkad", - "tr": "arkat", - "uk": "аркада", - "zh": "拱廊", - "zh-cn": "骑楼", - "zh-hk": "騎樓" - }, - "booth": { - "ar": "كابينة هاتف", - "ca": "cabina telefònica", - "cs": "veřejný telefonní automat", - "da": "telefonboks", - "de": "telefonzelle", - "en": "telephone booth", - "en-gb": "telephone box", - "es": "cabina telefónica", - "et": "telefoniputka", - "fi": "puhelinkioski", - "fr": "cabine téléphonique", - "hr": "telefonska govornica", - "hu": "telefonfülke", - "id": "bilik telepon", - "it": "cabina telefonica", - "ja": "電話ブース", - "ko": "공중전화 박스", - "nb": "telefonkiosk", - "nl": "telefooncel", - "pl": "budka telefoniczna", - "pt": "cabine telefónica", - "ru": "телефонная будка", - "sr": "телефонска говорница", - "sv": "telefonkiosk", - "tr": "telefon kulübesi", - "uk": "телефонна будка", - "vi": "bốt điện thoại", - "zh": "电话亭", - "zh-hk": "電話亭" - }, - "colonnade": { - "ar": "كولانيد", - "bg": "колонада", - "ca": "columnata", - "cs": "kolonáda", - "da": "kolonnade", - "de": "kolonnade", - "el": "κιονοστοιχία", - "en": "colonnade", - "es": "columnata", - "et": "kolonnaad", - "he": "אכסדרה", - "hu": "oszlopcsarnok", - "it": "colonnato", - "ja": "コロネード", - "ko": "열주", - "lv": "kolonāde", - "nb": "søylegang", - "pl": "perystaza", - "pt": "colunata", - "ru": "колоннада", - "sk": "kolonáda", - "sl": "kolonada", - "sr": "колонада", - "sv": "kolonnad", - "tr": "kolonad", - "uk": "колонада", - "zh": "列柱" - } - }, - "craft": { - "atelier": { - "ar": "ورشة العمل", - "ca": "taller d'artista", - "cs": "ateliér", - "en": "atelier", - "fi": "atejee", - "fr": "atelier d'artiste", - "ja": "アトリエ", - "ko": "화실", - "lv": "ateljē", - "sv": "ateljé", - "uk": "ательє", - "zh": "私人畫室" - }, - "bakery": { - "ar": "خَبّاز", - "bg": "пекар", - "ca": "flequer", - "cs": "pekař", - "da": "bager", - "de": "bäcker", - "el": "αρτοποιός", - "en": "baker", - "es": "panadero", - "et": "pagar", - "fi": "leipuri", - "fr": "boulanger ou boulangère", - "he": "אופה", - "hi": "नानबाई", - "hr": "pekar", - "hu": "pék", - "id": "tukang roti", - "it": "panettiere", - "ja": "製パン工", - "ko": "제빵사", - "lv": "maiznieks", - "nl": "bakker", - "pl": "piekarz", - "pt": "padeiro", - "ro": "brutar", - "ru": "пекарь", - "sk": "pekar", - "sl": "pek", - "sr": "пекар", - "sv": "bagare", - "tr": "fırıncı", - "uk": "пекар", - "zh": "面包师", - "zh-tw": "麵包師" - }, - "basket_maker": { - "ar": "سلال", - "ca": "cisteller", - "cs": "košíkář", - "da": "kurvefletning", - "de": "korbmacher", - "el": "καλαθοπλέκτης", - "en": "basket weaver", - "es": "cestero", - "fi": "korintekijä", - "fr": "vannier", - "it": "cestaio", - "ja": "籠職人", - "nb": "kurvmaker", - "nl": "mandenvlechter", - "pl": "wikliniarstwo", - "pt": "cesteiro", - "sl": "izdelovalec košar", - "sr": "плетар", - "sv": "korgflätare" - }, - "beekeeper": { - "ar": "نحال", - "bg": "пчелар", - "ca": "apicultor", - "cs": "včelař", - "da": "biavler", - "de": "imker", - "el": "μελισσοκόμος", - "en": "beekeeper", - "es": "apicultor", - "et": "mesinik", - "fi": "mehiläishoitaja", - "fr": "apiculteur ou apicultrice", - "he": "דבוראי", - "hi": "मधुमक्खी पालन", - "hr": "pčelar", - "hu": "méhész", - "it": "apicoltore", - "ja": "養蜂家", - "ko": "양봉가", - "lv": "biškopis", - "nb": "birøkter", - "nl": "imker", - "pl": "pszczelarz", - "pt": "apicultor", - "ro": "apicultor", - "ru": "пчеловод", - "sk": "včelár", - "sl": "čebelar", - "sr": "пчелар", - "sv": "biodlare", - "th": "คนเลี้ยงผึ้ง", - "tr": "arıcı", - "uk": "бджоляр", - "zh": "蜂農" - }, - "blacksmith": { - "ar": "حدّاد", - "bg": "ковач", - "ca": "ferrer", - "cs": "kovář", - "da": "smed", - "de": "schmied", - "el": "σιδηρουργός", - "en": "blacksmith", - "es": "herrero", - "et": "sepp", - "fi": "seppä", - "fr": "forgeron ou forgeronne", - "he": "נפח", - "hi": "लोहार", - "hr": "kovač", - "hu": "kovács", - "id": "pandai besi", - "it": "fabbro", - "ja": "鍛冶屋", - "ko": "대장장이", - "lt": "kalvystė", - "lv": "kalējs", - "nb": "smed", - "nl": "ijzersmid", - "pl": "kowal", - "pt": "ferreiro", - "ro": "fierar", - "ru": "ковщик", - "sk": "kováč", - "sl": "kovač", - "sr": "ковач", - "sv": "smed", - "th": "ช่างตีเหล็ก", - "tr": "nalbant", - "uk": "коваль", - "vi": "thợ rèn sắt", - "zh": "鐵匠" - }, - "boatbuilder": { - "da": "bådebygger", - "de": "bootsbauer", - "en": "boat builder", - "es": "constructor de barco", - "fi": "veneentekijä", - "nb": "båtbygger", - "nl": "bootbouwer", - "pl": "szkutnik", - "sl": "graditelj čolnov", - "sv": "båtbyggare" - }, - "bookbinder": { - "ar": "مجلد كتب", - "bg": "книговезец", - "ca": "enquadernador", - "cs": "vazárna", - "da": "bogbinder", - "de": "buchbinderei", - "el": "βιβλιοδέτης", - "en": "bindery", - "en-gb": "bookbinder", - "es": "encuadernadora", - "et": "raamatuköitja", - "fi": "kirjansitoja", - "fr": "atelier de reliure", - "he": "כורך ספרים", - "hu": "könyvkötő", - "it": "legatoria", - "ja": "バインダリー", - "nb": "binderi", - "nl": "boekbinderij", - "pl": "introligator", - "pt": "encadernador", - "ru": "переплётчик", - "sl": "knjigovez", - "sr": "књиговезац", - "sv": "bokbindare", - "uk": "палітурник" - }, - "brewery": { - "ar": "مصنع الجعة", - "bg": "пивоварна", - "ca": "cerveseria", - "cs": "pivovar", - "da": "bryggeri", - "de": "brauerei", - "el": "ζυθοποιία", - "en": "brewery", - "es": "cervecería", - "et": "õlletootja", - "fi": "panimo", - "fr": "brasserie", - "he": "מבשלה", - "hr": "pivovara", - "hu": "sörfőzde", - "is": "brugghús", - "it": "birrificio", - "ja": "醸造所", - "ko": "맥주 주조장", - "lt": "alaus darykla", - "lv": "alus darītava", - "nb": "bryggeri", - "nl": "brouwerij", - "pl": "browar", - "pt": "cervejaria", - "ro": "berărie", - "ru": "пивоварня", - "sk": "pivovar", - "sl": "pivovarna", - "sr": "пивара", - "sv": "bryggeri", - "tr": "bira fabrikası", - "uk": "пивоварня", - "zh": "啤酒厂" - }, - "builder": { - "ar": "عامل بناء", - "ca": "paleta", - "cs": "zedník", - "da": "murer", - "de": "maurer", - "el": "χτίστης τούβλων", - "en": "bricklayer", - "es": "albañil", - "fi": "muurari", - "fr": "maçon", - "hr": "zidar", - "hu": "kőműves", - "it": "muratore", - "ja": "れんが積み工", - "lv": "mūrnieks", - "nb": "murer", - "nl": "metselaar", - "pl": "murarz", - "pt": "pedreiro", - "ro": "zidar", - "ru": "каменщик", - "sk": "murár", - "sl": "zidar", - "sr": "зидар", - "sv": "murare", - "uk": "муляр", - "vi": "thợ hồ", - "zh": "泥水匠" - }, - "carpenter": { - "ar": "نجار", - "bg": "марангоз", - "ca": "fuster", - "cs": "tesař", - "da": "tømrer", - "de": "zimmerer", - "el": "μαραγκός", - "en": "carpenter", - "en-ca": "carpentry", - "es": "carpintero", - "et": "puusepp", - "fi": "puuseppä", - "fr": "charpentier", - "he": "נגר", - "hi": "बढ़ई", - "hu": "ács", - "id": "tukang kayu", - "it": "carpentiere", - "ja": "大工", - "ko": "목수", - "lt": "dailidė", - "lv": "galdnieks", - "nb": "tømrer", - "nl": "timmerman", - "pl": "cieśla", - "pt": "carpinteiro", - "ro": "tâmplar", - "ru": "плотник", - "sl": "tesar", - "sr": "столар", - "tr": "marangozluk", - "uk": "тесляр", - "vi": "thợ mộc", - "zh": "木匠" - }, - "caterer": { - "ca": "cuiner de càtering", - "cs": "lahůdkář", - "el": "τροφοδότης", - "en": "traiteur", - "he": "מסעיד", - "ja": "仕出し屋", - "ko": "요리 조달자", - "nb": "traktør", - "ru": "кейтеринг", - "uk": "громадське харчування", - "vi": "người cung cấp lương thực, thực phẩm" - }, - "chimney_sweeper": { - "ar": "منظف مداخن", - "bg": "коминочистач", - "ca": "escura-xemeneies", - "cs": "kominík", - "da": "skorstensfejer", - "de": "schornsteinfeger", - "en": "chimney sweep", - "es": "deshollinador", - "et": "korstnapühkija", - "fi": "nuohooja", - "fr": "ramoneur", - "he": "מנקה ארובות", - "hu": "kéményseprő", - "it": "spazzacamino", - "ja": "煙突掃除人", - "ko": "굴뚝 청소부", - "nb": "feier", - "nl": "schoorsteenveger", - "pl": "kominiarz", - "ru": "трубочист", - "sk": "kominár", - "sl": "dimnikar", - "sr": "оџачар", - "sv": "sotare", - "tr": "baca temizleyicisi", - "uk": "сажотрус" - }, - "clockmaker": { - "ar": "صانع الساعات", - "bg": "часовникар", - "ca": "rellotger", - "cs": "hodinář", - "da": "urmager", - "de": "uhrmacher (größere uhren)", - "el": "ωρολογοποιός", - "en": "clockmaker", - "es": "relojero", - "et": "kellassepp", - "fi": "kelloseppä", - "fr": "horloger", - "he": "שען", - "hu": "órakészítő", - "it": "orologiaio", - "ja": "時計職人", - "ko": "시계사", - "nb": "klokkemaker", - "nl": "uurwerkmaker", - "ru": "часовщик", - "sl": "urar", - "sr": "часовничар", - "sv": "urmakare", - "uk": "годинникар", - "zh": "鐘匠", - "zh-cn": "钟表匠", - "zh-tw": "鐘錶匠" - }, - "confectionery": { - "ca": "pastisser", - "cs": "cukrárna", - "da": "konditori", - "de": "konditorei", - "en": "confectionery", - "fi": "konditoria", - "fr": "konditorei", - "he": "קונדיטוריה", - "hr": "slastičarnica", - "hu": "cukrászda", - "id": "konditorei", - "it": "konditorei", - "ja": "ケーキ店", - "nb": "konditori", - "nl": "konditorei", - "pl": "cukiernia", - "ro": "konditorei", - "ru": "кондитерская", - "sv": "konditori", - "tr": "konditorei", - "uk": "цукерня", - "zh": "糕點師" - }, - "distillery": { - "ca": "destil·leria", - "cs": "palírna", - "da": "destilleri", - "de": "brennerei", - "en": "distillery", - "es": "destilería", - "et": "viinavabrik", - "fi": "tislaamo", - "fr": "distillerie", - "he": "מזקקה", - "it": "distilleria", - "ja": "蒸留所", - "nb": "brenneri", - "nl": "destilleerderij", - "pl": "gorzelnia", - "pt": "destilaria", - "ru": "перегоночная", - "sk": "pálenica (alkohol)", - "sl": "destilarna", - "sr": "дестилерија", - "sv": "destilleri" - }, - "dressmaker": { - "ar": "صانع ملابس", - "ca": "modista", - "da": "syerske", - "de": "schneider", - "el": "μοδίστρα", - "en": "dressmaker", - "es": "modista", - "et": "õmbleja", - "fi": "ompelija", - "fr": "couturier", - "he": "תופר", - "id": "couturier", - "it": "modista", - "ja": "ドレスメーカー", - "ko": "양재사", - "nb": "sydame", - "nl": "couturier", - "pl": "krawiec", - "pt": "costureiro", - "ro": "couturier", - "ru": "модельер-дизайнер", - "sl": "krojač", - "sv": "sömmerska", - "uk": "модельєр", - "zh": "女装裁缝" - }, - "electrician": { - "ar": "عامل كهربائي", - "ca": "electricista", - "cs": "elektrikář", - "da": "elektriker", - "de": "elektroinstallateur", - "el": "ηλεκτρολόγος", - "en": "electrician", - "es": "electricista", - "et": "elektrik", - "fi": "sähköasentaja", - "fr": "électricien", - "he": "חשמלאי", - "hu": "villanyszerelő", - "id": "teknisi listrik", - "it": "elettricista", - "ja": "電気工事士", - "nb": "elektriker", - "nl": "elektricien", - "pl": "elektryk", - "pt": "eletricista", - "ru": "электромонтёр", - "sk": "elektrikár", - "sl": "električar", - "sr": "eлектричар", - "sv": "elektriker", - "th": "ช่างไฟฟ้า", - "tr": "elektrikçi", - "uk": "електромонтер", - "vi": "thợ sửa điện", - "zh": "電工" - }, - "floorer": { - "de": "bodenleger", - "en": "floorer" - }, - "gardener": { - "ar": "بستاني", - "bg": "градинар", - "ca": "jardiner", - "cs": "zahradník", - "da": "gartner", - "de": "gärtner", - "el": "κηπουρός", - "en": "gardener", - "es": "jardinero", - "et": "aednik", - "fi": "puutarhuri", - "fr": "jardinier", - "he": "גנן", - "hr": "vrtlar", - "hu": "kertész", - "id": "tukang kebun", - "it": "giardiniere", - "ja": "庭師", - "ko": "원예사", - "nb": "gartner", - "nl": "hovenier", - "pl": "ogrodnik", - "pt-br": "jardineiro", - "ro": "grădinar", - "ru": "садовод", - "sk": "záhradník", - "sl": "vrtnar", - "sr": "баштован", - "sv": "trädgårdsmästare", - "tr": "bahçıvan", - "uk": "садівник", - "vi": "người làm vườn", - "zh": "园艺工人" - }, - "glaziery": { - "de": "glaserei", - "en": "glaziery", - "fi": "lasitusliike", - "nl": "glashandel" - }, - "grinding_mill": { - "ar": "طاحونة", - "bg": "мелница", - "ca": "molí", - "cs": "mlýn", - "da": "mølle", - "de": "mühle", - "el": "μύλος", - "en": "mill", - "es": "molino", - "et": "veski", - "fi": "mylly", - "fr": "moulin", - "he": "מטחנה", - "hr": "vjetrenjače", - "hu": "malom", - "id": "penggilingan", - "it": "mulino", - "ja": "粉砕機", - "ko": "분쇄기", - "lt": "malūnas", - "lv": "dzirnavas", - "nb": "mølle", - "nl": "molen", - "pl": "młyn", - "pt": "moinho", - "ro": "moară", - "ru": "мельница", - "sk": "mlyn", - "sl": "mlin", - "sr": "млин", - "sv": "kvarn", - "tr": "değirmen", - "uk": "млин", - "zh": "研磨" - }, - "handicraft": { - "ca": "artesà", - "da": "kunsthåndværker", - "de": "kunsthandwerker", - "en": "handicrafter", - "fi": "käsityöläinen", - "fr": "artisan manuel", - "nb": "kunsthåndverker", - "pl": "rękodzielnik", - "ru": "ремесленник", - "sl": "rokodelec", - "sv": "hantverkare", - "uk": "ремісник" - }, - "hvac": { - "ar": "التدفئة والتهوية وتكييف الهواء", - "bg": "отопление, вентилация и климатизация", - "cs": "vytápění, ventilace a klimatizace", - "da": "vvs", - "de": "klimatechnik", - "el": "θέρμανση, εξαερισμός, και κλιματισμός", - "en": "hvac", - "es": "climatización", - "et": "kliimatehnika", - "fr": "chauffage, ventilation et climatisation", - "hi": "तापन, संवातन तथा वातानुकूलन", - "hr": "zrakovod", - "hu": "klímatechnika", - "id": "pemanasan, sirkulasi, dan penyejuk udara", - "nb": "varme-, ventilasjons- og sanitærteknikk", - "nl": "heating ventilation air conditioning", - "pt": "avac", - "ro": "încălzire, ventilare și condiționare de aer", - "ru": "управление микроклиматом", - "sr": "grejanje", - "sv": "vvs", - "th": "ระบบปรับอากาศ", - "uk": "опалення, вентиляція та кондиціювання повітря", - "zh": "暖通空調" - }, - "jeweller": { - "ar": "صائغ", - "bg": "бижутер", - "ca": "joier", - "cs": "klenotník", - "da": "juvelér", - "de": "juwelier", - "el": "κοσμηματοπώλης", - "en": "jeweler", - "en-ca": "jeweller", - "en-gb": "jeweller", - "es": "joyero", - "fr": "bijoutier", - "he": "תכשיטן", - "hu": "ékszerész", - "it": "gioielliere", - "ja": "ジュエラー", - "lt": "juvelyras", - "nb": "juveler", - "nl": "juwelier", - "pl": "jubiler", - "pt": "joalheiro", - "ro": "giuvaergiu", - "ru": "ювелир", - "sr": "златар", - "sv": "juvelerare", - "tr": "kuyumcu", - "uk": "ювелір", - "zh": "珠宝商" - }, - "locksmith": { - "ar": "قفّال", - "ca": "manyà", - "cs": "zámečník", - "da": "låsesmed", - "de": "schlosser", - "en": "locksmith", - "es": "cerrajero", - "et": "lukksepp", - "fr": "serrurier ou serrurière", - "he": "מנעולן", - "hu": "lakatos", - "nb": "låsesmed", - "nl": "slotenmaker", - "pl": "ślusarz", - "pt": "chaveiro", - "ro": "lăcătuș", - "ru": "слесарь", - "sl": "ključavničar", - "sv": "låssmed", - "uk": "слюсар", - "zh": "鎖匠" - }, - "metal_construction": { - "ar": "حدادة", - "ca": "forjador", - "cs": "kovotepec", - "da": "metalarbejder", - "de": "metallschmied", - "en": "metalsmith", - "fr": "forgeron ou forgeronne", - "hr": "kovač", - "ja": "鍛冶", - "nb": "smed", - "nl": "metaalsmid", - "pl": "kowal", - "ru": "кузнец", - "sl": "kovač", - "sr": "kovač metala", - "sv": "smed", - "tr": "demircilik", - "zh": "金属工匠" - }, - "optician": { - "ar": "نظاراتي", - "ca": "òptic", - "cs": "optik", - "da": "optiker", - "de": "augenoptiker", - "el": "οπτικός", - "en": "optician", - "es": "óptico", - "fi": "optometristi", - "fr": "opticien-lunetier", - "he": "אופטיקאי", - "hu": "optikus", - "id": "ahli optik", - "it": "ottico", - "ja": "眼鏡店", - "ko": "안경사", - "nb": "optiker", - "nl": "opticien", - "pl": "optyk", - "ru": "оптик", - "sl": "optik", - "sv": "optiker", - "tr": "optisyen", - "zh": "配鏡師" - }, - "painter": { - "ar": "نقَّاش", - "ca": "pintor", - "cs": "malíř pokojů", - "da": "maler", - "de": "maler und lackierer", - "el": "ελαιοχρωματιστής", - "en": "painter and varnisher", - "en-gb": "decorator", - "es": "pintor", - "et": "maaler", - "fi": "maalari", - "fr": "peintre en bâtiment", - "he": "צבע", - "hu": "szobafestő", - "is": "málari", - "it": "imbianchino", - "nb": "maler", - "nl": "huisschilder", - "pt": "pintor", - "ro": "vopsitor", - "ru": "маляр", - "sr": "молер", - "sv": "målare", - "tr": "duvar boyacısı", - "uk": "маляр", - "zh": "裝修" - }, - "photographer": { - "ar": "مصور", - "bg": "фотограф", - "ca": "fotògraf", - "cs": "fotograf", - "da": "fotograf", - "de": "fotograf", - "el": "φωτογράφος", - "en": "photographer", - "es": "fotógrafo", - "et": "fotograaf", - "fi": "valokuvaaja", - "fr": "photographe", - "he": "צלם", - "hi": "फोटोग्राफर", - "hr": "fotograf", - "hu": "fotográfus", - "id": "fotografer", - "is": "ljósmyndari", - "it": "fotografo", - "ja": "写真家", - "ko": "사진가", - "lt": "fotografas", - "lv": "fotogrāfs", - "nb": "fotograf", - "nl": "fotograaf", - "pl": "fotograf", - "pt": "fotógrafo", - "ro": "fotograf", - "ru": "фотограф", - "sk": "fotograf", - "sl": "fotograf", - "sr": "фотограф", - "sv": "fotograf", - "th": "ช่างภาพ", - "tr": "fotoğrafçı", - "uk": "фотограф", - "vi": "nhiếp ảnh gia", - "zh": "攝影師", - "zh-cn": "摄影师" - }, - "photographic_laboratory": { - "ca": "laboratori fotogràfic", - "cs": "fotografická laboratoř", - "de": "fotolabor", - "en": "photographic laboratory", - "es": "laboratorio fotográfico", - "fi": "valokuvauslaboratorio", - "it": "laboratorio fotografico", - "nl": "fotolaboratorium", - "sv": "fotolaboratorie" - }, - "piano_tuner": { - "ca": "afinador", - "cs": "ladič pian", - "de": "klavierstimmer", - "en": "piano tuner", - "es": "afinador de pianos", - "fi": "pianonvirittäjä", - "fr": "accordeur", - "he": "כוונן פסנתרים", - "hu": "zongorahangoló", - "it": "accordatore di pianoforti", - "ja": "ピアノ調律師", - "ko": "피아노 조율사", - "nb": "pianostemmer", - "nl": "pianostemmer", - "ru": "настройщик фортепиано", - "sr": "клавир штимер", - "sv": "pianostämmare" - }, - "plasterer": { - "ar": "جصاص", - "ca": "estuquista", - "cs": "štukatér", - "da": "stukkatør", - "de": "stuckateur", - "en": "plasterer", - "es": "yesero", - "fr": "plâtrier", - "it": "stuccatore", - "ja": "左官", - "nb": "stukkatør", - "nl": "stukadoor", - "pl": "tynkarz", - "ro": "tencuitor", - "ru": "штукатур", - "sl": "štukater", - "sr": "гипсар", - "sv": "spacklare", - "uk": "штукатур", - "zh": "泥水工" - }, - "plumber": { - "ar": "سباك", - "bg": "водопроводчик", - "ca": "lampista", - "cs": "instalatér", - "da": "blikkenslager", - "de": "installateur", - "el": "υδραυλικός", - "en": "plumber", - "es": "fontanero", - "et": "torumees", - "fi": "lvi-asentaja", - "fr": "plombier", - "he": "שרברב", - "hu": "víz- és gázszerelő", - "id": "tukang ledeng", - "it": "idraulico", - "ja": "配管工", - "ko": "배관공", - "nb": "rørlegger", - "nl": "loodgieter", - "pl": "hydraulik", - "pt": "encanador", - "ro": "instalator", - "ru": "сантехник", - "sl": "vodoinštalater", - "sr": "водоинсталатер", - "sv": "vvs-montör", - "tr": "tesisatçı", - "uk": "сантехнік", - "vi": "thợ sửa ống nước", - "zh": "水管工" - }, - "pottery": { - "ar": "صانع الفخار", - "ca": "terrissaire", - "cs": "hrnčíř", - "da": "pottemager", - "de": "töpfer", - "el": "αγγειοπλάστης", - "en": "potter", - "es": "alfarero", - "et": "pottsepp", - "fi": "keraamikko", - "fr": "potier", - "he": "קדר", - "hi": "कुम्हार", - "hu": "fazekas", - "it": "vasaio", - "ja": "陶芸家", - "ko": "옹기장이", - "lv": "podnieks", - "nb": "pottemaker", - "nl": "pottenbakker", - "pl": "garncarz", - "pt": "oleiro", - "pt-br": "ceramista", - "ro": "olar", - "ru": "горшечник", - "sl": "lončar", - "sv": "krukmakare", - "uk": "гончар", - "zh": "陶艺家" - }, - "printmaker": { - "ar": "مصمم مطبوعات", - "ca": "gravador", - "cs": "tiskař", - "da": "gravør", - "de": "druckgrafiker", - "el": "χαράκτης", - "en": "printmaker", - "es": "grabador", - "et": "graafik", - "fi": "kaivertaja", - "fr": "graveur ou graveuse d'estampes", - "he": "אמן הדפס", - "hr": "tiskar", - "hu": "gravírozó", - "id": "pembuat grafis", - "it": "incisore", - "ja": "版画家", - "ko": "판화가", - "lt": "spaustuvininkas", - "nb": "grafiker", - "nl": "prentkunstenaar", - "pl": "rytownik", - "pt": "litógrafo", - "pt-br": "gravador", - "ro": "artist grafic", - "ru": "художник-гравёр", - "sl": "grafik", - "sr": "графичар", - "sv": "gravör", - "tr": "grafiker", - "uk": "художник-гравер", - "vi": "đồ họa in ấn", - "zh": "版畫家" - }, - "rigger": { - "ca": "maquinista", - "de": "rigger (bühnentechnik)", - "en": "rigger" - }, - "roofer": { - "ar": "سقّاف", - "ca": "ensostrador", - "cs": "pokrývač", - "de": "dachdecker", - "el": "κατασκευαστής στέγης", - "en": "roofer", - "en-ca": "dachdecker", - "es": "techador", - "fr": "couvreur", - "hu": "tetőfedő", - "ja": "屋根職人", - "nb": "taktekker", - "nl": "dakwerker", - "pl": "dekarz", - "pt": "carpinteiro", - "ru": "кровельщик", - "sr": "кровопокривач", - "uk": "покрівельник" - }, - "saddler": { - "ca": "baster", - "cs": "sedlář", - "da": "saddelmager", - "de": "sattler", - "en": "saddler", - "es": "talabartero", - "et": "sadulsepp", - "fi": "satulasepät", - "fr": "bourrelier", - "hu": "szíjgyártó", - "it": "sellaio", - "nb": "salmaker", - "nl": "zadelmaker", - "pl": "rymarz", - "ro": "șelar", - "sl": "sedlar", - "sv": "sadelmakare", - "tr": "saraç" - }, - "sailmaker": { - "ca": "veler", - "cs": "plachtář", - "de": "segelmacher", - "en": "sailmaker", - "es": "velero", - "fi": "purjeentekijä", - "fr": "voilerie", - "is": "seglagerð", - "it": "velaio", - "ja": "製帆職人", - "nb": "seilmaker", - "nl": "zeilmaker", - "pl": "żaglomistrz", - "ru": "парусный мастер", - "sv": "segelmakare" - }, - "sawmill": { - "ar": "منشرة", - "bg": "дъскорезница", - "ca": "serradora", - "cs": "pila", - "da": "savværk", - "de": "sägewerk", - "el": "πριστήριο", - "en": "sawmill", - "es": "aserradero", - "et": "saeveski", - "fi": "saha", - "fr": "scierie", - "he": "מנסרה", - "hi": "आरा मिल", - "hr": "pilana", - "id": "penggergajian kayu", - "it": "segheria", - "ja": "製材所", - "ko": "제재소", - "lt": "lentpjūvė", - "lv": "kokzāģētava", - "nb": "sagbruk", - "nl": "houtzagerij", - "pl": "tartak", - "pt": "serração", - "pt-br": "serraria", - "ru": "лесопилка", - "sk": "píla", - "sl": "žaga", - "sr": "пилана", - "sv": "sågverk", - "uk": "тартак (деревообробка)", - "zh": "鋸木廠" - }, - "scaffolder": { - "de": "gerüstbauer", - "en": "scaffolder", - "pl": "monter rusztowań" - }, - "sculptor": { - "ar": "نحات", - "bg": "скулптор", - "ca": "escultor", - "cs": "sochař", - "da": "billedhugger", - "de": "bildhauer", - "el": "γλύπτης", - "en": "sculptor", - "es": "escultor", - "et": "skulptor", - "fi": "kuvanveistäjä", - "fr": "sculpteur ou sculptrice", - "he": "פסל", - "hi": "शिल्पकार", - "hr": "kipar", - "hu": "szobrász", - "id": "pemahat", - "is": "myndhöggvari", - "it": "scultore", - "ja": "彫刻家", - "ko": "조각가", - "lt": "skulptorius", - "lv": "skulptors", - "nb": "billedhugger", - "nl": "beeldhouwer", - "pl": "rzeźbiarz", - "pt": "escultor", - "ru": "скульптор", - "sk": "sochár", - "sl": "kipar", - "sr": "вајар", - "sv": "skulptör", - "tr": "heykeltıraş", - "uk": "скульптор", - "vi": "nhà điêu khắc", - "zh": "雕塑家" - }, - "shoemaker": { - "ar": "إسكافي", - "bg": "обущар", - "ca": "sabater", - "cs": "obuvník", - "da": "skomager", - "de": "schuhmacher", - "el": "τσαγκάρης", - "en": "cobbler", - "es": "zapatero", - "et": "kingsepp", - "fi": "suutari", - "fr": "cordonnier", - "he": "סנדלר", - "hu": "cipész", - "it": "calzolaio", - "ja": "コードウェイナー", - "lt": "batsiuvystė", - "lv": "kurpnieks", - "nb": "skomaker", - "nl": "schoenmaker", - "pl": "szewc", - "pt": "sapateiro", - "ro": "cizmar", - "ru": "сапожник", - "sk": "obuvníctvo", - "sl": "čevljar", - "sr": "обућар", - "sv": "skomakare", - "tr": "ayakkabıcı", - "uk": "чоботар", - "zh": "鞋匠" - }, - "stand_builder": { - "de": "messebau", - "en": "exhibition stand builder", - "nl": "standbouwer", - "pl": "wykonawca zabudowy stoisk", - "sv": "mässbyggare", - "uk": "будівельник виставкових стендів" - }, - "stonemason": { - "ar": "نحات الحجارة", - "bg": "каменоделство", - "ca": "picapedrer", - "cs": "kameník", - "da": "stenhugger", - "de": "steinmetz", - "el": "λιθοξόος", - "en": "stonemason", - "es": "cantero", - "fi": "kivenhakkaaja", - "fr": "tailleur de pierre", - "he": "סיתות", - "hr": "klesar", - "hu": "kőfaragó", - "it": "scalpellino", - "ja": "石工", - "nb": "steinhogger", - "nl": "steenhouwer", - "pl": "kamieniarz", - "pt": "canteiro", - "ru": "каменотёс", - "sl": "kamnosek", - "sr": "клесар", - "sv": "stenhuggare", - "uk": "каменяр", - "vi": "điêu khắc đá", - "zh": "石匠", - "zh-tw": "石工" - }, - "tailor": { - "ar": "خياط", - "bg": "шивач", - "ca": "sastre", - "cs": "krejčí", - "da": "skrædder", - "de": "schneider", - "el": "ράφτης", - "en": "tailor", - "es": "sastre", - "et": "rätsep", - "fi": "vaatturi", - "fr": "tailleur", - "he": "חייט", - "hi": "दर्जी", - "hu": "szabó", - "id": "penjahit", - "it": "sarto", - "ja": "仕立て屋", - "ko": "재단사", - "lt": "siuvėjas", - "lv": "drēbnieks", - "nb": "skredder", - "nl": "kleermaker", - "pl": "krawiec", - "pt": "alfaiate", - "ro": "croitor", - "ru": "портной", - "sk": "krajčír", - "sl": "krojač", - "sr": "кројач", - "sv": "skräddare", - "tr": "terzi", - "uk": "кравець", - "vi": "thợ may", - "zh": "裁缝", - "zh-hk": "裁縫", - "zh-tw": "裁縫" - }, - "tiler": { - "ar": "مبلّط", - "ca": "enrajolador", - "de": "fliesenleger", - "en": "tiler", - "es": "tejero", - "fr": "carreleur", - "it": "piastrellista", - "nl": "tegelzetter", - "pt": "ladrilheiro", - "sl": "keramičar", - "sr": "керамичар", - "sv": "plattsättare" - }, - "tinsmith": { - "ar": "سمكري", - "ca": "llauner", - "cs": "klempíř", - "de": "spengler", - "el": "τενεκετζής", - "en": "whitesmith", - "es": "hojalatero", - "fr": "ferblantier", - "he": "פחח", - "hu": "bádogos", - "is": "blikksmiður", - "it": "magnano", - "nb": "kobber- og blikkenslager", - "nl": "tingieter", - "pl": "blacharz", - "pt": "latoeiro", - "ru": "жестянщик", - "sl": "kositrar", - "sr": "калајџија", - "sv": "plåtslagare", - "uk": "бляхар" - }, - "turner": { - "ca": "torner", - "da": "drejer", - "de": "drechsler", - "en": "turner", - "es": "tornero", - "fi": "sorvaaja", - "fr": "tourneur sur bois", - "hu": "esztergályos", - "ja": "ろくろ工", - "nb": "tredreier", - "nl": "draaier", - "pl": "tokarz", - "ro": "strungar", - "ru": "токарь", - "sv": "svarvare", - "uk": "токар" - }, - "upholsterer": { - "cs": "čalouník", - "da": "møbelpolstrer", - "de": "polsterer", - "en": "upholsterer", - "es": "tapicero", - "fi": "verhoilijat", - "fr": "tapissier garnisseur", - "he": "רפד", - "hu": "kárpitos", - "it": "tappezziere", - "nb": "møbeltapetserer", - "nl": "stoffeerder", - "pl": "tapicer", - "pt": "tapeceiro", - "ro": "tapițer", - "sv": "tapetserare" - }, - "watchmaker": { - "ar": "ساعاتي", - "ca": "rellotger", - "cs": "hodinář", - "da": "urmager", - "de": "uhrmacher", - "el": "ωρολογοποιός", - "en": "watchmaker", - "es": "relojero", - "fi": "kelloseppä", - "fr": "horloger", - "he": "שען", - "hi": "घड़ीसाज़", - "hr": "urar", - "hu": "órásmester", - "is": "úrsmiður", - "it": "orologiaio", - "ja": "時計職人", - "ko": "시계 제작자", - "nb": "urmaker", - "nl": "horlogemaker", - "pl": "zegarmistrz", - "pt": "relojoeiro", - "ru": "часовщик", - "sl": "urar", - "sr": "часовничар", - "sv": "urmakare", - "tr": "saatçi", - "uk": "годинникар", - "zh": "錶匠" - }, - "winery": { - "ar": "مزارع الكروم", - "bg": "винарска изба", - "ca": "celler", - "cs": "budova vinařství", - "da": "vingård", - "de": "weingut", - "el": "οινοποιείο", - "en": "winery", - "es": "bodega", - "et": "veinikoda", - "fi": "viininvalmistaja", - "fr": "domaine viticole", - "he": "יקב", - "hr": "vinarija", - "hu": "pincészet", - "it": "casa vinicola", - "ja": "ワイナリー", - "nb": "vingård", - "nl": "wijndomein", - "pl": "winiarnia", - "pt": "lagar", - "ro": "vinărie", - "ru": "винодельческое хозяйство", - "sl": "vinarna", - "sr": "винарија", - "sv": "vineri", - "tr": "şaraphane", - "uk": "виноробня", - "zh": "酒廠廢水" - } - }, - "crane": { - "": { - "cs": "portálový jeřáb", - "da": "portalkran", - "de": "portalkran", - "en": "gantry crane", - "es": "grúa pórtico", - "et": "pukk-kraana", - "fr": "portique de manutention", - "he": "עגורני שער", - "hr": "portalna dizalica", - "ja": "ガントリークレーン", - "ko": "갠트리 크레인", - "nl": "portaalkraan", - "pl": "suwnica", - "ru": "козловой кран", - "sk": "portálový kontajnerový žeriav", - "sv": "portalkran", - "uk": "козловий кран", - "zh": "門式移動吊車", - "zh-cn": "门式起重机" - } - }, - "created_by": { - "JOSM": { - "ar": "جوسم", - "ca": "java openstreetmap editor", - "en": "josm", - "es": "java openstreetmap editor", - "sv": "java openstreetmap editor" - }, - "gnome-maps_3.33.3": { - "de": "gnome karten", - "en": "gnome maps", - "es": "gnome mapas", - "fr": "gnome cartes", - "it": "mappe", - "pt": "gnome mapas" - } - }, - "crop": { - "coffee": { - "ar": "بذور البن الأخضر", - "bg": "кафеено дърво", - "ca": "gra de cafè", - "cs": "kávová zrna", - "da": "kaffebønne", - "de": "kaffeebohne", - "de-ch": "kaffee", - "el": "καφεόδεντρο", - "en": "coffee bean", - "en-ca": "coffea", - "en-gb": "coffea", - "es": "grano de café", - "et": "kohviuba", - "fi": "kahvipapu", - "fr": "grain de café", - "he": "פולי קפה", - "hi": "कॉफ़ी के बीज", - "hr": "kava", - "hu": "kávé", - "id": "biji kopi", - "it": "chicco di caffè", - "ja": "コーヒー豆", - "ko": "커피콩", - "lt": "kavos pupelė", - "lv": "kafijas pupiņa", - "nb": "kaffebønne", - "nl": "koffieboon", - "pl": "ziarno kawy", - "pt": "café", - "ro": "boabă de cafea", - "ru": "кофейное зерно", - "sk": "kávové zrno", - "sl": "kavno zrno", - "sr": "зрно кафе", - "sv": "kaffeböna", - "th": "สกุลกาแฟ", - "uk": "кавове зерно", - "vi": "hạt cà phê", - "zh": "咖啡豆" - }, - "flowers": { - "bg": "цвете", - "cs": "květina", - "de": "blume", - "en": "flowering plant", - "es": "flores", - "et": "lilled", - "fr": "fleurs", - "it": "pianta fiorita", - "lt": "gėlė", - "nl": "bloemen", - "ru": "цветок", - "sl": "cvetnica", - "sr": "цвет" - }, - "rice": { - "ar": "حقل الأرز", - "bg": "оризище", - "ca": "arrossar", - "cs": "rýžové pole", - "de": "reisfeld", - "en": "paddy field", - "es": "arrozal", - "fi": "riisipelto", - "fr": "rizière", - "he": "שדה אורז", - "hi": "धान", - "hr": "rižino polje", - "id": "sawah", - "it": "risaia", - "ja": "田", - "ko": "논", - "lt": "lietinimas", - "nb": "rismark", - "nl": "rijstveld", - "ru": "заливное поле", - "sl": "riževo polje", - "th": "นา", - "tr": "çeltik tarlası", - "uk": "заливне поле", - "vi": "ruộng lúa", - "zh": "稻田" - }, - "strawberry": { - "ar": "فراولة", - "bg": "ананасова ягода", - "ca": "maduixot", - "cs": "jahodník velkoplodý", - "da": "jordbær", - "de": "gartenerdbeere", - "el": "φράουλα", - "en": "strawberry", - "en-gb": "strawberry plant", - "es": "fragaria × ananassa", - "et": "aedmaasikas", - "fi": "puutarhamansikka", - "fr": "fraisier cultivé", - "he": "תות שדה", - "hi": "स्ट्रॉबेरी", - "hr": "vrtna jagoda", - "hu": "eper", - "id": "stroberi", - "it": "fragaria × ananassa", - "ja": "イチゴ", - "ko": "딸기", - "lt": "braškė", - "lv": "dārza zemene", - "nb": "hagejordbær", - "nl": "aardbeienplant", - "pl": "truskawka", - "pt": "morango", - "ro": "căpșună", - "ru": "земляника садовая", - "sr": "јагода", - "sv": "jordgubbe", - "th": "สตรอว์เบอร์รี", - "tr": "bahçe çileği", - "uk": "полуниці садові", - "vi": "dâu tây", - "zh": "草莓", - "zh-hk": "士多啤梨" - }, - "tea": { - "ar": "كاميليا صينية", - "bg": "чай", - "cs": "čajovník čínský", - "da": "tebusk", - "de": "tee", - "en": "camellia sinensis", - "et": "teepõõsas", - "fi": "teepensas", - "fr": "théier", - "he": "קמליה סינית", - "hi": "कामेल्या सीनेन्सीस्", - "hr": "kineski čajevac", - "hu": "tea", - "ja": "チャノキ", - "ko": "차나무", - "lt": "kininis arbatmedis", - "lv": "tējas koks", - "nl": "theeplant", - "pl": "herbata chińska", - "ru": "чай", - "sk": "čajovník čínsky", - "sl": "čajevec", - "sr": "чај", - "sv": "tebuske", - "th": "ต้นชา", - "tr": "çay", - "uk": "чай", - "vi": "chè", - "zh": "茶樹", - "zh-cn": "茶树" - }, - "wheat": { - "ar": "قمح", - "bg": "пшеница", - "ca": "blat", - "cs": "pšenice", - "da": "hvede", - "de": "weizen", - "el": "σιτάρι", - "en": "wheat", - "es": "trigo", - "et": "nisu", - "fi": "vehnä", - "fr": "blé", - "he": "חיטה", - "hi": "गेहूं", - "hr": "pšenica", - "hu": "búza", - "id": "gandum", - "is": "hveiti", - "it": "grano", - "ja": "小麦", - "ko": "밀", - "lt": "kvietys", - "lv": "kvieši", - "nb": "hvete", - "nl": "tarwe", - "pl": "pszenica", - "pt": "trigo", - "ro": "grâu", - "ru": "пшеница", - "sk": "pšenica", - "sl": "pšenica", - "sr": "пшеница", - "sv": "brödvete", - "th": "ข้าวสาลี", - "tr": "triticum", - "uk": "пшениця", - "vi": "lúa mì", - "zh": "小麦", - "zh-hk": "小麥", - "zh-tw": "小麥" - } - }, - "crossing": { - "": { - "de": "anrufschranke" - } - }, - "crossing_ref": { - "pelican": { - "de": "druckknopfanlage", - "en": "pelican crossing", - "zh": "鵜鶘式人行橫道" - }, - "puffin": { - "en": "puffin crossing", - "zh": "海雀式人行橫道" - }, - "toucan": { - "en": "toucan crossing" - }, - "zebra": { - "ca": "pas de vianants", - "de": "zebrastreifen", - "en": "zebra crossing", - "es": "paso de cebra", - "fr": "bande de passage piéton", - "id": "zebra cross", - "nl": "zebrapad", - "pl": "zebra", - "ru": "зебра" - } - }, - "cuisine": { - "arab": { - "ar": "مطبخ عربي", - "bg": "арабска кухня", - "ca": "gastronomia àrab", - "cs": "arabská kuchyně", - "da": "arabiske køkken", - "de": "arabische küche", - "en": "arab cuisine", - "es": "gastronomía árabe", - "fi": "arabialainen keittiö", - "fr": "cuisine arabe", - "he": "המטבח הערבי", - "hr": "arapska kuhinja", - "id": "masakan arab", - "it": "cucina araba", - "ja": "アラブ料理", - "ko": "아랍 음식", - "nl": "arabische keuken", - "pl": "kuchnia arabska", - "pt": "culinária árabe", - "ro": "bucătăria arabă", - "ru": "арабская кухня", - "sl": "arabska kuhinja", - "sr": "категорија:арапска кухиња", - "tr": "arap mutfağı", - "uk": "арабська кухня", - "vi": "ẩm thực ả rập", - "zh": "阿拉伯飲食" - }, - "argentinian": { - "ar": "مطبخ أرجنتيني", - "ca": "gastronomia de argentina", - "cs": "argentinská kuchyně", - "de": "argentinische küche", - "en": "argentine cuisine", - "es": "gastronomía de argentina", - "fi": "argentiinalainen keittiö", - "fr": "cuisine argentine", - "he": "המטבח הארגנטינאי", - "id": "masakan argentina", - "it": "cucina argentina", - "ja": "アルゼンチン料理", - "ko": "아르헨티나 요리", - "lv": "argentīniešu virtuve", - "nl": "argentijnse keuken", - "pl": "kuchnia argentyńska", - "pt": "culinária da argentina", - "ro": "bucătăria argentiniană", - "ru": "аргентинская кухня", - "sv": "argentinska köket", - "tr": "arjantin mutfağı", - "uk": "аргентинська кухня", - "zh": "阿根廷飲食" - }, - "asian": { - "ar": "مطبخ آسيا", - "bg": "азиатска кухня", - "ca": "gastronomia d'àsia", - "cs": "asijská kuchyně", - "de": "asiatische küche", - "el": "ασιατική κουζίνα", - "en": "asian cuisine", - "es": "gastronomía de asia", - "fi": "aasialainen keittiö", - "fr": "cuisine asiatique", - "he": "המטבח האסייתי", - "hi": "एशियाई भोजन", - "id": "masakan asia", - "it": "cucina asiatica", - "ja": "アジア料理", - "ko": "아시아 요리", - "lv": "āzijas virtuve", - "nl": "aziatische keuken", - "pt": "culinária da ásia", - "ru": "азиатская кухня", - "sl": "azijska kuhinja", - "sv": "asiatiska köket", - "th": "อาหารเอเชีย", - "tr": "asya mutfağı", - "uk": "азійська кухня", - "vi": "ẩm thực châu á", - "zh": "亞洲式料理" - }, - "australian": { - "ar": "مطبخ أسترالي", - "cs": "australská kuchyně", - "de": "australische küche", - "en": "australian cuisine", - "es": "gastronomía de australia", - "fi": "australialainen keittiö", - "fr": "cuisine australienne", - "he": "המטבח האוסטרלי", - "id": "masakan australia", - "it": "cucina australiana", - "ja": "オーストラリア料理", - "ko": "오스트레일리아 요리", - "lv": "austrāliešu virtuve", - "nl": "australische keuken", - "pl": "kuchnia australijska", - "pt": "culinária da austrália", - "ru": "австралийская кухня", - "sr": "аустралијска кухиња", - "sv": "australiska köket", - "tr": "avustralya mutfağı", - "uk": "австралійська кухня", - "vi": "ẩm thực úc", - "zh": "澳大利亞飲食" - }, - "bagel": { - "ar": "بايغل", - "bg": "бейгъл", - "el": "μπέγκελ", - "en": "bagel", - "fi": "vesirinkeli", - "he": "כעך", - "is": "beygla", - "ja": "ベーグル", - "ko": "베이글", - "lt": "didriestainis", - "pl": "bajgiel", - "ru": "бейгл", - "sr": "бејгл", - "th": "เบเกิล", - "uk": "байгель", - "vi": "bánh mì vòng", - "zh": "貝果", - "zh-cn": "贝果" - }, - "balkan": { - "bg": "балканска кухня", - "ca": "gastronomia dels balcans", - "cs": "balkánská kuchyně", - "de": "balkanküche", - "el": "βαλκανική κουζίνα", - "en": "balkan cuisine", - "es": "gastronomía de los balcanes", - "et": "balkani köök", - "fr": "cuisine des balkans", - "he": "המטבח הבלקני", - "id": "hidangan balkan", - "ja": "バルカン半島の料理", - "pl": "kuchnia bałkańska", - "pt": "culinária dos bálcãs", - "ro": "bucătăria balcanică", - "ru": "балканская кухня", - "sr": "балканска кухиња", - "tr": "balkan mutfağı", - "uk": "балканська кухня", - "vi": "ẩm thực balkan", - "zh": "巴尔干饮食" - }, - "barbecue": { - "de": "grillrestaurant", - "en": "barbecue restaurant", - "nl": "barbecuerestaurant", - "zh": "烤肉店" - }, - "bolivian": { - "ar": "مطبخ بوليفي", - "ca": "gastronomia de bolívia", - "cs": "bolivijská kuchyně", - "de": "bolivianische küche", - "en": "bolivian cuisine", - "es": "gastronomía de bolivia", - "fr": "cuisine bolivienne", - "he": "המטבח הבוליבאני", - "it": "cucina boliviana", - "ja": "ボリビア料理", - "ko": "볼리비아 요리", - "nl": "boliviaanse keuken", - "pl": "kuchnia boliwijska", - "pt": "culinária da bolívia", - "ru": "боливийская кухня", - "sr": "боливијска кухиња", - "sv": "bolivianska köket", - "tr": "bolivya mutfağı", - "uk": "болівійська кухня" - }, - "brazilian": { - "ar": "مطبخ برازيلي", - "bg": "бразилска кухня", - "ca": "gastronomia del brasil", - "cs": "brazilská kuchyně", - "de": "brasilianische küche", - "en": "brazilian cuisine", - "es": "gastronomía de brasil", - "fi": "brasilialainen keittiö", - "fr": "cuisine brésilienne", - "he": "המטבח הברזילאי", - "id": "hidangan brasil", - "it": "cucina brasiliana", - "ja": "ブラジル料理", - "ko": "브라질 요리", - "lv": "brazīliešu virtuve", - "nl": "braziliaanse keuken", - "pl": "kuchnia brazylijska", - "pt": "culinária do brasil", - "ru": "бразильская кухня", - "sr": "бразилска кухиња", - "sv": "brasilianska köket", - "tr": "brezilya mutfağı", - "uk": "бразильська кухня", - "vi": "ẩm thực brasil", - "zh": "巴西飲食" - }, - "british": { - "ar": "مطبخ بريطاني", - "ca": "cuina britànica", - "cs": "britská kuchyně", - "de": "britische küche", - "en": "british cuisine", - "es": "gastronomía del reino unido", - "fi": "brittiläinen keittiö", - "fr": "cuisine britannique", - "he": "המטבח הבריטי", - "id": "masakan britania", - "it": "cucina britannica", - "ja": "イギリス料理", - "ko": "영국 요리", - "lt": "britų virtuvė", - "lv": "britu virtuve", - "nl": "britse keuken", - "pt": "culinária do reino unido", - "ru": "британская кухня", - "sr": "британска кухиња", - "sv": "brittiska köket", - "th": "อาหารสหราชอาณาจักร", - "tr": "i̇ngiliz mutfağı", - "uk": "британська кухня", - "zh": "英國飲食" - }, - "bubble_tea": { - "ar": "شاي الفقاعات", - "bg": "чай с мехурчета", - "ca": "te de bombolles", - "cs": "perlivý mléčný čaj", - "en": "bubble tea", - "es": "té de burbujas", - "fi": "pallerotee", - "fr": "thé aux perles", - "he": "תה בועות", - "hu": "buboréktea", - "id": "teh susu mutiara", - "ja": "タピオカ・ティー", - "ko": "버블티", - "nb": "te med kuler", - "nl": "bubbelthee", - "pt": "chá de bolhas", - "ru": "чай с шариками", - "th": "ชานมไข่มุก", - "vi": "trà sữa trân châu", - "zh": "珍珠奶茶" - }, - "burger": { - "ar": "هامبرغر", - "bg": "хамбургер", - "ca": "hamburgueseria", - "cs": "hamburger", - "da": "burger", - "de": "burger", - "de-ch": "hamburger", - "el": "χάμπουργκερ", - "en": "fast-food hamburger restaurant", - "en-ca": "hamburger", - "en-gb": "hamburger", - "es": "hamburguesería", - "et": "hamburger", - "fi": "pikaruokahampurilaisravintola", - "fr": "hamburger", - "he": "המבורגר", - "hi": "हैमबर्गर", - "hr": "hamburger", - "hu": "hamburger", - "id": "hamburger", - "is": "hamborgari", - "it": "hamburger", - "ja": "ハンバーガー", - "ko": "햄버거", - "lt": "hamburgeris", - "lv": "hamburgers", - "nb": "hamburger", - "nl": "hamburger", - "pl": "hamburger", - "pt": "hambúrguer", - "ro": "hamburger", - "ru": "гамбургер", - "sk": "hamburger", - "sl": "hamburger", - "sr": "хамбургер", - "sv": "hamburgare", - "th": "แฮมเบอร์เกอร์", - "tr": "hamburger", - "uk": "гамбургер", - "vi": "hamburger", - "zh": "漢堡", - "zh-cn": "汉堡", - "zh-hk": "漢堡包" - }, - "caribbean": { - "ar": "مطبخ كاريبي", - "cs": "karibská kuchyně", - "de": "karibische küche", - "en": "caribbean cuisine", - "es": "gastronomía del caribe", - "fr": "cuisine antillaise", - "it": "cucina caraibica", - "ja": "カリブ料理", - "ko": "카리브 요리", - "nl": "caraïbische keuken", - "pl": "kuchnia karaibska", - "pt": "culinária do caribe", - "zh": "加勒比飲食" - }, - "chinese": { - "ar": "مطبخ صيني", - "bg": "китайска кухня", - "ca": "gastronomia de la xina", - "cs": "čínská kuchyně", - "da": "kinesisk madlavning", - "de": "chinesische küche", - "el": "κινέζικη κουζίνα", - "en": "chinese cuisine", - "es": "gastronomía de china", - "et": "hiina köök", - "fi": "kiinalainen keittiö", - "fr": "cuisine chinoise", - "he": "המטבח הסיני", - "hi": "चीनी व्यंजन", - "hr": "kineska kuhinja", - "hu": "kínai konyha", - "id": "masakan tiongkok", - "it": "cucina cinese", - "ja": "中華料理", - "ko": "중국 요리", - "lt": "kinų virtuvė", - "lv": "ķīniešu virtuve", - "nb": "det kinesiske kjøkken", - "nl": "chinese keuken", - "pl": "kuchnia chińska", - "pt": "culinária da china", - "ro": "bucătărie chinezească", - "ru": "китайская кухня", - "sk": "čínska kuchyňa", - "sr": "kineska kuhinja", - "sv": "kinesiska köket", - "th": "อาหารจีน", - "tr": "çin mutfağı", - "uk": "китайська кухня", - "vi": "ẩm thực trung quốc", - "zh": "中国菜" - }, - "croatian": { - "ar": "مطبخ كرواتي", - "cs": "chorvatská kuchyně", - "de": "kroatische küche", - "el": "κροατική κουζίνα", - "en": "croatian cuisine", - "es": "gastronomía de croacia", - "fr": "cuisine croate", - "he": "המטבח הקרואטי", - "hr": "hrvatska kuhinja", - "id": "hidangan kroasia", - "it": "cucina croata", - "ja": "クロアチア料理", - "ko": "크로아티아 요리", - "lt": "kroatiška virtuvė", - "lv": "horvātu virtuve", - "nl": "kroatische keuken", - "pl": "kuchnia chorwacka", - "ru": "хорватская кухня", - "sl": "kulinarika hrvaške", - "sr": "хрватска кухиња", - "sv": "kroatiska köket", - "tr": "hırvat mutfağı", - "uk": "хорватська кухня", - "vi": "ẩm thực croatia", - "zh": "克羅埃西亞飲食" - }, - "cupcake": { - "ar": "كاب كيك", - "ca": "cupcake", - "cs": "cupcake", - "de": "cupcake", - "el": "καπ κέικ", - "en": "cupcake bakery", - "es": "cupcake", - "fi": "kuppikakku", - "fr": "cupcake", - "he": "קאפקייק", - "hu": "cupcake", - "id": "kue mangkok", - "is": "bollakaka", - "it": "cupcake", - "ja": "カップケーキ", - "ko": "컵케이크", - "lv": "glazūrkēkss", - "nb": "cupcakes", - "nl": "cupcake", - "pl": "cupcake", - "pt": "cupcake", - "ru": "капкейк", - "sk": "cupcake", - "sr": "капкејк", - "sv": "cupcake", - "th": "คัพเค้ก", - "tr": "cupcake", - "uk": "капкейк", - "vi": "cupcake", - "zh": "纸杯蛋糕", - "zh-hk": "紙杯蛋糕" - }, - "czech": { - "ar": "مطبخ تشيكي", - "bg": "чешка кухня", - "ca": "gastronomia de txèquia", - "cs": "česká kuchyně", - "de": "böhmische küche", - "en": "czech cuisine", - "es": "gastronomía de la república checa", - "et": "tšehhi köök", - "fi": "tšekkiläinen keittiö", - "fr": "cuisine tchèque", - "he": "המטבח הצ'כי", - "hr": "češka kuhinja", - "it": "cucina ceca", - "ja": "チェコ料理", - "ko": "체코 요리", - "lt": "čekijos virtuvė", - "lv": "čehu virtuve", - "nl": "tsjechische keuken", - "pl": "kuchnia czeska", - "pt": "culinária da chéquia", - "ro": "bucătăria cehă", - "ru": "чешская кухня", - "sk": "česká kuchyňa", - "sr": "чешка кухиња", - "sv": "tjeckiska köket", - "uk": "чеська кухня", - "vi": "ẩm thực séc", - "zh": "捷克飲食" - }, - "danish": { - "ar": "مطبخ دنماركي", - "ca": "gastronomia de dinamarca", - "cs": "dánská kuchyně", - "da": "dansk køkken", - "de": "dänische küche", - "en": "danish cuisine", - "es": "gastronomía de dinamarca", - "fi": "tanskalainen keittiö", - "fr": "cuisine danoise", - "he": "המטבח הדני", - "id": "masakan denmark", - "it": "cucina danese", - "ja": "デンマーク料理", - "ko": "덴마크 요리", - "lt": "danijos virtuvė", - "lv": "dāņu virtuve", - "nb": "det danske kjøkken", - "nl": "deense keuken", - "pl": "kuchnia duńska", - "pt": "culinária da dinamarca", - "ru": "датская кухня", - "sv": "danska köket", - "tr": "danimarka mutfağı", - "uk": "данська кухня", - "vi": "ẩm thực đan mạch", - "zh": "丹麥飲食" - }, - "dim_sum": { - "ar": "ديم سم", - "en": "dim sum", - "fr": "dimsum", - "he": "דים סאם", - "hu": "tím szam", - "id": "dimsum", - "ja": "点心", - "ko": "딤섬", - "ru": "димсам", - "th": "ติ่มซำ", - "uk": "дім сум", - "vi": "điểm sấm", - "zh": "點心", - "zh-cn": "点心" - }, - "fish_and_chips": { - "ar": "السمك ورقائق البطاطا", - "bg": "риба и пържени картофи", - "ca": "fish and chips", - "cs": "fish and chips", - "da": "fish and chips", - "de": "fish and chips", - "el": "φις εντ τσιπς", - "en": "fish and chip shop", - "en-ca": "fish and chips", - "en-gb": "fish and chips", - "es": "pescado con papas fritas", - "et": "fish and chips", - "fi": "fish and chips", - "fr": "fish and chips", - "he": "פיש אנד צ'יפס", - "hi": "चिप्स और मछली", - "hu": "fish and chips", - "id": "fish and chips", - "is": "fiskur og franskar", - "it": "fish and chips", - "ja": "フィッシュ・アンド・チップス店", - "ko": "피시 앤드 칩스", - "lt": "žuvis ir traškučiai", - "nb": "fish and chips", - "nl": "fish and chips", - "pl": "fish and chips", - "pt": "fish and chips", - "pt-br": "peixe e fritas", - "ro": "fish and chips", - "ru": "рыба и картофель фри", - "sr": "риба и помфрит", - "sv": "fish and chips", - "th": "ฟิชแอนด์ชิปส์", - "tr": "fish and chips", - "uk": "риба та картопля фрі", - "vi": "fish and chips", - "zh": "炸鱼薯条", - "zh-hk": "炸魚薯條", - "zh-tw": "炸魚薯條" - }, - "french": { - "ar": "مطبخ فرنسي", - "bg": "френска кухня", - "ca": "gastronomia de frança", - "cs": "francouzská kuchyně", - "da": "franske køkken", - "de": "französische küche", - "el": "γαλλική κουζίνα", - "en": "french cuisine", - "es": "gastronomía de francia", - "et": "prantsuse köök", - "fi": "ranskalainen keittiö", - "fr": "cuisine française", - "he": "המטבח הצרפתי", - "hr": "francuska kuhinja", - "hu": "francia konyhaművészet", - "id": "masakan perancis", - "it": "cucina francese", - "ja": "フランス料理", - "ko": "프랑스 요리", - "lv": "franču virtuve", - "nb": "det franske kjøkken", - "nl": "franse keuken", - "pl": "kuchnia francuska", - "pt": "culinária da frança", - "ro": "bucătăria franceză", - "ru": "французская кухня", - "sr": "француска кухиња", - "sv": "franska köket", - "tr": "fransız mutfağı", - "uk": "французька кухня", - "vi": "ẩm thực pháp", - "zh": "法國飲食文化" - }, - "friture": { - "de": "imbissstand", - "en": "friterie", - "nl": "frietkot" - }, - "frozen_yogurt": { - "ca": "botiga de iogut gelat", - "en": "frozen yogurt shop", - "es": "tienda de yogur helado" - }, - "german": { - "ar": "مطبخ ألماني", - "ca": "gastronomia d'alemanya", - "cs": "německá kuchyně", - "da": "tyske køkken", - "de": "deutsche küche", - "de-ch": "dütschi chochi", - "el": "γερμανική κουζίνα", - "en": "german cuisine", - "es": "gastronomía de alemania", - "et": "saksa köök", - "fi": "saksalainen keittiö", - "fr": "cuisine allemande", - "he": "המטבח הגרמני", - "hr": "njemačka kuhinja", - "hu": "német gasztronómia", - "id": "masakan jerman", - "it": "cucina tedesca", - "ja": "ドイツ料理", - "ko": "독일 요리", - "lt": "vokiečių virtuvė", - "lv": "vācu virtuve", - "nl": "duitse keuken", - "pl": "kuchnia niemiecka", - "pt": "culinária da alemanha", - "ro": "bucătăria germană", - "ru": "немецкая кухня", - "sr": "немачка кухиња", - "sv": "tyska köket", - "th": "อาหารเยอรมัน", - "tr": "alman mutfağı", - "uk": "німецька кухня", - "vi": "ẩm thực đức", - "zh": "德国飲食文化" - }, - "greek": { - "ar": "مطبخ يوناني", - "ca": "gastronomia de grècia", - "cs": "řecká kuchyně", - "de": "griechische küche", - "el": "ελληνική κουζίνα", - "en": "greek cuisine", - "es": "gastronomía de grecia", - "et": "kreeka köök", - "fi": "kreikkalainen keittiö", - "fr": "cuisine grecque", - "he": "המטבח היווני", - "hu": "görög konyhaművészet", - "id": "hidangan yunani", - "it": "cucina greca", - "ja": "ギリシア料理", - "ko": "그리스 요리", - "lt": "graikiška virtuvė", - "nl": "griekse keuken", - "pl": "kuchnia grecka", - "pt": "culinária da grécia", - "ro": "bucătăria grecească", - "ru": "греческая кухня", - "sr": "грчка кухиња", - "sv": "grekiska köket", - "tr": "yunan mutfağı", - "uk": "грецька кухня", - "vi": "ẩm thực hy lạp", - "zh": "希臘飲食" - }, - "hungarian": { - "ar": "المطبخ الهنغاري", - "bg": "унгарска кухня", - "ca": "gastronomia d'hongria", - "cs": "maďarská kuchyně", - "de": "ungarische küche", - "en": "hungarian cuisine", - "es": "gastronomía de hungría", - "et": "ungari köök", - "fi": "unkarilainen keittiö", - "fr": "cuisine hongroise", - "he": "המטבח ההונגרי", - "hu": "magyar gasztronómia", - "id": "hidangan hungaria", - "is": "ungversk matarmenning", - "it": "cucina ungherese", - "ja": "ハンガリー料理", - "ko": "헝가리 요리", - "lv": "ungāru virtuve", - "nl": "hongaarse keuken", - "pl": "kuchnia węgierska", - "pt": "culinária da hungria", - "ro": "bucătăria maghiară", - "ru": "венгерская кухня", - "sr": "мађарска кухиња", - "sv": "ungerska köket", - "th": "อาหารฮังการี", - "tr": "macar mutfağı", - "uk": "угорська кухня", - "vi": "ẩm thực hungary", - "zh": "匈牙利飲食" - }, - "indian": { - "ar": "مطبخ هندي", - "bg": "индийска кухня", - "ca": "gastronomia de l'índia", - "cs": "indická kuchyně", - "da": "indisk madlavning", - "de": "indische küche", - "el": "κουζίνα της ινδίας", - "en": "indian cuisine", - "es": "gastronomía de la india", - "et": "india köök", - "fi": "intialainen keittiö", - "fr": "cuisine indienne", - "he": "המטבח ההודי", - "hi": "भारतीय खाना", - "hu": "indiai konyhaművészet", - "id": "masakan india", - "it": "cucina indiana", - "ja": "インド料理", - "ko": "인도 요리", - "lt": "indiška virtuvė", - "lv": "indiešu virtuve", - "nb": "indisk mat", - "nl": "indiase keuken", - "pl": "kuchnia indyjska", - "pt": "culinária da índia", - "ro": "bucătăria indiană", - "ru": "индийская кухня", - "sl": "indijska kuhinja", - "sr": "индијска кухиња", - "sv": "indiska köket", - "th": "อาหารอินเดีย", - "tr": "hint mutfağı", - "uk": "індійська кухня", - "vi": "ẩm thực ấn độ", - "zh": "印度菜" - }, - "iranian": { - "ar": "مطبخ إيراني", - "bg": "иранска кухня", - "ca": "gastronomia de l'iran", - "cs": "íránská kuchyně", - "de": "persische küche", - "en": "iranian cuisine", - "es": "gastronomía de irán", - "fi": "iranilainen keittiö", - "fr": "cuisine iranienne", - "he": "המטבח הפרסי", - "id": "masakan iran", - "it": "cucina iraniana", - "ja": "イラン料理", - "ko": "이란 요리", - "lv": "irānas virtuve", - "nl": "perzische keuken", - "pl": "kuchnia perska", - "pt": "culinária do irã", - "ro": "bucătăria iraniană", - "ru": "иранская кухня", - "sl": "iranska kuhinja", - "sv": "iranska köket", - "th": "อาหารอิหร่าน", - "tr": "i̇ran mutfağı", - "uk": "іранська кухня", - "vi": "ẩm thực iran", - "zh": "伊朗饮食" - }, - "italian": { - "ar": "مطبخ إيطالي", - "bg": "италианска кухня", - "ca": "gastronomia d'itàlia", - "cs": "italská kuchyně", - "da": "italienske køkken", - "de": "italienische küche", - "el": "ιταλική κουζίνα", - "en": "italian cuisine", - "es": "gastronomía de italia", - "et": "itaalia köök", - "fi": "italialainen keittiö", - "fr": "cuisine italienne", - "he": "המטבח האיטלקי", - "hr": "talijanska kuhinja", - "hu": "olasz konyhaművészet", - "id": "masakan italia", - "it": "cucina italiana", - "ja": "イタリア料理", - "ko": "이탈리아 요리", - "lt": "itališka virtuvė", - "lv": "itāliešu virtuve", - "nb": "italiensk mat", - "nl": "italiaanse keuken", - "pl": "kuchnia włoska", - "pt": "culinária da itália", - "ro": "bucătăria italiană", - "ru": "итальянская кухня", - "sk": "talianska kuchyňa", - "sl": "italijanska kuhinja", - "sr": "италијанска кухиња", - "sv": "italienska köket", - "th": "อาหารอิตาลี", - "tr": "i̇talyan mutfağı", - "uk": "італійська кухня", - "vi": "ẩm thực ý", - "zh": "義大利菜", - "zh-cn": "意大利菜", - "zh-hk": "意大利菜" - }, - "japanese": { - "ar": "مطبخ ياباني", - "bg": "японска кухня", - "ca": "gastronomia del japó", - "cs": "japonská kuchyně", - "da": "japanske køkken", - "de": "japanische küche", - "el": "ιαπωνική κουζίνα", - "en": "japanese cuisine", - "es": "gastronomía de japón", - "et": "jaapani köök", - "fi": "japanilainen keittiö", - "fr": "cuisine japonaise", - "he": "המטבח היפני", - "hu": "japán gasztronómia", - "id": "masakan jepang", - "it": "cucina giapponese", - "ja": "日本料理", - "ko": "일본 요리", - "lt": "japoniška virtuvė", - "lv": "japāņu virtuve", - "nb": "mattradisjoner i japan", - "nl": "japanse keuken", - "pl": "kuchnia japońska", - "pt": "culinária do japão", - "ro": "bucătărie japoneză", - "ru": "японская кухня", - "sk": "japonská kuchyňa", - "sr": "japanska kuhinja", - "sv": "japanska köket", - "th": "อาหารญี่ปุ่น", - "tr": "japon mutfağı", - "uk": "японська кухня", - "vi": "ẩm thực nhật bản", - "zh": "日本料理" - }, - "jewish": { - "ar": "مطبخ يهودي", - "ca": "gastronomia jueva", - "cs": "židovská kuchyně", - "da": "jødisk mad", - "de": "jüdische küche", - "en": "jewish cuisine", - "es": "gastronomía judía", - "fi": "juutalainen keittiö", - "fr": "cuisine juive", - "he": "המטבח היהודי", - "id": "hidangan yahudi", - "it": "cucina ebraica", - "ja": "ユダヤ料理", - "ko": "유대 요리", - "lt": "žydų virtuvė", - "nl": "joodse keuken", - "pl": "kuchnia żydowska", - "pt": "culinária judaica", - "ru": "еврейская кухня", - "sk": "židovská kuchyňa", - "sr": "јеврејска кухиња", - "sv": "judiska köket", - "tr": "yahudi mutfağı", - "uk": "єврейська кухня", - "vi": "ẩm thực do thái", - "zh": "猶太人飲食" - }, - "korean": { - "ar": "مطبخ كوري", - "bg": "корейска кухня", - "ca": "gastronomia de corea", - "cs": "korejská kuchyně", - "de": "koreanische küche", - "en": "korean cuisine", - "es": "gastronomía de corea", - "fi": "korealainen keittiö", - "fr": "cuisine coréenne", - "he": "המטבח הקוריאני", - "hu": "koreai gasztronómia", - "id": "masakan korea", - "it": "cucina coreana", - "ja": "朝鮮料理", - "ko": "한국 요리", - "lt": "korėjietiška virtuvė", - "nb": "det koreanske kjøkken", - "nl": "koreaanse keuken", - "pl": "kuchnia koreańska", - "pt": "cozinha coreana", - "ro": "bucătăria coreeană", - "ru": "корейская кухня", - "sr": "корејска кухиња", - "sv": "koreanska köket", - "th": "อาหารเกาหลี", - "tr": "kore mutfağı", - "uk": "корейська кухня", - "vi": "ẩm thực triều tiên", - "zh": "韓國料理" - }, - "kyo_ryouri": { - "en": "obanzai", - "ja": "おばんざい" - }, - "lebanese": { - "ar": "مطبخ لبناني", - "ca": "cuina libanesa", - "cs": "libanonská kuchyně", - "de": "libanesische küche", - "en": "lebanese cuisine", - "es": "gastronomía del líbano", - "fr": "cuisine libanaise", - "he": "המטבח הלבנוני", - "id": "masakan lebanon", - "it": "cucina libanese", - "ja": "レバノン料理", - "ko": "레바논 요리", - "nl": "libanese keuken", - "pl": "kuchnia libańska", - "pt": "culinária do líbano", - "ro": "masia", - "ru": "ливанская кухня", - "sv": "libanesiska köket", - "tr": "lübnan mutfağı", - "uk": "ліванська кухня", - "vi": "ẩm thực liban", - "zh": "黎巴嫩飲食文化" - }, - "mediterranean": { - "ar": "مطبخ متوسطي", - "bg": "средиземноморска кухня", - "ca": "gastronomia mediterrània", - "cs": "středomořská kuchyně", - "da": "middelhavskøkkenet", - "de": "mittelmeerküche", - "en": "mediterranean cuisine", - "es": "gastronomía mediterránea", - "fr": "cuisine méditerranéenne", - "he": "המטבח הים-תיכוני", - "hr": "sredozemna kuhinja", - "id": "masakan mediterania", - "it": "cucina mediterranea", - "ja": "地中海料理", - "ko": "지중해 요리", - "lt": "viduržemio jūros virtuvė", - "lv": "vidusjūras virtuve", - "nl": "mediterrane keuken", - "pl": "kuchnia śródziemnomorska", - "pt": "culinária do mediterrâneo", - "ro": "bucătăria mediteraneană", - "ru": "средиземноморская кухня", - "sl": "sredozemska kuhinja", - "sr": "медитеранска кухиња", - "sv": "medelhavsköket", - "tr": "akdeniz mutfağı", - "uk": "середземноморська кухня", - "vi": "ẩm thực địa trung hải", - "zh": "地中海飲食" - }, - "mexican": { - "ar": "مطبخ مكسيكي", - "bg": "мексиканска кухня", - "ca": "gastronomia de mèxic", - "cs": "mexická kuchyně", - "da": "mexicansk mad", - "de": "mexikanische küche", - "el": "μεξικάνικη κουζίνα", - "en": "mexican cuisine", - "es": "gastronomía de méxico", - "fi": "meksikolainen keittiö", - "fr": "cuisine mexicaine", - "he": "המטבח המקסיקני", - "hi": "मेक्सिकन व्यंजन", - "hr": "meksička kuhinja", - "id": "masakan meksiko", - "it": "cucina messicana", - "ja": "メキシコ料理", - "ko": "멕시코 요리", - "lt": "meksikietiška virtuvė", - "lv": "meksikāņu virtuve", - "nb": "meksikansk mat", - "nl": "mexicaanse keuken", - "pl": "kuchnia meksykańska", - "pt": "culinária do méxico", - "ru": "мексиканская кухня", - "sr": "мексичка кухиња", - "sv": "mexikanska köket", - "th": "อาหารเม็กซิโก", - "tr": "meksika mutfağı", - "uk": "мексиканська кухня", - "vi": "ẩm thực mexico", - "zh": "墨西哥菜" - }, - "mineira": { - "ca": "gastronomia de minas gerais", - "en": "cuisine of minas gerais", - "es": "gastronomía de minas gerais", - "pt": "culinária de minas gerais" - }, - "new_mexican": { - "en": "new mexican cuisine", - "ja": "ニューメキシコ料理", - "tr": "new mexico mutfağı", - "zh": "新墨西哥飲食" - }, - "okinawa_ryori": { - "ca": "gastronomia d'okinawa", - "en": "okinawan cuisine", - "es": "gastronomía de okinawa", - "fr": "cuisine d'okinawa", - "he": "המטבח האוקינאווי", - "id": "masakan okinawa", - "it": "cucina di okinawa", - "ja": "沖縄料理", - "ko": "오키나와 요리", - "pt": "culinária de okinawa", - "ru": "окинавская кухня", - "th": "อาหารโอกินาวะ", - "tr": "okinawa mutfağı", - "uk": "окінавська кухня", - "vi": "ẩm thực okinawa", - "zh": "沖繩料理" - }, - "pakistani": { - "ar": "مطبخ باكستاني", - "bg": "пакистанска кухня", - "cs": "pákistánská kuchyně", - "de": "pakistanische küche", - "en": "pakistani cuisine", - "es": "gastronomía de pakistán", - "fi": "pakistanilainen keittiö", - "fr": "cuisine pakistanaise", - "he": "המטבח הפקיסטני", - "hi": "पाकिस्तानी खाना", - "id": "hidangan pakistan", - "it": "cucina pakistana", - "ja": "パキスタン料理", - "ko": "파키스탄 요리", - "nl": "pakistaanse keuken", - "pt": "culinária do paquistão", - "ru": "пакистанская кухня", - "sv": "pakistanska köket", - "tr": "pakistan mutfağı", - "uk": "пакистанська кухня", - "vi": "ẩm thực pakistan", - "zh": "巴基斯坦菜" - }, - "panini": { - "ar": "بانيني (شطيرة)", - "da": "panino", - "de": "panino", - "en": "panini", - "it": "panino imbottito", - "ja": "パニーノ", - "ko": "파니니", - "pl": "panino", - "ru": "панини", - "sv": "panino", - "th": "ปานีนี", - "uk": "паніно", - "zh": "帕尼諾" - }, - "peruvian": { - "ar": "مطبخ بيروفي", - "ca": "gastronomia del perú", - "cs": "peruánská kuchyně", - "de": "peruanische küche", - "en": "peruvian cuisine", - "es": "gastronomía del perú", - "fi": "perulainen keittiö", - "fr": "cuisine péruvienne", - "he": "המטבח הפרואני", - "it": "cucina peruviana", - "ja": "ペルー料理", - "ko": "페루 요리", - "lv": "peruviešu virtuve", - "nl": "peruviaanse keuken", - "pl": "kuchnia peruwiańska", - "pt": "culinária do peru", - "ru": "перуанская кухня", - "sv": "peruanska köket", - "tr": "peru mutfağı", - "uk": "перуанська кухня", - "vi": "ẩm thực peru" - }, - "pizza": { - "ar": "مبتز", - "cs": "pizzerie", - "en": "pizzeria", - "es": "pizzería", - "he": "פיצריה", - "hu": "pizzéria", - "ja": "ピッツェリア", - "ko": "피체리아", - "pt": "pizzaria", - "ro": "pizzerie", - "ru": "пиццерия", - "sr": "пицерија", - "uk": "піцерія", - "zh": "披薩店" - }, - "polish": { - "ar": "مطبخ بولندي", - "bg": "полска кухня", - "ca": "gastronomia de polònia", - "cs": "polská kuchyně", - "de": "polnische küche", - "el": "πολωνική κουζίνα", - "en": "polish cuisine", - "es": "gastronomía de polonia", - "fi": "puolalainen keittiö", - "fr": "cuisine polonaise", - "he": "המטבח הפולני", - "hu": "lengyel konyha", - "id": "masakan polandia", - "is": "pólsk matargerð", - "it": "cucina polacca", - "ja": "ポーランド料理", - "ko": "폴란드 요리", - "lt": "lenkijos virtuvė", - "lv": "poļu virtuve", - "nb": "polsk kjøkken", - "nl": "poolse keuken", - "pl": "kuchnia polska", - "pt": "culinária da polónia", - "pt-br": "culinária da polônia", - "ro": "bucătăria poloneză", - "ru": "польская кухня", - "sl": "poljska kuhinja", - "sr": "пољска кухиња", - "sv": "polska köket", - "tr": "polonya mutfağı", - "uk": "польська кухня", - "vi": "ẩm thực ba lan", - "zh": "波蘭飲食" - }, - "portuguese": { - "ar": "مطبخ برتغالي", - "ca": "gastronomia de portugal", - "cs": "portugalská kuchyně", - "de": "portugiesische küche", - "en": "portuguese cuisine", - "es": "gastronomía de portugal", - "fi": "portugalilainen keittiö", - "fr": "cuisine portugaise", - "he": "המטבח הפורטוגזי", - "id": "masakan portugis", - "it": "cucina portoghese", - "ja": "ポルトガル料理", - "ko": "포르투갈 요리", - "lt": "portugališka virtuvė", - "nl": "portugese keuken", - "pl": "kuchnia portugalska", - "pt": "gastronomia de portugal", - "ro": "bucătăria portugheză", - "ru": "португальская кухня", - "sv": "portugisiska köket", - "tr": "portekiz mutfağı", - "uk": "португальська кухня", - "vi": "ẩm thực bồ đào nha", - "zh": "葡萄牙飲食" - }, - "regional": { - "ar": "مطبخ جهوي", - "ca": "cuina regional", - "cs": "regionální kuchyně", - "da": "egnsret", - "de": "regionale küche", - "en": "regional cuisine", - "es": "cocina regional", - "et": "rahvusköök", - "fi": "alueen keittiö", - "fr": "cuisine locale", - "he": "מטבח איזורי", - "it": "cucina regionale", - "ja": "郷土料理", - "ko": "향토 음식", - "lv": "vietējā virtuve", - "nl": "regionale keuken", - "pl": "kuchnia regionalna", - "pt": "culinária regional", - "ru": "региональная кухня", - "sl": "regionalna kuhinja", - "sr": "локална кухиња", - "sv": "landskapsrätt", - "tr": "bölgesel mutfak", - "uk": "місцева кухня", - "zh": "乡土料理" - }, - "rhenish": { - "de": "rheinische küche", - "en": "rhenish cuisine", - "ru": "рейнская кухня" - }, - "russian": { - "ar": "مطبخ روسي", - "bg": "руска кухня", - "ca": "gastronomia de rússia", - "cs": "ruská kuchyně", - "da": "det russiske køkken", - "de": "russische küche", - "el": "ρωσική κουζίνα", - "en": "russian cuisine", - "es": "gastronomía de rusia", - "fi": "venäläinen keittiö", - "fr": "cuisine russe", - "he": "המטבח הרוסי", - "hr": "ruska kuhinja", - "hu": "orosz konyha", - "id": "masakan rusia", - "is": "rússnesk matargerð", - "it": "cucina russa", - "ja": "ロシア料理", - "ko": "러시아 요리", - "lt": "rusiška virtuvė", - "lv": "krievu virtuve", - "nb": "russisk mat", - "nl": "russische keuken", - "pl": "kuchnia rosyjska", - "pt": "culinária da rússia", - "ro": "bucătăria rusească", - "ru": "русская кухня", - "sr": "руска кухиња", - "sv": "ryska köket", - "tr": "rus mutfağı", - "uk": "російська кухня", - "vi": "ẩm thực nga", - "zh": "俄羅斯飲食" - }, - "sandwich": { - "ar": "شطيرة", - "bg": "сандвич", - "ca": "sandvitx", - "cs": "sendvič", - "da": "smørrebrødsrestaurant", - "de": "sandwich-laden", - "de-ch": "sandwich", - "el": "σάντουιτς", - "en": "sandwich shop", - "en-ca": "sandwich", - "en-gb": "sandwich", - "es": "bocadillo", - "et": "sändvitš", - "fi": "voileipäravintola", - "fr": "sandwich", - "he": "כריך", - "hi": "सैंडविच", - "hr": "sendvič", - "hu": "szendvics", - "id": "roti lapis", - "is": "samloka", - "it": "paninoteca", - "ja": "サンドイッチ", - "ko": "샌드위치", - "lt": "sumuštinis", - "lv": "sendvičs", - "nb": "smørrebrødsrestaurant", - "nl": "sandwich", - "pl": "kanapka", - "pt": "sanduíche", - "ro": "sandviș", - "ru": "сэндвич", - "sk": "sendvič", - "sl": "sendvič", - "sr": "сендвич", - "sv": "sandwich", - "th": "แซนด์วิช", - "tr": "sandviç", - "uk": "сандвіч", - "vi": "bánh mì kẹp", - "zh": "三明治", - "zh-hk": "三文治" - }, - "seafood": { - "ar": "مأكولات بحرية", - "ca": "producte del mar", - "cs": "mořské plody", - "da": "fisk og skaldyr", - "de": "meeresfrüchte", - "el": "θαλασσινά", - "en": "seafood", - "es": "producto del mar", - "et": "mereannid", - "fr": "produit de la mer", - "he": "מאכלי ים", - "hr": "morski plodovi", - "hu": "tenger gyümölcsei", - "id": "makanan laut", - "is": "sjávarfang", - "it": "prodotti ittici", - "ja": "海産物", - "ko": "해산물", - "lv": "jūras veltes", - "nb": "sjømat", - "nl": "voedsel uit zee", - "pl": "owoce morza", - "pt": "fruto do mar", - "ro": "fructe de mare", - "ru": "морепродукты", - "sk": "morské plody", - "sr": "морски плодови", - "sv": "mat från havet", - "th": "อาหารทะเล", - "tr": "su ürünleri", - "uk": "морепродукти", - "vi": "hải sản", - "zh": "海鮮", - "zh-cn": "海鲜" - }, - "spanish": { - "ar": "مطبخ إسباني", - "bg": "испанска кухня", - "ca": "gastronomia d'espanya", - "cs": "španělská kuchyně", - "da": "spanske køkken", - "de": "spanische küche", - "el": "ισπανική κουζίνα", - "en": "spanish cuisine", - "es": "gastronomía de españa", - "et": "hispaania köök", - "fi": "espanjalainen keittiö", - "fr": "cuisine espagnole", - "he": "המטבח הספרדי", - "id": "masakan spanyol", - "it": "cucina spagnola", - "ja": "スペイン料理", - "ko": "스페인 요리", - "lv": "spāņu virtuve", - "nl": "spaanse keuken", - "pl": "kuchnia hiszpańska", - "pt": "culinária de espanha", - "ro": "bucătăria spaniolă", - "ru": "испанская кухня", - "sl": "španska kuhinja", - "sr": "шпанска кухиња", - "sv": "spanska köket", - "tr": "i̇spanyol mutfağı", - "uk": "іспанська кухня", - "vi": "ẩm thực tây ban nha", - "zh": "西班牙料理" - }, - "steak_house": { - "ar": "ستيك هاوس", - "de": "steakhaus", - "en": "steakhouse", - "fi": "pihviravintola", - "fr": "restaurant à viande", - "id": "rumah makan bistik", - "it": "bisteccheria", - "ja": "ステーキハウス", - "ko": "스테이크하우스", - "pt": "restaurante de carne", - "zh": "牛排館" - }, - "sushi": { - "ar": "سوشي", - "bg": "суши", - "cs": "suši", - "el": "σούσι", - "en": "sushi", - "et": "suši", - "he": "סושי", - "hi": "सूशी", - "hr": "suši", - "hu": "szusi", - "id": "susyi", - "ja": "寿司", - "ko": "스시", - "lt": "sušis", - "lv": "suši", - "ru": "суши", - "sk": "suši", - "sl": "suši", - "sr": "суши", - "th": "ซูชิ", - "tr": "suşi", - "uk": "суші", - "zh": "寿司", - "zh-hk": "壽司", - "zh-tw": "壽司" - }, - "thai": { - "ar": "مطبخ تايلاند", - "bg": "тайска кухня", - "ca": "gastronomia de tailàndia", - "cs": "thajská kuchyně", - "da": "det thailanske køkken", - "de": "thailändische küche", - "el": "ταϊλανδέζικη κουζίνα", - "en": "thai cuisine", - "es": "gastronomía de tailandia", - "fi": "thaikeittiö", - "fr": "cuisine thaïlandaise", - "he": "המטבח התאילנדי", - "id": "masakan thailand", - "it": "cucina thailandese", - "ja": "タイ料理", - "ko": "태국 요리", - "nl": "thaise keuken", - "pl": "kuchnia tajska", - "pt": "culinária da tailândia", - "ru": "тайская кухня", - "sv": "thailändska köket", - "th": "อาหารไทย", - "tr": "tayland mutfağı", - "uk": "тайська кухня", - "vi": "ẩm thực thái lan", - "zh": "泰國菜" - }, - "turkish": { - "ar": "مطبخ تركي", - "ca": "gastronomia de turquia", - "cs": "turecká kuchyně", - "de": "türkische küche", - "el": "τουρκική κουζίνα", - "en": "turkish cuisine", - "es": "gastronomía de turquía", - "fi": "turkkilainen keittiö", - "fr": "cuisine turque", - "he": "המטבח הטורקי", - "hu": "török konyha", - "id": "masakan turki", - "it": "cucina turca", - "ja": "トルコ料理", - "ko": "터키 요리", - "lt": "turkiška virtuvė", - "lv": "turcijas virtuve", - "nl": "turkse keuken", - "pl": "kuchnia turecka", - "pt": "culinária da turquia", - "ro": "bucătăria turcească", - "ru": "турецкая кухня", - "sl": "turška kuhinja", - "sr": "турска кухиња", - "sv": "turkiska köket", - "tr": "türk mutfağı", - "uk": "турецька кухня", - "vi": "ẩm thực thổ nhĩ kỳ", - "zh": "土耳其菜式" - }, - "vietnamese": { - "ar": "مطبخ فيتنامي", - "bg": "виетнамска кухня", - "ca": "gastronomia del vietnam", - "cs": "vietnamská kuchyně", - "da": "vietnamesisk madlavning", - "de": "vietnamesische küche", - "el": "βιετναμέζικη κουζίνα", - "en": "vietnamese cuisine", - "es": "gastronomía de vietnam", - "et": "vietnami köök", - "fi": "vietnamilainen keittiö", - "fr": "cuisine vietnamienne", - "he": "המטבח הווייטנאמי", - "id": "masakan vietnam", - "it": "cucina vietnamita", - "ja": "ベトナム料理", - "ko": "베트남 요리", - "lt": "vietnamietiška virtuvė", - "lv": "vjetnamiešu virtuve", - "nb": "vietnamesisk mat", - "nl": "vietnamese keuken", - "pl": "kuchnia wietnamska", - "pt": "culinária do vietnã", - "pt-br": "culinária vietnamita", - "ro": "bucătăria vietnameză", - "ru": "вьетнамская кухня", - "sv": "vietnamesiska köket", - "th": "อาหารเวียดนาม", - "tr": "vietnam mutfağı", - "uk": "в'єтнамська кухня", - "vi": "ẩm thực việt nam", - "zh": "越南菜" - }, - "westphalian": { - "ca": "gastronomia de westfàlia", - "de": "westfälische küche", - "en": "westphalian cuisine", - "es": "gastronomía de westfalia", - "ru": "вестфальская кухня" - } - }, - "cycle_highway": { - "yes": { - "da": "supercykelsti", - "de": "radschnellweg", - "en": "bicycle highway", - "es": "bicipista", - "fr": "cyclostrade", - "it": "superstrada ciclabile", - "ja": "高速自転車道", - "nb": "velostrada", - "nl": "fietssnelweg", - "pl": "velostrada", - "sv": "snabbt cykelstråk", - "vi": "đường cao tốc xe đạp", - "zh": "自行車高速公路" - } - }, - "cycle_network": { - "EuroVelo": { - "en": "eurovelo", - "ja": "ユーロヴェロ", - "zh": "欧洲自行车路径网" - }, - "US": { - "ar": "نظام طرق الدراجات في الولايات المتحدة", - "de": "national bicycle route network", - "en": "georgia state bicycle routes", - "is": "united states bicycle route system", - "vi": "quốc lộ xe đạp hoa kỳ" - } - }, - "cycleway": { - "asl": { - "ca": "zona avançada d'aturada", - "cs": "předsunutá stopčára", - "de": "aufgeweiteter radfahreraufstellbereich", - "en": "advanced stop box", - "fr": "sas vélo", - "it": "casa avanzata", - "ja": "二段停止線", - "nl": "opgeblazen fietsopstelstrook", - "pl": "śluza rowerowa", - "ru": "зона остановки велосипедистов", - "sv": "cykelbox" - }, - "lane": { - "bg": "велосипедна лента", - "ca": "via per a cicles", - "cs": "jízdní pruh pro cyklisty", - "de": "radfahrstreifen", - "en": "bike lane", - "es": "ciclovía", - "fi": "pyöräkaista", - "fr": "bande cyclable", - "hr": "traka za bicikliste", - "hu": "kerékpársáv", - "it": "corsia ciclabile", - "ja": "自転車専用レーン", - "nl": "fietsstrook", - "pl": "pas ruchu dla rowerów", - "ru": "велосипедная полоса", - "sk": "jazdný pruh pre cyklistov", - "sv": "cykelfält", - "uk": "велосмуга", - "zh": "自行车道", - "zh-hk": "單車徑", - "zh-tw": "腳踏車道" - }, - "opposite": { - "en": "bicycle contraflow lanes" - } - }, - "cycling": { - "pump_track": { - "cs": "pumptrack", - "de": "pumptrack", - "en": "pump track", - "fr": "pumptrack", - "he": "פאמפטרק", - "hu": "pumpapálya", - "it": "circuito parabolico", - "pl": "pumptrack", - "ru": "памп-трек", - "zh": "泵道" - } - }, - "deep_draft": { - "yes": { - "en": "shipping channel" - } - }, - "dennert_fir_tree": { - "yes": { - "de": "dennert-tanne", - "en": "dennert fir tree" - } - }, - "denomination": { - "adventist": { - "ar": "سبتيون", - "bg": "църква на адвентистите от седмия ден", - "ca": "església adventista del setè dia", - "cs": "adventisté sedmého dne", - "da": "syvende dags adventistkirken", - "de": "siebenten-tags-adventisten", - "el": "εκκλησία αντβεντιστών της εβδόμης ημέρας", - "en": "seventh-day adventist church", - "es": "iglesia adventista del séptimo día", - "et": "seitsmenda päeva adventistide kogudus", - "fi": "seitsemännen päivän adventismi", - "fr": "église adventiste du septième jour", - "he": "הכנסייה האדוונטיסטית של היום השביעי", - "hr": "adventisti sedmog dana", - "hu": "hetednapi adventista egyház", - "id": "gereja masehi advent hari ketujuh", - "is": "kirkja sjöunda dags aðventista", - "it": "chiesa cristiana avventista del settimo giorno", - "ja": "セブンスデー・アドベンチスト教会", - "ko": "제7일 안식일 예수 재림교회", - "lt": "septintosios dienos adventistai", - "lv": "septītās dienas adventisti", - "nb": "syvendedagsadventister", - "nl": "zevendedagsadventisten", - "pl": "kościół adwentystów dnia siódmego", - "pt": "igreja adventista do sétimo dia", - "ro": "biserica adventistă de ziua a șaptea", - "ru": "церковь адвентистов седьмого дня", - "sk": "adventisti siedmeho dňa", - "sl": "krščanska adventistična cerkev", - "sr": "хришћанска адвентистичка црква", - "sv": "sjundedagsadventisterna", - "th": "เซเวนต์เดย์แอดเวนทิสต์", - "tr": "yedinci gün adventist kilisesi", - "uk": "церква адвентистів сьомого дня", - "vi": "giáo hội cơ đốc phục lâm", - "zh": "基督復臨安息日會", - "zh-cn": "基督复临安息日会" - }, - "ahmadiyya": { - "ar": "أحمدية", - "ca": "ahmadia", - "cs": "ahmadíja", - "el": "αχμαντίγια", - "en": "ahmadiyya", - "es": "comunidad ahmadía", - "fr": "ahmadisme", - "he": "אחמדים", - "hi": "अहमदिया धर्म", - "hr": "ahmedije", - "hu": "ahmadijja", - "id": "ahmadiyyah", - "ja": "アフマディーヤ", - "ko": "아흐마드파", - "lv": "ahmadiji", - "pl": "ahmadijja", - "pt": "comunidade ahmadi", - "ru": "ахмадие", - "sk": "ahmadíja", - "sl": "ahmadija", - "tr": "ahmedîlik", - "uk": "ахмадія", - "zh": "阿赫迈底亚", - "zh-hk": "阿赫邁底亞", - "zh-tw": "阿赫邁底亞" - }, - "alevi": { - "ar": "العلوية", - "bg": "алевити", - "ca": "alevisme", - "cs": "alevité", - "da": "alevisme", - "de": "aleviten", - "el": "αλεβισμός", - "en": "alevism", - "en-gb": "alevi", - "es": "alevís", - "et": "aleviidid", - "fi": "aleviitit", - "fr": "alévisme", - "he": "אלווים", - "hr": "aleviti", - "hu": "aleviták", - "id": "alevi", - "it": "alevismo", - "ja": "アレヴィー派", - "ko": "알레비파", - "lt": "alevitai", - "nb": "alevisme", - "nl": "alevitisme", - "pl": "alewici", - "pt": "alevitas", - "ro": "aleviți", - "ru": "алевиты", - "sk": "aleviti", - "tr": "alevilik", - "uk": "алевіти", - "vi": "alevi", - "zh": "阿列维派" - }, - "alliance": { - "ar": "الزمالة العالمية للتحالف", - "en": "alliance world fellowship", - "es": "unión mundial de la alianza", - "fr": "union mondiale de l'alliance", - "he": "הברית הקתולית והמיסיונרית", - "id": "christian and missionary alliance", - "ja": "日本アライアンス教団", - "pl": "chrześcijański i misyjny sojusz", - "pt": "união mundial da aliança", - "th": "คณะซี. เอ็ม. เอ.", - "uk": "християнський та місіонерський альянс", - "vi": "hội truyền giáo phúc âm liên hiệp", - "zh": "基督教宣道會" - }, - "anglican": { - "ar": "الاتحاد الأنجليكاني", - "bg": "англиканско съобщество", - "ca": "comunió anglicana", - "cs": "anglikánské společenství", - "da": "den anglikanske kirke", - "de": "anglikanische gemeinschaft", - "el": "αγγλικανική κοινωνία", - "en": "anglican communion", - "es": "comunión anglicana", - "et": "anglikaani kirik", - "fi": "anglikaaninen kirkko", - "fr": "communion anglicane", - "he": "השיתוף האנגליקני", - "hi": "ऐंग्लिकन समुदाय", - "hr": "anglikanska zajednica", - "hu": "anglikán közösség", - "id": "komuni anglikan", - "it": "comunione anglicana", - "ja": "アングリカン・コミュニオン", - "ko": "성공회 연합", - "lt": "anglikonų bažnyčia", - "lv": "anglikāņu baznīca", - "nb": "den anglikanske kirke", - "nl": "anglicaanse gemeenschap", - "pl": "wspólnota anglikańska", - "pt": "comunhão anglicana", - "ro": "comuniunea anglicană", - "ru": "англиканское сообщество", - "sk": "anglikánsky zväz cirkví", - "sr": "англиканска заједница", - "sv": "anglikanska kyrkogemenskapen", - "th": "แองกลิคันคอมมิวเนียน", - "tr": "anglikanizm", - "uk": "англіканське співтовариство", - "vi": "anh giáo", - "zh": "普世聖公宗", - "zh-tw": "聖公會" - }, - "apostolic_faith": { - "en": "apostolic faith church", - "nb": "apostolic church", - "zh": "使徒信心會" - }, - "armenian_apostolic": { - "ar": "كنيسة الأرمن الأرثوذكس", - "bg": "арменска апостолическа църква", - "ca": "església apostòlica armènia", - "cs": "arménská apoštolská církev", - "da": "den armenske apostolske kirke", - "de": "armenische apostolische kirche", - "el": "αρμενική αποστολική εκκλησία", - "en": "armenian apostolic church", - "es": "iglesia apostólica armenia", - "et": "armeenia apostlik kirik", - "fi": "armenian apostolinen kirkko", - "fr": "église apostolique arménienne", - "he": "הכנסייה האפוסטולית הארמנית", - "hr": "armenska apostolska crkva", - "hu": "örmény apostoli ortodox egyház", - "id": "gereja apostolik armenia", - "it": "chiesa apostolica armena", - "ja": "アルメニア教会", - "ko": "아르메니아 사도교회", - "lt": "armėnų apaštališkoji bažnyčia", - "lv": "armēņu apustuliskā baznīca", - "nb": "den armenske apostoliske kirke", - "nl": "armeens-apostolische kerk", - "pl": "apostolski kościół ormiański", - "pt": "igreja apostólica armena", - "pt-br": "igreja apostólica armênia", - "ro": "biserica apostolică armeană", - "ru": "армянская апостольская церковь", - "sk": "arménska apoštolská cirkev", - "sl": "armenska apostolska cerkev", - "sr": "јерменска апостолска црква", - "sv": "armeniska apostoliska kyrkan", - "th": "คริสตจักรอัครทูตอาร์มีเนีย", - "tr": "ermeni apostolik kilisesi", - "uk": "вірменська апостольська церква", - "vi": "giáo hội tông truyền armenia", - "zh": "亚美尼亚使徒教会", - "zh-tw": "亞美尼亞使徒教會" - }, - "armenian_catholic": { - "ar": "كنيسة الأرمن الكاثوليك", - "bg": "арменска католическа църква", - "ca": "església catòlica armènia", - "cs": "arménská katolická církev", - "da": "den armensk-katolske kirke", - "de": "armenisch-katholische kirche", - "el": "αρμενική καθολική εκκλησία", - "en": "armenian catholic church", - "es": "iglesia católica armenia", - "fr": "église catholique arménienne", - "he": "הכנסייה הקתולית הארמנית", - "hr": "armenska katolička crkva", - "hu": "örmény katolikus egyház", - "id": "gereja katolik armenia", - "it": "chiesa armeno-cattolica", - "ja": "アルメニア・カトリック教会", - "lt": "armėnų katalikų bažnyčia", - "nb": "den armensk-katolske kirke", - "nl": "armeens-katholieke kerk", - "pl": "kościół katolicki obrządku ormiańskiego", - "pt": "igreja católica arménia", - "ro": "biserica armeano-catolică", - "ru": "армянская католическая церковь", - "sk": "arménska katolícka cirkev", - "sl": "armenska katoliška cerkev", - "sr": "јерменска католичка црква", - "sv": "armenisk-katolska kyrkan", - "tr": "ermeni katolik kilisesi", - "uk": "вірменська католицька церква", - "zh": "亞美尼亞禮天主教會" - }, - "asatru": { - "ar": "هيثانية", - "ca": "etenisme", - "cs": "germánské novopohanství", - "de": "germanisches neuheidentum", - "el": "γερμανικός νεοπαγανισμός", - "en": "heathenry", - "es": "neopaganismo germano", - "fi": "hetenismi", - "fr": "néo-paganisme germanique", - "he": "ניאו-פגאניזם גרמאני", - "id": "neopaganisme jermanik", - "it": "etenismo", - "ja": "ヒーザニズム", - "pl": "rodzimowierstwo germańskie", - "pt": "tribalismo heathen", - "pt-br": "neopaganismo germânico", - "ro": "neopăgânism germanic", - "ru": "германское неоязычество", - "sv": "asatro", - "tr": "cermenik neopaganizm", - "uk": "германське неоязичництво", - "zh": "日耳曼新異教運動", - "zh-cn": "日耳曼新异教运动" - }, - "assemblies_of_god": { - "ca": "assemblees de déu", - "de": "versammlungen gottes", - "el": "συνάξεις του θεού", - "en": "assemblies of god", - "es": "asambleas de dios", - "fr": "assemblées de dieu", - "he": "אסיפות האל", - "hu": "isten gyülekezetei", - "id": "gereja sidang-sidang jemaat allah", - "it": "assemblea mondiale delle assemblee di dio", - "ja": "アッセンブリーズ・オブ・ゴッド", - "ko": "하느님의 성회", - "pl": "zbory boże", - "pt": "associação mundial da assembleia de deus", - "ru": "ассамблеи бога", - "tr": "tanrı'nın toplulukları", - "uk": "асамблеї бога", - "vi": "hội chúng của ðức chúa trời", - "zh": "神召会", - "zh-hk": "神召會" - }, - "assyrian": { - "ar": "كنيسة المشرق الآشورية", - "bg": "асирийска източна църква", - "ca": "església assíria oriental", - "cs": "asyrská církev východu", - "da": "østens assyriske kirke", - "de": "assyrische kirche des ostens", - "el": "ασσυριακή αποστολική εκκλησία της ανατολής", - "en": "assyrian church of the east", - "es": "iglesia asiria del oriente", - "fi": "idän apostolinen kirkko", - "fr": "église apostolique assyrienne de l'orient", - "he": "הכנסייה האשורית", - "hr": "asirska crkva istoka", - "hu": "asszír keleti egyház", - "id": "gereja timur asiria", - "it": "chiesa assira d'oriente", - "ja": "アッシリア東方教会", - "ko": "아시리아 동방교회", - "nb": "østens kirke", - "nl": "assyrische kerk van het oosten", - "pl": "asyryjski kościół wschodu", - "pt": "igreja assíria do oriente", - "ru": "ассирийская церковь востока", - "sk": "asýrska cirkev východu", - "sl": "vzhodna asirska cerkev", - "sr": "асиријска црква истока", - "sv": "österns apostoliska och katolska assyriska kyrka", - "tr": "doğu asur kilisesi", - "uk": "ассирійська церква сходу", - "vi": "giáo hội phương đông assyria", - "zh": "東方亞述教會", - "zh-cn": "东方亚述教会" - }, - "baptist": { - "ar": "الكنيسة المعمدانية", - "bg": "баптизъм", - "ca": "església baptista", - "cs": "baptisté", - "da": "baptistkirken", - "de": "baptisten", - "el": "βαπτιστές", - "en": "baptists", - "es": "iglesias bautistas", - "et": "baptism", - "fi": "baptismi", - "fr": "baptisme", - "he": "בפטיזם", - "hi": "बैप्टिस्ट चर्च", - "hr": "baptisti", - "hu": "baptista egyház", - "id": "gereja baptis", - "it": "battismo", - "ja": "バプテスト教会", - "ko": "침례교", - "lt": "baptistai", - "lv": "baptisti", - "nb": "baptisme", - "nl": "baptisme", - "pl": "baptyzm", - "pt": "igreja batista", - "ro": "bisericile baptiste", - "ru": "баптизм", - "sk": "baptizmus", - "sr": "баптизам", - "sv": "baptism", - "th": "แบปทิสต์", - "tr": "baptistler", - "uk": "баптизм", - "vi": "báp-tít", - "zh": "浸信会", - "zh-hk": "浸信會", - "zh-tw": "浸信會" - }, - "bektashi": { - "ar": "بكتاشية", - "bg": "бекташи", - "ca": "bektaixisme", - "cs": "bektášíja", - "da": "bektashi", - "de": "bektaschi", - "el": "μπεκτασί ντερβίς", - "en": "bektashi order", - "es": "bektashi", - "fr": "bektachi", - "he": "בקטשיה", - "hr": "bektaši", - "hu": "bektásik", - "id": "bektashi", - "it": "bektashi", - "ja": "ベクタシュ教団", - "ko": "벡타시교", - "lt": "bektašizmas", - "nb": "bektasji", - "nl": "bektasji", - "pl": "bektaszijja", - "pt": "bektashis", - "ro": "ordinul bektași", - "ru": "бекташи", - "sk": "bektašija", - "sl": "bektaši", - "sr": "бекташијство", - "sv": "bektashi", - "tr": "bektaşilik", - "uk": "бекташи", - "zh": "拜克塔什教團" - }, - "catholic": { - "ar": "الكنيسة الرومانية الكاثوليكية", - "bg": "католическа църква", - "ca": "església catòlica", - "cs": "katolická církev", - "da": "romerskkatolske kirke", - "de": "römisch-katholische kirche", - "el": "ρωμαιοκαθολική εκκλησία", - "en": "catholic church", - "es": "iglesia católica", - "et": "katoliku kirik", - "fi": "katolinen kirkko", - "fr": "église catholique", - "he": "הכנסייה הקתולית", - "hi": "कैथोलिक गिरजाघर", - "hr": "katolička crkva", - "hu": "római katolikus egyház", - "id": "gereja katolik roma", - "is": "rómversk-kaþólska kirkjan", - "it": "chiesa cattolica", - "ja": "カトリック教会", - "ko": "로마 가톨릭교회", - "lt": "katalikų bažnyčia", - "lv": "romas katoļu baznīca", - "nb": "den romersk-katolske kirke", - "nl": "rooms-katholieke kerk", - "pl": "kościół katolicki", - "pt": "igreja católica", - "ro": "biserica catolică", - "ru": "католическая церковь", - "sk": "katolícka cirkev", - "sl": "rimskokatoliška cerkev", - "sr": "католичка црква", - "sv": "romersk-katolska kyrkan", - "th": "โรมันคาทอลิก", - "tr": "katolik kilisesi", - "uk": "католицька церква", - "vi": "giáo hội công giáo rôma", - "zh": "天主教會", - "zh-cn": "天主教会" - }, - "catholic_apostolic": { - "da": "katolsk-apostoliske menighed", - "de": "katholisch-apostolische gemeinden", - "el": "καθολική αποστολική εκκλησία", - "en": "catholic apostolic church", - "fi": "katolis-apostolinen kirkko", - "fr": "église catholique apostolique", - "hu": "katolikus apostoli egyház", - "it": "chiesa cattolica-apostolica", - "ja": "カトリック使徒教会", - "nb": "irvingianere", - "nl": "katholiek apostolische kerk", - "pl": "irwingianizm", - "ru": "ирвингиане", - "sv": "katolsk-apostoliska kyrkan", - "uk": "католицька апостольська церква", - "zh": "大公使徒教會" - }, - "catholic_mariavite": { - "de": "katholische kirche der mariaviten", - "el": "καθολική εκκλησία των μαριαβιτών", - "en": "catholic mariavite church", - "pl": "kościół katolicki mariawitów w rp", - "zh": "瑪麗亞維特天主教會" - }, - "celtic": { - "ar": "وثنية كلتية", - "ca": "politeisme celta", - "cs": "keltské náboženství", - "da": "keltisk religion", - "de": "keltische religion", - "el": "κέλτικος παγανισμός", - "en": "celtic polytheism", - "es": "politeismo celta", - "fi": "kelttiläinen uskonto", - "fr": "religion des celtes", - "hu": "kelta vallás", - "id": "politeisme kelt", - "it": "religione celtica", - "ja": "ケルト多神教", - "ko": "켈트 다신교", - "pl": "celtycki politeizm", - "pt": "politeísmo celta", - "ru": "кельтское язычество", - "sr": "drevna keltska religija", - "sv": "keltisk religion", - "uk": "кельтське язичництво", - "zh": "凱爾特人多神教", - "zh-cn": "凯尔特神" - }, - "chaldean_catholic": { - "ar": "الكنيسة الكلدانية الكاثوليكية", - "ca": "església catòlica caldea", - "cs": "chaldejská katolická církev", - "de": "chaldäisch-katholische kirche", - "en": "chaldean catholic church", - "es": "iglesia católica caldea", - "fi": "kaldealaiskatolinen kirkko", - "fr": "église catholique chaldéenne", - "he": "הכנסייה הכלדאית קתולית", - "hr": "kaldejska katolička crkva", - "hu": "káld katolikus egyház", - "id": "gereja katolik khaldea", - "it": "chiesa cattolica caldea", - "ja": "カルデア典礼カトリック教会", - "ko": "칼데아 가톨릭교회", - "nb": "den kaldeisk-katolske kirke", - "nl": "chaldeeuws-katholieke kerk", - "pl": "kościół chaldejski", - "pt": "igreja católica caldeia", - "ro": "biserica caldeeană catolică", - "ru": "халдейская католическая церковь", - "sk": "chaldejská katolícka cirkev", - "sl": "kaldejska katoliška cerkev", - "sr": "халдејска католичка црква", - "sv": "kaldeisk-katolska kyrkan", - "tr": "keldani katolik kilisesi", - "uk": "халдейська католицька церква", - "zh": "加色丁禮天主教會" - }, - "charismatic": { - "ar": "كاريزماتية", - "ca": "moviment carismàtic", - "cs": "charismatické hnutí", - "de": "charismatische bewegung", - "el": "χαρισματικό κίνημα", - "en": "charismatic movement", - "es": "movimiento carismático", - "fi": "karismaattinen liike", - "fr": "mouvement charismatique", - "hr": "karizmatski pokret", - "hu": "karizmatikus mozgalom", - "id": "gerakan karismatik", - "it": "movimento carismatico", - "ja": "カリスマ運動", - "ko": "은사주의", - "lt": "charizmatai", - "nb": "karismatisk kristendom", - "nl": "charismatische beweging", - "pl": "charyzmaty", - "pt": "movimento carismático", - "ro": "mișcarea carismatică", - "ru": "харизматическое движение", - "sk": "charizmatické hnutie", - "sl": "karizmatično gibanje", - "sv": "karismatisk kristendom", - "tr": "karizmatik hareket", - "uk": "харизматичний рух", - "zh": "靈恩派", - "zh-cn": "灵恩派" - }, - "christ_scientist": { - "en": "church of christ, scientist", - "es": "iglesia de cristo, científico", - "ja": "科学者キリスト教会", - "ru": "список церквей христа-учёного" - }, - "christian_community": { - "cs": "obec křesťanů", - "da": "kristensamfundet", - "de": "die christengemeinschaft", - "en": "the christian community", - "es": "la comunidad de cristianos", - "et": "kristlaste osadus", - "fi": "kristiyhteisö", - "fr": "la communauté des chrétiens", - "hu": "keresztény közösség", - "it": "comunità dei cristiani", - "ja": "キリスト者共同体", - "nb": "kristensamfunnet", - "nl": "de christengemeenschap", - "pl": "wspólnota chrześcijan", - "ro": "comunitatea creștinilor", - "sv": "kristensamfundet", - "zh": "基督教社区" - }, - "church_of_god_in_christ": { - "ca": "església de déu en crist", - "en": "church of god in christ", - "es": "iglesia de dios en cristo", - "ja": "キリストにおける神の教会", - "pl": "kościół boży w chrystusie", - "pt": "igreja de deus em cristo", - "ru": "церковь бога во христе" - }, - "church_of_scotland": { - "ca": "església d'escòcia", - "cs": "skotská církev", - "da": "den skotske kirke", - "en": "church of scotland", - "es": "iglesia de escocia", - "fi": "skotlannin kirkko", - "fr": "église d'écosse", - "he": "הכנסייה של סקוטלנד", - "hi": "चर्च ऑफ़ स्कॉटलैंड", - "id": "gereja skotlandia", - "it": "chiesa di scozia", - "ja": "スコットランド国教会", - "ko": "스코틀랜드 교회", - "lv": "skotijas baznīca", - "nb": "den skotske kirke", - "nl": "kerk van schotland", - "pl": "kościół szkocji", - "pt": "igreja da escócia", - "ro": "biserica scoției", - "ru": "церковь шотландии", - "sk": "škótska cirkev", - "sr": "црква шкотске", - "sv": "skotska kyrkan", - "uk": "церква шотландії", - "zh": "蘇格蘭教會", - "zh-cn": "苏格兰教会" - }, - "church_of_sweden": { - "ar": "كنيسة السويد", - "ca": "església de suècia", - "cs": "švédská církev", - "da": "svenska kyrkan", - "de": "schwedische kirche", - "el": "εκκλησία της σουηδίας", - "en": "church of sweden", - "es": "iglesia de suecia", - "et": "rootsi kirik", - "fi": "ruotsin kirkko", - "fr": "église de suède", - "he": "הכנסייה השוודית", - "hr": "švedska crkva", - "hu": "svéd egyház", - "id": "gereja swedia", - "is": "sænska kirkjan", - "it": "chiesa di svezia", - "ja": "スウェーデン国教会", - "ko": "스웨덴 교회", - "lt": "švedijos bažnyčia", - "nb": "svenska kyrkan", - "nl": "zweedse kerk", - "pl": "kościół szwecji", - "pt": "igreja da suécia", - "ro": "biserica suedeză", - "ru": "церковь швеции", - "sk": "švédska cirkev", - "sr": "црква шведске", - "sv": "svenska kyrkan", - "th": "คริสตจักรแห่งสวีเดน", - "tr": "i̇sveç kilisesi", - "uk": "церква швеції", - "vi": "giáo hội thụy điển", - "zh": "瑞典教會" - }, - "churches_of_christ": { - "ca": "esglésies de crist", - "de": "gemeinden christi", - "en": "churches of christ", - "es": "iglesias de cristo", - "fr": "églises du christ", - "he": "כנסיות ישוע", - "hu": "krisztus egyházai", - "it": "chiesa di cristo", - "ja": "チャーチ・オブ・クライスト", - "ko": "그리스도의 교회 (무악기)", - "pl": "kościoły chrystusowe", - "pt": "igrejas de cristo", - "ru": "церкви христа", - "sr": "христова црква", - "sv": "kristi församlingar", - "uk": "церкви христа", - "zh": "基督的教會" - }, - "conservative": { - "ar": "يهودية محافظة", - "ca": "judaisme conservador", - "cs": "konzervativní judaismus", - "da": "konservativ jødedom", - "de": "konservatives judentum", - "el": "συντηρητικός ιουδαϊσμός", - "en": "conservative judaism", - "es": "judaísmo conservador", - "fi": "konservatiivinen juutalaisuus", - "fr": "judaïsme massorti", - "he": "יהדות קונסרבטיבית", - "hr": "konzervativni judaizam", - "id": "yudaisme konservatif", - "it": "ebraismo conservatore", - "ja": "保守派", - "lt": "konservatyvusis judaizmas", - "nb": "konservativ jødedom", - "nl": "conservatief jodendom", - "pl": "judaizm konserwatywny", - "pt": "judaísmo conservador", - "ru": "консервативный иудаизм", - "sl": "konzervativni judje", - "sr": "konzervativni judaizam", - "sv": "konservativ judendom", - "tr": "tutucu yahudilik", - "uk": "консервативний юдаїзм", - "zh": "猶太教保守派" - }, - "coptic_catholic": { - "ar": "الكنيسة القبطية الكاثوليكية", - "bg": "коптска католическа църква", - "ca": "església catòlica copta", - "cs": "koptská katolická církev", - "da": "den koptiske katolske kirke", - "de": "koptisch-katholische kirche", - "en": "coptic catholic church", - "es": "iglesia católica copta", - "fi": "koptilaiskatolinen kirkko", - "fr": "église catholique copte", - "he": "הכנסייה הקתולית הקופטית", - "hr": "koptska katolička crkva", - "hu": "kopt katolikus egyház", - "id": "gereja katolik koptik", - "it": "chiesa cattolica copta", - "ja": "カトリック・コプト教会", - "ko": "콥트 가톨릭교회", - "nb": "den koptiske katolske kirke", - "nl": "koptisch-katholieke kerk", - "pl": "kościół katolicki obrządku koptyjskiego", - "pt": "igreja católica copta", - "ru": "коптская католическая церковь", - "sk": "koptská katolícka cirkev", - "sr": "коптска католичка црква", - "sv": "koptisk-katolska kyrkan", - "uk": "коптська католицька церква", - "vi": "giáo hội công giáo coptic", - "zh": "科普特禮天主教會" - }, - "coptic_orthodox": { - "ar": "الكنيسة القبطية الأرثوذكسية", - "bg": "коптска православна църква", - "ca": "església ortodoxa copta", - "cs": "koptská pravoslavná církev", - "da": "koptisk ortodokse kirke i alexandria", - "de": "koptische kirche", - "el": "κοπτική ορθόδοξη εκκλησία αλεξανδρείας", - "en": "coptic orthodox church", - "es": "iglesia ortodoxa copta", - "fi": "aleksandrian koptilais-ortodoksinen kirkko", - "fr": "église copte orthodoxe", - "he": "נצרות קופטית", - "hi": "कॉप्टिक ईसाई", - "hr": "koptska crkva", - "hu": "kopt ortodox egyház", - "id": "gereja ortodoks koptik alexandria", - "it": "chiesa ortodossa copta", - "ja": "コプト正教会", - "ko": "콥트 교회", - "lt": "koptų stačiatikių bažnyčia", - "lv": "koptu pareizticīgā baznīca", - "nb": "koptisk kristendom", - "nl": "koptisch-orthodoxe kerk", - "pl": "koptyjski kościół ortodoksyjny", - "pt": "igreja ortodoxa copta", - "ro": "biserica ortodoxă coptă", - "ru": "коптская православная церковь", - "sk": "koptská ortodoxná cirkev", - "sl": "koptska pravoslavna cerkev", - "sr": "коптска православна црква", - "sv": "koptisk-ortodoxa kyrkan", - "th": "คอปติกออร์ทอดอกซ์", - "tr": "i̇skenderiye kıpti kilisesi", - "uk": "коптська православна церква", - "vi": "giáo hội chính thống giáo copt", - "zh": "亞歷山大科普特正教會", - "zh-cn": "亚历山大科普特正教会" - }, - "czechoslovak_hussite": { - "ar": "الكنيسة الهوسية التشيكوسلوفاكية", - "cs": "církev československá husitská", - "de": "tschechoslowakische hussitische kirche", - "en": "czechoslovak hussite church", - "es": "iglesia husita checoslovaca", - "fr": "église hussite tchécoslovaque", - "hu": "csehszlovák huszita egyház", - "it": "chiesa hussita cecoslovacca", - "ja": "チェコスロバキア・フス派教会", - "pl": "czechosłowacki kościół husycki", - "ru": "чехословацкая гуситская церковь", - "sk": "cirkev československá husitská", - "uk": "гуситська чехословацька церква", - "zh": "捷克斯洛伐克胡思教會" - }, - "digambara": { - "ar": "ديجمبارا", - "el": "ντιγκάμπαρα", - "en": "digambara", - "he": "דיגמברה", - "hi": "दिगम्बर", - "it": "digambar", - "ja": "ディガンバラ派", - "lt": "digambarai", - "nl": "digambar", - "pl": "digambarowie", - "pt": "digambar", - "ru": "дигамбары", - "th": "ทิคัมพร", - "uk": "диґамбари", - "zh": "天衣派" - }, - "disciples_of_christ": { - "ca": "església cristiana (deixebles de crist)", - "da": "kristen kirke (kristi disciple)", - "de": "christliche kirche (jünger christi)", - "el": "χριστιανική εκκλησία (μαθητές του χριστού)", - "en": "christian church (disciples of christ)", - "es": "la iglesia cristiana (discípulos de cristo)", - "fi": "kristillinen kirkko (kristuksen opetuslapset)", - "fr": "l'église chrétienne (disciples du christ)", - "ja": "キリスト教会(キリストの弟子)", - "ko": "크리스천 교회(제자회)", - "nb": "kristne kirke (kristi disipler)", - "pt": "igreja cristã (discípulos de cristo)", - "ro": "biserica creștină (ucenicii lui hristos)", - "ru": "христианская церковь (ученики христа)", - "sv": "kristna kyrkan (kristi lärjungar)", - "uk": "християнська церква (учні христа)" - }, - "episcopal": { - "ca": "església episcopal", - "de": "episkopalkirche", - "en": "episcopal church", - "es": "iglesia episcopaliana", - "fr": "église épiscopalienne", - "he": "הכנסייה האפיסקופלית", - "hu": "episzkopális egyház", - "id": "gereja episkopal (disambiguasi)", - "it": "chiesa episcopale", - "ja": "監督教会", - "nl": "episcopaalse kerk", - "pl": "kościół episkopalny", - "pt": "igreja episcopal", - "ru": "епископальная церковь", - "sl": "škofovska cerkev", - "sv": "episkopalkyrkan", - "uk": "єпископальна церква", - "vi": "giáo hội giám nhiệm" - }, - "eritrean_catholic": { - "ar": "الكنيسة الإريترية الكاثوليكية", - "ca": "església catòlica eritrea", - "cs": "eritrejská katolická církev", - "de": "eritreisch-katholische kirche", - "en": "eritrean catholic church", - "es": "iglesia católica eritrea", - "fr": "église catholique érythréenne", - "id": "gereja katolik eritrea", - "it": "chiesa cattolica eritrea", - "ja": "エリトリア・カトリック教会", - "nl": "eritrees-katholieke kerk", - "pl": "erytrejski kościół katolicki", - "pt": "igreja católica eritreia", - "ru": "эритрейская католическая церковь", - "sk": "eritrejská katolícka cirkev", - "sr": "еритрејска католичка црква", - "uk": "католицька церква в еритреї", - "zh": "厄立特里亞禮天主教會" - }, - "eritrean_orthodox": { - "ar": "كنيسة التوحيد الأرثوذكسية الإريترية", - "bg": "еритрейска православна църква", - "ca": "església ortodoxa eritrea", - "cs": "eritrejská pravoslavná církev", - "de": "eritreisch-orthodoxe tewahedo-kirche", - "el": "ερυθραϊκή ορθόδοξη εκκλησία", - "en": "eritrean orthodox tewahedo church", - "es": "iglesia ortodoxa eritrea", - "fi": "eritrean ortodoksinen kirkko", - "fr": "église érythréenne orthodoxe", - "he": "הכנסייה האריתראית", - "hr": "eritrejska pravoslavna tevahedo crkva", - "hu": "eritreai ortodox egyház", - "id": "gereja tewahedo ortodoks eritrea", - "it": "chiesa ortodossa eritrea", - "ja": "エリトリア正教会", - "ko": "에리트레아 터와흐도 정교회", - "nb": "den eritreisk-ortodokse kirke", - "nl": "eritrees-orthodoxe kerk", - "pl": "erytrejski kościół ortodoksyjny", - "pt": "igreja ortodoxa eritreia", - "ru": "эритрейская православная церковь", - "sk": "eritrejská ortodoxná cirkev", - "sr": "еритрејска православна црква", - "sv": "eritreansk-ortodoxa kyrkan", - "uk": "еритрейська православна церква тевахедо", - "zh": "厄立特里亚正教会", - "zh-cn": "厄立特里亚正统台瓦西多教会" - }, - "ethiopian_catholic": { - "ar": "الكنيسة الأثيوبية الكاثوليكية", - "ca": "església catòlica etíop", - "cs": "etiopská katolická církev", - "de": "äthiopisch-katholische kirche", - "en": "ethiopian catholic church", - "es": "iglesia católica etíope", - "fr": "église catholique éthiopienne", - "he": "הכנסייה הקתולית האתיופית", - "hr": "etiopska katolička crkva", - "hu": "etióp katolikus egyház", - "id": "gereja katolik ethiopia", - "it": "chiesa cattolica etiope", - "ja": "エチオピア・カトリック教会", - "nb": "den etiopisk-katolske kirke", - "nl": "ethiopisch-katholieke kerk", - "pl": "kościół katolicki obrządku etiopskiego", - "pt": "igreja católica etíope", - "ru": "эфиопская католическая церковь", - "sk": "etiópskokatolícka cirkev", - "sr": "етиопска католичка црква", - "sv": "etiopisk-katolska kyrkan", - "uk": "ефіопська католицька церква", - "zh": "衣索比亞禮天主教會" - }, - "ethiopian_orthodox": { - "ar": "كنيسة التوحيد الأرثوذكسية الإثيوبية", - "bg": "етиопска православна църква", - "ca": "església ortodoxa etíop", - "cs": "etiopská ortodoxní církev", - "da": "den etiopisk-ortodokse kirke", - "de": "äthiopisch-orthodoxe tewahedo-kirche", - "el": "αιθιοπική ορθόδοξη εκκλησία", - "en": "ethiopian orthodox tewahedo church", - "es": "iglesia ortodoxa etíope", - "fi": "etiopian ortodoksinen kirkko", - "fr": "église éthiopienne orthodoxe", - "he": "הכנסייה האורתודוקסית האתיופית", - "hr": "etiopska pravoslavna tevahedo crkva", - "hu": "etióp ortodox egyház", - "id": "gereja tewahedo ortodoks etiopia", - "is": "eþíópíska rétttrúnaðarkirkjan", - "it": "chiesa ortodossa etiope", - "ja": "エチオピア正教会", - "ko": "에티오피아 터와흐도 정교회", - "lt": "etiopijos ortodoksinė tevahedo bažnyčia", - "lv": "etiopijas ortodoksālā baznīca", - "nb": "den etiopisk-ortodokse kirke", - "nl": "ethiopisch-orthodoxe kerk", - "pl": "etiopski kościół ortodoksyjny", - "pt": "igreja ortodoxa etíope", - "ro": "biserica ortodoxă etiopiană", - "ru": "эфиопская православная церковь", - "sk": "etiópska ortodoxná cirkev", - "sr": "етиопска православна црква", - "sv": "etiopisk-ortodoxa kyrkan", - "tr": "etiyopya ortodoks tewahedo kilisesi", - "uk": "ефіопська православна церква", - "vi": "giáo hội chính thống giáo tewahedo ethiopia", - "zh": "埃塞俄比亞正教會", - "zh-cn": "埃塞俄比亚正教会", - "zh-tw": "衣索比亞正教會" - }, - "evangelical": { - "ar": "الإنجيلية", - "bg": "евангелизъм", - "ca": "evangelicalisme", - "cs": "evangelikalismus", - "da": "evangelikalisme", - "de": "evangelikalismus", - "el": "ευαγγελικοί", - "en": "evangelicalism", - "es": "evangelicalismo", - "fi": "evankelikalismi", - "fr": "évangélisme", - "he": "אוונגליזם", - "hi": "शुभसंदेशीयवाद", - "hu": "evangelizmus", - "id": "evangelikalisme", - "it": "evangelicalismo", - "ja": "福音派", - "ko": "복음주의", - "lt": "evangelikai", - "nb": "evangelikalisme", - "nl": "evangelisch christendom", - "pl": "ewangelikalizm", - "pt": "évangélisme", - "pt-br": "evangelicalismo", - "ru": "евангелизм", - "sk": "evanjelikálne hnutie", - "sl": "evangeličanstvo", - "sr": "евангелизам", - "sv": "evangelikalism", - "tr": "evanjelikalizm", - "uk": "євангельські християни", - "vi": "chủ nghĩa phúc âm", - "zh": "福音神學" - }, - "evangelical_covenant": { - "en": "evangelical covenant church" - }, - "evangelical_free_church_of_america": { - "el": "ευαγγελική ελεύθερη εκκλησία της αμερικής", - "en": "evangelical free church of america", - "es": "iglesia evangélica libre de américa", - "fr": "église évangélique libre d'amérique", - "pl": "ewangeliczny wolny kościół ameryki", - "zh": "美国福音自由教会" - }, - "exclusive_brethren": { - "de": "raven-brüder", - "en": "exclusive brethren", - "es": "hermanos exclusivistas", - "zh": "闭关弟兄会", - "zh-hk": "閉關弟兄會" - }, - "foursquare": { - "de": "international church of the foursquare gospel", - "el": "διεθνής εκκλησία του τετραγωνικού ευαγγελίου", - "en": "the foursquare church", - "es": "iglesia internacional del evangelio cuadrangular", - "ja": "国際フォースクエア伝道教会", - "nb": "international church of the foursquare gospel", - "nl": "international church of the foursquare gospel", - "pl": "międzynarodowy kościół poczwórnej ewangelii", - "pt": "igreja do evangelho quadrangular", - "ru": "международная церковь четырёхстороннего евангелия", - "sv": "church of the foursquare gospel", - "zh": "國際四方福音會" - }, - "gelug": { - "ar": "غيلوغ", - "bg": "гелугпа", - "cs": "gelugpa", - "en": "gelug", - "et": "gelukpa koolkond", - "fi": "geluk", - "fr": "gelugpa", - "hi": "गेलुगपा", - "hu": "gelugpa", - "ja": "ゲルク派", - "ko": "겔룩파", - "lt": "gelugpa", - "ru": "гэлуг", - "th": "เกลุก", - "uk": "гелуг", - "vi": "cách-lỗ phái", - "zh": "格鲁派", - "zh-hk": "格魯派", - "zh-tw": "格魯派" - }, - "hasidic": { - "ar": "حركة الحاسيديم", - "bg": "хасидизъм", - "ca": "hassidisme", - "cs": "chasidismus", - "da": "chasidisk jødedom", - "de": "chassidismus", - "el": "χασιδισμός", - "en": "hasidism", - "en-ca": "hasidic judaism", - "en-gb": "hasidic judaism", - "es": "judaísmo jasídico", - "et": "hassidism", - "fi": "hasidismi", - "fr": "hassidisme", - "he": "תנועת החסידות", - "hr": "hasidizam", - "hu": "haszidizmus", - "id": "yudaisme hasidut", - "it": "chassidismo", - "ja": "ハシディズム", - "ko": "하시딤", - "lt": "hasidinis judaizmas", - "lv": "hasīdisms", - "nb": "ḥasidisk jødedom", - "nl": "chassidisch jodendom", - "pl": "chasydyzm", - "pt": "judaísmo chassídico", - "ru": "хасидизм", - "sk": "chasidizmus", - "sl": "hasidijski judje", - "sr": "хасидизам", - "sv": "chassidism", - "th": "ศาสนายูดาห์นิกายฮาซิด", - "tr": "hasidizm", - "uk": "хасидизм", - "vi": "hà tây đức giáo", - "zh": "哈西迪猶太教" - }, - "huayan": { - "bg": "цветния венец", - "ca": "budisme huayan", - "de": "huayan zong", - "en": "huayan school", - "es": "huayan", - "et": "huayan", - "fr": "huayan", - "hu": "hua-jen", - "id": "huayan", - "ja": "華厳宗", - "ko": "화엄종", - "nb": "huayan zong", - "pl": "huayan", - "ru": "кэгон", - "sr": "huajan", - "th": "หัวเหยียน", - "vi": "hoa nghiêm tông", - "zh": "华严宗", - "zh-hk": "華嚴宗" - }, - "hungarian_greek_catholic": { - "ca": "església grecocatòlica hongaresa", - "cs": "maďarská řeckokatolická církev", - "de": "ungarische griechisch-katholische kirche", - "en": "hungarian greek catholic church", - "es": "iglesia greco-católica húngara", - "fr": "église grecque-catholique hongroise", - "hr": "mađarska grkokatolička crkva", - "hu": "magyar görögkatolikus egyház", - "it": "chiesa greco-cattolica ungherese", - "nl": "hongaarse grieks-katholieke kerk", - "pl": "kościół katolicki obrządku bizantyjsko-węgierskiego", - "pt": "igreja católica bizantina húngara", - "ro": "biserica greco-catolică maghiară", - "ru": "венгерская грекокатолическая церковь", - "sk": "maďarská gréckokatolícka cirkev", - "sr": "мађарска гркокатоличка црква", - "uk": "угорська греко-католицька церква", - "zh": "匈牙利希臘禮天主教會" - }, - "ibadi": { - "ar": "إباضية", - "bg": "ибадизъм", - "ca": "ibadisme", - "cs": "ibádíja", - "da": "ibadisme", - "de": "ibaditen", - "en": "ibadi islam", - "es": "ibadíes", - "et": "ibadiidid", - "fi": "ibadilaisuus", - "fr": "ibadisme", - "he": "איבאדיה", - "hi": "इबादी", - "hr": "ibadi", - "hu": "ibádita", - "id": "ibadi", - "it": "ibaditi", - "ja": "イバード派", - "ko": "이바드파", - "lt": "ibadizmas", - "nb": "ibadi", - "nl": "ibadisme", - "pl": "ibadytyzm", - "pt": "ibadismo", - "ro": "ibadism", - "ru": "ибадизм", - "sr": "ибадити", - "sv": "ibadi", - "tr": "i̇badiyye", - "uk": "ібадити", - "zh": "艾巴德派" - }, - "iglesia_ni_cristo": { - "ar": "إغليجا ني كريستو", - "en": "iglesia ni cristo", - "he": "איגלסיה ני קריסטו", - "ja": "キリストの教会", - "ko": "이글레시아 니 그리스도", - "ru": "церковь христа", - "uk": "іглесія ні крісто", - "zh": "基督堂教會" - }, - "ismaili": { - "ar": "إسماعيلية", - "bg": "исмаилизъм", - "ca": "ismaïlisme", - "cs": "ismá'ílíja", - "da": "ismailisme", - "de": "ismailiten", - "el": "ισμαηλισμός", - "en": "isma'ilism", - "es": "ismailismo", - "et": "ismailiidid", - "fi": "ismailiitit", - "fr": "ismaélisme", - "he": "איסמאעיליה", - "hi": "इस्माइली", - "hr": "ismailije", - "hu": "iszmáiliták", - "id": "ismailiyah", - "it": "ismailismo", - "ja": "イスマーイール派", - "ko": "이스마일파", - "lt": "ismailizmas", - "nb": "ismailitter", - "nl": "isma'ilisme", - "pl": "ismailizm", - "pt": "ismaelismo", - "ro": "ismailiți", - "ru": "исмаилизм", - "sl": "ismailizem", - "sr": "ислаилизам", - "sv": "ismailiter", - "th": "อิสมาอีลียะฮ์", - "tr": "i̇smailîlik", - "uk": "ісмаїліти", - "zh": "伊斯玛仪派", - "zh-hk": "伊斯瑪儀派", - "zh-tw": "伊斯瑪儀派" - }, - "japanese_orthodox": { - "ar": "الكنيسة اليابانية الأرثوذكسية", - "ca": "església ortodoxa al japó", - "cs": "japonská pravoslavná církev", - "en": "orthodox church in japan (moscow patriarchate)", - "es": "iglesia ortodoxa japonesa", - "fi": "japanin ortodoksinen kirkko", - "fr": "église orthodoxe du japon", - "hr": "japanska pravoslavna crkva", - "hu": "japán ortodox egyház", - "id": "gereja ortodoks jepang", - "it": "chiesa ortodossa giapponese", - "ja": "日本ハリストス正教会", - "ko": "일본 정교회", - "nb": "den japansk-ortodokse kirke", - "pl": "japoński kościół prawosławny", - "pt": "igreja ortodoxa do japão", - "ro": "biserica ortodoxă japoneză", - "ru": "японская православная церковь", - "sr": "јапанска православна црква", - "tr": "japon ortodoks kilisesi", - "uk": "японська православна церква", - "zh": "日本正教会" - }, - "jehovahs_witness": { - "ar": "شهود يهوه", - "bg": "свидетели на йехова", - "ca": "testimonis de jehovà", - "cs": "svědkové jehovovi", - "da": "jehovas vidner", - "de": "zeugen jehovas", - "el": "μάρτυρες του ιεχωβά", - "en": "jehovah's witnesses", - "es": "testigos de jehová", - "et": "jehoova tunnistajad", - "fi": "jehovan todistajat", - "fr": "témoins de jéhovah", - "he": "עדי יהוה", - "hi": "यहोवा के साक्षी", - "hr": "jehovini svjedoci", - "hu": "jehova tanúi", - "id": "saksi-saksi yehuwa", - "is": "vottar jehóva", - "it": "testimoni di geova", - "ja": "エホバの証人", - "ko": "여호와의 증인", - "lt": "jehovos liudytojai", - "lv": "jehovas liecinieki", - "nb": "jehovas vitner", - "nl": "jehovah's getuigen", - "pl": "świadkowie jehowy", - "pt": "testemunhas de jeová", - "ro": "organizația religioasă martorii lui iehova", - "ru": "свидетели иеговы", - "sk": "jehovovi svedkovia", - "sl": "jehovove priče", - "sr": "јеховини сведоци", - "sv": "jehovas vittnen", - "th": "พยานพระยะโฮวา", - "tr": "yehova'nın şahitleri", - "uk": "свідки єгови", - "vi": "nhân chứng giê-hô-va", - "zh": "耶和華見證人" - }, - "jishu": { - "en": "ji-shū", - "fr": "ji shū", - "ja": "時宗", - "ru": "дзисю", - "th": "จิชู", - "vi": "thời tông" - }, - "jodo_shinshu": { - "ar": "جودو شينشو", - "cs": "džódo šinšú", - "de": "jōdo-shinshū", - "en": "jōdo shinshū", - "et": "jōdo-shinshū", - "he": "ג'ודו-שינשו", - "hu": "dzsódo sin", - "ja": "浄土真宗", - "ko": "정토진종", - "pl": "jōdo-shinshū", - "pt": "budismo shin terra pura", - "ru": "дзёдо-синсю", - "sr": "права школа чисте земље", - "sv": "jodoshinshu", - "uk": "дзьодо-сінсю", - "vi": "tịnh độ chân tông", - "zh": "淨土真宗" - }, - "jodo_shu": { - "ca": "jōdo-shū", - "cs": "džódo šú", - "de": "jōdo-shū", - "en": "jodo shu", - "es": "jōdo-shū", - "fr": "jōdo shū", - "he": "ג'ודו-שו", - "hu": "dzsódo", - "it": "buddhismo della terra pura", - "ja": "浄土宗", - "nb": "jōdo-shū", - "nl": "jōdo-shū", - "pl": "jōdo-shū", - "ro": "jōdo-shū", - "ru": "дзёдо", - "sl": "jōdo", - "sr": "школа чисте земље", - "sv": "jodoshu", - "uk": "секта дзьодо", - "zh": "日本净土信仰" - }, - "kimbanguist": { - "cs": "kimbanguismus", - "de": "kimbanguistenkirche", - "en": "kimbanguism", - "es": "iglesia kimbanguista", - "fi": "kimbangulaisuus", - "fr": "église kimbanguiste", - "hu": "kimbangizmus", - "id": "kimbanguisme", - "it": "kimbanguismo", - "ja": "キンバングーイズム", - "ko": "킴방구주의", - "nb": "kimbanguistkirken", - "nl": "kimbanguïstische kerk", - "pl": "kimbangizm", - "pt": "igreja kimbanguista", - "ru": "кимбангизм", - "tr": "kimbangizm", - "zh": "金邦谷教" - }, - "liberal_catholic": { - "da": "liberal katolsk kirke", - "de": "liberalkatholische kirche", - "en": "liberal catholic church", - "es": "iglesia católica liberal", - "fi": "suomen vapaa katolinen kirkko", - "fr": "église catholique libérale", - "it": "chiesa cattolica liberale", - "ja": "リベラル・カトリック教会", - "nl": "vrij-katholieke kerk", - "pl": "kościół liberalnokatolicki", - "pt": "igreja católica liberal", - "sv": "liberala katolska kyrkan", - "uk": "ліберальна католицька церква", - "zh": "自由天主教會" - }, - "lutheran": { - "ar": "لوثرية", - "bg": "лутеранство", - "ca": "luteranisme", - "cs": "luteránství", - "da": "lutheranisme", - "de": "lutherische kirche australiens", - "el": "λουθηρανισμός", - "en": "lutheran church of australia", - "en-gb": "lutheranism", - "es": "luteranismo", - "et": "luterlus", - "fi": "australian luterilainen kirkko", - "fr": "luthéranisme", - "he": "לותרניזם", - "hi": "लूथरवाद", - "hr": "luterani", - "hu": "evangélikus kereszténység", - "id": "gereja lutheran", - "is": "evangelísk-lúthersk kirkja", - "it": "luteranesimo", - "ja": "ルーテル教会", - "ko": "루터교", - "lt": "liuteronybė", - "lv": "luterticība", - "nl": "lutheranisme", - "pl": "kościół luterański australii", - "pt": "luteranismo", - "ro": "luteranism", - "ru": "лютеранская церковь австралии", - "sk": "luteránstvo", - "sl": "luteranstvo", - "sr": "лутеранизам", - "sv": "lutherska kyrkan i australien", - "th": "ลูเทอแรน", - "tr": "lütercilik", - "uk": "лютеранство", - "vi": "giáo hội luther", - "zh": "澳洲路德教會" - }, - "mariavite": { - "ca": "església mariavita", - "cs": "mariavitismus", - "de": "mariavitismus", - "el": "εκκλησία των μαριαβιτών", - "en": "mariavite church", - "fr": "église mariavite", - "it": "mariavitismo", - "lt": "marijavitai", - "pl": "mariawityzm", - "ru": "мариавитская церковь", - "sk": "mariavitizmus", - "sv": "mariaviter", - "uk": "маріавитська церква", - "zh": "瑪麗亞維特教會" - }, - "maronite": { - "ar": "الكنيسة المارونية", - "bg": "маронитска църква", - "ca": "església maronita", - "cs": "maronitská katolická církev", - "da": "den maronitiske kirke", - "de": "syrisch-maronitische kirche", - "el": "μαρωνιτική εκκλησία", - "en": "maronite church", - "es": "iglesia católica maronita", - "fi": "maroniittikirkko", - "fr": "église maronite", - "he": "הכנסייה המרונית", - "hr": "maronitska crkva", - "hu": "maronita egyház", - "id": "gereja maronit", - "it": "chiesa maronita", - "ja": "マロン派", - "ko": "마론파", - "nb": "den maronittiske kirke", - "nl": "maronitische kerk", - "pl": "kościół maronicki", - "pt": "igreja maronita", - "ro": "biserica maronită", - "ru": "маронитская католическая церковь", - "sk": "maronitská cirkev", - "sl": "maroniti", - "sr": "маронитска црква", - "sv": "syrisk-maronitiska kyrkan", - "tr": "maruni kilisesi", - "uk": "маронітська католицька церква", - "vi": "giáo hội maronite", - "zh": "马龙尼礼教会" - }, - "mennonite": { - "ar": "مينوناتية", - "bg": "менонити", - "ca": "mennonisme", - "cs": "mennonité", - "da": "mennonit", - "de": "mennoniten", - "el": "μενονίτες", - "en": "mennonites", - "es": "menonita", - "fi": "mennoniitat", - "fr": "mennonitisme", - "he": "מנוניטים", - "hu": "mennoniták", - "id": "gereja menonit", - "it": "mennoniti", - "ja": "メノナイト", - "ko": "메노나이트", - "lt": "menonitai", - "nb": "mennonitter", - "nl": "mennonieten", - "pl": "mennonici", - "pt": "menonitas", - "ro": "menoniți", - "ru": "меннонитство", - "sr": "менонити", - "sv": "mennoniterna", - "tr": "mennonitler", - "uk": "меноніти", - "zh": "門諾會", - "zh-cn": "门诺会" - }, - "messianic_jewish": { - "ar": "يهود مسيانيون", - "bg": "месиански юдаизъм", - "ca": "judaisme messiànic", - "cs": "mesiánský judaismus", - "da": "messiansk jødedom", - "de": "messianisches judentum", - "el": "μεσσιανικός ιουδαϊσμός", - "en": "messianic judaism", - "es": "judaísmo mesiánico", - "fi": "messiaaninen juutalaisuus", - "fr": "judaïsme messianique", - "he": "יהדות משיחית", - "hr": "mesijanski židovi", - "hu": "messiási zsidóság", - "id": "mesianik yudaisme", - "it": "giudaismo messianico", - "ja": "メシアニック・ジュダイズム", - "ko": "메시아 유대교", - "nb": "messiansk jødedom", - "nl": "messiasbelijdende joden", - "pl": "żydzi mesjanistyczni", - "pt": "judaísmo messiânico", - "ro": "mesianici", - "ru": "мессианский иудаизм", - "sl": "mesijanski judje", - "sr": "месијански јевреји", - "sv": "messiansk judendom", - "tr": "mesiyanik yahudilik", - "uk": "месіанський юдаїзм", - "zh": "彌賽亞猶太教" - }, - "methodist": { - "ar": "ميثودية", - "bg": "методизъм", - "ca": "metodisme", - "cs": "metodismus", - "da": "metodisme", - "de": "methodistische und wesleyanische kirchen", - "el": "μεθοδισμός", - "en": "methodism", - "es": "metodismo", - "et": "metodism", - "fi": "metodismi", - "fr": "méthodisme", - "he": "מתודיזם", - "hi": "मेथोडिज़्म", - "hr": "metodisti", - "hu": "metodizmus", - "id": "kristen metodis", - "is": "meþódismi", - "it": "metodismo", - "ja": "メソジスト", - "ko": "감리교", - "lt": "metodistai", - "lv": "metodisms", - "nb": "metodisme", - "nl": "methodisme", - "pl": "metodyzm", - "pt": "igreja metodista", - "ro": "metodism", - "ru": "методизм", - "sk": "metodizmus", - "sr": "методизам", - "sv": "metodism", - "tr": "metodizm", - "uk": "методизм", - "vi": "phong trào giám lý", - "zh": "循道宗" - }, - "mission_covenant_church_of_sweden": { - "de": "schwedische missionskirche", - "en": "mission covenant church of sweden", - "sv": "svenska missionskyrkan", - "zh": "瑞典行道会", - "zh-hk": "瑞典行道會" - }, - "mormon": { - "ar": "مورمونية", - "bg": "мормонизъм", - "ca": "mormonisme", - "cs": "mormonismus", - "da": "mormonisme", - "de": "mormonentum", - "el": "μορμονισμός", - "en": "mormonism", - "es": "la iglesia de jesucristo de los santos de los ultimos dias", - "et": "mormoonid", - "fi": "mormonismi", - "fr": "mormonisme", - "he": "הכנסייה המורמונית", - "hr": "mormon", - "hu": "mormonizmus", - "id": "mormonisme", - "it": "mormonismo", - "ja": "モルモニズム", - "ko": "모르몬교", - "lt": "mormonai", - "nb": "mormonisme", - "nl": "mormonisme", - "pl": "mormonizm", - "pt": "mórmon", - "ru": "мормонизм", - "sk": "mormonizmus", - "sl": "mormonizem", - "sr": "мормонизам", - "tr": "mormonluk", - "uk": "мормонізм", - "vi": "mặc môn giáo", - "zh": "摩爾門教" - }, - "nazarene": { - "ca": "església del natzarè", - "da": "nazaréens kirke", - "de": "kirche des nazareners", - "el": "εκκλησία του ναζωραίου", - "en": "church of the nazarene", - "es": "iglesia del nazareno", - "fr": "église du nazaréen", - "hu": "názáreti egyház", - "it": "chiesa del nazareno", - "ko": "나사렛 교회", - "nb": "nazaréens kirke", - "nl": "kerk van de nazarener", - "pl": "kościół nazarejczyka", - "pt": "igreja do nazareno", - "ru": "церковь назарянина", - "sr": "хришћанска назаренска заједница", - "sv": "nazaréens kyrka", - "zh": "拿撒勒人會" - }, - "new_apostolic": { - "da": "den nyapostoliske kirke", - "de": "neuapostolische kirche", - "en": "new apostolic church", - "es": "iglesia nueva apostólica", - "et": "uusapostlik kirik", - "fi": "uusapostolinen kirkko", - "fr": "église néo-apostolique", - "he": "הכנסייה האפוסטולית החדשה", - "hr": "novoapostolska crkva", - "hu": "új apostoli egyház", - "id": "gereja kerasulan baru", - "it": "chiesa neo-apostolica", - "ja": "新使徒派教会", - "ko": "새사도교회", - "lt": "naujoji apaštalų bažnyčia", - "nb": "den nyapostoliske kirke", - "nl": "nieuw-apostolische kerk", - "pl": "kościół nowoapostolski", - "pt": "igreja nova apostólica", - "ro": "biserica nouapostolică", - "ru": "новоапостольская церковь", - "sr": "новоапостолска црква", - "sv": "nyapostoliska kyrkan", - "uk": "новоапостольська церква", - "zh": "新使徒教會" - }, - "new_frontiers": { - "en": "newfrontiers" - }, - "nichiren": { - "ca": "budisme nichiren", - "cs": "ničirenova škola", - "de": "nichiren-buddhismus", - "en": "nichiren buddhism", - "es": "budismo nichiren", - "fi": "nichiren-buddhalaisuus", - "fr": "bouddhisme de nichiren", - "he": "ניצ'ירן (בודהיזם)", - "hu": "nicsiren buddhizmus", - "id": "agama buddha nichiren", - "it": "buddhismo nichiren", - "ja": "法華系仏教", - "ko": "니치렌슈", - "lt": "ničiren", - "nb": "nichirenbuddhisme", - "nl": "nichiren-boeddhisme", - "pt": "budismo de nitiren", - "ro": "nichiren", - "ru": "нитирэн", - "sv": "nichiren-buddhism", - "th": "นิชิเร็ง", - "tr": "niçiren budizmi", - "uk": "нітірен-сю", - "vi": "phật giáo nichiren", - "zh": "法華系佛教", - "zh-hk": "日蓮宗" - }, - "nondenominational": { - "de": "christian outreach centre", - "en": "international network of churches", - "zh": "基督教外展中心" - }, - "nyingma": { - "ar": "نيينغما", - "bg": "нингма", - "cs": "ňingmapa", - "en": "nyingma", - "et": "ningma", - "fr": "nyingmapa", - "hi": "न्यिंगमा", - "hu": "nyingmapa", - "it": "nyingmapa", - "ja": "ニンマ派", - "ko": "닝마파", - "lt": "njingmapa", - "pl": "ningma", - "ru": "ньингма", - "sk": "ňingma", - "th": "ญิงมา", - "uk": "ньїнґма", - "vi": "ninh-mã phái", - "zh": "宁玛派", - "zh-hk": "寧瑪派" - }, - "obaku": { - "bg": "обаку", - "ca": "obaku", - "cs": "óbaku", - "de": "ōbaku-shū", - "en": "ōbaku", - "es": "obaku", - "hu": "óbaku", - "it": "ōbaku-shū", - "ja": "黄檗宗", - "pt": "obaku", - "ru": "обаку", - "sr": "obaku", - "vi": "hoàng bá tông", - "zh": "黄檗宗" - }, - "old_believers": { - "bg": "старообредство", - "ca": "vells creients", - "cs": "starověrci", - "da": "gammeltroende", - "de": "altorthodoxe", - "el": "παλαιοί πιστοί", - "en": "old believers", - "es": "viejos creyentes", - "et": "vanausulised", - "fi": "vanhauskoisuus", - "fr": "orthodoxes vieux-croyants", - "he": "אדוקי האמונה הישנה", - "hu": "óhitűek", - "id": "gereja pemercaya lama", - "it": "vecchi credenti", - "ja": "古儀式派", - "ko": "고의식파", - "lt": "sentikiai", - "lv": "vecticībnieki", - "nb": "de gammeltroende", - "nl": "oudgelovigen", - "pl": "staroobrzędowcy", - "pt": "velhos crentes", - "ro": "rascolnici", - "ru": "старообрядчество", - "sk": "staroverci", - "sr": "староверци", - "sv": "gammaltroende", - "th": "ผู้เชื่อเก่า", - "tr": "eski inanış", - "uk": "старообрядництво", - "zh": "老信徒", - "zh-cn": "旧信徒" - }, - "old_catholic": { - "ar": "الكنيسة الكاثوليكية القديمة", - "ca": "església catòlica antiga", - "cs": "starokatolická církev", - "da": "gammelkatolikker", - "de": "altkatholische kirche", - "de-ch": "christkatholische kirche", - "el": "παλαιοκαθολική εκκλησία", - "en": "old catholic church", - "es": "iglesia veterocatólica", - "fi": "vanhakatolinen kirkko", - "fr": "église vieille-catholique", - "hr": "starokatolička crkva", - "hu": "ókatolikusok", - "id": "gereja katolik lama", - "it": "vetero-cattolicesimo", - "ja": "復古カトリック教会", - "ko": "고 가톨릭교회", - "lt": "senoji katalikų bažnyčia", - "nb": "den gammelkatolske kirke", - "nl": "oud-katholieke kerk", - "pl": "starokatolicyzm", - "pt": "velha igreja católica", - "ro": "biserica vetero-catolică", - "ru": "старокатолицизм", - "sk": "starokatolícka cirkev", - "sl": "starokatoliška cerkev", - "sr": "старокатоличка црква", - "sv": "gammalkatolska kyrkor", - "uk": "старокатолицтво", - "vi": "giáo hội công giáo cổ", - "zh": "舊天主教會" - }, - "orthodox": { - "ar": "يهودية أرثوذكسية", - "bg": "ортодоксален юдаизъм", - "ca": "judaisme ortodox", - "cs": "ortodoxní judaismus", - "da": "ortodoks jødedom", - "de": "orthodoxes judentum", - "el": "ορθόδοξος ιουδαϊσμός", - "en": "orthodox judaism", - "en-ca": "eastern orthodox church", - "en-gb": "eastern orthodox church", - "es": "judaísmo ortodoxo", - "et": "õigeusu kirik", - "fi": "ortodoksijuutalaisuus", - "fr": "judaïsme orthodoxe", - "he": "יהדות אורתודוקסית", - "hi": "पूर्वी ऑर्थोडॉक्स चर्च", - "hr": "ortodoksni judaizam", - "hu": "ortodox zsidóság", - "id": "yahudi ortodoks", - "is": "rétttrúnaðarkirkjan", - "it": "ebraismo ortodosso", - "ja": "正統派", - "ko": "정통파 (유대교)", - "lt": "ortodoksinis judaizmas", - "lv": "ortodoksālais jūdaisms", - "nb": "ortodoks jødedom", - "nl": "orthodox jodendom", - "pl": "judaizm ortodoksyjny", - "pt": "judaísmo ortodoxo", - "pt-br": "igreja ortodoxa", - "ro": "iudaism ortodox", - "ru": "ортодоксальный иудаизм", - "sk": "ortodoxný judaizmus", - "sl": "ortodoksni judje", - "sr": "ортодоксни јудаизам", - "sv": "ortodox judendom", - "th": "อีสเทิร์นออร์ทอดอกซ์", - "tr": "ortodoks yahudilik", - "uk": "ортодоксальний юдаїзм", - "vi": "do thái giáo chính thống", - "zh": "猶太教正統派" - }, - "orthodox_presbyterian_church": { - "el": "ορθόδοξη πρεσβυτεριανή εκκλησία", - "en": "orthodox presbyterian church", - "es": "iglesia presbiteriana ortodoxa", - "fr": "église presbytérienne orthodoxe", - "id": "gereja presbiterian ortodoks", - "ja": "正統長老教会", - "ko": "정통장로교회", - "pt": "igreja presbiteriana ortodoxa" - }, - "pentecostal": { - "ar": "كاريزماتية", - "bg": "петдесятничество", - "ca": "moviment carismàtic", - "cs": "charismatické hnutí", - "da": "pinsebevægelsen", - "de": "charismatische bewegung", - "el": "χαρισματικό κίνημα", - "en": "charismatic movement", - "es": "movimiento carismático", - "et": "nelipühilus", - "fi": "karismaattinen liike", - "fr": "mouvement charismatique", - "he": "פנטקוסטליזם", - "hr": "karizmatski pokret", - "hu": "karizmatikus mozgalom", - "id": "gerakan karismatik", - "it": "movimento carismatico", - "ja": "カリスマ運動", - "ko": "은사주의", - "lt": "charizmatai", - "lv": "vasarsvētku draudze", - "nb": "karismatisk kristendom", - "nl": "charismatische beweging", - "pl": "charyzmaty", - "pt": "movimento carismático", - "ro": "mișcarea carismatică", - "ru": "харизматическое движение", - "sk": "charizmatické hnutie", - "sl": "karizmatično gibanje", - "sr": "пентекосталци", - "sv": "karismatisk kristendom", - "tr": "karizmatik hareket", - "uk": "харизматичний рух", - "vi": "phong trào ngũ tuần", - "zh": "靈恩派", - "zh-cn": "灵恩派" - }, - "philippine_independent": { - "cs": "nezávislá filipínská církev", - "de": "unabhängige philippinische kirche", - "en": "philippine independent church", - "es": "iglesia filipina independiente", - "fr": "église indépendante des philippines", - "he": "הכנסייה העצמאית הפיליפינית", - "id": "gereja independen filipina", - "it": "chiesa filippina indipendente", - "ja": "フィリピン独立教会", - "ko": "필리핀 독립교회", - "nb": "iglesia filipina independiente", - "nl": "iglesia filipina independiente", - "pl": "niezależny kościół filipiński", - "ru": "независимая филиппинская церковь", - "sr": "филипинска независна црква", - "sv": "oberoende filippinska kyrkan", - "zh": "菲律賓獨立教會", - "zh-cn": "菲律宾独立教会" - }, - "pkn": { - "ca": "església protestant dels països baixos", - "cs": "protestantská církev v nizozemí", - "da": "protestantiske kirke i nederlanderne", - "de": "protestantische kirche in den niederlanden", - "el": "προτεσταντική εκκλησία στην ολλανδία", - "en": "protestant church in the netherlands", - "es": "iglesia protestante en los países bajos", - "fi": "hollannin protestanttikirkko", - "fr": "église protestante dans les pays-bas", - "he": "הכנסייה הפרוטסטנטית של הולנד", - "id": "gereja protestan di belanda", - "it": "chiesa protestante nei paesi bassi", - "ja": "オランダ・プロテスタント教会", - "ko": "네덜란드 프로테스탄트교회", - "nb": "protestantiske kirken i nederland", - "nl": "protestantse kerk in nederland", - "pl": "kościół protestancki w holandii", - "pt": "igreja protestante na holanda", - "ro": "biserica protestantă din țările de jos", - "ru": "протестантская церковь нидерландов", - "sv": "protestantiska kyrkan i nederländerna", - "uk": "протестантська церква нідерландів", - "zh": "荷蘭新教教會", - "zh-cn": "荷兰新教会" - }, - "polish_catholic": { - "de": "polnisch-katholische kirche", - "en": "polish catholic church", - "fr": "église polonaise-catholique", - "it": "chiesa polacco-cattolica", - "ja": "ポーランド・カトリック教会", - "pl": "kościół polskokatolicki w rp", - "ru": "польско-католические церкви" - }, - "polish_national_catholic": { - "ca": "església catòlica nacional polonesa", - "cs": "polská národní katolická církev", - "de": "polish national catholic church of america", - "en": "polish national catholic church", - "es": "iglesia católica nacional polaca", - "fr": "église catholique nationale polonaise", - "it": "chiesa cattolica nazionale polacca", - "pl": "polski narodowy kościół katolicki", - "pt": "igreja católica nacional polonesa", - "ru": "польская национальная католическая церковь", - "sr": "пољска национална католичка црква", - "sv": "polska nationalkatolska kyrkan", - "vi": "giáo hội công giáo quốc gia ba lan", - "zh": "波蘭國家天主教會" - }, - "presbyterian": { - "ar": "مشيخية", - "bg": "презвитерианство", - "ca": "presbiterianisme", - "cs": "presbyterianismus", - "da": "presbyterianisme", - "de": "presbyterianismus", - "el": "πρεσβυτεριανισμός", - "en": "presbyterianism", - "es": "presbiterianismo", - "et": "presbüterlus", - "fi": "presbyteerinen kirkko", - "fr": "presbytérianisme", - "he": "פרסביטריאניזם", - "hu": "presbiteriánizmus", - "id": "gereja presbiterian", - "it": "presbiterianesimo", - "ja": "長老派教会", - "ko": "장로교", - "lt": "presbiterionai", - "lv": "prezbiterānisms", - "nb": "presbyterianisme", - "nl": "presbyterianisme", - "pl": "prezbiterianizm", - "pt": "presbiterianismo", - "ro": "prezbiterianism", - "ru": "пресвитерианство", - "sk": "presbyterianizmus", - "sl": "prezbiterijanstvo", - "sr": "презвитеријанство", - "th": "เพรสไบทีเรียน", - "tr": "presbiteryenlik", - "uk": "пресвітеріанство", - "vi": "giáo hội trưởng nhiệm", - "zh": "長老宗", - "zh-cn": "长老宗" - }, - "protestant": { - "ar": "بروتستانتية", - "bg": "протестантство", - "ca": "protestantisme", - "cs": "protestantismus", - "da": "protestantisme", - "de": "protestantismus", - "el": "προτεσταντισμός", - "en": "protestantism", - "es": "protestantismo", - "fi": "protestantismi", - "fr": "protestantisme", - "he": "נצרות פרוטסטנטית", - "hi": "प्रोटेस्टैंट", - "hr": "protestantizam", - "hu": "protestantizmus", - "id": "protestanisme", - "is": "mótmælendatrú", - "it": "protestantesimo", - "ja": "プロテスタント", - "ko": "개신교", - "lt": "protestantizmas", - "lv": "protestantisms", - "nb": "protestantisme", - "nl": "protestantisme", - "pl": "protestantyzm", - "pt": "protestantismo", - "ru": "протестантизм", - "sk": "protestantizmus", - "sl": "protestantizem", - "sr": "протестантизам", - "th": "โปรเตสแตนต์", - "tr": "protestanlık", - "uk": "протестантизм", - "vi": "tin lành", - "zh": "新教" - }, - "pure_land": { - "ar": "بوذية الأرض النقية", - "ca": "terra pura", - "cs": "čistá země", - "da": "rene land skolen", - "de": "amitabha-buddhismus", - "en": "pure land buddhism", - "es": "budismo de la tierra pura", - "fi": "puhtaan maan buddhalaisuus", - "fr": "terre pure", - "he": "בודהיזם הארץ הטהורה", - "hr": "amidizam", - "hu": "tiszta föld buddhizmus", - "id": "buddha tanah murni", - "it": "buddhismo della terra pura", - "ja": "浄土教", - "ko": "정토교", - "nb": "det rene lands buddhisme", - "nl": "zuiver land-boeddhisme", - "pl": "szkoła czystej krainy", - "pt": "terra pura", - "ro": "budismul pământului pur", - "ru": "буддизм чистой земли", - "sr": "школа чисте свести", - "sv": "det rena landet", - "th": "นิกายสุขาวดี", - "tr": "arık ülke budizmi", - "uk": "вчення чистої землі", - "vi": "tịnh độ tông", - "zh": "淨土宗" - }, - "quaker": { - "ar": "جمعية الأصدقاء الدينية", - "bg": "квакери", - "ca": "societat religiosa d'amics", - "cs": "kvakeři", - "da": "kvæker", - "de": "quäkertum", - "el": "κουάκεροι", - "en": "quakers", - "es": "sociedad religiosa de los amigos", - "et": "kveekerid", - "fi": "kveekarit", - "fr": "société religieuse des amis", - "he": "קווייקרים", - "hr": "kvekeri", - "hu": "kvékerek", - "id": "kaum quaker", - "is": "kvekarar", - "it": "quaccherismo", - "ja": "クエーカー", - "ko": "퀘이커", - "lv": "kvēkerisms", - "nb": "vennenes samfunn", - "nl": "genootschap der vrienden", - "pl": "religijne towarzystwo przyjaciół", - "pt": "quaker", - "ro": "quakeri", - "ru": "квакеры", - "sk": "kvakeri", - "sl": "kvekerji", - "sr": "квекери", - "sv": "kväkare", - "th": "เควกเกอร์", - "tr": "religious society of friends", - "uk": "квакерство", - "vi": "giáo hữu hội", - "zh": "貴格會", - "zh-cn": "贵格会" - }, - "reconstructionist": { - "ca": "judaisme reconstruccionista", - "cs": "rekonstruktivní judaismus", - "da": "rekonstruktionistisk jødedom", - "de": "rekonstruktionismus", - "el": "αναδομητικός ιουδαϊσμός", - "en": "reconstructionist judaism", - "es": "judaísmo reconstruccionista", - "fi": "rekonstruktionistinen juutalaisuus", - "fr": "judaïsme reconstructionniste", - "he": "יהדות רקונסטרוקטיבית", - "it": "ebraismo ricostruzionista", - "ja": "再建派", - "lt": "rekonstruotasis judaizmas", - "nb": "rekonstruksjonistisk jødedom", - "nl": "reconstructionistisch jodendom", - "pl": "judaizm rekonstrukcjonistyczny", - "pt": "judaísmo reconstrucionista", - "ru": "реконструктивистский иудаизм", - "sv": "rekonstruktionistisk judendom", - "tr": "yeniden yapılanmacı yahudilik", - "zh": "猶太教重建派" - }, - "reformed": { - "ar": "كالفينية", - "bg": "калвинизъм", - "ca": "calvinisme", - "cs": "kalvinismus", - "da": "calvinisme", - "de": "calvinismus", - "el": "καλβινισμός", - "en": "calvinism", - "es": "calvinismo", - "et": "kalvinism", - "fi": "kalvinismi", - "fr": "calvinisme", - "he": "קלוויניזם", - "hr": "kalvinizam", - "hu": "kálvinizmus", - "id": "calvinisme", - "is": "kalvínismi", - "it": "calvinismo", - "ja": "カルヴァン主義", - "ko": "칼뱅주의", - "lt": "kalvinizmas", - "lv": "kalvinisms", - "nb": "kalvinisme", - "nl": "calvinisme", - "pl": "kalwinizm", - "pt": "calvinismo", - "ru": "кальвинизм", - "sk": "kalvinizmus", - "sl": "kalvinizem", - "sr": "калвинизам", - "sv": "reformert kristendom", - "th": "ลัทธิคาลวิน", - "tr": "kalvenizm", - "uk": "кальвіністська церква", - "vi": "thần học calvin", - "zh": "加爾文主義", - "zh-cn": "加尔文主义", - "zh-hk": "喀爾文主義", - "zh-tw": "喀爾文主義" - }, - "renewal": { - "en": "jewish renewal", - "es": "renovación judía", - "he": "התנועה להתחדשות יהודית", - "it": "rinnovamento giudaico", - "nb": "nyhasidisme", - "pl": "żydowska odnowa", - "sl": "obnovljeno judovstvo" - }, - "rinzai": { - "bg": "риндзай", - "ca": "escola rinzai", - "cs": "rinzai šú", - "de": "rinzai-shū", - "en": "rinzai school", - "es": "rinzai", - "et": "rinzai", - "fr": "rinzai", - "he": "רינזאי", - "hu": "rinzai iskola", - "id": "rinzai", - "it": "rinzai-shū", - "ja": "臨済宗", - "ko": "임제종", - "nb": "rinzai", - "nl": "rinzai", - "pl": "rinzai", - "pt": "rinzai", - "ro": "școala rinzai", - "ru": "риндзай", - "sk": "rinzai zen", - "sr": "rinzai", - "sv": "rinzaiskolan", - "th": "สำนักรินไซ", - "tr": "rinzai", - "uk": "секта ріндзай", - "vi": "rinzai", - "zh": "日本临济宗", - "zh-hk": "臨濟宗" - }, - "risshu": { - "en": "risshū", - "es": "escuela ritsu", - "fr": "lüzong", - "ja": "律宗", - "ko": "율종", - "pt": "ritsu", - "ru": "риссю", - "th": "นิกายวินัย", - "uk": "риссю", - "vi": "luật tông", - "zh": "律宗" - }, - "roman_catholic": { - "ar": "الكنيسة الرومانية الكاثوليكية", - "bg": "католическа църква", - "ca": "església catòlica", - "cs": "katolická církev", - "da": "romerskkatolske kirke", - "de": "römisch-katholische kirche", - "el": "ρωμαιοκαθολική εκκλησία", - "en": "catholic church", - "es": "iglesia católica", - "et": "katoliku kirik", - "fi": "katolinen kirkko", - "fr": "église catholique", - "he": "הכנסייה הקתולית", - "hi": "कैथोलिक गिरजाघर", - "hr": "katolička crkva", - "hu": "római katolikus egyház", - "id": "gereja katolik roma", - "is": "rómversk-kaþólska kirkjan", - "it": "chiesa cattolica", - "ja": "カトリック教会", - "ko": "로마 가톨릭교회", - "lt": "katalikų bažnyčia", - "lv": "romas katoļu baznīca", - "nb": "den romersk-katolske kirke", - "nl": "rooms-katholieke kerk", - "pl": "kościół katolicki", - "pt": "igreja católica", - "ro": "biserica catolică", - "ru": "католическая церковь", - "sk": "katolícka cirkev", - "sl": "rimskokatoliška cerkev", - "sr": "католичка црква", - "sv": "romersk-katolska kyrkan", - "th": "โรมันคาทอลิก", - "tr": "katolik kilisesi", - "uk": "католицька церква", - "vi": "giáo hội công giáo rôma", - "zh": "天主教會", - "zh-cn": "天主教会" - }, - "romanian_catholic": { - "bg": "румънска гръкокатолическа църква", - "ca": "església romanesa unida a roma", - "cs": "rumunská řeckokatolická církev", - "da": "rumænske græsk-katolske kirke", - "de": "rumänische griechisch-katholische kirche", - "en": "romanian greek catholic church", - "es": "iglesia greco-católica rumana", - "fr": "église grecque-catholique roumaine", - "he": "הכנסייה היוונית-קתולית הרומנית", - "hr": "rumunjska grkokatolička crkva", - "hu": "román görögkatolikus egyház", - "id": "gereja katolik rumania", - "it": "chiesa greco-cattolica rumena", - "ja": "ルーマニア東方カトリック教会", - "nb": "den rumenske gresk-katolske kirke", - "nl": "roemeense grieks-katholieke kerk", - "pl": "kościół rumuński zjednoczony z rzymem", - "pt": "igreja greco-católica romena unida com roma", - "ro": "biserica română unită cu roma", - "ru": "румынская грекокатолическая церковь", - "sk": "rumunská gréckokatolícka cirkev", - "sr": "румунска гркокатоличка црква", - "uk": "румунська греко-католицька церква", - "zh": "羅馬尼亞東儀天主教" - }, - "romanian_orthodox": { - "ar": "الكنيسة الرومانية الأرثوذكسية", - "bg": "румънска православна църква", - "ca": "església ortodoxa romanesa", - "cs": "rumunská pravoslavná církev", - "da": "rumænsk-ortodokse kirke", - "de": "rumänisch-orthodoxe kirche", - "el": "ρουμανική ορθόδοξη εκκλησία", - "en": "romanian orthodox church", - "es": "iglesia ortodoxa rumana", - "et": "rumeenia õigeusu kirik", - "fi": "romanian patriarkaatti", - "fr": "église orthodoxe roumaine", - "he": "הכנסייה האורתודוקסית הרומנית", - "hr": "rumunjska pravoslavna crkva", - "hu": "román ortodox egyház", - "id": "gereja ortodoks rumania", - "it": "chiesa ortodossa rumena", - "ja": "ルーマニア正教会", - "ko": "루마니아 정교회", - "nb": "den rumensk-ortodokse kirke", - "nl": "roemeens-orthodoxe kerk", - "pl": "rumuński kościół prawosławny", - "pt": "igreja ortodoxa romena", - "ro": "biserica ortodoxă română", - "ru": "румынская православная церковь", - "sk": "rumunská pravoslávna cirkev", - "sr": "румунска православна црква", - "sv": "rumänsk-ortodoxa kyrkan", - "tr": "romanya ortodoks kilisesi", - "uk": "румунська православна церква", - "zh": "罗马尼亚正教会" - }, - "russian_orthodox": { - "ar": "الكنيسة الروسية الأرثوذكسية", - "bg": "руска православна църква", - "ca": "església ortodoxa russa", - "cs": "ruská pravoslavná církev", - "da": "den russisk-ortodokse kirke", - "de": "russisch-orthodoxe kirche", - "el": "ρωσική ορθόδοξη εκκλησία", - "en": "russian orthodox church", - "es": "iglesia ortodoxa rusa", - "et": "vene õigeusu kirik", - "fi": "moskovan ja koko venäjän patriarkaatti", - "fr": "église orthodoxe russe", - "he": "הכנסייה האורתודוקסית הרוסית", - "hi": "रूसी पारम्परिक ईसाई", - "hr": "ruska pravoslavna crkva", - "hu": "orosz ortodox egyház", - "id": "gereja ortodoks rusia", - "is": "rússneska rétttrúnaðarkirkjan", - "it": "chiesa ortodossa russa", - "ja": "ロシア正教会", - "ko": "러시아 정교회", - "lt": "rusijos stačiatikių bažnyčia", - "lv": "krievijas pareizticīgo baznīca", - "nb": "den russisk-ortodokse kirke", - "nl": "russisch-orthodoxe kerk", - "pl": "rosyjski kościół prawosławny", - "pt": "igreja ortodoxa russa", - "ro": "biserica ortodoxă rusă", - "ru": "русская православная церковь", - "sk": "ruská pravoslávna cirkev", - "sl": "ruska pravoslavna cerkev", - "sr": "руска православна црква", - "sv": "rysk-ortodoxa kyrkan", - "th": "ศาสนจักรออร์โธดอกซ์รัสเซีย", - "tr": "rus ortodoks kilisesi", - "uk": "російська православна церква", - "vi": "chính thống giáo nga", - "zh": "俄罗斯正教会" - }, - "salvation_army": { - "ar": "جيش الخلاص", - "bg": "армия на спасението", - "ca": "exèrcit de salvació", - "cs": "armáda spásy", - "da": "frelsens hær", - "de": "heilsarmee", - "el": "στρατός της σωτηρίας", - "en": "the salvation army", - "es": "ejército de salvación", - "et": "päästearmee", - "fi": "pelastusarmeija", - "fr": "armée du salut", - "he": "צבא הישע", - "hi": "मुक्ति सेना", - "hr": "vojska spasa", - "hu": "üdvhadsereg", - "id": "bala keselamatan", - "is": "hjálpræðisherinn", - "it": "esercito della salvezza", - "ja": "救世軍", - "ko": "구세군", - "nb": "frelsesarmeen", - "nl": "leger des heils", - "pl": "armia zbawienia", - "pt": "exército de salvação", - "ro": "armata salvării", - "ru": "армия спасения", - "sk": "armáda spásy", - "sl": "vojska odrešitve", - "sr": "војска спаса", - "sv": "frälsningsarmén", - "tr": "selâmet ordusu", - "uk": "армія спасіння", - "vi": "cứu thế quân", - "zh": "救世軍", - "zh-cn": "救世军" - }, - "samaritan": { - "ar": "سامريون", - "bg": "самаряни", - "ca": "samaritans", - "cs": "samaritáni", - "da": "samaritaner", - "de": "samaritaner", - "el": "σαμαρείτες", - "en": "samaritan", - "es": "samaritanos", - "fi": "samarialaiset", - "fr": "samaritains", - "he": "שומרונים", - "hr": "samaritanci", - "hu": "szamaritánusok", - "id": "orang samaria", - "it": "samaritani", - "ja": "サマリア人", - "ko": "사마리아인", - "lt": "samariečiai", - "lv": "samarieši", - "nb": "samaritaner", - "nl": "samaritanen", - "pl": "samarytanie", - "pt": "samaritanos", - "ro": "samariteni", - "ru": "самаритяне", - "sl": "samarijan", - "sr": "самарићани", - "sv": "samaritaner", - "th": "สะมาริตัน", - "tr": "samiriler", - "uk": "самаритяни", - "vi": "người samari", - "zh": "撒馬利亞人", - "zh-cn": "撒马利亚人" - }, - "santo_daime": { - "cs": "santo daimé", - "en": "santo daime", - "he": "סנטו דיימי", - "ja": "サント・ダイミ" - }, - "scottish_episcopal": { - "cs": "skotská episkopální církev", - "en": "scottish episcopal church", - "es": "iglesia episcopal escocesa", - "fi": "skotlannin episkopaalinen kirkko", - "fr": "église épiscopalienne écossaise", - "he": "הכנסייה האפיסקופלית הסקוטית", - "id": "gereja episkopal skotlandia", - "it": "chiesa episcopale scozzese", - "ja": "スコットランド聖公会", - "ko": "스코틀랜드 성공회", - "pl": "szkocki kościół episkopalny", - "pt": "igreja episcopal escocesa", - "ro": "biserica episcopală scoțiană", - "ru": "шотландская епископальная церковь", - "sv": "skotska episkopalkyrkan", - "uk": "шотландська єпископальна церква", - "vi": "giáo hội giám nhiệm scotland", - "zh": "蘇格蘭聖公會" - }, - "serbian_orthodox": { - "ar": "الكنيسة الصربية الأرثوذكسية", - "bg": "сръбска православна църква", - "ca": "església ortodoxa sèrbia", - "cs": "srbská pravoslavná církev", - "da": "den serbisk-ortodokse kirke", - "de": "serbisch-orthodoxe kirche", - "el": "σερβική ορθόδοξη εκκλησία", - "en": "serbian orthodox church", - "es": "iglesia ortodoxa serbia", - "et": "serbia õigeusu kirik", - "fi": "serbian ortodoksinen kirkko", - "fr": "église orthodoxe serbe", - "he": "הכנסייה האורתודוקסית הסרבית", - "hr": "srpska pravoslavna crkva", - "hu": "szerb ortodox egyház", - "id": "gereja ortodoks serbia", - "it": "chiesa ortodossa serba", - "ja": "セルビア正教会", - "ko": "세르비아 정교회", - "lt": "serbijos stačiatikių bažnyčia", - "nb": "den serbisk-ortodokse kirke", - "nl": "servisch-orthodoxe kerk", - "pl": "serbski kościół prawosławny", - "pt": "igreja ortodoxa sérvia", - "ro": "biserica ortodoxă sârbă", - "ru": "сербская православная церковь", - "sk": "srbská pravoslávna cirkev", - "sl": "srbska pravoslavna cerkev", - "sr": "српска православна црква", - "sv": "serbisk-ortodoxa kyrkan", - "th": "คริสตจักรออร์ทอดอกซ์เซอร์เบีย", - "tr": "sırp ortodoks kilisesi", - "uk": "сербська православна церква", - "zh": "塞爾維亞東正教會", - "zh-cn": "塞尔维亚东正教会" - }, - "seventh_day_adventist": { - "ar": "سبتيون", - "bg": "църква на адвентистите от седмия ден", - "ca": "església adventista del setè dia", - "cs": "adventisté sedmého dne", - "da": "syvende dags adventistkirken", - "de": "siebenten-tags-adventisten", - "el": "εκκλησία αντβεντιστών της εβδόμης ημέρας", - "en": "seventh-day adventist church", - "es": "iglesia adventista del séptimo día", - "et": "seitsmenda päeva adventistide kogudus", - "fi": "seitsemännen päivän adventismi", - "fr": "église adventiste du septième jour", - "he": "הכנסייה האדוונטיסטית של היום השביעי", - "hr": "adventisti sedmog dana", - "hu": "hetednapi adventista egyház", - "id": "gereja masehi advent hari ketujuh", - "is": "kirkja sjöunda dags aðventista", - "it": "chiesa cristiana avventista del settimo giorno", - "ja": "セブンスデー・アドベンチスト教会", - "ko": "제7일 안식일 예수 재림교회", - "lt": "septintosios dienos adventistai", - "lv": "septītās dienas adventisti", - "nb": "syvendedagsadventister", - "nl": "zevendedagsadventisten", - "pl": "kościół adwentystów dnia siódmego", - "pt": "igreja adventista do sétimo dia", - "ro": "biserica adventistă de ziua a șaptea", - "ru": "церковь адвентистов седьмого дня", - "sk": "adventisti siedmeho dňa", - "sl": "krščanska adventistična cerkev", - "sr": "хришћанска адвентистичка црква", - "sv": "sjundedagsadventisterna", - "th": "เซเวนต์เดย์แอดเวนทิสต์", - "tr": "yedinci gün adventist kilisesi", - "uk": "церква адвентистів сьомого дня", - "vi": "giáo hội cơ đốc phục lâm", - "zh": "基督復臨安息日會", - "zh-cn": "基督复临安息日会" - }, - "shaivism": { - "ar": "شيفية", - "bg": "шиваизъм", - "ca": "xivaisme", - "cs": "šivaismus", - "de": "shivaismus", - "el": "σαϊβισμός", - "en": "shaivism", - "es": "shivaísmo", - "et": "šivaism", - "fi": "shaivismi", - "fr": "shivaïsme", - "he": "שיוויזם", - "hi": "शैव", - "hu": "saivizmus", - "id": "saiwa", - "it": "shivaismo", - "ja": "シヴァ派", - "ko": "시바파", - "lt": "šaivizmas", - "lv": "šivaisms", - "nb": "shaivisme", - "nl": "shaivisme", - "pl": "śiwaizm", - "pt": "xivaísmo", - "ro": "șivaism", - "ru": "шиваизм", - "sk": "šivaizmus", - "sl": "šivaizem", - "sr": "šivizam", - "th": "ลัทธิไศวะ", - "tr": "şaivizm", - "uk": "шайвізм", - "zh": "濕婆教", - "zh-cn": "湿婆教" - }, - "shaktism": { - "ar": "شاكتيزم", - "ca": "xactisme", - "cs": "šaktismus", - "de": "shaktismus", - "el": "σακτισμός", - "en": "shaktism", - "es": "shaktismo", - "et": "šaktism", - "fi": "shaktismi", - "fr": "shaktisme", - "he": "שאקטיזם", - "hi": "शाक्त", - "hr": "šaktizam", - "hu": "saktizmus", - "id": "sakta", - "it": "shaktismo", - "ja": "シャクティ派", - "ko": "샥티파", - "lt": "šaktizmas", - "nb": "shaktisme", - "nl": "shaktisme", - "pl": "śaktyzm", - "pt": "shaktismo", - "ru": "шактизм", - "sk": "šaktizmus", - "sr": "šaktizam", - "th": "ลัทธิศักติ", - "tr": "şaktizm", - "uk": "шактизм", - "zh": "性力派" - }, - "shia": { - "ar": "الشيعة", - "bg": "шиитски ислям", - "ca": "xiïsme", - "cs": "ší'itský islám", - "da": "shia-islam", - "de": "schia", - "el": "σιιτισμός", - "en": "shia islam", - "es": "chiismo", - "et": "šiiidid", - "fi": "šiialaisuus", - "fr": "chiisme", - "he": "אסלאם שיעי", - "hi": "शिया इस्लाम", - "hr": "šijitizam", - "hu": "síita iszlám", - "id": "syiah", - "is": "sjía", - "it": "sciismo", - "ja": "シーア派", - "ko": "시아파 이슬람교", - "lt": "šiizmas", - "lv": "šiītu islāms", - "nb": "sjiaislam", - "nl": "sjiisme", - "pl": "szyizm", - "pt": "xiismo", - "ro": "șiism", - "ru": "шиизм", - "sk": "šiitizmus", - "sl": "šiizem", - "sr": "шиизам", - "sv": "shia", - "th": "ชีอะฮ์", - "tr": "şia", - "uk": "шиїти", - "vi": "hồi giáo shia", - "zh": "什叶派" - }, - "shingon_shu": { - "bg": "шингон", - "ca": "shingon", - "cs": "šingon", - "da": "shingon skolen", - "de": "shingon-shū", - "en": "shingon buddhism", - "es": "budismo shingon", - "et": "shingon", - "fi": "shingon", - "fr": "shingon", - "he": "שינגון", - "hu": "singon buddhizmus", - "id": "buddhisme shingon", - "it": "buddhismo shingon", - "ja": "真言宗", - "ko": "진언종", - "nb": "shingon-shū", - "nl": "shingon", - "pl": "shingon", - "pt": "shingon", - "ro": "shingon", - "ru": "сингон", - "sr": "šingon", - "sv": "shingon", - "th": "ชิงงน", - "tr": "shingon budizmi", - "uk": "секта сінґон", - "vi": "chân ngôn tông", - "zh": "真言宗" - }, - "slavic": { - "ar": "أساطير سلافية", - "bg": "славянска религия", - "ca": "mitologia eslava", - "cs": "slovanská mytologie", - "da": "slavisk mytologi", - "de": "slawische mythologie", - "el": "σλαβική μυθολογία", - "en": "slavic mythology", - "es": "mitología eslava", - "fi": "slaavilainen mytologia", - "fr": "mythologie slave", - "he": "מיתולוגיה סלאבית", - "hr": "slavenska mitologija", - "hu": "szláv mitológia", - "it": "mitologia slava", - "ja": "スラヴ神話", - "ko": "슬라브 신화", - "lt": "slavų mitologija", - "lv": "slāvu mitoloģija", - "nb": "slavisk mytologi", - "nl": "slavische mythologie", - "pl": "mitologia słowian", - "pt": "mitologia eslava", - "ro": "mitologie slavă", - "ru": "славянская мифология", - "sk": "slovanská mytológia", - "sl": "slovanska mitologija", - "sr": "словенска митологија", - "sv": "slavisk mytologi", - "tr": "slav mitolojisi", - "uk": "слов'янська міфологія", - "zh": "斯拉夫神話", - "zh-cn": "斯拉夫神话" - }, - "smartism": { - "ar": "تقليد السمارتا", - "ca": "smarta", - "en": "smartha tradition", - "es": "smarta", - "fr": "tradition smarta", - "hi": "स्मार्त सूत्र", - "id": "smarta", - "it": "smarta", - "ja": "スマルタ派", - "ko": "스마르타파", - "lt": "smartizmas", - "nb": "smartisme", - "nl": "smartisme", - "pl": "smartyzm", - "pt": "smarta", - "ru": "смартизм", - "sv": "smartism", - "uk": "смартизм", - "zh": "师摩多派" - }, - "soto": { - "bg": "сото", - "ca": "soto zen", - "cs": "sótó", - "de": "sōtō-shū", - "el": "σότο ζεν", - "en": "sōtō", - "hu": "szótó", - "id": "soto", - "it": "sōtō-shū", - "ja": "曹洞宗", - "ko": "일본의 조동종", - "nl": "soto", - "pt": "soto shu", - "pt-br": "sōtō-shū", - "ru": "сото-сю", - "sk": "sótó zen", - "sr": "soto", - "uk": "секта сото", - "vi": "tào động tông", - "zh": "日本曹洞宗", - "zh-hk": "曹洞宗" - }, - "spiritist": { - "ar": "روحانية", - "bg": "спиритизъм", - "ca": "espiritisme", - "cs": "spiritismus", - "da": "spiritisme", - "de": "spiritismus", - "el": "πνευματισμός", - "en": "spiritism", - "es": "espiritismo", - "fi": "spiritismi", - "fr": "spiritisme", - "hr": "spiritizam", - "hu": "spiritizmus", - "id": "spiritisme", - "it": "spiritismo", - "ja": "スピリティズム", - "ko": "정신주의", - "nb": "spiritisme", - "nl": "spiritisme", - "pl": "spirytyzm", - "pt": "espiritismo", - "ru": "спиритизм", - "sk": "špiritizmus", - "tr": "spiritizm", - "uk": "cпіритизм", - "vi": "thông linh học", - "zh": "通灵术", - "zh-hk": "通靈術", - "zh-tw": "通靈術" - }, - "sufi": { - "ar": "صوفية", - "bg": "суфизъм", - "ca": "sufisme", - "cs": "súfismus", - "da": "sufisme", - "de": "sufismus", - "el": "σουφισμός", - "en": "sufism", - "es": "sufismo", - "fi": "suufilaisuus", - "fr": "soufisme", - "he": "סופיות", - "hi": "सूफ़ीवाद", - "hr": "sufizam", - "hu": "szúfizmus", - "id": "sufisme", - "is": "súfismi", - "it": "sufismo", - "ja": "スーフィズム", - "ko": "수피즘", - "lt": "sufizmas", - "lv": "sūfisms", - "nb": "sufisme", - "nl": "soefisme", - "pl": "sufizm", - "pt": "sufismo", - "ru": "суфизм", - "sk": "sufizmus", - "sl": "sufizem", - "sr": "суфизам", - "th": "ลัทธิศูฟี", - "tr": "tasavvuf", - "uk": "суфізм", - "zh": "蘇非主義" - }, - "sunni": { - "ar": "أهل السنة والجماعة", - "bg": "сунитски ислям", - "ca": "sunnisme", - "cs": "sunnitský islám", - "da": "sunni-islam", - "de": "sunniten", - "el": "σουνιτισμός", - "en": "sunni islam", - "es": "sunismo", - "et": "sunniidid", - "fi": "sunnalaisuus", - "fr": "sunnisme", - "he": "אסלאם סוני", - "hi": "सुन्नी इस्लाम", - "hr": "sunizam", - "hu": "szunnita iszlám", - "id": "suni", - "is": "súnní", - "it": "sunnismo", - "ja": "スンナ派", - "ko": "수니파 이슬람교", - "lt": "sunizmas", - "lv": "sunnītu islāms", - "nb": "sunniislam", - "nl": "soennisme", - "pl": "sunnizm", - "pt": "sunismo", - "ro": "islamul sunit", - "ru": "суннизм", - "sk": "sunnitský islam", - "sl": "sunitizem", - "sr": "сунизам", - "sv": "sunniislam", - "th": "ซุนนี", - "tr": "sünni i̇slam", - "uk": "сунізм", - "vi": "hồi giáo sunni", - "zh": "遜尼派", - "zh-cn": "逊尼派" - }, - "svetambara": { - "de": "shvetambaras", - "en": "śvētāmbara", - "en-ca": "svetambara", - "en-gb": "svetambara", - "es": "svetambara", - "fr": "svetambara", - "hi": "श्वेताम्बर", - "it": "svetambara", - "ja": "シュヴェーターンバラ派", - "nb": "svetambara", - "nl": "shvetambar", - "pl": "śwetambarowie", - "pt": "svetambara", - "ru": "шветамбары", - "sk": "švetámbara", - "sv": "svetambara", - "th": "เศวตามพร", - "tr": "shvetambara", - "uk": "светамбари", - "zh": "白衣派" - }, - "syro-malabar_catholic": { - "ar": "كنيسة السريان الملبار الكاثوليك", - "ca": "església catòlica siro-malabar", - "cs": "syrsko-malabarská katolická církev", - "de": "syro-malabarische kirche", - "en": "syro-malabar church", - "es": "iglesia católica siro-malabar", - "fr": "église catholique syro-malabare", - "hr": "siro-malabarska katolička crkva", - "hu": "szír-malabár katolikus egyház", - "id": "gereja katolik suriah-malabar", - "it": "chiesa cattolica siro-malabarese", - "ja": "シリア・マラバル典礼カトリック教会", - "nb": "den syro-malabariske kirke", - "nl": "syro-malabar-katholieke kerk", - "pl": "syromalabarski kościół katolicki", - "pt": "igreja católica siro-malabar", - "ru": "сиро-малабарская католическая церковь", - "sk": "sýrsko-malabarská katolícka cirkev", - "sr": "сиромалабарска католичка црква", - "sv": "malabariska kyrkan", - "tr": "süryani malabar katolik kilisesi", - "uk": "сиро-малабарська католицька церква", - "zh": "敘利亞-瑪拉巴禮天主教會" - }, - "tiantai": { - "ca": "budisme tiantai", - "cs": "škola tchien-tchaj", - "de": "tiantai zong", - "en": "tiantai", - "es": "escuela budista del tiantai", - "hu": "tientaj", - "it": "buddhismo tiāntái", - "ja": "天台宗", - "ko": "천태종", - "ru": "тяньтай", - "th": "เทียนไถ", - "vi": "thiên thai tông", - "zh": "天台宗" - }, - "tibetan": { - "ar": "بوذية تبتية", - "bg": "тибетски будизъм", - "ca": "budisme tibetà", - "cs": "tibetský buddhismus", - "da": "tibetansk buddhisme", - "de": "buddhismus in tibet", - "el": "λαμαϊσμός", - "en": "tibetan buddhism", - "es": "budismo tibetano", - "et": "tiibeti budism", - "fi": "tiibetinbuddhalaisuus", - "fr": "bouddhisme tibétain", - "he": "בודהיזם טיבטי", - "hi": "तिब्बती बौद्ध धर्म", - "hr": "tibetanski budizam", - "hu": "tibeti buddhizmus", - "id": "agama buddha di tibet", - "is": "tíbetskur búddismi", - "it": "buddhismo tibetano", - "ja": "チベット仏教", - "ko": "티베트 불교", - "lt": "lamaizmas", - "lv": "lamaisms", - "nb": "tibetansk buddhisme", - "nl": "tibetaans boeddhisme", - "pl": "buddyzm tybetański", - "pt": "budismo tibetano", - "ro": "budism tibetan", - "ru": "тибетский буддизм", - "sk": "tibetský budhizmus", - "sr": "тибетански будизам", - "sv": "tibetansk buddhism", - "th": "ศาสนาพุทธแบบทิเบต", - "tr": "tibet budizmi", - "uk": "тибетський буддизм", - "vi": "phật giáo tây tạng", - "zh": "藏傳佛教" - }, - "ukrainian_greek_catholic": { - "ar": "الكنيسة الأوكرانية الكاثوليكية", - "bg": "украинска гръкокатолическа църква", - "ca": "església grecocatòlica ucraïnesa", - "cs": "ukrajinská řeckokatolická církev", - "da": "den ukrainske græsk-katolske kirke", - "de": "ukrainische griechisch-katholische kirche", - "el": "ουκρανική ελληνοκαθολική εκκλησία", - "en": "ukrainian greek catholic church", - "es": "iglesia greco-católica ucraniana", - "et": "ukraina kreekakatoliku kirik", - "fi": "ukrainan kreikkalaiskatolinen kirkko", - "fr": "église grecque-catholique ukrainienne", - "he": "הכנסיה היוונית קתולית אוקראינית", - "hr": "ukrajinska grkokatolička crkva", - "hu": "ukrán görögkatolikus egyház", - "id": "gereja katolik-yunani ukraina", - "it": "chiesa greco-cattolica ucraina", - "ja": "ウクライナ東方カトリック教会", - "ko": "우크라이나 그리스 가톨릭교회", - "lt": "unitai", - "nb": "den ukrainske gresk-katolske kirke", - "nl": "oekraïense grieks-katholieke kerk", - "pl": "kościół katolicki obrządku bizantyjsko-ukraińskiego", - "pt": "igreja greco-católica ucraniana", - "ro": "biserica greco-catolică ucraineană", - "ru": "украинская грекокатолическая церковь", - "sk": "ukrajinská gréckokatolícka cirkev", - "sr": "украјинска гркокатоличка црква", - "sv": "ukrainska grekisk-katolska kyrkan", - "tr": "ukrayna rum katolik kilisesi", - "uk": "українська греко-католицька церква", - "vi": "giáo hội công giáo ukraina", - "zh": "乌克兰希腊礼天主教会", - "zh-hk": "烏克蘭希臘禮天主教會", - "zh-tw": "烏克蘭希臘禮天主教會" - }, - "ultra_orthodox": { - "ar": "يهودية حريدية", - "ca": "haredim", - "cs": "charedim", - "da": "haredisk jødedom", - "de": "ultraorthodoxes judentum", - "el": "υπερορθόδοξοι εβραίοι", - "en": "haredi judaism", - "es": "judaísmo ultraortodoxo", - "fi": "haredi", - "fr": "haredim", - "he": "יהדות חרדית", - "hr": "haredi", - "id": "yudaisme haredi", - "it": "charedì", - "ja": "超正統派", - "ko": "하레디", - "lt": "haredi judaizmas", - "nb": "haredisk jødedom", - "nl": "charedisch jodendom", - "pl": "judaizm ultraortodoksyjny", - "pt": "haredi", - "ro": "iudaism ultraortodox", - "ru": "харедим", - "sl": "haredi", - "sr": "хареди", - "tr": "haredi yahudilik", - "uk": "харедім", - "zh": "哈瑞迪猶太教" - }, - "united": { - "ar": "الكنيسة المتحدة لكندا", - "cs": "sjednocená církev kanady", - "en": "united church of canada", - "es": "iglesia unida de canadá", - "fi": "kanadan yhdistynyt kirkko", - "fr": "église unie du canada", - "hu": "kanadai egyesült egyház", - "it": "chiesa unita del canada", - "ja": "カナダ合同教会", - "ko": "캐나다연합교회", - "pl": "zjednoczony kościół kanady", - "pt": "igreja unida do canadá", - "ru": "объединённая церковь канады", - "uk": "об'єднана церква канади", - "zh": "加拿大聯合教會", - "zh-cn": "加拿大联合教会" - }, - "united_church_of_christ": { - "ar": "كنيسة المسيح المتحدة", - "ca": "església unida de crist", - "en": "united church of christ", - "es": "iglesia unida de cristo", - "fr": "église unie du christ", - "he": "הכנסייה המאוחדת של ישו", - "hu": "krisztus egyesült egyháza", - "it": "chiesa unita di cristo", - "ja": "キリスト連合教会", - "ko": "미국 연합 그리스도의 교회", - "pl": "zjednoczony kościół chrystusa", - "pt": "igreja unida de cristo", - "ru": "объединённая церковь христа", - "sl": "združena kristusova cerkev", - "sr": "уједињена црква христа", - "uk": "сполучена церква христа", - "zh": "联合基督教会" - }, - "united_free_church_of_scotland": { - "en": "united free church of scotland", - "fi": "skotlannin yhdistynyt vapaakirkko", - "pt": "igreja livre unida da escócia" - }, - "united_methodist": { - "bg": "обединена методистка църква", - "ca": "església metodista unida", - "cs": "evangelická církev metodistická", - "de": "evangelisch-methodistische kirche", - "el": "ηνωμένη μεθοδιστική εκκλησία", - "en": "united methodist church", - "es": "iglesia metodista unida", - "et": "ühinenud metodisti kirik", - "fi": "yhdistynyt metodistikirkko", - "fr": "église méthodiste unie", - "he": "הכנסייה המתודיסטית המאוחדת", - "hu": "egyesült metodista egyház", - "id": "gereja metodis", - "ja": "合同メソジスト教会", - "ko": "연합 감리 교회", - "pl": "zjednoczony kościół metodystyczny", - "pt": "igreja metodista", - "ro": "biserica metodistă unită", - "ru": "объединённая методистская церковь", - "sr": "уједињена методистичка црква", - "sv": "förenade metodistkyrkan", - "uk": "об'єднана методистська церква", - "vi": "giáo hội giám lý liên hiệp", - "zh": "聯合循道公會", - "zh-cn": "联合循道会" - }, - "united_reformed": { - "cs": "spojená reformovaná církev", - "en": "united reformed church", - "fi": "yhdistynyt reformoitu kirkko", - "he": "הכנסייה הרפורמית המאוחדת", - "ja": "合同改革教会", - "pt": "igreja reformada unida", - "ru": "объединённая реформатская церковь", - "zh": "聯合歸正教會" - }, - "uniting": { - "en": "uniting church in australia", - "fr": "église unifiée d'australie", - "ja": "オーストラリア連合教会", - "pl": "kościół zjednoczony w australii", - "pt": "igreja unida na austrália", - "zh": "澳大利亞聯合教會", - "zh-cn": "澳大利亚联合教会" - }, - "vaishnavism": { - "ar": "فايشنافية", - "bg": "вайшнавизъм", - "ca": "vixnuisme", - "cs": "višnuismus", - "de": "vishnuismus", - "el": "βαϊσναβισμός", - "en": "vaishnavism", - "es": "visnuismo", - "et": "višnuism", - "fi": "vaishnavismi", - "fr": "vaishnava", - "he": "וישנויזם", - "hi": "वैष्णव सम्प्रदाय", - "hu": "vaisnavizmus", - "id": "waisnawa", - "it": "visnuismo", - "ja": "ヴィシュヌ派", - "ko": "비슈누파", - "lt": "vaišnavizmas", - "nb": "vaishnavisme", - "nl": "vaishnavisme", - "pl": "wisznuizm", - "pt": "vixnuísmo", - "ru": "вишнуизм", - "sk": "višnuizmus", - "sr": "višnuizam", - "th": "ลัทธิไวษณพ", - "tr": "vaiśeṣika", - "uk": "вайшнавізм", - "zh": "毘濕奴派" - }, - "vajrayana": { - "ar": "فاجرايانا", - "bg": "ваджраяна", - "cs": "vadžrajána", - "en": "vajrayana", - "es": "vajrayāna", - "et": "vadžrajaana", - "fr": "bouddhisme vajrayāna", - "he": "וג'ריאנה", - "hi": "वज्रयान", - "hr": "vađrajana", - "hu": "vadzsrajána", - "id": "wajrayana", - "is": "vajrayāna", - "it": "buddhismo vajrayana", - "ja": "密教", - "ko": "밀교", - "lt": "vadžrajana", - "lv": "vadžrajāna", - "pl": "wadżrajana", - "ru": "ваджраяна", - "sk": "vadžrajána", - "sr": "вађрајана", - "th": "วัชรยาน", - "uk": "ваджраяна", - "vi": "kim cương thừa", - "zh": "密宗" - }, - "wicca": { - "ar": "ويكا", - "bg": "уика", - "en": "wicca", - "he": "ויקה", - "ja": "ウィッカ", - "ko": "위카", - "ru": "викка", - "sr": "вика", - "tr": "vika", - "uk": "вікка", - "zh": "威卡教" - }, - "won": { - "cs": "vonbulismus", - "de": "won-buddhismus", - "en": "won buddhism", - "es": "budismo won", - "fr": "bouddhisme won", - "hu": "von buddhizmus", - "ja": "円仏教", - "ko": "원불교", - "lt": "uonbulizmas", - "ru": "вон-буддизм", - "zh": "圆佛教", - "zh-hk": "圓佛教" - }, - "yogacara": { - "ar": "هوسو", - "ca": "hossō-shū", - "de": "schule der dharma-eigenschaften", - "en": "east asian yogācāra", - "en-ca": "hossō-shū", - "es": "yogacara de asia oriental", - "fr": "hossō-shū", - "hu": "kelet-ázsiai jógácsára", - "it": "buddhismo fǎxiāng", - "ja": "法相宗", - "ko": "법상종", - "nb": "faxiang zong", - "pl": "faxiang", - "ru": "хоссо", - "uk": "секта хоссо", - "vi": "pháp tướng tông", - "zh": "法相宗" - }, - "yuzu_nembutsu": { - "de": "yūzū nembutsu-shū", - "en": "yuzu nembutsu", - "fr": "yūzū nembutsu shū", - "ja": "融通念仏宗", - "nb": "yūzū nembutsu", - "pl": "yūzū nembutsu", - "ru": "юдзу-нэмбуцу" - }, - "zen": { - "ar": "زن", - "bg": "дзен", - "ca": "budisme zen", - "el": "ζεν", - "en": "zen", - "es": "budismo zen", - "et": "zen-budism", - "he": "זן בודהיזם", - "hi": "झेन", - "is": "sen", - "ja": "禅", - "ko": "선", - "lt": "dzenas", - "lv": "dzenbudisms", - "ru": "дзэн", - "sk": "zen-budhizmus", - "sl": "zen budizem", - "sr": "зен", - "th": "เซน", - "uk": "дзен", - "vi": "thiền tông", - "zh": "禅宗", - "zh-hk": "禪宗", - "zh-tw": "禪宗" - } - }, - "departures_board": { - "realtime": { - "ar": "نظام معلومات المسافرين الديناميكي", - "de": "dynamische fahrgastinformation", - "en": "dynamic passenger information", - "fr": "système d'information voyageurs", - "nl": "dynamisch reizigersinformatiesysteem" - } - }, - "designation": { - "area_of_outstanding_natural_beauty": { - "ar": "منطقة ذات جمال طبيعي أخاذ", - "ca": "àrea de bellesa natural excepcional", - "en": "area of outstanding natural beauty", - "es": "área de destacada belleza natural", - "he": "אזור יופי טבעי יוצא דופן", - "is": "svæði sérstakrar náttúrufegurðar", - "ja": "特別自然美観地域", - "ko": "자연절경지역", - "lt": "išskirtinio natūralaus grožio sritis", - "ru": "зона выдающейся природной красоты", - "th": "เขตธรรมชาติงดงามดีเด่น", - "zh": "美麗風光保留區" - }, - "civil_parish": { - "ca": "parròquia civil", - "cs": "civilní farnost", - "de": "parish", - "el": "ενορία", - "en": "civil parish", - "en-gb": "parish", - "es": "parroquia civil", - "fr": "paroisse civile", - "it": "parrocchia civile", - "ja": "行政教区", - "nb": "parish", - "nl": "parochie", - "pl": "parafia", - "pt": "paróquia", - "ro": "parohie (diviziune administrativă)", - "ru": "приход", - "sr": "цивилна парохија", - "sv": "parish", - "tr": "cemaat", - "uk": "парафія", - "zh": "堂区" - }, - "common": { - "ar": "أرض مشتركة", - "da": "fælled", - "de": "allmende", - "en": "common land", - "es": "bien comunal", - "fi": "yhteismaa", - "fr": "biens communaux", - "ja": "共有地", - "nb": "allmenning", - "nl": "gemene grond", - "pl": "wspólnota gruntowa", - "pt": "baldio", - "ro": "obște sătească", - "ru": "альменда", - "sv": "allmänning", - "uk": "альменда", - "zh": "公地" - }, - "community": { - "ca": "comunitat", - "de": "community in wales", - "en": "community", - "es": "comunidad", - "fr": "communauté", - "he": "קהילה", - "it": "comunità del galles", - "ja": "コミュニティ", - "pt": "comunidade", - "ro": "comunitate", - "ru": "община уэльса", - "tr": "topluluk", - "uk": "спільнота", - "zh": "社區" - }, - "metropolitan_district": { - "ar": "قضاء حضري", - "ca": "districte metropolità", - "cs": "anglické metropolitní distrikty", - "da": "metropolitan boroughs", - "en": "metropolitan borough", - "es": "borough metropolitano", - "et": "linnkrahvkonna linnaosa", - "fr": "district métropolitain", - "he": "רובע באנגליה", - "hr": "metropolitanski okruzi", - "id": "distrik metropolitan", - "it": "distretto metropolitano d'inghilterra", - "ja": "首都バラ", - "ko": "도시 자치구", - "pl": "dystrykt metropolitalny", - "pt": "distrito metropolitano", - "ro": "district metropolitan", - "ru": "метропольный боро в англии", - "sv": "storstadsdistrikt", - "tr": "metropolitan kent", - "uk": "метрополітенські райони англії", - "vi": "khu tự quản vùng đô thị", - "zh": "都市自治市" - }, - "non_metropolitan_county": { - "ca": "comtat no metropolità", - "cs": "anglické nemetropolitní hrabství", - "de": "nicht-metropolen-landkreis", - "el": "μη-μητροπολιτική κομητεία", - "en": "non-metropolitan county", - "es": "condado no metropolitano", - "et": "mittelinnkrahvkond", - "fi": "shire-kreivikunta", - "fr": "comté non métropolitain", - "he": "מחוז לא-מטרופוליטני", - "hr": "nemetropolitanske grofovije", - "hu": "anglia shire megyéi", - "it": "contea non metropolitana", - "ja": "シャイア・カウンティ", - "ko": "비도시주", - "pl": "hrabstwo niemetropolitalne", - "pt": "condado não-metropolitano", - "ro": "comitat nemetropolitan", - "ru": "неметропольное графство", - "sk": "nemetropolitné grófstvo", - "sv": "grevskap", - "th": "เทศมณฑลที่ไม่ใช่มหานคร", - "tr": "metropol olmayan şehir", - "uk": "неметропольне графство в англії", - "zh": "非都市郡" - }, - "non_metropolitan_district": { - "ar": "حي غير حضري", - "ca": "districte no metropolità", - "cs": "anglické nemetropolitní distrikty", - "el": "μη-μητροπολιτική περιφέρεια", - "en": "non-metropolitan district", - "es": "distrito no metropolitano", - "fr": "district non métropolitain", - "he": "נפה לא-מטרופוליטנית", - "hr": "nemetropolitanski okruzi", - "it": "distretto non metropolitano dell'inghilterra", - "ja": "非都市ディストリクト", - "ko": "비도시 자치구", - "pt": "distrito não-metropolitano", - "pt-br": "distrito não metropolitano", - "ro": "district nemetropolitan", - "ru": "неметропольный район", - "tr": "metropol olmayan bölge", - "uk": "неметропольний район", - "vi": "huyện không thuộc vùng đô thị", - "zh": "非都市區" - }, - "principal_area": { - "ca": "àrea principal", - "en": "principal area", - "fr": "zone principale", - "zh": "主要區域" - } - }, - "diet": { - "": { - "ca": "restaurant vegà", - "de": "veganes restaurant", - "en": "vegan restaurant", - "es": "restaurante vegano", - "it": "ristorante vegano", - "lv": "vegānu restorāns", - "nl": "veganistische eetgelegenheid", - "pt": "restaurante vegano", - "ru": "веганский ресторан" - } - }, - "diplomatic": { - "consulate": { - "ar": "قنصلية", - "bg": "консулство", - "ca": "consolat", - "cs": "konzulát", - "da": "konsulat", - "de": "konsulat", - "el": "προξενείο", - "en": "consulate", - "es": "consulado", - "et": "konsulaat", - "fi": "konsulaatti", - "fr": "consulat", - "he": "קונסוליה", - "hu": "konzulátus", - "it": "consolato", - "ja": "領事館", - "ko": "영사관", - "lv": "konsulāts", - "nb": "konsulat", - "nl": "consulaat", - "pl": "urząd konsularny", - "pt": "consulado", - "ro": "consulat", - "ru": "консульство", - "sl": "konzulat", - "sr": "конзулат", - "sv": "konsulat", - "tr": "konsolosluk", - "uk": "консульство", - "vi": "lãnh sự quán", - "zh": "领事馆", - "zh-hk": "領事館", - "zh-tw": "領事館" - }, - "consulate_general": { - "ar": "قنصلية عامة", - "bg": "генерално консулство", - "ca": "consolat general", - "cs": "generální konzulát", - "da": "generalkonsulat", - "de": "generalkonsulat", - "el": "γενικό προξενείο", - "en": "consulate general", - "es": "consulado general", - "fi": "pääkonsulaatti", - "fr": "consulat général", - "he": "קונסוליה כללית", - "hu": "főkonzulátus", - "id": "konsulat jenderal", - "ja": "総領事館", - "ko": "총영사관", - "nb": "generalkonsulat", - "nl": "consulaat-generaal", - "pl": "konsulat generalny", - "pt": "consulado-geral", - "ru": "генеральное консульство", - "sl": "generalni konzulat", - "sr": "генерални конзулат", - "sv": "generalkonsulat", - "th": "สถานกงสุลใหญ่", - "tr": "başkonsolosluk", - "vi": "tổng lãnh sự quán", - "zh": "总领事馆", - "zh-tw": "總領事館" - }, - "embassy": { - "ar": "سفارة", - "bg": "посолство", - "ca": "ambaixada", - "cs": "ambasáda", - "da": "ambassade", - "de": "botschaft", - "el": "πρεσβεία", - "en": "embassy", - "es": "embajada", - "et": "suursaatkond", - "fi": "suurlähetystö", - "fr": "ambassade", - "he": "שגרירות", - "hr": "veleposlanstvo", - "hu": "nagykövetség", - "id": "kedutaan besar", - "is": "sendiráð", - "it": "ambasciata", - "ja": "大使館", - "ko": "대사관", - "lt": "ambasada", - "lv": "vēstniecība", - "nb": "ambassade", - "nl": "ambassade", - "pl": "ambasada", - "pt": "embaixada", - "ro": "ambasadă", - "ru": "посольство", - "sk": "veľvyslanectvo", - "sl": "veleposlaništvo", - "sr": "амбасада", - "sv": "ambassad", - "th": "สถานเอกอัครราชทูต", - "tr": "büyükelçilik", - "uk": "посольство", - "vi": "đại sứ quán", - "zh": "大使館", - "zh-cn": "大使馆" - }, - "honorary_consulate": { - "ca": "consolat honorari", - "de": "honorarkonsulat", - "en": "honorary consulate", - "es": "consulado honorario", - "et": "aukonsulaat", - "fi": "kunniakonsulaatti", - "fr": "consulat honoraire", - "hu": "tiszteletbeli konzulátus", - "ko": "명예영사관", - "pt": "consulado honorário", - "ro": "consulat onorific", - "uk": "почесне консульство", - "zh": "名誉领事馆", - "zh-tw": "名譽領事館" - }, - "liaison": { - "en": "liaison office", - "es": "oficina de enlace", - "ja": "連絡事務所", - "pt": "gabinete de ligação", - "zh": "联络办事处", - "zh-tw": "聯絡辦事處" - }, - "permanent_mission": { - "cs": "stálé zastoupení", - "de": "ständige vertretung", - "en": "permanent mission", - "es": "misión permanente", - "fr": "représentation permanente", - "hu": "állandó képviselet", - "it": "rappresentanza permanente", - "ja": "政府代表部", - "ko": "상주 대표부", - "nb": "permanent representasjon", - "nl": "permanente missie", - "pl": "stałe przedstawicielstwo", - "pt": "missão permanente", - "sl": "stalno predstavništvo", - "sv": "ständigt sändebud", - "zh": "常駐代表處", - "zh-cn": "常驻代表处" - } - }, - "display": { - "sundial": { - "ar": "مزولة", - "bg": "слънчев часовник", - "ca": "rellotge de sol", - "cs": "sluneční hodiny", - "da": "solur", - "de": "sonnenuhr", - "el": "ηλιακό ρολόι", - "en": "sundial", - "es": "reloj de sol", - "et": "päikesekell", - "fi": "aurinkokello", - "fr": "cadran solaire", - "he": "שעון שמש", - "hi": "सौर घड़ी", - "hr": "sunčani sat", - "hu": "napóra", - "id": "jam matahari", - "is": "sólúr", - "it": "meridiana", - "ja": "日時計", - "ko": "해시계", - "lt": "saulės laikrodis", - "lv": "saules pulkstenis", - "nb": "solur", - "nl": "zonnewijzer", - "pl": "zegar słoneczny", - "pt": "relógio de sol", - "ro": "ceas solar", - "ru": "солнечные часы", - "sk": "slnečné hodiny", - "sl": "sončna ura", - "sr": "сунчани часовник", - "sv": "solur", - "th": "นาฬิกาแดด", - "tr": "güneş saati", - "uk": "сонячний годинник", - "vi": "đồng hồ mặt trời", - "zh": "日晷" - } - }, - "distillery": { - "whisky": { - "ca": "destil·leria de whisky", - "cs": "palírna whisky", - "da": "whiskydestilleri", - "de": "whiskybrennerei", - "en": "whisky distillery", - "es": "destilería de whisky", - "fi": "viskitislaamo", - "fr": "distillerie de whisky", - "he": "מזקקת ויסקי", - "it": "distilleria di whisky", - "ja": "ウイスキー蒸留所", - "nl": "whisky-destilleerderij", - "pt": "destilaria de whisky", - "ru": "вискодельня", - "sv": "whiskydestilleri" - } - }, - "disused": { - "": { - "ar": "محطة قطار سابقة", - "ca": "antiga estació de ferrocarril", - "cs": "zrušená železniční zastávka", - "da": "tidligere kraftværk", - "de": "ehemalige apotheke", - "el": "πρώην σιδηροδρομικός σταθμός", - "en": "former pharmacy", - "en-gb": "disused railway station", - "es": "apeadero antiguo", - "fi": "entinen varasto", - "fr": "ancienne pharmacie", - "he": "תחנת רכבת לשעבר", - "hu": "megszűnt vasúti megállóhely", - "it": "fermata ferroviaria dismessa", - "ja": "かつての鉄道駅", - "ko": "없어진 철도역", - "nb": "tidligere jernbanestasjon", - "nl": "voormalige apotheek", - "pl": "była stacja kolejowa", - "pt": "antiga estação ferroviária", - "ru": "бывший (заброшенный) остановочный пукт", - "sv": "nerlagd järnvägsstation", - "tr": "eski tren istasyonu", - "uk": "колишня залізнична станція", - "zh": "已停运车站" - }, - "halt": { - "cs": "zrušená železniční zastávka", - "de": "ehemaliger haltepunkt", - "en": "former railway stop", - "es": "apeadero antiguo", - "fr": "ancienne halte ferroviaire", - "hu": "megszűnt vasúti megállóhely", - "it": "fermata ferroviaria dismessa", - "nl": "voormalige spoorweghalte", - "ru": "бывший (заброшенный) остановочный пукт" - }, - "station": { - "ar": "محطة قطار سابقة", - "ca": "antiga estació de ferrocarril", - "cs": "zrušená železniční stanice", - "da": "nedlagt jernbanestation", - "de": "ehemaliger bahnhof", - "el": "πρώην σιδηροδρομικός σταθμός", - "en": "former railway station", - "en-gb": "disused railway station", - "es": "estación del ferrocarril antigua", - "fi": "entinen rautatieasema", - "fr": "ancienne gare ferroviaire", - "he": "תחנת רכבת לשעבר", - "hu": "megszűnt vasútállomás", - "it": "stazione ferroviaria dismessa", - "ja": "かつての鉄道駅", - "ko": "없어진 철도역", - "nb": "tidligere jernbanestasjon", - "nl": "voormalig spoorwegstation", - "pl": "była stacja kolejowa", - "pt": "antiga estação ferroviária", - "ru": "бывшая железнодорожная станция", - "sv": "nerlagd järnvägsstation", - "tr": "eski tren istasyonu", - "uk": "колишня залізнична станція", - "zh": "已停运车站" - }, - "yes": { - "ca": "casa desocupada", - "en": "vacant house", - "sv": "övergivet hus" - } - }, - "dock": { - "drydock": { - "ar": "حوض جاف", - "bg": "сух док", - "ca": "dic sec", - "cs": "suchý dok", - "da": "tørdok", - "de": "trockendock", - "en": "dry dock", - "en-ca": "drydock", - "es": "dique seco", - "et": "kuivdokk", - "fi": "kuivatelakka", - "fr": "cale sèche", - "he": "מבדוק יבש", - "hu": "szárazdokk", - "it": "bacino di carenaggio", - "ja": "乾ドック", - "ko": "건선거", - "lt": "sausasis dokas", - "nb": "tørrdokk", - "nl": "droogdok", - "pl": "suchy dok", - "pt": "dique seco", - "ro": "doc uscat", - "ru": "сухой док", - "sl": "suhi dok", - "sv": "torrdocka", - "tr": "havuz", - "uk": "сухий док", - "zh": "旱塢" - } - }, - "dog": { - "leashed": { - "da": "hunde skal være i snor", - "de": "hunde an der leine", - "en": "dogs on leash", - "fr": "autorisation des chiens tenus en laisse", - "nl": "honden aangelijnd", - "pt": "uso de coleira em cães obrigatório", - "ru": "собаку держать на поводке" - }, - "no": { - "da": "ingen hunde skilte", - "de": "hunde verboten", - "en": "no dogs signs", - "fr": "panneau chiens interdits", - "nl": "verboden voor honden", - "ru": "без собак", - "sv": "hundförbudsskylt", - "vi": "cấm mang chó" - }, - "yes": { - "de": "hunde erlaubt", - "en": "dogs allowed", - "nl": "honden toegestaan", - "vi": "cho phép mang chó" - } - }, - "drive_in": { - "yes": { - "ca": "autocinema", - "da": "drive-in-biograf", - "de": "autokino", - "en": "drive-in theater", - "es": "autocine", - "fi": "drive-in-teatteri", - "fr": "ciné-parc", - "he": "דרייב אין", - "id": "bioskop drive-in", - "ja": "ドライブインシアター", - "ko": "자동차 극장", - "nb": "drive-in-kino", - "nl": "drive-in bioscoop", - "pl": "kino samochodowe", - "pt": "cinema drive-in", - "ru": "автокинотеатр", - "sv": "drive-in-biograf", - "uk": "автокінотеатр", - "zh": "汽車戲院" - } - }, - "electricity": { - "solar": { - "ar": "قوة شمسية", - "ca": "electricitat solar", - "cs": "solární výkon", - "da": "solkraft", - "de": "solarstrom", - "en": "solar power", - "es": "potencia solar", - "et": "päikeseenergeetika", - "fr": "puissance solaire", - "hi": "सौर शक्ति", - "hu": "napenergia", - "id": "tenaga surya", - "it": "potenza solare", - "ja": "太陽エネルギー", - "ko": "태양광 발전", - "nb": "solkraft", - "nl": "zonnestroom", - "pl": "energia słoneczna", - "ro": "energie electrică solară", - "ru": "солнечная энергетика", - "sl": "sončna elektrarna", - "sr": "solarna energetika", - "sv": "solkraft", - "th": "พลังแสงอาทิตย์", - "uk": "сонячна енергетика", - "vi": "điện mặt trời", - "zh": "太陽能發電" - } - }, - "electrified": { - "4th_rail": { - "en": "fourth rail", - "fr": "quatrième rail", - "hu": "630 voltos egyenáram", - "id": "rel keempat", - "ja": "直流630v鉄道電化", - "ko": "630 v dc 철도 통전", - "ru": "630 в пост.", - "sv": "fjärde skena", - "zh": "第四軌供電" - }, - "contact_line": { - "ar": "أسلاك علوية", - "bg": "контактна мрежа", - "ca": "catenària", - "cs": "25 kv, 50 hz", - "da": "køreledning", - "de": "elektrifizierung mit 25 kv einphasenwechselspannung mit 50 hz", - "de-ch": "oberleitung", - "el": "αλυσοειδής γραμμή επαφής", - "en": "25 kv, 50 hz ac railway electrification", - "en-ca": "overhead line", - "en-gb": "overhead line", - "es": "electrivicación del ferocarril con 25 kv ca y 50 hz", - "et": "kontaktliin", - "fi": "ajojohdin", - "fr": "électrification ferroviaire 25 kv 50 hz", - "hi": "अतिरिक्त रेखा", - "hu": "25 kv 50 hz-es villamos vontatás", - "id": "listrik aliran atas", - "it": "linea aerea di contatto", - "ja": "交流25kv 50hz鉄道電化", - "ko": "가공 전차선", - "lv": "kontakttīkls", - "nb": "kontaktledning", - "nl": "bovenleiding", - "pl": "przewody trakcyjne", - "pt": "catenária", - "ru": "25 кв, 50 гц перем.", - "sk": "trolejové vedenie", - "sr": "контактна мрежа", - "sv": "25 kv, 50 hz växelspänning järnvägsmatning", - "th": "ระบบจ่ายไฟฟ้าเหนือหัว", - "tr": "25 kv, 50 hz aa demiryolu elektrifikasyonu", - "uk": "контактна мережа", - "zh": "25千伏50赫兹交流电", - "zh-cn": "架空接触网", - "zh-hk": "架空電纜", - "zh-tw": "2萬5千伏特60赫茲交流電" - }, - "ground-level_power_supply": { - "ca": "alimentació pel sòl", - "cs": "napájecí kolejnice uložená v zemi", - "de": "alimentation par le sol", - "en": "ground-level power supply", - "es": "alimentación por el suelo", - "fr": "alimentation par le sol", - "hu": "alsósínes villamos táplálás", - "it": "stream", - "ja": "地表集電方式", - "ko": "750 v dc 철도 통전", - "nl": "alimentation par le sol", - "pl": "elektryfikacja prądem stałym o napięciu 750 v", - "pt": "alimentação pelo solo", - "ro": "stream", - "ru": "750 в пост.", - "tr": "750 v da demiryolu elektrifikasyonu", - "uk": "постійний струм, 750 в", - "zh": "地面供电系统", - "zh-tw": "750伏直流電鐵路電氣化" - }, - "no": { - "de": "nicht elektrifiziert", - "en": "non‐electrified railway system", - "es": "no electrificado", - "fr": "pas d'électrification ferroviaire", - "he": "קו רכבת שאינו מחושמל", - "hu": "nem villamosított vasútvonal", - "ja": "非電化", - "nl": "niet-geëlektrificeerd spoorwegsysteem", - "ru": "неэлектрифицированная железная дорога", - "sv": "oelektrifierad järnväg", - "zh": "非電氣化" - }, - "rail": { - "ar": "السكة الثالثة", - "ca": "tercer carril", - "cs": "napájecí kolejnice", - "da": "strømskinne", - "de": "750 v =", - "en": "750 v dc railway electrification", - "es": "electrificación ferroviaria de 750 v", - "et": "toiterööbas", - "fi": "virtakisko", - "fr": "électrification ferroviaire 750 v continu", - "he": "פס שלישי (רכבת)", - "hu": "750 v egyenáram", - "id": "rel ketiga", - "it": "elettrificazione ferroviaria 750 v cc", - "ja": "直流750v鉄道電化", - "ko": "750 v dc 철도 통전", - "nb": "strømskinne", - "nl": "derde rail", - "pl": "elektryfikacja prądem stałym o napięciu 750 v", - "pt": "terceiro carril", - "pt-br": "terceiro trilho", - "ro": "a treia șină", - "ru": "750 в пост.", - "sk": "napájacia koľajnica", - "sv": "strömskena", - "th": "รางที่สาม", - "tr": "750 v da demiryolu elektrifikasyonu", - "uk": "постійний струм, 750 в", - "zh": "750伏直流電鐵路電氣化", - "zh-cn": "第三轨供电", - "zh-hk": "軌道供電" - } - }, - "elevator": { - "": { - "bg": "патерностер", - "ca": "ascensor paternoster", - "cs": "páternoster", - "de": "paternosteraufzug", - "en": "paternoster", - "es": "paternóster", - "fi": "paternosterhissi", - "hr": "kružeće dizalo", - "hu": "páternoszter", - "ja": "パーテルノステル", - "ko": "파터노스터", - "nb": "paternosterheis", - "pl": "dźwig okrężny", - "ru": "лифт непрерывного действия", - "sk": "paternoster (výťah)", - "sv": "paternoster-hiss", - "uk": "патерностер (ліфт)", - "zh": "帕特诺斯特" - } - }, - "embankment": { - "yes": { - "ca": "terraplè", - "cs": "násyp", - "de": "damm", - "en": "embankment", - "es": "terraplén", - "fr": "terre-plein", - "it": "rilevato", - "ja": "盛土", - "nl": "weglichaam", - "pl": "nasyp", - "ro": "rambleu", - "ru": "насыпь", - "sv": "bank", - "zh": "路堤" - } - }, - "embassy": { - "delegation": { - "en": "delegation", - "fi": "valtuuskunta", - "fr": "délégation", - "it": "delegazione" - }, - "high_commission": { - "ca": "alta comissió", - "de": "hohe kommission", - "el": "υπάτης αρμοστείας", - "en": "high commission", - "es": "alto comisionado", - "fr": "haut-commissariat", - "he": "נציבות עליונה", - "hi": "उच्चायोग", - "id": "komisariat tinggi", - "ja": "高等弁務官事務所", - "ko": "고등판무관 사무소", - "pt": "alto comissariado", - "sv": "högkommission", - "zh": "高級專員公署" - }, - "residence": { - "ca": "residència de l'ambaixador", - "de": "amtssitz eines botschafters", - "en": "ambassador's residence", - "es": "residencia del embajador", - "fr": "résidence d'ambassadeur", - "nl": "ambassadeurswoning" - } - }, - "emergency": { - "access_point": { - "cs": "bod záchrany", - "de": "rettungspunkt", - "en": "emergency access point" - }, - "ambulance_station": { - "ar": "محطة الإسعاف", - "de": "rettungswache", - "en": "ambulance station", - "es": "estación de ambulancias", - "fr": "station d'ambulance", - "pl": "stacja pogotowia ratunkowego", - "ru": "гараж скорой помощи" - }, - "assembly_point": { - "de": "sammelplatz", - "en": "emergency assembly point", - "ru": "место встречи", - "vi": "điểm tập trung khẩn cấp" - }, - "defibrillator": { - "ar": "مزيل الرجفان", - "ca": "desfibril·lador", - "cs": "defibrilátor", - "da": "hjertestarter", - "el": "απινιδωτής", - "en": "defibrillator", - "es": "desfibrilador", - "et": "defibrillaator", - "fi": "sydäniskuri", - "fr": "défibrillateur cardiaque", - "he": "דפיברילטור", - "hr": "defibrilator", - "hu": "defibrillátor", - "id": "defibrilator", - "it": "defibrillatore", - "ja": "除細動器", - "ko": "제세동기", - "lv": "automatizētais ārējais defibrilators", - "pl": "defibrylator", - "pt": "desfibrilador automático externo", - "ro": "defibrilator extern automat", - "ru": "дефибриллятор", - "sk": "defibrilátor", - "sl": "avtomatski eksterni defibrilator", - "sr": "дефибрилатор", - "sv": "hjärtstartare", - "th": "เครื่องกระตุกหัวใจไฟฟ้าชนิดอัตโนมัติ", - "tr": "defibrilator", - "uk": "дефібрилятор", - "zh": "除顫器", - "zh-cn": "自动体外除颤器" - }, - "disaster_help_point": { - "de": "anlaufstelle bei katastrophen", - "en": "disaster help point" - }, - "emergency_ward_entrance": { - "ar": "قسم الطوارئ", - "ca": "departament d'urgències", - "da": "skadestue", - "de": "notaufnahme", - "en": "emergency department", - "es": "departamento de emergencia", - "fi": "päivystyspoliklinikka", - "fr": "accueil et traitement des urgences", - "he": "חדר מיון", - "hu": "sürgősségi osztály", - "id": "unit gawat darurat", - "it": "pronto soccorso", - "ja": "救急救命室", - "ko": "응급실", - "lv": "neatliekamās medicīniskās palīdzības dienests", - "nb": "legevakt", - "nl": "spoedeisende hulp", - "pl": "szpitalny oddział ratunkowy", - "pt": "departamento de emergência", - "ro": "unitate de primiri urgențe", - "ru": "отделение неотложной помощи", - "sv": "akutmottagning", - "th": "แผนกฉุกเฉิน", - "tr": "acil servis", - "uk": "відділення екстреної допомоги", - "vi": "khoa cấp cứu", - "zh": "急症室", - "zh-cn": "急诊室", - "zh-tw": "急診室" - }, - "fire_extinguisher": { - "ar": "مطفأة حريق", - "bg": "пожарогасител", - "ca": "extintor", - "cs": "hasicí přístroj", - "da": "ildslukker", - "de": "feuerlöscher", - "el": "πυροσβεστήρας", - "en": "fire extinguisher", - "es": "extintor", - "fi": "palosammutin", - "fr": "extincteur", - "he": "מטפה", - "hi": "अग्निशमन यंत्र", - "hu": "tűzoltó készülék", - "id": "pemadam api", - "it": "estintore", - "ja": "消火器", - "ko": "소화기", - "lt": "gesintuvas", - "lv": "ugunsdzēšamais aparāts", - "nb": "brannslokningsapparat", - "nl": "brandblusser", - "pl": "gaśnica", - "pt": "extintor", - "ro": "stingător de incendiu", - "ru": "огнетушитель", - "sk": "hasiaci prístroj", - "sl": "gasilnik", - "sr": "апарат за гашење пожара", - "sv": "brandsläckare", - "th": "ถังดับเพลิง", - "tr": "yangın söndürücü", - "uk": "вогнегасник", - "vi": "bình chữa cháy", - "zh": "滅火器", - "zh-cn": "灭火器" - }, - "fire_flapper": { - "ca": "matafocs", - "da": "branddasker", - "de": "brandklatsche", - "en": "fire flapper", - "fi": "hosa", - "fr": "hosa", - "hu": "tűzcsapó", - "pl": "tłumica", - "sk": "požiarna tlmica", - "zh": "山火拍" - }, - "fire_hose": { - "ar": "خرطوم الحريق", - "ca": "mànega d'incendis", - "cs": "požární hadice", - "da": "brandslange", - "de": "feuerwehrschlauch", - "el": "πυροσβεστική σωλήνα", - "en": "fire hose", - "es": "manguera de incendios", - "fi": "paloletku", - "fr": "tuyau d'incendie", - "he": "זרנוק", - "it": "manichetta antincendio", - "ja": "消火ホース", - "nb": "brannslange", - "nl": "brandslang", - "pl": "wąż pożarniczy", - "ro": "furtun de refulare", - "ru": "пожарный рукав", - "sk": "hasičská zásahová hadica", - "sr": "хидрантско црево", - "sv": "brandslang", - "uk": "пожежний рукав", - "zh": "消防水龙" - }, - "fire_hydrant": { - "ar": "صنبور مياه حريق", - "bg": "пожарен кран", - "ca": "hidrant d'incendis", - "cs": "hydrant", - "da": "brandhane", - "de": "hydrant", - "el": "πυροσβεστικός κρουνός", - "en": "fire hydrant", - "es": "hidrante de incendio", - "fi": "paloposti", - "fr": "borne à incendie", - "he": "ברז כיבוי אש", - "hu": "tűzcsap", - "id": "hidran", - "it": "idrante", - "ja": "消火栓", - "ko": "소화전", - "lt": "gaisrinis hidrantas", - "lv": "hidrants", - "nb": "hydrant", - "nl": "brandkraan", - "pl": "hydrant", - "pt": "boca de incêndio", - "pt-br": "hidrante", - "ro": "hidrant de incendiu exterior", - "ru": "гидрант", - "sk": "hydrant", - "sr": "надземни хидрант", - "sv": "brandpost", - "th": "หัวดับเพลิง", - "tr": "yangın musluğu", - "uk": "гідрант", - "vi": "trụ cấp nước chữa cháy", - "zh": "消防栓" - }, - "first_aid_kit": { - "ar": "عدة إسعافات أولية", - "ca": "farmaciola", - "cs": "lékárnička", - "de": "verbandkasten", - "en": "first aid kit", - "es": "botiquín", - "fi": "ensiapulaukku", - "fr": "trousse de secours", - "he": "ערכת עזרה ראשונה", - "hi": "प्राथमिक चिकित्सा किट", - "it": "kit di pronto soccorso", - "ja": "救急箱", - "ko": "구급 상자", - "nl": "ehbo-koffer", - "pl": "apteczka", - "pt": "kit de primeiros socorros", - "ru": "аптечка", - "sl": "prva pomoč za policijo", - "sv": "första hjälpen-väska", - "th": "ชุดปฐมพยาบาล", - "tr": "i̇lk yardım kiti", - "uk": "аптечка", - "zh": "急救包" - }, - "life_ring": { - "ar": "طافية النجاة", - "bg": "спасителен пояс", - "ca": "salvavides", - "cs": "záchranný kruh", - "da": "redningskrans", - "de": "rettungsring", - "el": "σωσίβιο", - "en": "lifebuoy", - "es": "salvavidas", - "et": "päästerõngas", - "fi": "pelastusrengas", - "fr": "bouée de sauvetage", - "he": "גלגל הצלה", - "hu": "mentőöv", - "it": "salvagente anulare", - "ja": "救命浮き輪", - "ko": "구명부환", - "nb": "livbøye", - "nl": "reddingsboei", - "pl": "koło ratunkowe", - "ro": "colac de salvare", - "ru": "спасательный круг", - "sv": "livboj", - "tr": "can simidi", - "uk": "рятувальний круг", - "vi": "phao cứu sinh", - "zh": "救生圈" - }, - "lifeguard": { - "ar": "منقذ بحري", - "ca": "socorrista", - "cs": "plavčík", - "da": "livredder", - "de": "rettungsschwimmer", - "el": "ναυαγοσώστης", - "en": "lifeguard", - "es": "socorrista", - "fi": "uimavalvoja", - "fr": "nageur sauveteur", - "he": "מציל", - "hu": "vízimentő", - "id": "perenang penyelamat", - "it": "bagnino di salvataggio", - "ja": "ライフセービング", - "ko": "인명구조원", - "nb": "livredder", - "nl": "badmeester", - "pl": "ratownik wodny", - "pt": "salva-vidas", - "ro": "salvamar", - "ru": "спасатель на воде", - "sr": "спасилац", - "sv": "badvakt", - "tr": "cankurtaran", - "uk": "рятувальник на воді", - "zh": "救生員" - }, - "marine_refuge": { - "de": "rettungsbake", - "en": "refuge beacon" - }, - "mountain_rescue": { - "cs": "horská služba", - "de": "bergrettungsdienst", - "en": "mountain rescue", - "es": "rescate en montaña", - "fr": "secours en montagne", - "it": "soccorso alpino", - "ja": "山岳救助", - "pl": "ratownictwo górskie", - "ro": "salvare montană", - "ru": "горноспасательная служба", - "sk": "horská služba", - "sl": "gorsko reševanje", - "sv": "fjällräddningen", - "zh": "山區搜救" - }, - "phone": { - "cs": "sos hláska", - "da": "nødtelefon", - "de": "notrufsäule", - "en": "emergency telephone", - "fi": "hätäpuhelin", - "fr": "borne d’appel", - "ja": "非常電話", - "nb": "nødtelefon", - "nl": "praatpaal", - "pl": "telefon awaryjny", - "ru": "телефон экстренной связи", - "sv": "nödtelefon", - "uk": "телефон екстреного зв'язку", - "zh-tw": "緊急求助電話" - }, - "rescue_box": { - "de": "selbsthilfebox", - "en": "stretcher box" - }, - "ses_station": { - "ar": "حماية مدنية", - "bg": "гражданска отбрана", - "ca": "protecció civil", - "cs": "civilní obrana", - "da": "civilforsvar", - "de": "bevölkerungsschutz", - "el": "πολιτική προστασία", - "en": "civil protection", - "es": "protección civil", - "et": "tsiviilkaitse", - "fi": "väestönsuojelu", - "fr": "protection civile", - "he": "הגנה אזרחית", - "hu": "polgári védelem", - "id": "pertahanan nonmiliter", - "it": "protezione civile", - "ja": "シビルプロテクション", - "ko": "민방위", - "lt": "civilinė sauga", - "nb": "sivilforsvar", - "nl": "burgerbescherming", - "pl": "ochrona ludności", - "pt": "defesa civil", - "ro": "protecție civilă", - "ru": "безопасность жизнедеятельности", - "sk": "civilná ochrana", - "sr": "цивилна заштита", - "sv": "civilt försvar", - "tr": "sivil savunma", - "uk": "безпека життєдіяльності", - "vi": "đối phó với thảm họa", - "zh": "民事防护", - "zh-tw": "民事防護" - }, - "shower": { - "ar": "ديفوتيرين", - "de": "notdusche", - "en": "emergency shower", - "es": "ducha de emergencia", - "fr": "douche fixe de premiers secours", - "nl": "nooddouche", - "zh": "緊急沖淋裝置" - }, - "siren": { - "ar": "صفارة إنذار", - "ca": "sirena", - "cs": "siréna", - "da": "sirene", - "de": "sirene", - "el": "σειρήνα", - "en": "siren", - "es": "sirena", - "et": "sireen", - "fi": "sireeni", - "fr": "sirène", - "he": "אזעקה", - "id": "sirene", - "it": "sirena", - "ja": "サイレン", - "ko": "사이렌", - "lt": "sirena", - "nb": "sirene", - "nl": "sirene", - "pl": "syrena", - "pt": "sirene", - "ro": "sirenă", - "ru": "газоструйный излучатель", - "sv": "ljudsiren", - "uk": "газоструменевий випромінювач", - "vi": "còi báo động", - "zh": "警笛" - }, - "water_tank": { - "ar": "خزان مياه", - "ca": "dipòsit d'aigua", - "cs": "vodojem", - "da": "vandtank", - "de": "wassertank", - "en": "water tank", - "es": "tanque de agua", - "fi": "vesisäiliö", - "fr": "réservoir d'eau", - "he": "מכל מים", - "hr": "vodosprema", - "hu": "hidroglóbusz", - "id": "tangki air", - "it": "serbatoio", - "ja": "貯水槽", - "ko": "저수조", - "nl": "watertank", - "pl": "zbiornik na wodę", - "pt": "caixa-d'água", - "ru": "ёмкость для воды", - "sk": "vodojem", - "tr": "su tankı", - "uk": "ємність для води", - "vi": "bồn nước", - "zh": "水缸" - } - }, - "estuary": { - "yes": { - "ar": "خور", - "bg": "естуар", - "ca": "estuari", - "cs": "estuár", - "da": "æstuarium", - "de": "ästuar", - "el": "εκβολή", - "en": "estuary", - "es": "estuario", - "et": "estuaar", - "fi": "estuaari", - "fr": "estuaire", - "he": "שפך נהר", - "hi": "ज्वारनदमुखी डेल्टा", - "hr": "estuarij", - "hu": "tölcsértorkolat", - "id": "estuaria", - "is": "árós", - "it": "estuario", - "ja": "三角江", - "ko": "어귀", - "lt": "estuarija", - "lv": "grīva", - "nb": "estuar", - "nl": "estuarium", - "pl": "estuarium", - "pt": "estuário", - "ro": "estuar", - "ru": "эстуарий", - "sk": "estuár", - "sl": "estuarij", - "sr": "естуар", - "sv": "estuarium", - "th": "ชะวากทะเล", - "tr": "haliç (coğrafya)", - "uk": "естуарій", - "vi": "cửa sông", - "zh": "河口湾" - } - }, - "expressway": { - "yes": { - "cs": "silnice s omezeným přístupem", - "de": "autostraße", - "de-ch": "autostrasse", - "en": "limited-access road", - "es": "vía expresa", - "fr": "route pour automobiles", - "hr": "brza cesta", - "ja": "自動車専用道路", - "ko": "자동차 전용 도로", - "nl": "autoweg", - "ro": "autostradă cu acces limitat", - "ru": "дорога с ограниченным доступом", - "sr": "брзи пут", - "zh": "封閉式道路" - } - }, - "faculty": { - "medicine": { - "ar": "كلية طب", - "ca": "escola de medicina", - "cs": "lékařská škola", - "da": "medicinsk fakultet", - "de": "medizinische fakultät", - "el": "ιατρική σχολή", - "en": "medical school", - "es": "escuela de medicina", - "fi": "lääketieteellinen tiedekunta", - "fr": "école de médecine", - "he": "בית ספר לרפואה", - "hu": "orvosegyetem", - "id": "sekolah kedokteran", - "it": "scuola di medicina", - "ja": "医学校", - "ko": "의과대학", - "nb": "medisinskole", - "pl": "uczelnia medyczna", - "pt": "escola médica", - "ro": "facultate de medicină", - "ru": "медицинское учебное заведение", - "sk": "lekárska fakulta", - "sl": "medicinska fakulteta", - "sr": "медицински факултет", - "sv": "medicinsk fakultet", - "th": "คณะแพทยศาสตร์", - "tr": "tıp fakültesi", - "uk": "медичний коледж", - "zh": "醫學院", - "zh-cn": "医学院" - }, - "nursing": { - "ar": "مدرسة التمريض", - "ca": "escola d'infermeria", - "cs": "zdravotnická škola", - "de": "krankenpflegeschule", - "el": "νοσηλευτική σχολή", - "en": "nursing school", - "es": "escuela de enfermería", - "fi": "sairaanhoito-oppilaitos", - "fr": "école de soins infirmiers", - "he": "בית ספר לסיעוד", - "ja": "看護学校", - "ko": "간호전문학교", - "pt": "escola de enfermagem", - "sv": "sjukvårdsläroanstalt", - "zh": "看護專門學校" - } - }, - "fast_food": { - "cafeteria": { - "ar": "كافيتيريا", - "bg": "столова", - "ca": "cantina", - "cs": "kafeteria", - "de": "kantine", - "en": "cafeteria", - "es": "cafetería", - "et": "söökla", - "fi": "kafeteria", - "fr": "cafétéria", - "he": "קפיטריה", - "id": "kantin", - "it": "mensa", - "ja": "カフェテリア", - "ko": "카페테리아", - "lt": "valgykla", - "nb": "kafeteria", - "pl": "stołówka", - "ro": "cantină", - "ru": "столовая", - "tr": "kafeterya", - "uk": "їдальня", - "vi": "căng tin", - "zh": "食堂" - } - }, - "fee": { - "no": { - "ar": "مجان", - "bg": "безплатно", - "ca": "gratuït", - "el": "δωρεάν", - "en": "gratis", - "et": "tasuta", - "fi": "ilmainen", - "fr": "gratuité", - "he": "חינם", - "hi": "मुफ़्त", - "hu": "ingyenes", - "it": "gratuità", - "ja": "無料", - "ko": "무료", - "lv": "bez maksas", - "pl": "darmowe", - "pt": "grátis", - "ru": "бесплатно", - "sl": "brezplačno", - "sr": "бесплатно", - "tr": "ücretsiz", - "uk": "безкоштовно", - "zh": "免费", - "zh-tw": "免費" - }, - "yes": { - "ca": "de pagament", - "da": "betalt", - "de": "kostenpflichtig", - "el": "επί πληρωμή", - "en": "paid", - "es": "de pago", - "et": "tasuline", - "fi": "maksullinen", - "fr": "payant", - "hu": "fizetős", - "id": "berbayar", - "it": "a pagamento", - "ja": "有料", - "ko": "유료", - "lv": "maksas", - "nb": "betalt", - "nl": "betaald", - "pl": "odpłatne", - "pt": "pago", - "ru": "платно", - "sl": "plačljivo", - "sr": "плаћено", - "tr": "ücretli", - "uk": "платно", - "zh": "需付費" - } - }, - "fire_mains": { - "dry": { - "ca": "columna seca", - "cs": "suchovod", - "de": "trockene steigleitung", - "en": "dry riser inlet", - "es": "columna seca", - "fr": "colonne sèche", - "it": "attacco di mandata per autopompa", - "nl": "aanvoerpunt van droge blusleiding", - "ro": "coloană uscată" - } - }, - "flag": { - "": { - "ar": "علم المدينة", - "bg": "държавно знаме", - "ca": "bandera municipal", - "cs": "státní vlajka", - "da": "kommuneflag", - "de": "kommerzielle flagge", - "el": "εθνική σημαία", - "en": "commercial flag", - "es": "bandera municipal", - "et": "riigilipp", - "fi": "kansallislippu", - "fr": "drapeau municipal", - "he": "דגל לאומי", - "hi": "राष्ट्रीय ध्वज", - "hr": "državna zastava", - "hu": "kereskedelmi zászló", - "id": "bendera nasional", - "is": "þjóðfáni", - "it": "bandiera municipale", - "ja": "商業旗", - "ko": "국기", - "lt": "nacionalinė vėliava", - "lv": "valsts karogs", - "nb": "kommuneflagg", - "nl": "gemeentevlag", - "pl": "flaga gminy/miasta", - "pt": "bandeira municipal", - "pt-br": "bandeira nacional", - "ro": "drapel național", - "ru": "военный флаг", - "sr": "национална застава", - "sv": "nationalflagga", - "th": "ธงประจำเมือง", - "tr": "belediye bayrağı", - "uk": "прапор населеного пункту", - "vi": "lá cờ thương mại", - "zh": "商业旗帜", - "zh-cn": "国旗", - "zh-hk": "國旗", - "zh-tw": "國旗" - } - }, - "floor": { - "": { - "da": "trægulve", - "de": "holzboden", - "el": "ξύλινο δάπεδο", - "en": "wood flooring", - "et": "puitpõrand", - "id": "lantai kayu", - "ja": "フローリング", - "nl": "houten vloer", - "pt": "piso de madeira", - "ro": "deck din lemn", - "sv": "trägolv", - "vi": "sàn gỗ", - "zh": "木製地板" - } - }, - "footway": { - "access_aisle": { - "en": "access aisle" - }, - "crossing": { - "ar": "عبور مشاة", - "bg": "пешеходна пътека", - "ca": "pas de vianants", - "cs": "přechod pro chodce", - "da": "fodgængerfelt", - "de": "fußgängerübergang", - "de-ch": "fussgängerüberweg", - "el": "διάβαση πεζών", - "en": "pedestrian crossing", - "es": "paso de peatones", - "et": "ülekäigurada", - "fi": "suojatie", - "fr": "passage pour piétons en france", - "he": "מעבר חצייה", - "hr": "pješački prijelaz", - "id": "penyeberangan pejalan kaki", - "it": "attraversamento pedonale", - "ja": "横断歩道", - "ko": "횡단보도", - "lv": "gājēju pāreja", - "nb": "fotgjengerovergang", - "nl": "oversteekplaats", - "pl": "przejście dla pieszych", - "pt": "passadeira de peões", - "pt-br": "faixa de pedestres", - "ru": "пешеходный переход", - "sk": "priechod pre chodcov", - "sv": "övergångsställe", - "tr": "yaya geçidi", - "uk": "пішохідний перехід", - "vi": "lối qua đường cho người đi bộ", - "zh": "行人穿越道" - }, - "sidewalk": { - "ar": "رصيف مشاة", - "bg": "тротоар", - "ca": "vorera", - "cs": "chodník", - "da": "fortov", - "de": "gehweg", - "de-ch": "trottoir", - "el": "πεζοδρόμιο", - "en": "sidewalk", - "en-gb": "pavement", - "es": "acera", - "et": "kõnnitee", - "fi": "jalkakäytävä", - "fr": "trottoir", - "he": "מדרכה", - "hi": "पैदलपथ", - "hr": "nogostup", - "hu": "járda", - "id": "trotoar", - "it": "marciapiede", - "ja": "歩道", - "ko": "보도", - "lv": "ietve", - "nb": "fortau", - "nl": "trottoir", - "pl": "chodnik", - "pt": "passeio", - "pt-br": "calçada", - "ro": "trotuar", - "ru": "тротуар", - "sl": "pločnik", - "sr": "тротоар", - "sv": "trottoar", - "tr": "yaya kaldırımı", - "uk": "тротуар", - "vi": "vỉa hè", - "zh": "人行道" - } - }, - "ford": { - "stepping_stones": { - "ca": "passera de pedres", - "de": "trittstein", - "en": "stepping stones", - "fr": "pierres de gué", - "he": "גשר אבני מדרך", - "is": "stiklusteinabrú", - "ja": "飛び石 (橋)", - "ko": "징검다리", - "nl": "stapstenen brug", - "pt": "poldra", - "sr": "газ", - "zh": "墊腳石橋" - }, - "yes": { - "ar": "مخاضة", - "bg": "брод", - "ca": "gual", - "cs": "brod", - "da": "vadested", - "de": "furt", - "en": "ford", - "en-ca": "ford (crossing)", - "es": "vado", - "et": "koole", - "fi": "kahluupaikka", - "fr": "gué", - "he": "מעברה", - "hu": "gázló", - "id": "arungan", - "is": "vað", - "it": "guado", - "ja": "洗い越し", - "ko": "여울", - "lt": "brasta", - "lv": "brasls", - "nb": "vadested", - "nl": "voorde", - "pl": "bród", - "pt": "vau", - "ro": "vad", - "ru": "брод", - "sk": "brod", - "sl": "brod", - "sr": "плићак", - "sv": "vadställe", - "uk": "брід", - "zh": "浅滩" - } - }, - "fortification": { - "martello_tower": { - "ca": "torre martello", - "de": "martello-turm", - "en": "martello tower", - "es": "martello", - "fi": "martello-torni", - "fr": "tour martello", - "he": "מגדלי מרטלו", - "hu": "martello-torony", - "it": "torre martello", - "ja": "マーテロー塔", - "lt": "martelas", - "nb": "martellotårn", - "nl": "martellotoren", - "ru": "мартелло", - "sl": "martellski stolp", - "zh": "馬泰羅塔" - } - }, - "fortification_type": { - "hill_fort": { - "ar": "حصن تلة", - "bg": "градище", - "ca": "castre (fortificació)", - "da": "voldsted", - "de-ch": "wallburg", - "en": "viereckschanze", - "en-ca": "hill fort", - "en-gb": "hillfort", - "es": "castro", - "et": "linnamägi", - "fi": "muinaislinna", - "fr": "enclos quadrangulaire", - "he": "מבצר גבעה", - "hi": "पर्वतदुर्ग", - "hr": "gradina", - "hu": "földvár", - "it": "fortezza di collina", - "ja": "ヒルフォート", - "lt": "piliakalnis", - "lv": "pilskalns", - "nb": "bygdeborg", - "nl": "walburcht", - "pl": "czworokątny szaniec", - "pt": "castro", - "ro": "deal fortificat", - "ru": "городище", - "sl": "gradišče", - "sr": "градина", - "sv": "fornborg", - "th": "ป้อมเนิน", - "tr": "iyi korunan kale", - "uk": "городище", - "zh": "丘陵要塞", - "zh-cn": "军事掩体" - } - }, - "fountain": { - "bubbler": { - "ar": "مبقبق", - "ca": "font d'aigua", - "cs": "pítko", - "de": "trinkbrunnen", - "el": "κρήνη πόσιμου νερού", - "en": "drinking fountain", - "es": "fuente de agua", - "fr": "point d'eau public", - "hu": "ivókút", - "id": "air mancur minum", - "it": "fontanella", - "ja": "水飲み場", - "ko": "음수대", - "nl": "drinkfontein", - "pl": "pitnik", - "pt": "fontanário", - "pt-br": "bebedouro", - "ru": "питьевой фонтан", - "sk": "fontánka", - "sr": "чесма", - "sv": "dricksfontän", - "zh": "公共飲水機" - }, - "nasone": { - "en": "nasone", - "fr": "nasoni", - "ja": "ナゾーネ" - }, - "nozzle": { - "ar": "منفث", - "ca": "tovera", - "cs": "tryska", - "da": "strålerør", - "de": "düse", - "el": "ρύγχος", - "en": "nozzle", - "es": "tobera", - "et": "düüs", - "fi": "suutin", - "fr": "tuyère", - "hr": "mlaznica", - "hu": "fúvóka", - "id": "nosel", - "it": "ugello di scarico", - "ja": "ノズル", - "ko": "노즐", - "nb": "dyse", - "nl": "spuitmond", - "pl": "dysza", - "pt": "tubeira", - "ru": "сопло", - "sk": "dýza", - "sl": "šoba", - "sv": "dysa", - "uk": "сопло", - "zh": "喷嘴" - }, - "sebilj": { - "en": "sebilj", - "fr": "fontaine sebilj", - "hr": "sebilj u sarajevu", - "ja": "セビリ", - "sr": "себиљ", - "th": "เซบิลย์", - "tr": "sebil", - "uk": "сабіль в сараєво", - "zh": "塞拉耶佛塞比利" - }, - "splash_pad": { - "en": "splash pad", - "ru": "сухой фонтан" - }, - "toret": { - "en": "torèt", - "it": "toret" - } - }, - "frequency": { - "0": { - "de": "750 v =", - "en": "630 v dc railway electrification", - "es": "electrificación ferroviaria de 750 v", - "fr": "électrification ferroviaire 630 v continu", - "hu": "630 voltos egyenáram", - "it": "elettrificazione ferroviaria 750 v cc", - "ja": "直流630v鉄道電化", - "ko": "630 v dc 철도 통전", - "pl": "elektryfikacja prądem stałym o napięciu 750 v", - "ru": "630 в пост.", - "tr": "750 v da demiryolu elektrifikasyonu", - "uk": "постійний струм, 750 в", - "zh": "750伏直流電鐵路電氣化" - }, - "16.7": { - "cs": "15 kv; 16,7 hz", - "de": "15 kv einphasenwechselspannung mit 16,7 hz", - "en": "15 kv, 16.7 hz ac railway electrification", - "en-ca": "15 kv ac railway electrification", - "en-gb": "15 kv ac railway electrification", - "es": "electrificación ferroviaria de 15 kv de ca", - "fr": "électrification ferroviaire 15 kv 16,7 hz", - "hu": "15 kv-os villamos vontatás", - "it": "elettrificazione ferroviaria a 15 kv ac", - "nb": "15 kv, 16 2/3 hz vekselstrøm jernbaneforsyning", - "nl": "15 kv bovenleidingssysteem", - "pl": "15 kv; 16,7 hz", - "ru": "15 кв, 16,7 гц перем.", - "sv": "15 kv, 16,7 hz växelspänning järnvägsmatning", - "uk": "15 кв змінного струму електрифікація", - "zh": "15千伏交流电气化铁路" - }, - "50": { - "cs": "25 kv, 50 hz", - "de": "elektrifizierung mit 25 kv einphasenwechselspannung mit 50 hz", - "en": "25 kv, 50 hz ac railway electrification", - "es": "electrivicación del ferocarril con 25 kv ca y 50 hz", - "fr": "électrification ferroviaire 25 kv 50 hz", - "hu": "25 kv 50 hz-es villamos vontatás", - "ja": "交流25kv 50hz鉄道電化", - "ru": "25 кв, 50 гц перем.", - "sv": "25 kv, 50 hz växelspänning järnvägsmatning", - "tr": "25 kv, 50 hz aa demiryolu elektrifikasyonu", - "zh": "25千伏50赫兹交流电" - }, - "60": { - "cs": "25 kv, 60 hz", - "de": "25 kv, 60 hz ac bahnelektrifizierung", - "en": "25 kv, 60 hz ac railway electrification", - "fr": "électrification ferroviaire 25 kv 60 hz", - "hu": "25 kv, 60 hz ac villamosítási rendszer", - "ja": "交流25kv 60hz鉄道電化", - "ru": "25 кв, 60 гц перем.", - "sv": "25 kv, 60 hz växelspänning järnvägsmatning", - "tr": "25 kv, 60 hz aa demiryolu elektrifikasyonu", - "zh": "25千伏60赫兹交流电", - "zh-tw": "2萬5千伏特60赫茲交流電" - } - }, - "gambling": { - "bingo": { - "ca": "bingo", - "en": "bingo hall", - "ro": "sală de bingo" - }, - "pachinko": { - "ar": "باتشينكو", - "cs": "pačinko", - "en": "pachinko", - "hu": "pacsinko", - "ja": "パチンコ", - "ko": "파친코", - "ru": "патинко", - "sr": "пачинко", - "uk": "патінко", - "zh": "彈珠機", - "zh-tw": "柏青哥" - } - }, - "garden": { - "": { - "ar": "حديقة صينية", - "bg": "китайска градина", - "ca": "jardí xinès", - "cs": "čínská zahrada", - "da": "kinesisk have", - "de": "gartenkunst in china", - "de-ch": "rosarium", - "el": "αγγλικός κήπος", - "en": "chinese garden", - "en-ca": "japanese garden", - "en-gb": "japanese garden", - "es": "jardín chino", - "et": "hiina aed", - "fi": "kiinalainen puutarha", - "fr": "jardin chinois", - "he": "גן סיני", - "hi": "जापानी उद्यान-कला", - "hr": "kineski vrt", - "hu": "kínai kert", - "id": "taman tiongkok", - "is": "landslagsgarður", - "it": "giardino cinese", - "ja": "中国庭園", - "ko": "중국 정원", - "lt": "japoniškas sodas", - "lv": "angļu dārzs", - "nb": "kinesisk hage", - "nl": "chinese tuin", - "pl": "ogród chiński", - "pt": "jardim chinês", - "pt-br": "horta urbana", - "ro": "grădină japoneză", - "ru": "китайский сад", - "sk": "anglický park", - "sl": "angleški park", - "sr": "кинески вртови", - "sv": "engelsk park", - "th": "สวนเซ็นญี่ปุ่น", - "tr": "çin bahçesi", - "uk": "китайський сад", - "vi": "vườn trung hoa", - "zh": "中國園林", - "zh-cn": "中国园林" - } - }, - "gauge": { - "1000": { - "ar": "سكة حديد قياس 1000 ملم", - "ca": "ample ferroviari mètric", - "cs": "rozchod 1000 mm", - "da": "meterspor", - "de": "meterspur", - "en": "1000 mm track gauge", - "es": "vía métrica", - "et": "meetriline rööpmelaius", - "fr": "écartement métrique", - "he": "1000 מ\"מ", - "hu": "1000 mm-es nyomtávolság", - "it": "scartamento metrico", - "ja": "メートルゲージ", - "ko": "미터 궤간", - "nb": "meterspor", - "nl": "meterspoor", - "pl": "rozstaw metrowy", - "pt": "bitola métrica", - "ro": "ecartament metric", - "ru": "колея 1000 мм", - "sv": "meterspår", - "th": "มีเตอร์เกจ", - "tr": "metre hat açıklığı", - "uk": "метрова колія", - "vi": "đồng hồ đo 1000 mm", - "zh": "1000毫米窄軌" - }, - "1067": { - "ar": "1067 مم مقياس المسار", - "cs": "rozchod 1067 mm", - "da": "kapspor", - "de": "kapspur", - "en": "1067 mm track gauge", - "es": "ancho del cabo", - "fr": "voie sud-africaine", - "he": "1067 מ\"מ", - "hu": "1067 mm-es nyomtávolság", - "id": "lebar sepur 1067 mm", - "it": "scartamento del capo", - "ja": "1067mm軌間", - "ko": "케이프 궤간", - "nb": "kappspor", - "nl": "kaapspoor", - "pl": "rozstaw przylądkowy", - "pt": "bitola 1067 mm", - "ru": "капская колея", - "sv": "1067 mm", - "tr": "cape hat açıklığı", - "uk": "капська колія", - "zh": "1067毫米窄軌", - "zh-tw": "1067公釐窄轨" - }, - "1093": { - "cs": "rozchod 1093 mm", - "en": "1093 mm track gauge", - "he": "1093 מ\"מ", - "nl": "1093 mm spoorwijdte", - "pt-br": "bitola 1093 mm", - "ru": "колея 1093 мм", - "sv": "1093 mm" - }, - "1100": { - "cs": "rozchod 1100 mm", - "de": "1100-mm-spur", - "en": "1100 mm track gauge", - "he": "1100 מ\"מ", - "hu": "1100 mm-es nyomtávolság", - "it": "scartamento di 1100 mm", - "nl": "1100 mm spoorwijdte", - "pt-br": "bitola 1100 mm" - }, - "1432": { - "cs": "rozchod 1432 mm", - "en": "1432 mm track gauge", - "he": "1432 מ\"מ", - "hu": "1432 mm", - "nl": "1432 mm spoorwijdte", - "pt-br": "bitola 1432 mm", - "zh": "1432毫米窄轨", - "zh-hk": "1432毫米窄軌" - }, - "1435": { - "ar": "سكة حديد قياس 1435 ملم", - "bg": "1435 mm междурелсие", - "ca": "ample ferroviari estàndard", - "cs": "rozchod 1435 mm", - "da": "normalspor", - "de": "regelspur", - "el": "σιδηροδρομική γραμμή κανονικού εύρους", - "en": "1435 mm track gauge", - "es": "ancho de vía estándar", - "et": "standardrööpmeline raudtee", - "fi": "normaaliraideleveys", - "fr": "écartement standard", - "he": "1435 מ\"מ", - "hi": "मानक गेज", - "hr": "1435 mm", - "hu": "1435 mm", - "id": "sepur standar", - "it": "scartamento normale", - "ja": "標準軌", - "ko": "표준궤", - "lt": "1435 mm vėžė", - "nb": "normalspor", - "nl": "normaalspoor", - "pl": "kolej normalnotorowa", - "pt": "bitola padrão", - "pt-br": "bitola internacional", - "ro": "ecartament normal", - "ru": "европейская колея", - "sk": "železnica s normálnym rozchodom", - "sl": "1435 mm širok tir", - "sr": "1435 мм ширина колосека", - "sv": "normalspår", - "th": "สแตนดาร์ดเกจ", - "tr": "standart hat açıklığı", - "uk": "європейська колія (1435 мм)", - "vi": "đường sắt khổ tiêu chuẩn", - "zh": "標準軌", - "zh-cn": "标准轨" - }, - "1445": { - "cs": "rozchod 1445 mm", - "de": "1445-mm-spur", - "en": "1445 mm track gauge", - "fr": "voie large 1445 mm", - "hu": "1445 mm", - "it": "scartamento da 1445 mm", - "nl": "1445 mm spoorwijdte", - "ru": "1445-мм колея", - "uk": "1445 мм" - }, - "1450": { - "de": "1450-mm-spur", - "en": "1450 mm gauge", - "nl": "1450 mm spoorwijdte" - }, - "1458": { - "de": "1458-mm-spur", - "en": "1458 mm gauge", - "nl": "1458 mm spoorwijdte" - }, - "1520": { - "ar": "1520 مم مقياس المسار", - "cs": "rozchod 1520 mm", - "da": "russisk sporvidde", - "de": "russische breitspur (1520 mm)", - "en": "1520 mm track gauge", - "es": "ancho de vía ruso", - "fi": "1520 mm:n raideleveys", - "fr": "voie russe", - "he": "1520 מ\"מ", - "hu": "1520 mm", - "it": "scartamento sovietico", - "ja": "5フィート軌間", - "ko": "러시아 궤간", - "lt": "1520 mm vėžė", - "nb": "russisk sporvidde", - "nl": "1520 mm spoorwijdte", - "pl": "rozstaw rosyjski", - "pt": "bitola russa", - "ru": "1520 мм (русская колея)", - "sv": "rysk spårvidd", - "th": "รางรัสเซีย", - "tr": "1520 mm hat açıklığı", - "uk": "1520 мм", - "zh": "1520毫米寬軌" - }, - "1522": { - "cs": "rozchod 1522 mm", - "de": "1522-mm-spur", - "en": "1522 mm track gauge", - "fi": "1522 mm:n raideleveys", - "he": "1522 מ\"מ", - "hu": "1522 mm nyomtávolság", - "nl": "1522 mm spoorwijdte", - "sv": "spårvidd 1522 mm" - }, - "1524": { - "cs": "rozchod 1524 mm", - "de": "spurweite 1524 mm", - "en": "1524 mm track gauge", - "fi": "1524 mm:n raideleveys", - "fr": "voie large 1524 mm", - "he": "1524 מ\"מ", - "hu": "1524 mm-es nyomtávolság", - "ja": "1524mm軌間", - "nl": "1524 mm spoorwijdte", - "ru": "колея 1524 мм", - "sv": "spårvidd 1524 mm", - "tr": "1524 mm hat açıklığı" - }, - "1600": { - "cs": "rozchod 1600 mm", - "de": "spurweite 1600 mm", - "en": "5 ft 3 in gauge", - "es": "ancho irlandés", - "et": "iiri rööpmelaius", - "fr": "voie irlandaise", - "he": "1600 מ\"מ", - "hu": "1600 mm-es nyomtávolság", - "ja": "5フィート3インチ軌間", - "ko": "아일랜드 궤간", - "nl": "1600 mm spoorwijdte", - "pt": "bitola larga brasileira", - "pt-br": "bitola irlandesa", - "ru": "колея 1600 мм", - "uk": "колія 1600 мм", - "zh": "1600毫米宽轨" - }, - "1668": { - "ar": "1668 مم مقياس المسار", - "ca": "ample ferroviari ibèric", - "cs": "rozchod 1668 mm", - "de": "iberische spurweite", - "en": "1668 mm track gauge", - "es": "ancho ibérico", - "et": "pürenee rööpmelaius", - "fr": "voie ibérique", - "he": "1668 מ\"מ", - "hu": "ibériai nyomtávolság", - "ja": "イベリア軌間", - "ko": "이베리아 궤간", - "nl": "1688 mm spoorwijdte", - "pt": "bitola ibérica", - "ru": "колея 1668 мм", - "tr": "i̇ber hat açıklığı", - "uk": "іберійська колія", - "zh": "1668毫米寬軌" - }, - "1676": { - "ar": "1676 مم مقياس المسار", - "cs": "rozchod 1676 mm", - "de": "indische breitspur", - "en": "1676 mm track gauge", - "es": "ancho de vía indio", - "et": "india rööpmelaius", - "fr": "voie indienne", - "he": "1676 מ\"מ", - "hi": "भारतीय गेज", - "hu": "1676 mm-es nyomtávolság", - "ja": "インディアンゲージ", - "ko": "인도 궤간", - "nl": "1676 mm spoorwijdte", - "pt": "bitola indiana", - "ru": "индийская колея", - "uk": "індійська колія", - "zh": "南亚宽轨" - }, - "1800": { - "de": "1800-mm-spur", - "en": "1800 mm track gauge", - "nl": "1800 mm spoorwijdte" - }, - "597": { - "cs": "rozchod 597 mm", - "de": "597-mm-spurweite", - "en": "1-foot 11½-inch track gauge", - "nl": "597 mm spoorwijdte" - }, - "600": { - "bg": "600 mm междурелсие", - "cs": "rozchod 600 mm", - "da": "600 mm sporvidde", - "de": "600-mm-spur", - "en": "600 mm track gauge", - "es": "ancho de 600 mm", - "fi": "600 mm:n raideleveys", - "fr": "écartement des rails de 600 mm", - "he": "600 מ\"מ", - "hu": "600 mm nyomtávolság", - "ja": "600mm軌間", - "nl": "600 mm spoorwijdte", - "pl": "rozstaw 600 mm", - "pt-br": "bitola 600 mm", - "ru": "600 мм", - "sv": "spårvidd 600 mm" - }, - "750": { - "cs": "rozchod 750 mm", - "de": "750-mm-spur", - "en": "750 mm track gauge", - "es": "ancho de 750 mm", - "fi": "750 mm:n raideleveys", - "fr": "voie étroite 750 mm", - "he": "750 מ\"מ", - "hu": "750 mm", - "it": "scartamento da 750 mm", - "ja": "750 mm軌間", - "nb": "750 mm sporvidde", - "nl": "750 mm spoorwijdte", - "pl": "rozstaw 750 mm", - "pt-br": "bitola 750 mm", - "ru": "750 мм", - "sv": "spårvidd 750 mm", - "uk": "750 мм", - "zh": "750毫米铁轨" - }, - "762": { - "cs": "rozchod 762 mm", - "de": "762-mm-spur", - "en": "762 mm track gauge", - "es": "ancho imperial", - "et": "762 mm rööpmelaius", - "fr": "voie étroite 762 mm", - "he": "762 מ\"מ", - "it": "scartamento da 762 mm", - "ja": "762mm軌間", - "ko": "2피트 6인치 궤간", - "nl": "762 mm spoorwijdte", - "pt-br": "bitola imperial", - "ru": "колея 762 мм", - "zh": "762毫米窄轨", - "zh-tw": "762毫米窄軌" - }, - "900": { - "cs": "rozchod 900 mm", - "de": "900-mm-spur", - "en": "900 mm track gauge", - "fr": "voie de 900 mm", - "he": "900 מ\"מ", - "hu": "900 mm", - "it": "scartamento da 900 mm", - "ja": "900ミリ軌間", - "nl": "900 mm spoorwijdte", - "pt-br": "bitola 900 mm", - "ru": "колея 900 мм", - "sv": "900 mm" - } - }, - "generator": { - "": { - "ar": "محطة طاقة كهرضوئية", - "bg": "фотоволтаична електроцентрала", - "ca": "hort solar", - "cs": "fotovoltaická elektrárna", - "da": "vindkraftværk", - "de": "photovoltaik-freiflächenanlage", - "de-ch": "wärmekraftwerk", - "el": "φωτοβολταϊκό σταθμό παραγωγής ηλεκτρικής ενέργειας", - "en": "photovoltaic power station", - "en-ca": "thermal power station", - "en-gb": "wind turbine", - "es": "huerta solar", - "et": "päikeseelektrijaam", - "fi": "aurinkopuisto", - "fr": "centrale solaire photovoltaïque", - "he": "תחנת כוח פוטו-וולטאית", - "hi": "ऊष्मीय शक्ति संयंत्र", - "hr": "fotonaponska elektrana", - "hu": "fotovillamos naperőmű", - "id": "pembangkit listrik termal", - "it": "centrale elettrica fotovoltaica", - "ja": "太陽光発電所", - "ko": "화력 발전소", - "lt": "saulės jėgainė", - "lv": "fotoelementu elektrostacija", - "nb": "varmekraftverk", - "nl": "fotovoltaïsche krachtcentrale", - "pl": "elektrownia słoneczna", - "pt": "central fotovoltaica", - "pt-br": "usina fotovoltaica", - "ro": "termocentrală", - "ru": "солнечная электростанция", - "sk": "slnečná elektráreň", - "sl": "fotovoltaična elektrarna", - "sr": "термоелектрана", - "sv": "värmekraftverk", - "th": "กังหันลม", - "tr": "fotovoltaik enerji santrali", - "uk": "сонячна електростанція", - "vi": "nhà máy nhiệt điện", - "zh": "光伏电站", - "zh-hk": "熱力發電廠", - "zh-tw": "太陽能光電發電場" - } - }, - "geological": { - "moraine": { - "ar": "ركام جليدي", - "bg": "морена", - "ca": "morrena", - "cs": "moréna", - "da": "moræne", - "de": "moräne", - "el": "λιθώνας", - "en": "moraine", - "es": "morrena", - "et": "moreenne pinnavorm", - "fi": "moreenimuodostuma", - "he": "מורנה", - "hr": "morena", - "hu": "moréna", - "is": "jökulgarður", - "it": "morena", - "ja": "モレーン", - "ko": "빙퇴석", - "lt": "morena", - "lv": "morēna", - "nb": "morene", - "nl": "morene", - "pl": "morena", - "pt": "morena", - "ro": "morenă", - "ru": "морена", - "sk": "moréna", - "sl": "morena", - "sr": "morena", - "sv": "morän", - "tr": "moren", - "uk": "морена", - "zh": "冰碛" - }, - "outcrop": { - "ar": "تفجر أرضي", - "ca": "aflorament", - "cs": "výchoz", - "de": "aufschluss", - "en": "outcrop", - "es": "afloramiento rocoso", - "et": "paljand", - "fr": "affleurement", - "he": "מחשוף", - "hi": "उभरी तलशिला", - "id": "singkapan", - "it": "affioramento roccioso", - "ja": "露頭", - "ko": "노두", - "lt": "atodanga", - "lv": "atsegumi", - "nl": "ontsluiting", - "pl": "wychodnia", - "pt": "afloramento", - "ro": "afloriment", - "ru": "обнажение", - "sk": "odkryv", - "sv": "berg i dagen", - "th": "หินโผล่", - "tr": "mostra", - "uk": "відслонення гірських порід", - "zh": "露頭" - }, - "palaeontological_site": { - "ca": "jaciment paleontològic", - "cs": "paleontologická lokalita", - "de": "paläontologische stätte", - "en": "paleontological site", - "en-gb": "palaeontological site", - "es": "yacimiento paleontológico", - "fi": "paleontologinen paikka", - "fr": "site paléontologique", - "he": "אתר פלאונטולוגי", - "it": "sito paleontologico", - "ja": "古生物学的遺跡", - "nl": "paleontologische site", - "pl": "stanowisko paleontologiczne", - "pt": "jazida paleontológica", - "ru": "место останков", - "sr": "палеонтолошко налазиште" - } - }, - "government": { - "aerospace": { - "ar": "وكالة فضاء", - "ca": "agència espacial", - "cs": "kosmická agentura", - "de": "weltraumorganisation", - "el": "διαστημική υπηρεσία", - "en": "space agency", - "es": "agencia espacial", - "fi": "avaruusjärjestö", - "fr": "agence spatiale", - "he": "סוכנות חלל", - "it": "agenzia spaziale", - "ja": "宇宙機関", - "ko": "항공 우주국", - "nb": "romfartsbyrå", - "nl": "ruimtevaartagentschap", - "pl": "agencja kosmiczna", - "pt": "agência espacial", - "ro": "agenție spațială", - "ru": "космическое агентство", - "sr": "свемирска агенција", - "sv": "rymdorganisation", - "tr": "uzay ajansı", - "uk": "космічне агентство", - "zh": "公共航天機構", - "zh-cn": "公共航天机构", - "zh-hk": "太空總署", - "zh-tw": "太空總署" - }, - "agency": { - "ar": "مؤسسة حكومية", - "bg": "държавна агенция", - "ca": "agència governamental", - "cs": "orgán státní správy", - "da": "myndighed", - "de": "behörde", - "el": "κρατική υπηρεσία", - "en": "government agency", - "es": "organismo público", - "et": "asutus", - "fi": "viranomainen", - "fr": "agence publique", - "he": "רשות ממשלתית", - "hu": "állami szerv", - "id": "lembaga negara", - "it": "agenzia governativa", - "ja": "政府機関", - "ko": "정부 기관", - "lt": "valdžios institucija", - "lv": "valdības aģentūra", - "nb": "etat", - "nl": "overheidsagentschap", - "pl": "instytucja państwowa", - "pt": "agência governamental", - "ro": "agenție guvernamentală", - "ru": "орган публичной власти", - "sk": "orgán štátnej správy", - "sl": "vladni urad", - "sr": "јавна агенција", - "sv": "myndighet", - "th": "หน่วยงานราชการ", - "tr": "kamu kurumu", - "uk": "орган державної влади", - "vi": "cơ quan công quyền", - "zh": "政府機構", - "zh-cn": "政府机构", - "zh-tw": "政府機關" - }, - "archive": { - "ar": "مبنى أرشيف", - "ca": "edifici d'arxiu", - "cs": "budova archivu", - "de": "archivbau", - "en": "archive building", - "es": "edificio de archivo", - "et": "arhiivihoone", - "fi": "arkistorakennus", - "fr": "bâtiment d'archives", - "hu": "levéltár", - "it": "archivio", - "ja": "公文書館建築物", - "nl": "archiefgebouw", - "sv": "arkivbyggnad" - }, - "audit": { - "bg": "сметна палата", - "ca": "sindicatura de comptes", - "de": "rechnungshof", - "en": "court of audit", - "es": "tribunal de cuentas", - "fr": "cour des comptes", - "it": "corte dei conti", - "ja": "会計検査院", - "ko": "감사원", - "nl": "rekenhof", - "pt": "tribunal de contas", - "ru": "счётная палата", - "tr": "sayıştay", - "zh": "審計機關" - }, - "border_control": { - "ar": "رقابة حدودية", - "ca": "control de fronteres", - "cs": "hraniční kontrola", - "da": "grænsekontrol", - "de": "grenzkontrolle", - "el": "έλεγχος συνόρων", - "en": "border control", - "es": "control de fronteras", - "fi": "rajavalvonta", - "fr": "contrôle frontalier", - "he": "ביקורת גבולות", - "hr": "granični nadzor", - "id": "kontrol perbatasan", - "it": "controlli di frontiera", - "ja": "出入国管理", - "ko": "출입국관리", - "nl": "grensbewaking", - "pl": "kontrola graniczna", - "pt": "controle de alfândega", - "ru": "пограничный контроль", - "sl": "mejna kontrola", - "sr": "гранична провера", - "sv": "gränsbevakning", - "tr": "sınır kontrolü", - "uk": "зона митного контролю", - "vi": "lực lượng biên phòng", - "zh": "邊境管制" - }, - "cadaster": { - "de": "vermessungsamt", - "en": "cadastral office" - }, - "chamber_of_commerce": { - "ar": "غرفة تجارة", - "ca": "cambra de comerç", - "da": "handelskammer", - "de": "industrie- und handelskammer", - "el": "εμπορικό επιμελητήριο", - "en": "chamber of commerce", - "fi": "kauppakamari", - "fr": "chambre de commerce", - "he": "לשכת המסחר", - "hu": "kamara", - "id": "kamar dagang", - "it": "camera di commercio", - "ja": "ドイツ商工会議所", - "ko": "상공회의소", - "lt": "pramonės ir prekybos rūmai", - "nb": "handelskammer", - "nl": "kamer van koophandel", - "pl": "izba gospodarcza", - "pt": "câmaras de comércio", - "ro": "camera de comerț", - "ru": "торговая палата", - "sr": "трговачка комора", - "sv": "handelskammare", - "tr": "ticaret odası", - "uk": "торгово-промислова палата", - "zh": "商會" - }, - "culture": { - "ar": "مؤسسة ثقافية", - "ca": "institució cultural", - "cs": "kulturní instituce", - "da": "kulturinstitution", - "de": "kulturinstitut", - "el": "πολιτιστικό ίδρυμα", - "en": "cultural institution", - "es": "institución cultural", - "et": "kultuuriorganisatsioon", - "fi": "kulttuurilaitos", - "fr": "institution culturelle", - "he": "אגודה תרבותית", - "hu": "kulturális intézmény", - "it": "istituzione culturale", - "ja": "文化機関", - "ko": "문화 시설", - "nb": "kulturinstitusjon", - "nl": "cultureel instituut", - "pl": "instytucja kultury", - "pt": "instituição cultural", - "ro": "instituție culturală", - "ru": "культурный институт", - "sk": "kultúrna inštitúcia", - "sl": "kulturna ustanova", - "sr": "културолошка установа", - "sv": "kulturinstitution", - "tr": "kültürel oluşum", - "uk": "інституція культури", - "vi": "thiết chế văn hóa", - "zh": "文化組織", - "zh-cn": "文化机构", - "zh-tw": "文化機構" - }, - "customs": { - "ar": "جمارك", - "bg": "митница", - "ca": "duana", - "cs": "celní správa", - "da": "told", - "de": "zollverwaltung", - "de-ch": "zoll", - "el": "τελωνείο", - "en": "customs agency", - "en-ca": "customs", - "en-gb": "customs", - "es": "aduana", - "et": "toll", - "fi": "tulli", - "fr": "douane", - "he": "מכס", - "hi": "अभ्यास", - "hu": "vám", - "id": "pabean", - "it": "dogana", - "ja": "税関", - "ko": "세관", - "lt": "muitinė", - "lv": "muita", - "nb": "tollvesen", - "nl": "douane", - "pl": "służba celna", - "pt": "alfândega", - "ro": "vamă", - "ru": "таможня", - "sk": "colná správa", - "sl": "carinska služba", - "sr": "царина", - "sv": "tullmyndighet", - "tr": "gümrük", - "uk": "митниця", - "vi": "hải quan", - "zh": "海关", - "zh-hk": "海關", - "zh-tw": "海關" - }, - "data_protection": { - "bg": "надзорен орган", - "cs": "dozorový úřad pro ochranu osobních údajů", - "da": "tilsynsmyndighed", - "de": "datenschutzaufsichtsbehörde", - "en": "data protection authority", - "es": "autoridad nacional de protección de datos", - "fr": "autorité chargées de la protection des données", - "it": "autorità di controllo della protezione dei dati", - "ja": "各国のデータ保護当局", - "ko": "데이터 보호 기관", - "nb": "databeskyttelsesautoritet", - "nl": "gegevensbeschermingsautoriteit", - "zh": "数据保护机构" - }, - "election_commission": { - "ar": "لجنة الانتخابات", - "ca": "comissió electoral", - "cs": "volební komise", - "de": "wahlkommission", - "el": "εφορευτική επιτροπή", - "en": "election commission", - "es": "poder electoral", - "et": "valimiskomisjon", - "fr": "commission électorale", - "he": "ועדת הבחירות", - "hi": "अधिकार एवं कर्तव्य", - "it": "commissione elettorale", - "ja": "選挙委員会", - "ko": "선거위원회", - "lv": "vēlēšanu komisija", - "nb": "valgstyre", - "nl": "kiescommissie", - "pl": "komisja wyborcza", - "pt": "comissão eleitoral", - "ru": "избирательная комиссия", - "sl": "volilna komisija", - "tr": "seçim komisyonu", - "uk": "виборча комісія", - "zh": "選舉委員會" - }, - "healthcare": { - "ar": "دائرة الصحة", - "de": "gesundheitsamt", - "en": "health department", - "fr": "département de la santé", - "hr": "zdravstveni zavod", - "ja": "保健所", - "ko": "보건소", - "pt": "ministério da saúde", - "ru": "департамент здравоохранения", - "vi": "bộ y tế", - "zh": "衛生部" - }, - "intelligence": { - "ar": "وكالة استخبار", - "bg": "специални служби", - "ca": "servei d'intel·ligència", - "cs": "zpravodajská služba", - "da": "efterretningsvæsen", - "de": "nachrichtendienst", - "el": "υπηρεσία πληροφοριών", - "en": "intelligence agency", - "es": "servicio de inteligencia", - "et": "luureagentuur", - "fi": "tiedustelupalvelu", - "fr": "service de renseignement", - "he": "ארגון ביון", - "hi": "आसूचना संस्था", - "hr": "tajna služba", - "hu": "hírszerző ügynökség", - "id": "badan intelijen", - "is": "leyniþjónusta", - "it": "agenzia di spionaggio", - "ja": "情報機関", - "ko": "정보기관", - "lt": "specialiosios tarnybos", - "lv": "izlūkošanas dienests", - "nb": "etterretningsbyrå", - "nl": "inlichtingendienst", - "pl": "służba wywiadowcza", - "pt": "serviço de inteligência", - "ro": "serviciul de informații", - "ru": "спецслужба", - "sk": "spravodajská služba", - "sl": "obveščevalna služba", - "sr": "обавештајна служба", - "sv": "underrättelsetjänst", - "th": "หน่วยสืบราชการลับ", - "tr": "i̇stihbarat teşkilatı", - "uk": "спецслужба", - "vi": "cơ quan tình báo", - "zh": "情報機構", - "zh-cn": "情报机构" - }, - "legislative": { - "ar": "مجالس تشريعية (غرف برلمانية)", - "bg": "законодателен орган", - "ca": "assemblea legislativa", - "cs": "zákonodárný sbor", - "da": "lovgivende forsamling", - "de": "legislative", - "en": "legislative house", - "es": "cámara legislativa", - "fi": "lainsäädännöllinen toimielin", - "fr": "assemblée législative", - "it": "assemblea legislativa", - "ja": "議院", - "nb": "lovgivende forsamling", - "nl": "wetgevend orgaan", - "pt": "câmara legislativa", - "ru": "законодательный орган", - "sk": "zákonodarný zbor", - "sl": "zakonodajni dom", - "sr": "законодавно тело", - "sv": "lagstiftande församling", - "tr": "yasama meclisi", - "uk": "законодавчий орган", - "zh": "国会议院" - }, - "ministry": { - "ar": "وزارة", - "bg": "министерство", - "ca": "ministeri", - "cs": "ministerstvo", - "da": "ministerium", - "de": "ministerium", - "el": "υπουργείο", - "en": "ministry", - "es": "ministerio", - "et": "ministeerium", - "fi": "ministeriö", - "fr": "ministère", - "he": "משרד ממשלתי", - "hi": "मंत्रालय", - "hr": "ministarstvo", - "hu": "minisztérium", - "id": "kementerian", - "is": "ráðuneyti", - "it": "ministero", - "ja": "省", - "ko": "부처", - "lt": "ministerija", - "lv": "ministrija", - "nb": "ministerium", - "nl": "ministerie", - "pl": "ministerstwo", - "pt": "ministério", - "ro": "minister", - "ru": "министерство", - "sk": "ministerstvo", - "sl": "ministrstvo", - "sr": "министарство", - "sv": "ministerium", - "th": "กระทรวง", - "tr": "bakanlık", - "uk": "міністерство", - "vi": "bộ chính phủ", - "zh": "部" - }, - "ombudsperson": { - "ar": "ديوان المظالم", - "bg": "омбудсман", - "ca": "síndic de greuges", - "cs": "ombudsman", - "da": "ombudsmand", - "de": "ombudsmann", - "el": "συνήγορος του πολίτη", - "en": "ombudsperson", - "en-ca": "ombudsman", - "en-gb": "ombudsman", - "es": "defensor del pueblo", - "et": "õigusvahemees", - "fi": "asiamies", - "fr": "ombudsman", - "he": "נציב קבילות הציבור", - "hi": "लोकपाल", - "hr": "pučki pravobranitelj", - "hu": "ombudsman", - "id": "ombudsman", - "is": "umboðsmaður", - "it": "difensore civico", - "ja": "オンブズマン", - "ko": "옴부즈만", - "lt": "ombudsmenas", - "lv": "tiesībsargs", - "nb": "ombud", - "nl": "ombudspersoon", - "pl": "ombudsman", - "pt": "ouvidor", - "pt-br": "ombudsman", - "ro": "ombudsman", - "ru": "омбудсмен", - "sk": "verejný ochranca práv", - "sl": "varuh človekovih pravic", - "sr": "омбудсман", - "sv": "ombudsman", - "th": "ผู้ตรวจการแผ่นดิน", - "tr": "ombudsman", - "uk": "омбудсмен", - "vi": "ombudsman", - "zh": "申訴專員", - "zh-cn": "申诉专员" - }, - "parliament": { - "ar": "مجلس النواب", - "bg": "парламент", - "ca": "parlament", - "cs": "parlament", - "da": "parlament", - "de": "parlament", - "el": "κοινοβούλιο", - "en": "parliament", - "es": "parlamento", - "et": "parlament", - "fi": "parlamentti", - "fr": "parlement", - "he": "פרלמנט", - "hr": "parlament", - "hu": "parlament", - "id": "parlemen", - "is": "þing", - "it": "parlamento", - "ja": "議会", - "ko": "의회", - "lt": "parlamentas", - "lv": "parlaments", - "nb": "parlament", - "nl": "parlement", - "pl": "parlament", - "pt": "parlamento", - "ro": "parlament", - "ru": "парламент", - "sk": "parlament", - "sl": "parlament", - "sr": "скупштина", - "sv": "parlament", - "th": "รัฐสภา", - "tr": "parlamento", - "uk": "парламент", - "vi": "nghị viện", - "zh": "議會", - "zh-cn": "议会" - }, - "presidency": { - "ar": "مقر رسمي", - "bg": "официална резиденция", - "ca": "residència oficial", - "cs": "oficiální sídlo", - "da": "tjenestebolig", - "de": "amtssitz", - "el": "επίσημη κατοικία", - "en": "official residence", - "es": "residencia oficial", - "et": "residents", - "fi": "virka-asunto", - "fr": "résidence officielle", - "he": "מעון רשמי", - "hi": "आधिकारिक आवास", - "hu": "hivatalos lakhely", - "id": "kediaman resmi", - "it": "residenza ufficiale", - "ja": "官邸", - "ko": "관저", - "lv": "oficiālā rezidence", - "nb": "embetsbolig", - "nl": "ambtswoning", - "pl": "oficjalna rezydencja", - "pt": "residência oficial", - "ro": "reședință oficială", - "ru": "официальная резиденция", - "sl": "uradna rezidenca", - "sr": "званична резиденција", - "sv": "officiell residens", - "tr": "resmî ikametgâh", - "uk": "офіційна резиденція", - "vi": "dinh phủ nguyên thủ", - "zh": "官邸" - }, - "prosecutor": { - "ar": "مدع", - "bg": "прокурор", - "ca": "fiscal", - "cs": "prokurátor", - "da": "anklager", - "de": "staatsanwalt", - "el": "εισαγγελέας", - "en": "prosecutor", - "es": "fiscal", - "et": "prokurör", - "fi": "syyttäjä", - "fr": "procureur ou procureure", - "he": "תובע פלילי", - "hi": "सरकारी वकील", - "hr": "tužiteljstvo", - "hu": "ügyész", - "id": "jaksa", - "it": "procuratore", - "ja": "検察官", - "ko": "검사", - "lt": "prokuroras", - "lv": "prokurors", - "nb": "aktor", - "nl": "openbaar aanklager", - "pl": "prokurator", - "pt": "promotor de justiça", - "pt-br": "procurador fiscal", - "ro": "procuror", - "ru": "прокурор", - "sl": "državni tožilec", - "sr": "јавни тужилац", - "sv": "åklagare", - "th": "พนักงานอัยการ", - "tr": "savcı", - "uk": "прокурор", - "vi": "công tố viên", - "zh": "檢察官", - "zh-cn": "检察官" - }, - "register_office": { - "ar": "مكتب الأحوال المدنية", - "ca": "oficina de registre", - "cs": "matriční úřad", - "da": "folkeregister", - "de": "standesamt", - "el": "ληξιαρχείο", - "en": "register office", - "es": "oficina de registro", - "fr": "bureau de l'état civil", - "he": "מרשם האוכלוסין", - "hu": "anyakönyvi hivatal", - "id": "catatan sipil", - "it": "ufficio anagrafe", - "ja": "人口動態統計局", - "lt": "civilinės metrikacijos įstaiga", - "nl": "standesamt", - "pl": "urząd stanu cywilnego", - "pt": "cartório", - "ro": "registru de stare civilă", - "ru": "регистрационное бюро (орган загс)", - "uk": "орган рацс", - "zh": "民事登记处" - }, - "social_services": { - "ar": "خدمات اجتماعية", - "ca": "serveis socials", - "cs": "sociální služba", - "de": "sozialleistung", - "en": "social services", - "es": "servicios sociales", - "fi": "sosiaalipalvelut", - "fr": "services sociaux", - "it": "servizi sociali", - "ja": "社会福祉事業", - "nb": "sosialtjenester", - "pt": "serviço social", - "ro": "servicii sociale", - "ru": "социальная услуга", - "sl": "socialne službe", - "sv": "social service", - "uk": "соціальні послуги", - "vi": "dịch vụ xã hội", - "zh": "社會服務", - "zh-cn": "社会服务" - }, - "social_welfare": { - "ar": "رعاية اجتماعية", - "ca": "benestar social", - "el": "κοινωνική πρόνοια", - "en": "social welfare", - "es": "bienestar social", - "et": "sotsiaalhoolekanne", - "fr": "service d'aide sociale", - "he": "רווחה חברתית", - "ja": "社会福祉学", - "ko": "사회복지학", - "pt": "bem-estar social", - "sr": "социјалне престације", - "zh": "社會福祉學" - }, - "statistics": { - "ar": "خدمة إحصائية", - "ca": "servei d'estadística", - "cs": "statistická služba", - "da": "statistikbureau", - "de": "statistischer dienst", - "el": "στατιστική υπηρεσία", - "en": "statistical service", - "es": "instituto de estadística", - "et": "statistikateenistus", - "fi": "tilastollinen viranomaispalvelu", - "fr": "institut officiel de statistique", - "he": "שירות סטטיסטי", - "hu": "statisztikai szervezet", - "id": "badan statistik", - "it": "istituto statistico nazionale", - "ja": "統計局", - "ko": "통계국", - "lv": "statistikas aģentūra", - "nb": "statistisk byrå", - "nl": "bureau voor statistiek", - "pl": "służba statystyczna", - "pt": "instituto de estatística", - "ru": "статистическая служба", - "sr": "статистичка служба", - "sv": "statistikorganisation", - "tr": "istatistik kurumu", - "uk": "національний орган статистики", - "zh": "统计部门", - "zh-hk": "統計部門", - "zh-tw": "統計部門" - }, - "tax": { - "ar": "هيئة الضرائب", - "ca": "servei d'administració tributària", - "cs": "finanční úřad", - "de": "finanzamt", - "en": "revenue service", - "es": "servicio de administración tributaria", - "fi": "veroviranomainen", - "fr": "administration fiscale", - "he": "רשות מסים", - "it": "agenzia fiscale", - "ja": "歳入庁", - "ko": "세무서", - "nl": "belastingdienst", - "pl": "urząd skarbowy", - "ru": "налоговые органы", - "sl": "davčna uprava", - "sv": "skattemyndighet", - "uk": "податкова адміністрація", - "zh": "税務機構", - "zh-tw": "稅務機構" - }, - "transportation": { - "ca": "autoritat del transport", - "en": "transportation authority", - "ja": "交通地区", - "nl": "ov-autoriteit", - "pl": "organizator publicznego transportu zbiorowego", - "ru": "транзитный район", - "tr": "transit bölge", - "zh": "交通运输机构" - }, - "treasury": { - "en": "treasury" - }, - "water": { - "de": "wasserverband", - "en": "water board", - "es": "oficina de aguas", - "fr": "office des eaux", - "ja": "水利委員会", - "nl": "waterschap", - "ru": "водная палата", - "sv": "vattenförbund", - "zh": "水利委員會" - }, - "youth_welfare_department": { - "de": "jugendamt", - "en": "youth welfare department", - "ja": "児童相談所" - } - }, - "hazard": { - "animal_crossing": { - "en": "animal crossing", - "sv": "viltpassage" - } - }, - "health_facility": { - "": { - "ar": "مستوصف", - "bg": "диспансер", - "ca": "dispensari", - "de": "dispensaire", - "en": "dispensary", - "es": "dispensario", - "et": "dispanser", - "fr": "dispensaire", - "it": "dispensario", - "ja": "ディスペンサリー", - "nl": "dispensarium", - "pt": "dispensário", - "ro": "dispensar", - "ru": "диспансер", - "sv": "dispensär", - "tr": "dispanser", - "uk": "диспансер" - } - }, - "healthcare": { - "": { - "ar": "الوخز بالإبر", - "bg": "акупунктура", - "ca": "acupuntura", - "cs": "akupunktura", - "da": "akupunktur", - "de": "akupunktur", - "de-at": "immunologie", - "de-ch": "anthroposophische medizin", - "el": "βελονισμός", - "en": "acupuncture", - "en-ca": "anatomy", - "en-gb": "anaesthesia", - "es": "acupuntura", - "et": "akupunktuur", - "fi": "akupunktio", - "he": "דיקור סיני", - "hi": "एक्यूपंक्चर", - "hr": "akupunktura", - "hu": "akupunktúra", - "id": "akupunktur", - "is": "nálastungulækningar", - "it": "agopuntura", - "ja": "鍼", - "ko": "침술", - "lt": "akupunktūra", - "lv": "akupunktūra", - "nb": "akupunktur", - "nl": "acupunctuur", - "pl": "akupunktura", - "pt": "acupuntura", - "pt-br": "anatomia", - "ro": "acupunctură", - "ru": "акупунктура", - "sk": "akupunktúra", - "sl": "akupunktura", - "sr": "акупунктура", - "sv": "akupunktur", - "th": "การฝังเข็ม", - "tr": "akupunktur", - "uk": "акупунктура", - "vi": "châm cứu", - "zh": "针刺", - "zh-hk": "針刺", - "zh-tw": "針灸" - }, - "alternative": { - "ar": "طب بديل", - "bg": "алтернативна медицина", - "ca": "medicina alternativa", - "cs": "alternativní medicína", - "da": "alternativ behandling", - "de": "alternativmedizin", - "el": "εναλλακτική ιατρική", - "en": "alternative medicine", - "es": "medicina alternativa", - "et": "alternatiivmeditsiin", - "fi": "uskomuslääkintä", - "fr": "médecine non conventionnelle", - "he": "רפואה אלטרנטיבית", - "hi": "वैकल्पिक चिकित्सा", - "hr": "alternativna medicina", - "hu": "alternatív gyógymód", - "id": "pengobatan holistik", - "it": "medicina alternativa", - "ja": "代替医療", - "ko": "대체의학", - "lt": "alternatyvioji medicina", - "lv": "komplementārā un alternatīvā medicīna", - "nb": "alternativ medisin", - "nl": "alternatieve geneeswijze", - "pl": "medycyna niekonwencjonalna", - "pt": "medicina alternativa", - "ro": "medicină complementară și alternativă", - "ru": "альтернативная медицина", - "sk": "alternatívna medicína", - "sl": "zdravilstvo", - "sr": "алтернативна медицина", - "sv": "alternativmedicin", - "th": "การแพทย์ทางเลือก", - "tr": "alternatif tıp", - "uk": "альтернативна медицина", - "vi": "y học thay thế", - "zh": "替代医学", - "zh-hk": "替代醫學", - "zh-tw": "替代醫學" - }, - "audiologist": { - "ar": "عالم السمع", - "ca": "audiòleg", - "cs": "audiolog", - "de": "audiologe", - "en": "audiologist", - "es": "audiólogo", - "fi": "audiologi", - "fr": "audiologiste", - "he": "אודיולוג", - "hu": "audiológus", - "is": "heyrnarfræðingur", - "it": "audiologo", - "nl": "audioloog", - "pl": "audiolog", - "pt": "audiologista", - "ru": "аудиолог", - "sr": "аудиолог", - "sv": "audionom", - "th": "นักโสตสัมผัสวิทยา", - "tr": "odyolog" - }, - "birthing_center": { - "ar": "مراكز الولادة", - "ca": "centre de naixement", - "cs": "porodní dům", - "de": "geburtshaus", - "en": "birthing center", - "en-gb": "birthing centre", - "fi": "synnytyskeskus", - "fr": "maison de naissance", - "ja": "助産院", - "nb": "fødestue", - "pl": "dom narodzin", - "sv": "förlossningsavdelning", - "zh": "生產中心" - }, - "blood_bank": { - "ar": "بنك الدم", - "ca": "banc de sang", - "cs": "krevní banka", - "da": "blodbank", - "de": "blutbank", - "el": "τράπεζα αίματος", - "en": "blood bank", - "es": "banco de sangre", - "fi": "veripankki", - "fr": "banque du sang", - "he": "בנק דם", - "hi": "रक्त कोष", - "it": "banca del sangue", - "ja": "血液センター", - "ko": "혈액은행", - "nb": "blodbank", - "nl": "bloedbank", - "pl": "bank krwi", - "pt": "banco de sangue", - "ru": "станция переливания крови", - "sv": "blodbank", - "vi": "ngân hàng máu", - "zh": "臨床血庫學" - }, - "blood_donation": { - "en": "blood collection centre", - "es": "centro de transfusiones", - "ja": "献血ルーム", - "nl": "bloeddonorcentrum" - }, - "clinic": { - "ar": "عيادة", - "ca": "clínica", - "cs": "ambulantní klinika", - "da": "ambulatorium", - "de": "klinik", - "el": "κλινική", - "en": "clinic", - "es": "clínica", - "et": "kliinik", - "fi": "klinikka", - "fr": "clinique", - "he": "מרפאה", - "hr": "klinika", - "hu": "klinika", - "id": "klinik", - "it": "clinica", - "ja": "診療所", - "ko": "진료소", - "nb": "helsesenter", - "nl": "kliniek", - "pl": "przychodnia lekarska", - "pt": "centro de saúde", - "ro": "clinică", - "ru": "клиника", - "sk": "klinika", - "sr": "амбуланта", - "sv": "vårdcentral", - "tr": "klinik", - "uk": "клініка", - "vi": "phòng khám", - "zh": "診所" - }, - "dentist": { - "ar": "طبيب أسنان", - "bg": "стоматолог", - "ca": "odontòleg", - "cs": "zubní lékař", - "da": "tandlæge", - "de": "zahnarzt", - "el": "οδοντίατρος", - "en": "dentist", - "es": "odontólogo", - "et": "hambaarst", - "fi": "hammaslääkäri", - "fr": "dentiste", - "he": "רופא שיניים", - "hr": "zubar", - "hu": "fogorvos", - "id": "dokter gigi", - "it": "dentista", - "ja": "歯科医師", - "ko": "치과의사", - "lv": "zobārsts", - "nb": "tannlege", - "nl": "tandarts", - "pl": "lekarz stomatolog", - "pt": "dentista", - "ru": "стоматолог", - "sk": "zubný lekár", - "sl": "zobozdravnik", - "sr": "стоматолог", - "sv": "tandläkare", - "th": "ทันตแพทย์", - "tr": "diş hekimi", - "uk": "стоматолог", - "vi": "nha sĩ", - "zh": "牙醫", - "zh-cn": "牙医" - }, - "doctor": { - "ar": "طبيب", - "bg": "лекарски кабинет", - "ca": "metge", - "cs": "lékař", - "da": "læge", - "de": "arztpraxis", - "de-at": "arzt", - "de-ch": "arzt", - "el": "ιατρός", - "en": "doctor's office", - "en-ca": "physician", - "en-gb": "doctor's surgery", - "en-us": "physician", - "es": "oficina del doctor", - "et": "arst", - "fi": "lääkäri", - "fr": "cabinet médical", - "he": "רופא", - "hi": "चिकित्सक", - "hr": "liječnik", - "hu": "orvosi rendelő", - "id": "dokter", - "is": "læknir", - "it": "medico", - "ja": "診察室", - "ko": "의사", - "lt": "gydytojas", - "lv": "ārsts", - "nb": "lege", - "nl": "arts", - "pl": "lekarz", - "pt": "consultório médico", - "pt-br": "médico", - "ro": "cabinet medical", - "ru": "врачебный кабинет", - "sk": "lekár", - "sl": "zdravnik", - "sr": "лекар", - "sv": "läkare", - "th": "แพทย์", - "tr": "doktor", - "uk": "лікар", - "vi": "bác sĩ", - "zh": "医生", - "zh-hk": "醫生", - "zh-tw": "醫生" - }, - "hospice": { - "ar": "مستشفى الحالات النهائية", - "bg": "уикипедия:инкубатор/статии/хоспис", - "ca": "hospici", - "cs": "hospic", - "de": "hospiz", - "en": "hospice", - "es": "hospicio", - "et": "hospiits", - "fi": "saattokoti", - "he": "הוספיס", - "hr": "hospicij", - "it": "ospizio", - "ja": "ホスピス", - "ko": "호스피스", - "pl": "hospicjum", - "ro": "casă de îngrijire paleativă", - "ru": "хоспис", - "sk": "hospic", - "sl": "hospic", - "sr": "hospicij", - "sv": "hospis", - "tr": "hospis", - "uk": "госпіс", - "vi": "nhà an dưỡng cuối đời", - "zh": "安寧病房" - }, - "hospital": { - "ar": "مستشفى", - "bg": "болница", - "cs": "nemocnice", - "da": "sygehus", - "de": "krankenhaus", - "de-ch": "spital", - "el": "νοσοκομείο", - "en": "hospital", - "et": "haigla", - "fi": "sairaala", - "fr": "hôpital", - "he": "בית חולים", - "hi": "चिकित्सालय", - "hr": "bolnica", - "hu": "kórház", - "id": "rumah sakit", - "is": "sjúkrahús", - "it": "ospedale", - "ja": "病院", - "ko": "병원", - "lt": "ligoninė", - "lv": "slimnīca", - "nb": "sykehus", - "nl": "ziekenhuis", - "pl": "szpital", - "ro": "spital", - "ru": "больница", - "sk": "nemocnica", - "sl": "bolnišnica", - "sr": "болница", - "sv": "sjukhus", - "th": "โรงพยาบาล", - "tr": "hastane", - "uk": "лікарня", - "vi": "bệnh viện", - "zh": "醫院", - "zh-cn": "医院" - }, - "midwife": { - "ar": "قابلة", - "bg": "акушерство", - "ca": "llevadora", - "cs": "porodní asistentka", - "da": "jordemoder", - "de": "hebamme", - "el": "μαία", - "en": "midwife", - "es": "matrona", - "fi": "kätilö", - "fr": "sage-femme", - "he": "מיילד", - "hi": "प्रसूतिविद्या", - "hu": "bába", - "id": "bidan", - "is": "ljósmóðir", - "it": "ostetrica", - "ja": "助産師", - "ko": "조산사", - "lt": "akušeris", - "lv": "akušiere", - "nb": "jordmor", - "nl": "verloskundige", - "pl": "położna", - "pt": "obstetriz", - "ro": "obstetrică", - "ru": "акушерка", - "sk": "pôrodná asistentka", - "sl": "babica", - "sr": "бабица", - "sv": "barnmorska", - "th": "หมอตำแย", - "tr": "ebelik", - "uk": "акушерка", - "vi": "nữ hộ sinh", - "zh": "接生員" - }, - "occupational_therapist": { - "ar": "أخصائي العلاج الوظيفي", - "ca": "terapeuta ocupacional", - "da": "ergoterapeut", - "de": "ergotherapeut", - "el": "εργοθεραπευτής", - "en": "occupational therapist", - "es": "terapeuta ocupacional", - "fi": "toimintaterapeutti", - "fr": "ergothérapeute", - "he": "מרפא בעיסוק", - "hu": "foglalkozási és munkaterapeuta", - "it": "terapista occupazionale", - "ja": "作業療法士", - "ko": "작업치료사", - "nb": "ergoterapeut", - "nl": "ergotherapeut", - "pl": "terapeuta zajęciowy", - "pt": "terapeuta ocupacional", - "ru": "трудотерапевт", - "sv": "arbetsterapeut", - "th": "นักกิจกรรมบำบัด", - "vi": "arbetsterapi", - "zh": "職能治療師" - }, - "optometrist": { - "ca": "optometrista", - "el": "οπτομέτρης", - "en": "optometrist", - "es": "optometrista", - "fi": "optometristi", - "fr": "optométriste", - "he": "אופטומטריסט", - "hu": "optometrista", - "it": "optometrista", - "ru": "оптометрист", - "uk": "оптометрист", - "zh": "視光師", - "zh-cn": "视光师" - }, - "pharmacy": { - "de": "apothekengebäude", - "en": "pharmacy building" - }, - "physiotherapist": { - "ar": "علاج طبيعي", - "bg": "физиотерапия", - "ca": "fisioteràpia", - "cs": "fyzioterapie", - "da": "fysioterapi", - "de": "physiotherapie", - "el": "φυσικοθεραπεία", - "en": "physiotherapy", - "es": "fisioterapia", - "et": "füsioteraapia", - "fi": "fysioterapia", - "fr": "physiothérapie", - "he": "פיזיותרפיה", - "hi": "भौतिक चिकित्सा", - "hu": "gyógytestnevelés", - "id": "fisioterapi", - "it": "fisioterapia", - "ja": "理学療法", - "ko": "물리치료", - "lt": "fizioterapija", - "lv": "fizioterapija", - "nb": "fysioterapi", - "nl": "fysiotherapie", - "pl": "fizjoterapia", - "pt": "fisioterapia", - "pt-br": "fisioterapeuta", - "ru": "медицинская физическая реабилитация (лфк)", - "sk": "fyzioterapia", - "sl": "fizioterapija", - "sr": "физиотерапеут", - "sv": "sjukgymnastik", - "th": "กายภาพบำบัด", - "tr": "fizik tedavi", - "uk": "фізична терапія", - "vi": "vật lý trị liệu", - "zh": "物理治療", - "zh-cn": "物理治疗" - }, - "podiatrist": { - "ar": "اختصاصي الأقدام", - "ca": "podòleg", - "cs": "podiatr", - "de": "podologe", - "el": "ποδίατρος", - "en": "podiatrist", - "es": "podiatra", - "fi": "jalkaterapeutti", - "fr": "podiatre", - "he": "פודיאטור", - "hu": "podiáter", - "it": "podoiatra", - "ja": "足病学医", - "ko": "족부의사", - "nl": "podoloog", - "pl": "podolog", - "sv": "fotterapeut", - "tr": "podolog", - "zh": "足科醫生" - }, - "psychotherapist": { - "ar": "معالج نفسي", - "ca": "psicoterapeuta", - "cs": "psychoterapeut", - "da": "psykoterapeut", - "de": "psychotherapeut", - "el": "ψυχοθεραπευτής", - "en": "psychotherapist", - "es": "psicoterapeuta", - "fi": "psykoterapeutti", - "fr": "psychothérapeute", - "he": "פסיכותרפיסט", - "hr": "psihoterapeut", - "hu": "pszichoterapeuta", - "it": "psicoterapeuta", - "ja": "心理療法士", - "lv": "psihoterapeits", - "nb": "psykoterapeut", - "nl": "psychotherapeut", - "pl": "psychoterapeuta", - "pt": "psicoterapeuta", - "ro": "psihoterapeut", - "ru": "психотерапевт", - "sl": "psihoterapevt", - "sr": "психотерапеут", - "sv": "psykoterapeut", - "uk": "психотерапевт", - "zh": "心理治疗师" - }, - "speech_therapist": { - "ar": "معالج النطق واللغة", - "ca": "logopeda", - "cs": "logoped", - "da": "talepædagog", - "de": "logopäde", - "en": "speech and language therapist", - "es": "logopeda", - "fi": "puheterapeutti", - "fr": "orthophoniste", - "he": "קלינאי תקשורת", - "hu": "logopédus", - "it": "logopedista", - "ja": "言語聴覚士", - "nb": "logoped", - "nl": "logopedist", - "pl": "logopeda", - "pt": "fonoaudiólogo", - "ru": "логопед", - "sl": "logoped", - "sv": "logoped", - "uk": "логопед" - } - }, - "heritage": { - "": { - "ar": "التراث الثقافي للنمسا", - "bg": "списък на световното културно и природно наследство на юнеско", - "ca": "patrimoni cultural d'àustria", - "cs": "památkově chráněný objekt v rakousku", - "da": "monument historique", - "de": "denkmalgeschütztes objekt in österreich", - "de-ch": "denkmalgeschützte objekte in österreich", - "el": "προστατευόμενο μνημείο", - "en": "denkmalgeschütztes objekt", - "es": "bien de interés patrimonial de austria", - "et": "unesco maailmapärandi nimistu", - "fi": "national register of historic places -luetteloitu kohde", - "fr": "objet classé monument historique", - "he": "מונומנט היסטורי", - "hi": "विश्व धरोहर", - "hr": "svjetska baština", - "hu": "műemlékileg védett objektum", - "id": "monumen perjuangan rakyat", - "is": "heimsminjaskrá unesco", - "ja": "重要文化財", - "ko": "유네스코 세계유산", - "lt": "pasaulio paveldo sąrašas", - "lv": "unesco pasaules mantojuma objekts", - "nb": "denkmalgeschütztes objekt in österreich", - "nl": "beschermd monument in oostenrijk", - "pl": "monument historique", - "pt": "monumento histórico da frança", - "pt-br": "lugar inscrito no registro nacional de lugares históricos", - "ro": "patrimoniu mondial unesco", - "ru": "объект архитектурного наследия австрии", - "sk": "monument historique", - "sl": "unescova svetovna dediščina", - "sr": "историјски споменик", - "sv": "monument historique", - "th": "อนุสรณ์สถานทางประวัติศาสตร์แห่งฝรั่งเศส", - "tr": "tarihi yerler ulusal kayıtları'nda listeli", - "uk": "пам'ятка культурної спадщини", - "vi": "đối tượng thuộc di sản văn hóa ở ba lan", - "zh": "法國國家遺產", - "zh-cn": "法国国家文物保护单位", - "zh-hk": "世界遺產", - "zh-tw": "世界遺產" - }, - "2": { - "ar": "رايكس مونيومنت", - "ca": "monument nacional", - "el": "εθνικό μνημείο της ολλανδίας", - "en": "rijksmonument", - "ja": "国家遺産", - "ru": "объект культурного наследия нидерландов", - "sr": "споменик културног наслеђа холандије", - "uk": "національна пам'ятка нідерландів" - } - }, - "highway": { - "bridleway": { - "cs": "hipostezka", - "de": "saumpfad", - "en": "chukar trail", - "es": "sendero ecuestre", - "fr": "sentier équestre", - "hu": "málhás út", - "it": "ippovia", - "nl": "ruiterpad", - "pl": "dopuszcza się jazdę konną", - "pt": "trilha montada", - "sl": "mulatjera", - "sv": "ridväg", - "zh": "骑马专用道" - }, - "bus_guideway": { - "en": "guided busway" - }, - "bus_stop": { - "ar": "محطة حافلات", - "ca": "parada d'autobús", - "cs": "autobusová zastávka", - "da": "busstoppested", - "de": "bushaltestelle", - "en": "mdmutcd r7-4(9): bus stop (symbol) - no standing any time", - "en-ca": "bus stop", - "en-gb": "bus stop", - "es": "parada de autobús", - "et": "bussipeatus", - "fi": "linja-autopysäkki", - "fr": "arrêt de bus", - "he": "תחנת אוטובוס", - "hr": "autobusna postaja", - "hu": "buszmegálló", - "id": "tempat perhentian bus", - "is": "strætóskýli", - "it": "fermata di autobus", - "ja": "バス停留所", - "ko": "버스 정류장", - "lt": "autobusų stotelė", - "lv": "pietura", - "nb": "bussholdeplass", - "nl": "bushalte", - "pl": "przystanek autobusowy", - "pt": "paragem de autocarro", - "pt-br": "parada de ônibus", - "ru": "автобусная остановка", - "sk": "autobusová zastávka", - "sr": "аутобуско стајалиште", - "sv": "busshållplats", - "tr": "otobüs durağı", - "uk": "автобусна зупинка", - "vi": "điểm dừng xe buýt", - "zh": "巴士站", - "zh-cn": "公交车站", - "zh-tw": "公車站" - }, - "busway": { - "en": "bus-only road", - "es": "vía de autobús", - "fr": "voie de bus", - "ja": "バス専用道路" - }, - "corridor": { - "ar": "قاعة", - "bg": "коридор", - "ca": "passadís", - "cs": "chodba", - "de": "flur", - "el": "διάδρομος", - "en": "corridor", - "es": "pasillo", - "et": "koridor", - "fi": "käytävä", - "fr": "couloir", - "he": "פרוזדור", - "hu": "folyosó", - "id": "lorong", - "it": "corridoio", - "ja": "廊下", - "ko": "복도", - "lt": "koridorius", - "nb": "korridor", - "nl": "gang", - "pl": "korytarz", - "pt": "corredor", - "ru": "коридор", - "sv": "korridor", - "tr": "koridor", - "uk": "коридор", - "zh": "廊" - }, - "crossing": { - "ar": "عبور مشاة", - "bg": "пешеходна пътека", - "ca": "pas de vianants", - "cs": "přechod pro chodce", - "da": "fodgængerfelt", - "de": "fußgängerübergang", - "de-ch": "fussgängerüberweg", - "el": "διάβαση πεζών", - "en": "pedestrian crossing", - "es": "paso de peatones", - "et": "ülekäigurada", - "fi": "suojatie", - "fr": "passage pour piétons en france", - "he": "מעבר חצייה", - "hr": "pješački prijelaz", - "id": "penyeberangan pejalan kaki", - "it": "attraversamento pedonale", - "ja": "横断歩道", - "ko": "횡단보도", - "lv": "gājēju pāreja", - "nb": "fotgjengerovergang", - "nl": "oversteekplaats", - "pl": "przejście dla pieszych", - "pt": "passadeira de peões", - "pt-br": "faixa de pedestres", - "ru": "пешеходный переход", - "sk": "priechod pre chodcov", - "sv": "övergångsställe", - "tr": "yaya geçidi", - "uk": "пішохідний перехід", - "vi": "lối qua đường cho người đi bộ", - "zh": "行人穿越道" - }, - "cycleway": { - "ar": "مرافق منفصلة للدراجات", - "bg": "велосипедна алея", - "ca": "carril bici", - "cs": "stezka pro cyklisty", - "da": "cykelsti", - "de": "fahrradweg", - "el": "ποδηλατόδρομος", - "en": "bike path", - "en-gb": "cycle path", - "es": "ciclovía", - "et": "jalgrattatee", - "fi": "pyörätie", - "fr": "piste cyclable", - "he": "שביל אופניים", - "hr": "biciklistička staza", - "hu": "kerékpárút", - "id": "jalur sepeda", - "is": "hjólaleið", - "it": "pista ciclabile", - "ja": "自転車道", - "ko": "자전거 길", - "lv": "veloceliņš", - "nb": "sykkelvei", - "nl": "fietspad", - "pl": "droga dla rowerów", - "pt": "ciclovia", - "pt-br": "infraestrutura cicloviária", - "ro": "infrastructură de ciclism", - "ru": "велосипедная дорожка", - "sk": "chodník pre cyklistov", - "sr": "biciklistička staza", - "sv": "cykelbana", - "tr": "bisiklet yolu", - "uk": "велосипедна доріжка", - "zh": "單車徑", - "zh-cn": "自行车径" - }, - "elevator": { - "ar": "مصعد", - "bg": "асансьор", - "ca": "ascensor", - "cs": "výtah", - "de": "aufzugsanlage", - "el": "ανελκυστήρας", - "en": "elevator", - "en-gb": "lift", - "es": "ascensor", - "et": "lift", - "fi": "hissi", - "fr": "ascenseur", - "he": "מעלית", - "hi": "उत्थापक", - "hr": "dizalo", - "hu": "felvonó", - "id": "lift", - "is": "lyfta", - "it": "ascensore", - "ja": "エレベーター", - "ko": "엘리베이터", - "lt": "liftas", - "lv": "lifts", - "nb": "heis", - "nl": "lift", - "pl": "winda", - "pt": "elevador", - "ro": "ascensor", - "ru": "лифт", - "sk": "výťah", - "sl": "dvigalo", - "sr": "лифт", - "sv": "hiss", - "th": "ลิฟต์", - "tr": "asansör", - "uk": "ліфт", - "vi": "thang máy", - "zh": "升降机", - "zh-hk": "升降機", - "zh-tw": "升降機" - }, - "emergency_access_point": { - "cs": "bod záchrany", - "de": "rettungspunkt", - "en": "emergency access point" - }, - "emergency_bay": { - "de": "nothaltebucht", - "en": "emergency bay" - }, - "escape": { - "cs": "únikový pruh", - "de": "notfallspur", - "en": "runaway truck ramp", - "es": "zona de frenado de emergencia", - "fr": "voie de détresse", - "it": "uscita di scampo", - "ja": "緊急退避所", - "nl": "noodstopstrook", - "ro": "rampă de urgență", - "sv": "nödstoppsavfart", - "tr": "acil kaçış rampası", - "uk": "рампа для аварійної зупинки автомобіля", - "zh": "避险车道" - }, - "footway": { - "ar": "ممشى", - "ca": "passatge", - "cs": "pěšina", - "da": "passage", - "de": "passage", - "el": "στοά", - "en": "chukar trail", - "es": "pasaje", - "fi": "jalankulkukäytävä", - "fr": "passage", - "he": "מסדרון", - "hr": "pješačka staza", - "hu": "gyalogút", - "id": "jalan setapak", - "it": "passaggio", - "ja": "フットパス", - "ko": "길", - "nb": "passasje", - "nl": "passage", - "pl": "piesze wędrówki dozwolone", - "pt": "passadiço", - "ro": "drum pietonal", - "ru": "проход", - "sl": "prehod", - "sr": "шеталиште", - "sv": "passage", - "th": "ถนนคนเดิน", - "tr": "yaya geçidi", - "uk": "прохід", - "vi": "đường đi bộ", - "zh": "步道" - }, - "give_way": { - "ar": "أعط الأفضلية", - "ca": "cediu el pas", - "de": "vorfahrt gewähren zeichen", - "en": "yield sign", - "es": "ceda el paso", - "fi": "väistämisvelvollisuus", - "fr": "panneau de signalisation de cédez-le-passage", - "he": "זכות קדימה", - "it": "segnale di dare precedenza", - "ko": "양보 표지", - "nb": "vikepliktsskilt", - "nl": "voorrangsbord", - "pt": "sinal de cedência de passagem", - "ru": "уступите дорогу", - "sv": "väjningspliktsskylt", - "tr": "yol ver i̇şareti", - "uk": "дати дорогу", - "zh": "让行标志" - }, - "living_street": { - "bg": "уикипедия:инкубатор/статии/жилищна зона", - "ca": "carrer residencial", - "cs": "obytná zóna", - "de": "verkehrsberuhigter bereich", - "de-ch": "begegnungszone", - "en": "living street", - "es": "calle residencial", - "et": "õueala", - "fi": "pihakatu", - "fr": "zone résidentielle", - "is": "vistgata", - "ja": "コミュニティ道路", - "nb": "gatetun", - "nl": "erf (nl)", - "pl": "strefa zamieszkania", - "pt-br": "rua viva", - "ru": "жилая зона", - "sk": "obytná zóna", - "sv": "gångfartsområde", - "tr": "sevgi yolu", - "uk": "житлова зона", - "zh": "生活化道路" - }, - "milestone": { - "ca": "fita quilomètrica", - "cs": "kilometrovník", - "de": "kilometerstein", - "en": "highway location marker", - "es": "hito kilométrico", - "fr": "pierre du kilomètre", - "it": "segnale di progressiva chilometrica", - "ja": "距離標", - "nl": "afstandspaal", - "pl": "słupek kilometrowy", - "pt": "marco quilométrico", - "ru": "километровый знак", - "uk": "кілометровий знак", - "zh": "距離標示" - }, - "mini_roundabout": { - "cs": "miniokružní křižovatka", - "de": "minikreisverkehr", - "en": "mini roundabout", - "nl": "minirotonde" - }, - "motorway": { - "ar": "طريق سيار", - "bg": "автомагистрала", - "ca": "autopista", - "cs": "dálnice", - "da": "motorvej", - "de": "autobahn", - "el": "αυτοκινητόδρομος", - "en": "controlled-access highway", - "en-gb": "motorway", - "es": "autopista", - "et": "kiirtee", - "fi": "moottoritie", - "fr": "autoroute", - "he": "כביש מהיר", - "hr": "autocesta", - "hu": "autópálya", - "id": "jalan bebas hambatan terkendali", - "is": "hraðbraut", - "it": "autostrada", - "ja": "高速道路", - "ko": "고속도로", - "lt": "automagistralė", - "lv": "automaģistrāle", - "nb": "motorvei", - "nl": "autosnelweg", - "pl": "autostrada", - "pt": "autoestrada", - "ro": "autostradă", - "ru": "автомагистраль", - "sk": "diaľnica", - "sl": "avtocesta", - "sr": "ауто-пут", - "sv": "motorväg", - "th": "ทางด่วน", - "tr": "otoyol", - "uk": "автомагістраль", - "vi": "đường cao tốc", - "zh": "高速公路" - }, - "motorway_junction": { - "cs": "dálniční sjezd", - "de": "anschlussstelle", - "de-ch": "verzweigung", - "en": "junction", - "fr": "sortie", - "ja": "ジャンクション", - "nl": "aansluiting", - "pl": "węzeł drogowy", - "ru": "место примыкания дороги", - "sv": "trafikplats", - "zh": "高速公路出入口" - }, - "motorway_link": { - "ca": "rampa", - "cs": "rampa", - "en": "ramp", - "fr": "bretelle", - "nb": "filterfelt" - }, - "passing_place": { - "de": "ausweichstelle", - "en": "passing place", - "nb": "møteplass", - "nl": "uitwijkplaats" - }, - "path": { - "ar": "مسلك", - "ca": "camí", - "cs": "cesta", - "da": "sti", - "de": "weg", - "en": "path", - "es": "camino", - "fi": "polku", - "fr": "chemin", - "he": "שביל", - "hu": "ösvény", - "id": "jalan setapak", - "it": "cammino", - "ja": "小道", - "ko": "트레일", - "nb": "sti", - "nl": "voetpad", - "pl": "ścieżka", - "pt": "caminho", - "pt-br": "trilha", - "ru": "тропа", - "sl": "pot", - "sr": "стаза", - "sv": "gångstig", - "tr": "patika", - "uk": "стежка", - "zh": "小径" - }, - "pedestrian": { - "ca": "carrer de vianants", - "cs": "pěší zóna", - "da": "gågade", - "de": "fußgängerzone", - "el": "πεζόδρομος", - "en": "pedestrian zone", - "es": "calle peatonal", - "fi": "kävelykatu", - "fr": "zone piétonne", - "he": "מדרחוב", - "hr": "pješačka zona", - "hu": "gyalogos zóna", - "id": "kawasan pejalan kaki", - "is": "göngugata", - "it": "isola pedonale", - "ja": "歩行者空間", - "ko": "보행자 공간", - "nb": "gågate", - "nl": "voetgangersgebied", - "pl": "strefa piesza", - "pt": "pedonal", - "ro": "zonă pietonală", - "ru": "пешеходная зона", - "sk": "pešia zóna", - "sl": "pešcona", - "sr": "пешачка зона", - "sv": "gågata", - "th": "ถนนคนเดิน", - "tr": "yaya bölgesi", - "uk": "пішохідна зона", - "vi": "phố đi bộ", - "zh": "步行街", - "zh-hk": "行人專用區", - "zh-tw": "徒步區" - }, - "primary_link": { - "en": "slip lane", - "nb": "filterfelt" - }, - "raceway": { - "ar": "حلبة سباق", - "bg": "писта за автомобилни състезания", - "ca": "circuit", - "cs": "závodiště", - "da": "væddeløbsbane", - "de": "rennstrecke", - "de-ch": "motorsport-rennstrecke", - "el": "πίστα αγώνων", - "en": "race track", - "es": "circuito de carreras", - "et": "ringrada", - "fi": "kilparata", - "fr": "circuit", - "he": "מסלול מרוצים", - "hu": "versenypálya", - "id": "tempat balap", - "it": "circuito", - "ja": "レース場", - "ko": "경주로", - "lv": "sacīkšu trase", - "nb": "racerbane", - "nl": "circuit", - "pl": "tor wyścigowy", - "pt": "autódromo", - "ru": "гоночная трасса", - "sk": "pretekársky okruh", - "sl": "dirkališče", - "sr": "тркачка стаза", - "sv": "racerbana", - "tr": "yarış pisti", - "vi": "đường đua", - "zh": "賽車場" - }, - "residential": { - "de": "anliegerstraße", - "en": "residential street", - "es": "calle residencial", - "fr": "rue résidentielle", - "ja": "住宅地区内の道路", - "pt": "rua residencial" - }, - "rest_area": { - "ar": "استراحة", - "ca": "berenador", - "cs": "odpočívka", - "da": "rasteplads (vej)", - "de": "raststätte", - "de-ch": "autobahnraststätte", - "el": "σταθμός εξυπηρέτησης αυτοκινητιστών", - "en": "rest area", - "es": "área de servicio", - "fi": "levähdysalue", - "fr": "aire de repos et de service", - "he": "אזור שירות", - "id": "tempat istirahat", - "it": "area di servizio", - "ja": "休憩所 (道路施設)", - "ko": "고속도로 휴게소", - "nb": "rasteplass", - "nl": "verzorgingsplaats", - "pl": "miejsce obsługi podróżnych", - "ru": "зона отдыха на автомагистрали", - "sk": "odpočívadlo", - "sv": "rastplats", - "th": "ที่พักริมทาง", - "tr": "dinlenme tesisi", - "uk": "місця відпочинку", - "zh": "公路服務區" - }, - "road": { - "ar": "طريق", - "bg": "път", - "ca": "carretera", - "cs": "silnice", - "da": "vej", - "de": "straße", - "de-ch": "strasse", - "el": "δρόμος", - "en": "road", - "es": "carretera", - "et": "tee", - "fi": "tie", - "fr": "route", - "he": "כביש", - "hi": "सड़क", - "hr": "cesta", - "hu": "út", - "id": "jalan", - "is": "vegur", - "it": "strada", - "ja": "道路", - "ko": "도로", - "lt": "kelias", - "lv": "ceļš", - "nb": "vei", - "nl": "weg", - "pl": "droga", - "pt": "estrada", - "ro": "drum", - "ru": "дорога", - "sk": "cesta", - "sl": "cesta", - "sr": "пут", - "sv": "väg", - "th": "ถนน", - "tr": "yol", - "uk": "дорога", - "vi": "đường giao thông", - "zh": "道路" - }, - "secondary": { - "de-ch": "landesstrasse", - "en": "landesstraße", - "ru": "государственная дорога в австрии и германии" - }, - "secondary_link": { - "en": "slip lane", - "nb": "filterfelt" - }, - "speed_camera": { - "ar": "كاميرا مراقبة السرعة", - "bg": "спийд камери", - "ca": "radar de trànsit", - "cs": "detektor rychlosti", - "da": "automatisk trafikkontrol", - "de": "geschwindigkeitsüberwachung", - "en": "traffic enforcement camera", - "es": "radar de tráfico", - "et": "statsionaarne kiiruskaamera", - "fi": "nopeusvalvontakamera", - "fr": "radar automatique", - "he": "מכמונת מהירות", - "hr": "foto-radar", - "hu": "traffipax", - "id": "kamera etle", - "ja": "速度違反自動取締装置", - "lv": "fotoradars", - "nb": "automatisk trafikkontroll", - "nl": "flitspaal", - "pl": "fotoradar", - "ru": "камера безопасности дорожного движения", - "sl": "kamera za nadzor prometa", - "sv": "trafiksäkerhetskamera", - "zh": "电子警察" - }, - "spiral_staircase": { - "ca": "escala de caragol", - "cs": "točité schodiště", - "de": "wendeltreppe", - "en": "helical stairs", - "es": "escalera de caracol", - "fi": "kierreportaat", - "fr": "escalier en colimaçon", - "hu": "csigalépcső", - "it": "scala a chiocciola", - "ja": "螺旋階段", - "nl": "wenteltrap", - "pl": "schody kręcone", - "ru": "винтовая лестница", - "sv": "spiraltrappa" - }, - "steps": { - "ar": "درج", - "bg": "стълбище", - "ca": "escala", - "cs": "schodiště", - "da": "trappe", - "de": "treppe", - "de-at": "stiege", - "el": "σκάλα", - "en": "stairs", - "es": "escalera", - "et": "trepp", - "fi": "portaat", - "fr": "escalier", - "he": "מדרגות", - "hr": "stubište", - "hu": "lépcső", - "id": "tangga", - "is": "stigi", - "it": "scala", - "ja": "階段", - "ko": "계단", - "lt": "laiptinė", - "lv": "kāpnes", - "nb": "trapp", - "nl": "trap", - "pl": "schody", - "pt": "escada", - "ro": "scară", - "ru": "лестница", - "sk": "schodisko", - "sl": "stopnice", - "sr": "степениште", - "sv": "trappa", - "th": "บันได", - "tr": "merdiven", - "uk": "сходи", - "vi": "cầu thang", - "zh": "楼梯", - "zh-tw": "樓梯" - }, - "stop": { - "ar": "علامة قف", - "ca": "estop", - "de": "stoppschild", - "en": "stop sign", - "es": "señal de detención obligatoria", - "fi": "stop (liikennemerkki)", - "fr": "panneau stop", - "he": "תמרור עצור", - "hu": "stoptábla", - "id": "rambu berhenti", - "it": "segnale di stop", - "ja": "一時停止標識", - "lv": "stop zīme", - "nb": "stoppskilt", - "nl": "stopbord", - "pt": "sinal de stop", - "ro": "indicator de oprire", - "ru": "движение без остановки запрещено", - "sv": "stoppskylt", - "th": "ป้ายหยุด", - "tr": "dur işareti", - "uk": "проїзд без зупинки заборонено", - "zh": "停车让行" - }, - "street_lamp": { - "ar": "إنارة الشوارع", - "bg": "улично осветление", - "ca": "enllumenat públic", - "cs": "lampa veřejného osvětlení", - "da": "gadebelysning", - "de": "straßenlaterne", - "de-ch": "strassenbeleuchtung", - "en": "streetlight", - "es": "alumbrado público", - "et": "tänavavalgusti", - "fi": "katuvalo", - "fr": "réverbère", - "he": "פנס רחוב", - "id": "lampu jalan", - "it": "lampione", - "ja": "街灯", - "ko": "가로등", - "nb": "gatebelysning", - "nl": "straatverlichting", - "pl": "latarnia uliczna", - "pt": "iluminação pública", - "ru": "уличное освещение", - "sl": "ulična svetilka", - "sv": "gatubelysning", - "tr": "sokak lambası", - "uk": "зовнішнє освітлення", - "vi": "đèn đường", - "zh": "街燈" - }, - "tertiary": { - "ca": "camí d'accés", - "en": "access road", - "es": "vía de acceso", - "hu": "bekötőút" - }, - "tertiary_link": { - "en": "slip lane", - "nb": "filterfelt" - }, - "toll_gantry": { - "de": "mautbrücke", - "en": "toll gantry" - }, - "track": { - "ar": "مسلك", - "bg": "черен път", - "ca": "sender", - "cs": "stezka", - "da": "sti", - "de": "weg", - "en": "4wd trail", - "en-ca": "dirt road", - "en-gb": "dirt road", - "es": "senda", - "et": "pinnastee", - "fi": "polku", - "fr": "sentier", - "he": "שביל", - "hr": "zemljana cesta", - "hu": "út", - "it": "sentiero", - "ja": "道", - "ko": "트레일", - "lt": "gruntinis kelias", - "nb": "sti", - "nl": "pad", - "pl": "ścieżka", - "pt": "percurso pedestre", - "pt-br": "trilha", - "ru": "тропа", - "sl": "steza", - "sr": "стаза", - "sv": "gångstig", - "tr": "patika", - "uk": "стежка", - "zh": "小径" - }, - "traffic_mirror": { - "de": "verkehrsspiegel", - "en": "traffic mirror", - "ja": "道路反射鏡", - "pt": "espelho rodoviário", - "ru": "дорожное зеркало" - }, - "traffic_signals": { - "ar": "إشارة ضوئية", - "bg": "светофар", - "ca": "semàfor", - "cs": "světelné signalizační zařízení", - "da": "trafiksignal", - "de": "ampel", - "el": "φωτεινός σηματοδότης", - "en": "traffic light", - "es": "semáforo", - "et": "valgusfoor", - "fi": "liikennevalo-ohjaus", - "fr": "feu de circulation", - "he": "רמזור", - "hr": "semafor", - "hu": "közlekedési lámpa", - "id": "lampu lalu lintas", - "is": "umferðarljós", - "it": "semaforo", - "ja": "信号機", - "ko": "신호등", - "lt": "šviesoforas", - "lv": "luksofors", - "nb": "trafikklys", - "nl": "verkeerslicht", - "pl": "sygnalizacja świetlna", - "pt": "semáforo", - "ro": "semafor", - "ru": "cветофор", - "sk": "svetelné signalizačné zariadenia", - "sl": "semafor", - "sr": "семафор", - "sv": "trafiksignal", - "th": "ไฟจราจร", - "tr": "trafik ışığı", - "uk": "світлофор", - "vi": "đèn giao thông", - "zh": "交通號誌", - "zh-cn": "信號燈" - }, - "trailhead": { - "ca": "sortida de sender", - "en": "trailhead", - "fr": "départ de sentier" - }, - "trunk": { - "ar": "طريق رئيسية", - "ca": "carretera troncal", - "cs": "dálková silnice", - "da": "motortrafikvej", - "de": "fernstraße", - "de-ch": "fernstrasse", - "en": "trunk road", - "es": "carretera troncal", - "fi": "kantatie", - "fr": "route nationale", - "hu": "országos főút", - "id": "jalan raya", - "it": "strada provinciale", - "ja": "幹線道路 (イギリス)", - "nb": "stamvei", - "nl": "provinciale weg", - "pl": "droga krajowa", - "pt-br": "via troncal", - "ro": "drum strategic", - "ru": "магистральная дорога", - "sv": "stamväg", - "tr": "ana yol", - "uk": "магістральна дорога", - "zh": "主干道" - }, - "trunk_link": { - "ca": "rampa", - "cs": "rampa", - "en": "ramp", - "fr": "bretelle", - "nb": "filterfelt" - }, - "turning_loop": { - "de": "wendestelle", - "en": "turning circle" - }, - "via_ferrata": { - "ca": "via ferrada", - "cs": "zajištěná cesta", - "de": "klettersteig", - "en": "via ferrata", - "es": "vía ferrata", - "he": "דרך ברזל", - "ja": "ヴィア・フェラータ", - "ko": "비아 페라타", - "ru": "виа феррата", - "sk": "zaistená cesta", - "sl": "zavarovana plezalna pot", - "uk": "віа феррата" - } - }, - "historic": { - "": { - "ar": "مصر القديمة", - "bg": "древен египет", - "ca": "antic egipte", - "cs": "starověký egypt", - "da": "oldtidens kina", - "de": "chinesisches altertum", - "de-ch": "antikes griechenland", - "el": "αρχαία αίγυπτος", - "en": "ancient china", - "en-ca": "ancient egypt", - "en-gb": "ancient egypt", - "es": "antiguo egipto", - "et": "vana-hiina", - "fi": "muinainen egypti", - "fr": "égypte antique", - "he": "סין העתיקה", - "hi": "प्राचीन मिस्र", - "hr": "drevni egipat", - "hu": "kínai ókor", - "id": "mesir kuno", - "is": "egyptaland hið forna", - "it": "antico egitto", - "ja": "古代エジプト", - "ko": "고대 이집트", - "lt": "senovės egiptas", - "lv": "senā ķīna", - "nb": "oldtidens egypt", - "nl": "oud china", - "pl": "starożytny egipt", - "pt": "antigo egito", - "ro": "egiptul antic", - "ru": "древний китай", - "sk": "staroveký egypt", - "sl": "stari egipt", - "sr": "стари египат", - "sv": "antikens kina", - "th": "อียิปต์โบราณ", - "tr": "antik mısır", - "uk": "стародавній єгипет", - "vi": "trung hoa cổ", - "zh": "古埃及" - }, - "archaeological_site": { - "ar": "موقع أثري", - "bg": "археологически обект", - "ca": "jaciment arqueològic", - "cs": "archeologická lokalita", - "da": "arkæologisk område", - "de": "archäologische stätte", - "el": "αρχαιολογική θέση", - "en": "archaeological site", - "es": "yacimiento arqueológico", - "et": "muistis", - "fi": "arkeologinen kohde", - "fr": "site archéologique", - "he": "אתר ארכאולוגי", - "hi": "पुरातत्व स्थल", - "hr": "arheološko nalazište", - "hu": "régészeti lelőhely", - "id": "situs arkeologi", - "it": "sito archeologico", - "ja": "遺跡", - "ko": "유적지", - "lt": "archeologinė vieta", - "lv": "arheoloģiskais piemineklis", - "nb": "arkeologisk funnsted", - "nl": "archeologische vindplaats", - "pl": "stanowisko archeologiczne", - "pt": "sítio arqueológico", - "ro": "sit arheologic", - "ru": "археологическое место", - "sk": "archeologická lokalita", - "sl": "arheološko najdišče", - "sr": "археолошко налазиште", - "sv": "arkeologisk lokal", - "th": "โบราณสถาน", - "tr": "arkeolojik sit", - "uk": "місце розкопок", - "vi": "di chỉ", - "zh": "遺跡", - "zh-hk": "遺蹟" - }, - "bailey": { - "el": "οχυρωματικός περίβολος", - "en": "ward", - "es": "palenque", - "fi": "esilinna", - "hr": "podgradje", - "hu": "belső várudvar", - "ja": "ベーリー", - "ru": "двор крепости", - "sl": "podgradje", - "sv": "förborg" - }, - "battlefield": { - "ar": "مسرح الحرب", - "bg": "театър", - "ca": "teatre d'operacions", - "cs": "válčiště", - "da": "krigsskueplads", - "de": "kriegsschauplatz", - "el": "θέατρο επιχειρήσεων", - "en": "theatre", - "en-ca": "theater", - "es": "teatro de operaciones", - "fi": "sotatoimialue", - "fr": "théâtre militaire", - "he": "זירה", - "hr": "ratište", - "hu": "hadszíntér", - "id": "teater", - "it": "teatro bellico", - "ja": "戦域", - "ko": "전구 (전쟁)", - "lt": "karo teatras", - "lv": "karadarbības teātris", - "nb": "region", - "nl": "strijdtoneel", - "pl": "teatr działań wojennych", - "pt": "teatro de operações", - "ro": "teatru de operațiuni", - "ru": "театр военных действий", - "sk": "dejisko bojových operácií", - "sr": "ратиште", - "sv": "krigsskådeplats", - "tr": "askerî saha", - "uk": "театр військових дій", - "vi": "mặt trận", - "zh": "戰區" - }, - "cannon": { - "ar": "مدفع", - "bg": "топ", - "ca": "canó", - "cs": "kanón", - "da": "kanon", - "de": "kanone", - "el": "κανόνι", - "en": "cannon", - "es": "cañón", - "et": "kahur", - "fi": "kanuuna", - "fr": "canon", - "he": "תותח", - "hi": "तोप", - "hr": "top", - "hu": "ágyú", - "id": "meriam", - "is": "fallbyssa", - "it": "cannone", - "ja": "カノン砲", - "ko": "캐넌", - "lt": "patranka", - "lv": "lielgabals", - "nb": "kanon", - "nl": "kanon", - "pl": "armata", - "pt": "canhão", - "ro": "tun", - "ru": "пушка", - "sk": "kanón", - "sl": "top", - "sr": "топ", - "sv": "kanon", - "th": "ปืนใหญ่", - "tr": "savaş topu", - "uk": "гармата", - "vi": "súng thần công", - "zh": "加农炮" - }, - "castle": { - "ar": "قلعة", - "bg": "замък", - "ca": "castell", - "cs": "hrad", - "da": "borg", - "de": "burg", - "el": "κάστρο", - "en": "castle", - "es": "castillo", - "et": "linnus", - "fi": "linna", - "fr": "château fort", - "he": "טירה", - "hi": "गढ़", - "hr": "utvrda", - "hu": "vár", - "id": "kastel", - "is": "kastali", - "it": "castello", - "ja": "城", - "ko": "성", - "lt": "pilis", - "lv": "viduslaiku pils", - "nb": "borg", - "nl": "burcht", - "pl": "zamek", - "pt": "castelo", - "ro": "castel", - "ru": "замок", - "sk": "hrad", - "sl": "grad", - "sr": "замак", - "sv": "borg", - "th": "ปราสาท", - "tr": "şato", - "uk": "замок", - "vi": "lâu đài", - "zh": "城堡" - }, - "cattle_crush": { - "de": "klauenstand", - "en": "cattle crush", - "es": "potro de herrar", - "fr": "travail à ferrer", - "it": "arle travaglio", - "nl": "klauwbekapbox", - "pl": "poskrom", - "pt": "brete", - "uk": "станок (тваринництво)" - }, - "city_gate": { - "ar": "بوابة مدينة", - "ca": "porta de ciutat", - "cs": "městská brána", - "da": "byport", - "de": "stadttor", - "el": "πύλη της πόλης", - "en": "city gate", - "es": "puerta de la ciudad", - "et": "linnavärav", - "fi": "kaupungin portti", - "fr": "porte de ville", - "he": "שער העיר", - "hu": "városkapu", - "id": "gerbang kota (kuno)", - "it": "porta cittadina", - "ja": "城門", - "ko": "성문", - "nb": "byport", - "nl": "stadspoort", - "pl": "brama miejska", - "pt": "porta da cidade", - "pt-br": "portas da cidade", - "ru": "городские ворота", - "sk": "mestská brána", - "sl": "mestna vrata", - "sr": "капија града", - "sv": "stadsport", - "tr": "şehir kapısı", - "uk": "міська брама", - "vi": "cửa ô", - "zh": "城門" - }, - "citywalls": { - "ar": "أسوار مدينة", - "ca": "muralla urbana", - "cs": "městské hradby", - "da": "bymur", - "de": "stadtmauer", - "el": "τείχη της πόλης", - "en": "city walls", - "en-gb": "city wall", - "es": "muralla urbana", - "et": "linnamüür", - "fi": "kaupunginmuuri", - "fr": "rempart de ville", - "he": "חומות עיר", - "hu": "városfal", - "it": "mura cittadine", - "ja": "市壁", - "nb": "bymur", - "nl": "stadsmuur", - "pl": "mury miejskie", - "pt": "muralhas da cidade", - "ru": "городская стена", - "sl": "mestni zidovi", - "sv": "ringmur", - "tr": "sur", - "uk": "стіна міста", - "zh": "城墙" - }, - "epigraph": { - "ar": "نقش", - "bg": "надпис", - "ca": "inscripció", - "cs": "nápis", - "da": "indskrift", - "de": "inschrift", - "el": "επιγραφή", - "en": "inscription", - "es": "inscripción", - "et": "raidkiri", - "fi": "piirtokirjoitus", - "he": "כתובת", - "hr": "natpis", - "hu": "felirat", - "id": "prasasti", - "it": "iscrizione", - "ja": "碑文", - "nb": "inskripsjon", - "nl": "inscriptie", - "pl": "inskrypcja", - "pt": "inscrição", - "ru": "надпись", - "sr": "натпис", - "sv": "inskription", - "tr": "yazıt", - "uk": "інскрипція", - "zh": "碑文" - }, - "fort": { - "ar": "حصن", - "bg": "форт", - "el": "οχυρό", - "en": "fort", - "es": "fuerte", - "fi": "linnake", - "he": "מצודה", - "hr": "utvrda", - "hu": "erőd", - "id": "benteng", - "it": "forte", - "ja": "砦", - "lt": "fortas", - "lv": "forts", - "pt": "forte", - "ru": "форт", - "th": "ป้อม", - "tr": "hisar", - "uk": "форт", - "zh": "堡" - }, - "heritage": { - "ar": "التراث الثقافي", - "bg": "културно наследство", - "ca": "patrimoni cultural", - "cs": "kulturní dědictví", - "da": "kulturarv", - "de": "kulturerbe", - "el": "πολιτιστική κληρονομιά", - "en": "cultural heritage", - "es": "patrimonio cultural", - "et": "kultuuripärand", - "fi": "kulttuuriperintö", - "fr": "patrimoine culturel", - "he": "מורשת תרבותית", - "hr": "kulturna baština", - "hu": "kulturális örökség", - "id": "warisan budaya", - "it": "patrimonio culturale", - "ja": "文化遺産", - "ko": "문화유산", - "lt": "kultūros paveldas", - "lv": "kultūras mantojums", - "nb": "kulturarv", - "nl": "cultureel erfgoed", - "pl": "dziedzictwo kulturowe", - "pt": "património cultural", - "pt-br": "patrimônio cultural", - "ro": "patrimoniu cultural", - "ru": "культурное наследие", - "sk": "kultúrne dedičstvo", - "sl": "kulturna dediščina", - "sr": "културна баштина", - "sv": "kulturarv", - "th": "มรดกทางวัฒนธรรม", - "tr": "kültürel miras", - "uk": "культурна спадщина", - "vi": "di sản văn hóa", - "zh": "文化遺產", - "zh-cn": "文化遗产" - }, - "manor": { - "ar": "قصر مالك العزبة", - "ca": "casa pairal", - "cs": "panské sídlo", - "da": "herregård", - "de": "herrenhaus", - "el": "αγροτική έπαυλη", - "en": "manor house", - "es": "casa señorial", - "et": "härrastemaja", - "fi": "kartanon päärakennus", - "fr": "manoir", - "he": "אחוזה", - "hr": "kurija", - "hu": "udvarház", - "id": "rumah bangsawan", - "it": "maniero", - "ja": "マナー・ハウス", - "ko": "매너하우스", - "lt": "dvaras", - "lv": "muižas dzīvojamā ēka", - "nb": "herregård", - "nl": "manoir", - "pl": "dwór", - "pt": "solar", - "ro": "conac", - "ru": "усадебный дом", - "sk": "kaštieľ", - "sl": "dvor", - "sr": "каштел", - "sv": "herrgårdshus", - "tr": "malikane", - "uk": "маєток", - "zh": "莊園大屋" - }, - "memorial": { - "ar": "نصب تذكاري", - "bg": "мемориал", - "cs": "památník", - "da": "mindesmærke", - "de": "gedenkstätte", - "el": "μνημείο", - "en": "memorial", - "es": "monumento conmemorativo", - "et": "memoriaal", - "fi": "muistomerkki", - "fr": "mémorial", - "he": "אתר הנצחה", - "hr": "spomenik", - "hu": "emlékhely", - "is": "minnisvarði", - "it": "monumento commemorativo", - "ja": "記念物", - "ko": "기념물", - "lt": "memorialas", - "lv": "memoriāls", - "nb": "minnesmerke", - "nl": "gedenkteken", - "pl": "miejsce pamięci", - "pt": "monumento comemorativo", - "ru": "мемориал", - "sl": "spomenik", - "sr": "споменик", - "sv": "minnesmärke", - "th": "อนุสรณ์", - "uk": "меморіал", - "zh": "紀念建築", - "zh-tw": "紀念物" - }, - "milestone": { - "ar": "علامة المسافات", - "bg": "километричен камък", - "ca": "fita", - "cs": "milník", - "da": "milepæl", - "de": "königlich-sächsischer meilenstein", - "el": "οδοδείκτης", - "en": "royal saxon milestone", - "en-gb": "milestone", - "es": "miliario", - "fi": "kilometripylväs", - "fr": "borne routière", - "he": "אבן מיל", - "hi": "संगमील", - "hr": "miljokaz", - "id": "pal", - "it": "pietra miliare", - "ja": "マイルストーン", - "ko": "이정표", - "nb": "milepæl", - "nl": "mijlpaal", - "pl": "słup milowy", - "pt": "marco miliário", - "ro": "bornă rutieră", - "ru": "милевой камень", - "sv": "milsten", - "th": "หลักกิโลเมตร", - "tr": "mil taşı", - "uk": "мильовий камінь", - "zh": "里程碑" - }, - "monument": { - "ar": "معلم تذكاري", - "bg": "паметник", - "cs": "pomník", - "de": "denkmal", - "el": "μνημείο", - "en": "monument", - "es": "monumento", - "et": "mälestusmärk", - "fi": "monumentti", - "he": "מונומנט", - "hi": "स्मारक", - "hr": "spomenik", - "hu": "emlékmű", - "id": "monumen", - "it": "monumento", - "ja": "モニュメント", - "ko": "기념물", - "lt": "paminklas", - "lv": "piemineklis", - "nl": "gedenkmonument", - "pl": "pomnik", - "pt": "monumento", - "ru": "памятник", - "sl": "spomenik", - "sr": "споменик", - "sv": "minnesmärke", - "th": "อนุสรณ์สถาน", - "tr": "anıt", - "uk": "пам'ятник", - "vi": "tượng đài", - "zh": "紀念建築物" - }, - "palace": { - "ar": "قصر", - "bg": "дворец", - "ca": "palau", - "cs": "palác", - "da": "palads", - "de": "palast", - "el": "παλάτι", - "en": "palace", - "es": "palacio", - "et": "palee", - "fi": "palatsi", - "fr": "palais", - "he": "ארמון", - "hi": "महल", - "hr": "palača", - "hu": "palota", - "id": "istana", - "is": "höll", - "it": "palazzo", - "ja": "宮殿", - "ko": "궁전", - "lt": "rūmai", - "lv": "pils", - "nb": "palass", - "nl": "paleis", - "pl": "pałac", - "pt": "palácio", - "ro": "palat", - "ru": "дворец", - "sk": "palác", - "sl": "palača", - "sr": "сарај", - "sv": "palats", - "th": "วัง", - "tr": "saray", - "uk": "палац", - "vi": "cung điện", - "zh": "宮殿", - "zh-cn": "宫殿" - }, - "pillory": { - "ar": "مشهرة", - "bg": "позорен стълб", - "ca": "costell", - "cs": "pranýř", - "da": "kag", - "de": "pranger", - "el": "κύφωνας", - "en": "pillory", - "es": "picota", - "et": "häbipost", - "fr": "pilori", - "he": "עמוד הקלון", - "hr": "stup srama", - "hu": "pellengér", - "it": "gogna", - "ja": "さらし台", - "nb": "gapestokk", - "nl": "schandpaal", - "pl": "pręgierz", - "pt": "pelourinho", - "ro": "stâlpul infamiei", - "ru": "позорный столб", - "sk": "pranier", - "sl": "sramotilni steber", - "sv": "skampåle", - "uk": "ганебний стовп", - "zh": "頸手枷" - }, - "ruins": { - "ar": "أنقاض", - "bg": "развалина", - "ca": "ruïna", - "cs": "zřícenina", - "da": "ruin", - "de": "ruine", - "el": "ερείπια", - "en": "ruins", - "es": "ruinas", - "et": "vare", - "fi": "raunio", - "fr": "ruine", - "he": "חורבות", - "hi": "खंडहर", - "hr": "ruševine", - "hu": "rom", - "it": "rovine", - "ja": "廃墟", - "ko": "폐허", - "lt": "griuvėsiai", - "lv": "drupas", - "nb": "ruiner", - "nl": "ruïne", - "pl": "ruiny", - "pt": "ruína", - "ro": "ruină", - "ru": "руины", - "sk": "ruina", - "sl": "ruševina", - "sr": "рушевина", - "sv": "ruin", - "th": "ซากปรักหักพัง", - "tr": "harabe", - "uk": "руїни", - "zh": "廢墟", - "zh-cn": "废墟" - }, - "rune_stone": { - "ar": "الشاهد القائم الروني", - "bg": "рунически камък", - "ca": "runestone nòrdica", - "cs": "severský runový kámen", - "da": "nordisk runesten", - "de": "nordischer runenstein", - "el": "ρουνική λίθος", - "en": "norse runestone", - "es": "piedra rúnica nórdica", - "et": "ruunikivi", - "fi": "riimukivi", - "fr": "pierre runique norse", - "he": "אבן רונה", - "id": "batu rune", - "it": "pietra runica", - "ja": "ルーン石碑", - "ko": "룬돌", - "lt": "runų akmuo", - "nb": "runestein", - "nl": "noorse runensteen", - "pl": "kamienie runiczne", - "pt": "pedra rúnica", - "ru": "рунический камень", - "sl": "runski kamen", - "sr": "рунски камен", - "sv": "nordisk runsten", - "tr": "runik taşlar", - "uk": "рунічний камінь", - "zh": "如尼石刻" - }, - "ship": { - "bg": "кораб-музей", - "ca": "vaixell museu", - "cs": "muzejní loď", - "da": "museumsskib", - "de": "museumsschiff", - "el": "πλωτό μουσείο", - "en": "museum ship", - "es": "barco museo", - "et": "muuseumlaev", - "fi": "museolaiva", - "fr": "navire musée", - "he": "ספינת מוזיאון", - "hu": "múzeumhajó", - "is": "safnskip", - "it": "nave museo", - "ja": "博物館船", - "ko": "박물관 배", - "nb": "museumsfartøy", - "nl": "museumschip", - "pl": "statek muzeum", - "pt": "navio-museu", - "ru": "корабль-музей", - "sr": "музејски брод", - "sv": "museifartyg", - "th": "พิพิธภัณฑ์เรือ", - "tr": "müze gemi", - "uk": "корабель-музей", - "zh": "博物館船" - }, - "tomb": { - "ar": "قبر", - "bg": "гробница", - "ca": "tomba", - "cs": "hrobka", - "da": "gravmæle", - "de": "grab", - "el": "τάφος", - "en": "tomb", - "es": "tumba", - "fi": "hautakammio", - "fr": "tombeau", - "he": "קבר", - "hr": "grobnica", - "hu": "sírkamra", - "id": "pusara", - "is": "grafhýsi", - "it": "tomba", - "ja": "墓", - "ko": "무덤", - "nb": "gravmæle", - "nl": "graftombe", - "pl": "grobowiec", - "pt": "tumba", - "ro": "cavou", - "ru": "гробница", - "sk": "hrobka", - "sl": "grobnica", - "sv": "gravvård", - "th": "ที่เก็บศพ", - "tr": "türbe", - "uk": "усипальниця", - "vi": "ngôi mộ", - "zh": "石墓" - }, - "tree_shrine": { - "cs": "svatý obrázek u cesty", - "de": "bildbaum", - "en": "tree shrine", - "hu": "képesfa" - }, - "wayside_cross": { - "ca": "creu de terme", - "cs": "kříž u cesty", - "da": "vejsidekors", - "de": "flurkreuz", - "en": "wayside cross", - "es": "cruz de término", - "fr": "croix de chemin", - "hr": "križ krajputaš", - "hu": "út menti kereszt", - "it": "croce votiva", - "ja": "ウェイサイド・クロス", - "lv": "ceļmalas krusts", - "nl": "wegkruis", - "pl": "krzyż przydrożny", - "pt": "cruzeiro", - "ro": "troiță", - "ru": "придорожный крест", - "zh": "十字路碑" - }, - "wayside_shrine": { - "ca": "peto de ánimas", - "cs": "drobná sakrální památka", - "de": "bildstock", - "el": "εικονοστάσιο στη άκρη του δρόμου", - "en": "wayside shrine", - "es": "peto de ánimas", - "fr": "bildstock", - "id": "tempat suci pinggir jalan", - "it": "capitello votivo", - "ja": "道端の神社", - "lt": "koplytėlė", - "lv": "ceļmalas kapela", - "nl": "wegkant-schrijn", - "pl": "kapliczka przydrożna", - "pt": "alminhas", - "ru": "придорожная часовня", - "sl": "znamenje", - "uk": "придорожня капличка", - "vi": "đền thánh dọc đường", - "zh": "路邊神龕" - }, - "wreck": { - "ar": "حطام سفينة", - "ca": "derelicte", - "cs": "lodní vrak", - "da": "skibsvrag", - "de": "schiffswrack", - "el": "ναυάγιο", - "en": "shipwreck", - "es": "pecio", - "et": "laevavrakk", - "fi": "hylky", - "fr": "épave", - "he": "אונייה טרופה", - "hr": "brodolom", - "hu": "hajóroncs", - "is": "skipsflak", - "it": "relitto navale", - "ja": "難破船", - "ko": "선박 사고", - "nb": "skipsvrak", - "nl": "scheepswrak", - "pl": "wrak", - "pt": "destroço marítimo", - "ro": "epavă", - "ru": "обломки судна", - "sl": "ladijska razbitina", - "sv": "skeppsvrak", - "tr": "gemi enkazı", - "uk": "уламки судна", - "zh": "船舶残骸" - } - }, - "industrial": { - "aluminium_smelting": { - "en": "aluminium smelter", - "fr": "aluminerie", - "nl": "aluminiumsmelter" - }, - "bakery": { - "en": "wholesale bakery", - "et": "leivatehas", - "fr": "boulangerie industrielle", - "nb": "engrosbakeri", - "ru": "хлебозавод", - "uk": "хлібзавод" - }, - "brickyard": { - "ar": "أعمال القرميد", - "ca": "bòbila", - "cs": "cihelna", - "da": "teglværk", - "de": "ziegelei", - "en": "brickworks", - "es": "tejar", - "et": "tellisevabrik", - "fi": "tiilitehdas", - "fr": "briqueterie", - "hu": "téglagyár", - "it": "fornace", - "ja": "煉瓦工場", - "lt": "plytinė", - "nb": "teglverk", - "nl": "steenfabriek", - "pl": "cegielnia", - "pt": "fábrica de tijolos", - "ru": "форначе", - "sk": "tehelňa", - "sv": "tegelbruk", - "zh": "製磚廠" - }, - "depot": { - "ar": "مرأب الحافلات", - "bg": "депо", - "ca": "cotxera d'autobús", - "cs": "autobusová vozovna", - "da": "busgarage", - "de": "busdepot", - "el": "αμαξοστάσιο λεωφορείων", - "en": "bus depot", - "es": "cocheras", - "et": "depoo", - "fr": "dépôt d'autobus", - "he": "חניון אוטובוסים", - "hu": "autóbuszgarázs", - "id": "depo bus", - "it": "deposito autobus", - "ja": "バス車庫", - "ko": "버스 차고지", - "nb": "bussgarasje", - "nl": "busremise", - "pl": "zajezdnia autobusowa", - "pt": "garagem de autocarros", - "pt-br": "garagem de ônibus", - "ru": "автобусный парк", - "sr": "депо", - "sv": "bussgarage", - "zh": "巴士車廠" - }, - "distributor": { - "en": "distributor", - "fr": "distributeur", - "he": "מפיץ", - "sl": "distributer", - "zh-tw": "經銷商" - }, - "factory": { - "ar": "مصنع", - "bg": "завод", - "ca": "fàbrica", - "cs": "továrna", - "da": "fabrik", - "de": "fabrik", - "el": "εργοστάσιο", - "en": "factory", - "es": "fábrica", - "et": "vabrik", - "fi": "tehdas", - "fr": "usine", - "he": "בית חרושת", - "hi": "कारखाना", - "hr": "tvornica", - "hu": "gyár", - "id": "pabrik", - "is": "verksmiðja", - "it": "fabbrica", - "ja": "工場", - "ko": "공장", - "lt": "gamykla", - "lv": "rūpnīca", - "nb": "fabrikk", - "nl": "fabriek", - "pl": "fabryka", - "pt": "fábrica", - "ro": "fabrică", - "ru": "фабрика", - "sk": "továreň", - "sl": "tovarna", - "sr": "фабрика", - "sv": "fabrik", - "th": "โรงงาน", - "tr": "fabrika", - "uk": "фабрика", - "vi": "nhà máy", - "zh": "工廠" - }, - "food_industry": { - "ar": "صناعة الغذاء", - "bg": "хранително-вкусова промишленост", - "ca": "indústria alimentària", - "cs": "potravinářství", - "da": "fødevareindustri", - "de": "lebensmittelindustrie", - "el": "βιομηχανία τροφίμων", - "en": "food industry", - "es": "industria alimentaria", - "et": "toiduainetööstus", - "fi": "elintarviketeollisuus", - "fr": "industrie alimentaire", - "he": "תעשיית המזון", - "hi": "खाद्य उद्योग", - "hr": "prehrambena industrija", - "hu": "élelmiszeripar", - "id": "industri makanan", - "it": "industria alimentare", - "ja": "食品工業", - "ko": "식품산업", - "lt": "maisto pramonė", - "lv": "pārtikas rūpniecība", - "nb": "næringsmiddelindustri", - "nl": "levensmiddelenindustrie", - "pl": "przemysł spożywczy", - "pt": "indústria alimentícia", - "ro": "industrie alimentară", - "ru": "пищевая промышленность", - "sk": "potravinársky priemysel", - "sl": "živilska industrija", - "sr": "прехрамбена индустрија", - "sv": "livsmedelsindustri", - "tr": "gıda endüstrisi", - "uk": "харчова промисловість", - "vi": "công nghiệp thực phẩm", - "zh": "食品产业", - "zh-hk": "食品產業", - "zh-tw": "食品產業" - }, - "furniture": { - "cs": "továrna na nábytek", - "da": "møbelfabrik", - "en": "furniture factory", - "fr": "usine de meuble", - "ja": "家具の工場", - "nb": "møbelfabrikk", - "nl": "meubelfabriek", - "pl": "fabryka mebli", - "pt": "fábrica de móveis", - "ru": "мебельная фабрика" - }, - "grinding_mill": { - "ar": "طاحونة", - "ca": "molí fariner", - "cs": "obilný mlýn", - "da": "møllebrug", - "de": "getreidemühle", - "el": "αλευρόμυλος", - "en": "gristmill", - "en-gb": "corn mill", - "es": "molino de grano", - "et": "veski", - "fi": "valssimylly", - "fr": "minoterie", - "he": "טחנת קמח", - "hi": "आटा चक्की", - "hu": "gabonaörlő malom", - "it": "mulino", - "ja": "製粉所", - "ko": "제분소", - "nb": "møllebruk", - "nl": "korenmolen", - "pl": "młyn zbożowy", - "ru": "мукомольная мельница", - "sv": "gnidkvarn", - "tr": "grist değirmeni", - "uk": "млин", - "zh": "麵粉廠" - }, - "heating_station": { - "ca": "central de calefacció urbana", - "da": "fjernvarmeværk", - "de": "fernwärmewerk", - "en": "district heating station", - "es": "central de calefacción urbana", - "hu": "fűtőmű", - "it": "centrale di teleriscaldamento" - }, - "ice_factory": { - "en": "ice factory", - "ja": "製氷工場", - "nl": "ijsfabriek", - "pt": "fábrica de gelo" - }, - "machine_shop": { - "da": "maskinfabrik", - "de": "fertigungshalle", - "el": "μηχανουργείο", - "en": "machine shop", - "fi": "konepaja", - "fr": "atelier d'usinage", - "nb": "mekanisk verksted", - "sv": "mekanisk verkstad", - "zh": "機械工場" - }, - "mine": { - "ar": "منجم", - "bg": "моята", - "ca": "mina", - "cs": "důl", - "de": "bergwerk", - "el": "ορυχείο", - "en": "mine", - "es": "mina", - "et": "kaevandus", - "fi": "kaivos", - "he": "מכרה", - "hr": "rudnik", - "hu": "bánya", - "id": "tambang", - "it": "miniera", - "ja": "鉱山", - "ko": "광산", - "nb": "bergverk", - "nl": "mijn", - "pl": "kopalnia", - "pt": "mina", - "ro": "mină", - "ru": "рудник", - "sk": "baňa", - "sl": "rudnik", - "sr": "рудник", - "sv": "gruva", - "uk": "копальня", - "vi": "mỏ", - "zh": "礦區" - }, - "oil": { - "ar": "صناعة نفطية", - "bg": "нефтопреработвателна промишленост", - "ca": "indústria del petroli", - "cs": "petrochemický průmysl", - "da": "olieindustri", - "de": "ölindustrie", - "el": "βιομηχανία πετρελαίου", - "en": "petroleum industry", - "es": "industria petrolera", - "et": "naftatööstus", - "fi": "öljyteollisuus", - "fr": "industrie pétrolière", - "he": "תעשיית הנפט", - "hi": "पेट्रोलियम उद्योग", - "hu": "olajipar", - "id": "industri minyak bumi", - "it": "industria petrolchimica", - "ja": "石油産業", - "ko": "석유 산업", - "lt": "naftos pramonė", - "lv": "naftas pārstrāde", - "nb": "petroleumsindustri", - "nl": "olie-industrie", - "pl": "przemysł petrochemiczny", - "pt": "indústria do petróleo", - "ro": "industria petrolieră", - "ru": "нефтяная промышленность", - "sr": "нафтна индустрија", - "sv": "oljeindustri", - "th": "อุตสาหกรรมปิโตรเลียม", - "tr": "petrol endüstrisi", - "uk": "нафтова промисловість", - "vi": "công nghiệp dầu khí", - "zh": "石油产业", - "zh-cn": "石油工业" - }, - "oil_mill": { - "ar": "معصرة", - "ca": "trull", - "de": "ölmühle", - "el": "λιοτρίβι", - "en": "oil mill", - "es": "almazara", - "fr": "moulin à huile", - "he": "בית בד", - "it": "torchio oleario", - "nl": "oliemolen", - "pl": "olejarnia", - "pt": "lagar de azeite", - "ru": "маслодавильня", - "sv": "oljeslageri", - "uk": "олійня" - }, - "pasta": { - "de": "nudelladen", - "en": "pasta store", - "it": "pastificio", - "nl": "pastawinkel" - }, - "port": { - "ar": "ميناء داخلي", - "ca": "port interior", - "de": "binnenhafen", - "en": "inland port", - "es": "puerto fluvial", - "fi": "sisävesisatama", - "fr": "port intérieur", - "he": "נמל פנימי", - "id": "pelabuhan pedalaman", - "it": "porto fluviale", - "ja": "内陸港", - "nl": "binnenhaven", - "pl": "port rzeczny", - "pt": "porto fluvial", - "ro": "port fluvial", - "ru": "речной порт", - "uk": "річковий порт", - "zh": "河港" - }, - "rice_mill": { - "en": "rice mill", - "fr": "moulin à riz" - }, - "salt_pond": { - "ar": "ملاحات", - "bg": "солници", - "ca": "salina", - "cs": "salina", - "de": "saline", - "el": "αλυκή", - "en": "salt evaporation pond", - "es": "salina", - "fi": "suolan haihdutuslampi", - "fr": "marais salant", - "he": "בריכת אידוי למלח", - "hr": "solana", - "hu": "szalina", - "id": "tambak garam", - "it": "salina", - "ja": "塩田", - "ko": "염전", - "nl": "zoutpan", - "pl": "salina", - "pt": "salina", - "ru": "соляной пруд", - "sl": "soline", - "sr": "солана", - "sv": "salin", - "th": "นาเกลือ", - "tr": "tuzla (tuz üretimi)", - "uk": "соляний ставок", - "vi": "ruộng muối", - "zh": "鹽田", - "zh-cn": "盐田" - }, - "sawmill": { - "ar": "منشرة", - "bg": "дъскорезница", - "ca": "serradora", - "cs": "pila", - "da": "savværk", - "de": "sägewerk", - "el": "πριστήριο", - "en": "sawmill", - "es": "aserradero", - "et": "saeveski", - "fi": "saha", - "fr": "scierie", - "he": "מנסרה", - "hi": "आरा मिल", - "hr": "pilana", - "id": "penggergajian kayu", - "it": "segheria", - "ja": "製材所", - "ko": "제재소", - "lt": "lentpjūvė", - "lv": "kokzāģētava", - "nb": "sagbruk", - "nl": "houtzagerij", - "pl": "tartak", - "pt": "serração", - "pt-br": "serraria", - "ru": "лесопилка", - "sk": "píla", - "sl": "žaga", - "sr": "пилана", - "sv": "sågverk", - "uk": "тартак (деревообробка)", - "zh": "鋸木廠" - }, - "scrap_yard": { - "ar": "مستودع خردة", - "bg": "автоморга", - "ca": "desballestador", - "da": "autoophugger", - "de": "autoverwertungsbetrieb", - "en": "wrecking yard", - "es": "desguace", - "et": "autolammutuskoda", - "fi": "romuttamo", - "fr": "casse automobile", - "ja": "解体屋", - "nb": "opphuggeri", - "nl": "autosloop", - "ru": "автосвалка", - "sv": "bildemontering", - "th": "ป่าช้ารถ", - "uk": "автозвалище", - "zh": "废车场" - }, - "shipyard": { - "ar": "حوض بناء سفن", - "bg": "корабостроителница", - "ca": "drassana", - "cs": "loděnice", - "da": "værft", - "de": "werft", - "el": "ναυπηγείο", - "en": "shipyard", - "es": "astillero naval", - "et": "laevatehas", - "fi": "telakka", - "fr": "chantier naval", - "he": "מספנה", - "hi": "डॉकयार्ड", - "hr": "brodogradilište", - "hu": "hajógyár", - "id": "galangan kapal", - "is": "slippur", - "it": "cantiere navale", - "ja": "造船所", - "ko": "조선소", - "nb": "skipsverft", - "nl": "scheepswerf", - "pl": "stocznia", - "pt": "estaleiro naval", - "pt-br": "estaleiro", - "ro": "șantier naval", - "ru": "верфь", - "sk": "lodenica", - "sl": "ladjedelnica", - "sr": "бродоградилиште", - "sv": "skeppsvarv", - "th": "อู่ต่อเรือ", - "tr": "tersane", - "uk": "корабельня", - "zh": "造船厂" - }, - "slaughterhouse": { - "ar": "مسلخ", - "bg": "кланица", - "ca": "escorxador", - "cs": "jatka", - "da": "slagteri", - "de": "schlachthof", - "el": "σφαγείο", - "en": "slaughterhouse", - "es": "matadero", - "et": "tapamaja", - "fi": "teurastamo", - "fr": "abattoir", - "he": "בית מטבחיים", - "hu": "vágóhíd", - "id": "rumah potong hewan", - "it": "mattatoio", - "ja": "屠畜場", - "ko": "도축장", - "nb": "slakteri", - "nl": "slachthuis", - "pl": "ubojnia", - "pt": "matadouro", - "ro": "abator", - "ru": "скотобойня", - "sk": "bitúnok", - "sl": "klavnica", - "sr": "кланица", - "sv": "slakteri", - "th": "โรงฆ่าสัตว์", - "tr": "mezbaha", - "uk": "скотобійня", - "vi": "lò sát sinh", - "zh": "屠房", - "zh-cn": "屠宰场" - }, - "steelmaking": { - "de": "stahlwerk", - "en": "steelmaking factory", - "es": "acería", - "pt": "fábrica de aço", - "ru": "сталелитейный завод", - "uk": "сталеплавильний завод" - }, - "warehouse": { - "ar": "مستودع", - "bg": "склад", - "ca": "magatzem", - "cs": "sklad", - "da": "magasin", - "de": "lagerhaus", - "el": "αποθήκη", - "en": "warehouse", - "es": "almacén", - "et": "ladu", - "fi": "varasto", - "fr": "entrepôt", - "he": "מחסן", - "hi": "मालगोदाम", - "hr": "skladište", - "hu": "raktározás", - "id": "gudang", - "it": "magazzino", - "ja": "倉庫", - "ko": "창고", - "lt": "sandėlis", - "lv": "noliktava", - "nb": "lagerbygning", - "nl": "magazijn", - "pl": "magazyn", - "pt": "armazém", - "ro": "depozit", - "ru": "склад", - "sl": "skladišče", - "sr": "складиште", - "sv": "magasinsbyggnad", - "th": "คลังสินค้า", - "tr": "antrepo", - "uk": "склад", - "vi": "nhà kho", - "zh": "倉庫", - "zh-cn": "仓库" - } - }, - "information": { - "audioguide": { - "ca": "audioguia", - "de": "audioguide", - "el": "ακουστική ξενάγηση", - "en": "audio tour", - "es": "audioguía", - "et": "audiogiid", - "fr": "audioguide", - "hr": "audio obilazak", - "it": "audioguida", - "ja": "音声ガイド", - "ko": "음성 가이드", - "lt": "audiogidas", - "lv": "audiogidi", - "nb": "lydguiding", - "nl": "audiotour", - "pt": "áudio tour", - "ro": "audio ghid", - "ru": "аудиогид", - "sv": "ljudguide", - "zh": "語音導覽" - }, - "board": { - "ca": "tauler d’informació", - "cs": "informační tabule", - "de": "infotafel", - "en": "information board", - "es": "tablón informativo", - "it": "pannello informativo", - "ja": "案内板", - "nl": "informatiebord", - "pl": "tablica informacyjna", - "pt": "painel de informações" - }, - "guidepost": { - "cs": "rozcestník", - "de": "wegweiser", - "en": "signpost", - "es": "señalizar", - "et": "teeviit", - "fr": "panneau de signalisation directionnelle", - "hu": "útjelző tábla", - "ja": "道標", - "nl": "wegwijzer", - "pl": "drogowskaz", - "pt": "poste de sinalização", - "ru": "указатель направления", - "sk": "rozcestník", - "sl": "kažipot", - "sv": "lokaliseringsmärke", - "uk": "покажчик напрямків" - }, - "map": { - "cs": "turistická mapa", - "de": "wanderkarte", - "en": "tourist map", - "es": "mapa para senderismo", - "pl": "mapa turystyczna", - "pt": "mapa turístico", - "sk": "turistická mapa" - }, - "tactile_map": { - "de": "blindenkarte", - "en": "tactile map", - "fi": "kohokartta", - "it": "mappa tattile", - "pt": "mapa táctil", - "sv": "reliefkarta" - }, - "tactile_model": { - "de": "tastmodell", - "en": "tactile model", - "pl": "makieta dotykowa" - }, - "visitor_centre": { - "ca": "centre de visitants", - "cs": "informační centrum", - "da": "besøgscenter", - "de": "besucherzentrum", - "en": "visitor centre", - "es": "centro de visitantes", - "fr": "centre d'accueil des visiteurs", - "hu": "látogatóközpont", - "it": "centro visitatori", - "ja": "ビジターセンター", - "ko": "관광청", - "nl": "toerismebureau", - "pt": "centro de visitantes", - "ru": "агентство по туризму", - "sr": "туристичка организација", - "uk": "туристично-інформаційний центр", - "zh": "遊客中心" - } - }, - "intermittent": { - "yes": { - "de": "intermittenz", - "en": "intermittency", - "es": "intermitencia", - "it": "intermittenza", - "pl": "intermitencja", - "ru": "перемежаемость", - "zh": "陣發混沌", - "zh-cn": "间歇性" - } - }, - "internet_access": { - "wired": { - "en": "cable internet access", - "es": "acceso a internet por cable", - "he": "אינטרנט בכבלים", - "nl": "kabelinternet", - "pt": "rede por cabo", - "sk": "káblové pripojenie", - "sr": "кабловски интернет", - "tr": "kablo internet", - "zh": "有线互联网接入" - } - }, - "irrigation": { - "pivot": { - "ar": "ري مركزي محوري", - "de": "kreisbewässerung", - "el": "κέντρο-στροφέα άρδευση", - "en": "center pivot irrigation", - "es": "dispositivos móviles de riego por aspersión", - "fr": "irrigation à pivot central", - "hu": "középtengelyes öntözés", - "it": "irrigazione a perno centrale", - "ja": "センターピボット", - "nl": "cirkelirrigatie", - "pl": "nawadnianie centralne", - "pt": "pivô central de irrigação", - "sl": "krožno namakanje", - "sv": "cirkelbevattning", - "zh": "中枢灌溉系统" - } - }, - "isced": { - "": { - "ar": "مدرسة ابتدائية", - "bg": "основно училище", - "ca": "escola primària", - "cs": "základní škola", - "da": "grundskole", - "de": "grundschule", - "el": "δημοτικό σχολείο", - "en": "primary school", - "en-ca": "elementary school", - "es": "escuela primaria", - "et": "algkool", - "fi": "ala-aste", - "fr": "école primaire", - "he": "בית ספר יסודי", - "hr": "osnovna škola", - "hu": "általános iskola", - "id": "sekolah dasar", - "is": "grunnskóli", - "it": "scuola primaria", - "ja": "小学校", - "ko": "초등학교", - "lt": "pradinė mokykla", - "lv": "sākumskola", - "nb": "grunnskole", - "nl": "basisschool", - "pl": "szkoła podstawowa", - "pt": "escola primária", - "ro": "școală elementară", - "ru": "начальная школа", - "sk": "základná škola", - "sl": "osnovna šola", - "sr": "основна школа", - "sv": "grundskola", - "th": "โรงเรียนประถม", - "tr": "ilkokul", - "uk": "початкова школа", - "vi": "trường tiểu học", - "zh": "小学", - "zh-hk": "小學", - "zh-tw": "小學" - } - }, - "iucn_level": { - "II": { - "ca": "categoria ii de la uicn: parc nacional", - "cs": "ii – národní park", - "de": "iucn-kategorie ii: nationalpark", - "el": "δεπφ κατηγορία 2: εθνικό πάρκο", - "en": "iucn category ii: national park", - "es": "categoría ii de la uicn: parque nacional", - "et": "iucn-i kategooria ii: rahvuspark", - "fr": "catégorie ii : parc national", - "id": "kategori iucn ii: taman nasional", - "it": "categoria iucn ii: parco nazionale", - "ja": "iucnカテゴリーii:国立公園", - "ko": "iucn 카테고리 ii: 국립공원", - "nb": "iucn-kategori ii: nasjonalpark", - "nl": "iucn categorie ii: nationaal park", - "pl": "kategoria iucn: park narodowy", - "pt-br": "uicn categoria ii: parque nacional", - "ru": "категория мсоп ii: национальный парк", - "sv": "iucn-kategori ii: nationalpark", - "uk": "категорія мсоп — ii (національний парк)", - "zh": "iucn分类ii:国家公园", - "zh-hk": "iucn分類ii:國家公園" - }, - "III": { - "ca": "iucn categoria iii: monument natural", - "cs": "iii – přírodní památka", - "de": "iucn-kategorie iii: naturmonument oder naturerscheinung", - "en": "iucn category iii: natural monument or feature", - "es": "categoría iii de la uicn: monumento o característica natural", - "fr": "catégorie iii : monument ou élément naturel", - "id": "kategori iucn iii: monumen alami", - "it": "categoria iucn iii: monumento naturale", - "ja": "iucnカテゴリーiii:天然記念物", - "ko": "iucn 카테고리 iii: 자연기념물이나 특징", - "nb": "iucn-kategori iii: natural monument or feature", - "nl": "iucn categorie iii: natuurlijk element of monument", - "pl": "kategoria iucn: pomnik przyrody", - "ru": "категория мсоп iii: памятник природы", - "sv": "iucn-kategori iii: naturmonument", - "uk": "категорія мсоп iii: пам'ятник природи" - } - }, - "junction": { - "ddi": { - "en": "diverging diamond interchange", - "he": "מחלף יהלום מתחלף", - "nl": "divergerende diamantaansluiting", - "zh": "发散菱形路口", - "zh-cn": "分离式菱形立交" - }, - "jughandle": { - "en": "jughandle", - "ja": "ジャグハンドル", - "sv": "spansk sväng" - }, - "roundabout": { - "ar": "دوار مروري", - "bg": "кръгово движение", - "ca": "rotonda", - "cs": "kruhový objezd", - "da": "rundkørsel", - "de": "kreisverkehr", - "en": "roundabout", - "es": "rotonda", - "fi": "kiertoliittymä", - "fr": "carrefour giratoire", - "he": "מעגל תנועה", - "hi": "गोल चक्कर", - "hr": "cestovni rotor", - "hu": "körforgalom", - "id": "bundaran lalu lintas", - "is": "hringtorg", - "it": "rotatoria", - "ja": "ラウンドアバウト", - "ko": "회전교차로", - "lt": "žiedinė sankryža", - "nb": "rundkjøring", - "nl": "rotonde", - "pl": "rondo", - "pt": "rotunda", - "pt-br": "rotatória", - "ro": "sens giratoriu", - "ru": "круговой перекрёсток", - "sk": "kruhový objazd", - "sl": "krožno križišče", - "sr": "кружни ток", - "sv": "cirkulationsplats", - "tr": "dönel kavşak", - "uk": "кругове перехрестя", - "vi": "vòng xuyến", - "zh": "环岛", - "zh-hk": "迴旋處", - "zh-tw": "圓環" - }, - "spui": { - "de": "anschlusstelle als raute mit einer kreuzung", - "en": "single-point urban interchange", - "ja": "一点都市型", - "zh": "單點城市立交" - }, - "uncontrolled": { - "en": "uncontrolled intersection", - "ja": "無信号交差点", - "pl": "skrzyżowanie równorzędne" - }, - "yes": { - "ca": "intersecció de carretera", - "da": "vejkryds", - "de": "kreuzung", - "el": "διασταύρωση", - "en": "road junction", - "es": "cruce", - "fr": "carrefour", - "hu": "útkereszteződés", - "it": "intersezione stradale", - "ja": "ジャンクション", - "ko": "고속도로 분기점", - "nb": "veikryss", - "nl": "kruising", - "pt": "cruzamento", - "ru": "пересечение транспортных линий", - "sv": "vägkorsning", - "vi": "nút giao thông", - "zh": "交叉路口", - "zh-tw": "道路交叉" - } - }, - "kerb": { - "flush": { - "ca": "rebaix de la vorada", - "de": "abgesenkter bordstein", - "en": "kerb ramp", - "en-us": "curb cut", - "es": "rebaje del bordillo", - "fr": "bateau (trottoir)", - "he": "הנמכת מדרכה", - "nb": "nedsenket fortauskant", - "nl": "inritband", - "pl": "łagodny zjazd (krawężnik)", - "zh": "路沿石切" - }, - "lowered": { - "ca": "rebaix de la vorada", - "de": "abgesenkter bordstein", - "en": "kerb ramp", - "en-us": "curb cut", - "es": "rebaje del bordillo", - "fr": "bateau (trottoir)", - "he": "הנמכת מדרכה", - "nb": "nedsenket fortauskant", - "nl": "inritband", - "pl": "łagodny zjazd (krawężnik)", - "zh": "路沿石切" - } - }, - "kiln": { - "lime": { - "ar": "قمين الجير", - "ca": "forn de calç", - "cs": "vápenka", - "da": "kalkovn", - "de": "kalkofen", - "en": "lime kiln", - "es": "horno de cal", - "fi": "kalkkiuuni", - "fr": "four à chaux", - "he": "כבשן סיד", - "hu": "mészégető kemence", - "is": "kalkofn", - "it": "calcara", - "ja": "石灰窯", - "nb": "kalkovn", - "nl": "kalkoven", - "pl": "wapiennik", - "pt": "forno de cal", - "sl": "apneničarstvo", - "sr": "кречарство", - "sv": "kalkugn", - "zh": "石灰窑" - } - }, - "landcover": { - "gravel": { - "de": "lockergestein", - "en": "loose stone" - } - }, - "landform": { - "dune_system": { - "ar": "كثيب", - "bg": "дюна", - "ca": "duna", - "cs": "duna", - "da": "klit", - "de": "düne", - "el": "αμμόλοφος", - "en": "dune system", - "en-gb": "dune", - "es": "duna", - "et": "luide", - "fi": "dyyni", - "fr": "dune", - "he": "חולית", - "hi": "बालुका स्तूप", - "hr": "pješčana dina", - "hu": "dűne", - "id": "gumuk", - "is": "sandalda", - "it": "duna", - "ja": "砂丘", - "ko": "사구", - "lt": "kopa", - "lv": "kāpa", - "nb": "sanddyne", - "nl": "duinensysteem", - "pl": "wydma", - "pt": "duna", - "ro": "dună", - "ru": "дюна", - "sk": "piesočná duna", - "sl": "sipina", - "sr": "дина", - "sv": "sanddyn", - "th": "เนินทราย", - "tr": "kumul", - "uk": "дюни", - "vi": "đụn cát", - "zh": "沙丘" - }, - "esker": { - "ar": "إسكير", - "bg": "ескер", - "da": "ås", - "de": "os", - "en": "esker", - "et": "oos", - "fi": "harju", - "he": "אסקר", - "hi": "एस्कर", - "hu": "óz", - "is": "malarás", - "ja": "エスカー", - "ko": "에스커", - "lt": "ozas", - "lv": "oss", - "pl": "oz", - "ru": "озы", - "sv": "rullstensås", - "uk": "ози", - "zh": "蛇形丘" - }, - "raised_beach": { - "en": "raised beach", - "es": "terraza costera", - "fr": "plage surélevée", - "ja": "隆起海浜", - "tr": "yükselmiş kıyı", - "uk": "абразійні береги", - "zh": "海洋階地" - } - }, - "landuse": { - "allotments": { - "ar": "حصص الحدائق", - "ca": "hort familiar", - "cs": "zahrádkářská osada", - "da": "kolonihaveområde", - "de": "kleingartenanlage", - "en": "allotment", - "es": "huerto familiar", - "fi": "siirtolapuutarha", - "fr": "jardins familiaux", - "id": "schrebergarten", - "is": "garðlönd", - "ja": "クラインガルテン", - "nb": "kolonihage", - "nl": "volkstuinenpark", - "pl": "rodzinny ogród działkowy", - "pt": "schrebergärten", - "ru": "садоводческие, огороднические и дачные некоммерческие объединения", - "sv": "koloniträdgård", - "uk": "садове товариство", - "zh": "社区农圃" - }, - "apiary": { - "ar": "منحل", - "cs": "včelín", - "de": "bienenhaus", - "en": "apiary", - "es": "apiario", - "et": "mesila", - "fi": "mehiläistarha", - "fr": "rucher", - "he": "מכוורת", - "hr": "pčelinjak", - "it": "apiario", - "ja": "養蜂場", - "lt": "bitynas", - "nl": "bijenschans", - "pl": "pasieka", - "pt": "apiário", - "ro": "stupină", - "ru": "пасека", - "sl": "čebelnjak", - "sv": "bigård", - "tr": "arılık", - "uk": "пасіка", - "zh": "養蜂場" - }, - "basin": { - "ar": "حوض", - "ca": "conca", - "cs": "pánev", - "de": "becken", - "en": "basin", - "es": "cuenca", - "fr": "bassin", - "hu": "medence", - "it": "bacino", - "ja": "盆地", - "ko": "분지", - "lv": "baseins", - "nb": "bekken (geomorfologi)", - "nl": "bekken", - "ru": "впадина", - "sv": "bäcken (geografi)", - "uk": "басейн (геоморфологія)", - "zh": "盆地" - }, - "brownfield": { - "ar": "أرض ملوثة", - "cs": "brownfield", - "de": "industriebrache", - "en": "brownfield land", - "fr": "friche industrielle", - "hu": "rozsdaövezet", - "ja": "ブラウンフィールド", - "ko": "브라운필드", - "nl": "brownfield", - "pl": "teren poprzemysłowy", - "pt": "brownfields", - "ru": "редевелопмент промышленных территорий", - "sk": "brownfield", - "sr": "браунфилд локација", - "th": "ที่ดินบราวน์ฟิลด์", - "zh": "棕地" - }, - "cemetery": { - "ar": "مقبرة", - "bg": "гробище", - "ca": "cementiri", - "cs": "hřbitov", - "da": "gravplads", - "de": "friedhof", - "el": "κοιμητήριο", - "en": "cemetery", - "es": "cementerio", - "et": "kalmistu", - "fi": "hautausmaa", - "fr": "cimetière", - "he": "בית קברות", - "hi": "क़ब्रिस्तान", - "hr": "groblje", - "hu": "temető", - "id": "tempat pemakaman", - "is": "grafreitur", - "it": "cimitero", - "ja": "墓地", - "ko": "묘지", - "lt": "kapinės", - "lv": "kapsēta", - "nb": "gravlund", - "nl": "begraafplaats", - "pl": "cmentarz", - "pt": "cemitério", - "ro": "cimitir", - "ru": "кладбище", - "sk": "cintorín", - "sl": "pokopališče", - "sr": "гробље", - "sv": "begravningsplats", - "th": "ป่าช้า", - "tr": "mezarlık", - "uk": "цвинтар", - "vi": "nghĩa trang", - "zh": "墳場", - "zh-cn": "公墓" - }, - "commercial": { - "ar": "مجمع الأعمال", - "ca": "districte comercial", - "da": "erhvervsområde", - "de": "gewerbegebiet", - "el": "εμπορική περιοχή", - "en": "office plaza", - "es": "distrito comercial", - "fi": "yrityspuisto", - "fr": "quartier commerçant", - "he": "פארק משרדים", - "hu": "üzleti negyed", - "is": "verslunargata", - "ja": "商業地域", - "ko": "상업 지구", - "lv": "biznesa parks", - "nb": "handelsdistrikt", - "nl": "winkelgebied", - "pt": "distrito comercial", - "ro": "parc de afaceri", - "ru": "торговый район города", - "sr": "пословна област", - "sv": "företagspark", - "tr": "i̇ş parkı", - "uk": "бізнес-парк", - "zh": "商圈", - "zh-cn": "商务园区", - "zh-tw": "辦公樓廣場" - }, - "construction": { - "ar": "ورشة بناء", - "cs": "staveniště", - "da": "byggeplads", - "de": "baustelle", - "en": "construction site", - "es": "lugar de construcción", - "fi": "rakennustyömaa", - "fr": "chantier de construction", - "hu": "építési terület", - "it": "cantiere", - "ja": "建設現場", - "nl": "constructieplaats", - "pl": "teren budowy", - "ru": "строительная площадка", - "sr": "градилиште", - "sv": "byggarbetsplats", - "uk": "будова" - }, - "farmland": { - "ar": "حقل زراعي", - "bg": "нива", - "ca": "camp", - "cs": "pole", - "da": "ager", - "de": "acker", - "el": "αγρός", - "en": "field", - "en-gb": "arable field", - "es": "campo", - "et": "põld", - "fi": "pelto", - "fr": "champ", - "he": "שדה", - "hi": "क्षेत्र", - "hr": "oranica", - "hu": "termőföld", - "id": "lahan pertanian", - "is": "tún", - "it": "campo", - "ja": "畑", - "ko": "밭", - "lt": "laukas", - "lv": "tīrums", - "nb": "åker", - "nl": "akker", - "pl": "pole", - "pt": "campo agrícola", - "ro": "câmp", - "ru": "поле", - "sk": "pole", - "sl": "polje", - "sr": "њива", - "sv": "åker", - "tr": "tarla", - "uk": "поле", - "vi": "cánh đồng", - "zh": "旱田" - }, - "farmyard": { - "de": "bauernhof", - "en": "farmyard" - }, - "forest": { - "cs": "hospodářský les", - "de": "wirtschaftswald", - "en": "commercial forest", - "fi": "talousmetsä", - "it": "bosco ceduo", - "pl": "las gospodarczy", - "sv": "ekonomiskog" - }, - "grass": { - "ar": "غضراء", - "bg": "тревна площ", - "ca": "gespa", - "cs": "trávník", - "da": "græsplæne", - "de": "rasen", - "el": "γρασίδι", - "en": "lawn", - "es": "césped", - "et": "muru", - "fi": "nurmi", - "fr": "gazon", - "he": "מדשאה", - "hi": "घास", - "hr": "trava", - "hu": "gyep", - "id": "rerumputan", - "it": "tappeto erboso", - "ja": "芝", - "ko": "잔디", - "lt": "veja", - "lv": "zāliens", - "nb": "plen", - "nl": "gazon", - "pl": "trawnik", - "pt": "grama", - "ro": "gazon", - "ru": "газон", - "sk": "trávnik", - "sl": "trava", - "sr": "трава", - "sv": "gräsmatta", - "tr": "çimen", - "uk": "газон", - "vi": "bãi cỏ", - "zh": "草地" - }, - "greenfield": { - "ar": "أرض حقل أخضر", - "cs": "greenfield", - "de": "grüne wiese", - "en": "greenfield land", - "it": "terreno edificabile", - "ja": "グリーンフィールド・ランド", - "nl": "greenfield", - "zh": "绿地区块", - "zh-cn": "绿色地块" - }, - "greenhouse_horticulture": { - "ar": "زراعة محمية", - "de": "unterglasanbau", - "en": "greenhouse agriculture", - "es": "agricultura de invernadero", - "fr": "serriculture", - "ja": "温室農業", - "nl": "glastuinbouw" - }, - "hop_garden": { - "cs": "chmelnice", - "de": "hopfengarten", - "en": "hop garden", - "fr": "houblonnière" - }, - "industrial": { - "ar": "قائمة المدن الصناعية", - "bg": "индустриална зона", - "ca": "polígon industrial", - "cs": "průmyslová zóna", - "da": "industriområde", - "de": "industriedistrikt", - "el": "βιομηχανικό πάρκο", - "en": "industrial district", - "en-ca": "industrial park", - "en-gb": "industrial estate", - "es": "distrito industrial", - "et": "tööstusala", - "fi": "teollisuusalue", - "fr": "secteur industriel", - "he": "אזור תעשייה", - "hi": "औद्योगिक क्षेत्र", - "hr": "industrijska zona", - "hu": "ipari park", - "id": "kawasan industri", - "it": "distretto industriale", - "ja": "工業地帯", - "ko": "산업단지", - "nb": "industriområde", - "nl": "industriestad", - "pl": "dystrykt przemysłowy", - "pt": "distrito industrial", - "pt-br": "parque industrial", - "ro": "parc industrial", - "ru": "промышленный район", - "sr": "индустријски парк", - "sv": "industriområde", - "tr": "sanayi ilçesi", - "uk": "промисловий район", - "vi": "khu công nghiệp", - "zh": "工業區", - "zh-cn": "工业园区", - "zh-hk": "工業園區", - "zh-tw": "工業園區" - }, - "landfill": { - "ar": "دفن النفايات", - "bg": "сметище", - "ca": "abocador", - "cs": "skládka", - "da": "losseplads", - "de": "deponie", - "el": "χώρος υγειονομικής ταφής απορριμμάτων", - "en": "landfill", - "es": "vertedero", - "et": "prügila", - "fi": "kaatopaikka", - "fr": "décharge", - "he": "מטמנה", - "hr": "odlagalište otpada", - "hu": "hulladéklerakó hely", - "id": "tempat pembuangan akhir", - "is": "landfylling", - "it": "discarica di rifiuti", - "ja": "最終処分場", - "ko": "쓰레기 매립지", - "lt": "sąvartynas", - "lv": "izgāztuve", - "nb": "deponi", - "nl": "vuilstortplaats", - "pl": "składowisko odpadów", - "pt": "aterro sanitário", - "ro": "depozit gunoier", - "ru": "свалка", - "sk": "skládka", - "sl": "smetišče", - "sr": "депонија", - "sv": "soptipp", - "th": "การฝังกลบ", - "tr": "çöplük", - "uk": "звалище", - "vi": "bãi thải", - "zh": "堆填", - "zh-hk": "堆填區", - "zh-tw": "垃圾掩埋場" - }, - "meadow": { - "ar": "مرج", - "bg": "ливада", - "ca": "prat de dall", - "cs": "louka", - "da": "eng", - "de": "wiese", - "el": "λιβάδι", - "en": "meadow", - "es": "prado", - "et": "aas", - "fi": "niitty", - "fr": "prairie", - "he": "אחו", - "hi": "मर्ग", - "hr": "livada", - "hu": "rét", - "id": "padang rumput", - "is": "engi", - "it": "prato", - "ja": "草地", - "ko": "초지", - "lt": "pieva", - "lv": "pļava", - "nb": "eng", - "nl": "made", - "pl": "łąka", - "pt": "prado", - "ro": "fâneață", - "ru": "луг", - "sk": "lúka", - "sl": "travnik", - "sr": "ливада", - "sv": "äng", - "tr": "çayır", - "uk": "лука", - "vi": "thảo điền", - "zh": "草甸" - }, - "observatory": { - "ar": "مرصد", - "bg": "обсерватория", - "ca": "observatori", - "cs": "observatoř", - "da": "observatorium", - "de": "observatorium", - "el": "αστεροσκοπείο", - "en": "observatory", - "es": "observatorio", - "et": "observatoorium", - "fi": "observatorio", - "fr": "observatoire", - "he": "מצפה", - "hi": "वेधशाला", - "hr": "opservatorij", - "hu": "obszervatórium", - "id": "observatorium", - "it": "osservatorio astronomico", - "ja": "観測所", - "ko": "관측소", - "lt": "observatorija", - "lv": "observatorija", - "nb": "observatorium", - "nl": "observatorium", - "pl": "obserwatorium", - "pt": "observatório", - "ro": "observator astronomic", - "ru": "обсерватория", - "sk": "observatórium", - "sl": "observatorij", - "sr": "опсерваторија", - "sv": "observatorium", - "th": "หอดูดาว", - "tr": "gözlemevi", - "uk": "обсерваторія", - "vi": "đài thiên văn", - "zh": "观测台", - "zh-hk": "觀測台", - "zh-tw": "觀測台" - }, - "orchard": { - "ar": "بستان", - "bg": "овощна градина", - "ca": "verger", - "cs": "sad", - "da": "frugthave", - "de": "streuobstwiese", - "el": "οπωρώνας", - "en": "orchard", - "es": "huerto frutal", - "fi": "hedelmänviljely", - "fr": "verger", - "he": "פרדס", - "hi": "फलौद्यान", - "hr": "voćnjak", - "id": "kebun", - "it": "frutteto", - "ja": "果樹園", - "ko": "과수원", - "nl": "boomgaard", - "pl": "sad", - "pt": "pomar", - "ro": "livadă", - "ru": "фруктовый сад", - "sk": "sad", - "sl": "sadovnjak", - "sr": "воћњак", - "sv": "fruktodling", - "th": "สวนผลไม้", - "tr": "bostan", - "uk": "фруктовий сад", - "vi": "vườn cây ăn trái", - "zh": "果園" - }, - "plant_nursery": { - "ar": "مشتل", - "ca": "viver de plantes", - "cs": "zahradnictví", - "da": "planteskole", - "de": "baumschule", - "en": "plant nursery", - "es": "vivero", - "et": "puukool", - "fi": "taimisto", - "fr": "pépinière", - "he": "משתלה", - "hi": "पौधशाला", - "it": "vivaismo", - "ja": "育苗", - "ko": "묘포", - "lv": "kokaudzētava", - "nb": "planteskole", - "nl": "kwekerij", - "pl": "szkółka", - "pt": "viveiro", - "ro": "pepinieră", - "ru": "питомник для растений", - "sr": "расадник", - "sv": "plantskola", - "tr": "fidanlık", - "uk": "розсадник (садівництво)", - "zh": "苗圃" - }, - "quarry": { - "ar": "مقلع", - "bg": "кариера", - "ca": "pedrera", - "cs": "lom", - "da": "dagbrud", - "de": "tagebau", - "el": "ορυχείο", - "en": "quarry", - "es": "cantera", - "et": "karjäär", - "fi": "louhos", - "fr": "carrière", - "he": "מחצבה", - "hi": "खादान", - "hu": "kőbánya", - "id": "galian", - "it": "cava", - "ja": "採石場", - "ko": "채석장", - "lt": "karjeras", - "lv": "karjers", - "nb": "dagbrudd", - "nl": "groeve", - "pt": "pedreira", - "ro": "carieră", - "ru": "карьер", - "sk": "lom", - "sv": "dagbrott", - "tr": "taş ocağı", - "uk": "кар'єр", - "vi": "mỏ đá", - "zh": "沙石场", - "zh-hk": "沙石場", - "zh-tw": "沙石場" - }, - "railway": { - "ar": "مرافق السكك الحديدية", - "ca": "infraestructura ferroviària", - "cs": "zařízení dráhy", - "de": "bahnanlage", - "de-ch": "güterbahnhof", - "en": "railway facility", - "en-ca": "goods station", - "en-gb": "goods station", - "es": "instalación ferroviaria", - "et": "raudteetaristu osa", - "fi": "rautatierakennelma", - "fr": "installation ferroviaire", - "he": "תחנת משא", - "hu": "teherpályaudvar", - "it": "stazione merci", - "ja": "鉄道施設", - "ko": "철도 시설", - "nl": "spoorwegfaciliteit", - "pl": "obiekt kolejowy", - "pt": "instalação ferroviária", - "ru": "объект железнодорожной инфраструктуры", - "sv": "järnvägsanläggning", - "uk": "об'єкт залізничної інфраструктури", - "zh": "鐵路設施", - "zh-cn": "货运车站" - }, - "recreation_ground": { - "ar": "منطقة ترفيهية", - "ca": "zona d'esbarjo", - "cs": "rekreační oblast", - "da": "fritidsområde", - "de": "erholungsgebiet", - "el": "χώρος αναψυχής", - "en": "recreation area", - "es": "zona de recreo", - "fi": "suojeltu ulkoilualue", - "fr": "zone récréative", - "hu": "üdülőterület", - "ja": "レクリエーション・エリア", - "lv": "atpūtas vieta", - "nb": "friområde", - "nl": "recreatiegebied", - "pl": "teren rekreacyjny", - "ru": "зона отдыха", - "sl": "območje za rekreacijo", - "sr": "одмаралиште", - "sv": "fritidsområde", - "tr": "boş alan", - "uk": "зона відпочинку" - }, - "religious": { - "ar": "بستان مقدس", - "ca": "bosc sagrat", - "cs": "posvátný háj", - "de": "baumkult", - "el": "ιερός άλσος", - "en": "sacred grove", - "es": "bosque sagrado", - "fi": "pyhä lehto", - "fr": "bois sacré", - "he": "חורשה קדושה", - "hi": "पवित्र उपवन", - "id": "hutan larangan", - "it": "bosco sacro", - "ja": "神聖な森", - "lt": "šventoji giraitė", - "lv": "svētmežs", - "nb": "hellig lund", - "nl": "boomheiligdom", - "pl": "święty gaj (antropologia)", - "ru": "священная роща", - "zh": "神聖樹林", - "zh-cn": "神圣橡树" - }, - "reservoir": { - "ar": "بحيرة خزان", - "bg": "язовир", - "ca": "embassament", - "cs": "přehradní nádrž", - "de": "stausee", - "el": "τεχνητή λίμνη", - "en": "reservoir", - "es": "embalse", - "et": "paisjärv", - "fi": "patojärvi", - "fr": "lac de barrage", - "he": "מאגר מים", - "hi": "जलाशय", - "hr": "umjetno jezero", - "hu": "víztározó", - "id": "waduk", - "is": "uppistöðulón", - "it": "bacino artificiale", - "ja": "貯水池", - "ko": "저수지", - "lt": "tvenkinys", - "lv": "uzpludinājums", - "nb": "vannmagasin", - "nl": "stuwmeer", - "pl": "zbiornik zaporowy", - "pt": "reservatório", - "ro": "lac de acumulare", - "ru": "водохранилище", - "sk": "priehradná nádrž", - "sl": "akumulacijsko jezero", - "sr": "вештачко језеро", - "sv": "vattenmagasin", - "th": "อ่างเก็บน้ำ", - "tr": "baraj gölü", - "uk": "водосховище", - "vi": "hồ chứa nước", - "zh": "水庫", - "zh-cn": "水库" - }, - "residential": { - "ar": "مشروع كازابلانكا السكني", - "bg": "жилищен комплекс", - "ca": "polígon d'habitatges", - "cs": "sídliště", - "da": "boligkompleks", - "de": "großwohnsiedlung", - "en": "casablanca compound", - "es": "unidad habitacional", - "et": "elamupiirkond", - "fi": "asuinalue", - "fr": "grand ensemble", - "he": "איזור מגורים", - "hi": "आवासीय क्षेत्र", - "hr": "naseljeno područje", - "hu": "lakótelep", - "id": "perumahan", - "is": "klasahús", - "it": "complesso residenziale", - "ja": "住宅団地", - "ko": "주택단지", - "nb": "boligkompleks", - "nl": "wooncomplex", - "pl": "wielki zespół mieszkaniowy", - "pt": "conjunto habitacional", - "ro": "ansamblu rezidențial", - "ru": "жилой комплекс", - "sk": "sídlisko", - "sv": "bostadsområde", - "th": "บ้านจัดสรร", - "tr": "konut bölgesi", - "uk": "житловий комплекс", - "vi": "khu dân cư", - "zh": "屋苑", - "zh-cn": "住宅区", - "zh-hk": "住宅區", - "zh-tw": "住宅區" - }, - "retail": { - "ar": "منطقة البيع بالتجزئة", - "de": "einkaufsviertel", - "el": "εμπορικό διαμέρισμα", - "en": "shopping district", - "fr": "quartier commerçant", - "he": "איזור מסחרי", - "hi": "वाणिज्य क्षेत्र", - "ja": "商業地域", - "ko": "상업지구", - "nb": "handleområde", - "pl": "obszar handlowy", - "th": "ย่านการค้า", - "tr": "ticari alan", - "uk": "комерційна зона", - "zh": "商业区", - "zh-tw": "商業區" - }, - "salt_pond": { - "ar": "ملاحات", - "bg": "солници", - "ca": "salina", - "cs": "salina", - "de": "saline", - "el": "αλυκή", - "en": "salt evaporation pond", - "es": "salina", - "fi": "suolan haihdutuslampi", - "fr": "marais salant", - "he": "בריכת אידוי למלח", - "hr": "solana", - "hu": "szalina", - "id": "tambak garam", - "it": "salina", - "ja": "塩田", - "ko": "염전", - "nl": "zoutpan", - "pl": "salina", - "pt": "salina", - "ru": "соляной пруд", - "sl": "soline", - "sr": "солана", - "sv": "salin", - "th": "นาเกลือ", - "tr": "tuzla (tuz üretimi)", - "uk": "соляний ставок", - "vi": "ruộng muối", - "zh": "鹽田", - "zh-cn": "盐田" - }, - "village_green": { - "ar": "القرية الخضراء", - "cs": "náves", - "da": "forte", - "de": "anger", - "en": "village green", - "nl": "brink", - "pl": "nawsie", - "ru": "сельский луг", - "zh": "村鎮公用綠地", - "zh-cn": "村庄广场" - }, - "vineyard": { - "ar": "كرم", - "bg": "лозе", - "ca": "vinyar", - "cs": "vinice", - "da": "vingård", - "de": "weinberg", - "el": "αμπέλι", - "en": "vineyard", - "es": "viñedo", - "et": "viinapuuistandik", - "fi": "viinitila", - "fr": "vignoble", - "he": "כרם", - "hi": "द्राक्षाक्षेत्र", - "hr": "vinograd", - "id": "kebun anggur", - "it": "vigneto", - "ja": "葡萄園", - "lv": "vīna dārzs", - "nb": "vingård", - "nl": "wijngaard", - "pl": "winnica", - "pt": "vinha", - "ro": "vie", - "ru": "виноградник", - "sk": "vinohrad", - "sl": "vinograd", - "sr": "виноград", - "sv": "vingård", - "tr": "bağ", - "uk": "виноградник", - "vi": "vườn nho", - "zh": "葡萄园" - } - }, - "lawyer": { - "notary": { - "ar": "كاتب عمومي", - "bg": "нотариус", - "ca": "notari", - "cs": "písař", - "de": "öffentlicher schreiber", - "en": "scrivener", - "es": "escribano", - "fr": "écrivain public", - "he": "כותב בקשות", - "hu": "írnok", - "it": "scrivano", - "ja": "代書", - "nl": "schrijver", - "pt": "tabelião", - "ru": "нотариус римского права", - "sl": "pisar", - "sr": "писар", - "sv": "skrivare", - "tr": "arzuhâlci", - "zh": "代書" - } - }, - "leaf_cycle": { - "deciduous": { - "ar": "نفضي", - "bg": "листопадни растения", - "ca": "caducifoli", - "cs": "opadavá dřevina", - "da": "løvfældende", - "de": "laubabwerfend", - "el": "φυλλοβόλο", - "en": "deciduous plant", - "es": "caducifolio", - "et": "heitlehisus", - "fi": "kesävihanta", - "fr": "caduc", - "he": "נשירים", - "hi": "पतझड़ी", - "hr": "bjelogorica", - "hu": "lombhullató növény", - "id": "tumbuhan peluruh", - "is": "sumargræn jurt", - "it": "caducifoglio", - "ja": "落葉性", - "ko": "낙엽성", - "lt": "lapus metantys augalai", - "nb": "lauvfellende", - "nl": "bladverliezend", - "pl": "roślina zrzucająca liście", - "pt": "caducifólia", - "ro": "foioase", - "ru": "листопадные растения", - "sr": "листопадна биљка", - "sv": "lövfällande", - "th": "ไม้ผลัดใบ", - "tr": "yaprak döken bitkiler", - "uk": "листопадні рослини", - "vi": "cây rụng lá", - "zh": "落葉植物" - }, - "evergreen": { - "ar": "دائم الخضرة", - "bg": "вечнозелено растение", - "ca": "perennifoli", - "cs": "stálezelená rostlina", - "da": "stedsegrøn", - "de": "immergrüne pflanze", - "el": "αειθαλές", - "en": "evergreen plant", - "es": "perennifolio", - "et": "igihaljus", - "fi": "ainavihanta", - "fr": "sempervirent", - "he": "ירוק-עד", - "hi": "सदाबहार", - "hu": "örökzöld növény", - "id": "tumbuhan hijau abadi", - "is": "sígræn jurt", - "it": "pianta sempreverde", - "ja": "常緑植物", - "ko": "상록식물", - "lt": "visžaliai augalai", - "lv": "mūžzaļš augs", - "nb": "eviggrønn", - "nl": "groenblijvend", - "pl": "rośliny wiecznie zielone", - "pt": "folha persistente", - "ro": "plantă sempervirescentă", - "ru": "вечнозелёные растения", - "sr": "зимзелена биљка", - "sv": "städsegrön", - "th": "ไม้ไม่ผลัดใบ", - "tr": "her dem yeşil", - "uk": "вічнозелені рослини", - "vi": "cây thường xanh", - "zh": "常绿植物", - "zh-hk": "常綠植物", - "zh-tw": "常綠植物" - }, - "semi_deciduous": { - "ar": "شبه نفضية", - "ca": "semicaducifoli", - "cs": "poloopadavá rostlina", - "da": "vintergrøn", - "en": "semi-deciduous plant", - "es": "semicaducifolio", - "hu": "félörökzöld növény", - "ja": "半落葉性", - "nl": "semi-groenblijvend", - "ru": "полулистопадные растения", - "uk": "напівлистопадні рослини", - "zh": "半常綠林" - } - }, - "leaf_type": { - "broadleaved": { - "ca": "bosc decidu", - "cs": "listnatý les", - "da": "løvskov", - "de": "laubwald", - "en": "deciduous forest", - "es": "bosque caducifolio", - "et": "lehtmets", - "fr": "forêt décidue", - "it": "foresta decidua", - "ja": "落葉樹林", - "lt": "lapuočių miškai", - "nl": "loofbos", - "pl": "las liściasty", - "ro": "pădure de foioase", - "ru": "лиственный лес", - "sk": "listnatý les", - "sl": "listopadni gozd", - "sv": "lövskog", - "uk": "листяний ліс" - }, - "needleleaved": { - "ar": "غابة صنوبرية", - "bg": "иглолистна гора", - "cs": "jehličnatý les", - "da": "nåleskov", - "de": "nadelwald", - "el": "δάσος κωνοφόρων", - "en": "coniferous forest", - "es": "bosque de coníferas", - "et": "okasmets", - "fi": "havumetsä", - "fr": "forêt de conifères", - "hr": "crnogorična šuma", - "hu": "tűlevelű erdők", - "ja": "針葉樹林", - "lt": "spygliuočių miškai", - "nb": "barskog", - "nl": "naaldbos", - "pl": "las iglasty", - "ro": "pădure de conifere", - "ru": "хвойный лес", - "sk": "ihličnatý les", - "sl": "iglasti gozd", - "sv": "barrskog", - "uk": "хвойний ліс", - "zh": "针叶林" - } - }, - "leisure": { - "adult_gaming_centre": { - "de": "spielautomatenhalle", - "en": "adult gaming centre" - }, - "amusement_arcade": { - "ca": "saló recreatiu", - "cs": "herna", - "de": "spielhalle", - "en": "amusement arcade", - "es": "salón recreativo", - "fr": "salle d'arcade", - "he": "משחקיית וידאו", - "is": "spilasalur", - "it": "sala giochi", - "ja": "ゲームセンター", - "ko": "전자 오락실", - "nb": "spillehall", - "nl": "arcadehal", - "pt": "salão de jogos", - "pt-br": "fliperama", - "ru": "зал игровых автоматов", - "sv": "spelhall", - "tr": "atari salonu", - "zh": "電子遊樂場" - }, - "bandstand": { - "ca": "templet", - "cs": "hudební pavilon", - "de": "musikpavillon", - "en": "bandstand", - "es": "quiosco de música", - "fr": "kiosque à musique", - "it": "cassa armonica", - "ja": "野外音楽堂", - "nl": "muziektent", - "pl": "estrada", - "pt": "coreto", - "ru": "эстрада (павильон)", - "sv": "musikpaviljong", - "tr": "bando standı", - "vi": "bục dàn nhạc", - "zh": "演奏台" - }, - "beach_resort": { - "ar": "منتجع بحري", - "bg": "морски курорт", - "ca": "ressort marítim", - "cs": "letovisko", - "da": "badeby", - "de": "seebad", - "en": "seaside resort", - "es": "balneario", - "fi": "merikylpylä", - "fr": "station balnéaire", - "he": "אתר נופש לחוף הים", - "hu": "tengerparti fürdőhely", - "it": "stabilimento balneare", - "ja": "海水浴場", - "ko": "해수욕장", - "lt": "pajūrio kurortas", - "nb": "badeby", - "nl": "badplaats", - "pl": "kurort nadmorski", - "pt": "estância balnear", - "ro": "stațiune balneară", - "ru": "морской курорт", - "sk": "letovisko", - "sr": "приморско одмаралиште", - "sv": "badort", - "uk": "морський курорт", - "zh": "海水浴場" - }, - "bird_hide": { - "ca": "punt d'observació d'aus", - "cs": "ptačí pozorovatelna", - "da": "fugletårn", - "de": "vogelbeobachtungsturm", - "en": "bird hide", - "es": "observatorio de aves", - "fi": "lintutorni", - "fr": "observatoire ornithologique", - "ja": "ハイド", - "nb": "fugletårn", - "nl": "vogelkijkwand", - "sk": "pozorovateľňa vtáctva" - }, - "bowling_alley": { - "ca": "bowling", - "da": "bowlingbane", - "de": "bowlingbahn", - "en": "bowling alley", - "es": "bolera", - "fi": "keilahalli", - "fr": "salle de bowling", - "ja": "ボウリング・アレー", - "nb": "bowlinghall", - "nl": "bowlingbaan", - "pl": "kręgielnia", - "ru": "боулинг-центр", - "sv": "bowlingbana", - "zh": "保龄球馆" - }, - "common": { - "ar": "أرض مشتركة", - "da": "fælled", - "de": "allmende", - "en": "common land", - "es": "bien comunal", - "fi": "yhteismaa", - "fr": "biens communaux", - "ja": "共有地", - "nb": "allmenning", - "nl": "gemene grond", - "pl": "wspólnota gruntowa", - "pt": "baldio", - "ro": "obște sătească", - "ru": "альменда", - "sv": "allmänning", - "uk": "альменда", - "zh": "公地" - }, - "dance": { - "ca": "acadèmia de ball", - "cs": "taneční sál", - "da": "danseskole", - "de": "tanzsaal", - "el": "σχολή χορού", - "en": "dance hall", - "es": "estudio de baile", - "fi": "tanssilava", - "fr": "dancing", - "he": "בית ספר למחול", - "hu": "tánciskola", - "it": "scuola di danza", - "ja": "ダンスホール", - "ko": "무도장", - "nl": "dansstudio", - "pl": "szkoła tańca", - "pt": "estúdio de dança", - "ru": "школа танцев", - "sr": "плесна школа", - "sv": "danspalats", - "tr": "dans salonu", - "uk": "школа танцю", - "vi": "sàn khiêu vũ", - "zh": "舞廳" - }, - "disc_golf_course": { - "de": "discgolfanlage", - "en": "disc golf course", - "fi": "frisbeegolfrata", - "fr": "parcours de disque-golf", - "nl": "diskgolfbaan", - "ru": "корт для диск-гольфа", - "sv": "discgolfpark" - }, - "dog_park": { - "cs": "psí hřiště", - "da": "hundeskov", - "de": "hundezone", - "en": "dog park", - "es": "parque canino", - "fi": "koirapuisto", - "fr": "parc canin", - "he": "גינת כלבים", - "id": "anjing bisa berenang", - "ja": "ドッグラン", - "nl": "hondenpark", - "pl": "psi park", - "pt": "parque para cães", - "pt-br": "parque canino", - "ru": "собачья площадка", - "sv": "hundpark", - "zh": "草地跑" - }, - "escape_game": { - "ar": "غرفة الهروب", - "bg": "стая на загадките", - "ca": "joc d'escapada", - "cs": "úniková hra", - "da": "room escape spil", - "de": "escape-room", - "el": "δωμάτιo απόδρασης", - "en": "escape room", - "et": "põgenemismängud", - "fi": "pakohuonepeli", - "fr": "jeu d'évasion grandeur nature", - "he": "חדר בריחה", - "hu": "szabaduló szoba", - "id": "permainan kamar gelap", - "ja": "脱出ゲーム", - "ko": "방탈출 카페", - "ru": "эскейп-рум", - "sl": "soba pobega", - "sr": "бекство из просторије", - "tr": "evden kaçış", - "uk": "квест-кімната", - "zh": "密室逃脱" - }, - "firepit": { - "cs": "ohniště", - "da": "kogegrube", - "de": "feuerstelle", - "en": "fire pit", - "fi": "tulikehä", - "fr": "foyer", - "he": "בור אש", - "it": "brace", - "ja": "ファイアピット", - "nb": "kokegrop", - "sv": "kokgrop", - "uk": "пожежна яма", - "vi": "hố lửa" - }, - "fishing": { - "de": "angelplatz", - "en": "fishing allowed", - "fr": "lieu de pêche", - "ja": "釣り堀", - "pl": "wolno łowić ryby", - "pt": "local de pesca" - }, - "fitness_centre": { - "ar": "نادي صحي", - "bg": "фитнес зала", - "ca": "centre de fitness", - "cs": "posilovna", - "da": "motionscenter", - "de": "fitnessstudio", - "en": "health club", - "es": "club de salud", - "et": "jõusaal", - "fi": "kuntosali", - "fr": "centre de remise en forme", - "hr": "teretana", - "hu": "edzőterem", - "id": "pusat kebugaran", - "ja": "フィットネスクラブ", - "ko": "헬스클럽", - "lv": "fitnesa klubs", - "nb": "helsestudio", - "nl": "sportschool", - "pl": "siłownia", - "pt": "academia desportiva", - "ru": "фитнес-клуб", - "sv": "motionssal", - "tr": "fitness merkezi", - "uk": "фітнес-клуб", - "vi": "phòng tập gym", - "zh": "健身房" - }, - "fitness_station": { - "ar": "ملعب خارجي", - "bg": "открита тренажорна зала", - "cs": "venkovní posilovna", - "da": "udendørs træningscenter", - "de": "bewegungsparcours", - "el": "υπαίθρια γυμναστήρια", - "en": "outdoor gym", - "es": "gimnasio al aire libre", - "fi": "ulkokuntoilulaitteet", - "fr": "équipement de fitness en extérieur", - "he": "חדר כושר חיצוני", - "hi": "बाहरी जिम", - "it": "palestra all'aperto", - "ja": "アウトドアジム", - "nl": "beweegtuin", - "pl": "siłownia zewnętrzna", - "pt": "academia ao ar livre", - "ru": "спортивная площадка", - "sv": "utegym", - "th": "ยิมออกแบบในแวดวงการเกี่ยวกับการเดินทาง", - "tr": "açık spor salonu", - "uk": "спортивний майданчик", - "vi": "sân tập" - }, - "garden": { - "ar": "حديقة", - "bg": "градина", - "ca": "jardí", - "cs": "zahrada", - "da": "have", - "de": "garten", - "el": "κήπος", - "en": "garden", - "es": "jardín", - "et": "aed", - "fi": "puutarha", - "fr": "jardin", - "he": "גן", - "hi": "बाग", - "hr": "vrt", - "hu": "kert", - "id": "taman", - "is": "garður", - "it": "giardino", - "ja": "庭園", - "ko": "정원", - "lt": "sodas", - "lv": "dārzs", - "nb": "hage", - "nl": "tuin", - "pl": "ogród", - "pt": "jardim", - "ro": "grădina", - "ru": "сад", - "sk": "záhrada", - "sl": "vrt", - "sr": "башта", - "sv": "trädgård", - "th": "สวน", - "tr": "bahçe", - "uk": "сад", - "vi": "vườn cảnh", - "zh": "庭園" - }, - "golf_course": { - "ar": "ملعب غولف", - "bg": "голф игрище", - "ca": "camp de golf", - "cs": "golfové hřiště", - "da": "golfbane", - "de": "golfplatz", - "en": "golf course", - "es": "campo de golf", - "et": "golfiväljak", - "fi": "golfkenttä", - "fr": "terrain de golf", - "hr": "igralište za golf", - "hu": "goldpálya", - "id": "fairway", - "is": "golfvöllur", - "it": "campo da golf", - "ja": "ゴルフ場", - "ko": "골프장", - "lt": "golfo aikštynas", - "nb": "golfbane", - "nl": "golfbaan", - "pl": "pole golfowe", - "pt": "campo de golfe", - "ro": "teren de golf", - "ru": "поле для гольфа", - "sr": "терен за голф", - "sv": "golfbana", - "tr": "golf sahası", - "uk": "поле для гольфу", - "vi": "sân golf", - "zh": "高爾夫球場" - }, - "hackerspace": { - "ar": "معمل هاكر", - "bg": "хакерспейс", - "ca": "hacklab", - "da": "hacklab", - "de": "hackspace", - "en": "hackerspace", - "es": "hacklab", - "fi": "hacklab", - "hr": "hacklab", - "ja": "ハッカースペース", - "ko": "해커스페이스", - "nb": "skaperverksted", - "sl": "heklab", - "th": "แฮกเกอร์สเปซ", - "tr": "hacker kafe", - "zh": "黑客空间" - }, - "horse_riding": { - "ca": "instal·lació eqüestre", - "cs": "jezdecký areál", - "da": "rideskole", - "de": "pferdesportanlage", - "el": "κέντρο ιππασίας", - "en": "equestrian facility", - "es": "club de equitación", - "fi": "ratsastuskoulu", - "fr": "centre équestre", - "nb": "rideskole", - "nl": "manege", - "ru": "конноспортивный комплекс", - "sv": "ridskola" - }, - "ice_rink": { - "ar": "حلبة تزحلق", - "ca": "pista de gel", - "cs": "ledová plocha", - "da": "skøjtebane", - "de": "eisbahn", - "el": "παγοδρόμιο", - "en": "ice rink", - "es": "pista de hielo", - "et": "liuväli", - "fi": "luistinrata", - "fr": "patinoire", - "hu": "jégcsarnok", - "it": "pista di ghiaccio", - "ja": "スケートリンク", - "ko": "아이스링크", - "nb": "skøytebane", - "nl": "ijsbaan", - "pl": "lodowisko", - "pt": "ringue de patinagem", - "ro": "patinoar", - "ru": "каток", - "sr": "клизалиште", - "sv": "isrink", - "tr": "buz pateni pisti", - "uk": "ковзанка", - "zh": "滑冰場" - }, - "marina": { - "ar": "مارينا", - "ca": "port esportiu", - "da": "lystbådehavn", - "de": "yachthafen", - "el": "μαρίνα", - "en": "marina", - "es": "puerto deportivo", - "et": "väikesadam", - "fi": "venesatama", - "fr": "port de plaisance", - "he": "מרינה", - "hu": "jachtkikötő", - "is": "smábátahöfn", - "it": "porto turistico", - "ja": "ヨットハーバー", - "ko": "마리나", - "lv": "jahtu piestātne", - "nb": "lystbåthavn", - "nl": "jachthaven", - "ru": "стоянка для яхт", - "sv": "småbåtshamn", - "uk": "марина", - "zh": "娛樂港" - }, - "miniature_golf": { - "de": "minigolfplatz", - "en": "miniature golf course", - "nl": "minigolf", - "sv": "bangolfanläggning" - }, - "nature_reserve": { - "ar": "محمية طبيعية", - "bg": "резерват", - "ca": "reserva natural", - "cs": "přírodní rezervace", - "da": "naturreservat", - "de": "naturschutzgebiet", - "el": "φυσικό καταφύγιο", - "en": "nature reserve", - "es": "reserva natural", - "et": "looduskaitseala", - "fi": "luonnonpuisto", - "fr": "réserve naturelle", - "he": "שמורת טבע", - "hi": "संरक्षित प्रकृतिक्षेत्र", - "hr": "prirodni rezervat", - "hu": "természetvédelmi terület", - "id": "cagar alam", - "is": "friðland", - "it": "area naturale protetta", - "ja": "自然保護区", - "ko": "자연 보호 구역", - "lt": "draustinis", - "lv": "dabas rezervāts", - "nb": "naturreservat", - "nl": "natuurreservaat", - "pl": "rezerwat przyrody", - "pt": "reserva natural", - "pt-br": "reserva florestal", - "ro": "rezervație naturală", - "ru": "заповедник", - "sk": "prírodná rezervácia", - "sl": "naravni rezervat", - "sr": "резерват природе", - "sv": "naturreservat", - "tr": "doğa koruma alanı", - "uk": "природний заповідник", - "vi": "khu bảo tồn thiên nhiên", - "zh": "自然保护区", - "zh-hk": "自然保護區", - "zh-tw": "自然保護區" - }, - "park": { - "ar": "متنزه", - "bg": "парк", - "ca": "parc", - "el": "πάρκο", - "en": "park", - "es": "parque", - "fi": "puisto", - "fr": "parc", - "he": "פארק", - "hi": "पार्क", - "id": "taman", - "it": "parco", - "ja": "公園", - "ko": "공원", - "lt": "parkas", - "lv": "parks", - "pt": "parque", - "ro": "parc", - "ru": "парк", - "sr": "парк", - "th": "สวนสาธารณะ", - "uk": "парк", - "vi": "công viên", - "zh": "公園", - "zh-cn": "公园" - }, - "picnic_table": { - "ca": "berenador", - "da": "bordbænkesæt", - "de": "picknicktisch", - "en": "picnic table", - "es": "merendero", - "fr": "table de pique-nique", - "nl": "picknicktafel", - "pl": "stół piknikowy", - "pt": "parque de merendas", - "ru": "стол для пикника", - "sv": "bänkbord", - "uk": "стіл для пікніка" - }, - "pitch": { - "ar": "ملعب", - "bg": "тенис корт", - "ca": "terreny de joc", - "cs": "hřiště", - "da": "atletikstadion", - "de": "spielfeld", - "de-ch": "fussballfeld", - "el": "γήπεδο ποδοσφαίρου", - "en": "petanque pitch", - "en-gb": "association football pitch", - "es": "pista de petanca", - "et": "tenniseväljak", - "fi": "kenttä", - "fr": "pétanquodrome", - "he": "מגרש ספורט", - "hr": "nogometno igralište", - "hu": "labdarúgópálya", - "id": "lapangan olahraga", - "it": "superficie di gioco", - "ja": "ピッチ", - "ko": "피치 (필드)", - "lt": "teniso kortas", - "lv": "sporta laukums", - "nb": "idrettsbane", - "nl": "sportveld (gras)", - "pl": "boisko", - "pt": "campo desportivo", - "pt-br": "quadra esportiva", - "ro": "teren de joc", - "ru": "спортивная площадка", - "sk": "spielfeld", - "sl": "igrišče", - "sr": "спортски терен", - "sv": "spelplan", - "th": "สนามฟุตบอล", - "tr": "saha", - "uk": "спортивний майданчик", - "vi": "sân quần vợt", - "zh": "田徑場", - "zh-hk": "網球場" - }, - "playground": { - "ar": "ملعب أطفال", - "bg": "детска площадка", - "ca": "pati", - "cs": "dětské hřiště", - "da": "legeplads", - "de": "spielplatz", - "el": "παιδική χαρά", - "en": "playground", - "es": "espacio de recreación", - "et": "mänguväljak", - "fi": "leikkipuisto", - "fr": "terrain de jeux", - "he": "גן שעשועים", - "hr": "dječje igralište", - "hu": "játszótér", - "id": "taman bermain", - "it": "parco giochi", - "ja": "遊び場", - "ko": "놀이터", - "lv": "rotaļlaukums", - "nb": "lekeplass", - "nl": "speelplaats", - "pl": "plac zabaw", - "pt": "parque infantil", - "ro": "loc de joacă", - "ru": "детская площадка", - "sk": "detské ihrisko", - "sr": "игралиште", - "sv": "lekplats", - "th": "สนามเด็กเล่น", - "tr": "çocuk parkı", - "uk": "дитячий ігровий майданчик", - "vi": "sân chơi", - "zh": "操場" - }, - "recreation_ground": { - "ar": "منطقة ترفيهية", - "ca": "zona d'esbarjo", - "cs": "rekreační oblast", - "da": "fritidsområde", - "de": "erholungsgebiet", - "el": "χώρος αναψυχής", - "en": "recreation area", - "es": "zona de recreo", - "fi": "suojeltu ulkoilualue", - "fr": "zone récréative", - "hu": "üdülőterület", - "ja": "レクリエーション・エリア", - "lv": "atpūtas vieta", - "nb": "friområde", - "nl": "recreatiegebied", - "pl": "teren rekreacyjny", - "ru": "зона отдыха", - "sl": "območje za rekreacijo", - "sr": "одмаралиште", - "sv": "fritidsområde", - "tr": "boş alan", - "uk": "зона відпочинку" - }, - "red_light_district": { - "ar": "منطقة حمراء", - "bg": "квартал на червените фенери", - "ca": "districte vermell", - "de": "rotlichtviertel", - "en": "red-light district", - "es": "zona roja", - "fi": "punaisten lyhtyjen alue", - "fr": "quartier chaud", - "he": "רובע החלונות האדומים", - "hi": "रेड लाइट एरिया", - "hu": "vöröslámpás negyed", - "id": "distrik lampu merah", - "it": "quartiere a luci rosse", - "ja": "風俗街", - "ko": "홍등가", - "nl": "prostitutiegebied", - "pl": "dzielnica czerwonych latarni", - "pt": "zona de meretrício", - "ru": "квартал красных фонарей", - "sv": "prostitutionsstråk", - "tr": "kırmızı fener mahallesi", - "uk": "квартал червоних ліхтарів", - "vi": "phố đèn đỏ", - "zh": "紅燈區", - "zh-cn": "红灯区" - }, - "resort": { - "ar": "منتجع سياحي", - "bg": "курорт", - "ca": "complex turístic", - "cs": "rekreační středisko", - "da": "feriecenter", - "el": "θέρετρο", - "en": "resort", - "en-gb": "holiday centre", - "es": "complejo turístico", - "et": "puhkekeskus", - "fi": "lomakeskus", - "fr": "domaine touristique", - "he": "מתקן נופש", - "hr": "odmaralište", - "hu": "üdülőhely", - "id": "pesanggrahan", - "ja": "リゾート", - "ko": "리조트", - "lv": "kūrorts", - "nl": "vakantieoord", - "pl": "ośrodek wypoczynkowy", - "ru": "пансионат", - "sr": "одмаралиште", - "sv": "semesterort", - "th": "สถานพักตากอากาศ", - "tr": "tatil köyü", - "uk": "курорт", - "vi": "khu nghỉ mát", - "zh": "度假村" - }, - "sauna": { - "ar": "ساونا", - "bg": "сауна", - "el": "σάουνα", - "en": "sauna", - "et": "saun", - "he": "סאונה", - "hu": "szauna", - "is": "sána", - "ja": "サウナ風呂", - "ko": "사우나", - "lv": "pirts", - "nb": "badstue", - "ro": "saună", - "ru": "сауна", - "sl": "savna", - "sr": "сауна", - "sv": "bastu", - "th": "ซาวน่า", - "uk": "сауна", - "vi": "phòng tắm hơi", - "zh": "桑拿" - }, - "schoolyard": { - "da": "skolegård", - "de": "schulhof", - "en": "school playground", - "es": "patio de recreo", - "fr": "cour de récréation", - "ja": "校庭", - "nl": "schoolplein", - "sv": "skolgård", - "vi": "sân trường", - "zh": "操場", - "zh-cn": "操场" - }, - "shooting_ground": { - "bg": "стрелбище", - "ca": "polígon de tir", - "cs": "střelnice", - "da": "skydebane", - "de": "schießstand", - "el": "πεδίο βολής", - "en": "shooting range", - "es": "polígono de tiro", - "et": "lasketiir", - "fi": "ampumarata", - "fr": "stand de tir", - "he": "מטווח", - "id": "lapangan tembak", - "it": "poligono di tiro", - "ja": "射撃場", - "lt": "tiras", - "nb": "skytebane", - "nl": "schietbaan", - "pl": "strzelnica (strzelectwo)", - "pt": "estande de tiro", - "ro": "poligon de tragere", - "ru": "стрельбище", - "sl": "strelišče", - "sv": "skjutbana", - "tr": "poligon", - "uk": "тир", - "vi": "trường bắn", - "zh": "射擊靶場" - }, - "slipway": { - "ar": "منزلق", - "bg": "стапел", - "ca": "grada (nàutica)", - "da": "slæbested", - "de": "slipanlage", - "el": "νεωλκείο", - "en": "slipway", - "es": "grada", - "et": "elling", - "fi": "veneenlaskupaikka", - "fr": "cale", - "he": "ממשה", - "it": "squero", - "ja": "船台", - "ko": "슬립웨이", - "nb": "slipp", - "nl": "trailerhelling", - "pl": "pochylnia", - "pt": "plano inclinado", - "ru": "стапель", - "sv": "slip", - "tr": "kızak", - "uk": "стапель", - "zh": "滑道" - }, - "sports_hall": { - "ar": "قاعة التمرينات", - "bg": "спортна зала", - "ca": "gimnàs", - "cs": "tělocvična", - "da": "idrætshal", - "de": "turnhalle", - "el": "γυμναστήριο", - "en": "gymnasium", - "en-ca": "gym", - "en-gb": "gym", - "es": "gimnasio", - "et": "võimla", - "fi": "voimistelusali", - "fr": "gymnase", - "he": "חדר כושר", - "hu": "edzőterem", - "id": "gimnasium", - "it": "palestra", - "ja": "体育館", - "ko": "체육관", - "lt": "sporto salė", - "lv": "sporta zāle", - "nb": "gymsal", - "nl": "sportzaal", - "pl": "sala gimnastyczna", - "pt": "ginásio", - "ru": "спортивный зал", - "sl": "telovadnica", - "sr": "спортска хала", - "sv": "gym", - "tr": "spor salonu", - "uk": "спортивна зала", - "vi": "phòng thể dục", - "zh": "体育馆" - }, - "stadium": { - "ar": "ملعب", - "bg": "стадион", - "ca": "estadi", - "cs": "stadion", - "da": "stadion", - "de": "stadion", - "el": "στάδιο", - "en": "stadium", - "es": "estadio", - "et": "staadion", - "fi": "stadion", - "fr": "stade", - "he": "אצטדיון", - "hi": "क्रीडांगन", - "hr": "stadion", - "hu": "stadion", - "id": "stadion", - "it": "stadio", - "ja": "スタジアム", - "ko": "스타디움", - "lt": "stadionas", - "lv": "stadions", - "nb": "stadion", - "nl": "stadion", - "pl": "stadion sportowy", - "pt": "estádio", - "ro": "stadion", - "ru": "стадион", - "sk": "štadión", - "sl": "stadion", - "sr": "стадион", - "sv": "stadion", - "th": "สนามกีฬา", - "tr": "stadyum", - "uk": "стадіон", - "vi": "sân vận động", - "zh": "體育場" - }, - "summer_camp": { - "ar": "مخيم صيفي", - "bg": "детски лагер", - "ca": "colònies d'estiu", - "cs": "dětský tábor", - "da": "feriekoloni", - "de": "ferienlager", - "en": "summer camp", - "es": "campamento educativo", - "fi": "kesäsiirtola", - "fr": "centre de vacances ou de loisirs", - "he": "מחנה קיץ", - "hi": "समर कैम्प", - "hu": "nyári tábor", - "it": "colonia estiva", - "ja": "サマーキャンプ", - "ko": "여름 캠프", - "lt": "vaikų stovykla", - "nb": "feriekoloni", - "nl": "zomerkamp", - "pl": "obóz harcerski", - "ru": "детский лагерь", - "sk": "detský tábor", - "sr": "летњи камп", - "sv": "barnkoloni", - "tr": "yaz kampı", - "uk": "дитячий табір", - "vi": "trại hè", - "zh": "夏令營" - }, - "swimming_area": { - "de": "schwimmbereich", - "en": "swimming area", - "et": "ujumiskoht" - }, - "swimming_pool": { - "ar": "مسبح", - "bg": "плувен басейн", - "ca": "piscina", - "cs": "plavecký bazén", - "da": "svømmebassin", - "de": "öffentliches schwimmbad", - "de-ch": "schwimmbecken", - "el": "πισίνα", - "en": "private swimming pool", - "en-ca": "swimming pool", - "en-gb": "swimming pool", - "es": "piscina", - "et": "ujumisbassein", - "fi": "uima-allas", - "fr": "piscine privée", - "he": "בריכת שחייה", - "hi": "तरण ताल", - "hr": "bazen", - "hu": "úszómedence", - "id": "kolam renang", - "is": "sundlaug", - "it": "piscina", - "ja": "プール", - "ko": "수영장", - "lt": "baseinas", - "lv": "peldbaseins", - "nb": "svømmebasseng", - "nl": "zwembad", - "pl": "basen pływacki", - "pt": "piscina", - "ro": "tavan", - "ru": "общественный бассейн", - "sk": "plavecký bazén", - "sl": "bazen", - "sr": "базен", - "sv": "simbassäng", - "th": "สระว่ายน้ำ", - "tr": "havuz", - "uk": "плавальний басейн", - "vi": "hồ bơi", - "zh": "游泳池", - "zh-tw": "公共游泳池" - }, - "tanning_salon": { - "ar": "جهاز تسمير البشرة", - "bg": "солариум", - "ca": "solàrium", - "cs": "solárium", - "da": "solarium", - "de": "solarium", - "el": "σολάριουμ", - "en": "indoor tanning", - "es": "solárium", - "et": "solaarium", - "fi": "solariumi", - "fr": "solarium", - "he": "מיטת שיזוף", - "hr": "solarij", - "hu": "szolárium", - "id": "penyamakan nirsurya", - "it": "solarium", - "ja": "日焼けマシーン", - "ko": "일광욕 침대", - "lv": "solārijs", - "nb": "solarium", - "nl": "zonnebank", - "pl": "solarium", - "pt": "câmara de bronzeamento", - "ru": "солярий", - "sr": "соларијум", - "sv": "solarium", - "tr": "solaryum", - "uk": "солярій", - "zh": "美黑沙龙", - "zh-hk": "日晒床" - }, - "track": { - "ar": "مضمار الجري لجميع الأحوال الجوية", - "ca": "pista d'atletisme", - "cs": "atletická dráha", - "de": "leichtathletikanlage", - "en": "athletics track", - "es": "pista de atletismo", - "fi": "juoksurata", - "fr": "piste d'athlétisme", - "hu": "futószámok (atlétika)", - "it": "pista di atletica leggera", - "ja": "競走用トラック", - "nb": "løpebane", - "nl": "atletiekbaan", - "pl": "bieżnia", - "pt": "pista de atletismo", - "ru": "беговая дорожка", - "sr": "атлетска стаза", - "sv": "löparbana", - "uk": "бігова доріжка", - "zh": "跑道" - }, - "turkish_bath": { - "ar": "حمام عام", - "bg": "хамам", - "ca": "bany turc", - "cs": "turecká lázeň", - "da": "tyrkisk bad", - "de": "hammām", - "el": "χαμάμ", - "en": "hammam", - "et": "türgi saun", - "fi": "turkkilainen sauna", - "he": "חמאם", - "hi": "हमाम", - "hr": "hamam", - "hu": "törökfürdő", - "ja": "ハンマーム", - "ko": "하맘", - "lv": "turku pirts", - "nb": "tyrkisk bad", - "nl": "hamam", - "pl": "sauna turecka", - "pt": "banho turco", - "ru": "хаммам", - "sl": "hamam", - "sr": "турско купатило", - "sv": "hamam", - "tr": "hamam", - "uk": "хамам", - "vi": "nhà tắm thổ nhĩ kỳ", - "zh": "土耳其浴" - }, - "water_park": { - "ar": "متنزه مائي", - "bg": "аквапарк", - "ca": "parc aquàtic", - "cs": "akvapark", - "da": "vandland", - "de": "freizeitbad", - "en": "water park", - "es": "parque acuático", - "fi": "vesipuisto", - "fr": "parc aquatique", - "he": "פארק מים", - "hu": "élményfürdő", - "id": "taman air", - "it": "parco acquatico", - "ja": "ウォーター・パーク", - "ko": "워터파크", - "lt": "vandens parkas", - "nb": "badeland", - "nl": "waterpark", - "pl": "aquapark", - "pt": "parque aquático", - "ru": "аквапарк", - "sk": "aquapark", - "sr": "аквапарк", - "sv": "äventyrsbad", - "tr": "yüzme havuzu", - "uk": "аквапарк", - "vi": "công viên nước", - "zh": "水上遊樂園" - }, - "wildlife_hide": { - "cs": "úkryt v přírodě", - "de": "wildtierbeobachtungsturm", - "en": "wildlife hide", - "nl": "wildkijkhut", - "sk": "úkryt v prírode" - }, - "yes": { - "de": "freizeiteinrichtung", - "en": "leisure facility", - "ja": "レジャー施設", - "nb": "fritidsanlegg" - } - }, - "level": { - "0": { - "cs": "přízemí", - "da": "stueetage", - "de": "parterre (architektur)", - "de-at": "erdgeschoß", - "de-ch": "parterre", - "el": "ισόγειο", - "en": "ground floor", - "es": "planta baja", - "fr": "rez-de-chaussée", - "he": "קומת קרקע", - "it": "pianterreno", - "ja": "1階", - "nl": "begane grond", - "pl": "parter", - "pt": "térreo", - "ru": "наземный этаж", - "sv": "bottenvåning", - "vi": "trệt" - } - }, - "lgbtq": { - "primary": { - "ca": "lloc lgbt", - "de": "lgbt-ort", - "en": "lgbt place", - "es": "lugar lgbt", - "fr": "lieu lgbtqi+", - "it": "luogo lgbt", - "nl": "lgbti-locatie", - "pt": "espaço lgbt", - "ru": "место для лгбт" - } - }, - "lifeguard": { - "tower": { - "de": "rettungsschwimmerturm", - "en": "lifeguard tower", - "nl": "toren van reddingsbrigade" - } - }, - "line": { - "busbar": { - "ar": "قضيب توصيل", - "de": "sammelschiene", - "en": "busbar", - "es": "barra colectora", - "fr": "jeu de barres", - "he": "פס צבירה", - "hi": "बसबार", - "hu": "gyűjtősín", - "it": "blindosbarra", - "ja": "バスバー", - "nb": "samleskinne", - "pl": "szynoprzewód", - "ru": "шина", - "sl": "zbiralka", - "sr": "сабирнице", - "sv": "samlingsskena", - "th": "บัสดัก", - "uk": "шинопровід", - "zh": "母线" - } - }, - "listed_status": { - "Category_A": { - "ca": "edifici categoria a", - "de": "denkmalgeschützte gebäude der kategorie a", - "el": "διατηρητέο κτίριο κατηγορίας a", - "en": "category a listed building", - "es": "edificio categoría a", - "fi": "luokan a suojeltu rakennus skotlannissa", - "fr": "monument classé de catégorie a", - "he": "בניין רשום בדרגה a", - "it": "monumento classificato di categoria a", - "ja": "a類指定建築物", - "nb": "fredet bygning i kategori a", - "nl": "categorie a-monument in schotland", - "ro": "monument protejat de categoria a", - "ru": "реестровое здание категории a", - "uk": "реєстрова споруда категорії \"a\"", - "zh": "a类登录建筑" - }, - "Category_B": { - "ar": "بناء مدرج من الفئة ب", - "ca": "edifici categoria b", - "cs": "listed building kategorie b", - "de": "denkmalgeschützte gebäude der kategorie b", - "el": "διατηρητέο κτίριο κατηγορίας b", - "en": "category b listed building", - "es": "edificio categoría b", - "fi": "luokan b suojeltu rakennus skotlannissa", - "fr": "monument classé de catégorie b", - "he": "בניין רשום בדרגה b", - "it": "monumento classificato di categoria b", - "ja": "b類指定建築物", - "nl": "categorie b schots erfgoed", - "pl": "zabytek kategorii b", - "ro": "monument protejat de categoria b", - "ru": "реестровое здание категории b", - "uk": "реєстрова споруда категорії \"b\"" - }, - "Category_C": { - "ca": "edifici categoria c", - "el": "διατηρητέο κτίριο κατηγορίας c", - "en": "category c listed building", - "es": "edificio categoría c", - "fi": "luokan c suojeltu rakennus skotlannissa", - "fr": "monument classé de catégorie c", - "he": "בניין רשום בדרגה c", - "it": "monumento classificato di categoria c", - "ja": "c類指定建築物", - "nl": "categorie c schots erfgoed", - "ro": "monument protejat de categoria c", - "uk": "реєстрова споруда категорії \"c\"" - }, - "Grade_I": { - "ar": "مبان مصنفة من الدرجة الأولى", - "ca": "monument classificat com a grau i", - "da": "grade i-bygning", - "de": "grade-i-bauwerk", - "el": "διατηρητέο κτίριο βαθμού 1", - "en": "grade i listed building", - "es": "edificio listado como grado i", - "fi": "luokan i suojeltu rakennus britanniassa", - "fr": "monument classé de grade i", - "he": "בניין רשום בדרגה i", - "hu": "i. osztályba sorolt műemlék", - "it": "monumento classificato di categoria i", - "ja": "第一級指定建築物", - "nl": "grade i-bouwwerk", - "pt": "edifício listado como grade i", - "ro": "monument protejat de gradul i", - "ru": "реестровое здание 1 степени", - "tr": "1.derece bina", - "uk": "реєстрова будівля 1 ступеня", - "zh": "一級登錄建築" - }, - "Grade_II": { - "ar": "بناء مدرج من الدرجة الثانية", - "ca": "immoble registrat grau ii", - "de": "grade-ii-bauwerk", - "el": "διατηρητέο μνημείο β' βαθμού", - "en": "grade ii listed building", - "es": "edificio protegido de grado ii", - "fi": "luokan ii suojeltu rakennus britanniassa", - "fr": "monument classé de grade ii", - "he": "בניין רשום בדרגה ii", - "hu": "ii. osztályba sorolt műemlék", - "id": "bangunan kelas pangkat ii", - "it": "monumento classificato di categoria ii", - "ja": "第ニ級指定建築物", - "nl": "grade ii-bouwwerk", - "pt": "edifício listado como grade ii", - "ro": "monument protejat de gradul ii", - "ru": "реестровое здание 2 степени", - "tr": "ii. derece listelenmiş bina", - "uk": "реєстрова будівля 2 ступеня", - "zh": "第二级登录建筑" - }, - "Grade_II*": { - "ar": "الدرجة الثانية * مبنى مدرج", - "ca": "monument classificat com a grau ii*", - "cs": "registrovaná stavba ii* stupně", - "de": "grade-ii*-bauwerk", - "el": "διατηρητέο κτίριο βαθμού 2*", - "en": "grade ii* listed building", - "es": "monumento clasificado grado ii*", - "fi": "luokan ii* suojeltu rakennus britanniassa", - "fr": "monument classé de grade ii*", - "he": "בניין רשום בדרגה ii*", - "it": "monumento classificato di categoria ii*", - "ja": "第ニ*級指定建築物", - "nl": "grade ii*-bouwwerk", - "pt": "edifício listado como grade ii", - "ro": "monument protejat de clasa a ii*-a", - "ru": "реестровое здание ii* степени", - "tr": "derece ii listelenmiş bina", - "zh": "ii*級登錄建築" - } - }, - "locality": { - "townland": { - "en": "townland", - "ja": "タウンランド", - "ru": "таунленд", - "uk": "таунленд", - "zh": "鎮區 (愛爾蘭)" - } - }, - "location": { - "indoor": { - "ca": "a l'interior", - "en": "indoors", - "fr": "à l'intérieur", - "he": "בפנים", - "hu": "bent", - "it": "all'interno", - "nl": "binnen", - "pl": "wewnątrz", - "pt": "em recinto coberto", - "ru": "в помещении", - "sl": "znotraj", - "sv": "inomhus" - }, - "outdoor": { - "ca": "a l'aire lliure", - "en": "outdoors", - "es": "al aire libre", - "fi": "ulkoilma", - "fr": "en plein air", - "he": "בחוץ", - "hu": "kint", - "it": "all'aperto", - "ko": "집 밖에서", - "nl": "buiten", - "pl": "na zewnątrz", - "pt": "ao ar livre", - "ru": "на открытом воздухе", - "sl": "na prostem", - "sv": "utomhus", - "uk": "просто неба" - }, - "underground": { - "ar": "قبو", - "bg": "подземие", - "ca": "estructura subterrània", - "cs": "podzemí", - "de": "unterirdische struktur", - "en": "subterranea", - "es": "estructura subterránea", - "et": "maa-alune ruum", - "fi": "maanalainen tila", - "fr": "souterrain", - "he": "תת־קרקע", - "id": "bawah tanah", - "it": "struttura sotterranea", - "ja": "地下", - "ko": "지하", - "nl": "ondergrondse constructie", - "pt": "estrutura subterrânea", - "ru": "подземелье", - "sl": "podzemlje", - "sr": "подземна структура", - "sv": "underjorden", - "tr": "yer altı", - "uk": "підземелля" - } - }, - "man_made": { - "adit": { - "cs": "štola", - "da": "stoll", - "de": "stollen", - "en": "adit", - "fr": "galerie de mine", - "ja": "横坑", - "nb": "stoll", - "nl": "horizontale schacht", - "pl": "sztolnia", - "ro": "galerie minieră", - "ru": "штольня", - "sk": "štôlňa", - "sv": "stoll", - "uk": "штольня" - }, - "beacon": { - "ar": "مرشد لاسلكي", - "ca": "marca de navegació", - "cs": "baken", - "de": "bake", - "de-ch": "schifffahrtszeichen", - "en": "beacon", - "en-ca": "sea mark", - "es": "marca de navegación", - "et": "paak", - "fi": "merimerkki", - "fr": "balisage", - "he": "משואה", - "hi": "ध्यानाकर्षक बत्ती", - "id": "sinyal pandu", - "is": "vegviti", - "it": "segnalamenti marittimi ottici", - "ja": "ビーコン", - "ko": "항로표지", - "nl": "baken", - "pt": "balizagem marítima", - "ru": "бакен", - "sv": "signalanordning", - "uk": "бакен", - "zh": "烽火臺" - }, - "beehive": { - "ar": "قفير", - "bg": "пчелен кошер", - "ca": "rusc", - "cs": "včelí úl", - "da": "bistade", - "de": "bienenstock", - "el": "κυψέλη", - "en": "beehive", - "es": "colmena", - "et": "taru", - "fi": "mehiläispesä", - "fr": "ruche", - "he": "כוורת", - "hi": "bee hive", - "hr": "košnica", - "hu": "méhlakás", - "id": "sarang lebah", - "is": "býflugnabú", - "it": "arnia", - "ja": "養蜂箱", - "ko": "벌통", - "lt": "avilys", - "lv": "bišu strops", - "nb": "bikube", - "nl": "bijenkorf", - "pl": "ul", - "pt": "colmeia", - "ro": "stup", - "ru": "улей", - "sk": "úľ", - "sl": "čebelji panj", - "sr": "кошница", - "sv": "bikupa", - "tr": "arı kovanı", - "uk": "вулик", - "vi": "tổ ong", - "zh": "蜂巢" - }, - "breakwater": { - "ar": "حاجز أمواج", - "bg": "вълнолом", - "ca": "escullera", - "cs": "vlnolam", - "da": "mole", - "de": "wellenbrecher", - "el": "κυματοθραύστης", - "en": "breakwater", - "es": "rompeolas", - "fi": "aallonmurtaja", - "fr": "brise-lames", - "he": "שובר גלים", - "hi": "तरंगरोध", - "hu": "hullámtörő", - "id": "pemecah gelombang", - "it": "frangiflutti", - "ja": "防波堤", - "ko": "방파제", - "lt": "molas", - "nb": "molo", - "nl": "golfbreker", - "pl": "falochron", - "pt": "quebra-mar", - "ro": "mol (construcție)", - "ru": "волнолом", - "sk": "vlnolam", - "sl": "valobran", - "sr": "лукобран", - "sv": "vågbrytare", - "tr": "dalgakıran", - "uk": "хвилеріз", - "vi": "đê chắn sóng", - "zh": "防波堤" - }, - "bridge": { - "ar": "جسر", - "bg": "мост", - "ca": "pont", - "cs": "most", - "da": "bro", - "de": "brücke", - "el": "γέφυρα", - "en": "bridge", - "es": "puente", - "et": "sild", - "fi": "silta", - "fr": "pont", - "he": "גשר", - "hi": "सेतु", - "hr": "most", - "hu": "híd", - "id": "jembatan", - "is": "brú", - "it": "ponte", - "ja": "橋", - "ko": "다리", - "lt": "tiltas", - "lv": "tilts", - "nb": "bro", - "nl": "brug", - "pl": "most", - "pt": "ponte", - "ro": "pod", - "ru": "мост", - "sk": "most", - "sl": "most", - "sr": "мост", - "sv": "bro", - "th": "สะพาน", - "tr": "köprü", - "uk": "міст", - "vi": "cầu", - "zh": "桥", - "zh-hk": "橋", - "zh-tw": "橋" - }, - "buttress": { - "ar": "كتف (عمارة)", - "bg": "контрафорс", - "ca": "contrafort", - "cs": "opěrný systém", - "da": "stræbepille", - "de": "strebewerk", - "el": "αντηρίδα", - "en": "buttress", - "es": "contrafuerte", - "et": "tugipiilar", - "fr": "contrefort", - "hr": "kontrafor", - "hu": "támpillér", - "it": "contrafforte", - "ja": "控え壁", - "ko": "버트레스", - "lt": "kontraforsas", - "nb": "strebepilar", - "nl": "steunbeer", - "pl": "system przyporowy", - "pt": "contraforte", - "ro": "contrafort", - "ru": "контрфорс", - "sk": "oporný systém", - "sl": "opornik", - "sv": "strävpelare", - "th": "ครีบยัน", - "uk": "контрфорс", - "zh": "扶壁" - }, - "cairn": { - "ar": "رجوم", - "cs": "mužik", - "da": "varde", - "de": "steinmännchen", - "en": "cairn", - "fi": "röykkiö", - "he": "רוג'ום", - "hi": "केअर्न", - "id": "tugu penanda jejak", - "is": "varða", - "ja": "ケアン", - "ko": "케언", - "lt": "kernas", - "nb": "varde", - "nl": "steenmannetje", - "pt": "moledros", - "ro": "grămadă", - "ru": "тур", - "sk": "skalný mužík", - "sl": "možic", - "sr": "громиле", - "sv": "stenröse", - "uk": "тур", - "zh": "石冢" - }, - "campanile": { - "cs": "kampanila", - "da": "kampanile", - "en": "campanile", - "et": "kampaniil", - "fi": "kampaniili", - "ja": "鐘楼", - "lt": "kampanilė", - "nb": "kampanile", - "pl": "kampanila", - "ru": "кампанила", - "sk": "kampanila", - "sv": "kampanil", - "uk": "кампаніла" - }, - "carpet_hanger": { - "cs": "klepadlo na koberce", - "de": "teppichstange", - "en": "carpet hanger", - "es": "soporte para golpeador de alfombras", - "pl": "trzepak", - "sk": "prašiak", - "uk": "вішак для килима" - }, - "chimney": { - "ar": "مدخنة", - "bg": "комин", - "ca": "xemeneia", - "cs": "komín", - "da": "skorsten", - "de": "schornstein", - "el": "καπνοδόχος", - "en": "chimney", - "es": "chimenea", - "et": "korsten", - "fi": "savupiippu", - "fr": "cheminée", - "he": "ארובה", - "hi": "चिमनी", - "hr": "dimnjak", - "hu": "kémény", - "id": "cerobong", - "it": "ciminiera", - "ja": "煙突", - "ko": "굴뚝", - "lt": "kaminas", - "lv": "dūmvads", - "nb": "skorstein", - "nl": "schoorsteen", - "pl": "komin", - "pt": "chaminé", - "ro": "coș de fum", - "ru": "дымовая труба", - "sk": "komín", - "sl": "dimnik", - "sr": "димњак", - "sv": "skorsten", - "th": "ปล่องไฟ", - "tr": "baca", - "uk": "димова труба", - "zh": "烟囱", - "zh-hk": "煙囪", - "zh-tw": "煙囪" - }, - "clearcut": { - "ar": "إزالة الأشجار", - "cs": "mýcení", - "de": "kahlschlag", - "el": "αποψιλωτική υλοτομία", - "en": "clearcutting", - "es": "tala rasa", - "et": "lageraie", - "fi": "avohakkuu", - "fr": "coupe rase", - "id": "tebang habis", - "it": "taglio raso", - "ja": "皆伐", - "ko": "개벌", - "lv": "kailciršana", - "nb": "snauhogst", - "nl": "kaalslag", - "pl": "zrąb (leśnictwo)", - "pt": "corte raso", - "ru": "сплошная рубка", - "sv": "slutavverkning", - "zh": "皆伐", - "zh-cn": "清场型砍伐" - }, - "compass_rose": { - "ar": "وردة البوصلة", - "bg": "роза на компаса", - "ca": "rosa dels vents", - "cs": "větrná růžice", - "da": "kompasrose", - "de": "windrose", - "el": "ανεμολόγιο", - "en": "compass rose", - "es": "rosa de los vientos", - "et": "kompassiroos", - "fi": "kompassiruusu", - "fr": "rose des vents", - "he": "שושנת הרוחות", - "hu": "szélrózsa", - "id": "mawar kompas", - "is": "áttarós", - "it": "rosa dei venti", - "ja": "羅針図", - "lv": "kompasa roze", - "nb": "kompassrose", - "nl": "windroos", - "pl": "róża wiatrów", - "pt": "rosa dos ventos", - "ro": "roza vânturilor", - "ru": "роза ветров", - "sr": "ружа географских смерова", - "sv": "kompassros", - "uk": "роза вітрів", - "zh": "羅盤玫瑰" - }, - "cooling_tower": { - "ar": "برج تبريد", - "bg": "охладителна кула", - "ca": "torre de refrigeració", - "cs": "chladicí věž", - "de": "kühlturm", - "en": "cooling tower", - "es": "torre de refrigeración", - "et": "jahutustorn", - "fi": "jäähdytystorni", - "fr": "tour aéroréfrigérante", - "he": "מגדל קירור", - "hi": "कूलिंग टॉवर", - "hr": "rashladni toranj", - "id": "menara pendingin", - "it": "torre di raffreddamento", - "ja": "冷却塔", - "ko": "냉각탑", - "lv": "dzesēšanas tornis", - "nb": "kjøletårn", - "nl": "koeltoren", - "pl": "chłodnia kominowa", - "pt": "torre de resfriamento", - "ro": "turn de răcire", - "ru": "градирня", - "sk": "chladiaca veža", - "sl": "hladilni stolp", - "sr": "торањ за хлађење", - "sv": "kyltorn", - "tr": "soğutma kulesi", - "uk": "градирня", - "vi": "tháp giải nhiệt", - "zh": "冷却塔", - "zh-hk": "冷卻塔", - "zh-tw": "冷卻塔" - }, - "courtyard": { - "ar": "فناء", - "bg": "вътрешен двор", - "ca": "pati", - "cs": "nádvoří", - "da": "baggård", - "de": "hof", - "en": "courtyard", - "es": "cour", - "et": "hoov", - "fi": "sisäpiha", - "fr": "cour d'immeuble", - "he": "חצר פנימית", - "hu": "udvar", - "it": "corte", - "ja": "中庭", - "ko": "안마당", - "nb": "borggård", - "nl": "binnenplaats", - "pl": "dziedziniec", - "pt": "pátio", - "ru": "двор-колодец", - "sk": "nádvorie", - "sl": "udvar", - "sr": "двориште", - "sv": "borggård", - "uk": "внутрішній дворик", - "vi": "sân", - "zh": "中庭" - }, - "crane": { - "ar": "رافعة", - "bg": "кран", - "ca": "grua", - "cs": "jeřáb", - "da": "kran", - "de": "kran", - "el": "γερανός", - "en": "crane", - "es": "grúa", - "et": "kraana", - "fi": "nosturi", - "fr": "grue", - "he": "עגורן", - "hi": "क्रेन", - "hr": "dizalica", - "hu": "daru", - "id": "derek", - "it": "gru", - "ja": "クレーン", - "ko": "기중기", - "lt": "kranas", - "lv": "celtnis", - "nb": "heisekran", - "nl": "kraan", - "pl": "żuraw", - "pt": "guindaste", - "ro": "macara", - "ru": "грузоподъёмный кран", - "sk": "žeriav", - "sl": "žerjav", - "sr": "дизалице", - "sv": "lyftkran", - "tr": "vinç", - "uk": "підйомний кран", - "vi": "cần trục", - "zh": "起重机", - "zh-hk": "起重機", - "zh-tw": "起重機" - }, - "cross": { - "ar": "صليب مسيحي", - "bg": "христиански кръст", - "ca": "creu monumental", - "cs": "monumentální kříž", - "da": "kristent kors", - "de": "monumentalkreuz", - "el": "χριστιανικός σταυρός", - "en": "monumental cross", - "es": "cruz monumental", - "fi": "kristinuskon risti", - "fr": "croix monumentale", - "hi": "christian about symbol", - "hr": "križ", - "id": "salib puncak", - "it": "croce monumentale", - "ja": "十字架", - "ko": "십자가", - "lt": "krikščionių kryžius", - "lv": "kristiešu krusts", - "nb": "kristent kors", - "nl": "monumentaal kruis", - "pl": "krzyż-pomnik", - "pt": "cruz cristã", - "pt-br": "cruz monumental", - "ro": "cruce creștină", - "ru": "поклонный крест", - "sk": "kresťanský kríž", - "sl": "krščanski križ", - "sr": "часни крст", - "sv": "kristet kors", - "uk": "християнський хрест", - "vi": "đài thập ác", - "zh": "十字架" - }, - "cutline": { - "cs": "průsek", - "de": "schneise", - "en": "cutline", - "et": "siht", - "lt": "proskyna", - "ru": "просека", - "uk": "просіка" - }, - "dyke": { - "ar": "سد ترابي", - "bg": "дига", - "ca": "dic", - "cs": "hráz", - "da": "dige", - "de": "deich", - "el": "ανάχωμα", - "en": "levee", - "es": "dique", - "et": "tamm", - "fi": "penger", - "fr": "digue", - "he": "סוללה", - "hi": "तटबन्ध", - "hr": "nasip", - "hu": "töltés", - "id": "tanggul", - "it": "argine", - "ja": "堤防", - "ko": "제방", - "lt": "damba", - "lv": "dambis", - "nb": "dike", - "nl": "dijk", - "pl": "grobla", - "pt": "dique", - "ro": "dig", - "ru": "дамба", - "sk": "hrádza", - "sr": "насип", - "sv": "vall", - "th": "คันดินธรรมชาติ", - "tr": "su seti", - "uk": "дамба", - "vi": "đê", - "zh": "堤" - }, - "flagpole": { - "ar": "سارية علم", - "bg": "флагщок", - "cs": "žerď", - "da": "falgstang", - "de": "fahnenmast", - "el": "ιστός σημαίας", - "en": "flagpole", - "es": "asta de bandera", - "et": "lipumast", - "fi": "lipputanko", - "fr": "mât de drapeau", - "he": "תורן", - "hu": "zászlórúd", - "id": "tiang bendera", - "it": "portabandiera", - "ja": "旗竿", - "nb": "flaggstang", - "nl": "vlaggenmast", - "pt": "mastro de bandeira", - "pt-br": "porta-bandeira", - "ru": "флагшток", - "sv": "flaggstång", - "uk": "флагшток", - "vi": "cột cờ", - "zh": "旗杆" - }, - "gasometer": { - "ca": "gasòmetre", - "cs": "plynojem", - "de": "gasbehälter", - "en": "gas holder", - "es": "gasómetro", - "fi": "kaasukello", - "fr": "gazomètre", - "he": "גליל גז", - "hi": "गैसधानी", - "hu": "teleszkópos gáztározó", - "it": "gasometro", - "ja": "ガスタンク", - "nb": "gassklokke", - "nl": "gashouder", - "pl": "gazometer", - "pt": "gasómetro", - "pt-br": "gasômetro", - "ru": "газгольдер", - "sv": "gasklocka", - "tr": "gaz tutucu", - "uk": "газгольдер", - "zh": "煤氣鼓" - }, - "geoglyph": { - "ar": "جيوغليف", - "ca": "geoglif", - "cs": "geoglyf", - "da": "geoglyf", - "de": "geoglyphe", - "el": "γεωγλυφικό", - "en": "geoglyph", - "es": "geoglifo", - "fi": "geoglyfi", - "fr": "géoglyphe", - "he": "גאוגליף", - "hu": "geoglifa", - "it": "geoglifo", - "ja": "地上絵", - "ko": "지상화", - "lt": "geoglifas", - "nb": "geoglyf", - "nl": "geoglief", - "pl": "geoglif", - "pt": "geoglifo", - "ru": "геоглиф", - "sl": "geoglif", - "sr": "геоглиф", - "sv": "geoglyf", - "uk": "геогліфи", - "zh": "地畫" - }, - "goods_conveyor": { - "ar": "نظام ناقل", - "cs": "dopravník", - "de": "förderanlage", - "en": "conveyor system", - "es": "faja transportadora", - "fi": "kuljetin", - "fr": "système de convoyage", - "hi": "संवाहक प्रणाली", - "hr": "tekuća vrpca", - "ja": "コンベア", - "ko": "컨베이어 시스템", - "pl": "przenośnik", - "ru": "конвеер", - "sr": "транспортни систем", - "sv": "transportörsystem", - "tr": "konveyör sistemleri", - "uk": "конвеєрна лінія", - "zh": "傳送系統" - }, - "groyne": { - "ar": "مصد الأمواج", - "da": "høfde", - "de": "buhne", - "en": "groyne", - "et": "buun", - "fr": "épi", - "id": "groin", - "it": "pennello a mare", - "ja": "突堤", - "ko": "방사제", - "nl": "krib", - "pl": "ostroga regulacyjna", - "ru": "буна", - "sv": "hövd", - "uk": "хвилеріз", - "zh": "防波堤" - }, - "guard_stone": { - "cs": "nárožní kámen", - "de": "radabweiser", - "en": "guard stone", - "es": "guardacantón", - "fr": "chasse-roue", - "hr": "rubnjak", - "hu": "kerékvető", - "it": "paracarro", - "nl": "schamppaal", - "pl": "odbój bramny", - "pt": "frade de pedra", - "ru": "колёсоотбойная тумба", - "uk": "дорожня тумба" - }, - "ice_house": { - "ca": "pou de neu", - "cs": "ledárna", - "da": "ishus", - "de": "eishaus", - "el": "κτίρια αποθήκευσης πάγου", - "en": "ice house", - "es": "pozo de nieve", - "et": "jääkelder", - "fr": "glacière", - "he": "בית קרח", - "it": "neviera", - "ja": "氷室", - "ko": "빙실", - "lt": "ledainė", - "nb": "ishus", - "nl": "ijshuis", - "pl": "lodownia", - "pt": "casa de gelo", - "ro": "ghețărie", - "ru": "ледник", - "sv": "iskällare", - "uk": "якчал", - "zh": "冰窖" - }, - "insect_hotel": { - "ca": "caixa d'insectes", - "cs": "hmyzí hotel", - "da": "insekthotel", - "de": "insektenhotel", - "en": "insect hotel", - "es": "caja de insectos", - "fi": "hyönteishotelli", - "fr": "hôtel à insectes", - "he": "בית מלון לחרקים", - "hu": "rovarhotel", - "it": "albergo per insetti", - "ja": "虫のホテル", - "nb": "insekthotell", - "nl": "insectenhotel", - "pl": "hotel dla owadów", - "pt": "hotel de insectos", - "ru": "гостиница для насекомых", - "sr": "хотел за инсекте", - "sv": "insektshotell", - "uk": "будиночки для комах" - }, - "kiln": { - "ar": "قمين", - "bg": "пещ", - "ca": "forn", - "cs": "pec", - "de": "brennofen", - "el": "καμίνι", - "en": "kiln", - "fi": "polttouuni", - "fr": "touraille", - "hi": "भट्टा", - "id": "tanur", - "ja": "窯", - "ko": "가마", - "nl": "veldoven", - "pl": "piec przemysłowy", - "pt": "forno", - "ru": "промышленная печь", - "uk": "промислова піч", - "zh": "窯", - "zh-cn": "窑" - }, - "launch_pad": { - "ar": "منصة إطلاق", - "ca": "plataforma de llançament", - "cs": "odpalovací rampa", - "de": "startrampe", - "el": "εξέδρα εκτόξευσης", - "en": "launch pad", - "es": "plataforma de despegue", - "et": "stardiplatvorm", - "fi": "laukaisualusta", - "fr": "aire de lancement", - "he": "כן שיגור", - "hr": "lansirna rampa", - "hu": "indítóállás", - "it": "rampa di lancio", - "ja": "発射台", - "ko": "발사대", - "nl": "lanceerplatform", - "pl": "platforma startowa", - "pt": "plataforma de lançamento", - "ru": "стартовый комплекс", - "sr": "лансирна рампа", - "th": "ฐานปล่อยจรวด", - "tr": "fırlatma rampası", - "uk": "стартовий комплекс", - "vi": "bệ phóng", - "zh": "发射台" - }, - "lighthouse": { - "ar": "منارة", - "bg": "морски фар", - "ca": "far", - "cs": "maják", - "da": "fyr", - "de": "leuchtturm", - "el": "φάρος", - "en": "lighthouse", - "es": "faro", - "et": "tuletorn", - "fi": "majakka", - "fr": "phare", - "he": "מגדלור", - "hi": "प्रकाशस्तम्भ", - "hr": "svjetionik", - "hu": "világítótorony", - "id": "mercusuar", - "is": "viti", - "it": "faro", - "ja": "灯台", - "ko": "등대", - "lt": "švyturys", - "lv": "bāka", - "nb": "fyr", - "nl": "vuurtoren", - "pl": "latarnia morska", - "pt": "farol", - "ro": "far", - "ru": "маяк", - "sk": "maják", - "sl": "svetilnik", - "sr": "светионик", - "sv": "fyr", - "th": "ประภาคาร", - "tr": "deniz feneri", - "uk": "маяк", - "vi": "hải đăng", - "zh": "灯塔", - "zh-hk": "燈塔", - "zh-tw": "燈塔" - }, - "livestock_dip": { - "ar": "غطسة", - "en": "plunge dip", - "pt": "banheiro de gado" - }, - "mast": { - "ar": "سارية جهاز الإرسال", - "bg": "телевизионна кула", - "ca": "torre de radiodifusió", - "cs": "stožár", - "da": "antennemast", - "de": "sendemast", - "el": "ιστός αναμετάδοσης", - "en": "transmitter mast", - "es": "torres de telecomunicaciones", - "et": "saatemast", - "fi": "masto", - "fr": "émetteur de télévision", - "he": "מגדל תקשורת", - "hu": "adótorony", - "id": "tiang radio", - "is": "sendimastur", - "it": "torre di trasmissione", - "ja": "電波塔", - "ko": "방송탑", - "lt": "stiebas", - "nl": "zendmast", - "pl": "maszt radiowy", - "pt": "torres e antenas de rádio", - "ru": "антенно-мачтовое сооружение", - "sv": "sändarmast", - "tr": "radyo direkleri ve kuleleri", - "uk": "радіовежа", - "vi": "tháp truyền hình", - "zh": "廣播塔", - "zh-cn": "天线塔" - }, - "mineshaft": { - "ca": "eix de mina", - "cs": "šachta", - "de": "schacht", - "en": "mine shaft", - "es": "pozo", - "fr": "puits de mine", - "hu": "akna", - "id": "poros tambang", - "it": "pozzo", - "ja": "竪坑", - "nb": "sjakt", - "nl": "mijnschacht", - "pl": "szyb (górnictwo)", - "ru": "шахтный ствол", - "sr": "рударско окно", - "sv": "gruvschakt", - "uk": "шахтний стовбур", - "zh": "豎井" - }, - "monitoring_station": { - "cs": "měřící stanice", - "de": "messstation", - "en": "monitoring station", - "es": "estación de monitoreo o control", - "fi": "mittausasema", - "fr": "station d'observation", - "he": "תחנת ניטור", - "ja": "監視局", - "sv": "mätningsstation" - }, - "nesting_site": { - "cs": "hnízdní pomůcky", - "de": "nisthilfe", - "en": "nesting aids" - }, - "observatory": { - "ar": "مرصد", - "bg": "обсерватория", - "ca": "observatori", - "cs": "observatoř", - "da": "observatorium", - "de": "observatorium", - "el": "αστεροσκοπείο", - "en": "observatory", - "es": "observatorio", - "et": "observatoorium", - "fi": "observatorio", - "fr": "observatoire", - "he": "מצפה", - "hi": "वेधशाला", - "hr": "opservatorij", - "hu": "obszervatórium", - "id": "observatorium", - "it": "osservatorio astronomico", - "ja": "観測所", - "ko": "관측소", - "lt": "observatorija", - "lv": "observatorija", - "nb": "observatorium", - "nl": "observatorium", - "pl": "obserwatorium", - "pt": "observatório", - "ro": "observator astronomic", - "ru": "обсерватория", - "sk": "observatórium", - "sl": "observatorij", - "sr": "опсерваторија", - "sv": "observatorium", - "th": "หอดูดาว", - "tr": "gözlemevi", - "uk": "обсерваторія", - "vi": "đài thiên văn", - "zh": "观测台", - "zh-hk": "觀測台", - "zh-tw": "觀測台" - }, - "offshore_platform": { - "ar": "منصة نفط", - "bg": "нефтена платформа", - "ca": "plataforma petroliera", - "cs": "ropná plošina", - "da": "olieboreplatform", - "de": "bohrplattform", - "en": "oil platform", - "es": "plataforma petrolífera", - "fi": "öljynporauslautta", - "fr": "plate-forme pétrolière", - "he": "אסדת קידוח", - "hr": "naftna platforma", - "id": "anjungan lepas pantai", - "is": "olíuborpallur", - "it": "piattaforma petrolifera", - "ja": "石油プラットフォーム", - "ko": "석유 플랫폼", - "nb": "oljeplattform", - "nl": "productieplatform", - "pl": "platforma wiertnicza", - "pt": "plataforma petrolífera", - "ro": "platformă petrolieră", - "ru": "нефтяная платформа", - "sl": "naftna ploščad", - "sr": "нафтна платформа", - "sv": "oljeplattform", - "tr": "petrol platformu", - "uk": "нафтова платформа", - "vi": "giàn khoan dầu", - "zh": "石油平台" - }, - "petroleum_well": { - "ar": "بئر نفط", - "ca": "pou petrolífer", - "cs": "ropný vrt", - "de": "ölquelle", - "el": "πετρελαιοπηγή", - "en": "oil well", - "es": "pozo petrolífero", - "fr": "puits de pétrole", - "he": "באר נפט", - "hu": "olajkút", - "id": "sumur minyak", - "is": "olíuborhola", - "it": "pozzo petrolifero", - "ja": "油井", - "ko": "유정", - "nb": "oljebrønn", - "nl": "oliebron", - "pl": "szyb naftowy", - "pt": "poço de petróleo", - "ru": "нефтяная скважина", - "sr": "нафтна бушотина", - "tr": "neft quyusu", - "uk": "нафтова свердловина", - "vi": "giếng dầu", - "zh": "油井" - }, - "pier": { - "ar": "رصيف بحري", - "bg": "кей", - "ca": "embarcador", - "cs": "molo", - "de": "anleger", - "de-ch": "seebrücke", - "el": "προβλήτα", - "en": "pier", - "es": "embarcadero", - "et": "randumissild", - "fi": "laituri", - "fr": "estacade", - "he": "מזח", - "is": "bryggja", - "it": "pontile", - "ja": "桟橋", - "ko": "돌제부두", - "lt": "pirsas", - "nb": "pir", - "pl": "molo", - "pt": "ponte-cais ou pontão", - "pt-br": "píer", - "ro": "estacadă", - "ru": "пирс", - "sk": "mólo", - "sl": "pomol", - "sr": "гат (лучки)", - "sv": "pir", - "th": "ท่าน้ำ", - "tr": "i̇skele", - "uk": "пірс", - "zh": "栈桥", - "zh-hk": "碼頭" - }, - "pipeline": { - "ar": "جعبة", - "bg": "тръбопровод", - "ca": "canonada", - "cs": "potrubí", - "da": "rør", - "de": "rohrleitung", - "el": "αγωγός", - "en": "piping", - "es": "tubería", - "et": "torustik", - "fi": "putkisto", - "fr": "canalisation", - "he": "צנרת", - "hr": "cjevovod", - "hu": "vízvezeték", - "id": "pipa air", - "it": "sistemi di tubazioni", - "ja": "配管", - "ko": "배관", - "lt": "vamzdynas", - "lv": "cauruļvadu sistēma", - "nb": "rørledning", - "nl": "leidingwerk", - "pl": "rurociąg", - "ro": "conductă", - "ru": "трубопровод", - "sk": "potrubie", - "sl": "cevje", - "sr": "водовод", - "sv": "rörledning", - "tr": "boru tesisatı", - "uk": "трубопровід", - "zh": "管路" - }, - "planter": { - "de": "pflanzgefäß", - "en": "plant container", - "fr": "bac à plantes", - "it": "fioriera", - "lv": "augu konteiners", - "nl": "plantenbak" - }, - "quay": { - "ar": "رصيف بحري", - "bg": "кей", - "ca": "moll", - "cs": "přístaviště", - "da": "kaj", - "de": "kai", - "el": "αποβάθρα", - "en": "wharf", - "es": "muelle", - "et": "kai", - "fi": "satamalaituri", - "fr": "quai", - "he": "רציף ימי", - "hu": "rakpart", - "id": "dermaga", - "is": "bryggja", - "it": "banchina", - "ja": "埠頭", - "ko": "부두", - "lt": "molas", - "nb": "kai", - "nl": "kade", - "pl": "nabrzeże", - "pt": "ancoradouro", - "ro": "cheu", - "ru": "пристань", - "sl": "pomol", - "sv": "kaj", - "tr": "iskele", - "uk": "пірс", - "vi": "khu bến cảng", - "zh": "碼頭" - }, - "satellite_dish": { - "ar": "طبق القمر الصناعي", - "ca": "antena parabòlica", - "de": "parabolantenne", - "el": "δορυφορικό πιάτο", - "en": "satellite dish", - "es": "antena parabólica", - "et": "satelliiditaldrik", - "he": "צלחת לוויין", - "ja": "衛星放送受信用アンテナ", - "nb": "parabolantenne", - "nl": "schotelantenne", - "pl": "antena satelitarna", - "ru": "спутниковая антенна", - "sl": "satelitski krožnik", - "th": "จานดาวเทียม", - "uk": "супутникова антена", - "zh": "衛星碟", - "zh-cn": "卫星锅" - }, - "silo": { - "ar": "صومعة غلال", - "bg": "силоз", - "ca": "sitja", - "el": "σιλό", - "en": "silo", - "fi": "varastosiilo", - "he": "ממגורה", - "hr": "silos", - "hu": "siló", - "ja": "サイロ", - "ko": "사일로", - "lt": "silosinė", - "pl": "silos", - "ro": "siloz", - "ru": "силос (ёмкость)", - "sr": "silos (poljoprivreda)", - "uk": "силос (ємність)", - "zh": "筒仓" - }, - "snow_fence": { - "de": "schneezaun", - "en": "snow fence", - "et": "lumeredel", - "fi": "lumiaita", - "fr": "barrière à neige", - "ja": "防雪柵", - "ko": "방설책", - "nb": "snøgjerde", - "nl": "sneeuwhek", - "ro": "parazăpadă", - "sl": "snežna ograja", - "zh": "防雪栅" - }, - "spoil_heap": { - "ar": "كومة ركامية", - "bg": "терикон", - "ca": "amàs d'escòries", - "cs": "výsypka", - "de": "abraumhalde", - "en": "spoil tip", - "es": "escombrera", - "et": "aherainemägi", - "fr": "terril", - "hu": "meddőhányó", - "ja": "ボタ山", - "nl": "steenberg", - "pl": "hałda", - "ro": "haldă", - "ru": "террикон", - "uk": "терикон", - "zh": "煤渣山" - }, - "storage_tank": { - "ar": "خزان", - "bg": "резервоар", - "ca": "tanc d'emmagatzematge", - "cs": "cisterna", - "de": "tank", - "el": "δεξαμενή", - "en": "reservoir", - "es": "tanque de almacenamiento", - "fi": "neste- tai kaasusäiliö", - "fr": "réservoir", - "hu": "gyűjtőtartály", - "it": "serbatoio", - "ja": "貯蔵タンク", - "pl": "rezerwuar", - "pt": "tanque", - "ru": "резервуар", - "sl": "rezervoar", - "sr": "резервоар", - "sv": "tank", - "tr": "depolama tankı", - "uk": "резервуар", - "zh": "储油罐" - }, - "street_cabinet": { - "de": "straßenschrank", - "en": "street cabinet", - "fr": "armoire de rue", - "ja": "屋外収納キャビネット" - }, - "surveillance": { - "ar": "مراقبة", - "ca": "vigilància", - "cs": "sledování", - "da": "overvågning", - "de": "überwachung", - "en": "surveillance", - "es": "vigilancia", - "et": "varjatud jälgimine", - "fi": "valvonta", - "he": "מעקב", - "hu": "megfigyelés", - "id": "pengawasan", - "it": "sorveglianza", - "ja": "サーベイランス", - "ko": "감시", - "lv": "novērošana", - "nb": "overvåkning", - "pl": "inwigilacja", - "pt": "vigilância", - "ro": "supraveghere", - "ru": "негласное наблюдение", - "sl": "nadzor", - "sr": "надзор", - "sv": "övervakning", - "tr": "gözetim", - "uk": "спостереження (негласне)", - "vi": "giám sát", - "zh": "監視" - }, - "survey_point": { - "bg": "репер", - "ca": "fita geodèsica", - "cs": "nivelační bod", - "da": "postament", - "de": "höhenfestpunkt", - "el": "σημείο αναφοράς ύψους", - "en": "benchmark", - "es": "vértice geodésico", - "et": "reeper", - "fi": "kiintopiste", - "fr": "repère de nivellement", - "hr": "nivelmanski reper", - "hu": "földmérési alappont", - "id": "tanda patok", - "it": "vertice geodetico", - "ja": "水準点", - "nb": "fastmerke", - "nl": "geodetisch meetpunt", - "pl": "reper", - "pt": "vértice geodésico", - "ro": "reper de nivelment", - "ru": "репер", - "sl": "triangulacijska točka", - "sr": "репер (геодезија)", - "sv": "höjdpunkt", - "uk": "репер", - "zh": "水准点", - "zh-hk": "水準點" - }, - "tailings_pond": { - "ar": "مجمع النفايات", - "bg": "хвостохранилище", - "ca": "presa de deixies", - "cs": "kalová laguna", - "de": "tailings-damm", - "en": "tailings dam", - "fr": "digue à résidus", - "ja": "尾鉱ダム", - "pt": "barragem de rejeitos", - "ru": "хвостохранилище", - "tr": "atık depolama tesisi", - "uk": "хвостосховище", - "zh": "尾礦壩" - }, - "telescope": { - "ar": "مقراب", - "bg": "телескоп", - "ca": "telescopi", - "cs": "dalekohled", - "da": "kikkert", - "de": "teleskop", - "el": "τηλεσκόπιο", - "en": "telescope", - "es": "telescopio", - "et": "teleskoop", - "fi": "kaukoputki", - "fr": "télescope", - "he": "טלסקופ", - "hi": "दूरदर्शी", - "hr": "teleskop", - "hu": "távcső", - "id": "teleskop", - "is": "sjónauki", - "it": "telescopio", - "ja": "望遠鏡", - "ko": "망원경", - "lt": "teleskopas", - "lv": "teleskops", - "nb": "teleskop", - "nl": "telescoop", - "pl": "teleskop", - "pt": "telescópio", - "ro": "telescop", - "ru": "телескоп", - "sk": "teleskop", - "sl": "daljnogled", - "sr": "телескоп", - "sv": "teleskop", - "th": "กล้องโทรทรรศน์", - "tr": "teleskop", - "uk": "телескоп", - "vi": "kính viễn vọng", - "zh": "望远镜" - }, - "threshing_floor": { - "ar": "بيدر", - "ca": "era", - "cs": "mlat", - "de": "tenne", - "el": "αλώνι", - "en": "threshing floor", - "es": "era", - "et": "rehealune", - "fr": "aire de battage", - "he": "גורן", - "hr": "gumno", - "it": "aia (agricoltura)", - "lt": "klojimas", - "nb": "kornlåve", - "pl": "gumno", - "pt": "eira", - "ru": "гумно", - "sr": "гумно", - "sv": "trösklada", - "uk": "гумно", - "zh": "禾场" - }, - "torii": { - "ar": "توري", - "bg": "тории", - "el": "τορίι", - "en": "torii", - "he": "טוריאי", - "ja": "鳥居", - "ko": "도리이", - "ru": "тории", - "sl": "tori", - "th": "โทะริอิ", - "uk": "торії", - "vi": "điểu cư", - "zh": "鳥居", - "zh-cn": "鸟居" - }, - "tower": { - "ar": "برج", - "bg": "телевизионна кула", - "ca": "torre de tv", - "cs": "televizní věž", - "da": "tv-tårn", - "de": "fernsehturm", - "el": "πύργος τηλεόρασης", - "en": "television tower", - "en-ca": "tower", - "en-gb": "tower", - "es": "torre de telecomunicaciones", - "et": "teletorn", - "fi": "torni", - "fr": "tour de télévision", - "he": "מגדל טלוויזיה", - "hi": "बुर्ज", - "hr": "toranj", - "hu": "tévétorony", - "id": "menara", - "is": "turn", - "it": "torre televisiva", - "ja": "テレビ塔", - "ko": "탑", - "lt": "televizijos bokštas", - "lv": "televīzijas tornis", - "nb": "tv-tårn", - "nl": "communicatietoren", - "pl": "wieża telewizyjna", - "pt": "torre de telecomunicações", - "pt-br": "torre", - "ro": "turn", - "ru": "телебашня", - "sk": "televízna veža", - "sl": "stolp", - "sr": "телевизијски торањ", - "sv": "tv-mast", - "th": "หอคอย", - "tr": "televizyon kulesi", - "uk": "телевежа", - "vi": "tháp", - "zh": "电视塔", - "zh-cn": "塔式建筑", - "zh-hk": "塔式建築", - "zh-tw": "塔式建築" - }, - "urine_deflector": { - "ar": "عاكس البول", - "de": "urinabweiser", - "en": "urine deflector", - "es": "deflector de orina", - "it": "deflettore di urina" - }, - "ventilation_shaft": { - "de": "wetterschacht", - "en": "ventilation shaft", - "fr": "puit d'aération", - "he": "פיר אוורור", - "it": "pozzo di ventilazione", - "ja": "換気塔", - "nl": "ventilatieschacht", - "ru": "вентиляционная шахта", - "uk": "вентиляційна шахта", - "zh": "隧道通風" - }, - "village_sign": { - "en": "village sign", - "he": "שלט יישוב" - }, - "wastewater_plant": { - "ca": "planta de tractament d'aigües residuals", - "cs": "čistírna odpadních vod", - "da": "rensningsanlæg", - "de": "kläranlage", - "en": "wastewater treatment plant", - "es": "planta de tratamiento de aguas residuales", - "fi": "jätevedenpuhdistamo", - "fr": "station de traitement des eaux usées", - "he": "מכון לטיהור שפכים", - "hi": "अपशिष्ट जलोपचार", - "id": "instalasi pengolahan air limbah", - "it": "impianto di depurazione", - "ja": "下水処理場", - "ko": "하폐수 처리", - "nb": "kloakkanlegg", - "nl": "rioolzuiveringsinstallatie", - "pl": "oczyszczalnia ścieków", - "pt": "estação de tratamento de águas residuais", - "ro": "stație de epurare", - "sk": "čistiareň odpadových vôd", - "sv": "reningsverk", - "vi": "nhà máy xử lý nước thải" - }, - "water_tap": { - "en": "standpipe", - "fr": "borne-fontaine", - "it": "fontanella", - "nl": "watertap", - "ru": "водоразборная колонка", - "uk": "водорозбірна колонка" - }, - "water_tower": { - "ar": "برج مياه", - "bg": "водонапорна кула", - "ca": "torre d'aigua", - "cs": "vodárenská věž", - "da": "vandtårn", - "de": "wasserturm", - "en": "water tower", - "es": "torre de agua", - "et": "veetorn", - "fi": "vesitorni", - "fr": "château d'eau", - "he": "מגדל מים", - "hr": "vodotoranj", - "hu": "víztorony", - "id": "menara air", - "it": "serbatoio idrico a torre", - "ja": "給水塔", - "ko": "급수탑", - "lt": "vandens bokštas", - "lv": "ūdenstornis", - "nb": "vanntårn", - "nl": "watertoren", - "pl": "wieża ciśnień", - "pt": "castelo d'água", - "pt-br": "caixa-d'água", - "ro": "castel de apă", - "ru": "водонапорная башня", - "sk": "vodná veža", - "sl": "vodni stolp", - "sr": "водоторањ", - "sv": "vattentorn", - "tr": "su kulesi", - "uk": "водонапірна вежа", - "vi": "tháp nước", - "zh": "水塔" - }, - "water_well": { - "ar": "بئر", - "bg": "кладенец", - "ca": "pou", - "cs": "studna", - "da": "brønd", - "de": "brunnen", - "el": "πηγάδι", - "en": "water well", - "es": "pozo", - "et": "kaev", - "fi": "kaivo", - "fr": "puits à eau", - "he": "באר מים", - "hi": "कूप", - "hr": "bunar", - "hu": "kút", - "id": "sumur", - "it": "pozzo", - "ja": "井戸", - "ko": "우물", - "lt": "šulinys", - "lv": "aka", - "nb": "brønn", - "nl": "waterput", - "pl": "studnia", - "pt": "poço", - "ro": "puț de apă", - "ru": "колодец", - "sk": "studňa", - "sl": "vodnjak", - "sr": "бунар", - "sv": "brunn", - "uk": "криниця", - "vi": "giếng khoan", - "zh": "井" - }, - "water_works": { - "cs": "vodárna", - "da": "vandværk", - "de": "wasserwerk", - "en": "waterworks", - "es": "planta de tratamiento de agua", - "fr": "réseau d'eau", - "ja": "浄水場", - "nb": "vannverk", - "nl": "waterwerk", - "sv": "vattenverk", - "tr": "su işleri", - "zh": "水厂" - }, - "watermill": { - "ar": "طاحونة مائية", - "bg": "воденица", - "ca": "molí hidràulic", - "cs": "vodní mlýn", - "da": "vandmølle", - "de": "wassermühle", - "el": "νερόμυλος", - "en": "watermill", - "es": "molino hidráulico", - "et": "vesiveski", - "fi": "vesimylly", - "fr": "moulin à eau", - "he": "טחנת מים", - "hi": "पनचक्की", - "hr": "vodenice", - "hu": "vízimalom", - "id": "kilang tenaga air", - "is": "vatnsmylla", - "it": "mulino ad acqua", - "ja": "水車小屋", - "ko": "물레방아", - "lt": "vandens malūnas", - "lv": "ūdensdzirnavas", - "nb": "vannmølle", - "nl": "watermolen", - "pl": "młyn wodny", - "pt": "moinho de água", - "ro": "moară de apă", - "ru": "водяная мельница", - "sk": "vodný kolesový mlyn", - "sl": "vodni mlin", - "sr": "воденица", - "sv": "vattenkvarn", - "tr": "su değirmeni", - "uk": "водяний млин", - "zh": "水力磨坊" - }, - "wildlife_crossing": { - "ar": "معبر الحياة البرية", - "cs": "ekodukt", - "da": "faunapassage", - "de": "grünbrücke", - "en": "wildlife overpass", - "es": "ecoducto", - "et": "ökodukt", - "fi": "vihersilta", - "fr": "écoduc", - "he": "מעבר אקולוגי", - "it": "passaggio faunistico", - "ja": "動物横断路", - "ko": "야생동물 이동 통로", - "nb": "økodukt", - "nl": "ecoduct", - "pl": "zielony most", - "pt": "viaduto vegetado", - "ro": "ecoduct", - "ru": "экодук", - "sr": "прелаз за дивље животиње", - "sv": "ekodukt", - "th": "ทางข้ามสัตว์ป่า", - "tr": "vahşi yaşam geçidi", - "uk": "екодук", - "zh": "野生动物通道" - }, - "windmill": { - "ar": "طاحونة هوائية", - "bg": "вятърна мелница", - "ca": "molí de vent", - "cs": "větrný mlýn", - "da": "vindmølle", - "de": "windmühle", - "el": "ανεμόμυλος", - "en": "windmill", - "es": "molino de viento", - "et": "tuuleveski", - "fi": "tuulimylly", - "fr": "moulin à vent", - "he": "טחנת רוח", - "hi": "पवनचक्की", - "hr": "vjetrenjača", - "hu": "szélmalom", - "id": "kincir angin", - "is": "vindmylla", - "it": "mulino a vento", - "ja": "風車", - "ko": "풍차", - "lt": "vėjo malūnas", - "lv": "vējdzirnavas", - "nb": "vindmølle", - "nl": "windmolen", - "pl": "wiatrak", - "pt": "moinho de vento", - "ro": "moară de vânt", - "ru": "ветряная мельница", - "sk": "veterný mlyn", - "sl": "mlin na veter", - "sr": "вјетрењача", - "sv": "väderkvarn", - "th": "กังหันลมวินด์มิลล์", - "tr": "yel değirmeni", - "uk": "вітряк", - "vi": "cối xay gió", - "zh": "风车" - }, - "windpump": { - "ar": "مضخة عاملة بطاقة الرياح", - "ca": "molí aiguader", - "da": "pumpemølle", - "de": "windpumpe", - "en": "windpump", - "es": "bombas de agua eólicas", - "fr": "pompe à vent", - "it": "pompa eolica", - "ja": "風力ポンプ", - "nl": "windpomp", - "ru": "ветряной насос", - "uk": "вітряний насос", - "zh": "風泵" - }, - "works": { - "ar": "مصنع", - "bg": "завод", - "ca": "fàbrica", - "cs": "továrna", - "da": "fabrik", - "de": "fabrik", - "el": "εργοστάσιο", - "en": "factory", - "es": "fábrica", - "et": "vabrik", - "fi": "tehdas", - "fr": "usine", - "he": "בית חרושת", - "hi": "कारखाना", - "hr": "tvornica", - "hu": "gyár", - "id": "pabrik", - "is": "verksmiðja", - "it": "fabbrica", - "ja": "工場", - "ko": "공장", - "lt": "gamykla", - "lv": "rūpnīca", - "nb": "fabrikk", - "nl": "fabriek", - "pl": "fabryka", - "pt": "fábrica", - "ro": "fabrică", - "ru": "фабрика", - "sk": "továreň", - "sl": "tovarna", - "sr": "фабрика", - "sv": "fabrik", - "th": "โรงงาน", - "tr": "fabrika", - "uk": "фабрика", - "vi": "nhà máy", - "zh": "工廠" - } - }, - "map_source": { - "OpenStreetMap": { - "ar": "خريطة الشارع المفتوحة", - "bg": "оупънстрийтмап", - "en": "openstreetmap", - "hi": "ओपनस्ट्रीटम्याप", - "ja": "オープンストリートマップ", - "ko": "오픈스트리트맵", - "sr": "опен стрит мап", - "th": "โอเพินสตรีตแมป", - "zh": "開放街圖", - "zh-cn": "开放街道地图" - } - }, - "map_type": { - "topo": { - "ar": "خريطة طبوغرافية", - "bg": "топографска карта", - "ca": "mapa topogràfic", - "cs": "topografická mapa", - "de": "topografische karte", - "el": "τοπογραφικός χάρτης", - "en": "topographic map", - "es": "mapa topográfico", - "et": "topograafiline kaart", - "fi": "topografinen kartta", - "fr": "carte topographique", - "he": "מפה טופוגרפית", - "hi": "स्थलाकृतिक मानचित्र", - "hr": "topografski zemljovid", - "hu": "topográfiai térkép", - "id": "peta topografi", - "it": "carta topografica", - "ja": "地形図", - "ko": "지형도", - "lv": "topogrāfiskā karte", - "nb": "topografisk kart", - "nl": "topografische kaart", - "pl": "mapa topograficzna", - "pt": "carta topográfica", - "ro": "hartă topografică", - "ru": "топографическая карта", - "sr": "топографска карта", - "sv": "topografisk karta", - "th": "แผนที่ภูมิลักษณ์", - "tr": "topoğrafik harita", - "uk": "топографічна мапа", - "vi": "bản đồ địa hình", - "zh": "地形图", - "zh-hk": "地形圖", - "zh-tw": "地形圖" - }, - "toposcope": { - "ca": "taula d'orientació", - "de": "panoramatafel", - "en": "toposcope", - "fr": "table d'orientation", - "it": "toposcopio", - "nb": "retningsskive", - "nl": "oriëntatietafel", - "pt": "toposcópio" - } - }, - "maritime": { - "yes": { - "ar": "حدود بحرية", - "ca": "frontera marítima", - "cs": "námořní hranice", - "da": "havgrænse", - "de": "seegrenze", - "el": "θαλάσσιο σύνορο", - "en": "maritime boundary", - "es": "frontera marítima", - "et": "merepiir", - "fi": "meriraja", - "fr": "frontière maritime", - "he": "גבול ימי", - "hr": "državno područje", - "hu": "tengeri határ", - "it": "confine marittimo", - "ja": "海上境界線", - "ko": "해상경계선", - "lv": "jūras robeža", - "nb": "maritim grense", - "nl": "zeegrens", - "pl": "morska granica państwowa", - "pt": "fronteira marítima", - "ro": "frontieră maritimă", - "ru": "морская граница", - "sl": "morska meja", - "sr": "поморска граница", - "sv": "sjögräns", - "tr": "deniz sınırı", - "uk": "територія держави", - "zh": "海上邊界" - } - }, - "marker": { - "plate": { - "de": "hinweisschild zu straßeneinbauten", - "de-ch": "hinweisschilder zu strasseneinbauten", - "en": "utility location", - "it": "localizzazione delle utenze", - "ja": "ユーティリティの場所" - } - }, - "massage": { - "acupressure": { - "ar": "العلاج بالضغط الإبري", - "bg": "акупресура", - "ca": "digitopressió", - "cs": "akupresura", - "de": "akupressur", - "en": "acupressure", - "es": "acupresión", - "et": "akupressuur", - "fr": "do in", - "hi": "एक्युप्रेशर", - "hu": "akupresszúra", - "id": "akupresur", - "it": "digitopressione", - "ko": "지압", - "lt": "akupresūra", - "nb": "akupressur", - "nl": "acupressuur", - "pl": "akupresura", - "pt": "do-in", - "ro": "acupresură", - "ru": "акупрессура", - "sk": "akupresúra", - "sl": "akupresura", - "sr": "акупресура", - "sv": "akupressur", - "tr": "akupresür", - "uk": "акупресура", - "zh": "穴位按壓" - }, - "chinese": { - "ar": "تيو نا", - "de": "tuina", - "en": "tui na", - "fr": "an mo / tui na", - "he": "טוינה", - "it": "tuina", - "ja": "推拿", - "pt": "tuiná", - "sr": "туина", - "tr": "tuina", - "zh": "推拿" - }, - "chiropractic": { - "ar": "معالجة يدوية", - "ca": "quiropràctica", - "cs": "chiropraxe", - "da": "kiropraktik", - "de": "chiropraktik", - "el": "χειροπρακτική", - "en": "chiropractic", - "es": "quiropráctica", - "et": "kiropraktika", - "fi": "kiropraktiikka", - "fr": "chiropratique", - "he": "כירופרקטיקה", - "hi": "काइरोप्रेक्टिक", - "hu": "kiropraktika", - "id": "kiropraktik", - "is": "hnykkingar", - "it": "chiropratica", - "ja": "カイロプラクティック", - "ko": "카이로프랙틱", - "lt": "chiropraktika", - "nb": "kiropraktikk", - "nl": "chiropraxie", - "pl": "chiropraktyka", - "pt": "quiropraxia", - "ru": "вертебронеурология", - "sl": "kiropraktika", - "sv": "kiropraktik", - "th": "ไคโรแพรกติก", - "tr": "kiropraktör", - "uk": "хіропрактика", - "vi": "trị liệu thần kinh - cột sống", - "zh": "脊骨神經醫學" - }, - "shiatsu": { - "ar": "شياتسو", - "ca": "xiatsu", - "cs": "šiacu", - "el": "σιάτσου", - "en": "shiatsu", - "he": "שיאצו", - "hu": "siacu", - "ja": "指圧", - "lt": "šiacu", - "ru": "шиацу", - "sr": "шиацу", - "tr": "şiatsu", - "uk": "шиацу", - "zh": "指壓" - }, - "thai": { - "ar": "تدليك تايلندي", - "bg": "тайландски масаж", - "cs": "thajská masáž", - "de": "thai-massage", - "el": "ταϊλανδέζικο μασάζ", - "en": "thai massage", - "es": "masaje thai", - "fi": "thaihieronta", - "fr": "massage thaï", - "he": "עיסוי תאילנדי", - "hu": "thai masszázs", - "id": "pijat thai", - "it": "massaggio thai", - "ja": "タイ古式マッサージ", - "ko": "태국 마사지", - "nl": "thaise massage", - "pl": "masaż tajski", - "pt": "massagem tailandesa", - "pt-br": "thai massagem", - "ru": "тайский массаж", - "sv": "thailändsk massage", - "th": "การนวดแผนไทย", - "uk": "тайський масаж", - "zh": "泰式按摩" - } - }, - "material": { - "acrylic_glass": { - "ar": "بولي ميثيل ميثاكريلات", - "bg": "полиметилметакрилат", - "ca": "polimetilmetacrilat", - "cs": "polymethylmethakrylát", - "da": "akryl", - "de": "polymethylmethacrylat", - "el": "πολυμεθακρυλικό μεθύλιο", - "en": "poly(methyl methacrylate)", - "es": "polimetilmetacrilato", - "et": "polümetüülmetakrülaat", - "fi": "akryyli", - "fr": "polyméthacrylate de méthyle", - "he": "זכוכית אקרילית", - "hi": "पॉलीमेथिल मेथाक्रिलेट", - "hu": "poli(metil-metakrilát)", - "id": "kaca akrilik", - "it": "polimetilmetacrilato", - "ja": "ポリメタクリル酸メチル", - "ko": "폴리메틸 메타크릴레이트", - "lv": "polimetilmetakrilāts", - "nb": "polymetylmetakrylat", - "nl": "polymethylmethacrylaat", - "pl": "poli(metakrylan metylu)", - "pt": "acrílico", - "ru": "органическое стекло", - "sk": "polymetylmetakrylát", - "sl": "polimetilmetaakrilat", - "sr": "плексиглас", - "sv": "polymetylmetakrylat", - "tr": "pleksi", - "uk": "органічне скло", - "vi": "poli(metyl metacrylat)", - "zh": "聚甲基丙烯酸甲酯" - }, - "concrete": { - "ar": "خرسانة", - "bg": "бетон", - "ca": "formigó", - "cs": "beton", - "da": "beton", - "de": "beton", - "el": "σκυρόδεμα", - "en": "concrete", - "es": "hormigón", - "et": "betoon", - "fi": "betoni", - "fr": "béton", - "he": "בטון", - "hi": "कंक्रीट", - "hr": "beton", - "hu": "beton", - "id": "beton", - "is": "steinsteypa", - "it": "calcestruzzo", - "ja": "コンクリート", - "ko": "콘크리트", - "lt": "betonas", - "lv": "betons", - "nb": "betong", - "nl": "beton", - "pl": "beton", - "pt": "betão", - "pt-br": "concreto", - "ro": "beton", - "ru": "бетон", - "sk": "betón", - "sl": "beton", - "sr": "бетон", - "sv": "betong", - "th": "คอนกรีต", - "tr": "beton", - "uk": "бетон", - "vi": "bê tông", - "zh": "混凝土" - }, - "epoxy": { - "ar": "راتنج", - "bg": "епоксидна смола", - "ca": "resina epoxi", - "cs": "epoxidová pryskyřice", - "da": "epoxy", - "de": "epoxidharz", - "el": "εποξική ρητίνη", - "en": "epoxy resins", - "en-ca": "epoxy", - "en-gb": "epoxy", - "es": "resina epoxi", - "et": "epoksüvaigud", - "fi": "epoksi", - "fr": "époxy", - "he": "אפוקסי", - "hr": "epoksidne smole", - "hu": "epoxigyanta", - "id": "epoksi", - "it": "resina epossidica", - "ja": "エポキシ樹脂", - "ko": "에폭시", - "lv": "epoksīdu polimēri", - "nb": "epoksy", - "nl": "epoxy", - "pl": "żywice epoksydowe", - "pt": "epóxi", - "ro": "poliepoxide", - "ru": "эпоксидная смола", - "sk": "epoxidová živica", - "sv": "epoxi", - "th": "อีพอกซี", - "tr": "epoksi", - "uk": "епоксидна смола", - "zh": "环氧树脂" - }, - "titanium": { - "ar": "تيتانيوم", - "bg": "титан", - "ca": "titani", - "cs": "titan", - "da": "titan", - "de": "titan", - "el": "τιτάνιο", - "en": "titanium", - "es": "titanio", - "et": "titaan", - "fi": "titaani", - "fr": "titane", - "he": "טיטניום", - "hi": "टाइटेनियम", - "hr": "titanij", - "hu": "titán", - "is": "títan", - "it": "titanio", - "ja": "チタン", - "ko": "타이타늄", - "lt": "titanas", - "lv": "titāns", - "nb": "titan", - "pl": "tytan", - "pt": "titânio", - "ro": "titan", - "ru": "титан", - "sk": "titán", - "sl": "titan", - "sr": "титанијум", - "sv": "titan", - "th": "ไทเทเนียม", - "tr": "titanyum", - "uk": "титан", - "vi": "titan", - "zh": "鈦", - "zh-cn": "钛" - }, - "wood": { - "en": "baltimore salt box" - } - }, - "megalith_type": { - "alignment": { - "ca": "alineament de pedres", - "cs": "kamenná řada", - "da": "stenrække", - "de": "steinreihe", - "el": "ογκόλιθοι τοποθετημένοι εν σειρά", - "en": "stone row", - "es": "alineamiento de piedras", - "fr": "alignement mégalithique", - "hu": "kősor", - "it": "allineamento megalitico", - "ja": "列石", - "ko": "열석", - "nl": "steenrij", - "pt": "alinhamento megalítico" - }, - "chamber": { - "en": "chamber tumulus" - }, - "cist": { - "ca": "cista", - "da": "stenkiste", - "de": "steinkiste", - "en": "cist", - "es": "cista", - "et": "kivikirstkalme", - "fr": "ciste", - "it": "cista", - "ja": "石棺", - "nb": "hellekiste", - "nl": "steenkist", - "pt": "cista", - "ru": "каменный ящик", - "sv": "hällkista", - "uk": "кам'яний ящик", - "zh": "箱型" - }, - "dolmen": { - "ar": "دُلمَن", - "bg": "долмен", - "da": "dysse", - "el": "ντολμέν", - "en": "dolmen", - "he": "דולמן", - "ja": "支石墓", - "ko": "고인돌", - "lt": "dolmenas", - "lv": "dolmens", - "nb": "dysse", - "nl": "hunebed", - "pt": "dólmen", - "ru": "дольмен", - "sr": "долмен", - "sv": "dös", - "th": "ดอลเมน", - "uk": "дольмен", - "vi": "mộ đá", - "zh": "支石墓" - }, - "long_barrow": { - "ar": "البارو الطويل", - "ca": "túmul allargat", - "da": "langdysse", - "de": "hünenbett", - "en": "long barrow", - "es": "túmulo alargado", - "et": "pikk-kääbas", - "fi": "pitkäkumpu", - "fr": "tumulus allongé", - "ja": "ロング・バロウ", - "nb": "langhaug", - "nl": "langgraf", - "pl": "długi kurhan", - "ru": "длинный курган", - "zh": "长坟" - }, - "menhir": { - "ar": "شاهد قائم", - "bg": "менхир", - "da": "bautasten", - "el": "μενίρ", - "en": "menhir", - "he": "מנהיר", - "ja": "メンヒル", - "ko": "선돌", - "lt": "menhyras", - "lv": "menhīrs", - "nb": "bautastein", - "pt": "menir", - "ru": "менгир", - "sr": "менхир", - "sv": "rest sten", - "uk": "менгір", - "zh": "立石" - }, - "nuraghe": { - "ar": "نوراك", - "bg": "нураг", - "ca": "nurag", - "cs": "nuraghi", - "da": "nuragh", - "el": "νουράγκι", - "en": "nuraghe", - "es": "nuraga", - "et": "nuraag", - "he": "נוראגה", - "hr": "nuraghi", - "ja": "ヌラーゲ", - "nb": "nurage", - "pl": "nurag", - "pt": "nurago", - "ro": "cultura nuraghi", - "ru": "нураги", - "sl": "nuragi", - "sr": "nurage", - "sv": "nurager", - "uk": "нураги", - "zh": "努拉吉" - }, - "passage_grave": { - "ar": "مقبرة ذات ممرات", - "ca": "tomba de corredor", - "da": "jættestue", - "de": "ganggrab", - "en": "passage grave", - "es": "tumba de corredor", - "fi": "käytävähauta", - "fr": "tombe à couloir", - "is": "jötundys", - "it": "tomba a corridoio", - "ja": "羨道墳", - "ko": "연도분", - "nb": "ganggrav", - "nl": "ganggraf", - "pt": "tumba de passagem", - "ru": "коридорная гробница", - "sv": "gånggrift", - "uk": "коридорна гробниця", - "zh": "石隧墓" - }, - "ring_cairn": { - "en": "ring cairn", - "es": "anillo de mojón" - }, - "round_barrow": { - "en": "round barrow", - "nb": "rundhaug", - "ru": "круглый курган", - "sl": "tumulus" - }, - "stone_circle": { - "ar": "دوائر الحجر", - "ca": "cromlec", - "cs": "kamenný kruh", - "de": "steinkreis", - "en": "stone circle", - "fi": "kivikehä", - "fr": "cercle de pierres", - "he": "מעגל אבנים", - "hi": "शिलावर्त", - "hr": "kameni krug", - "id": "lingkaran batu", - "it": "cerchio di pietre", - "ja": "ストーンサークル", - "ko": "환상열석", - "lv": "akmens aplis", - "nl": "steencirkel", - "pl": "kamienny krąg", - "pt": "círculo de pedras", - "ru": "каменные круги", - "sv": "stenkrets", - "uk": "кам'яне коло", - "zh": "石圈" - }, - "stone_ship": { - "bg": "каменен кораб", - "cs": "kamenná loď", - "da": "skibssætning", - "de": "schiffssetzung", - "en": "stone ship", - "es": "barco de piedra", - "et": "laevkalme", - "fi": "laivalatomus", - "fr": "bateau de pierre", - "is": "steinaskip", - "it": "nave di pietra", - "ja": "船形列石", - "ko": "선상열석", - "lv": "velna laivas", - "nb": "skipssetning", - "nl": "stenen schip", - "pt": "barco de pedra", - "ro": "navă de piatră", - "ru": "каменный корабль", - "sv": "skeppssättning", - "uk": "камяний корабель", - "zh": "石船" - }, - "tholos": { - "bg": "толос", - "ca": "tolos", - "cs": "tholos", - "de": "tholos", - "el": "θολωτός τάφος", - "en": "beehive tomb", - "es": "tholos", - "fi": "tholos", - "fr": "tholos", - "he": "כוורת", - "hu": "tholosz", - "is": "býkúpugröf", - "it": "thòlos", - "ja": "蜂窩状墳墓", - "nb": "tholos", - "nl": "tholos", - "pl": "tolos", - "pt": "tholos", - "ru": "толос", - "sk": "kupolový hrob", - "sl": "tolos", - "sv": "tholos", - "uk": "толос", - "zh": "巨冢" - }, - "well": { - "de": "brunnenheiligtum", - "en": "nuragic holy well", - "it": "pozzo sacro nuragico", - "ru": "священный источник" - } - }, - "memorial": { - "": { - "ca": "stolpersteine", - "da": "snublesten", - "en": "stolperstein", - "es": "adoquín conmemorativo", - "hu": "botlatókő", - "nb": "snublestein", - "tr": "tökezleyen taş" - }, - "bust": { - "ar": "تمثال نصفي", - "bg": "бюст (паметник)", - "cs": "busta", - "da": "buste", - "de": "büste", - "el": "προτομή", - "en": "bust", - "es": "busto", - "et": "büst", - "fi": "rintakuva", - "fr": "buste", - "he": "פרוטומה", - "hr": "poprsje", - "hu": "mellszobor", - "id": "patung dada", - "it": "busto", - "ja": "胸像", - "ko": "흉상", - "nb": "byste", - "nl": "buste", - "pl": "popiersie", - "pt": "busto", - "ru": "бюст", - "sk": "busta", - "sl": "doprsje", - "sr": "статуа", - "sv": "byst", - "tr": "büst", - "uk": "погруддя", - "vi": "tượng bán thân", - "zh": "半身像" - }, - "cross": { - "de": "gedenkkreuz", - "en": "memorial cross", - "es": "cruz conmemorativa", - "fr": "croix commémorative", - "hr": "spomen-križ", - "pl": "krzyż pamiątkowy", - "zh": "紀念十字架" - }, - "ghost_bike": { - "da": "spøgelsescykel", - "de": "geisterrad", - "en": "ghost bike", - "es": "bicianimitas", - "fi": "haamupyörä", - "hu": "szellembicikli", - "id": "sepeda hantu", - "it": "bici fantasma", - "ja": "ゴーストバイク", - "nl": "witte fiets", - "pl": "duch roweru", - "pt": "bicicleta fantasma", - "ro": "bicicleta albă", - "ru": "призрачный велосипед", - "sv": "spökcykel", - "zh": "幽靈單車", - "zh-cn": "幽灵自行车" - }, - "obelisk": { - "ar": "مسلة", - "bg": "обелиск", - "ca": "obelisc", - "el": "οβελίσκος", - "en": "obelisk", - "es": "obelisco", - "fi": "obeliski", - "fr": "obélisque", - "he": "אובליסק", - "hi": "ओबिलिस्क", - "hu": "obeliszk", - "is": "broddsúla", - "it": "obelisco", - "ja": "オベリスク", - "ko": "오벨리스크", - "lt": "obeliskas", - "lv": "obelisks", - "pt": "obelisco", - "ro": "obelisc", - "ru": "обелиск", - "sr": "обелиск", - "tr": "dikilitaş", - "uk": "обеліск", - "zh": "方尖碑" - }, - "plaque": { - "ar": "لافتة تاريخية", - "bg": "паметна плоча", - "ca": "placa commemorativa", - "cs": "pamětní deska", - "da": "mindetavle", - "de": "gedenktafel", - "el": "αναμνηστική πλάκα", - "en": "commemorative plaque", - "es": "placa conmemorativa", - "et": "mälestustahvel", - "fi": "muistolaatta", - "fr": "plaque commémorative", - "he": "לוחית זיכרון", - "hr": "spomen-ploča", - "hu": "emléktábla", - "id": "plakat peringatan", - "it": "targa commemorativa", - "ja": "銘板", - "lv": "piemiņas plāksne", - "nb": "minnetavle", - "nl": "gedenkplaat", - "pl": "tablica pamiątkowa", - "pt": "placa comemorativa", - "ro": "placă comemorativă", - "ru": "мемориальная доска", - "sk": "pamätná tabuľa", - "sl": "spominska plošča", - "sr": "спомен плоча", - "sv": "minnestavla", - "tr": "hatıra plaketi", - "uk": "меморіальна дошка", - "zh": "紀念牌匾" - }, - "statue": { - "ar": "تمثال", - "bg": "статуя", - "ca": "estàtua", - "cs": "socha", - "el": "άγαλμα", - "en": "statue", - "es": "estatua", - "et": "kuju", - "fi": "patsas", - "he": "פסל דמות", - "hi": "प्रतिमा", - "hr": "kip", - "hu": "figurális szobor", - "id": "patung", - "it": "statua", - "ja": "塑像", - "ko": "상", - "lt": "statula", - "lv": "statuja", - "nl": "standbeeld", - "pl": "posąg", - "pt": "estátua", - "ro": "statuie", - "ru": "статуя", - "sk": "socha", - "sl": "kip", - "sr": "скулптура", - "sv": "staty", - "th": "รูปปั้น", - "tr": "boy heykeli", - "uk": "статуя", - "vi": "tượng", - "zh": "塑像" - }, - "stele": { - "ar": "لوحة تذكارية", - "bg": "стела", - "ca": "estela", - "cs": "stéla", - "el": "στήλη", - "en": "stele", - "es": "estela", - "et": "steel", - "fi": "steela", - "fr": "stèle", - "he": "אסטלה", - "hr": "stela", - "hu": "sztélé", - "id": "prasasti", - "ja": "石碑", - "ko": "비석", - "lt": "stela", - "nl": "gedenksteen", - "pl": "stela", - "pt": "estela", - "ro": "stelă", - "ru": "стела", - "sk": "stéla", - "sl": "stela", - "sr": "стела", - "th": "ศิลาจารึก", - "tr": "stel", - "uk": "стела", - "vi": "bia", - "zh": "碑" - }, - "stolperstein": { - "ca": "stolpersteine", - "da": "snublesten", - "de-at": "stolpersteine", - "de-ch": "stolpersteine", - "el": "λίθοι μνήμης", - "en": "stolperstein", - "es": "adoquín conmemorativo", - "et": "stolpersteine", - "fi": "kompastuskivet", - "he": "אבן נגף", - "hr": "stolpersteine", - "hu": "botlatókő", - "is": "stolpersteine", - "ja": "つまずきの石", - "nb": "snublestein", - "pl": "stolpersteine", - "pt-br": "stolpersteine", - "ro": "stolpersteine", - "ru": "камни преткновения", - "sk": "stolpersteine", - "sl": "stolpersteine", - "sr": "stolpersteine", - "tr": "tökezleyen taş", - "uk": "камені спотикання", - "vi": "stolpersteine", - "zh": "绊脚石" - }, - "stone": { - "ca": "pedra commemorativa", - "cs": "pamětní kámen", - "da": "mindesten", - "de": "gedenkstein", - "en": "memorial stone", - "es": "roca conmemorativa", - "et": "mälestuskivi", - "fi": "muistokivi", - "fr": "pierre mémorielle", - "hu": "emlékkő", - "it": "cippo commemorativo", - "nl": "gedenksteen", - "pl": "kamień pamiątkowy", - "pt": "pedra comemorativa", - "sv": "minnessten", - "uk": "пам’ятний камінь" - }, - "war_memorial": { - "ar": "نصب الحرب", - "bg": "войнишки паметник", - "ca": "memorial de guerra", - "cs": "válečný památník", - "da": "krigsmindesmærke", - "de": "kriegerdenkmal", - "el": "μνημείο μνήμης για τον πόλεμο", - "en": "war memorial", - "es": "monumento de guerra", - "et": "sõjamemoriaal", - "fi": "sotamuistomerkki", - "fr": "monument aux morts", - "he": "אנדרטת מלחמה", - "hu": "háborús emlékmű", - "it": "memoriale di guerra", - "ja": "戦争記念施設", - "ko": "전쟁 기념비", - "nb": "krigsminnesmerke", - "nl": "oorlogsmonument", - "pl": "pomnik wojenny", - "pt": "monumento de guerra", - "ro": "monument de război", - "ru": "военный мемориал", - "sl": "vojni spomenik", - "sr": "ратни споменик", - "sv": "krigsminnesmärke", - "tr": "savaş anıtı", - "uk": "воєнний меморіал", - "vi": "đài tưởng niệm chiến tranh", - "zh": "戰爭紀念建築" - } - }, - "microbrewery": { - "yes": { - "ca": "cervesa artesana", - "cs": "minipivovar", - "da": "mikrobryggeri", - "de": "brauhaus", - "de-at": "gasthausbrauei", - "en": "brewpub", - "es": "microcervecería", - "fi": "panimoravintola", - "fr": "broue-pub", - "he": "מבשלת בוטיק", - "hu": "mikrosörfőzde", - "id": "kerajinan bir", - "it": "birra artigianale", - "ja": "ブラウハウス", - "ko": "수제 맥주", - "lv": "arodalus darītava", - "nb": "mikrobryggeri", - "nl": "brouwerijpub", - "pl": "browar restauracyjny", - "pt": "micro-cervejaria", - "ro": "bere artizanală", - "ru": "крафтовое пивоварение", - "sr": "занатско пиво", - "sv": "mikrobryggeri", - "th": "ไมโครบรูอะรี", - "tr": "küçük bira fabrikası", - "uk": "крафтове (ремісниче) броварство", - "zh": "小釀造廠" - } - }, - "military": { - "academy": { - "ar": "أكاديمية عسكرية", - "bg": "военна академия", - "ca": "acadèmia militar", - "cs": "vojenská akademie", - "da": "officersskole", - "de": "militärakademie", - "el": "στρατιωτική ακαδημία", - "en": "military academy", - "es": "academia militar", - "et": "sõjaväeakadeemia", - "fi": "sotilasakatemia", - "fr": "académie militaire", - "he": "אקדמיה צבאית", - "hr": "vojna akademija", - "hu": "katonai akadémia", - "it": "accademia militare", - "ja": "軍学校", - "ko": "사관학교", - "lv": "militārā akadēmija", - "nb": "krigsskole", - "nl": "militaire academie", - "pl": "akademia wojskowa", - "pt": "academia militar", - "ro": "academia militară", - "ru": "военная академия", - "sl": "vojaška akademija", - "sr": "војна академија", - "sv": "militärhögskola", - "tr": "harp akademisi", - "uk": "військова академія", - "zh": "軍事學院" - }, - "airfield": { - "ar": "قاعدة جوية", - "bg": "авиобаза", - "ca": "base aèria", - "cs": "letecká základna", - "da": "flyvestation", - "de": "militärflugplatz", - "el": "αεροπορική βάση", - "en": "air base", - "en-ca": "airbase", - "en-gb": "airbase", - "es": "base aérea", - "fi": "lentotukikohta", - "fr": "base aérienne militaire", - "he": "בסיס טיסה", - "hr": "vojna zrakoplovna baza", - "hu": "légibázis", - "id": "pangkalan tni angkatan udara", - "it": "aeroporto militare", - "ja": "軍用飛行場", - "ko": "군용비행장", - "nb": "flystasjon", - "nl": "vliegbasis", - "pl": "baza lotnicza", - "pt": "base aérea", - "ru": "авиабаза", - "sl": "letalska baza", - "sr": "војна авиобаза", - "sv": "militär flygplats", - "th": "สนามบินทหาร", - "tr": "hava üssü", - "uk": "авіабаза", - "vi": "sân bay quân sự", - "zh": "軍用機場" - }, - "barracks": { - "ar": "ثكنة", - "bg": "казарма", - "ca": "caserna", - "cs": "kasárny", - "da": "kaserne", - "de": "kaserne", - "el": "στρατώνας", - "en": "barracks", - "es": "cuartel", - "et": "kasarm", - "fi": "kasarmi", - "fr": "caserne", - "he": "קסרקטין", - "hr": "vojarna", - "hu": "laktanya", - "id": "tangsi", - "it": "caserma", - "ja": "バラック", - "ko": "생활관", - "lt": "kareivinės", - "lv": "kazarmas", - "nb": "kaserne", - "nl": "kazerne", - "pl": "koszary", - "pt": "quartel", - "ro": "cazarmă", - "ru": "казарма", - "sk": "kasárne", - "sl": "vojašnica", - "sr": "касарна", - "sv": "kasern", - "th": "ค่ายทหาร", - "tr": "kışla", - "uk": "казарма", - "vi": "doanh trại", - "zh": "軍營" - }, - "base": { - "ar": "قاعدة عسكرية", - "bg": "военна база", - "ca": "base militar", - "cs": "vojenská základna", - "da": "militærbase", - "de": "militärbasis", - "el": "στρατιωτική βάση", - "en": "military base", - "es": "base militar", - "et": "sõjaväelinnak", - "fi": "sotilastukikohta", - "fr": "base militaire", - "he": "בסיס צבאי", - "hi": "सैन्य अड्डा", - "hr": "vojna baza", - "hu": "katonai bázis", - "id": "pangkalan militer", - "is": "herstöð", - "it": "base militare", - "ja": "軍事基地", - "ko": "군사 기지", - "lv": "karabāze", - "nb": "militærbase", - "nl": "militaire basis", - "pl": "baza wojskowa", - "pt": "base militar", - "ro": "bază militară", - "ru": "военная база", - "sl": "vojaška baza", - "sr": "војна база", - "sv": "militär anläggning", - "tr": "askerî üs", - "uk": "військова база", - "vi": "căn cứ quân sự", - "zh": "军事基地", - "zh-hk": "軍事基地", - "zh-tw": "軍事基地" - }, - "bunker": { - "ar": "ملجأ", - "bg": "бункер", - "ca": "búnquer", - "cs": "bunkr", - "el": "οχυρό καταφύγιο", - "en": "bunker", - "es": "búnker", - "et": "punker", - "fi": "bunkkeri", - "he": "בונקר", - "ja": "掩体壕", - "ko": "벙커", - "lt": "bunkeris", - "pl": "schron", - "pt": "búnquer", - "ro": "buncăr", - "ru": "бункер", - "sr": "бункер", - "sv": "stridsvärn", - "tr": "sığınak", - "uk": "бункер", - "vi": "boong ke", - "zh": "地堡" - }, - "naval_base": { - "ar": "قاعدة بحرية", - "bg": "военноморска база", - "ca": "base naval", - "cs": "námořní základna", - "da": "flådestation", - "de": "marinestützpunkt", - "el": "ναύσταθμος", - "en": "naval base", - "es": "base naval", - "et": "mereväebaas", - "fi": "laivastotukikohta", - "fr": "base navale", - "he": "בסיס ימי", - "hi": "नौसैनिक अड्डा", - "hu": "haditengerészeti bázis", - "it": "base navale", - "ja": "海軍基地", - "ko": "해군기지", - "nb": "orlogsstasjon", - "nl": "marinehaven", - "pl": "port wojenny", - "pt": "base naval", - "ru": "военно-морская база", - "sr": "поморска база", - "sv": "örlogsbas", - "tr": "deniz üssü", - "uk": "військово-морська база", - "vi": "căn cứ hải quân", - "zh": "海军基地", - "zh-hk": "海軍基地", - "zh-tw": "海軍基地" - }, - "obstacle_course": { - "da": "forhindringsbane", - "de": "hindernisbahn", - "en": "military obstacle course", - "es": "recorrido de obstáculos", - "fr": "course à obstacles", - "he": "מסלול מכשולים", - "ja": "障害物競走", - "nl": "hindernisbaan", - "ru": "полоса препятствий", - "sv": "hinderbana", - "tr": "engel parkuru", - "uk": "смуга перешкод", - "zh": "障碍训练", - "zh-cn": "障碍训练场" - }, - "range": { - "bg": "военен полигон", - "ca": "camp de maniobres", - "cs": "vojenský výcvikový prostor", - "da": "militært øvelsesområde", - "de": "truppenübungsplatz", - "en": "military training area", - "en-gb": "training area", - "es": "campo de maniobras", - "et": "polügoon", - "fr": "terrain d'essai", - "he": "אזור אימונים צבאיים", - "hu": "katonai gyakorlótér", - "ja": "演習場", - "ko": "훈련장", - "lt": "poligonas", - "lv": "poligons", - "nb": "øvingsfelt", - "nl": "militair oefenterrein", - "pl": "poligon wojskowy", - "ru": "военный полигон", - "sv": "övningsfält", - "tr": "askerî eğitim alanı", - "uk": "військовий полігон", - "zh": "演習場" - }, - "school": { - "ar": "مدرسة عسكرية", - "ca": "escola militar", - "cs": "vojenská vzdělávací instituce", - "da": "militærskole", - "de": "militärschule", - "el": "στρατιωτική σχολή", - "en": "military school", - "es": "escuela militar", - "et": "sõjakool", - "fi": "sotilaskoulu", - "fr": "école militaire", - "he": "בית ספר צבאי", - "hr": "vojna škola", - "hu": "katonai iskola", - "it": "scuola militare", - "ja": "軍学校", - "ko": "군사학교", - "lv": "militārā skola", - "nb": "militærskole", - "nl": "militaire opleidingsfaciliteit", - "pl": "szkoła wojskowa", - "pt": "escola militar", - "ro": "școală militară", - "ru": "военно-учебное заведение", - "sl": "vojaška šola", - "sr": "војна школа", - "sv": "militärskola", - "tr": "askerî okul", - "uk": "військовий навчальний заклад", - "zh": "軍事學校", - "zh-tw": "軍校" - }, - "training_area": { - "bg": "военен полигон", - "ca": "camp de maniobres", - "cs": "vojenský výcvikový prostor", - "da": "militært øvelsesområde", - "de": "truppenübungsplatz", - "en": "military training area", - "en-gb": "training area", - "es": "campo de maniobras", - "et": "polügoon", - "fr": "terrain d'essai", - "he": "אזור אימונים צבאיים", - "hu": "katonai gyakorlótér", - "ja": "演習場", - "ko": "훈련장", - "lt": "poligonas", - "lv": "poligons", - "nb": "øvingsfelt", - "nl": "militair oefenterrein", - "pl": "poligon wojskowy", - "ru": "военный полигон", - "sv": "övningsfält", - "tr": "askerî eğitim alanı", - "uk": "військовий полігон", - "zh": "演習場" - }, - "trench": { - "ar": "موقع قتال دفاعي", - "bg": "окоп", - "ca": "trinxera", - "cs": "zákop", - "da": "skyttegrav", - "de": "schützengraben", - "en": "military trench", - "en-ca": "defensive fighting position", - "en-gb": "defensive fighting position", - "es": "trinchera", - "fi": "taisteluhauta", - "he": "עמדת ירי", - "it": "trincea", - "ja": "たこつぼ壕", - "ko": "참호", - "lt": "apkasas", - "lv": "ierakumi", - "nb": "skyttergrav", - "nl": "loopgraaf", - "pl": "okop", - "pt": "trincheira", - "ru": "окоп", - "sv": "skyttegrav", - "tr": "mevzi savunması", - "uk": "окоп", - "zh": "散兵坑" - } - }, - "monastery": { - "": { - "ca": "eremitori", - "cs": "poustevna", - "da": "eremitage", - "de": "einsiedelei", - "el": "ερημητήριο", - "en": "hermitage", - "es": "eremitorio", - "fi": "erakkomaja", - "fr": "ermitage", - "hr": "pustinja", - "hu": "remetelak", - "it": "eremo", - "ja": "ハーミテージ", - "nb": "eremitage", - "nl": "kluizenarij", - "pl": "erem", - "pt": "eremitério", - "ru": "жилище отшельника", - "sl": "eremitaža", - "sr": "испосница", - "sv": "eremitage", - "uk": "житло відлюдника", - "zh": "隱居處" - } - }, - "museum": { - "agriculture": { - "cs": "zemědělské muzeum", - "da": "landbrugsmuseum", - "de": "landwirtschaftsmuseum", - "el": "γεωργικό μουσείο", - "en": "agricultural museum", - "es": "museo agrícola", - "fi": "maanviljelymuseo", - "fr": "musée agricole", - "he": "מוזיאון חקלאי", - "it": "museo agricolo", - "ja": "農業博物館", - "nb": "landbruksmuseum", - "nl": "landbouwmuseum", - "pt": "museu de agricultura", - "sv": "lantbruksmuseum", - "zh-tw": "農業博物館" - }, - "archaeological": { - "ar": "متحف أثري", - "bg": "археологически музей", - "ca": "museu arqueològic", - "cs": "archeologické muzeum", - "da": "arkæologisk museum", - "de": "archäologisches museum", - "el": "αρχαιολογικό μουσείο", - "en": "archaeological museum", - "es": "museo arqueológico", - "fi": "arkeologinen museo", - "fr": "musée archéologique", - "he": "מוזיאון לארכאולוגיה", - "hr": "arheološki muzej", - "hu": "régészeti múzeum", - "it": "museo archeologico", - "ja": "考古学博物館", - "ko": "고고학 박물관", - "lt": "archeologijos muziejus", - "lv": "arheoloģijas muzejs", - "nb": "arkeologisk museum", - "nl": "archeologiemuseum", - "pl": "muzeum archeologiczne", - "pt": "museu de arqueologia", - "ro": "muzeu arheologic", - "ru": "археологический музей", - "sr": "археолошки музеј", - "sv": "arkeologimuseum", - "tr": "arkeoloji müzesi", - "uk": "археологічний музей", - "vi": "bảo tàng khảo cổ học", - "zh": "考古博物館", - "zh-cn": "考古博物馆" - }, - "aviation": { - "bg": "музей на авиацията", - "ca": "museu aeronàutic", - "cs": "letecké muzeum", - "da": "luftfartsmuseum", - "de": "luftfahrtmuseum", - "el": "μουσείο αεροπορίας", - "en": "aviation museum", - "es": "museo de aviación", - "et": "lennundusmuuseum", - "fi": "ilmailumuseo", - "fr": "musée aéronautique", - "he": "מוזיאון תעופה", - "hu": "repüléstörténeti múzeum", - "it": "museo dell'aviazione", - "ja": "航空博物館", - "nl": "luchtvaartmuseum", - "pl": "muzeum lotnictwa", - "pt": "museu da aviação", - "ru": "авиационный музей", - "sv": "flygmuseum", - "uk": "авіаційний музей", - "zh": "航空博物館", - "zh-cn": "航空博物馆" - }, - "children": { - "ar": "متحف للأطفال", - "ca": "museu infantil", - "cs": "muzeum pro děti a mládež", - "de": "kindermuseum", - "el": "παιδικό μουσείο", - "en": "children's museum", - "es": "museo de los niños", - "fi": "lastenmuseo", - "fr": "musée pour enfants", - "he": "מוזיאון ילדים", - "it": "museo dei bambini", - "ja": "チルドレンズ・ミュージアム", - "ko": "어린이 박물관", - "nl": "kindermuseum", - "pt": "museu para crianças", - "ru": "детский музей", - "sr": "дечији музеј", - "zh": "兒童博物館", - "zh-cn": "儿童博物馆" - }, - "history": { - "ar": "متحف تاريخ", - "bg": "исторически музей", - "ca": "museu d'història", - "cs": "muzeum historie", - "da": "historisk museum", - "de": "historisches museum", - "el": "ιστορικό μουσείο", - "en": "history museum", - "es": "museo de historia", - "et": "ajaloomuuseum", - "fi": "historiallinen museo", - "fr": "musée historique", - "he": "מוזיאון היסטורי", - "hr": "povijesni muzej", - "hu": "történeti múzeum", - "it": "museo storico", - "ja": "歴史博物館", - "ko": "역사 박물관", - "lt": "istorijos muziejus", - "lv": "vēstures muzejs", - "nb": "historisk museum", - "nl": "historisch museum", - "pl": "muzeum historyczne", - "pt": "museu histórico", - "ro": "muzeu istoric", - "ru": "исторический музей", - "sl": "zgodovinski muzej", - "sr": "историјски музеј", - "sv": "historiskt museum", - "tr": "tarih müzesi", - "uk": "історичний музей", - "vi": "viện bảo tàng lịch sử", - "zh": "歷史博物館", - "zh-cn": "历史博物馆" - }, - "language": { - "ca": "museu de llengua", - "en": "language museum", - "fr": "musée des langues", - "it": "museo del linguaggio", - "ja": "言語博物館", - "nl": "taalmuseum", - "pl": "muzeum językowe", - "pt": "museu de idiomas", - "ru": "языковой музей", - "zh": "语言博物馆" - }, - "local": { - "ar": "متحف محلي", - "ca": "museu d’història local", - "cs": "muzeum regionální historie", - "da": "hjemstavnsmuseum", - "de": "heimatmuseum", - "el": "τοπικό μουσείο", - "en": "local museum", - "es": "museo de historia local", - "et": "koduloomuuseum", - "fi": "kotiseutumuseo", - "fr": "musée d'histoire locale", - "he": "מוזיאון מקומי", - "it": "museo locale", - "ja": "郷土博物館", - "lv": "novadpētniecības muzejs", - "nl": "streekmuseum", - "pl": "muzeum regionalne", - "pt": "museu de história local", - "ru": "краеведческий музей", - "sr": "локални музеј", - "sv": "hembygdsmuseum", - "tr": "kent müzesi", - "uk": "краєзнавчий музей", - "zh": "地方文化館" - }, - "maritime": { - "ar": "متحف بحري", - "ca": "museu marítim", - "cs": "námořní muzeum", - "da": "søfartsmuseum", - "de": "schifffahrtsmuseum", - "de-ch": "marinemuseen", - "el": "ναυτικό μουσείο", - "en": "maritime museum", - "es": "museo marítimo", - "et": "meremuuseum", - "fi": "merenkulkumuseo", - "fr": "musée maritime", - "he": "מוזיאון ימי", - "hr": "pomorski muzej", - "hu": "tengerészeti múzeum", - "it": "museo marittimo", - "ja": "海事博物館", - "ko": "해양박물관", - "lv": "jūras muzejs", - "nb": "sjøfartsmuseum", - "nl": "scheepvaartmuseum", - "pl": "muzeum morskie", - "pt": "museu marítimo", - "ru": "морской музей", - "sr": "музеј поморства", - "sv": "sjöfartsmuseum", - "tr": "denizcilik müzesi", - "uk": "морський музей", - "zh": "海事博物館" - }, - "military": { - "ar": "متحف حربي", - "bg": "военен музей", - "ca": "museu militar", - "cs": "vojenské muzeum", - "da": "krigsmuseum", - "de": "militärmuseum", - "el": "στρατιωτικό μουσείο", - "en": "military museum", - "es": "museo militar", - "et": "sõjamuuseum", - "fi": "sotahistoriallinen museo", - "fr": "musée militaire", - "he": "מוזיאון צבאי", - "hi": "सैन्य संग्रहालय", - "hr": "vojni muzej", - "hu": "katonai múzeum", - "it": "museo militare", - "ja": "軍事博物館", - "lt": "karo muziejus", - "lv": "kara muzejs", - "nb": "krigsmuseum", - "nl": "militair museum", - "pl": "muzeum wojskowe", - "pt": "museu militar", - "ro": "muzeu militar", - "ru": "военный музей", - "sr": "војни музеј", - "sv": "krigsmuseum", - "tr": "askerî müzeler", - "uk": "військовий музей", - "vi": "bảo tàng quân sự", - "zh": "軍事博物館", - "zh-cn": "军事博物馆" - }, - "open_air": { - "ar": "متحف خارجي", - "bg": "музей на открито", - "ca": "museu a l'aire lliure", - "cs": "skanzen", - "da": "frilandsmuseum", - "de": "freilandmuseum", - "el": "υπαίθριο μουσείο", - "en": "open-air museum", - "es": "museo al aire libre", - "et": "vabaõhumuuseum", - "fi": "ulkomuseo", - "fr": "musée en plein air", - "he": "מוזיאון פתוח", - "hr": "etnografski muzej na otvorenom", - "hu": "szabadtéri néprajzi múzeum", - "id": "museum terbuka", - "it": "museo all'aperto", - "ja": "野外博物館", - "lt": "muziejus po atviru dangumi", - "lv": "brīvdabas muzejs", - "nb": "friluftsmuseum", - "nl": "openluchtmuseum", - "pl": "skansen", - "pt": "museu a céu aberto", - "ro": "muzeu în aer liber", - "ru": "музей под открытым небом", - "sk": "skanzen", - "sl": "muzej na prostem", - "sr": "музеј на отвореном", - "sv": "friluftsmuseum", - "th": "พิพิธภัณฑ์มีชีวิต", - "tr": "açık hava müzesi", - "uk": "музей просто неба", - "zh": "戶外博物館", - "zh-hk": "生態博物館" - }, - "person": { - "ca": "museu biogràfic", - "cs": "životopisné muzeum", - "da": "personmuseum", - "de": "personenmuseum", - "el": "βιογραφικό μουσείο", - "en": "biographical museum", - "es": "museo biográfico", - "fi": "elämäkerrallinen museo", - "fr": "musée biographique", - "hu": "életrajzi múzeum", - "it": "museo biografico", - "ja": "人物記念館", - "nl": "biografisch museum", - "pl": "muzeum biograficzne", - "pt": "museu biográfico", - "ru": "персональный музей", - "sv": "personmuseum", - "uk": "біографічний музей" - }, - "railway": { - "ca": "museu del ferrocarril", - "cs": "železniční muzeum", - "da": "jernbanemuseum", - "de": "eisenbahnmuseum", - "el": "σιδηροδρομικό μουσείο", - "en": "railway museum", - "es": "museo del ferrocarril", - "et": "raudteemuuseum", - "fi": "rautatiemuseo", - "fr": "musée ferroviaire", - "hu": "vasúti múzeum", - "id": "museum kereta api", - "it": "museo ferroviario", - "ja": "鉄道博物館", - "ko": "철도박물관", - "nl": "spoorwegmuseum", - "pl": "muzeum kolejnictwa", - "pt": "museu dos caminhos de ferro", - "pt-br": "museu ferroviário", - "ru": "железнодорожный музей", - "sv": "järnvägsmuseum", - "tr": "demiryolu müzesi", - "uk": "залізничний музей" - }, - "science": { - "ar": "متحف علمي", - "ca": "museu de ciència", - "cs": "vědecké muzeum", - "da": "videnskabsmuseum", - "de": "wissenschaftsmuseum", - "el": "μουσείο επιστήμης", - "en": "science museum", - "es": "museo científico", - "fi": "tiedemuseo", - "fr": "musée scientifique", - "he": "מוזיאון מדע, טכנולוגיה וטבע", - "hi": "hinde", - "hu": "tudományos központ", - "id": "museum ilmu pengetahuan", - "it": "museo scientifico", - "ja": "科学館", - "ko": "과학관", - "lt": "mokslo muziejus", - "lv": "zinātnes muzejs", - "nb": "vitenskapsmuseum", - "nl": "wetenschapsmuseum", - "pl": "muzeum nauki", - "pt": "museu de ciência", - "ru": "музей науки", - "sl": "znanstveni muzej", - "sr": "музеј науке", - "sv": "vetenskapsmuseum", - "tr": "bilim müzesi", - "uk": "музей науки", - "zh": "科学博物馆", - "zh-hk": "科學博物館", - "zh-tw": "科學博物館" - }, - "technology": { - "ar": "متحف تقني", - "ca": "museu de tecnologia", - "cs": "technické muzeum", - "da": "teknisk museum", - "de": "technikmuseum", - "el": "μουσείο τεχνολογίας", - "en": "technology museum", - "es": "museo tecnológico", - "fi": "teknologiamuseo", - "fr": "musée des technologies", - "he": "מוזיאון טכנולוגיה", - "it": "museo della tecnologia", - "ja": "科学技術博物館", - "lv": "tehnoloģiju muzejs", - "nb": "teknisk museum", - "nl": "techniekmuseum", - "pl": "muzeum techniki", - "pt": "museu de tecnologia", - "ru": "технический музей", - "sv": "teknologimuseum", - "uk": "технічний музей", - "zh": "科技博物館", - "zh-cn": "科技博物馆" - }, - "transport": { - "ca": "museu de transports", - "cs": "muzeum dopravy", - "da": "transportmuseum", - "de": "verkehrsmuseum", - "el": "μουσείο μεταφορών", - "en": "transport museum", - "es": "museo de los transportes", - "fi": "liikennemuseo", - "fr": "musée des transports", - "he": "מוזיאון לתחבורה", - "hu": "közlekedési múzeum", - "it": "museo dei trasporti", - "ja": "交通博物館", - "lv": "transporta muzejs", - "nb": "transportmuseum", - "nl": "vervoermuseum", - "pl": "muzeum transportu", - "pt": "museu dos transportes", - "ru": "музей транспорта", - "uk": "музей транспорту", - "zh": "交通博物館", - "zh-cn": "交通博物馆" - } - }, - "museum_type": { - "municipal": { - "ca": "museu de la ciutat", - "cs": "městské muzeum", - "da": "bymuseum", - "de": "stadtmuseum", - "el": "δημοτικό μουσείο", - "en": "city museum", - "es": "museo de la ciudad", - "et": "linnamuuseum", - "fi": "kaupunginmuseo", - "fr": "musée municipal", - "hu": "városi múzeum", - "it": "museo civico", - "ja": "市立博物館", - "nl": "stadsmuseum", - "pl": "muzeum miejskie", - "sv": "stadsmuseum" - }, - "national": { - "ar": "متحف وطني", - "bg": "национален музей", - "ca": "museu nacional", - "cs": "národní muzeum", - "da": "nationalt museum", - "de": "staatliches museum", - "el": "εθνικό μουσείο", - "en": "national museum", - "es": "museo nacional", - "et": "rahvusmuuseum", - "fi": "kansallismuseo", - "fr": "musée national", - "he": "מוזיאון לאומי", - "hi": "राष्ट्रीय राष्ट्रीय", - "hu": "nemzeti múzeum", - "it": "museo nazionale", - "ja": "国立博物館", - "ko": "국립박물관", - "lt": "nacionalinis muziejus", - "lv": "nacionālais muzejs", - "nb": "nasjonalmuseum", - "nl": "nationaal museum", - "pl": "muzeum narodowe", - "pt": "museu nacional", - "ro": "muzeu național", - "ru": "национальный музей", - "sl": "narodni muzej", - "sr": "национални музеј", - "sv": "nationalmuseum", - "tr": "ulusal müze", - "uk": "національний музей", - "vi": "bảo tàng quốc gia", - "zh": "國立博物館", - "zh-cn": "国立博物馆" - }, - "private": { - "ca": "museu privat", - "cs": "soukromé muzeum", - "de": "privatmuseum", - "el": "ιδιωτικό μουσείο", - "en": "private museum", - "es": "museo privado", - "et": "eramuuseum", - "fi": "yksityismuseo", - "fr": "musée privé", - "he": "מוזיאון פרטי", - "it": "museo privato", - "ja": "私設博物館", - "lv": "privāts muzejs", - "nl": "privémuseum", - "pl": "muzeum prywatne", - "pt": "museu particular", - "ru": "частный музей", - "sl": "zasebni muzej", - "sr": "приватни музеј", - "sv": "privatmuseum", - "tr": "özel müze", - "zh": "私人博物館", - "zh-cn": "私人博物馆" - } - }, - "name": { - "7-Eleven": { - "ar": "7-إلفن", - "en": "7-eleven", - "he": "סבן אילבן", - "ja": "セブン-イレブン", - "ko": "세븐일레븐", - "th": "เซเว่น อีเลฟเว่น" - }, - "BMO Bank of Montreal": { - "ar": "بنك مونتريال", - "en": "bank of montreal", - "es": "banco de montreal", - "fr": "banque de montréal", - "ja": "モントリオール銀行", - "ko": "몬트리올 은행", - "pt": "banco de montreal", - "tr": "montreal bankası", - "zh": "蒙特利尔银行" - } - }, - "natural": { - "arch": { - "ar": "الجسر الطبيعي", - "ca": "arc natural", - "cs": "skalní brána", - "da": "klippebue", - "de": "felsentor", - "en": "natural arch", - "es": "arco natural", - "et": "looduslik kaar", - "fi": "holvikaari", - "fr": "arche naturelle", - "he": "קשת טבעית", - "hu": "sziklakapu", - "id": "pelengkung", - "it": "arco naturale", - "ja": "天然橋", - "ko": "천연교", - "nl": "natuurlijke brug", - "pl": "most skalny", - "pt": "arco natural", - "ru": "природная арка", - "sk": "skalná brána", - "sr": "прераст", - "tr": "doğal kemer", - "uk": "природна арка", - "zh": "天然拱" - }, - "arete": { - "ar": "رعن", - "cs": "areta", - "de": "gebirgsgrat", - "en": "arête", - "es": "arista", - "he": "גב חדיד", - "hi": "तीक्ष्ण कटक", - "hu": "keskeny hegygerinc", - "nb": "egg", - "pl": "grań", - "zh": "刃脊" - }, - "bare_rock": { - "ar": "صخر أساس", - "ca": "roca mare", - "cs": "mateční hornina", - "da": "undergrund", - "de": "festgestein", - "en": "fast stone", - "es": "roca madre", - "et": "aluspõhi", - "fi": "kallioperä", - "fr": "roche mère", - "hi": "तलशिला", - "hr": "stjenovito tle", - "hu": "alapkőzet", - "id": "batuan dasar", - "it": "substrato", - "ja": "基盤岩", - "ko": "기반암", - "lv": "pamatklintājs", - "nb": "grunnfjell", - "nl": "bedrock", - "pl": "skała macierzysta", - "pt": "rocha matriz", - "ru": "коренная порода", - "sr": "бедрок", - "sv": "berggrund", - "uk": "пліт розсипища", - "vi": "móng", - "zh": "基岩", - "zh-cn": "岩床" - }, - "bay": { - "ar": "خليج صغير", - "bg": "залив", - "ca": "badia", - "cs": "záliv", - "da": "bugt", - "de": "bucht", - "el": "κόλπος", - "en": "bay", - "es": "bahía", - "et": "laht", - "fi": "lahti", - "fr": "baie", - "he": "מפרץ", - "hi": "खाड़ी", - "hr": "zaljev", - "hu": "öböl", - "id": "teluk", - "is": "vík", - "it": "baia", - "ja": "湾", - "ko": "만", - "lt": "įlanka", - "lv": "līcis", - "nb": "vik", - "nl": "baai", - "pl": "zatoka", - "pt": "baía", - "ro": "golf mic", - "ru": "залив", - "sk": "záliv", - "sl": "zaliv", - "sr": "залив", - "sv": "vik", - "th": "อ่าว", - "tr": "koy", - "uk": "затока", - "vi": "vịnh", - "zh": "海灣" - }, - "beach": { - "ar": "شاطئ", - "bg": "плаж", - "ca": "platja", - "cs": "pláž", - "da": "strand", - "de": "strand", - "el": "ακτή", - "en": "beach", - "es": "playa", - "et": "supelrand", - "fi": "hiekkaranta", - "fr": "plage", - "he": "חוף", - "hi": "समुद्र तट", - "hr": "plaža", - "hu": "tó- vagy tengerpart", - "id": "pantai", - "it": "spiaggia", - "ja": "浜", - "ko": "해변", - "lt": "paplūdimys", - "lv": "pludmale", - "nb": "strand", - "nl": "strand", - "pl": "plaża", - "pt": "praia", - "ro": "plajă", - "ru": "пляж", - "sk": "pláž", - "sl": "plaža", - "sr": "плажа", - "sv": "strand", - "th": "หาด", - "tr": "plaj", - "uk": "пляж", - "vi": "bãi biển", - "zh": "灘" - }, - "blowhole": { - "ar": "ثقب انفجاري", - "cs": "mořský gejzír", - "en": "blowhole", - "es": "géiser marítimo", - "fr": "geyser maritime", - "ja": "潮吹き穴", - "nb": "blåsehull (geologi)", - "nl": "blaasgat", - "ru": "дыхало", - "sv": "blåshål", - "uk": "дихало", - "vi": "lỗ phun", - "zh": "吹蝕穴" - }, - "cape": { - "ar": "رأس", - "bg": "нос", - "ca": "cap", - "cs": "mys", - "da": "landspids", - "de": "kap", - "el": "ακρωτήριο", - "en": "cape", - "es": "cabo", - "et": "neem", - "fi": "niemi", - "fr": "cap", - "he": "לשון יבשה", - "hi": "रास", - "hr": "rt", - "hu": "fok", - "id": "tanjung", - "it": "capo", - "ja": "岬", - "ko": "곶", - "lt": "kyšulys", - "lv": "zemesrags", - "nb": "kapp", - "nl": "kaap", - "pl": "przylądek", - "pt": "cabo", - "ro": "cap (geografie)", - "ru": "мыс", - "sk": "mys", - "sl": "rt", - "sr": "рт", - "sv": "kap", - "th": "แหลม", - "tr": "burun", - "uk": "мис", - "vi": "mũi đất", - "zh": "海岬" - }, - "cave_entrance": { - "en": "cave entrance", - "fr": "entrée de grotte", - "ru": "вход в пещеру" - }, - "cliff": { - "ar": "جرف", - "bg": "клиф", - "ca": "penya-segat", - "cs": "útes", - "da": "klippe", - "de": "klippe", - "de-ch": "kliff", - "el": "γκρεμός", - "en": "cliff", - "es": "acantilado", - "et": "pank", - "fi": "jyrkänne", - "fr": "rempart montagneux", - "he": "צוק", - "hr": "klȉf", - "hu": "szikla", - "id": "tebing", - "it": "falesia", - "ja": "崖", - "ko": "절벽", - "lt": "klifas", - "lv": "klints", - "nb": "klippe", - "nl": "klip", - "pl": "klif", - "pt": "falésia", - "ro": "faleză", - "ru": "клиф", - "sk": "útes", - "sl": "klif", - "sr": "клиф", - "sv": "klint", - "tr": "uçurum", - "uk": "кліф", - "vi": "bờ biển dốc", - "zh": "悬崖", - "zh-hk": "懸崖", - "zh-tw": "懸崖" - }, - "coastline": { - "ar": "خط ساحلي", - "de": "küstenlinie", - "en": "coastline", - "es": "línea costera", - "et": "rannajoon", - "fi": "rantaviiva", - "fr": "ligne de côte", - "hu": "partvonal", - "id": "pantai", - "it": "linea costiera", - "ja": "海岸線", - "nb": "strandlinje", - "nl": "kustlijn", - "pl": "linia brzegowa", - "pt-br": "linha costeira", - "ru": "береговая линия", - "sv": "kustlinje", - "tr": "kıyı çizgisi", - "uk": "берегова лінія", - "zh": "海岸線" - }, - "desert": { - "ar": "صحراء", - "bg": "пустиня", - "cs": "poušť", - "da": "ørken", - "de": "wüste", - "el": "έρημος", - "en": "desert", - "es": "desierto", - "et": "kõrb", - "fi": "aavikko", - "fr": "désert", - "he": "מדבר", - "hi": "मरुस्थल", - "hr": "pustinja", - "hu": "sivatag", - "id": "gurun", - "is": "eyðimörk", - "it": "deserto", - "ja": "砂漠", - "ko": "사막", - "lt": "dykuma", - "lv": "tuksnesis", - "nb": "ørken", - "nl": "woestijn", - "pl": "pustynia", - "pt": "deserto", - "ro": "deșert", - "ru": "пустыня", - "sk": "púšť", - "sl": "puščava", - "sr": "пустиња", - "sv": "öken", - "th": "ทะเลทราย", - "tr": "çöl", - "uk": "пустеля", - "vi": "hoang mạc", - "zh": "荒漠" - }, - "fell": { - "ca": "fjäll", - "da": "fjeld", - "de": "fjell", - "en": "fell", - "es": "estiva", - "fi": "tunturi", - "fr": "fjäll", - "ja": "高地", - "lv": "fjelds", - "nb": "snaufjell", - "nl": "fjell", - "pl": "hala", - "ru": "фьельды", - "sv": "fjäll", - "zh": "高地" - }, - "glacier": { - "ar": "مثلجة", - "bg": "ледник", - "ca": "glacera", - "cs": "ledovec", - "da": "gletsjer", - "de": "gletscher", - "el": "παγετώνας", - "en": "glacier", - "es": "glaciar", - "et": "liustik", - "fi": "jäätikkö", - "he": "קרחון", - "hi": "हिमनद", - "hr": "ledenjak", - "hu": "gleccser", - "id": "gletser", - "is": "jökull", - "it": "ghiacciaio", - "ja": "氷河", - "ko": "빙하", - "lt": "ledynas", - "lv": "ledājs", - "nb": "isbre", - "nl": "gletsjer", - "pl": "lodowiec", - "pt": "glaciar", - "pt-br": "geleira", - "ro": "ghețar", - "ru": "ледник", - "sk": "ľadovec", - "sl": "ledenik", - "sr": "ледник", - "sv": "glaciär", - "th": "ธารน้ำแข็ง", - "tr": "buzul", - "uk": "льодовик", - "vi": "sông băng", - "zh": "冰川" - }, - "grassland": { - "ar": "أرض عشبية", - "ca": "prada", - "cs": "travní porost", - "da": "græsslette", - "de": "grasland", - "en": "grassland", - "es": "herbazal", - "et": "rohtla", - "fr": "pelouse", - "he": "ערבה (גאוגרפיה)", - "hi": "घासभूमि", - "hr": "travnjak", - "hu": "füves puszta", - "it": "prateria", - "ja": "草原", - "ko": "초원", - "nb": "gresslette", - "nl": "grasland", - "pl": "formacje trawiaste", - "pt": "pradaria", - "ru": "травянистые сообщества", - "sl": "travišče", - "sr": "травњак", - "sv": "gräsmarker", - "th": "ทุ่งหญ้า", - "tr": "campo", - "uk": "поле (екосистема)", - "vi": "đồng cỏ", - "zh": "草原" - }, - "heath": { - "ar": "أرض خلنج", - "ca": "landa", - "cs": "vřesoviště", - "da": "hede", - "de": "heide", - "el": "χερσότοπος", - "en": "heath", - "es": "brezal", - "et": "nõmm", - "fi": "nummi", - "fr": "lande", - "hu": "fenyér", - "id": "lahan kosong", - "it": "landa", - "ja": "ヒース", - "lt": "viržynas", - "lv": "virsājs", - "nb": "hede", - "nl": "heide", - "pl": "wrzosowisko", - "pt": "charneca", - "ro": "landă", - "ru": "пустошь", - "sr": "vriština", - "sv": "hed", - "tr": "fundalık", - "uk": "пустище", - "zh": "石楠荒原" - }, - "isthmus": { - "ar": "برزخ", - "bg": "провлак", - "ca": "istme", - "cs": "pevninská šíje", - "da": "tange", - "el": "ισθμός", - "en": "isthmus", - "es": "istmo", - "et": "maakitsus", - "fi": "kannas", - "fr": "isthme", - "he": "מצר יבשה", - "hi": "भूडमरुमध्य", - "hr": "prevlaka", - "hu": "földszoros", - "id": "tanah genting", - "is": "eiði", - "it": "istmo", - "ja": "地峡", - "ko": "지협", - "lt": "sąsmauka", - "lv": "zemes šaurums", - "nb": "eid", - "nl": "landengte", - "pl": "przesmyk", - "pt": "istmo", - "ro": "istm", - "ru": "перешеек", - "sk": "pevninská šija", - "sl": "ožina", - "sr": "земљоуз", - "sv": "näs", - "th": "คอคอด", - "tr": "kıstak", - "uk": "перешийок", - "vi": "eo đất", - "zh": "地峡", - "zh-hk": "地峽", - "zh-tw": "地峽" - }, - "moor": { - "ar": "مورلاند", - "en": "moorland", - "es": "páramo", - "fr": "brande", - "hr": "močvirje", - "hu": "láprét", - "it": "brughiera", - "ja": "ムーア", - "nb": "lynghei", - "nl": "veen", - "ru": "вересковая пустошь", - "sl": "močvirje", - "sv": "ljunghed", - "uk": "вересове пустище" - }, - "peak": { - "ar": "قمة جبل", - "bg": "връх", - "ca": "cim", - "cs": "vrchol", - "da": "bjergtop", - "de": "gipfel", - "de-at": "berg", - "de-ch": "berggipfel", - "el": "κορυφή", - "en": "summit", - "es": "cima", - "et": "mäetipp", - "fi": "vuorenhuippu", - "fr": "sommet", - "he": "פסגה", - "hi": "शिखर (स्थलाकृति)", - "hr": "vrh", - "hu": "hegycsúcs", - "id": "puncak", - "is": "hóll", - "it": "vetta", - "ja": "頂上", - "ko": "산꼭대기", - "lt": "viršūnė", - "lv": "virsotne", - "nb": "topp", - "nl": "top", - "pl": "szczyt", - "pt": "cume", - "ro": "vârf de munte", - "ru": "вершина местности", - "sk": "vrchol vrchu", - "sl": "vrh", - "sr": "планински врх", - "sv": "bergstopp", - "th": "ยอดเขา", - "tr": "zirve", - "uk": "вершина місцевості", - "vi": "đỉnh", - "zh": "顶峰", - "zh-hk": "頂峰", - "zh-tw": "頂峰" - }, - "peninsula": { - "ar": "شبه جزيرة", - "bg": "полуостров", - "ca": "península", - "cs": "poloostrov", - "da": "halvø", - "de": "halbinsel", - "el": "χερσόνησος", - "en": "peninsula", - "es": "península", - "et": "poolsaar", - "fi": "niemimaa", - "fr": "péninsule", - "he": "חצי אי", - "hi": "प्रायद्वीप", - "hr": "poluotok", - "hu": "félsziget", - "id": "semenanjung", - "is": "skagi", - "it": "penisola", - "ja": "半島", - "ko": "반도", - "lt": "pusiasalis", - "lv": "pussala", - "nb": "halvøy", - "nl": "schiereiland", - "pl": "półwysep", - "pt": "península", - "ro": "peninsulă", - "ru": "полуостров", - "sk": "polostrov", - "sl": "polotok", - "sr": "полуострво", - "sv": "halvö", - "th": "คาบสมุทร", - "tr": "yarımada", - "uk": "півострів", - "vi": "bán đảo", - "zh": "半岛", - "zh-hk": "半島", - "zh-tw": "半島" - }, - "reef": { - "ar": "شعاب", - "bg": "риф", - "ca": "escull", - "cs": "rif", - "da": "rev", - "de": "riff", - "el": "ύφαλος", - "en": "reef", - "es": "arrecife", - "et": "kari", - "fi": "riutta", - "fr": "récif", - "he": "שונית", - "hi": "शैल-भित्ति", - "hr": "greben", - "hu": "zátony", - "id": "terumbu", - "it": "scogliera", - "ja": "暗礁", - "ko": "암초", - "lv": "rifs", - "nb": "rev", - "nl": "rif", - "pl": "rafa", - "pt": "recife", - "ro": "recif", - "ru": "риф", - "sk": "rif", - "sr": "гребен", - "sv": "rev", - "th": "พืดหินใต้น้ำ", - "tr": "resif", - "uk": "риф", - "vi": "ám tiêu", - "zh": "暗礁" - }, - "ridge": { - "ar": "نتوء جبلي", - "bg": "хребет", - "ca": "cresta", - "cs": "hřbet", - "da": "højderyg", - "de": "gebirgskamm", - "el": "οροσειρά", - "en": "ridge", - "es": "cresta", - "et": "seljak", - "fi": "selänne", - "fr": "crête", - "he": "רכס", - "hi": "चोटी", - "hr": "hrbat", - "hu": "hegygerinc", - "id": "rabung", - "it": "cresta", - "ja": "尾根", - "ko": "능선", - "lt": "kalvagūbris", - "lv": "kore", - "nb": "høydedrag", - "nl": "bergkam", - "pl": "grzbiet górski", - "pt": "cumeada", - "pt-br": "tergo", - "ro": "culme", - "ru": "кряж", - "sk": "chrbát", - "sl": "greben", - "sr": "гребен", - "sv": "ås", - "th": "สันเขา", - "tr": "sırt", - "uk": "кряж", - "vi": "sườn núi", - "zh": "山脊" - }, - "riverbed": { - "ar": "قاع المجرى", - "bg": "речно корито", - "ca": "llera", - "cs": "dno toku", - "de": "gewässerbett", - "el": "κοίτη ποταμού", - "en": "stream bed", - "es": "cauce", - "et": "jõesäng", - "fi": "joen uoma", - "fr": "lit mineur", - "he": "אפיק", - "it": "alveo", - "ja": "川底", - "lt": "upės vaga", - "nb": "elveleie", - "nl": "stroombed", - "pl": "koryto rzeki", - "pt": "leito aquático", - "ro": "albie", - "ru": "речное русло", - "sr": "корито реке", - "sv": "flodbädd", - "tr": "dere yatağı", - "uk": "річище", - "vi": "lòng suối", - "zh": "河床" - }, - "rock": { - "ar": "صخر", - "bg": "скала", - "ca": "roca", - "cs": "hornina", - "da": "klippe", - "de": "gestein", - "el": "πέτρωμα", - "en": "rock", - "es": "roca", - "et": "kivim", - "fi": "kivi", - "fr": "roche", - "he": "סלע", - "hi": "शैल", - "hr": "stijena", - "hu": "kőzet", - "id": "batu", - "is": "berg", - "it": "roccia", - "ja": "岩石", - "ko": "암석", - "lt": "uoliena", - "lv": "iezis", - "nb": "bergart", - "nl": "rots of gesteente", - "pl": "skała", - "pt": "rocha", - "ro": "piatră", - "ru": "горная порода", - "sk": "hornina", - "sl": "kamnina", - "sr": "стена", - "sv": "bergart", - "th": "หิน", - "tr": "kayaç", - "uk": "гірські породи", - "vi": "đá", - "zh": "岩石" - }, - "saddle": { - "bg": "седловина", - "ca": "collada", - "cs": "horské sedlo", - "de": "bergsattel", - "en": "saddle", - "es": "collado de montaña", - "fr": "selle", - "it": "sella", - "ja": "鞍部", - "lv": "sedliene", - "nl": "zadel", - "pl": "przełęcz", - "ro": "șa", - "sk": "horské sedlo", - "sl": "sedlo (geografija)", - "sv": "sadelpass", - "uk": "сідловина", - "zh": "鞍部" - }, - "sand": { - "ar": "بحيرة جافة", - "ca": "playa", - "cs": "playa", - "de": "ausgetrockneter see", - "el": "αποξηραμένη λίμνη", - "en": "dry lake", - "es": "categoría:sumideros naturales", - "fi": "aavikkojärvi", - "fr": "lac asséché", - "he": "אגם יבש", - "hi": "नमक का मैदान", - "hu": "sósivatag", - "id": "playa", - "it": "lago asciutto", - "ja": "プラヤ", - "ko": "건호", - "lt": "druskos lyguma", - "nb": "saltslette", - "nl": "zoutvlakte", - "pl": "playa", - "pt": "deserto de sal", - "ro": "playa", - "ru": "бессточная западина", - "sk": "playa", - "sl": "slanišče", - "sr": "сланиште", - "sv": "uttorkad sjö", - "th": "ทะเลสาบแห้ง", - "tr": "playa", - "uk": "безстічні западини", - "zh": "內流盆地湖泊" - }, - "scree": { - "ar": "ركام حصى", - "bg": "сипей", - "ca": "tartera", - "cs": "osyp", - "da": "ur", - "de": "talus", - "el": "κατάπτωση βραχομάζας", - "en": "scree", - "es": "talud", - "fr": "éboulis", - "he": "דרדרת", - "it": "ghiaione", - "ja": "ガラ場", - "ko": "애추", - "lv": "iežu nobirumi", - "nb": "ur", - "nl": "puinhelling", - "pl": "piarg", - "ro": "grohotiș", - "ru": "осыпь", - "sl": "melišče", - "sv": "talus", - "tr": "çarşak", - "uk": "осип", - "vi": "đá vụn", - "zh": "岩屑堆" - }, - "scrub": { - "ar": "أراضي الأشجار القمئية", - "ca": "matollar", - "cs": "křovinná vegetace", - "de": "buschland", - "en": "shrubland", - "es": "matorral", - "fi": "pensasaro", - "fr": "fruticée", - "he": "בתה", - "hi": "क्षुपभूमि", - "hr": "grmovita vegetacija", - "hu": "cserjés", - "id": "lahan perdu", - "ja": "低木砂漠", - "ko": "관목지", - "lv": "krūmāju zeme", - "nb": "krattskog", - "nl": "struweel", - "pl": "scrub", - "pt": "matagal", - "ru": "кустарниковая степь", - "sv": "buskskog", - "tr": "çalılık", - "uk": "скреб", - "zh": "灌叢群落", - "zh-cn": "灌丛" - }, - "shingle": { - "ca": "codolar", - "cs": "oblázková pláž", - "de": "kiesstrand", - "el": "παραλία με βότσαλα", - "en": "shingle beach", - "es": "playa de guijarros", - "et": "kliburannik", - "fi": "pirunpelto", - "fr": "plage de galets", - "ja": "礫浜", - "ko": "역빈", - "nl": "kiezelstrand", - "ru": "галечный пляж", - "sv": "klapperstensfält", - "vi": "bãi cuội bờ biển", - "zh": "碎石灘" - }, - "shrub": { - "ar": "شجيرة", - "bg": "храст", - "ca": "arbust", - "cs": "keř", - "da": "busk", - "de": "strauch", - "el": "θάμνος", - "en": "shrub", - "es": "arbusto", - "et": "põõsas", - "fi": "pensas", - "fr": "arbrisseau", - "he": "שיח", - "hi": "क्षुप", - "hr": "grm", - "hu": "cserje", - "id": "perdu", - "is": "runni", - "it": "arbusto", - "ja": "低木", - "ko": "관목", - "lt": "krūmas", - "lv": "krūms", - "nb": "busk", - "nl": "struik", - "pl": "krzew", - "pt": "arbusto", - "ro": "arbust", - "ru": "кустарник", - "sk": "ker", - "sl": "grmovnica", - "sr": "жбун", - "sv": "buske", - "th": "ไม้พุ่ม", - "tr": "çalı", - "uk": "кущ", - "vi": "cây bụi", - "zh": "灌木" - }, - "shrubbery": { - "ar": "الجنبات", - "en": "shrubbery", - "zh": "灌木叢" - }, - "sinkhole": { - "ar": "بالوعة", - "bg": "карстова дупка", - "ca": "dolina", - "cs": "závrt", - "da": "jordfaldshul", - "de": "doline", - "el": "δολίνη", - "en": "sinkhole", - "es": "dolina", - "et": "kurisu", - "fi": "doliini", - "fr": "doline", - "he": "בולען", - "hi": "घोल रन्ध्र", - "hr": "vrtača", - "hu": "víznyelő", - "id": "dolin", - "it": "dolina carsica", - "ja": "シンクホール", - "ko": "땅꺼짐", - "lt": "smegduobė", - "lv": "karsta kritene", - "nb": "synkehull", - "nl": "doline", - "pl": "lej krasowy", - "pt": "dolina", - "ro": "dolină", - "ru": "карстовая воронка", - "sk": "závrt", - "sl": "kraška dolina", - "sr": "вртача", - "sv": "slukhål", - "th": "หลุมยุบ", - "tr": "obruk", - "uk": "понор", - "vi": "hố địa ngục", - "zh": "地陷", - "zh-cn": "落水洞", - "zh-hk": "沉洞", - "zh-tw": "滲穴" - }, - "spring": { - "ar": "ينبوع", - "bg": "извор", - "ca": "font", - "cs": "pramen", - "da": "kilde", - "de": "quelle", - "el": "υδάτινη πηγή", - "en": "spring", - "es": "manantial", - "et": "allikas", - "fi": "lähde", - "fr": "source", - "he": "מעיין", - "hi": "पानी का चश्मा", - "hu": "forrás", - "id": "mata air", - "is": "ölkelda", - "it": "sorgente", - "ja": "湧水", - "ko": "샘터", - "lt": "versmė", - "lv": "avots", - "nb": "kilde", - "nl": "bron", - "pl": "źródło", - "pt": "nascente", - "ro": "izvor", - "ru": "родник", - "sk": "prameň", - "sl": "izvir", - "sr": "извор", - "sv": "vattenkälla", - "th": "น้ำซับ", - "tr": "kaynak", - "uk": "джерело", - "vi": "mạch nước", - "zh": "泉" - }, - "stone": { - "ar": "جلمود", - "bg": "валун", - "ca": "bloc", - "cs": "balvan", - "da": "stenblok", - "de": "felsblock", - "el": "ογκόλιθος", - "en": "boulder", - "es": "bloque", - "et": "rahn", - "fi": "lohkare", - "fr": "bloc", - "he": "בולדר", - "hu": "tömb", - "it": "macigno", - "ja": "巨礫", - "lt": "riedulys", - "lv": "laukakmens", - "nb": "blokk", - "nl": "rotsblok", - "pl": "głaz", - "pt": "matacão", - "ru": "валун", - "sk": "skala", - "sv": "block", - "uk": "валуни", - "vi": "tảng đá", - "zh": "巨石" - }, - "strait": { - "ar": "مضيق", - "bg": "проток", - "ca": "estret", - "cs": "průliv", - "da": "stræde", - "de": "meerenge", - "el": "πορθμός", - "en": "strait", - "es": "estrecho", - "et": "väin", - "fi": "salmi", - "fr": "détroit", - "he": "מצר ים", - "hi": "जलडमरूमध्य", - "hr": "tjesnac", - "hu": "szoros", - "id": "selat", - "is": "sund", - "it": "stretto", - "ja": "海峡", - "ko": "해협", - "lt": "sąsiauris", - "lv": "jūras šaurums", - "nb": "sund", - "nl": "zeestraat", - "pl": "cieśnina", - "pt": "estreito", - "ro": "strâmtoare", - "ru": "пролив", - "sk": "prieliv", - "sl": "preliv", - "sr": "мореуз", - "sv": "sund", - "th": "ช่องแคบ", - "tr": "boğaz", - "uk": "протока", - "vi": "eo biển", - "zh": "海峡", - "zh-tw": "海峽" - }, - "termite_mound": { - "cs": "termitiště", - "de": "termitenhügel", - "en": "termite mound", - "es": "termitero", - "et": "termiidipesa", - "fr": "termitière", - "ja": "シロアリの塚", - "nl": "termietenheuvel", - "pl": "termitiera", - "pt": "cupinzeiro", - "ru": "термитник", - "uk": "термітник", - "zh": "蟻塚" - }, - "tree": { - "ar": "شجرة", - "bg": "дърво", - "ca": "arbre", - "cs": "strom", - "da": "træ", - "de": "baum", - "el": "δέντρο", - "en": "tree", - "es": "árbol", - "et": "puu", - "fi": "puu", - "fr": "arbre", - "he": "עץ", - "hi": "वृक्ष", - "hr": "stablo", - "hu": "fa", - "id": "pohon", - "is": "tré", - "it": "albero", - "ja": "木", - "ko": "나무", - "lt": "medis", - "lv": "koks", - "nb": "tre", - "nl": "boom", - "pl": "drzewo", - "pt": "árvore", - "ro": "arbore", - "ru": "дерево", - "sk": "strom", - "sl": "drevo", - "sr": "дрво", - "sv": "träd", - "th": "ต้นไม้", - "tr": "ağaç", - "uk": "дерево", - "vi": "cây", - "zh": "树", - "zh-hk": "樹", - "zh-tw": "樹" - }, - "tree_row": { - "ca": "arbre del costat del camí", - "cs": "strom u cesty", - "de": "baumreihe", - "de-ch": "strassenbaum", - "en": "tree row", - "es": "árbol de alineación", - "et": "puude rida", - "fr": "alignement d'arbres", - "ja": "並木", - "ko": "가로수", - "ru": "ряд деревьев", - "sv": "trädrad", - "zh": "行道树", - "zh-hk": "行道樹" - }, - "valley": { - "ar": "واد", - "bg": "долина", - "ca": "vall", - "cs": "údolí", - "da": "dal", - "de": "tal", - "el": "κοιλάδα", - "en": "valley", - "es": "valle", - "et": "org", - "fi": "laakso", - "fr": "vallée", - "he": "עמק", - "hi": "घाटी - पर्वतों या उत्थित भागों के बीच निचली ज़मीन वाला हिस्सा, लम्बाई में विस्तार वाला", - "hr": "dolina", - "hu": "völgy", - "id": "lembah", - "is": "dalur", - "it": "valle", - "ja": "谷", - "ko": "골짜기", - "lt": "slėnis", - "lv": "ieleja", - "nb": "dal", - "nl": "dal", - "pl": "dolina", - "pt": "vale", - "ro": "vale", - "ru": "долина", - "sk": "dolina", - "sl": "dolina", - "sr": "долина", - "sv": "dal", - "th": "หุบเขา", - "tr": "vadi", - "uk": "долина", - "vi": "thung lũng", - "zh": "谷地" - }, - "volcano": { - "ar": "بركان", - "bg": "вулкан", - "ca": "volcà", - "cs": "sopka", - "da": "vulkan", - "de": "vulkan", - "el": "ηφαίστειο", - "en": "volcano", - "es": "volcán", - "et": "vulkaan", - "fi": "tulivuori", - "fr": "volcan", - "he": "הר געש", - "hi": "ज्वालामुखी", - "hr": "vulkan", - "hu": "tűzhányó", - "id": "gunung berapi", - "is": "eldstöð", - "it": "vulcano", - "ja": "火山", - "ko": "화산", - "lt": "ugnikalnis", - "lv": "vulkāns", - "nb": "vulkan", - "nl": "vulkaan", - "pl": "wulkan", - "pt": "vulcão", - "ro": "vulcan", - "ru": "вулкан", - "sk": "sopka", - "sl": "ognjenik", - "sr": "вулкан", - "sv": "vulkan", - "th": "ภูเขาไฟ", - "tr": "yanardağ", - "uk": "вулкан", - "vi": "núi lửa", - "zh": "火山" - }, - "water": { - "ar": "منتجع كلي شيرانه السياحي", - "bg": "воден басейн", - "ca": "cos d'aigua", - "cs": "vodstvo", - "da": "vandområde", - "de": "gewässer", - "el": "υδάτινο σώμα", - "en": "avasheen gelye sherane resort", - "es": "cuerpo de agua", - "et": "veekogu", - "fi": "vesimuodostuma", - "fr": "étendue d'eau", - "he": "גוף מים", - "hi": "जल निकाय", - "hr": "vodena površina", - "hu": "felszíni víz", - "id": "perairan", - "is": "vatnshlot", - "it": "massa d'acqua", - "ja": "水域", - "ko": "수역", - "lt": "vandens telkinys", - "lv": "ūdenstilpe", - "nb": "vannmasse", - "nl": "waterlichaam", - "pl": "akwen", - "pt": "corpo de água", - "ro": "întindere de apă", - "ru": "водный объект", - "sl": "vodno telo", - "sr": "водена површина", - "sv": "vattensamling", - "th": "แหล่งน้ำ", - "tr": "su kütlesi", - "uk": "водний об'єкт", - "vi": "thủy vực", - "zh": "水體", - "zh-cn": "水体" - }, - "wetland": { - "ar": "منطقة رطبة", - "bg": "влажна зона", - "ca": "zona humida", - "cs": "mokřad", - "da": "vådområde", - "de": "feuchtgebiet", - "el": "υγροβιότοπος", - "en": "wetland", - "es": "humedal", - "et": "märgala", - "fi": "kosteikko", - "fr": "zone humide", - "he": "ביצה", - "hi": "आर्द्रभूमि", - "hr": "vlažno područje", - "hu": "vizenyős terület", - "id": "lahan basah", - "is": "votlendi", - "it": "zona umida", - "ja": "湿地", - "ko": "습지", - "lt": "šlapynė", - "lv": "mitrājs", - "nb": "våtmark", - "nl": "drasland", - "pl": "mokradło", - "pt": "zona húmida", - "pt-br": "zona úmida", - "ro": "zonă umedă", - "ru": "водно-болотные угодья", - "sk": "mokraď", - "sl": "mokrišče", - "sr": "мочварно подручје", - "sv": "våtmark", - "th": "พื้นที่ชุ่มน้ำ", - "tr": "sulak alan", - "uk": "водно-болотні угіддя", - "vi": "đất ngập nước", - "zh": "湿地", - "zh-hk": "濕地", - "zh-tw": "濕地" - }, - "wood": { - "ar": "بستان مقدس", - "bg": "гора", - "ca": "bosc sagrat", - "cs": "posvátný háj", - "da": "skov", - "de": "baumkult", - "de-ch": "wald", - "el": "ιερός άλσος", - "en": "sacred grove", - "en-ca": "forest", - "en-gb": "forest", - "es": "bosque sagrado", - "et": "mets", - "fi": "pyhä lehto", - "fr": "bois sacré", - "he": "חורשה קדושה", - "hi": "पवित्र उपवन", - "hr": "šuma", - "hu": "erdő", - "id": "hutan larangan", - "is": "skógur", - "it": "bosco sacro", - "ja": "神聖な森", - "ko": "숲", - "lt": "šventoji giraitė", - "lv": "svētmežs", - "nb": "hellig lund", - "nl": "boomheiligdom", - "pl": "święty gaj (antropologia)", - "pt": "floresta", - "ro": "pădure", - "ru": "священная роща", - "sk": "les", - "sl": "gozd", - "sr": "шума", - "sv": "skog", - "th": "ป่าไม้", - "tr": "orman", - "uk": "ліс", - "vi": "rừng", - "zh": "神聖樹林", - "zh-cn": "神圣橡树", - "zh-tw": "森林" - } - }, - "network": { - "AR": { - "de": "fernstraße in argentinien", - "en": "national routes of argentina", - "es": "rutas nacionales de argentina", - "fr": "route nationale d'argentine", - "nl": "nationale routes in argentinië", - "pt": "rotas nacionais da argentina", - "ru": "список национальных шоссе аргентины", - "uk": "національні автошляхи аргентини", - "zh": "阿根廷国家公路" - }, - "AT": { - "cs": "dálnice v rakousku", - "de": "autobahn in österreich", - "de-at": "autobahn", - "de-ch": "autobahnen und schnellstrassen in österreich", - "en": "autobahns of austria", - "es": "autopistas de austria", - "et": "austria kiirteed", - "fi": "itävallan moottoritieverkko", - "fr": "autoroutes d'autriche", - "hu": "ausztria autópályái", - "it": "autostrade in austria", - "ja": "オーストリアの高速道路", - "nl": "oostenrijkse autosnelwegen", - "pl": "autostrady i drogi ekspresowe w austrii", - "sv": "motorvägar i österrike", - "uk": "автошляхи австрії", - "zh": "奧地利高速公路" - }, - "AU": { - "en": "brisbane metroads" - }, - "AX": { - "en": "main roads in åland" - }, - "AsianHighway": { - "ca": "xarxa de carreteres asiàtiques", - "cs": "dálnice v asii", - "de": "asiatisches fernstraßen-projekt", - "en": "asian highway network", - "es": "sistema de carreteras y autopistas de asia", - "et": "rahvusvaheline aasia teedevõrk", - "fr": "réseau routier asiatique", - "hi": "एशियाई राजमार्ग जाल", - "id": "jaringan jalan asia", - "it": "strade asiatiche", - "ja": "アジアハイウェイ", - "ko": "아시안 하이웨이", - "nl": "aziatische weg", - "ru": "международная азиатская сеть", - "sv": "asienväg", - "th": "ทางหลวงสายเอเชีย", - "tr": "asya ana karayollar projesi", - "uk": "міжнародна азійська мережа", - "vi": "đường xuyên á", - "zh": "亞洲公路網" - }, - "BD": { - "en": "national highways of bangladesh" - }, - "BE": { - "ca": "autopista de bèlgica", - "de": "nationalstraße in belgien", - "de-ch": "nationalstrasse in belgien", - "en": "motorway in belgium", - "fr": "autoroute de belgique", - "hu": "belga autópálya", - "it": "strada nazionale in belgio", - "nl": "autosnelweg in belgië", - "pl": "autostrada w belgii", - "ru": "национальная дорога бельгии", - "sv": "motorväg i belgien", - "zh": "比利时高速公路" - }, - "BR": { - "ca": "rutes federals del brasil", - "de": "bundesstraßen in brasilien", - "en": "federal roads in brazil", - "es": "carreteras federales de brasil", - "fr": "routes fédérales du brésil", - "ja": "ブラジルの連邦道路", - "pt": "rodovias federais do brasil" - }, - "Baltimore Metro SubwayLink": { - "de": "baltimore metro", - "en": "baltimore metro subwaylink", - "es": "metro de baltimore", - "fi": "baltimore metro subway", - "fr": "métro de baltimore", - "hu": "baltimore-i metró", - "it": "metropolitana di baltimora", - "ja": "ボルティモア地下鉄", - "ko": "볼티모어 메트로 서브웨이", - "nl": "metro van baltimore", - "pl": "metro w baltimore", - "pt": "metro de baltimore", - "ru": "метрополитен балтимора", - "th": "รถไฟใต้ดินบอลทิมอร์", - "tr": "baltimore metro subway", - "uk": "метрополітен балтімора", - "zh": "巴尔的摩地铁" - }, - "BaltimoreLink": { - "en": "baltimorelink", - "zh": "馬里蘭交通局巴士" - }, - "Belgrano": { - "de": "ferrocarril general belgrano", - "en": "ferrocarril general manuel belgrano", - "es": "ferrocarril general belgrano", - "fr": "chemin de fer general manuel belgrano", - "ja": "ベルグラーノ将軍鉄道", - "zh": "曼努埃爾·貝爾格拉諾將軍鐵路線" - }, - "CA": { - "ar": "طريق عابر كندا السريع", - "de": "landstraßen in british columbia", - "en": "alberta provincial highways, 1–216 series", - "es": "carretera transcanadiense", - "fi": "trans-canada highway", - "fr": "système autoroutier de l'état de colombie-britannique", - "he": "הכביש המהיר חוצה קנדה", - "hu": "transzkanadai autópálya", - "id": "jalan raya trans-kanada", - "it": "trans-canada highway", - "ja": "ケベック州高速道路", - "ko": "캐나다 횡단도로", - "nb": "trans-canada highway", - "nl": "trans-canada highway", - "pl": "droga transkanadyjska", - "pt": "rodovia trans-canadá", - "ro": "șoseaua trans-canadiană", - "ru": "трансканадское шоссе", - "sr": "трансканадски ауто-пут", - "sv": "trans-canada highway", - "tr": "trans-kanada karayolu", - "uk": "автомагістралі квебеку", - "zh": "加拿大橫貫公路" - }, - "CL": { - "de": "nationalstraßen in chile", - "en": "national routes of chile", - "es": "rutas nacionales de chile", - "fr": "route nationale du chili" - }, - "CN": { - "de": "autobahnnetz peking", - "en": "provincial highways in anhui", - "es": "carreteras nacionales de china", - "fr": "autoroutes de shanghai", - "id": "jalan bebas hambatan terkendali beijing", - "ja": "中国の国道", - "ko": "길림의 고속도로", - "nl": "national trunk highway system", - "pt": "via expressa em guangdong", - "ru": "скоростная автомагистраль в цзилине", - "uk": "китайські національні автомагістралі", - "vi": "đường cao tốc trong quảng tây", - "zh": "安徽省道", - "zh-hk": "中國國家高速公路網", - "zh-tw": "中國國家高速公路網" - }, - "DE": { - "de-ch": "bundesstrasse", - "en": "bundesstraße", - "en-ca": "federal route", - "en-gb": "federal road", - "ja": "ブンデスシュトラッセ", - "ru": "бундесштрассе", - "sk": "spolková cesta", - "zh": "联邦国道" - }, - "DLR": { - "en": "docklands light railway station", - "fr": "station du métro léger des docklands", - "it": "stazione della docklands light railway" - }, - "DZ": { - "ar": "الطرق السيارة في الجزائر", - "en": "highways in algeria", - "fr": "routes nationales d'algérie", - "it": "autostrade in algeria" - }, - "FR": { - "ca": "autopista francesa", - "de": "autoroute", - "de-ch": "liste der nationalstrassen in frankreich", - "en": "french autoroute", - "es": "route nationale", - "fr": "autoroute française", - "hu": "francia autóút", - "it": "strade statali in francia", - "nl": "autoroute", - "pl": "autostrada we francji", - "ru": "автодорога франции", - "uk": "автодорога франції", - "zh": "法国高速公路" - }, - "Ford_Pass": { - "en": "fordpass bike" - }, - "GH": { - "en": "national routes of ghana" - }, - "GLCT": { - "en": "great lakes circle tour" - }, - "GR": { - "bg": "автомагистрали в гърция", - "cs": "dálnice v řecku", - "en": "greek motorways", - "fr": "autoroute grecque", - "hu": "görögország autópályái", - "ru": "автомобильные дороги греции", - "sv": "motorvägar i grekland" - }, - "HK": { - "de": "autobahnen in hongkong", - "en": "hong kong strategic route and exit number system", - "zh": "香港幹線編號系統" - }, - "HT": { - "en": "national roads in haiti" - }, - "ID": { - "en": "national routes of indonesia" - }, - "IN": { - "cs": "dálnice v indii", - "de": "national highway (indien)", - "en": "national expressways of india", - "fi": "intian valtatiet", - "hi": "राष्ट्रीय राजमार्ग", - "ja": "インドの高速道路", - "nl": "nationale snelweg", - "uk": "національні автодороги (індія)", - "vi": "quốc lộ ấn độ", - "zh": "印度国道" - }, - "IQ": { - "en": "highways in iraq" - }, - "IS": { - "de": "straßensystem in island", - "en": "roads in iceland", - "nl": "wegen in ijsland", - "pl": "sieć drogowa w islandii", - "uk": "автошляхи ісландії" - }, - "IT": { - "cs": "dálnice v itálii", - "el": "αυτοκινητόδρομοι στην ιταλία", - "en": "autostrade in italy", - "fi": "italian moottoritieverkko", - "fr": "autoroute italienne", - "hu": "olaszország autópályái", - "it": "autostrade in italia", - "ja": "1級郊外道路", - "ko": "아우토스트라다", - "pl": "autostrady we włoszech", - "uk": "автостради в італії" - }, - "JP": { - "ca": "camí prefectual", - "cs": "dálnice v japonsku", - "de": "liste der autobahnen in japan", - "de-ch": "präfekturstrasse", - "en": "expressways of japan", - "es": "autopistas de japón", - "fi": "japanin moottoritieverkko", - "fr": "route nationale du japon", - "hu": "japán nemzeti országútjainak listája", - "id": "jalan tol di jepang", - "it": "autostrade in giappone", - "ja": "日本の高速道路", - "ko": "일본의 고속도로", - "nl": "japanse autosnelweg", - "ru": "скоростные дороги японии", - "sr": "префектурни пут", - "th": "ทางด่วนในประเทศญี่ปุ่น", - "zh": "日本高速公路", - "zh-hk": "一般國道" - }, - "KR": { - "ar": "طريق محلية في كوريا الجنوبية", - "cs": "dálnice v jižní koreji", - "de": "autobahnen in südkorea", - "en": "expressways in south korea", - "es": "autopistas en corea del sur", - "et": "lõuna-korea kiirteed", - "fr": "réseau autoroutier sud-coréen", - "ja": "高速国道", - "ko": "대한민국 고속국도", - "nl": "lokale weg in zuid-korea", - "pl": "droga lokalna w korei południowej", - "ru": "дорога местного значения в южной корее", - "th": "ทางด่วนในประเทศเกาหลีใต้", - "vi": "đường cao tốc ở hàn quốc", - "zh": "韓國高速公路" - }, - "Königlich_sächsischer_Meilenstein": { - "de": "königlich-sächsischer meilenstein", - "en": "royal saxon milestone" - }, - "LU": { - "cs": "dálnice v lucembursku", - "de": "nationalstraße (luxemburg)", - "en": "motorways in luxembourg", - "fr": "chemin repris", - "hu": "luxemburg autópályái", - "it": "autostrade in lussemburgo", - "nl": "gebiedsweg", - "pl": "autostrady w luksemburgu", - "sv": "motorvägar i luxemburg" - }, - "MX": { - "en": "mexican federal highways", - "es": "carreteras federales de méxico", - "fr": "route fédérale mexicaine", - "nl": "mexicaanse federale snelweg", - "ru": "мексиканское федеральное шоссе", - "zh": "墨西哥聯邦高速公路" - }, - "MY": { - "de": "liste der autobahnen in malaysia", - "en": "malaysian expressway system", - "fr": "liste des autoroutes de malaisie", - "id": "sistem jalan tol malaysia", - "th": "ทางพิเศษในประเทศมาเลเซีย", - "zh": "马来西亚高速公路" - }, - "Metro de Caracas": { - "cs": "metro v caracasu", - "de": "metro caracas", - "en": "caracas metro", - "es": "metro de caracas", - "fi": "caracasin metro", - "fr": "métro de caracas", - "hu": "caracasi metró", - "it": "metropolitana di caracas", - "ja": "カラカス地下鉄", - "nl": "metro van caracas", - "pl": "metro w caracas", - "pt": "metro de caracas", - "pt-br": "metrô de caracas", - "ru": "каракасский метрополитен", - "sv": "caracas tunnelbana", - "th": "รถไฟใต้ดินการากัส", - "tr": "caracas metrosu", - "uk": "метрополітен каракаса", - "zh": "卡拉卡斯地鐵", - "zh-cn": "加拉加斯地铁", - "zh-hk": "加拉加斯地鐵" - }, - "Metrobus_Caracas": { - "de": "metrobus caracas", - "en": "caracas metrobus", - "es": "metrobús de caracas", - "it": "metrobus caracas", - "pl": "metrobus caracas", - "pt": "metrobus caracas" - }, - "Mitre": { - "en": "ferrocarril general bartolomé mitre", - "fr": "chemin de fer general bartolomé mitre", - "ja": "ミトレ幹線", - "zh": "巴托洛梅·米特雷將軍鐵路線" - }, - "NL": { - "ca": "autopistes dels països baixos", - "cs": "dálnice v nizozemsku", - "de": "autobahnen in den niederlanden", - "en": "motorway", - "fr": "autoroutes des pays-bas", - "hu": "hollandia autópályái", - "it": "autostrade nei paesi bassi", - "nl": "autosnelweg", - "pl": "autostrady i drogi ekspresowe w holandii", - "ru": "автомагистрали нидерландов", - "sv": "motorvägar i nederländerna" - }, - "NZ": { - "de": "neuseeländische state highways", - "en": "new zealand state highway network", - "hu": "új-zéland főútjai", - "ja": "ニュージーランド・ステートハイウェイ", - "nl": "nationale weg", - "ru": "сеть государственных шоссе (новая зеландия)" - }, - "PH": { - "en": "philippine expressway network", - "he": "רשת הכביש המהיר הפיליפיני", - "th": "ทางด่วนในประเทศฟิลิปปินส์", - "zh": "菲律宾高速公路" - }, - "PK": { - "cs": "dálnice v pákistánu", - "de": "autobahnen in pakistan", - "en": "lahore ring road", - "es": "autopistas de pakistán", - "ja": "パキスタンのモーターウェイ", - "sv": "motorvägar i pakistan", - "uk": "автомагістралі пакистану", - "zh": "巴基斯坦高速公路系統" - }, - "RO": { - "bg": "автомагистрали в румъния", - "cs": "dálnice v rumunsku", - "en": "motorways in romania", - "it": "autostrade in romania", - "pl": "autostrady w rumunii", - "sv": "motorvägar i rumänien" - }, - "Roca": { - "en": "ferrocarril general roca", - "fr": "chemin de fer general roca", - "ja": "アルゼンチン国鉄", - "zh": "罗卡将军铁路" - }, - "SI": { - "en": "motorways in slovenia" - }, - "SMTD": { - "en": "sangamon mass transit district" - }, - "San_Martín": { - "en": "ferrocarril general san martín", - "fr": "chemin de fer general san martín", - "ja": "サン・マルティン幹線" - }, - "Sarmiento": { - "en": "ferrocarril domingo faustino sarmiento", - "fr": "chemin de fer domingo faustino sarmiento", - "ja": "サルミエント鉄道", - "ko": "철도 도밍고 파우스티노 사르미엔토", - "zh": "多明戈·福斯蒂諾·薩米恩托鐵路" - }, - "TR": { - "en": "otoyol", - "zh": "土耳其高速公路" - }, - "TW": { - "en": "taiwan city highway", - "fr": "routes provinciales de taïwan", - "ja": "台湾市道", - "ko": "중화민국의 일반 국도", - "nl": "townshipweg in taiwan", - "zh": "臺灣市道", - "zh-cn": "台湾市道", - "zh-tw": "台灣市道" - }, - "US": { - "ar": "طريق كنساس السريع", - "bg": "49-милен живописен път", - "ca": "carreteres estatals de califòrnia", - "cs": "great lakes seaway trail", - "da": "great lakes seaway trail", - "de": "indian reservation roads program", - "de-at": "great lakes seaway trail", - "de-ch": "great lakes seaway trail", - "el": "γέφυρα της λίμνης πονσαρτραίν", - "en": "appalachian development highway system", - "es": "carreteras estatales de alabama", - "et": "great lakes seaway trail", - "fi": "great lakes seaway trail", - "fr": "route de comté de californie", - "he": "דרך הנהר הגדולה", - "hr": "program cesta u indijanskim rezervatima", - "hu": "great lakes seaway trail", - "id": "49-mile scenic drive", - "is": "great lakes seaway trail", - "it": "49-mile scenic drive", - "ja": "メリット公園道路", - "ko": "주간고속도로", - "lv": "starpštatu šoseju sistēma", - "nb": "merritt parkway", - "nl": "49-mile scenic drive", - "pl": "great lakes seaway trail", - "pt": "great lakes seaway trail", - "ro": "great lakes seaway trail", - "ru": "система межштатных автомагистралей сша", - "sk": "great lakes seaway trail", - "sl": "great lakes seaway trail", - "sr": "mост на језеру пончартрејн", - "sv": "great lakes seaway trail", - "th": "ระบบทางหลวงอินเตอร์สเตต", - "tr": "interstate", - "uk": "interstate highway system", - "vi": "great lakes seaway trail", - "zh": "49里观光径", - "zh-hk": "龐恰特雷恩湖堤道" - }, - "UY": { - "en": "national routes of uruguay", - "es": "rutas nacionales de uruguay", - "fr": "route nationale de l'uruguay", - "hr": "državne ceste u urugvaju", - "pl": "drogi krajowe w urugwaju" - }, - "Urquiza": { - "en": "ferrocarril general urquiza", - "fr": "chemin de fer general urquiza", - "ja": "ウルキサ将軍鉄道", - "zh": "乌尔基萨将军铁路" - }, - "XK": { - "cs": "dálnice v kosovu", - "de": "autobahn (kosovo)", - "en": "motorways in kosovo", - "zh": "科索沃高速公路" - }, - "am": { - "cs": "dálnice v arménii", - "en": "highways of national importance", - "ru": "автомобильные дороги армении" - }, - "ba": { - "bg": "автомагистрали в босна и херцеговина", - "cs": "dálnice v bosně a hercegovině", - "en": "motorways in bosnia and herzegovina", - "fi": "bosnian ja hertsegovinan moottoritieverkko", - "hu": "bosznia-hercegovina autópályái", - "it": "autostrade in bosnia ed erzegovina", - "nb": "motorveier i bosnia og hercegovina", - "sv": "motorvägar i bosnien och hercegovina" - }, - "bg": { - "bg": "автомагистрали в българия", - "cs": "dálnice v bulharsku", - "el": "αυτοκινητόδρομοι στη βουλγαρία", - "en": "motorways in bulgaria", - "fi": "bulgarian moottoritieverkko", - "hu": "bulgária autópályái", - "it": "autostrade in bulgaria", - "pl": "autostrady w bułgarii", - "ro": "autostrăzi în bulgaria", - "ru": "автомагистрали болгарии", - "sv": "motorvägar i bulgarien", - "uk": "автомагістралі болгарії" - }, - "by": { - "en": "highways in belarus", - "ru": "автомобильные дороги белоруссии", - "uk": "автошляхи білорусі" - }, - "call-a-bike": { - "en": "call a bike", - "ja": "コール・ア・バイク", - "ko": "콜 어 바이크" - }, - "ch": { - "de": "hauptstrasse", - "en": "main roads of switzerland", - "fr": "route principale", - "it": "strada principale", - "ja": "基幹道路 (スイス)" - }, - "co": { - "en": "national highways of colombia", - "es": "carreteras nacionales de colombia" - }, - "e-road": { - "ar": "شبكة الطرق الأوروبية الدولية", - "bg": "европейски път", - "ca": "xarxa de carreteres europees", - "cs": "evropská silnice", - "da": "europavej", - "de": "europastraße", - "de-ch": "europastrasse", - "el": "διεθνές δίκτυο ε-οδών", - "en": "international e-road network", - "es": "carretera europea", - "et": "rahvusvaheline e-teede võrk", - "fi": "eurooppatie", - "fr": "route européenne", - "he": "רשת הכבישים האירופית", - "hr": "europska mreža međunarodnih puteva", - "hu": "európai úthálózat", - "is": "evrópuvegur", - "it": "strade europee", - "ja": "欧州自動車道路", - "ko": "유럽 고속도로", - "lt": "tarptautinis europos kelių tinklas", - "lv": "eiropas autoceļš", - "nb": "europavei", - "nl": "europese weg", - "pl": "trasa europejska", - "pt": "estradas europeias", - "ro": "rețeaua de drumuri europene", - "ru": "европейский автомобильный маршрут", - "sk": "európska cesta", - "sl": "vseevropsko cestno omrežje", - "sr": "европска мрежа међународних путева", - "sv": "europaväg", - "tr": "avrupa e-yolları", - "uk": "європейський автомобільний маршрут", - "vi": "mạng lưới đường bộ quốc tế châu âu", - "zh": "欧洲高速公路", - "zh-hk": "歐洲高速公路", - "zh-tw": "歐洲高速公路" - }, - "ee": { - "da": "hovedvej i estland", - "en": "main road", - "et": "põhimaantee", - "fi": "valtatie", - "zh": "主干道" - }, - "fi": { - "cs": "dálnice ve finsku", - "de": "staatsstraße", - "de-ch": "staatsstrasse", - "en": "connecting road", - "fi": "yhdystie", - "fr": "yhdystie", - "it": "strada di collegamento", - "ja": "国道1号", - "nl": "nationale weg in finland", - "pl": "droga państwowa i klasy", - "sv": "förbindelseväg", - "zh": "芬蘭公路" - }, - "ir": { - "en": "freeways in iran" - }, - "lt": { - "en": "main roads in lithuania", - "it": "strade maestre in lituania" - }, - "lv": { - "en": "state main roads in latvia", - "lv": "latvijas galvenie autoceļi" - }, - "my": { - "en": "malaysian federal roads system", - "id": "rute federal", - "ko": "말레이시아의 연방 도로", - "th": "ระบบทางหลวงสหพันธ์มาเลเซีย", - "zh": "馬來西亞聯邦公路" - }, - "nextbike": { - "cs": "nextbike", - "en": "nextbike by tier", - "es": "nextbike", - "fi": "nextbike", - "fr": "nextbike", - "hu": "nextbike", - "it": "nextbike", - "nl": "nextbike", - "pl": "nextbike", - "ru": "nextbike", - "sr": "nextbike", - "uk": "nextbike" - }, - "np": { - "en": "national highway system of nepal" - }, - "pl": { - "bg": "автомагистрали в полша", - "cs": "dálnice v polsku", - "de": "kreisstraße", - "de-ch": "autobahnen in polen", - "en": "powiat road", - "es": "autopistas de polonia", - "et": "kiirtee poolas", - "fi": "puolan valtatie", - "fr": "voie rapide de pologne", - "hu": "lengyelország autópályái", - "it": "strada distrettuale", - "ja": "アウトストラーダ", - "lv": "automaģistrāle polijā", - "nl": "droga ekspresowa", - "pl": "droga powiatowa", - "ro": "autostrăzi în polonia", - "ru": "национальная автодорога польши", - "sv": "motorvägar i polen", - "tr": "polonya'daki otoyollar", - "uk": "автомагістралі та швидкісні дороги польщі", - "zh": "波兰快速公路" - }, - "ru": { - "ca": "carreteres federals russes", - "cs": "ruské federální dálnice", - "de": "fernstraßen föderaler bedeutung in russland", - "de-ch": "autobahnen in russland", - "el": "αυτοκινητόδρομοι στη ρωσία", - "en": "russian federal highways", - "es": "autopistas federales de rusia", - "fi": "magistral", - "fr": "autoroutes de russie", - "he": "כבישים פדרליים ברוסיה", - "hu": "oroszország autópályái", - "it": "strade federali della russia", - "ja": "ロシア連邦道路", - "nl": "russische federale autowegen", - "pl": "droga federalna w rosji", - "ru": "автомобильные дороги федерального значения россии", - "sv": "motorvägar i ryssland", - "uk": "автомобільні дороги федерального значення російської федерації", - "zh": "俄罗斯联邦公路" - }, - "sk": { - "bg": "автомагистрали в словакия", - "ca": "autopistes d'eslovàquia", - "cs": "dálnice na slovensku", - "en": "highways in slovakia", - "fi": "slovakian moottoritieverkko", - "it": "autostrade in slovacchia", - "ja": "スロバキアの高速道路", - "pl": "autostrady i drogi ekspresowe na słowacji", - "ro": "autostrăzi în slovacia", - "ru": "автомобильные дороги словакии", - "sl": "avtoceste na slovaškem", - "sv": "motorvägar i slovakien", - "uk": "автомобільні шляхи словаччини", - "zh": "斯洛伐克高速公路" - }, - "stadtradhamburg": { - "en": "stadtrad hamburg" - }, - "ua": { - "de": "regionalstraße", - "en": "international highways in ukraine", - "et": "rahvusvahelised maanteed ukrainas", - "pl": "drogi międzynarodowe na ukrainie", - "ru": "национальные автомобильные дороги украины", - "uk": "міжнародні автомобільні шляхи україни" - }, - "vn": { - "en": "expressways of vietnam", - "fr": "autoroutes du viêt nam", - "it": "autostrade in vietnam", - "ja": "ベトナムの高速道路", - "ko": "베트남의 고속도로", - "vi": "hệ thống đường cao tốc việt nam", - "zh": "國道" - }, - "za": { - "en": "metropolitan routes in cape town", - "es": "rutas provinciales", - "zh": "開普敦都會圈道路" - } - }, - "noexit": { - "yes": { - "ar": "طريق مسدود", - "ca": "cul-de-sac", - "cs": "slepá ulice", - "da": "blind vej", - "de": "sackgasse", - "de-ch": "stichstrasse", - "el": "αδιέξοδο", - "en": "dead end street", - "en-ca": "cul-de-sac", - "en-gb": "cul-de-sac", - "es": "cul-de-sac", - "et": "umbtänav", - "fi": "umpikuja", - "fr": "impasse", - "he": "מבוי סתום", - "hu": "zsákutca", - "id": "kuldesak", - "it": "strada senza uscita", - "ja": "クルドサック", - "nb": "blindgate", - "nl": "doodlopende weg", - "pl": "sięgacz", - "pt": "cul-de-sac", - "ro": "fundătură", - "ru": "тупик", - "sv": "återvändsgata", - "tr": "çıkmaz sokak", - "uk": "тупик (тип вулиці)", - "vi": "đường cụt", - "zh": "死路" - } - }, - "nohousenumber": { - "yes": { - "en": "without housenumber", - "es": "sin número", - "it": "senza numero civico", - "pt": "sem número" - } - }, - "noname": { - "yes": { - "ca": "entitat sense nom", - "cs": "bezejmenná entita", - "en": "nameless entity", - "es": "entidad sin nombre", - "it": "entità senza nome", - "ja": "無名のエンティティ", - "pl": "nienazwana encja", - "ru": "безымянная сущность", - "sl": "nepoimenovana entiteta", - "uk": "сутність без назви" - } - }, - "observatory": { - "": { - "ar": "مرصد فلكي", - "ca": "observatori astronòmic", - "cs": "hvězdárna", - "da": "astronomisk observatorium", - "de": "sternwarte", - "el": "αστεροσκοπείο", - "en": "astronomical observatory", - "es": "observatorio astronómico", - "et": "tähetorn", - "fi": "tähtitorni", - "fr": "observatoire astronomique", - "he": "מצפה כוכבים", - "hr": "zvjezdarnica", - "hu": "csillagászati obszervatórium", - "it": "osservatorio astronomico", - "ja": "天文台", - "ko": "천문대", - "lv": "astronomijas observatorija", - "nb": "astronomisk observatorium", - "nl": "astronomisch observatorium", - "pl": "obserwatorium astronomiczne", - "pt": "observatório astronómico", - "ro": "observator astronomic", - "ru": "астрономическая обсерватория", - "sk": "astronomické observatórium", - "sl": "astronomski observatorij", - "sr": "астрономска опсерваторија", - "sv": "astronomiskt observatorium", - "tr": "astronomik gözlemevi", - "uk": "астрономічна обсерваторія", - "vi": "đài quan sát thiên văn", - "zh": "天文台" - } - }, - "office": { - "association": { - "ar": "جمعية تطوعية", - "ca": "associació", - "cs": "spolek", - "da": "frivillig organisation", - "de": "digitale gesellschaft", - "de-ch": "freiwilligen-verein", - "el": "εθελοντικός οργανισμός", - "en": "digital society", - "en-ca": "voluntary association", - "en-gb": "voluntary association", - "es": "asociación", - "et": "selts", - "fi": "yhdistys", - "fr": "société numérique", - "he": "עמותה", - "hi": "voluntary association", - "hr": "udruga", - "hu": "egyesület", - "id": "perhimpunan sukarela", - "it": "associazione", - "ja": "任意団体", - "ko": "조합", - "lt": "registruotoji draugija", - "lv": "biedrība", - "nb": "forening", - "nl": "vrijwilligersorganisatie", - "pl": "stowarzyszenie", - "pt": "associação", - "ro": "asociație", - "ru": "ассоциация", - "sk": "občianske združenie", - "sl": "prostovoljno društvo", - "sr": "удружење", - "sv": "förening", - "th": "สมาคมโดยสมัครใจ", - "tr": "dernek", - "uk": "асоціація", - "vi": "hiệp hội tự nguyện", - "zh": "協會", - "zh-cn": "协会" - }, - "bail_bond_agent": { - "de": "kautionsagent", - "en": "bail bondsman", - "es": "fiador", - "it": "garante della cauzione", - "ja": "保釈保証業者", - "nb": "kausjonist", - "nl": "borgtochtgeldschieter", - "vi": "đại lý bảo lãnh thế chân tại ngoại", - "zh": "保释代理人" - }, - "chamber": { - "ca": "cos professional", - "cs": "samosprávná organizace", - "de": "berufsständische körperschaft", - "en": "self-regulatory organization", - "en-gb": "self-regulatory organisation", - "es": "cuerpo profesional", - "fr": "organisation d'autorégulation", - "id": "organisasi regulator mandiri", - "ja": "自主規制組織", - "pl": "samorząd gospodarczy", - "ru": "саморегулируемая организация", - "sl": "samoregulativna organizacija", - "tr": "öz denetim kuruluşu", - "uk": "саморегульована організація", - "zh": "自律組織" - }, - "construction_company": { - "ca": "empresa de construcció", - "cs": "stavební firma", - "da": "bygge- og anlægsvirksomhed", - "de": "bauunternehmen", - "el": "εργολάβος κατασκευών", - "en": "construction business", - "es": "empresa de construcción", - "fi": "rakennusaliurakoitsija", - "fr": "entreprise de construction", - "he": "חברת בנייה", - "hu": "építési vállalkozó", - "it": "impresa edile", - "ja": "建設会社", - "ko": "건설업", - "nb": "byggefirma", - "nl": "bouwbedrijf", - "pt": "construtora", - "ro": "companie de construcții", - "ru": "строительная компания", - "sr": "грађевински извођач", - "uk": "будівництво", - "zh": "建筑企业", - "zh-tw": "建築企業" - }, - "courier": { - "de": "kurierdienst", - "en": "courier service", - "hu": "futárszolgálat", - "nb": "budtjeneste", - "nl": "koeriersdienst", - "ru": "курьерские услуги" - }, - "coworking": { - "ar": "مساحة عمل مشتركه", - "bg": "коуъркинг", - "ca": "cotreball", - "el": "συνεργασία (εργασία)", - "en": "coworking", - "es": "cotrabajo", - "fi": "ryhmätyötila", - "he": "חלל עבודה משותף", - "id": "kerja bersama", - "ja": "コワーキング", - "nb": "kontorfellesskap", - "nl": "deelkantoor", - "ru": "коворкинг", - "sl": "sodelanje", - "sv": "kontorskollektiv", - "tr": "açık ofis", - "uk": "коворкінг", - "zh": "共用工作空間" - }, - "diplomatic": { - "ar": "بعثة دبلوماسية", - "bg": "дипломатическа мисия", - "ca": "missió diplomàtica", - "cs": "zastupitelský úřad", - "da": "diplomatisk mission", - "de": "auslandsvertretung", - "el": "διπλωματική αποστολή", - "en": "diplomatic mission", - "es": "misión diplomática", - "et": "suursaatkond", - "fi": "diplomaattinen edustusto", - "fr": "mission diplomatique", - "he": "נציגות דיפלומטית", - "hi": "राजनयिक मिशन", - "hr": "veleposlanstvo", - "hu": "diplomáciai misszió", - "id": "kedutaan besar", - "is": "pólítísk sendiför", - "it": "missione diplomatica", - "ja": "在外公館", - "ko": "외교 공관", - "lt": "diplomatinė atstovybė", - "nb": "diplomatisk utsending", - "nl": "diplomatieke missie", - "pl": "misja dyplomatyczna", - "pt": "missão diplomática", - "ro": "misiune diplomatică", - "ru": "дипломатическое представительство", - "sl": "veleposlaništvo", - "sr": "дипломатско представништво", - "sv": "beskickning", - "th": "คณะผู้แทนทางทูต", - "tr": "dış temsilcilik", - "uk": "дипломатичне представництво", - "vi": "phái bộ ngoại giao", - "zh": "外交代表機構", - "zh-cn": "外交代表机构" - }, - "employment_agency": { - "ar": "وكالة توظيف", - "bg": "агенция за човешки ресурси", - "ca": "agència de treball", - "cs": "agentura práce", - "de": "arbeitsvermittler", - "en": "employment agency", - "es": "agencia de empleo", - "fi": "työvoimapalvelu", - "fr": "agence d’emploi", - "he": "חברת השמה", - "hu": "munkaközvetítő", - "id": "kerjantara", - "it": "agenzia per il lavoro", - "ja": "職業紹介事業", - "ko": "노동거래소", - "lt": "įdarbinimo agentūra", - "nb": "arbeidsformindling", - "nl": "arbeidsbureau", - "pl": "agencja zatrudnienia", - "pt": "agência de emprego", - "ru": "кадровое агентство", - "sl": "najem delovne sile", - "sr": "служба за запошљавање", - "sv": "arbetsförmedling", - "uk": "кадрова агенція", - "vi": "công ty nhân sự", - "zh": "人力仲介" - }, - "engineer": { - "ar": "مهندس", - "bg": "инженер", - "ca": "enginyer", - "cs": "inženýr", - "da": "ingeniør", - "de": "ingenieur", - "el": "μηχανικός", - "en": "engineer", - "es": "ingeniero", - "et": "insener", - "fi": "insinööri", - "fr": "ingénieur ou ingénieure", - "he": "מהנדס", - "hi": "अभियन्ता", - "hr": "inženjer", - "hu": "mérnök", - "id": "insinyur", - "is": "verkfræðingur", - "it": "ingegnere", - "ja": "工学者", - "ko": "기술자", - "lt": "inžinierius", - "lv": "inženieris", - "nb": "ingeniør", - "nl": "ingenieur", - "pl": "inżynier", - "pt": "engenheiro", - "ro": "inginer", - "ru": "инженер", - "sk": "inžinier", - "sl": "inženir", - "sr": "инжењер", - "sv": "ingenjör", - "th": "วิศวกร", - "tr": "mühendis", - "uk": "інженер", - "vi": "kỹ sư", - "zh": "工程师", - "zh-hk": "工程師", - "zh-tw": "工程師" - }, - "estate_agent": { - "ar": "سمسار عقارات", - "ca": "agent immobiliari", - "cs": "realitní makléř", - "da": "ejendomsmægler", - "de": "immobilienmakler", - "el": "μεσίτης", - "en": "real estate agent", - "es": "agente inmobiliario", - "et": "kinnisvaramaakler", - "fi": "kiinteistönvälittäjä", - "fr": "agent immobilier ou agente immobilière", - "he": "סוכן נדל\"ן", - "hu": "ingatlanközvetítő", - "id": "agen real estat", - "it": "agente immobiliare", - "ja": "宅地建物取引士", - "ko": "부동산중개사", - "lt": "nekilnojamojo turto agentas", - "nb": "eiendomsmegler", - "nl": "vastgoedmakelaar", - "pl": "pośrednik w obrocie nieruchomościami", - "pt-br": "agente imobiliário", - "ro": "agent imobiliar", - "ru": "риелтор", - "sl": "nepremičninski posrednik", - "sr": "агент за некретнине", - "sv": "fastighetsmäklare", - "tr": "emlakçı", - "uk": "ріелтор", - "vi": "môi giới bất động sản", - "zh": "地產代理" - }, - "financial_advisor": { - "ar": "مستشار مالي", - "ca": "assessor financer", - "cs": "finanční poradce", - "da": "finansiel rådgiver", - "de": "finanzberater", - "el": "οικονομικός σύμβουλος", - "en": "financial adviser", - "es": "asesor financiero", - "fr": "conseiller en gestion de patrimoine", - "he": "יועץ פיננסי", - "hu": "pénzügyi tanácsadó", - "it": "consulente finanziario", - "ja": "財務顧問", - "lt": "finansų patarėjas", - "nb": "økonomisk rådgiver", - "nl": "financieel adviseur", - "pl": "doradca finansowy", - "pt-br": "conselheiro financeiro", - "ro": "consultant financiar", - "ru": "финансовый советник", - "sk": "finančný sprostredkovateľ", - "sr": "финансијски саветник", - "sv": "ekonomisk rådgivare", - "th": "fal", - "uk": "фінансовий консалтинг", - "zh": "财务顾问", - "zh-cn": "金融咨询师" - }, - "insurance": { - "ca": "agència asseguradora", - "en": "insurance agency", - "ja": "保険仲立業" - }, - "lawyer": { - "ar": "محامٍ", - "bg": "адвокат", - "ca": "advocat", - "cs": "advokát", - "da": "advokat", - "de": "rechtsanwalt", - "el": "δικηγόρος", - "en": "lawyer", - "es": "abogado", - "et": "advokaat", - "fi": "lakimies", - "fr": "avocat ou avocate", - "he": "עורך דין", - "hi": "वक़ील", - "hr": "odvjetnik", - "hu": "jogász", - "id": "pengacara", - "is": "lögfræðingur", - "it": "avvocato", - "ja": "弁護士", - "ko": "변호사", - "lt": "advokatas", - "lv": "advokāts", - "nb": "advokat", - "nl": "advocaat", - "pl": "adwokat", - "pt": "advogado", - "pt-br": "advogado(a)", - "ro": "avocat", - "ru": "практикующий юрист", - "sk": "advokát", - "sl": "odvetnik", - "sr": "адвокат", - "sv": "advokat", - "th": "ทนายความ", - "tr": "avukat", - "uk": "адвокат", - "vi": "luật sư", - "zh": "律師", - "zh-cn": "律师" - }, - "logistics": { - "ar": "وكيل شحن", - "ca": "comitent", - "cs": "přepravce", - "da": "speditør", - "de": "spediteur", - "en": "consignor", - "fr": "expéditeur", - "he": "משלח", - "it": "committente", - "nb": "speditør", - "ru": "экспедитор", - "sk": "prepravca", - "sv": "kommittent" - }, - "notary": { - "ar": "كاتب العدل", - "bg": "нотариус", - "cs": "notář", - "da": "notar", - "de": "notar", - "el": "συμβολαιογράφος", - "en": "notary public", - "en-ca": "notary", - "en-gb": "notary", - "et": "notar", - "fi": "notaari", - "fr": "notaire public", - "he": "נוטריון", - "hr": "javni bilježnik", - "hu": "közjegyző", - "id": "notaris", - "ja": "公証人", - "ko": "공증인", - "lt": "notaras", - "nb": "notarius publicus", - "nl": "notaris", - "pl": "notariusz", - "pt": "notário público", - "pt-br": "notário", - "ro": "notar", - "ru": "нотариус общего права", - "sk": "notár", - "sl": "notar", - "sr": "notar", - "sv": "notarius publicus", - "tr": "halk noteri", - "uk": "нотаріус", - "vi": "công chứng", - "zh": "公證人", - "zh-cn": "公证", - "zh-hk": "公證" - }, - "tax_advisor": { - "ar": "مستشار ضريبي", - "ca": "assessor fiscal", - "cs": "daňový poradce", - "da": "skatterådgiver", - "de": "steuerberater", - "el": "φορολογικός σύμβουλος", - "en": "tax advisor", - "es": "asesor fiscal", - "fi": "veroneuvoja", - "fr": "conseiller ou conseillère fiscale", - "he": "יועץ מס", - "hu": "adótanácsadó", - "it": "commercialista", - "ja": "税理士", - "ko": "세무사", - "lt": "mokesčių patarėjas", - "nb": "skatterådgiver", - "nl": "belastingadviseur", - "pl": "doradca podatkowy", - "pt": "assessor fiscal", - "ru": "налоговый консультант", - "sr": "порески саветник", - "sv": "skatterådgivare", - "zh": "稅理士" - }, - "telecommunication": { - "ar": "شركة اتصالات", - "ca": "companyia de telecomunicacions", - "cs": "telekomunikační společnost", - "da": "telekommunikationsvirksomhed", - "de": "telekommunikationsunternehmen", - "en": "globalstar telecommunication company us", - "es": "compañía de telecomunicaciones", - "fi": "televiestintäyritys", - "fr": "société de télécommunications", - "he": "חברת טלקומוניקציה", - "hu": "telekommunikációs vállalat", - "it": "società di telecomunicazioni", - "ja": "通信事業者", - "nl": "telecommunicatiebedrijf", - "pl": "przedsiębiorstwo telekomunikacyjne", - "pt": "empresa de telecomunicações", - "ru": "телекоммуникационная компания", - "sk": "telekomunikačná spoločnosť", - "sv": "telecomföretag", - "vi": "công ty viễn thông", - "zh": "通讯公司" - }, - "therapist": { - "ar": "أخصائي العلاج الطبيعي", - "ca": "fisioterapeuta", - "cs": "fyzioterapeut", - "da": "fysioterapeut", - "de": "physiotherapeut", - "el": "φυσικοθεραπευτής", - "en": "physiotherapist", - "es": "fisioterapeuta", - "et": "füsioterapeut", - "fi": "fysioterapeutti", - "fr": "physiothérapeute", - "he": "פיזיותרפיסט", - "hu": "gyógytornász", - "it": "fisioterapista", - "ja": "理学療法士", - "ko": "물리치료사", - "lv": "fizioterapeits", - "nb": "fysioterapeut", - "nl": "fysiotherapeut", - "pl": "fizjoterapeuta", - "pt": "fisioterapeuta", - "ru": "физиотерапевт", - "sk": "fyzioterapeut", - "sl": "fizioterapevt", - "sr": "физиотерапеут", - "sv": "sjukgymnast", - "tr": "fizyoterapist", - "zh": "物理治療師" - }, - "travel_agent": { - "ca": "agent de viatges", - "de": "reisevermittler", - "en": "travel agent", - "es": "agente de viajes", - "fr": "agent de voyages", - "hu": "utazási ügynök", - "nl": "reisagent", - "pl": "pośrednik turystyczny", - "pt": "agente de viagens", - "ru": "турагент", - "sl": "turistični agent", - "sr": "туристички агент", - "sv": "reseagent", - "uk": "турагент" - }, - "union": { - "ar": "اتحاد نقابة عمال", - "bg": "професионален съюз", - "ca": "sindicat", - "cs": "odbory", - "da": "fagforening", - "de": "gewerkschaft", - "el": "συνδικάτο", - "en": "labor union", - "en-ca": "labour union", - "en-gb": "trade union", - "es": "sindicato de trabajadores", - "et": "ametiühing", - "fi": "ammattiliitto", - "fr": "syndicat professionnel", - "he": "איגוד עובדים", - "hi": "श्रमिक संघ", - "hr": "sindikat", - "hu": "szakszervezet", - "id": "serikat dagang", - "is": "stéttarfélag", - "it": "sindacato", - "ja": "労働組合", - "ko": "노동조합", - "lt": "profesinė sąjunga", - "lv": "arodbiedrība", - "nb": "fagforening", - "nl": "vakbond", - "pl": "związek zawodowy", - "pt": "sindicato", - "ro": "sindicat", - "ru": "профессиональный союз", - "sk": "odbory", - "sl": "sindikat", - "sr": "синдикат", - "sv": "fackförening", - "th": "สหภาพแรงงาน", - "tr": "ticaret birliği", - "uk": "професійна спілка", - "vi": "công đoàn", - "zh": "工會", - "zh-cn": "工会" - } - }, - "oneway": { - "no": { - "ar": "حركة السير ثنائية الاتجاه", - "ca": "trànsit bidireccional", - "cs": "obousměrný provoz", - "en": "bidirectional traffic", - "es": "tránsito vehicular bidireccional", - "fr": "circulation à double sens", - "he": "תנועה דו-סיטרית", - "ja": "双方向輸送", - "pl": "ruch dwukierunkowy", - "zh": "雙向車道" - }, - "yes": { - "ca": "trànsit unidireccional", - "cs": "jednosměrná pozemní komunikace", - "da": "ensrettet vej", - "de": "einwegverkehr", - "el": "μονόδρομος", - "en": "one-way traffic", - "es": "tránsito vehicular unidireccional", - "fi": "yksisuuntaisuus", - "fr": "circulation en sens unique", - "he": "תנועה חד-סיטרית", - "hi": "ek taraf marg", - "it": "senso unico", - "ja": "一方通行", - "ko": "일방통행", - "nb": "enveiskjøring", - "nl": "eenrichtingsverkeer", - "pl": "ruch jednokierunkowy", - "ro": "sens unic", - "ru": "одностороннее движение", - "sv": "enkelriktning", - "uk": "односторонній рух", - "zh": "单行道" - } - }, - "opening_hours": { - "": { - "ca": "tancat al públic", - "cs": "zavřeno pro veřejnost", - "de": "für die öffentlichkeit geschlossen", - "el": "κλειστό στο κοινό", - "en": "closed to the public", - "es": "cerrado al público", - "fi": "suljettu yleisöltä", - "fr": "fermé au public", - "he": "סגור לציבור", - "hr": "zatvoren javnosti", - "it": "chiuso al pubblico", - "ja": "閉鎖", - "ko": "일반인 개방이 무기한 중단됨", - "nl": "gesloten voor publiek", - "pl": "niedostępny publicznie", - "pt": "fechado ao público", - "ru": "закрыто для публики", - "sl": "zaprto za javnost", - "sr": "затворено за јавност", - "sv": "stängd för allmänheten", - "tr": "halka kapalı", - "uk": "закрито для публіки" - }, - "24/7": { - "ar": "خدمة 24/7", - "ca": "serveis 24/7", - "cs": "nonstop", - "en": "24/7", - "id": "layanan 24/7", - "it": "24 ore su 24", - "ja": "24時間営業", - "ko": "24/7 서비스" - }, - "off": { - "ca": "tancat al públic", - "cs": "zavřeno pro veřejnost", - "de": "für die öffentlichkeit geschlossen", - "el": "κλειστό στο κοινό", - "en": "closed to the public", - "es": "cerrado al público", - "fi": "suljettu yleisöltä", - "fr": "fermé au public", - "he": "סגור לציבור", - "hr": "zatvoren javnosti", - "it": "chiuso al pubblico", - "ja": "閉鎖", - "ko": "일반인 개방이 무기한 중단됨", - "nl": "gesloten voor publiek", - "pl": "niedostępny publicznie", - "pt": "fechado ao público", - "ru": "закрыто для публики", - "sl": "zaprto za javnost", - "sr": "затворено за јавност", - "sv": "stängd för allmänheten", - "tr": "halka kapalı", - "uk": "закрито для публіки" - } - }, - "operator": { - "": { - "ar": "ائتلاف تجاري", - "bg": "консорциум", - "ca": "consorci", - "cs": "konsorcium", - "da": "konsortium", - "de": "konsortium", - "de-ch": "genossenschaft", - "el": "κοινοπραξία", - "en": "organized community", - "en-ca": "cooperative", - "en-gb": "cooperative", - "en-us": "government organization", - "es": "consorcio", - "et": "konsortsium", - "fi": "konsortio", - "fr": "communauté organisée", - "he": "קונסורציום", - "hi": "सहकारी समिति", - "hr": "konzorcij", - "hu": "konzorcium", - "id": "konsorsium", - "is": "almenn félagasamtök", - "it": "consorzio", - "ja": "コンソーシアム", - "ko": "연합체", - "lt": "konsorciumas", - "lv": "konsorcijs", - "nb": "konsortium", - "nl": "consortium", - "pl": "konsorcjum", - "pt": "consórcio", - "pt-br": "cooperativismo", - "ro": "cooperativă", - "ru": "консорциум", - "sk": "konzorcium", - "sl": "konzorcij", - "sr": "конзорцијум", - "sv": "konsortium", - "th": "คอนโซเตียม", - "tr": "şirketler birliği", - "uk": "консорціум", - "vi": "côngxoocxiom", - "zh": "聯盟", - "zh-cn": "联盟" - }, - "Baltimore City Department of Transportation": { - "en": "baltimore salt box" - }, - "Stadtwerke_Lübeck_mobil": { - "en": "stadtwerke lübeck mobil", - "zh": "吕贝克城市交通公司" - } - }, - "ownership": { - "national": { - "ca": "refugi nacional de fauna", - "en": "national wildlife refuge", - "es": "refugio nacional de vida silvestre", - "fr": "refuge faunique national", - "ja": "野生生物保護区", - "ru": "национальный резерват дикой природы", - "zh": "國家野生保護區", - "zh-cn": "国家野生动物保护区系统" - } - }, - "park": { - "": { - "ar": "متنزه حكومي", - "ca": "parc d'estat federal", - "da": "statspark", - "de": "staatspark", - "en": "state beach", - "es": "parque estatal", - "fr": "plage d'état", - "he": "פארק מדינתי", - "it": "parco statale", - "ja": "州立公園", - "nl": "staatspark", - "pl": "parki stanowe usa", - "pt": "parque estadual", - "ru": "парк штата", - "sv": "delstatspark", - "tr": "eyalet parkı", - "uk": "парк штату", - "zh": "州立公園" - } - }, - "parking": { - "layby": { - "en": "lay-by", - "it": "piazzola di sosta" - }, - "multi-storey": { - "ar": "موقف سيارات متعدد الطوابق", - "cs": "parkovací dům", - "da": "parkeringshus", - "de": "parkhaus", - "en": "multistorey car park", - "en-ca": "multi-storey car park", - "en-gb": "multi-storey car park", - "fi": "pysäköintitalo", - "fr": "stationnement étagé", - "id": "gedung parkir", - "it": "autosilo", - "ja": "立体駐車場", - "ko": "주차장 건물", - "lt": "daugiaaukštė stovėjimo aikštelė", - "nb": "parkeringshus", - "nl": "parkeergarage", - "pt": "silo-auto", - "pt-br": "edifício-garagem", - "ro": "parcare supraetajată", - "ru": "многоэтажный гараж", - "sv": "parkeringshus", - "tr": "çok katlı otopark", - "vi": "bãi đậu xe nhiều tầng", - "zh": "多層停車場", - "zh-tw": "立體停車場" - }, - "underground": { - "cs": "podzemní garáž", - "da": "parkeringskælder", - "de": "tiefgarage", - "en": "underground parking space", - "fi": "pysäköintiluola", - "fr": "parking souterrain", - "nl": "ondergrondse parkeergarage", - "pl": "parking podziemny", - "pt": "estacionamento subterrâneo", - "ru": "подземная парковка", - "sv": "underjordisk parkering", - "zh-cn": "地下停车场" - } - }, - "parking_space": { - "disabled": { - "cs": "vyhrazené parkoviště", - "da": "handicapparkeringsplads", - "de": "behindertenparkplatz", - "el": "θέση στάθμευσης με ειδικές ανάγκες", - "en": "accessible parking spot", - "es": "lugar de estacionamiento para discapacitados", - "et": "invaparkimiskoht", - "fr": "place de parking handicapé", - "hr": "parkirno mjesto za invalide", - "hu": "akadálymentesített parkolóhely", - "is": "bílastæði fyrir fatlaða", - "it": "posto auto per disabili", - "lt": "automobilių stovėjimo aikštelė neįgaliesiems", - "lv": "autostāvvieta invalīdiem", - "nl": "gehandicaptenparkeerplaats", - "pl": "miejsce parkingowe dla niepełnosprawnych", - "pt": "estacionamento para deficientes físicos", - "ro": "loc de parcare pentru persoane cu dizabilități", - "ru": "место для парковки инвалидов", - "sl": "parkirno mesto za invalide", - "sv": "handikapparkeringsplats", - "tr": "engelli park yeri", - "uk": "місце для паркування інвалідів" - }, - "men": { - "de": "männerparkplatz", - "en": "men's parking space", - "es": "espacio de estacionamiento para hombres", - "it": "stallo di sosta per uomini", - "ja": "男性専用駐車スペース", - "ko": "남성전용 주차공간" - }, - "women": { - "ar": "أماكن وقوف السيارات الخاصة بالنساء", - "de": "frauenparkplatz", - "en": "women's parking space", - "es": "espacio de estacionamiento para mujeres", - "fr": "place de parking réservée aux femmes", - "he": "חנייה לנשים", - "id": "parkir khusus wanita", - "it": "stallo di sosta per donne", - "ja": "女性専用駐車スペース", - "ko": "여성전용 주차공간", - "nl": "vrouwenparkeerplaats", - "ru": "парковка для женщин", - "sv": "kvinnoparkering" - } - }, - "payment": { - "": { - "ar": "بطاقة ائتمان", - "bg": "кредитна карта", - "ca": "targeta de crèdit", - "cs": "kreditní karta", - "da": "kreditkort", - "de": "kreditkarte", - "el": "πιστωτική κάρτα", - "en": "credit card", - "es": "tarjeta de crédito", - "et": "krediitkaart", - "fi": "luottokortti", - "fr": "carte de crédit", - "he": "כרטיס אשראי", - "hi": "क्रेडिट कार्ड", - "hr": "kreditna kartica", - "hu": "hitelkártya", - "id": "kartu kredit", - "is": "kreditkort", - "it": "carta di credito", - "ja": "クレジットカード", - "ko": "신용카드", - "lt": "kredito kortelė", - "lv": "kredītkarte", - "nb": "kredittkort", - "nl": "creditcard", - "pl": "karta kredytowa", - "pt": "cartão de crédito", - "ro": "card de credit", - "ru": "кредитная карта", - "sk": "kreditná karta", - "sl": "kreditna kartica", - "sr": "кредитна картица", - "sv": "kreditkort", - "th": "บัตรเครดิต", - "tr": "kredi kartı", - "uk": "кредитна картка", - "vi": "thẻ tín dụng", - "zh": "信用卡" - } - }, - "pedagogy": { - "freinet": { - "ca": "mètode freinet", - "en": "freinet modern school movement", - "fr": "mouvement de l'école moderne", - "ja": "フレネ教育" - }, - "hybrid": { - "ar": "تعليم بديل", - "bg": "алтернативно образование", - "cs": "alternativní výuka", - "de": "alternativpädagogik", - "en": "alternative education", - "fr": "éducation alternative", - "hi": "वैकल्पिक शिक्षा", - "ja": "オルタナティブ教育", - "ko": "대안 교육", - "nl": "methodeonderwijs", - "sr": "алтернативна едукација", - "tr": "alternatif eğitim", - "uk": "альтернативна освіта", - "zh": "另類教育" - }, - "montessori": { - "ar": "منهج مونتيسوري", - "ca": "mètode montessori", - "cs": "montessoriovská škola", - "de": "montessoripädagogik", - "el": "μέθοδος μοντεσσόρι", - "en": "montessori education", - "es": "método montessori", - "et": "montessori pedagoogika", - "fi": "montessoripedagogiikka", - "fr": "pédagogie montessori", - "he": "שיטת מונטסורי", - "hi": "मांटेसरी पद्धति", - "id": "metode montessori", - "is": "montessori", - "it": "metodo montessori", - "ja": "モンテッソーリ教育", - "ko": "몬테소리 교육법", - "nb": "montessoripedagogikk", - "nl": "montessorionderwijs", - "pl": "metoda montessori", - "pt": "método montessori", - "ru": "педагогика монтессори", - "sk": "montessoriovská škola", - "sr": "монтесори метод", - "sv": "montessoripedagogik", - "th": "มอนเตสเซอรี่", - "tr": "montessori eğitimi", - "uk": "педагогіка монтессорі", - "vi": "phương pháp giáo dục montessori", - "zh": "蒙台梭利教育法" - }, - "outdoor": { - "ar": "التعليم في الهواء الطلق", - "cs": "venkovní vzdělávání", - "de": "erlebnispädagogik", - "en": "outdoor education", - "es": "educación exterior", - "et": "õuesõpe", - "fr": "éducation extérieure", - "hu": "élménypedagógia", - "id": "outbound", - "is": "útikennsla", - "ja": "野外教育", - "nl": "openluchtklas", - "sl": "pedagogika na prostem", - "zh": "戶外教育" - }, - "reggio_emilia": { - "ar": "مشكلات طفل الروضة", - "de": "reggio-pädagogik", - "el": "εκπαιδευτικό πρόγραμμα ρέτζιο εμίλια", - "en": "reggio emilia approach", - "es": "pedagogía reggio emilia", - "fr": "pédagogie reggio", - "he": "גישת רג'ו אמיליה", - "is": "kennslufræði reggio emilia", - "ja": "レッジョ・エミリア教育", - "ko": "레지오에밀리아 접근법", - "nb": "reggio emilias barnehagefilosofi", - "nl": "reggio emilia", - "pl": "metoda reggio emilia", - "sv": "reggio emilia-pedagogik", - "tr": "reggio emilia eğitim yaklaşımı", - "zh": "瑞吉欧方法", - "zh-tw": "瑞吉歐方法" - }, - "sudbury": { - "ca": "sudbury valley school", - "cs": "sudbury", - "da": "sudbury-skole", - "de": "sudbury-schulen", - "en": "sudbury school", - "fr": "ecole sudbury", - "he": "דגם סדברי", - "hu": "sudburyi iskolamodell", - "id": "sekolah sudbury", - "ja": "サドベリー・スクール", - "nb": "demokratisk frilekskole", - "nl": "sudbury-onderwijs", - "sv": "sudburyskola", - "uk": "садберійська школа", - "zh": "薩德伯里學校" - }, - "waldorf": { - "ar": "مدرسة فالدورف", - "bg": "валдорфско училище", - "ca": "pedagogia waldorf", - "cs": "waldorfská pedagogika", - "da": "rudolf steiner-skole", - "de": "waldorfpädagogik", - "el": "σχολεία waldorf", - "en": "waldorf education", - "es": "pedagogía waldorf", - "et": "waldorfi pedagoogika", - "fi": "steinerkoulu", - "fr": "pédagogie steiner-waldorf", - "he": "חינוך ולדורף", - "hr": "waldorfska pedagogija", - "hu": "waldorf-pedagógia", - "it": "pedagogia waldorf", - "ja": "シュタイナー教育", - "ko": "발도르프 교육", - "lt": "valdorfo ugdymas", - "lv": "valdorfpedagoģija", - "nb": "steinerskoler", - "nl": "vrijeschoolonderwijs", - "pl": "pedagogika waldorfska", - "pt": "pedagogia waldorf", - "ro": "pedagogie waldorf", - "ru": "вальдорфская педагогика", - "sk": "waldorfská pedagogika", - "sl": "waldorfska šola", - "sr": "valdorf škola", - "sv": "waldorfpedagogik", - "tr": "waldorf eğitim", - "uk": "вальдорфська педагогіка", - "vi": "giáo dục waldorf", - "zh": "华德福教育", - "zh-hk": "華德福教育", - "zh-tw": "華德福教育" - } - }, - "pilgrimage": { - "yes": { - "ca": "ruta de peregrinatge", - "cs": "poutní cesta", - "de": "pilgerweg", - "en": "pilgrims' way", - "es": "ruta de peregrinación", - "fi": "pyhiivaellusreitti", - "fr": "chemin de pèlerinage", - "hu": "zarándokútvonal", - "it": "via di pellegrinaggio", - "ja": "巡礼路", - "ko": "순례길", - "lv": "svētceļotāju ceļš", - "nb": "pilegrimsvei", - "nl": "pelgrimsroute", - "pt": "caminho de peregrinos", - "ro": "pelerinaj", - "ru": "паломнические маршруты", - "sv": "pilgrimsled" - } - }, - "piste": { - "": { - "bg": "шанца", - "ca": "pista d'esquí negra", - "cs": "černá sjezdovka", - "da": "skiløjpe", - "de": "schwarze piste", - "en": "black run", - "en-us": "mogul course", - "es": "pista d'esquí alpí", - "et": "suusahüppemägi", - "fi": "latu", - "fr": "piste noire (allemagne, autriche, suisse)", - "hu": "síugró sánc", - "it": "trampolino", - "ja": "ロイペ", - "ko": "스키점프대", - "lv": "tramplīnlēkšanas kalns", - "nb": "hoppbakke", - "nl": "zwarte piste", - "pl": "ośla łączka", - "ru": "лыжный трамплин", - "sl": "smučarska skakalnica", - "sv": "skidspår", - "uk": "трамплін" - } - }, - "place": { - "archipelago": { - "ar": "أرخبيل", - "bg": "архипелаг", - "ca": "arxipèlag", - "cs": "souostroví", - "da": "øgruppe", - "de": "archipel", - "el": "σύμπλεγμα νησιών", - "en": "archipelago", - "es": "archipiélago", - "et": "saarestik", - "fi": "saaristo", - "fr": "archipel", - "he": "ארכיפלג", - "hi": "द्वीपसमूह", - "hr": "arhipelag", - "hu": "szigetvilág", - "id": "kepulauan", - "is": "eyjaklasi", - "it": "arcipelago", - "ja": "諸島", - "ko": "군도", - "lt": "salynas", - "lv": "arhipelāgs", - "nb": "arkipel", - "nl": "archipel", - "pl": "archipelag", - "pt": "arquipélago", - "ro": "arhipelag", - "ru": "архипелаг", - "sk": "súostrovie", - "sl": "otočje", - "sr": "архипелаг", - "sv": "arkipelag", - "th": "กลุ่มเกาะ", - "tr": "takımada", - "uk": "архіпелаг", - "vi": "quần đảo", - "zh": "群島", - "zh-cn": "群岛" - }, - "borough": { - "ar": "أقسام إدارية", - "bg": "район", - "el": "δημοτικό διαμέρισμα", - "en": "borough", - "he": "שכונה", - "ja": "バラ", - "ko": "자치구", - "pt": "burgo", - "ru": "боро", - "sr": "општина", - "uk": "боро", - "vi": "quận", - "zh": "自治市", - "zh-tw": "自治市鎮" - }, - "city": { - "ar": "مدينة كبيرة", - "bg": "град", - "ca": "ciutat", - "cs": "město", - "da": "by", - "de": "stadt", - "el": "πόλη", - "en": "city", - "es": "ciudad", - "et": "linn", - "fi": "kaupunki", - "fr": "ville", - "he": "עיר", - "hi": "शहर", - "hr": "grad", - "hu": "város", - "id": "kota", - "is": "borg", - "it": "città", - "ja": "都市", - "ko": "도시", - "lt": "miestas", - "lv": "lielpilsēta", - "nb": "by", - "nl": "stad", - "pl": "miasto", - "pt": "cidade", - "ro": "oraș", - "ru": "город", - "sk": "mesto", - "sl": "mesto", - "sr": "град", - "sv": "stad", - "th": "นคร", - "tr": "şehir", - "uk": "місто", - "vi": "thành phố", - "zh": "城市" - }, - "city_block": { - "ar": "المربعات السكنية", - "ca": "illa urbana", - "cs": "městský blok", - "da": "karré", - "de": "häuserblock", - "el": "οικοδομικό τετράγωνο", - "en": "city block", - "es": "manzana urbana", - "et": "kvartal", - "fi": "kortteli", - "fr": "îlot urbain", - "he": "מבנן", - "hu": "háztömb", - "id": "blok kota", - "it": "isolato", - "ja": "街区", - "ko": "가곽", - "nb": "kvartal", - "nl": "huizenblok", - "pl": "kwartał", - "pt": "quarteirão", - "ru": "квартал", - "sr": "градски блок", - "sv": "kvarter", - "tr": "ada (emlak)", - "uk": "квартал", - "vi": "ô phố", - "zh": "街區" - }, - "continent": { - "ar": "قارة", - "bg": "континент", - "cs": "kontinent", - "da": "verdensdel", - "de": "kontinent", - "el": "ήπειρος", - "en": "continent", - "es": "continente", - "et": "maailmajagu", - "fi": "maanosa", - "he": "יבשת", - "hi": "महाद्वीप", - "hr": "kontinent", - "hu": "kontinens", - "id": "benua", - "is": "heimsálfa", - "it": "continente", - "ja": "大陸", - "ko": "대륙", - "lt": "žemynas", - "lv": "kontinents", - "nb": "kontinent", - "nl": "werelddeel", - "pl": "kontynent", - "pt": "continente", - "ru": "континент", - "sk": "kontinent", - "sl": "celina", - "sr": "континент", - "sv": "världsdel", - "th": "ทวีป", - "tr": "kıta", - "uk": "материк", - "vi": "châu lục", - "zh": "大洲" - }, - "country": { - "ar": "دولة", - "bg": "страна", - "ca": "país", - "cs": "státní útvar", - "da": "land", - "de": "land", - "el": "χώρα", - "en": "country", - "es": "país", - "et": "maa", - "fi": "maa", - "fr": "pays", - "he": "ארץ", - "hi": "देश", - "hr": "zemlja (država)", - "hu": "ország", - "id": "negara", - "is": "land", - "it": "paese", - "ja": "国", - "ko": "나라", - "lt": "šalis", - "lv": "zeme", - "nb": "land", - "nl": "land", - "pl": "kraj", - "pt": "país", - "ro": "țară", - "ru": "страна", - "sk": "krajina", - "sl": "država", - "sr": "земља", - "sv": "land", - "th": "ประเทศ", - "tr": "ülke", - "uk": "країна", - "vi": "quốc gia", - "zh": "國家", - "zh-cn": "国家" - }, - "county": { - "ar": "محافظة", - "bg": "графство", - "ca": "comtat", - "cs": "hrabství", - "el": "κομητεία", - "en": "county", - "es": "condado", - "et": "maakond", - "fi": "piirikunta", - "fr": "comté", - "he": "נפה", - "hi": "काउण्टी", - "hr": "grofovija", - "hu": "megye", - "is": "sýsla", - "it": "contea", - "ja": "カウンティ", - "ko": "카운티", - "lv": "grāfiste", - "nb": "fylke", - "pl": "hrabstwo", - "pt": "condado", - "ro": "comitat", - "ru": "графство", - "sr": "жупанија", - "th": "เทศมณฑล", - "tr": "kontluk", - "uk": "графство", - "vi": "hạt", - "zh": "县/郡/伯国/伯爵领", - "zh-tw": "縣/郡/伯國/伯爵領" - }, - "district": { - "ar": "مديرية", - "bg": "район", - "ca": "districte", - "cs": "distrikt", - "da": "distrikt", - "de": "distrikt", - "el": "περιοχή", - "en": "district", - "es": "distrito", - "et": "ringkond", - "fi": "hallintoalue", - "he": "מחוז", - "hi": "ज़िला", - "hr": "kotar", - "hu": "járás", - "id": "distrik", - "is": "hérað", - "it": "distretto", - "ja": "ディストリクト", - "ko": "구", - "lv": "distrikts", - "nb": "distrikt", - "pl": "dystrykt", - "pt": "distrito", - "ru": "дистрикт", - "sk": "dištrikt", - "sl": "okraj", - "sr": "дистрикт", - "sv": "distrikt", - "th": "เขตการปกครอง", - "tr": "bölge", - "uk": "дистрикт", - "vi": "quận", - "zh": "區域", - "zh-cn": "区", - "zh-hk": "區" - }, - "farm": { - "ar": "مزرعة", - "bg": "ферма", - "ca": "granja", - "cs": "statek", - "da": "gård", - "de": "bauernhof", - "el": "αγρόκτημα", - "en": "farm", - "es": "granja", - "et": "talu", - "fi": "maatila", - "fr": "ferme", - "he": "חווה חקלאית", - "hi": "खेत", - "hr": "poljoprivredno gospodarstvo", - "id": "lahan usaha tani", - "is": "sveitabær", - "it": "fattoria", - "ja": "農場", - "ko": "농장", - "lv": "zemnieku saimniecība", - "nb": "gård", - "nl": "boerenbedrijf", - "pl": "farma", - "pt": "quinta", - "pt-br": "fazenda", - "ro": "fermă", - "ru": "ферма", - "sk": "farma", - "sl": "kmetija", - "sr": "фарма", - "sv": "gård", - "th": "ฟาร์ม", - "tr": "çiftlik", - "uk": "ферма", - "vi": "trang trại", - "zh": "农场", - "zh-hk": "農場", - "zh-tw": "農場" - }, - "hamlet": { - "ar": "نجع", - "bg": "махала", - "ca": "vilatge", - "cs": "osada", - "da": "bygd", - "de": "weiler", - "el": "χωριό", - "en": "hamlet", - "es": "aldea", - "et": "väike küla", - "fi": "pieni kylä", - "fr": "hameau", - "he": "יישוב כפרי", - "hi": "गांव", - "hr": "zaselak", - "hu": "falucska", - "id": "kampung", - "it": "borgata", - "ja": "ハムレット", - "lt": "kaimelis", - "nb": "grend", - "nl": "gehucht", - "pl": "osada", - "pt": "aldeota", - "pt-br": "comunidade rural", - "ro": "cătun", - "ru": "деревня", - "sk": "osada", - "sl": "zaselek", - "sr": "заселак", - "sv": "liten by", - "th": "หมู่บ้านขนาดเล็ก", - "tr": "mezra", - "uk": "присілок", - "vi": "xóm", - "zh": "村镇", - "zh-hk": "村鎮" - }, - "island": { - "ar": "جزيرة", - "bg": "остров", - "ca": "illa", - "cs": "ostrov", - "da": "ø", - "de": "insel", - "el": "νησί", - "en": "island", - "es": "isla", - "et": "saar", - "fi": "saari", - "fr": "île", - "he": "אי", - "hi": "द्वीप", - "hr": "otok", - "hu": "sziget", - "id": "pulau", - "is": "eyja", - "it": "isola", - "ja": "島", - "ko": "섬", - "lt": "sala", - "lv": "sala", - "nb": "øy", - "nl": "eiland", - "pl": "wyspa", - "pt": "ilha", - "ro": "insulă", - "ru": "остров", - "sk": "ostrov", - "sl": "otok", - "sr": "острво", - "sv": "ö", - "th": "เกาะ", - "tr": "ada", - "uk": "острів", - "vi": "đảo", - "zh": "島嶼", - "zh-cn": "岛屿" - }, - "islet": { - "ar": "جزيرة صغيرة", - "ca": "illot", - "cs": "ostrůvek", - "da": "holm", - "de": "eiland", - "el": "νησίδα", - "en": "islet", - "es": "islote", - "et": "laid", - "fi": "luoto", - "fr": "îlot", - "he": "איון", - "hi": "द्वीपिका", - "hr": "hrid", - "ja": "小島", - "ko": "소도서", - "lt": "salelė", - "nb": "holme", - "nl": "klein eiland", - "pl": "wysepka", - "pt": "ilhéu", - "ro": "insuliță", - "ru": "островок", - "sk": "ostrovček", - "sl": "otoček", - "sr": "хрид", - "sv": "holme", - "th": "เกาะเล็ก", - "tr": "adacık", - "uk": "острівець", - "vi": "đảo nhỏ", - "zh": "小島" - }, - "isolated_dwelling": { - "cs": "samota", - "de": "einzelsiedlung", - "en": "hermitage", - "fr": "ermitage", - "ja": "隠れ家", - "sk": "kopanica" - }, - "locality": { - "ar": "محلية", - "ca": "localitat", - "cs": "lokalita", - "da": "lokalitet", - "de": "ortschaft", - "el": "οικισμός", - "en": "locality", - "es": "localidad", - "et": "paikkond", - "fi": "asutus", - "fr": "localité", - "he": "נקודת יישוב", - "hr": "mjesna zajednica", - "hu": "helység", - "it": "località", - "ja": "地方", - "nb": "sted", - "nl": "bevolkte plaats", - "pl": "miejsce zamieszkiwania", - "pt": "localidade", - "ro": "localitate", - "ru": "обжитая местность", - "sl": "zaselek", - "sr": "насељено место", - "sv": "befolkad plats", - "tr": "mekân", - "uk": "місцеве поселення", - "zh": "聚居地" - }, - "municipality": { - "ar": "بلدية", - "bg": "муниципалитет", - "ca": "municipi", - "cs": "obec", - "da": "kommune", - "de": "gemeinde", - "el": "δήμος", - "en": "municipality", - "es": "municipio", - "et": "omavalitsusüksus", - "fi": "kunta", - "fr": "municipalité", - "he": "עירייה", - "hi": "नगरपालिका", - "hr": "općina", - "hu": "község", - "id": "munisipalitas", - "is": "sveitarfélag", - "it": "comune", - "ja": "基礎自治体", - "ko": "지방 자치체", - "lt": "savivaldybė", - "lv": "pašvaldība", - "nb": "kommune", - "nl": "gemeente", - "pl": "gmina", - "pt": "municipalidade", - "ro": "municipiu", - "ru": "муниципалитет", - "sk": "obec", - "sl": "občina", - "sr": "општина", - "sv": "kommun", - "th": "เทศบาล", - "tr": "belediye", - "uk": "муніципалітет", - "vi": "khu tự quản", - "zh": "市镇" - }, - "neighbourhood": { - "ar": "حي سكني", - "bg": "квартал", - "ca": "barri", - "cs": "čtvrť", - "da": "bykvarter", - "de": "ortsteil", - "el": "συνοικία", - "en": "neighborhood", - "en-ca": "neighbourhood", - "en-gb": "neighbourhood", - "es": "barrio", - "et": "asum", - "fi": "naapurusto", - "fr": "quartier", - "he": "שכונה", - "hi": "मुहल्ला", - "hr": "susjedstvo", - "hu": "negyed", - "id": "ketetanggaan", - "is": "hverfi", - "it": "quartiere", - "ja": "地区", - "ko": "동네", - "lt": "kaiminystė", - "lv": "apkaime", - "nb": "strøk", - "nl": "buurt of wijk", - "pl": "część miejscowości", - "pt": "bairro", - "ro": "cartier", - "ru": "нейборхуд", - "sk": "časť obce", - "sl": "soseska", - "sr": "суседство", - "sv": "grannskap", - "th": "ย่าน", - "tr": "mahalle", - "uk": "район міста", - "vi": "khu phố", - "zh": "近鄰社區", - "zh-cn": "近邻社区" - }, - "plot": { - "ca": "parcel·la", - "cs": "pozemek", - "da": "matrikel", - "de": "flurstück", - "de-at": "grundstück", - "de-ch": "grundstück", - "en": "land lot", - "es": "parcela", - "et": "ehituskrunt", - "fi": "tontti", - "fr": "parcelle", - "he": "חלקת קרקע", - "hu": "telek", - "it": "particella catastale", - "ja": "土地区画", - "ko": "대지", - "nb": "grunneiendom", - "nl": "perceel", - "pl": "działka ewidencyjna", - "pt": "lote", - "ro": "parcelă", - "ru": "земельный участок", - "sk": "parcela", - "sl": "parcela", - "sr": "земљишни посед", - "sv": "tomt", - "tr": "parsel", - "uk": "земельна ділянка", - "zh": "地號", - "zh-tw": "地段" - }, - "quarter": { - "ar": "منطقة حضرية", - "bg": "квартал", - "ca": "barri administratiu", - "cs": "část města", - "da": "bydel", - "de": "stadtteil", - "el": "διαμέρισμα", - "en": "quarter", - "et": "linnaosa", - "fi": "kaupunginosa", - "fr": "quartier", - "he": "רובע", - "hr": "kvart", - "hu": "településrész", - "it": "quartiere", - "ja": "クォーター", - "lt": "kvartalas", - "nb": "bydel", - "nl": "woonwijk", - "pl": "część miasta", - "pt": "zona de cidade", - "pt-br": "distrito municipal", - "ro": "cartier", - "ru": "квартал", - "sk": "mestská časť", - "sl": "četrt", - "sr": "четврт", - "sv": "stadsdel", - "tr": "semt", - "uk": "квартал", - "zh": "市区" - }, - "square": { - "ar": "ميدان", - "bg": "площад", - "ca": "plaça", - "cs": "náměstí", - "da": "torv", - "de": "platz", - "el": "πλατεία", - "en": "square", - "en-ca": "town square", - "es": "plaza", - "et": "väljak", - "fi": "tori", - "fr": "place", - "he": "כיכר עירונית", - "hi": "चौक", - "hr": "trg", - "hu": "tér", - "id": "alun-alun", - "is": "torg", - "it": "piazza", - "ja": "広場", - "ko": "광장", - "lt": "aikštė", - "lv": "laukums", - "nb": "plass", - "nl": "plein", - "pl": "plac", - "pt": "praça", - "ro": "piață urbană", - "ru": "городская площадь", - "sk": "námestie", - "sl": "trg", - "sr": "трг", - "sv": "torg", - "tr": "kent meydanı", - "uk": "майдан", - "vi": "quảng trường", - "zh": "廣場", - "zh-cn": "广场" - }, - "state": { - "ar": "ولاية اتحادية", - "bg": "щат", - "ca": "estat federat", - "cs": "federovaný stát", - "da": "delstat", - "de": "gliedstaat", - "el": "ομόσπονδη πολιτεία", - "en": "federated state", - "es": "estado federado", - "et": "osariik", - "fi": "osavaltio", - "fr": "état fédéré", - "he": "מדינת משנה", - "hi": "संघीय राज्य", - "hu": "tagállam", - "id": "negara bagian", - "it": "stato federato", - "ja": "連邦構成体", - "ko": "연방주", - "lt": "valstija", - "lv": "federāla valsts", - "nb": "delstat", - "nl": "deelstaat", - "pl": "stan", - "pt": "ente federativo", - "pt-br": "estado federado", - "ro": "stat federat", - "ru": "государство в составе федеративного союза", - "sl": "zvezna država", - "sr": "савезна држава", - "sv": "delstat", - "tr": "federal devlet", - "uk": "штат", - "vi": "bang", - "zh": "联邦制下的州", - "zh-hk": "聯邦制國家成員", - "zh-tw": "聯邦制國家成員" - }, - "subdistrict": { - "ar": "تعلقة وتحصيل", - "en": "tehsil", - "hi": "तहसील", - "ja": "テシル", - "nb": "taluk", - "pl": "taluk", - "ru": "техсил", - "sr": "mandal", - "uk": "техсіл", - "zh": "乡", - "zh-cn": "次区 (南亚)", - "zh-hk": "鄉" - }, - "suburb": { - "ar": "ضاحية", - "bg": "предградие", - "ca": "suburbi", - "cs": "předměstí", - "da": "forstad", - "de": "vorort", - "el": "προάστιο", - "en": "suburb", - "es": "suburbio", - "et": "agul", - "fi": "esikaupunki", - "fr": "banlieue", - "he": "פרוור", - "hi": "उपनगर", - "hr": "predgrađe", - "hu": "külváros", - "is": "úthverfi", - "it": "sobborgo", - "ja": "郊外", - "ko": "교외", - "lt": "priemiestis", - "lv": "priekšpilsēta", - "nb": "forstad", - "nl": "buitenwijk", - "pl": "przedmieście", - "pt": "subúrbio", - "ro": "suburbie", - "ru": "пригород", - "sk": "predmestie", - "sl": "predmestje", - "sr": "предграђе", - "sv": "förort", - "th": "ชานเมือง", - "tr": "varoş", - "uk": "передмістя", - "vi": "ngoại ô", - "zh": "郊區", - "zh-cn": "郊区", - "zh-hk": "市郊" - }, - "town": { - "ar": "مدينة", - "bg": "малък град", - "ca": "vila", - "cs": "malé město", - "da": "mindre by", - "de": "kleinstadt", - "el": "κωμόπολη", - "en": "town", - "es": "villa", - "et": "linn", - "fi": "pikkukaupunki", - "fr": "petite ville", - "he": "עיירה", - "hr": "gradić", - "hu": "kisváros", - "id": "kota kecil", - "is": "bær", - "it": "cittadina", - "ja": "街", - "ko": "마을", - "lt": "mažas miestas", - "lv": "mazpilsēta", - "nb": "mindre by", - "pl": "miasteczko", - "pt": "vila", - "pt-br": "cidade pequena", - "ro": "orășel", - "ru": "малый город", - "sk": "mesto", - "sl": "mesto", - "sr": "варошица", - "sv": "småstad", - "th": "เมือง", - "tr": "kasaba", - "uk": "містечко", - "vi": "thị trấn", - "zh": "镇", - "zh-hk": "鎮" - }, - "township": { - "ar": "بلدة", - "en": "township", - "id": "kota praja", - "ja": "タウンシップ制", - "ru": "тауншип", - "sv": "kommun", - "th": "ตำบล", - "zh": "鎮區" - }, - "village": { - "ar": "قرية", - "bg": "село", - "ca": "poble", - "cs": "vesnice", - "da": "landsby", - "de": "dorf", - "el": "χωριό", - "en": "village", - "es": "pueblo", - "et": "küla", - "fi": "kylä", - "he": "כפר", - "hi": "गाँव", - "hr": "selo", - "hu": "falu", - "id": "desa", - "is": "þorp", - "it": "villaggio", - "ja": "村落", - "ko": "촌락", - "lt": "kaimas", - "lv": "ciems", - "nb": "landsby", - "nl": "dorp", - "pl": "wieś", - "pt": "aldeia", - "ro": "sat", - "ru": "село", - "sk": "dedina", - "sl": "vas", - "sr": "село", - "sv": "by", - "th": "หมู่บ้าน", - "tr": "köy", - "uk": "село", - "vi": "làng", - "zh": "村" - } - }, - "plant": { - "": { - "ar": "محطة طاقة تخزين بالبطاريات", - "bg": "хидрокинетична електроцентрала", - "ca": "central hidroelèctrica de passada", - "cs": "průtočná vodní elektrárna", - "da": "kulkraftværk", - "de": "laufwasserkraftwerk", - "de-ch": "wasserkraftwerk", - "el": "εργοστάσιο ηλεκτροπαραγωγής με καύση άνθρακα", - "en": "run-of-the-river power station", - "en-ca": "hydroelectric generating station", - "en-gb": "coal power station", - "es": "central hidroeléctrica de pasada", - "et": "hüdroelektrijaam", - "fi": "jokivoimalaitos", - "fr": "centrale hydroélectrique au fil de l'eau", - "he": "תחנת כוח פחמית", - "hi": "नाभिकीय ऊर्जा संयंत्र", - "hr": "plinska elektrana", - "hu": "széntüzelésű hőerőmű", - "id": "pembangkit listrik tenaga arus sungai", - "is": "vatnsaflsvirkjun", - "it": "centrale idroelettrica ad acqua fluente", - "ja": "流れ込み式水力発電所", - "ko": "수력 발전소", - "lt": "dujomis kūrenama elektrinė", - "lv": "ogļu elektrostacija", - "nb": "elvekraftverk", - "nl": "kolencentrale", - "pl": "elektrownia wodna przepływowa", - "pt": "central hidroelétrica a fio d'água", - "pt-br": "usina hidrelétrica a fio d'água", - "ro": "termocentrală pe cărbune", - "ru": "русловая гэс", - "sk": "uhoľná elektráreň", - "sl": "hidroelektrarna", - "sr": "термоелектрана на угаљ", - "sv": "strömkraftverk", - "th": "โรงไฟฟ้าพลังงานถ่านหิน", - "tr": "nehir tipi hidroelektrik santrali", - "uk": "руслова гідроелектростанція", - "vi": "nhà máy điện nguyên tử", - "zh": "川流式發電站", - "zh-cn": "煤炭发电厂", - "zh-hk": "煤炭發電廠" - } - }, - "playground": { - "activitypanel": { - "en": "activity panel", - "ru": "панель активности" - }, - "aerialrotator": { - "en": "aerial rotator" - }, - "balancebeam": { - "ar": "عارضة التوازن", - "bg": "греда", - "ca": "barra d'equilibris", - "cs": "kladina", - "da": "bom", - "de": "schwebebalken", - "en": "balance beam", - "es": "viga de equilibrio", - "fr": "poutre", - "he": "קורה", - "hu": "gerenda", - "id": "balok keseimbangan", - "it": "trave di equilibrio", - "ja": "平均台", - "ko": "평균대", - "nb": "bom", - "nl": "evenwichtsbalk", - "pl": "równoważnia", - "pt": "trave olímpica", - "ro": "bârnă", - "ru": "бревно", - "sl": "gred", - "sr": "греда", - "sv": "bom", - "tr": "denge aleti", - "uk": "колода", - "vi": "cầu thăng bằng", - "zh": "平衡木" - }, - "basketrotator": { - "en": "basket rotator" - }, - "basketswing": { - "en": "basket swing" - }, - "climbingframe": { - "ca": "barres de simi", - "cs": "prolézačka", - "de": "klettergerüst", - "en": "jungle gym", - "es": "barras de mono", - "fi": "kiipeilyteline", - "fr": "cage à poules", - "he": "מתקן שעשועים", - "ja": "ジャングルジム", - "ko": "정글 짐", - "nl": "klimrek", - "pl": "drabinki", - "pt": "trepa-trepa", - "ru": "рукоход", - "sv": "klätterställning", - "tr": "tırmanma merdiveni", - "zh": "立體格子鐵架" - }, - "climbingwall": { - "en": "climbing wall" - }, - "cushion": { - "de": "hüpfkissen", - "en": "bouncy cushion" - }, - "exercise": { - "ar": "ملعب خارجي", - "bg": "открита тренажорна зала", - "cs": "venkovní posilovna", - "da": "udendørs træningscenter", - "de": "bewegungsparcours", - "el": "υπαίθρια γυμναστήρια", - "en": "outdoor gym", - "es": "gimnasio al aire libre", - "fi": "ulkokuntoilulaitteet", - "fr": "équipement de fitness en extérieur", - "he": "חדר כושר חיצוני", - "hi": "बाहरी जिम", - "it": "palestra all'aperto", - "ja": "アウトドアジム", - "nl": "beweegtuin", - "pl": "siłownia zewnętrzna", - "pt": "academia ao ar livre", - "ru": "спортивная площадка", - "sv": "utegym", - "th": "ยิมออกแบบในแวดวงการเกี่ยวกับการเดินทาง", - "tr": "açık spor salonu", - "uk": "спортивний майданчик", - "vi": "sân tập" - }, - "funnel_ball": { - "en": "funnel ball", - "he": "משפך סל", - "vi": "bóng phễu" - }, - "hopscotch": { - "ar": "لعبة مربعات", - "ca": "xarranca", - "cs": "skákání panáka", - "da": "hinkerude", - "de": "hickelkasten", - "el": "κουτσό", - "en": "hopscotch", - "es": "rayuela", - "et": "keksumäng", - "fi": "ruutuhyppely", - "fr": "marelle", - "he": "קלאס", - "hi": "हॉप्सस्कॉच", - "hr": "školica", - "hu": "ugróiskola", - "id": "engklek", - "is": "parís (leikur)", - "it": "campana", - "ja": "ホップスコッチ", - "ko": "사방치기", - "nb": "hoppe paradis", - "nl": "hinkelen", - "pl": "gra w klasy", - "pt": "jogo da macaca", - "pt-br": "amarelinha", - "ro": "șotron", - "ru": "классики", - "sr": "школица", - "sv": "hoppa hage", - "tr": "seksek", - "uk": "класики", - "vi": "cò cò", - "zh": "跳房子", - "zh-hk": "跳飛機" - }, - "horizontal_bar": { - "ar": "عقلة", - "bg": "лост за набиране", - "ca": "barra fixa", - "cs": "hrazda", - "da": "reck", - "de": "klimmzugstange", - "en": "chin-up bar", - "es": "barra fija", - "fi": "rekkitanko", - "fr": "barre de traction", - "he": "מתח", - "hr": "preča", - "it": "sbarra", - "ja": "鉄棒", - "ko": "철봉", - "nb": "svingstang", - "nl": "rekstok", - "pl": "drążek", - "pt": "barra fixa", - "ro": "bară fixă", - "ru": "турник", - "sl": "drog", - "sv": "räck", - "tr": "barfiks", - "uk": "перекладина", - "vi": "xà đơn", - "zh": "单杠", - "zh-hk": "單杠" - }, - "map": { - "en": "playground map" - }, - "playhouse": { - "da": "legehus", - "de": "spielhaus", - "en": "wendy house", - "fi": "leikkimökki", - "fr": "maisonnette de jeu", - "it": "casetta per bambini", - "sv": "lekstuga", - "zh": "溫迪之家" - }, - "roundabout": { - "de": "sitzkarussell", - "en": "roundabout", - "fr": "tourniquet", - "id": "mangkok putar", - "it": "giostra", - "nl": "draaimolen", - "pt": "gira-gira (playground)", - "ru": "карусель", - "zh": "氹氹轉" - }, - "sandpit": { - "ar": "صندوق رملي", - "bg": "детски пясъчник", - "ca": "sorrera", - "cs": "pískoviště", - "da": "sandkasse", - "de": "sandkasten", - "en": "sandpit", - "et": "liivakast", - "fi": "hiekkalaatikko", - "fr": "bac à sable", - "he": "ארגז חול", - "hu": "homokozó", - "id": "bak pasir", - "is": "sandkassi", - "it": "sabbiera", - "ja": "砂場", - "ko": "사장", - "lv": "smilšu kaste", - "nb": "sandkasse", - "nl": "zandbak", - "pl": "piaskownica", - "pt": "caixa de areia", - "ru": "песочница", - "sk": "pieskovisko", - "sl": "peskovnik", - "sv": "leksandlåda", - "th": "กระบะทราย", - "tr": "kum havuzu", - "uk": "пісочниця", - "vi": "thùng cát", - "zh": "沙池" - }, - "seesaw": { - "ar": "سيسو", - "bg": "балансираща люлка", - "ca": "palanca", - "cs": "páková houpačka", - "de": "wippe", - "el": "τραμπάλα", - "en": "seesaw", - "es": "balancín", - "fi": "keinulauta", - "fr": "balançoire à bascule", - "he": "נדנדה מאוזנת", - "id": "jungkat-jungkit", - "it": "altalena", - "ja": "シーソー", - "ko": "시소", - "nb": "dumphuske", - "nl": "wip", - "pl": "huśtawka na desce", - "pt": "balancé", - "ru": "качели-балансир", - "sr": "клацкалица", - "sv": "gungbräda", - "th": "กระดานหก", - "tr": "tahterevalli", - "uk": "гойдалка-балансир", - "zh": "蹺蹺板" - }, - "sledding": { - "ca": "descens en trineu", - "cs": "sáňkování", - "de": "rodeln", - "el": "ελκηθροδρομία", - "en": "sledding", - "es": "descenso en trineo", - "et": "kelgutamine", - "fi": "kelkkailu", - "fr": "luge", - "ja": "そり競技", - "pl": "sanki", - "sv": "kälksport", - "zh": "雪撬" - }, - "slide": { - "ar": "منزلق لعب", - "bg": "пързалка", - "ca": "tobogan (joc)", - "cs": "skluzavka", - "da": "legetøjsrutsjebane", - "de": "rutsche", - "el": "τσουλήθρα", - "en": "playground slide", - "es": "tobogán", - "et": "liumägi", - "fi": "liukumäki", - "fr": "toboggan", - "he": "מגלשה", - "id": "perosotan", - "it": "scivolo", - "ja": "すべり台", - "ko": "미끄럼틀", - "nl": "glijbaan", - "pl": "zjeżdżalnia", - "pt": "escorregador", - "ro": "tobogan", - "ru": "детская горка", - "sr": "тобоган", - "sv": "rutschkana", - "tr": "kaydırak", - "zh": "滑梯" - }, - "splash_pad": { - "en": "splash pad", - "ru": "сухой фонтан" - }, - "springy": { - "ca": "balança de molles", - "cs": "pružina", - "en": "spring rider", - "es": "muelle balancín", - "fr": "jeu sur ressort", - "ja": "スプリング遊具", - "nl": "veertoestel", - "pl": "bujak sprężynowy", - "ru": "качалка на пружине", - "zh": "彈簧椅" - }, - "swing": { - "ar": "أرجوحة", - "bg": "люлка", - "ca": "gronxador", - "cs": "visutá houpačka", - "da": "gynge", - "de": "schaukel", - "en": "swing", - "es": "columpio", - "et": "kiik", - "fi": "keinu", - "fr": "balançoire", - "he": "נדנדה תלויה", - "hu": "hinta", - "id": "ayunan", - "it": "altalena", - "ja": "ブランコ", - "ko": "그네", - "nb": "huske", - "nl": "schommel", - "pl": "huśtawka wahadłowa", - "pt": "balanço", - "ru": "качели", - "sr": "љуљашка", - "sv": "gunga", - "tr": "salıncak", - "uk": "гойдалка", - "zh": "秋千", - "zh-hk": "鞦韆", - "zh-tw": "鞦韆" - }, - "teenshelter": { - "en": "teenshelter" - }, - "tetherball": { - "en": "tetherball", - "fi": "salkopallo", - "fr": "spiroballe", - "he": "טדרבול", - "nb": "smashball", - "pt": "espirobol", - "zh": "梨球" - }, - "trampoline": { - "ar": "منطة", - "bg": "батут", - "ca": "llit elàstic", - "cs": "trampolína", - "da": "trampolin", - "de": "trampolin", - "en": "trampoline", - "es": "cama elástica", - "et": "batuudi", - "fi": "trampoliini", - "he": "טרמפולינה", - "hr": "trampolin", - "id": "trampolin", - "it": "trampolino", - "ja": "トランポリン", - "ko": "트램펄린", - "lt": "batutas", - "pl": "batut", - "pt": "trampolim", - "ru": "батут", - "sr": "трамполина", - "sv": "studsmatta", - "th": "แทรมโพลีน", - "tr": "trambolin", - "uk": "батут", - "vi": "giàn nhún", - "zh": "蹦床", - "zh-hk": "彈牀", - "zh-tw": "彈翻床" - }, - "water": { - "en": "water play equipment" - }, - "youth_bench": { - "en": "youth bench" - }, - "zipwire": { - "en": "zipwire" - } - }, - "political_division": { - "canton": { - "ar": "كانتون", - "bg": "кантон", - "ca": "cantó", - "cs": "kanton", - "de": "kanton", - "el": "καντόνι", - "en": "canton", - "es": "cantón", - "et": "kanton", - "he": "קנטון (חלוקה מנהלית)", - "hr": "kanton", - "id": "kanton", - "is": "kantóna", - "it": "cantone", - "ja": "カントン", - "ko": "칸톤", - "lt": "kantonas", - "nb": "kanton", - "nl": "kanton", - "pl": "kanton", - "pt": "cantão", - "ru": "кантон", - "sk": "kantón", - "sr": "кантон", - "sv": "kanton", - "th": "แคนทอน", - "tr": "kanton", - "uk": "кантон", - "vi": "tổng" - }, - "congressional_district": { - "ar": "دوائر الكونغرس الانتخابية", - "ca": "districte congressional dels estats units", - "de": "kongresswahlbezirk der vereinigten staaten", - "el": "περιφέρεια του κογκρέσου των ηπα", - "en": "united states congressional district", - "es": "distrito congresional de estados unidos", - "fi": "yhdysvaltain kongressivaalien vaalipiiri", - "fr": "circonscription congressionnelle des états-unis", - "it": "distretto congressuale degli stati uniti d'america", - "nl": "congresdistrict van de verenigde staten", - "pl": "okręg wyborczy do izby reprezentantów stanów zjednoczonych", - "pt": "distritos congressionais dos estados unidos", - "ru": "избирательный округ когресса сша", - "tr": "abd kongre seçim bölgesi", - "zh": "美國國會選區" - }, - "insular_council": { - "ca": "consell insular", - "en": "insular council", - "es": "consejo insular", - "fr": "conseil insulaire", - "ru": "островной совет" - }, - "linguistic_community": { - "ca": "comunitat de bèlgica", - "de": "föderale gemeinschaft in belgien", - "el": "κοινότητα του βελγίου", - "en": "community of belgium", - "es": "comunidad de bélgica", - "fr": "communauté de belgique", - "he": "קהילה בבלגיה", - "hr": "belgijske zajednice", - "it": "comunità del belgio", - "nl": "gemeenschap van belgië", - "ro": "comunitățile belgiei", - "ru": "сообщество бельгии", - "sv": "belgiens federala gemenskaper", - "uk": "бельгійська громада", - "zh": "比利时社群" - }, - "subregion": { - "ca": "subregió", - "en": "subregion", - "fr": "sous-région", - "nl": "subregio", - "ru": "подрегион" - }, - "ward": { - "ca": "subdivisió electoral", - "en": "ward", - "hi": "वॉर्ड (प्रशासनिक विभाग)", - "ja": "区", - "ko": "워드", - "nb": "valgkrets i storbritannia", - "pl": "obwód głosowania", - "pt": "ward (subdivisão eleitoral)", - "ru": "уорд", - "tr": "semt", - "vi": "phường", - "zh": "選區" - }, - "àmbit_funcional_territorial": { - "ca": "àmbit funcional territorial", - "en": "functional territorial area", - "es": "ámbito funcional territorial", - "fr": "domaine fonctionnel territorial" - } - }, - "post_box": { - "": { - "ar": "صندوق بريد عمودي", - "de": "säulenbriefkasten", - "en": "pillar box", - "ja": "ピラーボックス", - "ru": "стоячий почтовый ящик", - "zh": "郵筒" - } - }, - "power": { - "cable": { - "ar": "كابل قوى", - "bg": "силов кабел", - "ca": "cable elèctric", - "cs": "vodič", - "da": "elektrisk kabel", - "de": "elektrische leitung", - "en": "power cable", - "es": "cable eléctrico", - "et": "elektrikaabel", - "fr": "câble électrique", - "he": "כבל חשמל", - "it": "linea elettrica", - "ja": "電力ケーブル", - "nb": "elektrisk ledning", - "nl": "elektriciteitsleiding", - "pl": "przewód elektryczny", - "pt": "line-in", - "ro": "cablu electric", - "ru": "силовой кабель", - "sk": "vodič", - "sl": "napajalni vod", - "sv": "elektrisk ledning", - "uk": "кабель", - "zh": "電纜" - }, - "cable_distribution_cabinet": { - "en": "power box" - }, - "catenary_mast": { - "de": "oberleitungsmast", - "en": "catenary mast", - "pl": "słup trakcyjny" - }, - "compensator": { - "de": "statischer blindleistungskompensator", - "en": "static var compensator", - "et": "staatiline reaktiivvõimsuse kompensaator", - "fr": "compensateur statique d'énergie réactive", - "ja": "静止型無効電力補償装置", - "vi": "svc", - "zh": "靜止無功補償裝置" - }, - "converter": { - "ar": "محول تيار مستمر عالي الجهد", - "ca": "convertidor de potència", - "cs": "měnič", - "da": "omformer", - "de": "stromrichter", - "en": "electric power converter", - "es": "convertidor de potencia", - "fi": "muuttaja", - "fr": "convertisseur de puissance puissance", - "id": "pengonversi tenaga listrik", - "it": "convertitore di potenza elettrica", - "nb": "omformer", - "nl": "omvormer", - "sl": "pretvornik električne energije", - "sv": "strömriktare", - "zh": "高壓直流轉換器" - }, - "generator": { - "ar": "مولد كهربائي", - "bg": "електрически генератор", - "ca": "generador elèctric", - "cs": "elektrický generátor", - "da": "elektrisk generator", - "de": "elektrischer generator", - "el": "γεννήτρια", - "en": "electric generator", - "es": "generador eléctrico", - "et": "elektrigeneraator", - "fi": "generaattori", - "fr": "générateur électrique", - "he": "גנרטור חשמלי", - "hi": "विद्युत जनित्र", - "hr": "električni generator", - "hu": "generátor", - "id": "generator listrik", - "is": "rafall", - "it": "generatore elettrico", - "ja": "発電機", - "ko": "발전기", - "lt": "elektros generatorius", - "lv": "elektroģenerators", - "nb": "elektrisk generator", - "nl": "elektrische generator", - "pl": "prądnica", - "pt": "gerador elétrico", - "ro": "generator electric", - "ru": "электрический генератор", - "sk": "generátor elektrického napätia", - "sl": "električni generator", - "sr": "електрични генератор", - "sv": "generator", - "th": "เครื่องกำเนิดไฟฟ้า", - "tr": "elektrik üreteci", - "uk": "електричний генератор", - "vi": "máy phát điện", - "zh": "发电机", - "zh-hk": "發電機", - "zh-tw": "發電機" - }, - "heliostat": { - "bg": "хелиостат", - "ca": "heliòstat", - "en": "heliostat", - "es": "heliostato", - "et": "heliostaat", - "fi": "heliostaatti", - "fr": "héliostat", - "he": "הליוסטט", - "it": "eliostato", - "ja": "ヘリオスタット", - "lv": "heliostats", - "nb": "solspeil", - "ru": "гелиостат", - "uk": "геліостат", - "zh": "定日鏡", - "zh-cn": "定日镜" - }, - "insulator": { - "ar": "عازل", - "bg": "изолатор", - "ca": "aïllant elèctric", - "cs": "izolátor", - "da": "elektrisk isolator", - "de": "nichtleiter", - "el": "μονωτής", - "en": "insulator", - "es": "aislante", - "et": "isolaator", - "fi": "sähköneriste", - "fr": "isolateur", - "he": "בידוד חשמלי", - "hi": "विद्युतरोधी", - "hr": "izolator", - "hu": "szigetelő", - "id": "insulator listrik", - "is": "einangrari", - "it": "isolatore", - "ja": "絶縁体", - "ko": "절연체", - "lt": "izoliatorius", - "lv": "elektriskais izolators", - "nb": "isolator", - "nl": "isolator", - "pl": "izolator", - "pt": "isolante elétrico", - "ro": "izolator", - "ru": "электроизолятор", - "sk": "izolácia (elektrotechnika)", - "sl": "izolator", - "sr": "електрични изолатор", - "sv": "isolator", - "th": "ฉนวนไฟฟ้า", - "tr": "yalıtkan", - "uk": "електроізолятор", - "vi": "chất cách điện", - "zh": "絕緣體", - "zh-cn": "绝缘体" - }, - "line": { - "ar": "خط جهد عالي", - "bg": "електрически далекопровод", - "ca": "línia elèctrica aèria", - "cs": "nadzemní elektrické vedení", - "da": "luftledning", - "de": "freileitung", - "en": "overhead power line", - "es": "línea eléctrica aérea", - "fi": "sähkölinja", - "fr": "ligne électrique aérienne", - "he": "קו חשמל עילי", - "hi": "शिरोपरि लाइन", - "hr": "dalekovod", - "hu": "légvezeték", - "id": "saluran udara tegangan ekstra tinggi", - "it": "elettrodotto", - "ja": "架空線", - "ko": "송전선", - "nl": "bovengrondse elektriciteitsleiding", - "pl": "linia elektroenergetyczna napowietrzna", - "ro": "linie electroenergetică aeriană", - "ru": "воздушная линия электропередач", - "sl": "daljnovod", - "sv": "ellinje", - "tr": "enerji nakil hattı", - "uk": "повітряна лінія електропередачі", - "zh": "架空线" - }, - "minor_line": { - "en": "minor overhead power line" - }, - "plant": { - "ar": "محطة طاقة", - "bg": "електрическа централа", - "ca": "central elèctrica", - "cs": "elektrárna", - "da": "kraftværk", - "de": "kraftwerk", - "el": "σταθμός παραγωγής ηλεκτρικής ενέργειας", - "en": "power station", - "en-ca": "generating station", - "es": "central eléctrica", - "et": "elektrijaam", - "fi": "voimalaitos", - "fr": "centrale électrique", - "he": "תחנת כוח", - "hi": "विद्युत् केन्द्र", - "hr": "elektrana", - "hu": "erőmű", - "id": "pembangkit listrik", - "is": "virkjun", - "it": "centrale elettrica", - "ja": "発電所", - "ko": "발전소", - "lt": "jėgainė", - "lv": "elektrostacija", - "nb": "kraftverk", - "nl": "elektriciteitscentrale", - "pl": "elektrownia", - "pt": "central eléctrica", - "pt-br": "usina", - "ro": "centrală electrică", - "ru": "электростанция", - "sk": "elektráreň", - "sl": "elektrarna", - "sr": "електрана", - "sv": "kraftverk", - "th": "โรงไฟฟ้า", - "tr": "elektrik santrali", - "uk": "електростанція", - "vi": "nhà máy điện", - "zh": "發電廠", - "zh-cn": "发电厂" - }, - "pole": { - "de": "leitungsmast", - "en": "utility pole", - "es": "poste", - "fr": "poteau", - "he": "עמוד חשמל", - "hi": "उपयोगिता स्तम्भ", - "id": "tiang utilitas", - "is": "símastaur", - "ja": "電柱", - "ko": "전봇대", - "nb": "stolpe", - "nl": "paal", - "pt": "poste", - "tr": "elektrik direği", - "zh": "电线杆", - "zh-hk": "電線杆" - }, - "substation": { - "ar": "محطة كهرباء ثانوية", - "bg": "електрическа подстанция", - "ca": "subestació elèctrica", - "cs": "elektrická stanice", - "da": "elektrisk understation", - "de": "umspann- oder schaltanlage", - "en": "electrical substation", - "es": "subestación eléctrica", - "et": "alajaam", - "fi": "sähköasema", - "fr": "poste électrique", - "he": "תחנת משנה", - "hi": "विद्युत उपकेंद्र", - "hu": "elektromos alállomás", - "id": "gardu listrik", - "it": "sottostazione elettrica", - "ja": "変電所", - "ko": "변전소", - "lv": "elektriskā apakšstacija", - "nb": "transformatorstasjon", - "nl": "onderstation", - "pl": "stacja elektroenergetyczna", - "pt": "subestação", - "ro": "stație electrică", - "ru": "электрическая подстанция", - "sk": "elektrická stanica", - "sl": "transformatorska postaja", - "sr": "разводно постројење", - "sv": "ställverk", - "tr": "şalt sahası", - "uk": "електрична підстанція", - "zh": "變電所", - "zh-hk": "變電站" - }, - "switch": { - "ar": "مفتاح كهربائي", - "bg": "ключ", - "ca": "interruptor", - "cs": "spínač", - "da": "omskifter", - "de": "schalter", - "el": "διακόπτης", - "en": "electrical switch", - "es": "interruptor", - "et": "lüliti", - "fi": "kytkin", - "fr": "interrupteur", - "he": "מפסק", - "hi": "स्विच", - "hu": "kapcsoló", - "id": "sakelar", - "it": "interruttore", - "ja": "開閉器", - "ko": "개폐기", - "lt": "jungiklis", - "nb": "strømbryter", - "nl": "schakelaar", - "pl": "łącznik elektryczny", - "pt": "interruptor", - "ro": "comutator", - "ru": "ключ", - "sk": "spínač", - "sl": "električno stikalo", - "sr": "прекидач", - "sv": "strömbrytare", - "tr": "anahtar", - "uk": "роз’єднувач", - "vi": "công tắc", - "zh": "開關" - }, - "switchgear": { - "ar": "جهاز الفصل والوصل", - "bg": "електрическа разпределителна уредба", - "de": "schaltanlage", - "en": "switchgear", - "fr": "appareillage électrique", - "hi": "विद्युत स्विचगीयर", - "ja": "開閉装置", - "lt": "paskirstymo įrenginys", - "pl": "aparatura rozdzielcza", - "pt": "dispositivo de manobra", - "ru": "распределительное устройство", - "sl": "stikalna naprava", - "sv": "ställverk", - "th": "สวิตช์เกียร์", - "tr": "elektrik teçhizatı", - "uk": "розподільний пристрій", - "zh": "高壓開關" - }, - "terminal": { - "ar": "وصلة كهربائية", - "ca": "connector elèctric", - "cs": "svorka", - "da": "elektrisk terminal", - "de": "anschlusspunkt", - "en": "electrical terminal", - "es": "terminal", - "fr": "bornier", - "it": "morsetto", - "ja": "ターミナル", - "nl": "terminal", - "pl": "złączka elektryczna", - "ru": "клеммный контакт", - "sr": "терминал", - "sv": "elektrisk teminal", - "uk": "клема", - "zh": "端子", - "zh-cn": "quick disconnect terminal" - }, - "tower": { - "ar": "برج كهرباء", - "bg": "електрически стълб", - "ca": "torre d'alta tensió", - "cs": "sloup vysokého napětí", - "de": "hochspannungsmast", - "el": "πυλώνας ηλεκτρικού ρεύματος", - "en": "transmission tower", - "en-gb": "pylon", - "es": "torre de alta tensión", - "fr": "pylône électrique", - "he": "עמוד חשמל", - "hi": "संचरण स्तम्भ", - "hu": "adótorony", - "id": "menara transmisi", - "it": "traliccio", - "ja": "送電塔", - "ko": "송전탑", - "nl": "hoogspanningsmast", - "pl": "konstrukcje wsporcze", - "pt": "torre de transmissão", - "ro": "stâlp de linie electrică", - "ru": "опора линии электропередачи", - "sr": "стуб далековода", - "sv": "kraftledningstorn", - "tr": "elektrik iletim kulesi", - "uk": "опора повітряної лінії електропередач", - "zh": "輸電桿塔", - "zh-cn": "电塔" - } - }, - "prison_camp": { - "concentration_camp": { - "ar": "معسكر اعتقال", - "bg": "концентрационен лагер", - "ca": "camp de concentració", - "cs": "koncentrační tábor", - "da": "koncentrationslejr", - "de": "konzentrationslager", - "el": "στρατόπεδο συγκέντρωσης", - "en": "concentration camp", - "es": "campo de concentración", - "et": "koonduslaager", - "fi": "keskitysleiri", - "fr": "camp de concentration", - "he": "מחנה ריכוז", - "hr": "sabirni logor", - "hu": "koncentrációs tábor", - "id": "kamp konsentrasi", - "it": "campo di concentramento", - "ja": "強制収容所", - "ko": "강제 수용소", - "lt": "koncentracijos stovykla", - "lv": "koncentrācijas nometne", - "nb": "konsentrasjonsleir", - "nl": "concentratiekamp", - "pl": "obóz koncentracyjny", - "pt": "campo de concentração", - "ro": "lagăr de concentrare", - "ru": "концентрационный лагерь", - "sk": "koncentračný tábor", - "sl": "koncentracijsko taborišče", - "sr": "концентрациони логор", - "sv": "koncentrationsläger", - "th": "การกักกัน", - "tr": "toplama kampı", - "uk": "концентраційний табір", - "vi": "trại tập trung", - "zh": "集中营", - "zh-hk": "集中營", - "zh-tw": "集中營" - }, - "labor_camp": { - "ar": "معسكر أشغال", - "bg": "трудов лагер", - "ca": "camp de treball", - "cs": "pracovní tábor", - "da": "arbejdslejr", - "de": "arbeitslager", - "el": "στρατόπεδα καταναγκαστικής εργασίας", - "en": "labor camp", - "en-ca": "labour camp", - "es": "campo de trabajos forzados", - "fi": "työsiirtola", - "fr": "camp de travail", - "he": "מחנה עבודה", - "hr": "radni logor", - "hu": "munkatábor", - "id": "kamp buruh", - "it": "campo di lavoro forzato", - "ja": "労働収容所", - "nb": "arbeidsleir", - "nl": "werkkamp", - "pl": "obóz pracy", - "ro": "lagăr de muncă", - "ru": "трудовой лагерь", - "sl": "delovno taborišče", - "sv": "arbetsläger", - "uk": "трудовий табір", - "vi": "trại lao động", - "zh": "勞動營" - }, - "pow_camp": { - "ar": "معسكر أسرى الحرب", - "ca": "camp de presoners de guerra", - "cs": "tábor pro válečné zajatce", - "da": "krigsfangelejr", - "de": "kriegsgefangenenlager", - "el": "στρατόπεδο αιχμαλώτων πολέμου", - "en": "prisoner-of-war camp", - "es": "campo de prisioneros de guerra", - "et": "sõjavangilaager", - "fi": "sotavankileiri", - "fr": "camp de prisonniers de guerre", - "he": "מחנה שבויים", - "hu": "hadifogolytábor", - "id": "kamp tahanan perang", - "ja": "捕虜収容所", - "ko": "포로 수용소", - "nb": "krigsfangeleir", - "nl": "krijgsgevangenenkamp", - "pl": "obóz jeniecki", - "ro": "lagăr de prizonieri de război", - "ru": "лагерь для военнопленных", - "sl": "taborišče za vojne ujetnike", - "sv": "krigsfångeläger", - "tr": "savaş esiri kampı", - "uk": "табір військовополонених", - "zh": "戰俘營" - } - }, - "product": { - "enamel": { - "de": "emaillefabrik", - "en": "enamel factory", - "fr": "émaillerie", - "nl": "emailfabriek" - }, - "pickles": { - "ca": "salaó", - "cs": "nakládaná zelenina", - "da": "pickles", - "de": "sauergemüse", - "en": "pickle", - "es": "encurtido", - "fi": "pikkelssi", - "fr": "aliments en saumure", - "he": "מוחמץ", - "it": "sottaceto", - "ja": "漬物", - "ko": "절임", - "nl": "ingelegde groente", - "pl": "pikle", - "pt": "picles", - "ru": "соленье", - "tr": "turşu", - "uk": "соління", - "vi": "dưa muối", - "zh": "腌黄瓜" - }, - "soap": { - "de": "seifenfabrik", - "en": "soap factory", - "fi": "saippuanvalmistaja", - "fr": "savonnerie", - "nl": "zeepziederij" - } - }, - "proposed": { - "paper_road": { - "en": "paper road", - "es": "calle proyectada", - "id": "jalan kertas", - "ru": "фиктивная улица" - } - }, - "protect_class": { - "1": { - "ca": "iucn categoria ib: àrea silvestre", - "cs": "ib – divočina", - "de": "iucn-kategorie ib: wildnisgebiet", - "en": "iucn category ib: wilderness area", - "es": "categoría ib de la uicn: área silvestre", - "fr": "catégorie ib : zone de nature sauvage", - "id": "kategori iucn ib: kawasan belantara", - "it": "categoria iucn ib: area selvaggia", - "ja": "iucnカテゴリーib:原生自然地域", - "ko": "iucn 카테고리 ib: 원시야생지역", - "nb": "iucn-kategori ib: wilderness area", - "nl": "iucn categorie ib: wilderness area", - "pl": "kategoria iucn: obszar naturalny", - "ru": "категория мсоп ib: дикая местность", - "sv": "iucn-kategori ib: vildmarksområde" - }, - "1a": { - "ca": "iucn categoria ia: reserva natural", - "cs": "ia – přísná přírodní rezervace", - "de": "iucn-kategorie ia: strenges naturschutzgebiet/wildnisgebiet", - "en": "iucn category ia: strict nature reserve", - "es": "categoría ia de la uicn: reserva natural estricta", - "fr": "catégorie ia : réserve naturelle intégrale", - "id": "kategori iucn ia: cagar (suaka) alam", - "it": "categoria iucn ia: riserva naturale integrale", - "ja": "iucnカテゴリーia:厳正保護地域", - "ko": "iucn 카테고리 ia: 엄정자연보존지", - "nb": "iucn-kategori ia: strict nature reserve", - "nl": "iucn-categorie ia", - "pl": "kategoria iucn: ścisły rezerwat przyrody", - "ru": "категория мсоп ia: строгий природный резерват", - "sv": "iucn-kategori ia: strikt naturreservat" - }, - "1b": { - "ca": "iucn categoria ib: àrea silvestre", - "cs": "ib – divočina", - "de": "iucn-kategorie ib: wildnisgebiet", - "en": "iucn category ib: wilderness area", - "es": "categoría ib de la uicn: área silvestre", - "fr": "catégorie ib : zone de nature sauvage", - "id": "kategori iucn ib: kawasan belantara", - "it": "categoria iucn ib: area selvaggia", - "ja": "iucnカテゴリーib:原生自然地域", - "ko": "iucn 카테고리 ib: 원시야생지역", - "nb": "iucn-kategori ib: wilderness area", - "nl": "iucn categorie ib: wilderness area", - "pl": "kategoria iucn: obszar naturalny", - "ru": "категория мсоп ib: дикая местность", - "sv": "iucn-kategori ib: vildmarksområde" - }, - "2": { - "ca": "categoria ii de la uicn: parc nacional", - "cs": "ii – národní park", - "de": "iucn-kategorie ii: nationalpark", - "el": "δεπφ κατηγορία 2: εθνικό πάρκο", - "en": "iucn category ii: national park", - "es": "categoría ii de la uicn: parque nacional", - "et": "iucn-i kategooria ii: rahvuspark", - "fr": "catégorie ii : parc national", - "id": "kategori iucn ii: taman nasional", - "it": "categoria iucn ii: parco nazionale", - "ja": "iucnカテゴリーii:国立公園", - "ko": "iucn 카테고리 ii: 국립공원", - "nb": "iucn-kategori ii: nasjonalpark", - "nl": "iucn categorie ii: nationaal park", - "pl": "kategoria iucn: park narodowy", - "pt-br": "uicn categoria ii: parque nacional", - "ru": "категория мсоп ii: национальный парк", - "sv": "iucn-kategori ii: nationalpark", - "uk": "категорія мсоп — ii (національний парк)", - "zh": "iucn分类ii:国家公园", - "zh-hk": "iucn分類ii:國家公園" - }, - "3": { - "ca": "iucn categoria iii: monument natural", - "cs": "iii – přírodní památka", - "de": "iucn-kategorie iii: naturmonument oder naturerscheinung", - "en": "iucn category iii: natural monument or feature", - "es": "categoría iii de la uicn: monumento o característica natural", - "fr": "catégorie iii : monument ou élément naturel", - "id": "kategori iucn iii: monumen alami", - "it": "categoria iucn iii: monumento naturale", - "ja": "iucnカテゴリーiii:天然記念物", - "ko": "iucn 카테고리 iii: 자연기념물이나 특징", - "nb": "iucn-kategori iii: natural monument or feature", - "nl": "iucn categorie iii: natuurlijk element of monument", - "pl": "kategoria iucn: pomnik przyrody", - "ru": "категория мсоп iii: памятник природы", - "sv": "iucn-kategori iii: naturmonument", - "uk": "категорія мсоп iii: пам'ятник природи" - }, - "4": { - "bg": "категория iv на iucn: защитена местност", - "ca": "iucn categoria iv:àrea d'espècies i hàbitats", - "cs": "iv – místo výskytu druhu", - "da": "naturschutzgebiet", - "de": "iucn-kategorie iv: biotop-/artenschutzgebiet mit management", - "de-ch": "naturschutzgebiet", - "en": "iucn category iv: habitat/species management area", - "en-ca": "naturschutzgebiet", - "en-gb": "naturschutzgebiet", - "es": "categoría iv de la uicn: área de gestión de hábitat / especies", - "fr": "catégorie iv : aire de gestion des habitats ou des espèces", - "he": "קטגוריה iv:איזור ניהול למינים", - "id": "kategori iucn iv: kawasan pengelolaan habitat/spesies", - "it": "categoria iucn iv: area di conservazione di habitat/specie", - "ja": "iucnカテゴリーiv:種と生息地管理地域", - "ko": "iucn 카테고리 iv: 종 및 서식지 관리지역", - "nb": "iucn-kategori iv: habitat/species management area", - "nl": "iucn categorie iv: habitat", - "pl": "kategoria iucn: obszar ochrony siedliskowej/gatunkowej", - "ru": "категория мсоп iv: заказник", - "sr": "природни резерват у немачкој", - "sv": "iucn-kategori iv: habitat/artskyddsområde", - "uk": "природний заповідник у німеччині", - "zh-tw": "iucn分類iv:生境/物種管理區" - }, - "5": { - "ca": "categoria v de la uicn: paisatges terrestres/marins protegits", - "cs": "v – chráněná krajinná oblast", - "de": "iucn-kategorie v: geschützte landschaft / geschützte meeresregion", - "el": "δεπφ κατηγορία 5: προστατευόμενο φυσικό περιβάλλον", - "en": "iucn category v: protected landscape/seascape", - "es": "categoría v de la uicn: paisaje protegido/paisaje marino", - "fr": "catégorie v : paysage terrestre ou marin protégé", - "hu": "iucn v. kategória: védett táj", - "id": "kategori iucn v: bentang alam/bentang laut yang dilindungi", - "it": "categoria iucn v: paesaggio terrestre/marino protetto", - "ja": "iucnカテゴリーv:保護された風景/海景", - "ko": "iucn 카테고리 v: 육상(해상) 경관 보호지역", - "nb": "iucn-kategori v: protected landscape/seascape", - "nl": "iucn categorie v: beschermd landschap", - "pl": "kategoria iucn: obszar chronionego krajobrazu/morza", - "ru": "категория мсоп v: охраняемые наземные и морские ландшафты", - "sv": "iucn-kategori v: skyddat landskap/havsområde", - "uk": "категорія мсоп v: наземні та морські ландшафти, що охороняються", - "zh": "iucn分类五:受保护的陆地/海洋景观" - }, - "6": { - "ca": "iucn categoria vi: àrea protegida amb ús de recursos naturals", - "cs": "vi – oblast ochrany přírodních zdrojů", - "de": "iucn-kategorie vi: schutzgebiet mit nachhaltiger nutzung der natürlichen ressourcen", - "en": "iucn category vi: protected area with sustainable use of natural resources", - "es": "categoría vi de la uicn: área protegida con uso sostenible de los recursos naturales", - "fr": "catégorie vi : aire protégée avec utilisation durable des ressources naturelles", - "id": "kategori iucn vi: kawasan lindung sumberdaya yang dikelola", - "it": "categoria iucn vi: area protetta per la gestione sostenibile delle risorse", - "ja": "iucnカテゴリーvi:自然資源の持続可能な利用による保護地域", - "ko": "iucn 카테고리 vi: 자연자원의 지속가능한 이용을 위한 보호지역", - "nb": "iucn-kategori vi: managed resource protected area", - "nl": "iucn categorie vi: beschermd landschap met duurzaam gebruik", - "pl": "kategoria iucn: obszar chroniony o użytkowanych zasobach", - "ru": "категория мсоп vi: охраняемые территории с управляемыми ресурсами", - "sv": "iucn-kategori vi: skyddat naturresursområde", - "zh": "iucn分类六:可持续使用自然资源保护区" - } - }, - "protection_title": { - "Bien de Interés Cultural": { - "ar": "معلم تراثي ذو أهمية ثقافية", - "ca": "bé d'interès cultural", - "el": "κληρονομιά πολιτιστικού ενδιαφέροντος", - "en": "bien de interés cultural", - "fr": "bien d'intérêt culturel", - "hi": "बिएन दे इंतेरेस कल्चरल", - "hu": "spanyolországi műemlék", - "ja": "スペイン文化遺産", - "pt": "bem de interesse cultural", - "ru": "объект культурного наследия испании", - "uk": "об'єкт культурної спадщини іспанії", - "zh": "西班牙文化財產" - }, - "Gesamtanlage": { - "en": "gesamtanlage" - }, - "National Wildlife Refuge": { - "ca": "refugi nacional de fauna", - "en": "national wildlife refuge", - "es": "refugio nacional de vida silvestre", - "fr": "refuge faunique national", - "ja": "野生生物保護区", - "ru": "национальный резерват дикой природы", - "zh": "國家野生保護區", - "zh-cn": "国家野生动物保护区系统" - }, - "National_Monument": { - "ca": "monument nacional (estats units)", - "da": "national monument", - "de": "national monuments in den vereinigten staaten", - "el": "εθνικό μνημείο των ηνωμένων πολιτειών", - "en": "national monument of the united states", - "en-ca": "national monument", - "en-gb": "national monument", - "es": "monumento nacional de los estados unidos de américa", - "fi": "kansallismonumentti", - "fr": "monument national", - "he": "מונומנט לאומי", - "is": "national monument", - "it": "monumento nazionale", - "ja": "アメリカ合衆国ナショナル・モニュメント", - "ko": "미국 국립기념물", - "nl": "nationaal monument in de verenigde staten", - "pl": "narodowy pomnik usa", - "pt": "monumento nacional", - "ru": "национальный памятник", - "tr": "abd ulusal anıtı", - "uk": "національна пам'ятка", - "vi": "tượng đài quốc gia", - "zh": "美國國家紀念區" - }, - "Naturschutzgebiet": { - "ca": "reserva natural a alemanya", - "cs": "chráněná krajinná oblast v německu", - "en": "naturschutzgebiet", - "fr": "réserve naturelle", - "ja": "ドイツの自然保護区", - "ru": "природный заповедник в германии", - "sr": "природни резерват у немачкој", - "sv": "naturreservat i tyskland", - "uk": "природний заповідник у німеччині" - }, - "Přírodní památka (PP)": { - "cs": "přírodní památka v česku", - "de": "naturmonument in der tschechischen republik", - "en": "natural monument in the czech republic", - "es": "monumento natural de la república checa", - "fr": "monument naturel en république tchèque", - "nl": "natuurmonument in tsjechië", - "pl": "pomnik przyrody w czechach", - "pt": "monumento natural na república tcheca", - "sk": "prírodná pamiatka v česku" - }, - "State_Forest": { - "ca": "bosc estatal", - "de": "staatsforst", - "en": "state forest", - "es": "bosque estatal", - "et": "riigimets", - "fi": "valtionmetsä", - "fr": "forêt d'état", - "it": "foresta di stato", - "ja": "州有林", - "lt": "valstybinis miškas", - "nb": "statsskog", - "sv": "statens skogar", - "tr": "devlet ormanı" - }, - "Wilderness Study Area": { - "en": "wilderness study area", - "es": "área de estudio de vida silvestre (estados unidos)", - "id": "wilayah kajian liar" - }, - "Wilderness_Area": { - "de": "totalreservat", - "en": "wilderness area", - "es": "área silvestre", - "fi": "erämaa-alue", - "fr": "réserve intégrale", - "hu": "tájvédelmi körzet", - "ja": "原野地域", - "nb": "ødemarksområde", - "nl": "wildernisgebied", - "ru": "заповедная территория", - "sl": "naravno območje", - "sv": "ödemarksområde", - "tr": "vahşi yaşam alanı", - "zh": "公共莽原区" - }, - "landskapsvernområde": { - "ca": "àrea paisatgística protegida", - "da": "landskapsvernområde", - "de": "landschaftsschutzgebiet", - "en": "protected landscape area", - "fr": "espace naturel protégé", - "lv": "aizsargājamo ainavu teritorija", - "nb": "landskapsvernområde", - "nl": "beschermd landschap", - "pt": "paisagem protegida", - "ru": "охраняемая природная зона" - } - }, - "public_transport": { - "": { - "en": "headway", - "fi": "vuoroväli", - "id": "waktu antara", - "ja": "運転時隔", - "pt": "intervalo entre viagens", - "zh": "車間時距", - "zh-tw": "班距" - }, - "platform": { - "ar": "محطة حافلات", - "bg": "спирка", - "ca": "parada de transport", - "cs": "zastávka", - "da": "stoppested", - "de": "haltestelle", - "en": "mdmutcd r7-4(9): bus stop (symbol) - no standing any time", - "en-ca": "bus stop", - "en-gb": "bus stop", - "es": "parada de transporte", - "et": "peatus", - "fi": "linja-autopysäkki", - "fr": "poteau d'arrêt", - "he": "תחנת תחבורה ציבורית", - "hr": "postaja", - "hu": "megállóhely", - "id": "pemberhentian transportasi publik", - "is": "strætóskýli", - "it": "fermata", - "ja": "停車場", - "ko": "대중교통 정류장", - "lt": "autobusų stotelė", - "lv": "pietura", - "nb": "stoppested", - "nl": "halte", - "pl": "przystanek", - "pt": "plataforma", - "pt-br": "parada de ônibus", - "ru": "остановка общественного транспорта", - "sk": "autobusová zastávka", - "sl": "postajališče javnega prometa", - "sr": "аутобуско стајалиште", - "sv": "kollektivtrafikhållplats", - "tr": "durak", - "uk": "зупинка транспортного засобу", - "vi": "điểm dừng xe buýt", - "zh": "車站", - "zh-cn": "车站", - "zh-tw": "公共運輸站" - }, - "station": { - "bg": "гара", - "ca": "estació", - "cs": "stanice", - "el": "σταθμός", - "en": "station", - "es": "estación", - "et": "jaam", - "fi": "asema", - "fr": "gare", - "he": "תחנה", - "hu": "állomás", - "id": "stasiun", - "it": "stazione", - "ja": "駅", - "ko": "정거장", - "lt": "stotis", - "nb": "stasjon", - "pl": "stacja", - "pt": "estação", - "ru": "станция", - "sl": "postaja", - "sr": "станица", - "tr": "istasyon", - "uk": "станція", - "vi": "nhà ga", - "zh-cn": "站", - "zh-tw": "車站" - }, - "stop_position": { - "bg": "спирка", - "ca": "parada de transport", - "cs": "zastávka", - "da": "stoppested", - "de": "haltestelle", - "en": "public transport stop", - "es": "parada de transporte", - "et": "peatus", - "fr": "poteau d'arrêt", - "he": "תחנת תחבורה ציבורית", - "hr": "postaja", - "hu": "megállóhely", - "id": "pemberhentian transportasi publik", - "it": "fermata", - "ja": "停車場", - "ko": "대중교통 정류장", - "nb": "stoppested", - "nl": "halte", - "pl": "przystanek", - "ru": "остановка общественного транспорта", - "sl": "postajališče javnega prometa", - "sv": "kollektivtrafikhållplats", - "tr": "durak", - "uk": "зупинка транспортного засобу", - "zh": "車站", - "zh-cn": "车站", - "zh-tw": "公共運輸站" - } - }, - "rack": { - "abt": { - "de": "system abt", - "en": "abt rack system", - "ja": "アプト式", - "nl": "system abt", - "sv": "kuggstångsbanesystem abt", - "zh": "阿普特式" - }, - "riggenbach": { - "de": "zahnradbahnsystem riggenbach", - "en": "riggenbach rack system", - "nl": "tandradsysteem riggenbach", - "sv": "kuggstångsbanesystem riggenbach" - }, - "strub": { - "de": "zahnradbahn-system strub", - "en": "strub rack system", - "nl": "tandradsysteem strub", - "sv": "kuggstångsbanesystem strub" - }, - "von_roll": { - "de": "zahnradbahn-system von roll", - "en": "von roll rack system", - "sv": "kuggstångsbanesystem von roll" - } - }, - "railway": { - "": { - "ca": "via en placa", - "cs": "pevná jízdní dráha", - "da": "sporsammenfletning", - "de": "feste fahrbahn", - "de-ch": "elektronisches stellwerk", - "en": "ballastless track", - "en-ca": "gauntlet track", - "en-gb": "gauntlet track", - "es": "vía en placa", - "fi": "releasetinlaite", - "fr": "voies enchevêtrées", - "hu": "betonlemezes vasúti pálya", - "id": "bingkai tuas", - "it": "apparato centrale", - "ja": "スラブ軌道", - "ko": "단복선", - "lv": "ceļa pinums", - "nb": "sikringsanlegg", - "nl": "ballastloos spoor", - "pl": "lokalne centrum sterowania", - "pt": "via em laje", - "ru": "сплетение", - "sv": "ballastfritt spår", - "th": "เครื่องนับเพลา", - "zh": "无砟轨道", - "zh-cn": "联锁装置", - "zh-tw": "計軸器" - }, - "abandoned": { - "ar": "خط سكك حديد مهجور", - "cs": "zrušená železniční trať", - "da": "nedlagt jernbane", - "de": "stillgelegter gleisanschluss", - "en": "abandoned industrial spur", - "en-ca": "abandoned railway", - "en-gb": "abandoned railway", - "fr": "ancienne ligne ferroviaire", - "hu": "felhagyott vasútvonal", - "id": "jalur kereta api nonaktif", - "it": "ferrovia dismessa", - "ja": "廃線", - "ko": "폐선", - "nl": "verlaten zijspoor", - "pt": "linha ferroviária abandonada", - "ru": "заброшенная железная дорога", - "sv": "nerlagd järnväg", - "zh": "鐵路廢線" - }, - "blockpost": { - "cs": "hradlo", - "de": "blockstelle", - "en": "block post", - "es": "puesto de bloqueo", - "id": "gardu blok", - "it": "posto di blocco intermedio", - "ja": "閉塞扱所", - "nb": "blokkpost", - "pl": "posterunek odstępowy", - "ru": "блокпост", - "uk": "блокпост", - "zh": "闭塞站" - }, - "border": { - "cs": "železniční hraniční přechod", - "de": "eisenbahngrenzübergang", - "en": "railway border crossing", - "es": "paso fronterizo ferroviario", - "fr": "point de passage frontalier ferroviaire", - "pl": "kolejowe przejście graniczne" - }, - "buffer_stop": { - "ar": "مصد", - "bg": "буфер", - "ca": "topall", - "cs": "zarážedlo", - "da": "sporstopper", - "de": "prellbock", - "en": "buffer stop", - "es": "topera", - "fi": "päätepuskin", - "fr": "heurtoir", - "he": "בלם פגוש", - "hu": "ütközőbak", - "id": "sepur badug", - "ja": "車止め", - "ko": "차막이", - "nl": "stootblok", - "pl": "kozioł oporowy", - "pt": "para-choque de via", - "ru": "путевой энергопоглощающий упор", - "sv": "stoppbock", - "zh": "止衝擋", - "zh-cn": "车挡器" - }, - "crossover": { - "cs": "kolejová spojka", - "de": "überleitstelle", - "en": "crossover", - "es": "puesto de banalización", - "et": "siire", - "hu": "vágánykapcsolat", - "lv": "ceļa pāreja", - "nl": "overloopwissel", - "ru": "путевой съезд", - "zh": "橫渡線", - "zh-cn": "渡线", - "zh-hk": "渡線" - }, - "depot": { - "ar": "دافع مستودع الطاقة", - "ca": "lloc de manteniment ferroviari", - "cs": "lokomotivní depo", - "da": "lokomotivværksted", - "de": "bahnbetriebswerk", - "en": "motive power depot", - "es": "cochera", - "fi": "vaunuhalli", - "fr": "dépôt de locomotives", - "he": "דפו (רכבת)", - "id": "depo lokomotif", - "it": "deposito locomotive", - "ja": "機関区", - "ko": "공작창", - "nb": "trikkehall", - "nl": "depot", - "pl": "lokomotywownia", - "ru": "железнодорожное депо", - "sv": "lokstall", - "uk": "локомотивне депо", - "zh": "机务段", - "zh-hk": "機務段", - "zh-tw": "機務段" - }, - "derail": { - "cs": "výkolejka", - "de": "gleissperre", - "en": "derail", - "fi": "raiteensulku", - "fr": "taquet dérailleur", - "he": "שומטן", - "hu": "kisiklasztó saru", - "ja": "安全側線", - "ko": "안전측선", - "nb": "sporsperre", - "nl": "stopontspoorblok", - "pl": "wykolejnica", - "ru": "сбрасыватель", - "sk": "výkoľajka", - "sv": "spårspärr", - "th": "เครื่องตกราง", - "zh": "脫軌器", - "zh-cn": "脱轨器" - }, - "disused": { - "ar": "خط سكك حديد مهجور", - "cs": "zrušená železniční trať", - "da": "nedlagt jernbane", - "de": "stillgelegter gleisanschluss", - "en": "abandoned industrial spur", - "en-ca": "abandoned railway", - "en-gb": "abandoned railway", - "fr": "ancienne ligne ferroviaire", - "hu": "felhagyott vasútvonal", - "id": "jalur kereta api nonaktif", - "it": "ferrovia dismessa", - "ja": "廃線", - "ko": "폐선", - "nl": "verlaten zijspoor", - "pt": "linha ferroviária abandonada", - "ru": "заброшенная железная дорога", - "sv": "nerlagd järnväg", - "zh": "鐵路廢線" - }, - "disused_halt": { - "cs": "zrušená železniční zastávka", - "de": "ehemaliger haltepunkt", - "en": "former railway stop", - "es": "apeadero antiguo", - "fr": "ancienne halte ferroviaire", - "hu": "megszűnt vasúti megállóhely", - "it": "fermata ferroviaria dismessa", - "nl": "voormalige spoorweghalte", - "ru": "бывший (заброшенный) остановочный пукт" - }, - "disused_station": { - "ar": "محطة قطار سابقة", - "ca": "antiga estació de ferrocarril", - "cs": "zrušená železniční stanice", - "da": "nedlagt jernbanestation", - "de": "ehemaliger bahnhof", - "el": "πρώην σιδηροδρομικός σταθμός", - "en": "former railway station", - "en-gb": "disused railway station", - "es": "estación del ferrocarril antigua", - "fi": "entinen rautatieasema", - "fr": "ancienne gare ferroviaire", - "he": "תחנת רכבת לשעבר", - "hu": "megszűnt vasútállomás", - "it": "stazione ferroviaria dismessa", - "ja": "かつての鉄道駅", - "ko": "없어진 철도역", - "nb": "tidligere jernbanestasjon", - "nl": "voormalig spoorwegstation", - "pl": "była stacja kolejowa", - "pt": "antiga estação ferroviária", - "ru": "бывшая железнодорожная станция", - "sv": "nerlagd järnvägsstation", - "tr": "eski tren istasyonu", - "uk": "колишня залізнична станція", - "zh": "已停运车站" - }, - "ferry": { - "ca": "transbordador de trens", - "cs": "trajekt", - "da": "jernbanefærge", - "de": "eisenbahnfähre", - "el": "πορθμείο σιδηροδρόμων", - "en": "train ferry", - "es": "transbordador de trenes", - "fi": "junalautta", - "fr": "traversier-rail", - "he": "מעבורות המובילות", - "hu": "vasúti komp", - "it": "traghetto ferroviario", - "ja": "鉄道連絡船", - "ko": "철도연락선", - "lt": "traukinių keltas", - "lv": "vilcienu prāmis", - "nb": "jernbaneferje", - "nl": "spoorpont", - "pl": "prom kolejowy", - "pt": "balsa ferroviária", - "sl": "železniški trajekt", - "sv": "tågfärja", - "tr": "tren feribotu", - "zh": "火车渡轮" - }, - "funicular": { - "ar": "قطار جبلي مائل", - "bg": "фуникулер", - "cs": "pozemní lanová dráha", - "da": "kabelbane", - "de": "standseilbahn", - "el": "καλωδιοκίνητος σιδηρόδρομος", - "en": "funicular", - "et": "köisraudtee", - "fi": "kiskohissi", - "fr": "funiculaire", - "he": "פוניקולר", - "hi": "रज्जुरेल", - "hr": "uspinjača", - "hu": "siklóvasút", - "is": "fjallatoglest", - "it": "funicolare", - "ja": "ケーブルカー", - "ko": "강삭철도", - "lt": "funikulierius", - "lv": "funikulers", - "nb": "kabelbane", - "nl": "kabelspoorweg", - "pl": "kolej linowo-terenowa", - "ru": "фуникулёр", - "sk": "pozemná lanovka", - "sl": "vzpenjača", - "sr": "успењача", - "sv": "bergbana", - "tr": "füniküler", - "uk": "фунікулер", - "zh": "往复式地面纜車" - }, - "halt": { - "bg": "железопътна спирка", - "ca": "baixador", - "cs": "železniční zastávka", - "da": "trinbræt", - "de": "haltepunkt/haltestelle", - "de-at": "haltestelle", - "de-ch": "haltepunkt", - "el": "σιδηροδρομική στάση", - "en": "railway stop", - "es": "apeadero", - "et": "raudteepeatus", - "fi": "seisake", - "fr": "halte ferroviaire", - "he": "תחנת רכבת נוסעים", - "hr": "željezničko stajalište", - "hu": "vasúti megállóhely", - "it": "fermata ferroviaria", - "ja": "ハルテプンクト", - "ko": "간이역", - "lv": "pieturas punkts", - "nb": "holdeplass", - "nl": "spoorweghalte", - "pl": "przystanek osobowy", - "pt": "apeadeiro", - "ro": "haltă", - "ru": "остановочный пункт на железной дороге", - "sk": "železničná zastávka", - "sl": "železniško postajališče", - "sr": "железничко стајалиште", - "sv": "hållplats", - "uk": "зупинний пункт", - "zh": "招呼站", - "zh-hk": "無人站" - }, - "hump_yard": { - "cs": "svážný pahrbek", - "de": "ablaufberg", - "en": "hump", - "it": "sella di lancio", - "ja": "ハンプ", - "nb": "fallrampe", - "nl": "rangeerheuvel", - "pl": "górka rozrządowa", - "ru": "сортировочная горка", - "sv": "rangervall", - "uk": "сортувальна гірка", - "zh": "铁路驼峰" - }, - "junction": { - "ar": "ملتقى سكك حديد", - "cs": "odbočka", - "de": "abzweigstelle", - "en": "junction", - "es": "empalme", - "fr": "jonction", - "hu": "vasúti elágazás", - "id": "percabangan", - "it": "bivio ferroviario", - "ja": "分岐点", - "lv": "ceļa postenis", - "nb": "jernbanekryss", - "nl": "spoorwegaftakking", - "pl": "posterunek odgałęźny", - "ru": "путевой пост", - "sk": "odbočka (železnica)", - "uk": "колійний пост", - "zh": "道岔" - }, - "level_crossing": { - "ar": "تقاطع سكة حديدية", - "ca": "pas a nivell", - "cs": "úrovňový železniční přejezd", - "da": "jernbaneoverskæring", - "de": "bahnübergang", - "el": "σιδηροδρομική διάβαση", - "en": "level crossing", - "es": "paso a nivel", - "et": "raudtee ülesõidukoht", - "fi": "tasoristeys", - "fr": "passage à niveau", - "he": "מצלב", - "hr": "željezničko cestovni prijelaz", - "hu": "útátjáró", - "id": "perlintasan sebidang", - "it": "passaggi a livello", - "ja": "踏切", - "ko": "건널목", - "lt": "geležinkelio pervaža", - "lv": "pārbrauktuve", - "nb": "planovergang", - "nl": "overweg", - "pl": "przejazd kolejowo-drogowy", - "pt": "passagem de nível", - "ru": "железнодорожный переезд", - "sk": "železničné priecestie", - "sl": "nivojski prehod čez železniško progo", - "sv": "plankorsning", - "th": "ทางรถไฟผ่านถนนเสมอระดับ", - "tr": "hemzemin geçit", - "uk": "залізничний переїзд", - "vi": "đường ngang", - "zh": "平交道", - "zh-cn": "铁路道口", - "zh-hk": "鐵路道口" - }, - "light_rail": { - "ar": "قطارات خفيفة", - "bg": "леко метро", - "ca": "tren lleuger", - "cs": "lehké metro", - "da": "letbane", - "de": "stadtbahn", - "en": "light rail", - "es": "tren ligero", - "fi": "pikaraitiotie", - "fr": "métro léger", - "he": "רכבת קלה", - "hr": "laka gradska željeznica", - "hu": "könnyűvasút", - "id": "kereta api ringan", - "is": "léttlest", - "it": "metropolitana leggera", - "ja": "ライト・レール", - "ko": "라이트 레일", - "nb": "bybane", - "nl": "lightrail", - "pl": "kolej miejska", - "pt": "metro ligeiro", - "pt-br": "veículo leve sobre trilhos", - "ro": "metrou ușor", - "ru": "легкорельсовый транспорт", - "sk": "ľahké metro", - "sl": "lahka železnica", - "sr": "лаки шински систем", - "th": "รถไฟฟ้ารางเบา", - "tr": "modern dekovil", - "uk": "легкорейковий транспорт", - "zh": "輕軌運輸系統", - "zh-cn": "轻轨运输系统" - }, - "milestone": { - "de": "streckenkilometrierung", - "en": "railway kilometre sign", - "es": "placa kilométrica", - "ru": "пикет", - "sv": "kilometerstolpe", - "uk": "пікет (довжина)" - }, - "miniature": { - "ca": "tren de miniatura que pot portar passatgers", - "da": "parkjernbane", - "de": "parkeisenbahn", - "en": "rideable miniature railway", - "es": "trenes miniatura", - "fr": "trains miniatures à passagers", - "it": "ferrovia da cortile", - "ja": "ミニチュア鉄道", - "nb": "parkjernbane", - "pl": "kolej lilipucia", - "ru": "парковая железная дорога", - "sv": "åkbar miniatyrjärnväg", - "zh": "小火車" - }, - "monorail": { - "ar": "خط أحادي", - "bg": "монорелс", - "de": "einschienenbahn", - "el": "τρένα μονής τροχιάς", - "en": "monorail", - "es": "monorraíl", - "et": "monorelsstee", - "he": "מונורייל", - "hi": "एकरेल", - "hr": "jednotračna željeznica", - "hu": "egysínű vasút", - "id": "monorel", - "it": "monorotaia", - "ja": "モノレール", - "ko": "모노레일", - "lt": "vienbėgis", - "lv": "viensliedes dzelzceļš", - "nb": "énskinnebane", - "pl": "kolej jednoszynowa", - "pt": "monocarril", - "ro": "monoșină", - "ru": "монорельс", - "sl": "enotirna železnica", - "th": "รางเดี่ยว", - "tr": "havaray", - "uk": "монорейкова дорога", - "vi": "đường một ray", - "zh": "單軌鐵路", - "zh-cn": "单轨铁路" - }, - "narrow_gauge": { - "ar": "سك", - "bg": "теснолинейка", - "cs": "úzkorozchodná dráha", - "da": "smalspor", - "de": "schmalspurbahn", - "en": "narrow-gauge railway", - "es": "ferrocarril de vía estrecha", - "et": "kitsarööpmeline raudtee", - "fi": "kapearaiteinen rautatie", - "fr": "voie étroite", - "he": "מסילה צרה", - "hi": "छोटी रेल लाइन", - "hr": "uskotračna željeznica", - "hu": "keskeny nyomközű vasút", - "id": "sepur sempit", - "it": "scartamento ridotto", - "ja": "狭軌", - "ko": "협궤", - "lt": "siaurasis geležinkelis", - "lv": "šaursliežu dzelzceļš", - "nb": "smalspor", - "nl": "smalspoorlijn", - "pl": "kolej wąskotorowa", - "pt": "caminho de ferro de via estreita", - "pt-br": "ferrovia de bitola estreita", - "ro": "ecartament îngust", - "ru": "узкоколейная железная дорога", - "sk": "úzkorozchodná železnica", - "sl": "ozkotirna železnica", - "sr": "пруга узаног колосека", - "sv": "smalspår", - "th": "แนร์โรว์เกจ", - "tr": "dar hat açıklığı", - "uk": "вузькоколійна залізниця", - "vi": "đường sắt khổ hẹp", - "zh": "窄軌" - }, - "phone": { - "de": "streckenfernsprecher", - "en": "trackside telephone" - }, - "platform": { - "bg": "перон", - "ca": "andana", - "cs": "nástupiště", - "da": "perron", - "de": "bahnsteig", - "de-ch": "perron", - "en": "railway platform", - "es": "andén", - "et": "ooteplatvorm", - "fi": "asemalaituri", - "fr": "quai", - "he": "רציף רכבת", - "hi": "रेलवे प्लेटफार्म", - "hu": "peron", - "id": "peron", - "it": "banchina ferroviaria", - "ja": "プラットホーム", - "ko": "철도 승강장", - "lv": "perons", - "nb": "perrong", - "nl": "perron", - "pl": "peron", - "pt": "plataforma ferroviária", - "ro": "peron", - "ru": "перрон", - "sl": "železniški peron", - "sr": "железнички перон", - "sv": "perrong", - "th": "ชานชาลา", - "uk": "залізнична платформа", - "vi": "sân ga", - "zh": "車站月台", - "zh-cn": "车站月台", - "zh-hk": "月台" - }, - "preserved": { - "ca": "tren històric", - "da": "veteranbane", - "de": "museumsbahn", - "en": "heritage railway", - "es": "tren histórico", - "fi": "museorautatie", - "fr": "chemin de fer touristique", - "he": "מסילה מורשתית", - "hu": "örökségvédelem alatt álló vasút", - "id": "warisan sejarah perkeretaapian", - "it": "ferrovia turistica", - "ja": "保存鉄道", - "ko": "보존철도", - "nb": "museumsjernbane", - "nl": "toeristische spoorweg", - "pl": "pociąg retro", - "pt": "ferrovia preservada", - "ru": "историческая железная дорога", - "sv": "museijärnväg", - "uk": "історична залізниця", - "zh": "观光铁路" - }, - "proposed": { - "cs": "navrhovaná železniční trať", - "da": "foreslået jernbanestrækning", - "de": "geplante eisenbahnstrecke", - "en": "proposed railway line", - "es": "línea ferroviaria propuesta", - "fr": "ligne de chemin de fer en projet", - "hu": "javasolt vasútvonal", - "ja": "提案中の鉄道路線", - "nb": "foreslått jernbanestrekning", - "nl": "voorgestelde spoorlijn", - "pt": "linha ferroviária proposta", - "ru": "перспективная железнодорожная линия", - "sv": "föreslagen järnvägslinje", - "zh": "铁路线规划" - }, - "rail": { - "ar": "خط سكة حديد", - "bg": "железопътна линия", - "ca": "línia de ferrocarril", - "cs": "železniční trať", - "da": "jernbanestrækning", - "de": "eisenbahnstrecke", - "el": "σιδηροδρομική γραμμή", - "en": "railway line", - "es": "línea férrea", - "et": "raudteeliin", - "fi": "rautatielinja", - "fr": "ligne de chemin de fer", - "he": "קו רכבת", - "hr": "željeznička pruga", - "hu": "vasútvonal", - "id": "jalur kereta api", - "it": "linea ferroviaria", - "ja": "鉄道路線", - "ko": "철도 노선", - "lv": "dzelzceļa līnija", - "nb": "jernbanestrekning", - "nl": "spoorlijn", - "pl": "linia kolejowa", - "pt": "linha ferroviária", - "ro": "cale ferată", - "ru": "железнодорожная линия", - "sl": "železniška linija", - "sr": "железничка линија", - "sv": "järnvägslinje", - "tr": "demiryolu hattı", - "uk": "залізнична лінія", - "zh": "鐵路線", - "zh-cn": "铁路线", - "zh-hk": "鐵路綫" - }, - "railway_crossing": { - "cs": "kolejová křižovatka", - "da": "jernbanekrydsning", - "de": "gleiskreuzung", - "en": "flat crossing", - "hu": "vágányátszelés", - "ja": "ダイヤモンドクロッシング", - "lv": "nekustīgs ceļa krustojums", - "pl": "skrzyżowanie torów", - "pt": "cruzamento", - "sv": "spårkorsning" - }, - "razed": { - "ar": "خط سكك حديد مهجور", - "cs": "zrušená železniční trať", - "da": "nedlagt jernbane", - "de": "stillgelegter gleisanschluss", - "en": "abandoned industrial spur", - "en-ca": "abandoned railway", - "en-gb": "abandoned railway", - "fr": "ancienne ligne ferroviaire", - "hu": "felhagyott vasútvonal", - "id": "jalur kereta api nonaktif", - "it": "ferrovia dismessa", - "ja": "廃線", - "ko": "폐선", - "nl": "verlaten zijspoor", - "pt": "linha ferroviária abandonada", - "ru": "заброшенная железная дорога", - "sv": "nerlagd järnväg", - "zh": "鐵路廢線" - }, - "rolling_highway": { - "cs": "rola", - "da": "rullende landevej", - "de": "rollende landstraße", - "en": "rolling highway", - "es": "autopista ferroviaria", - "fr": "route roulante", - "hu": "rola", - "it": "autostrada viaggiante", - "ja": "ローリング・ハイウェイ", - "nl": "rollende landstraße", - "pl": "rollende landstraße", - "pt": "rola", - "sk": "rola", - "sv": "lastbilståg", - "zh": "滚动公路" - }, - "roundhouse": { - "cs": "výtopna", - "da": "lokomotivremise", - "de": "lokschuppen", - "en": "railway roundhouse", - "en-gb": "roundhouse", - "es": "rotonda", - "fi": "veturitalli", - "fr": "rotonde ferroviaire", - "id": "los bundar", - "is": "sporkringluhús", - "ja": "扇形庫", - "nl": "locomotiefloods", - "pl": "hala wachlarzowa", - "pt": "rotunda", - "ru": "веерное депо", - "sv": "radiellt lokstall", - "zh": "扇形車庫" - }, - "service_station": { - "de": "betriebsbahnhof", - "en": "staff halt", - "et": "tehniline jaam", - "fi": "tekninen asema", - "fr": "gare technique", - "ja": "信号場", - "ko": "신호장", - "lv": "tehniskā stacija", - "nl": "personeelshalte", - "ru": "техническая железнодорожная станция", - "zh": "线路所" - }, - "signal": { - "ar": "إشارات السكك الحديدية", - "bg": "семафор", - "ca": "senyalització de ferrocarril", - "cs": "železniční traťové návěstidlo", - "da": "jernbanesignal", - "de": "eisenbahnsignal", - "en": "railway signal", - "es": "señal de ferrocarril", - "fi": "opastin", - "fr": "signalisation ferroviaire", - "hi": "रेलवे संकेतक", - "hr": "željeznički signal", - "hu": "fényjelzők", - "id": "sinyal kereta api", - "it": "segnale ferroviario", - "ja": "鉄道信号機", - "ko": "철도 신호기", - "nl": "spoorwegsein", - "pl": "semafor", - "pt": "sinal ferroviário", - "ro": "semnal de cale ferată", - "ru": "железнодорожный светофор", - "sk": "návestidlo", - "sr": "железнички сигнал", - "sv": "järnvägssignal", - "th": "ระบบอาณัติสัญญาณรถไฟ", - "tr": "demiryolu sinyalizasyonu", - "uk": "залізничний сигнал", - "vi": "tín hiệu đường sắt", - "zh": "铁路信号机", - "zh-hk": "鐵路信號機", - "zh-tw": "鐵路號誌機" - }, - "signal_box": { - "cs": "stavědlo", - "de": "stellwerk", - "en": "signal box", - "es": "cabín de señales", - "it": "posto di movimento", - "ja": "信号所", - "nl": "seinhuis", - "pt": "cabina", - "sl": "kretniška postavljalnica" - }, - "spur": { - "uk": "з'єднувальна колія" - }, - "station": { - "ar": "محطة قطار", - "bg": "железопътна гара", - "ca": "estació de ferrocarril", - "cs": "železniční stanice", - "da": "jernbanestation", - "de": "bahnhof", - "el": "σιδηροδρομικός σταθμός", - "en": "railway station", - "en-ca": "train station", - "es": "estación de ferrocarril", - "et": "raudteejaam", - "fi": "rautatieasema", - "fr": "gare ferroviaire", - "he": "תחנת רכבת", - "hi": "रेलवे स्टेशन", - "hr": "željeznički kolodvor", - "hu": "vasútállomás", - "id": "stasiun kereta api", - "is": "lestarstöð", - "it": "stazione ferroviaria", - "ja": "鉄道駅", - "ko": "철도역", - "lt": "geležinkelio stotis", - "lv": "dzelzceļa stacija", - "nb": "jernbanestasjon", - "nl": "spoorwegstation", - "pl": "stacja kolejowa", - "pt": "estação ferroviária", - "ro": "gară", - "ru": "железнодорожная станция", - "sk": "železničná stanica", - "sl": "železniška postaja", - "sr": "жељезничка станица", - "sv": "järnvägsstation", - "th": "สถานีรถไฟ", - "tr": "tren istasyonu", - "uk": "залізнична станція", - "vi": "ga đường sắt", - "zh": "鐵路車站", - "zh-cn": "铁路车站", - "zh-hk": "鐵路站" - }, - "stop": { - "bg": "железопътна спирка", - "ca": "baixador", - "cs": "železniční zastávka", - "da": "trinbræt", - "de": "haltepunkt/haltestelle", - "de-at": "haltestelle", - "de-ch": "haltepunkt", - "el": "σιδηροδρομική στάση", - "en": "railway stop", - "es": "apeadero", - "et": "raudteepeatus", - "fi": "seisake", - "fr": "halte ferroviaire", - "he": "תחנת רכבת נוסעים", - "hr": "željezničko stajalište", - "hu": "vasúti megállóhely", - "it": "fermata ferroviaria", - "ja": "ハルテプンクト", - "ko": "간이역", - "lv": "pieturas punkts", - "nb": "holdeplass", - "nl": "spoorweghalte", - "pl": "przystanek osobowy", - "pt": "apeadeiro", - "ro": "haltă", - "ru": "остановочный пункт на железной дороге", - "sk": "železničná zastávka", - "sl": "železniško postajališče", - "sr": "железничко стајалиште", - "sv": "hållplats", - "uk": "зупинний пункт", - "zh": "招呼站", - "zh-hk": "無人站" - }, - "subway": { - "ar": "نظام النقل السريع", - "bg": "метро", - "ca": "metro", - "cs": "metro", - "da": "undergrundsbane", - "de": "u-bahn", - "el": "μετρό", - "en": "rapid transit", - "es": "metro", - "et": "metroo", - "fi": "metro", - "fr": "métro", - "he": "רכבת תחתית", - "hi": "भूमिगत रेल", - "hr": "podzemna željeznica", - "hu": "metró", - "id": "angkutan cepat", - "is": "snarlest", - "it": "metropolitana", - "ja": "地下鉄", - "ko": "지하철", - "lt": "metropolitenas", - "lv": "metro", - "nb": "tunnelbane", - "nl": "metrosysteem", - "pl": "metro", - "pt": "metropolitano", - "pt-br": "metrô", - "ro": "metrou", - "ru": "метрополитен", - "sk": "metro", - "sl": "podzemna železnica", - "sr": "метро", - "sv": "tunnelbana", - "th": "ระบบขนส่งมวลชนเร็ว", - "tr": "metro", - "uk": "метрополітен", - "vi": "tàu điện ngầm", - "zh": "地鐵", - "zh-cn": "地铁" - }, - "switch": { - "bg": "железопътна стрелка", - "ca": "canvi d'agulles", - "cs": "výhybka", - "da": "sporskifte", - "de": "weiche", - "en": "railroad switch", - "en-gb": "railway switch", - "es": "desvío", - "et": "pööre", - "fi": "rautatievaihde", - "fr": "aiguillage", - "he": "מסוט", - "hi": "रेलपथ स्विच", - "hr": "skretnica", - "hu": "kitérő", - "id": "wesel", - "it": "deviatoio", - "ja": "分岐器", - "ko": "분기기", - "lt": "geležinkelio iešmas", - "lv": "pārmiju pārveda", - "nb": "sporveksel", - "nl": "wissel", - "pl": "rozjazd", - "pt": "aparelho de mudança de via", - "ro": "macaz", - "ru": "стрелочный перевод", - "sk": "výhybka", - "sl": "kretnica", - "sr": "скретница", - "sv": "järnvägsväxel", - "th": "ประแจ", - "tr": "makas", - "uk": "стрілочний перевід", - "zh": "轉轍器" - }, - "tram": { - "ar": "شبكة ترام", - "ca": "xarxa de tramvia", - "cs": "tramvajová doprava", - "da": "sporvej", - "de": "straßenbahnsystem", - "el": "σύστημα τραμ", - "en": "tram system", - "es": "red de tranvías", - "fi": "raitioliikenne", - "fr": "réseau de tramway", - "he": "רשת רכבות חשמליות", - "hu": "villamoshálózat", - "it": "rete tranviaria", - "ja": "路面電車システム", - "lt": "tramvajaus sistema", - "lv": "tramvaju tīkls", - "nb": "sporvei", - "nl": "tramsysteem", - "pl": "system tramwajowy", - "pt": "rede de eléctricos", - "pt-br": "rede de bondes", - "ro": "rețea de tramvaie", - "ru": "трамвайная система", - "sk": "električková doprava", - "sl": "tramvajsko omrežje", - "sr": "трамвајски систем", - "sv": "spårvägssystem", - "tr": "tramvay ağı", - "uk": "трамвайна система" - }, - "tram_stop": { - "ca": "parada de tramvia", - "cs": "tramvajová zastávka", - "da": "sporvognsstoppested", - "de": "straßenbahnhaltestelle", - "en": "tram stop", - "en-ca": "streetcar stop", - "es": "parada de tranvía", - "et": "trammipeatus", - "fi": "raitiotiepysäkki", - "fr": "station de tramway", - "he": "תחנת רכבת חשמלית", - "hr": "tramvajska stanica", - "hu": "villamosmegálló", - "id": "pemberhentian trem", - "it": "fermata del tram", - "ja": "路面電車停留場", - "ko": "노면전차 정류장", - "lv": "tramvaju pietura", - "nb": "trikkestopp", - "nl": "tramhalte", - "pl": "przystanek tramwajowy", - "pt": "parada de bonde", - "ru": "трамвайная остановка", - "sk": "tramvajová zastávka", - "sv": "spårvagnshållplats", - "tr": "tramvay durağı", - "uk": "трамвайна зупинка", - "zh": "電車站" - }, - "traverser": { - "cs": "přesuvna", - "de": "schiebebühne", - "en": "railway traverser", - "es": "mesa de transferencia", - "fr": "pont transbordeur", - "hi": "पार्श्ववाहक", - "hu": "tolópad", - "it": "ponte trasbordatore", - "ja": "トラバーサー", - "ko": "천차대", - "nb": "travers", - "uk": "трансбордер", - "zh": "移车台" - }, - "turntable": { - "bg": "кръгово обръщало", - "ca": "placa giratòria", - "cs": "točna", - "da": "drejeskive", - "de": "drehscheibe", - "en": "railway turntable", - "es": "mesa giratoria", - "et": "pöördsild", - "fi": "kääntöpöytä", - "fr": "plaque tournante", - "he": "סובבן", - "hi": "रेल घूम-चक्कर", - "hu": "fordítókorong", - "id": "pemutar rel", - "is": "sporkringla", - "it": "piattaforma girevole ferroviaria", - "ja": "転車台", - "ko": "전차대", - "nb": "svingskive", - "nl": "draaischijf", - "pl": "obrotnica kolejowa", - "pt": "girador ferroviário", - "pt-br": "viradouro", - "ro": "placă turnantă", - "ru": "разворотный круг", - "sv": "vändskiva", - "th": "วงเวียนกลับรถจักร", - "uk": "поворотний круг", - "zh": "轉車台", - "zh-cn": "調度場", - "zh-tw": "調車轉盤" - }, - "vacancy_detection": { - "de": "gleisfreimeldeanlage", - "en": "railway vacancy detection", - "ja": "列車位置検知技術", - "nl": "treindetectie", - "zh": "免检轨道装置", - "zh-cn": "列车位置检测装置" - }, - "water_crane": { - "ca": "hidrant", - "cs": "vodní jeřáb", - "de": "wasserkran", - "en": "water crane", - "es": "aguada", - "fi": "vesiviskuri", - "fr": "prise d'eau", - "he": "ברז מים", - "id": "corong air", - "it": "colonna idraulica", - "nl": "waterkraan voor locomotief", - "pl": "żuraw wodny", - "ro": "hidrant", - "ru": "паровозная колонка", - "sv": "vattenhäst", - "uk": "паровозна колонка", - "zh": "水鹤", - "zh-hk": "水鶴" - }, - "workshop": { - "ca": "taller ferroviari", - "de": "ausbesserungswerk", - "en": "railway workshop", - "es": "taller ferroviario", - "fi": "konepaja", - "fr": "atelier ferroviaire", - "he": "סדנת רכבות", - "id": "balai yasa", - "it": "rimessa locomotive", - "nl": "spoorwerkplaats", - "ru": "вагоноремонтное предприятие", - "uk": "вагоноремонтне підприємство" - }, - "yard": { - "ca": "estació de mercaderies", - "cs": "nákladové nádraží", - "de": "güterbahnhof", - "en": "goods station", - "es": "estación de mercancías", - "et": "kaubajaam", - "fi": "rahtiasema", - "fr": "gare de marchandise", - "he": "תחנת משא", - "hu": "teherpályaudvar", - "it": "stazione merci", - "ja": "貨物駅", - "nl": "goederenstation", - "pl": "stacja towarowa", - "pt": "pátio de manobras", - "pt-br": "pátio ferroviário", - "ru": "грузовая железнодорожная станция", - "sv": "godsstation", - "uk": "вантажна станція", - "zh": "貨運車站", - "zh-cn": "货运车站" - } - }, - "ramp": { - "": { - "ar": "منزلق ذوي الأحتياجات الخاصة", - "bg": "рампа за инвалиди", - "de": "rollstuhlrampe", - "en": "wheelchair ramp", - "es": "rampa para silla de ruedas", - "fr": "rampe d'accès", - "he": "רמפה", - "ja": "スロープ", - "ko": "휠체어 경사로", - "lt": "rampa", - "nl": "rolstoelhelling", - "pl": "pochylnia dla niepełnosprawnych", - "ru": "пандус", - "sr": "рампа за инвалиде", - "uk": "пандус", - "zh": "輪椅斜道" - } - }, - "reclaimed": { - "yes": { - "ar": "استصلاح الأراضي البحرية", - "ca": "terres guanyades al mar", - "da": "landvinding", - "de": "landgewinnung", - "en": "land reclamation", - "es": "tierras ganadas al mar", - "et": "maaparandus", - "fi": "uudisraivaus", - "fr": "terre-plein", - "he": "אחזור קרקע", - "hi": "भूमि उद्धार", - "hr": "melioracija", - "id": "reklamasi daratan", - "it": "terra sottratta al mare", - "ja": "埋立", - "ko": "간척지", - "lt": "melioracija", - "nl": "landaanwinning", - "pl": "refulacja", - "pt": "aterramento marítimo", - "ro": "îmbunătățiri funciare", - "ru": "намывные территории", - "sl": "melioracija", - "sr": "мелиорација", - "sv": "landåtervinning", - "tr": "toprak ıslahı", - "uk": "намивні території", - "vi": "khai hoang", - "zh": "填海" - } - }, - "recycling_type": { - "centre": { - "ca": "centre de reciclatge", - "de": "recyclingeinrichtung", - "el": "κέντρο ανακύκλωσης", - "en": "recycling center", - "en-gb": "recycling centre", - "fr": "centre de recyclage", - "ja": "リサイクリング・センター", - "tr": "geri dönüşüm tesisi", - "zh": "回收站" - }, - "container": { - "ar": "صندوق فرز نفايات", - "de": "wertstoffcontainer", - "el": "κάδος ανακύκλωσης", - "en": "recycling bin", - "fr": "conteneur de recyclage", - "he": "סל מחזור", - "it": "bidone per la raccolta differenziata", - "ko": "재활용함", - "lt": "rūšiavimo konteineriai", - "sv": "återvinningskärl", - "tr": "çöp kutusu", - "zh": "分類回收桶" - } - }, - "reef": { - "coral": { - "ar": "شعاب مرجانية", - "bg": "коралов риф", - "ca": "escull de corall", - "cs": "korálový útes", - "da": "koralrev", - "de": "korallenriff", - "el": "κοραλλιογενής ύφαλος", - "en": "coral reef", - "es": "arrecife de coral", - "et": "korallrahu", - "fi": "koralliriutta", - "fr": "récif corallien", - "he": "שונית אלמוגים", - "hi": "प्रवाल शैल-श्रेणी", - "hr": "koraljni greben", - "hu": "korallzátony", - "id": "terumbu karang", - "is": "kóralrif", - "it": "barriera corallina", - "ja": "サンゴ礁", - "ko": "산호초", - "lt": "koralinis rifas", - "lv": "koraļļu rifs", - "nb": "korallrev", - "nl": "koraalrif", - "pl": "rafa koralowa", - "pt": "recife de coral", - "ro": "recif de corali", - "ru": "коралловый риф", - "sk": "koralový útes", - "sl": "koralni greben", - "sr": "корални гребен", - "sv": "korallrev", - "th": "พืดหินปะการัง", - "tr": "mercan resifi", - "uk": "коралові споруди", - "vi": "rạn san hô", - "zh": "珊瑚礁" - } - }, - "religion": { - "Gonabadi_Dervish": { - "en": "gonabadi dervish" - }, - "animist": { - "ar": "إحيائية", - "bg": "анимизъм", - "ca": "animisme", - "cs": "animismus", - "da": "animisme", - "de": "animismus", - "el": "ανιμισμός", - "en": "animism", - "es": "animismo", - "fi": "animismi", - "fr": "animisme", - "he": "אנימיזם", - "hi": "सर्वात्मवाद", - "hr": "animizam", - "hu": "animizmus", - "id": "animisme", - "is": "andatrú", - "it": "animismo", - "ja": "アニミズム", - "ko": "애니미즘", - "lt": "animizmas", - "lv": "animisms", - "nb": "animisme", - "nl": "animisme", - "pl": "animizm", - "pt": "animismo", - "ru": "анимизм", - "sk": "animizmus", - "sl": "animizem", - "sr": "анимизам", - "th": "วิญญาณนิยม", - "tr": "animizm", - "uk": "анімізм", - "vi": "thuyết vật linh", - "zh": "泛靈論" - }, - "antoinist": { - "de": "antoinismus", - "en": "antoinism", - "es": "antonismo", - "fr": "antoinisme", - "it": "antoinismo", - "nl": "antoinisme", - "pt": "antoinismo", - "zh": "安托万教" - }, - "bahai": { - "ar": "بهائية", - "bg": "бахайство", - "ca": "fe bahà'í", - "cs": "bahá'í", - "da": "bahai", - "de": "bahaitum", - "el": "μπαχάι πίστη", - "en": "baháʼí faith", - "es": "fe bahá'í", - "et": "baha'i usk", - "fi": "bahai-usko", - "fr": "bahaïsme", - "he": "הדת הבהאית", - "hi": "बहाई धर्म", - "hr": "bahá'í", - "hu": "bahái", - "id": "baha'i", - "is": "bahá'í trúin", - "it": "bahá'í", - "ja": "バハーイー教", - "ko": "바하이 신앙", - "lt": "bahajų tikėjimas", - "lv": "bahāisms", - "nb": "bahai", - "nl": "bahai", - "pl": "bahaizm", - "pt": "fé bahá'í", - "ro": "credința bahá'í", - "ru": "бахаи", - "sk": "bahájska viera", - "sl": "bahajstvo", - "sr": "бахаи вера", - "sv": "bahá'í", - "th": "ศาสนาบาไฮ", - "tr": "bahâîlik", - "uk": "бахаїзм", - "vi": "bahá'í", - "zh": "巴哈伊信仰" - }, - "benzhu": { - "ca": "benzhuisme", - "de": "benzhuismus", - "en": "benzhuism", - "ja": "本主教", - "nl": "benzhuïsme", - "zh": "本主崇拜" - }, - "buddhist": { - "ar": "بوذية", - "bg": "будизъм", - "ca": "budisme", - "cs": "buddhismus", - "da": "buddhisme", - "de": "buddhismus", - "el": "βουδισμός", - "en": "buddhism", - "es": "budismo", - "et": "budism", - "fi": "buddhalaisuus", - "fr": "bouddhisme", - "he": "בודהיזם", - "hi": "बौद्ध धर्म", - "hr": "budizam", - "hu": "buddhizmus", - "id": "buddhisme", - "is": "búddismi", - "it": "buddhismo", - "ja": "仏教", - "ko": "불교", - "lt": "budizmas", - "lv": "budisms", - "nb": "buddhisme", - "nl": "boeddhisme", - "pl": "buddyzm", - "pt": "budismo", - "ro": "budism", - "ru": "буддизм", - "sk": "budhizmus", - "sl": "budizem", - "sr": "будизам", - "th": "ศาสนาพุทธ", - "tr": "budizm", - "uk": "буддизм", - "vi": "phật giáo", - "zh": "佛教" - }, - "caodaism": { - "ar": "كاو دائية", - "ca": "caodaisme", - "cs": "kaodaismus", - "da": "cao dai", - "de": "caodaismus", - "el": "καοδαϊσμός", - "en": "caodaism", - "es": "caodaísmo", - "et": "cao dai", - "fi": "caodaismi", - "fr": "caodaïsme", - "he": "גאו-דאי", - "hi": "काओ दाई धर्म", - "hr": "cao dai", - "hu": "kaodaizmus", - "id": "cao dai", - "it": "caodaismo", - "ja": "カオダイ教", - "ko": "까오다이교", - "lt": "kaodai", - "nb": "cao đài", - "nl": "cao dai", - "pl": "kaodaizm", - "pt": "cao dai", - "ro": "cao dai", - "ru": "каодай", - "sv": "cao dai", - "th": "ลัทธิกาวด่าย", - "tr": "kaodaizm", - "uk": "каодай", - "vi": "đạo cao đài", - "zh": "高台教" - }, - "christian": { - "ar": "المسيحية", - "bg": "християнство", - "ca": "cristianisme", - "cs": "křesťanství", - "da": "kristendom", - "de": "christentum", - "el": "χριστιανισμός", - "en": "christianity", - "es": "cristianismo", - "et": "kristlus", - "fi": "kristinusko", - "fr": "christianisme", - "he": "נצרות", - "hi": "ईसाई धर्म", - "hr": "kršćanstvo", - "hu": "kereszténység", - "id": "kristen", - "is": "kristni", - "it": "cristianesimo", - "ja": "キリスト教", - "ko": "기독교", - "lt": "krikščionybė", - "lv": "kristietība", - "nb": "kristendom", - "nl": "christendom", - "pl": "chrześcijaństwo", - "pt": "cristianismo", - "ro": "creștinism", - "ru": "христианство", - "sk": "kresťanstvo", - "sl": "krščanstvo", - "sr": "хришћанство", - "sv": "kristendom", - "th": "ศาสนาคริสต์", - "tr": "hristiyanlık", - "uk": "християнство", - "vi": "kitô giáo", - "zh": "基督教" - }, - "confucian": { - "ar": "كونفشيوسية", - "bg": "конфуцианство", - "ca": "confucianisme", - "cs": "konfucianismus", - "da": "konfucianisme", - "de": "konfuzianismus", - "el": "κομφουκιανισμός", - "en": "confucianism", - "es": "confucianismo", - "et": "konfutsianism", - "fi": "kungfutselaisuus", - "fr": "confucianisme", - "he": "קונפוציאניזם", - "hi": "कुन्फ़्यूशियसी धर्म", - "hr": "konfucijanizam", - "hu": "konfucianizmus", - "id": "konfusianisme", - "is": "konfúsíusismi", - "it": "confucianesimo", - "ja": "儒教", - "ko": "유교", - "lt": "konfucianizmas", - "lv": "konfūcisms", - "nb": "konfusianisme", - "nl": "confucianisme", - "pl": "konfucjanizm", - "pt": "confucionismo", - "ru": "конфуцианство", - "sk": "konfucianizmus", - "sl": "konfucionizem", - "sr": "конфучијанство", - "sv": "konfucianism", - "th": "ลัทธิขงจื๊อ", - "tr": "konfüçyüsçülük", - "uk": "конфуціанство", - "vi": "nho giáo", - "zh": "儒家" - }, - "fujiko": { - "en": "fujikō", - "ja": "富士講" - }, - "hindy": { - "ar": "هندوسية", - "bg": "индуизъм", - "ca": "hinduisme", - "cs": "hinduismus", - "da": "hinduisme", - "de": "hinduismus", - "el": "ινδουισμός", - "en": "hinduism", - "es": "hinduismo", - "fi": "hindulaisuus", - "fr": "hindouisme", - "he": "הינדואיזם", - "hi": "सनातन धर्म", - "hr": "hinduizam", - "hu": "hinduizmus", - "id": "hindu", - "is": "hindúismi", - "it": "induismo", - "ja": "ヒンドゥー教", - "ko": "힌두교", - "lt": "hinduizmas", - "lv": "hinduisms", - "nb": "hinduisme", - "nl": "hindoeïsme", - "pl": "hinduizm", - "pt": "hinduísmo", - "ru": "индуизм", - "sk": "hinduizmus", - "sl": "hinduizem", - "sr": "хиндуизам", - "th": "ศาสนาฮินดู", - "tr": "hinduizm", - "uk": "індуїзм", - "vi": "ấn độ giáo", - "zh": "印度教" - }, - "jain": { - "ar": "جاينية", - "bg": "джайнизъм", - "ca": "jainisme", - "cs": "džinismus", - "da": "jainisme", - "de": "jainismus", - "el": "τζαϊνισμός", - "en": "jainism", - "es": "jainismo", - "et": "džainism", - "fi": "jainalaisuus", - "fr": "jaïnisme", - "he": "ג'ייניזם", - "hi": "जैन धर्म", - "hr": "džainizam", - "hu": "dzsainizmus", - "id": "jainisme", - "is": "jaínismi", - "it": "giainismo", - "ja": "ジャイナ教", - "ko": "자이나교", - "lt": "džainizmas", - "lv": "džainisms", - "nb": "jainisme", - "nl": "jaïnisme", - "pl": "dźinizm", - "pt": "jainismo", - "ru": "джайнизм", - "sk": "džinizmus", - "sl": "džainizem", - "sr": "ђаинизам", - "th": "ศาสนาเชน", - "tr": "jainizm", - "uk": "джайнізм", - "vi": "jaina giáo", - "zh": "耆那教" - }, - "jewish": { - "ar": "اليهودية", - "bg": "юдаизъм", - "ca": "judaisme", - "cs": "judaismus", - "da": "jødedom", - "de": "judentum", - "el": "ιουδαϊσμός", - "en": "judaism", - "es": "judaísmo", - "fi": "juutalaisuus", - "fr": "judaïsme", - "he": "יהדות", - "hi": "यहूदी धर्म", - "hr": "judaizam", - "hu": "zsidó vallás", - "id": "agama yahudi", - "is": "gyðingdómur", - "it": "ebraismo", - "ja": "ユダヤ教", - "ko": "유대교", - "lt": "judaizmas", - "lv": "jūdaisms", - "nb": "jødedom", - "nl": "jodendom", - "pl": "judaizm", - "pt": "judaísmo", - "ro": "iudaism", - "ru": "иудаизм", - "sk": "judaizmus", - "sl": "judovstvo", - "sr": "јудаизам", - "sv": "judendom", - "th": "ศาสนายูดาห์", - "tr": "yahudilik", - "uk": "юдаїзм", - "vi": "do thái giáo", - "zh": "猶太教", - "zh-cn": "犹太教" - }, - "multifaith": { - "de": "raum der stille", - "en": "multifaith space", - "nb": "multireligiøst bønnerom", - "zh": "多信仰祷告室" - }, - "muslim": { - "ar": "الإِسْلَام", - "bg": "ислям", - "cs": "islám", - "el": "ισλάμ", - "en": "islam", - "he": "אסלאם", - "hi": "इस्लाम", - "hu": "iszlám", - "is": "íslam", - "ja": "イスラム教", - "ko": "이슬람교", - "lt": "islamas", - "lv": "islāms", - "pt": "islamismo", - "pt-br": "islã", - "ru": "ислам", - "sr": "ислам", - "th": "ศาสนาอิสลาม", - "tr": "i̇slam", - "uk": "іслам", - "vi": "hồi giáo", - "zh": "伊斯兰教", - "zh-hk": "伊斯蘭教", - "zh-tw": "伊斯蘭教" - }, - "pagan": { - "ar": "باغانية جديدة", - "bg": "неопаганизъм", - "ca": "neopaganisme", - "cs": "novopohanství", - "da": "nyhedenskab", - "de": "neopaganismus", - "el": "νεοπαγανισμός", - "en": "modern paganism", - "es": "neopaganismo", - "et": "uuspaganlus", - "fi": "uuspakanuus", - "fr": "néopaganisme", - "he": "נאו-פגניות", - "hr": "neopoganstvo", - "hu": "újpogányság", - "id": "paganisme modern", - "it": "neopaganesimo", - "ja": "ネオペイガニズム", - "ko": "신이교주의", - "lt": "neopagonybė", - "lv": "neopagānisms", - "nb": "neopaganisme", - "nl": "neopaganisme", - "pl": "neopogaństwo", - "pt": "neopaganismo", - "ro": "neopăgânism", - "ru": "неоязычество", - "sk": "novopohanstvo", - "sr": "неопаганизам", - "sv": "nyhedendom", - "tr": "neopaganizm", - "uk": "неоязичництво", - "vi": "pagan giáo hiện đại", - "zh": "新異教主義", - "zh-cn": "新异教主义" - }, - "pastafarian": { - "en": "church of the flying spaghetti monster" - }, - "scientologist": { - "ar": "سينتولوجيا", - "bg": "сциентология", - "ca": "cienciologia", - "cs": "scientologie", - "el": "σαηεντολογία", - "en": "scientology", - "es": "cienciología", - "et": "saientoloogia", - "fi": "skientologia", - "fr": "scientologie", - "he": "סיינטולוגיה", - "hr": "scijentologija", - "hu": "szcientológia", - "is": "vísindakirkjan", - "ja": "サイエントロジー", - "ko": "사이언톨로지교", - "lt": "scientologija", - "lv": "scientoloģija", - "nb": "scientologi", - "pl": "scjentologia", - "pt": "cientologia", - "ro": "scientologie", - "ru": "саентология", - "sk": "scientológia", - "sl": "scientologija", - "sr": "сајентологија", - "sv": "scientologi", - "uk": "саєнтологія", - "vi": "khoa luận giáo", - "zh": "山達基", - "zh-cn": "山达基" - }, - "shinto": { - "ar": "شنتو", - "bg": "шинтоизъм", - "ca": "xintoisme", - "cs": "šintoismus", - "de": "shintō", - "el": "σιντοϊσμός", - "en": "shinto", - "es": "sintoísmo", - "et": "sintoism", - "fi": "šintolaisuus", - "fr": "shintoïsme", - "he": "שינטו", - "hi": "शिन्तो धर्म", - "hr": "šintoizam", - "hu": "sintó", - "is": "sjintóismi", - "it": "shintoismo", - "ja": "神道", - "ko": "신토", - "lt": "šintoizmas", - "lv": "sintoisms", - "nb": "shintoisme", - "nl": "shintoïsme", - "pl": "shintō", - "pt": "xintoísmo", - "ro": "șintoism", - "ru": "синтоизм", - "sk": "šintoizmus", - "sl": "šintoizem", - "sr": "шинтоизам", - "th": "ชินโต", - "tr": "şinto", - "uk": "синто", - "vi": "thần đạo", - "zh": "神道" - }, - "sikh": { - "ar": "سيخية", - "bg": "сикхизъм", - "ca": "sikhisme", - "cs": "sikhismus", - "da": "sikhisme", - "de": "sikhismus", - "el": "σιχισμός", - "en": "sikhism", - "es": "sijismo", - "fi": "sikhiläisyys", - "fr": "sikhisme", - "he": "סיקיזם", - "hi": "सिखमत", - "hr": "sikhizam", - "hu": "szikhizmus", - "id": "sikhisme", - "is": "síkismi", - "it": "sikhismo", - "ja": "シク教", - "ko": "시크교", - "lt": "sikhizmas", - "lv": "sikhisms", - "nb": "sikhisme", - "nl": "sikhisme", - "pl": "sikhizm", - "pt": "sikhismo", - "ru": "сикхизм", - "sk": "sikhizmus", - "sl": "sikhizem", - "sr": "сикизам", - "th": "ศาสนาซิกข์", - "tr": "sihizm", - "uk": "сикхізм", - "vi": "sikh giáo", - "zh": "锡克教" - }, - "spiritualist": { - "ar": "روحية", - "bg": "спиритуализъм", - "ca": "espiritualisme", - "cs": "spiritualismus", - "da": "spiritualisme", - "de": "spiritualismus (19. jahrhundert)", - "de-at": "spiritualismi", - "de-ch": "spiritualismi", - "el": "πνευματισμός", - "en": "spiritualism", - "en-ca": "spiritualismi", - "es": "espiritualismo", - "et": "spiritualismi", - "fi": "spiritualismi", - "fr": "spiritualisme moderne anglo-saxon", - "he": "ספיריטואליזם", - "hi": "अध्यात्मवाद", - "hr": "spiritualismi", - "hu": "spiritualizmus", - "id": "spiritualisme", - "is": "spíritismi", - "it": "spiritualismo", - "ja": "心霊主義", - "ko": "심령주의", - "lv": "spiritisms", - "nb": "spiritualisme", - "nl": "spiritualisme", - "pl": "spirytualizm", - "pt": "espiritualismo", - "ro": "spiritualismi", - "ru": "спиритуализм", - "sk": "spiritualizmus", - "sl": "spiritualismi", - "sr": "спиритуализам", - "tr": "spiritüalizm", - "uk": "cпіритуалізм", - "vi": "duy linh luận", - "zh": "心靈論" - }, - "taoist": { - "ar": "طاوية", - "bg": "даоизъм", - "ca": "taoisme", - "cs": "taoismus", - "da": "taoisme", - "de": "daoismus", - "el": "ταοϊσμός", - "en": "taoism", - "es": "taoísmo", - "fi": "taolaisuus", - "fr": "taoïsme", - "he": "דאואיזם", - "hi": "ताओ धर्म", - "hr": "taoizam", - "hu": "taoizmus", - "id": "taoisme", - "is": "taóismi", - "it": "taoismo", - "ja": "道教", - "ko": "도교", - "lt": "daoizmas", - "lv": "daoisms", - "nb": "taoisme", - "nl": "taoïsme", - "pl": "taoizm", - "pt": "taoismo", - "ru": "даосизм", - "sk": "taoizmus", - "sl": "daoizem", - "sr": "таоизам", - "sv": "daoism", - "th": "ลัทธิเต๋า", - "tr": "taoizm", - "uk": "даосизм", - "vi": "đạo giáo", - "zh": "道教" - }, - "unitarian_universalist": { - "ar": "توحيدية عالمية", - "bg": "унитариански универсализъм", - "ca": "unitarisme universalista", - "cs": "unitářský universalismus", - "da": "unitarisk universalisme", - "en": "unitarian universalism", - "es": "unitarismo universalista", - "fi": "unitaariuniversalismi", - "fr": "universalisme unitarien", - "he": "אוניברסליזם אוניטריאני", - "hu": "unitárius univerzalizmus", - "id": "unitarian universalisme", - "it": "unitariani universalisti", - "ja": "ユニテリアン・ユニヴァーサリズム", - "ko": "유니테리언 유니버설리즘", - "nl": "unitaristisch universalisme", - "pl": "uniwersalizm unitariański", - "pt": "unitário-universalismo", - "ro": "universalism unitarian", - "ru": "унитарный универсализм", - "sl": "univerzalni unitarizem", - "sr": "унитарни универзализам", - "tr": "üniteryan üniversalizm", - "uk": "унітарний універсалізм", - "zh": "普救一位神教", - "zh-hk": "一神普救派" - }, - "voodoo": { - "ar": "الفودو الهايتي", - "bg": "хаитянско водоу", - "ca": "vudú haitià", - "cs": "haitské vúdú", - "el": "αϊτινό βουντού", - "en": "haitian vodou", - "es": "vudú haitiano", - "et": "haiti voodoo", - "fr": "vaudou haïtien", - "he": "וודו", - "hu": "vudu", - "it": "vudu", - "ja": "ハイチアン・ブードゥー", - "lt": "haitiečių vudu", - "nl": "vodou", - "pt": "vodu haitiano", - "ru": "вуду", - "sk": "vudu", - "sr": "хаићански вуду", - "zh": "巫毒娃娃" - }, - "yazidi": { - "ar": "الإيزيدية", - "bg": "езиди", - "ca": "iazidis", - "cs": "jezídové", - "da": "yazidisme", - "de": "jesiden", - "el": "γιαζίντι", - "en": "yazidis", - "es": "yazidíes", - "et": "jeziidid", - "fi": "jesidismi", - "fr": "yézidis", - "he": "יזידים", - "hi": "यज़ीदी", - "hr": "jesidi", - "hu": "jeziditák", - "id": "yazidi", - "is": "jasídar", - "it": "yazidi", - "ja": "ヤズィーディー", - "ko": "예지디", - "lt": "jazidizmas", - "lv": "jazīdi", - "nb": "jesidisme", - "nl": "jezidi's", - "pl": "jazydzi", - "pt": "iazidis", - "ro": "yazidiți", - "ru": "езиды", - "sk": "jezídovia", - "sr": "језиди", - "sv": "jezidism", - "tr": "yezidiler", - "uk": "єзиди", - "vi": "người yazidi", - "zh": "雅兹迪", - "zh-hk": "雅茲迪", - "zh-tw": "雅茲迪" - }, - "zoroastrian": { - "ar": "الزرادشتية", - "bg": "зороастризъм", - "ca": "zoroastrisme", - "cs": "zoroastrismus", - "da": "zarathustrianisme", - "de": "zoroastrismus", - "el": "ζωροαστρισμός", - "en": "zoroastrianism", - "es": "zoroastrismo", - "et": "zoroastrism", - "fi": "zarathustralaisuus", - "fr": "zoroastrisme", - "he": "זורואסטריות", - "hi": "पारसी धर्म", - "hr": "zoroastrizam", - "hu": "zoroasztrizmus", - "id": "zoroastrianisme", - "is": "sóróismi", - "it": "zoroastrismo", - "ja": "ゾロアスター教", - "ko": "조로아스터교", - "lt": "zoroastrizmas", - "lv": "zoroastrisms", - "nb": "zoroastrisme", - "nl": "zoroastrisme", - "pl": "zaratusztrianizm", - "pt": "zoroastrismo", - "ro": "zoroastrism", - "ru": "зороастризм", - "sk": "zoroastrizmus", - "sl": "zaratustrstvo", - "sr": "зороастризам", - "sv": "zoroastrism", - "th": "ศาสนาโซโรอัสเตอร์", - "tr": "zerdüştlük", - "uk": "зороастризм", - "vi": "hỏa giáo", - "zh": "琐罗亚斯德教", - "zh-cn": "祆教" - } - }, - "residential": { - "trailer_park": { - "da": "trailerpark", - "de": "wohnwagensiedlung", - "en": "trailer park", - "fr": "parc de maisons mobiles", - "it": "campo caravan", - "ja": "トレーラーパーク", - "nl": "woonwagenkamp", - "zh": "拖車公園" - } - }, - "resource": { - "aggregate": { - "ar": "زلط", - "ca": "àrid", - "cs": "kamenivo", - "en": "construction aggregate", - "fi": "murske", - "fr": "granulat de construction", - "ja": "骨材", - "nl": "toeslagmateriaal", - "pt": "agregado de construção civil", - "sr": "грађевински агрегат", - "sv": "makadam", - "tr": "agrega", - "vi": "cốt liệu xây dựng", - "zh": "骨料" - }, - "bauxite": { - "ar": "بوكسيت", - "bg": "боксит", - "ca": "bauxita", - "cs": "bauxit", - "da": "bauxit", - "de": "bauxit", - "el": "βωξίτης", - "en": "bauxite", - "es": "bauxita", - "et": "boksiit", - "fi": "bauksiitti", - "he": "בוקסיט", - "hi": "बाक्साइट", - "hr": "boksit", - "hu": "bauxit", - "id": "bauksit", - "is": "báxít", - "ja": "ボーキサイト", - "ko": "철반석", - "lt": "boksitas", - "lv": "boksīts", - "nb": "bauksitt", - "nl": "bauxiet", - "pl": "boksyt", - "pt": "bauxita", - "ro": "bauxită", - "ru": "боксит", - "sk": "bauxit", - "sl": "boksit", - "sr": "боксит", - "sv": "bauxit", - "tr": "boksit", - "uk": "боксити", - "vi": "bô xít", - "zh": "铝土矿", - "zh-hk": "鋁土礦", - "zh-tw": "鋁土礦" - }, - "clay": { - "ar": "صلصال", - "bg": "глина", - "ca": "argila", - "cs": "jíl", - "da": "ler", - "de": "ton", - "de-ch": "ton (bodenart)", - "el": "άργιλος", - "en": "clay", - "es": "arcilla", - "et": "savi", - "fi": "savi", - "fr": "argile", - "he": "חרסית", - "hi": "मृत्तिका", - "hr": "glina", - "hu": "agyag", - "id": "lempung", - "is": "leir", - "it": "argilla", - "ja": "粘土", - "ko": "점토", - "lt": "molis", - "lv": "māls", - "nb": "leire", - "nl": "klei", - "pl": "glina", - "pt": "argila", - "ro": "argilă", - "ru": "глина", - "sk": "íl", - "sl": "glina", - "sr": "глина", - "sv": "lera", - "th": "ดินเหนียว", - "tr": "kil", - "uk": "глина", - "vi": "đất sét", - "zh": "黏土" - }, - "coal": { - "ar": "فحم حجري", - "bg": "каменни въглища", - "ca": "carbó", - "cs": "uhlí", - "da": "kul", - "de": "kohle", - "el": "γαιάνθρακας", - "en": "coal", - "es": "carbón", - "et": "kivisüsi", - "fi": "kivihiili", - "fr": "charbon", - "he": "פחם", - "hi": "कोयला", - "hr": "ugljen", - "hu": "kőszén", - "id": "batu bara", - "is": "kol", - "it": "carbone", - "ja": "石炭", - "ko": "석탄", - "lt": "akmens anglis", - "lv": "akmeņogles", - "nb": "kull", - "nl": "steenkool", - "pl": "węgiel", - "pt": "carvão mineral", - "ro": "cărbune", - "ru": "ископаемый уголь", - "sk": "uhlie", - "sl": "premog", - "sr": "угаљ", - "sv": "kol", - "th": "ถ่านหิน", - "tr": "kömür", - "uk": "вугілля", - "vi": "than đá", - "zh": "煤" - }, - "copper": { - "ar": "نحاس", - "bg": "мед", - "ca": "coure", - "cs": "měď", - "da": "kobber", - "de": "kupfer", - "el": "χαλκός", - "en": "copper", - "es": "cobre", - "et": "vask", - "fi": "kupari", - "fr": "cuivre", - "he": "נחושת", - "hi": "ताम्र", - "hr": "bakar", - "hu": "réz", - "id": "tembaga", - "is": "kopar", - "it": "rame", - "ja": "銅", - "ko": "구리", - "lt": "varis", - "lv": "varš", - "nb": "kobber", - "nl": "koper", - "pl": "miedź", - "pt": "cobre", - "ro": "cupru", - "ru": "медь", - "sk": "meď", - "sl": "baker", - "sr": "бакар", - "sv": "koppar", - "th": "ทองแดง", - "tr": "bakır", - "uk": "мідь", - "vi": "đồng", - "zh": "銅", - "zh-cn": "铜" - }, - "gas": { - "ar": "غاز طبيعي", - "bg": "природен газ", - "ca": "gas natural", - "cs": "zemní plyn", - "da": "naturgas", - "de": "erdgas", - "el": "φυσικό αέριο", - "en": "natural gas", - "es": "gas natural", - "et": "maagaas", - "fi": "maakaasu", - "fr": "gaz naturel", - "he": "גז טבעי", - "hi": "प्राकृतिक गैस", - "hr": "prirodni plin", - "hu": "földgáz", - "id": "gas fosil", - "is": "jarðgas", - "it": "gas naturale", - "ja": "天然ガス", - "ko": "천연가스", - "lt": "gamtinės dujos", - "lv": "dabasgāze", - "nb": "naturgass", - "nl": "aardgas", - "pl": "gaz ziemny", - "pt": "gás natural", - "ro": "gaz natural", - "ru": "природный газ", - "sk": "zemný plyn", - "sl": "zemeljski plin", - "sr": "природни гас", - "sv": "naturgas", - "th": "แก๊สธรรมชาติ", - "tr": "doğalgaz", - "uk": "природний газ", - "vi": "khí thiên nhiên", - "zh": "天然气" - }, - "gold": { - "ar": "ذهب", - "bg": "злато", - "ca": "or", - "cs": "zlato", - "da": "guld", - "el": "χρυσός", - "en": "gold", - "es": "oro", - "et": "kuld", - "fi": "kulta", - "fr": "or", - "he": "זהב", - "hi": "सोना", - "hr": "zlato", - "hu": "arany", - "id": "emas", - "is": "gull", - "it": "oro", - "ja": "金", - "ko": "금", - "lt": "auksas", - "lv": "zelts", - "nb": "gull", - "nl": "goud", - "pl": "złoto", - "pt": "ouro", - "ro": "aur", - "ru": "золото", - "sk": "zlato", - "sl": "zlato", - "sr": "злато", - "sv": "guld", - "th": "ทองคำ", - "tr": "altın", - "uk": "золото", - "vi": "vàng", - "zh": "金" - }, - "gravel": { - "ar": "حصى", - "bg": "баластра", - "ca": "grava", - "cs": "štěrk", - "da": "grus", - "de": "kiesel", - "el": "γαρμπίλι", - "en": "gravel", - "es": "grava", - "et": "kruus", - "fi": "sora", - "fr": "gravier", - "he": "חצץ", - "hi": "कंकड़", - "hr": "šljunak", - "hu": "törmelék", - "id": "kerikil", - "it": "ghiaia", - "ja": "礫", - "ko": "자갈", - "lt": "žvyras", - "lv": "grants", - "nb": "grus", - "nl": "grind", - "pl": "żwir", - "pt": "cascalho", - "ro": "pietriș", - "ru": "гравий", - "sk": "štrk", - "sl": "prod", - "sr": "шљунак", - "sv": "grus", - "th": "กรวด", - "tr": "mucur", - "uk": "гравій", - "vi": "sỏi", - "zh": "砾石", - "zh-hk": "礫石", - "zh-tw": "礫石" - }, - "iron_ore": { - "ar": "خام حديد", - "bg": "желязна руда", - "ca": "mena de ferro", - "cs": "železná ruda", - "da": "jernmalm", - "de": "eisenerz", - "el": "σιδηρομετάλλευμα", - "en": "iron ore", - "et": "rauamaak", - "fi": "rautamalmi", - "fr": "minerai de fer", - "he": "עפרת ברזל", - "hi": "लौह अयस्क", - "hr": "željezna ruda", - "hu": "vasérc", - "id": "bijih besi", - "is": "járngrýti", - "it": "minerali ferrosi", - "ja": "鉄鉱石", - "ko": "철광석", - "lt": "geležies rūda", - "lv": "dzelzsrūda", - "nb": "jernmalm", - "nl": "ijzererts", - "pl": "ruda żelaza", - "pt": "minério de ferro", - "ro": "minereu de fier", - "ru": "железная руда", - "sk": "železná ruda", - "sr": "руда гвожђа", - "sv": "järnmalm", - "tr": "demir cevheri", - "uk": "залізна руда", - "vi": "quặng sắt", - "zh": "铁矿", - "zh-hk": "鐵礦", - "zh-tw": "鐵礦" - }, - "limestone": { - "ar": "حجر جيري", - "bg": "варовик", - "ca": "pedra calcària", - "cs": "vápenec", - "da": "kalksten", - "de": "kalkstein", - "el": "ασβεστόλιθος", - "en": "limestone", - "es": "caliza", - "et": "lubjakivi", - "fi": "kalkkikivi", - "fr": "calcaire", - "he": "אבן גיר", - "hi": "चूना पत्थर", - "hr": "vapnenac", - "hu": "mészkő", - "id": "gamping", - "is": "kalksteinn", - "it": "calcare", - "ja": "石灰岩", - "ko": "석회암", - "lt": "klintis", - "lv": "kaļķakmens", - "nb": "kalkstein", - "nl": "kalksteen", - "pl": "wapień", - "pt": "calcário", - "ro": "calcar", - "ru": "известняк", - "sk": "vápenec", - "sl": "apnenec", - "sr": "кречњак", - "sv": "kalksten", - "th": "หินปูน", - "tr": "kireç taşı", - "uk": "вапняк", - "vi": "đá vôi", - "zh": "石灰岩" - }, - "oil": { - "ar": "نفط", - "bg": "нефт", - "ca": "petroli", - "cs": "ropa", - "da": "råolie", - "de": "erdöl", - "el": "πετρέλαιο", - "en": "petroleum", - "es": "petróleo", - "et": "nafta", - "fi": "maaöljy", - "fr": "pétrole", - "he": "נפט", - "hi": "भूतैल", - "hr": "nafta", - "hu": "kőolaj", - "id": "minyak bumi", - "is": "hráolía", - "it": "petrolio", - "ja": "石油", - "ko": "석유", - "lt": "nafta", - "lv": "nafta", - "nl": "aardolie", - "pl": "ropa naftowa", - "pt": "petróleo", - "ro": "petrol", - "ru": "нефть", - "sk": "ropa", - "sl": "nafta", - "sr": "нафта", - "th": "น้ำมันดิบปิโตรเลียม", - "tr": "petrol", - "uk": "нафта", - "vi": "dầu mỏ", - "zh": "石油" - }, - "peat": { - "ar": "خث", - "bg": "торф", - "ca": "torba", - "cs": "rašelina", - "da": "tørv", - "de": "torf", - "el": "τύρφη", - "en": "peat", - "es": "turba", - "et": "turvas", - "fi": "turve", - "fr": "tourbe", - "he": "כבול", - "hi": "पीट", - "hr": "treset", - "hu": "tőzeg", - "id": "gambut", - "is": "mór", - "it": "torba", - "ja": "泥炭", - "ko": "이탄", - "lt": "durpės", - "lv": "kūdra", - "nb": "torv", - "nl": "turf", - "pl": "torf", - "pt": "turfa", - "ro": "turbă", - "ru": "торф", - "sk": "rašelina", - "sr": "тресет", - "sv": "torv", - "th": "พีต", - "tr": "torf", - "uk": "торф", - "vi": "than bùn", - "zh": "泥炭" - }, - "sand": { - "ar": "رمل", - "bg": "пясък", - "ca": "sorra", - "cs": "písek", - "el": "άμμος", - "en": "sand", - "es": "arena", - "et": "liiv", - "fi": "hiekka", - "fr": "sable", - "he": "חול", - "hi": "बालू", - "hr": "pijesak", - "hu": "homok", - "id": "pasir", - "is": "sandur", - "it": "sabbia", - "ja": "砂", - "ko": "모래", - "lt": "smėlis", - "lv": "smiltis", - "nl": "zand", - "pl": "piasek", - "pt": "areia", - "ro": "nisip", - "ru": "песок", - "sk": "piesok", - "sl": "pesek", - "sr": "песак", - "th": "ทราย", - "tr": "kum", - "uk": "пісок", - "vi": "cát", - "zh": "沙" - }, - "water": { - "ar": "ماء", - "bg": "вода", - "ca": "aigua líquida", - "cs": "tekutá voda", - "da": "flydende vand", - "de": "flüssiges wasser", - "de-ch": "wasser", - "el": "νερό", - "en": "liquid water", - "en-ca": "water", - "en-gb": "water", - "es": "agua líquida", - "et": "vesi", - "fi": "vesi", - "fr": "eau liquide", - "he": "מים נוזליים", - "hi": "जल", - "hr": "voda", - "hu": "folyékony víz", - "id": "air cair", - "is": "vatn", - "it": "acqua liquida", - "ja": "液体の水", - "ko": "액체 물", - "lt": "vanduo", - "lv": "šķidrs ūdens", - "nb": "flytende vann", - "nl": "vloeibaar water", - "pl": "ciekła woda", - "pt": "água líquida", - "pt-br": "água", - "ro": "apă", - "ru": "жидкая вода", - "sk": "voda", - "sl": "tekoča voda", - "sr": "течна вода", - "sv": "flytande vatten", - "th": "น้ำ", - "tr": "su", - "uk": "рідка вода", - "vi": "nước", - "zh": "液态水", - "zh-cn": "水", - "zh-hk": "水", - "zh-tw": "液態水" - } - }, - "road_marking": { - "solid_stop_line": { - "de": "haltlinie", - "en": "stop line", - "ru": "стоп-линия" - } - }, - "robot": { - "": { - "ar": "طائرة بدون طيار", - "bg": "дрон", - "ca": "vehicle aeri no tripulat", - "cs": "bezpilotní letoun", - "da": "drone", - "de": "unbemanntes luftfahrzeug", - "el": "μη επανδρωμένες ιπτάμενες μηχανές", - "en": "unmanned aerial vehicle", - "es": "vehículo aéreo no tripulado", - "et": "mehitamata õhusõiduk", - "fi": "miehittämätön ilma-alus", - "fr": "drone", - "he": "כלי טיס בלתי מאויש", - "hi": "मानव रहित विमान", - "hr": "bespilotna letjelica", - "hu": "pilóta nélküli repülőgép", - "id": "pesawat nirawak", - "is": "dróni", - "it": "aeromobile a pilotaggio remoto", - "ja": "無人航空機", - "ko": "무인 항공기", - "lt": "bepilotis orlaivis", - "lv": "bezpilota lidaparāts", - "nb": "drone", - "nl": "onbemand luchtvaartuig", - "pl": "bezzałogowy aparat latający", - "pt": "veículo aéreo não tripulado", - "ro": "aeronavă fără pilot", - "ru": "беспилотный летательный аппарат", - "sk": "bezpilotný prostriedok", - "sl": "vojaško brezpilotno letalo", - "sr": "беспилотна летелица", - "sv": "obemannad luftfarkost", - "th": "อากาศยานไร้คนขับ", - "tr": "insansız hava aracı", - "uk": "безпілотний літальний апарат", - "vi": "máy bay không người lái", - "zh": "無人航空載具", - "zh-cn": "无人驾驶飞行器", - "zh-tw": "類人型機器人" - } - }, - "roof": { - "": { - "ar": "قبة", - "bg": "купол", - "ca": "cúpula", - "cs": "kupole", - "da": "kuppel", - "de": "kuppel", - "el": "τρούλος", - "en": "dome", - "es": "cúpula", - "et": "kuppel", - "fi": "kupoli", - "fr": "dôme", - "he": "כיפה", - "hi": "गुम्बज़", - "hr": "kupola", - "hu": "kupola", - "id": "kubah", - "is": "hvolfþak", - "it": "cupola", - "ja": "ドーム", - "ko": "돔", - "lt": "kupolas", - "lv": "kupols", - "nb": "kuppel", - "nl": "koepel", - "pl": "kopuła", - "pt": "cúpula", - "ro": "dom", - "ru": "купол", - "sk": "kupola", - "sl": "kupola", - "sr": "купола", - "sv": "kupol", - "th": "โดม", - "tr": "kubbe", - "uk": "купол", - "vi": "kiến trúc vòm", - "zh": "圓頂" - } - }, - "room": { - "auditorium": { - "ar": "قاعة استماع", - "ca": "auditori", - "cs": "hlediště", - "el": "αίθουσα", - "en": "auditorium", - "es": "auditorio", - "fi": "auditorio", - "he": "אודיטוריום", - "hr": "auditorij", - "ja": "オーディトリアム", - "ko": "오디토리엄", - "pl": "widownia", - "pt": "auditório", - "ro": "aulă", - "ru": "зрительный зал", - "sk": "auditórium (verejná sieň)", - "sl": "avditorij", - "tr": "oditoryum", - "uk": "авдиторія", - "vi": "khán phòng", - "zh": "集會堂", - "zh-tw": "表演廳" - }, - "lecture_hall": { - "ar": "صالة محاضرات", - "bg": "аудитория", - "ca": "amfiteatre", - "cs": "auditorium", - "da": "auditorium", - "de": "hörsaal", - "el": "αίθουσα διαλέξεων", - "en": "lecture hall", - "es": "anfiteatro (aula)", - "fr": "amphithéâtre", - "he": "אולם הרצאות", - "it": "sala conferenze", - "ko": "계단식 강의실", - "nb": "auditorium", - "nl": "lezingzaal", - "pl": "audytorium", - "ro": "aulă", - "ru": "аудитория", - "sv": "hörsal", - "uk": "слухальня", - "zh": "演講廳" - }, - "waiting": { - "ar": "غرفة الانتظار", - "bg": "чакалня", - "ca": "sala d'espera", - "cs": "čekárna", - "da": "ventesal", - "de": "wartehalle", - "el": "αίθουσα αναμονής", - "en": "waiting room", - "es": "sala de espera", - "et": "ooteruum", - "fi": "odotustila", - "fr": "salle d'attente", - "hu": "váróterem", - "it": "sala d'aspetto", - "ja": "待合室", - "ko": "맞이방", - "nl": "wachtkamer", - "pl": "poczekalnia", - "ru": "зал ожидания", - "sv": "väntsal", - "uk": "зал очікування", - "vi": "phòng chờ", - "zh": "等待室", - "zh-cn": "候车室" - } - }, - "roundtrip": { - "yes": { - "ca": "línia circular", - "cs": "okružní linka", - "da": "ringlinje", - "de": "ringlinie", - "en": "circle route", - "es": "línea circular", - "fr": "ligne de transport en commun circulaire", - "hu": "körjárat", - "id": "rute melingkar", - "ja": "環状線", - "nl": "ringlijn", - "pl": "linia okólna", - "pt": "linha circular", - "ru": "круговой маршрут", - "sv": "ringlinje", - "zh": "環線" - } - }, - "route": { - "bus": { - "ca": "línia d'autobús", - "da": "buslinje", - "de": "buslinie", - "el": "γραμμή λεωφορείου", - "en": "bus route", - "es": "línea de autobús", - "et": "bussiliin", - "fi": "linja-autolinja", - "fr": "ligne d'autobus", - "he": "קו אוטובוס", - "hu": "autóbuszvonal", - "id": "trayek bus", - "it": "linea di autobus", - "ja": "バス路線", - "ko": "버스 노선", - "lv": "autobusu maršruts", - "nb": "bussrute", - "nl": "buslijn", - "pl": "linia autobusowa", - "pt": "linha de ônibus", - "ru": "автобусный маршрут", - "sv": "busslinje", - "tr": "otobüs güzergâhı", - "zh": "巴士路線", - "zh-tw": "公車路線" - }, - "detour": { - "ar": "تحويلة مرورية", - "de": "umleitung", - "en": "detour", - "it": "deviazione", - "ja": "迂回路", - "nb": "omvei", - "nl": "uitwijkroute", - "ru": "объезд (маршрут)", - "sv": "omväg", - "zh": "便道" - }, - "evacuation": { - "ar": "الإجلاء في حالات الطوارئ", - "bg": "евакуация", - "ca": "evacuació d'emergència", - "cs": "evakuace", - "da": "evakuering", - "de": "evakuierung", - "en": "emergency evacuation", - "es": "evacuación", - "fi": "evakuointi", - "fr": "évacuation d'urgence", - "he": "פינוי חירום", - "it": "evacuazione", - "ja": "避難", - "ko": "긴급소개", - "lt": "evakuacija", - "nb": "rømning", - "nl": "evacuatie", - "pl": "ewakuacja", - "pt": "evacuação", - "ro": "evacuare", - "ru": "эвакуация", - "sk": "evakuácia", - "sl": "evakuacija", - "sr": "evakuacija", - "sv": "evakuering", - "th": "การอพยพฉุกเฉิน", - "tr": "acil tahliye", - "uk": "евакуація", - "zh": "紧急撤离" - }, - "fitness_trail": { - "ar": "مضمار اللياقة", - "de": "trimm-dich-pfad", - "en": "fitness trail", - "et": "terviserada", - "fr": "parcours de santé", - "nl": "trimbaan", - "pl": "ścieżka zdrowia", - "ru": "оздоровительная тропа", - "tr": "fitness parkuru", - "zh": "健身步道" - }, - "hiking": { - "ca": "sender", - "cs": "pěší stezka", - "da": "vandrerute", - "de": "wanderweg", - "el": "μονοπάτι", - "en": "hiking trail", - "es": "sendero", - "et": "matkarada", - "fi": "vaellusreitti", - "fr": "sentier de randonnée", - "he": "שביל טיול", - "hu": "turistaút", - "it": "sentiero escursionistico", - "ja": "ハイキングコース", - "ko": "등산길", - "nb": "tursti", - "nl": "wandelpad", - "pl": "ścieżka turystyczna", - "pt": "percurso pedestre", - "ro": "traseu turistic", - "ru": "туристическая тропа", - "sr": "планинарска стаза", - "sv": "vandringsled", - "tr": "yürüyüş yolu", - "uk": "туристична стежка", - "zh": "步道" - }, - "piste": { - "bg": "ски писта", - "ca": "pista d'esquí", - "cs": "sjezdovka", - "de": "skipiste", - "en": "piste", - "es": "pista de esquí", - "et": "suusamägi", - "fi": "laskettelurinne", - "fr": "piste de ski", - "it": "pista sciistica", - "ja": "スキーコース", - "nl": "skipiste", - "pl": "trasa narciarska", - "pt": "pista de esqui", - "ro": "pârtie", - "ru": "горнолыжная трасса", - "sl": "smučišče", - "sv": "skidbacke", - "uk": "гірськолижна траса", - "zh": "雪道" - }, - "railway": { - "ar": "طريق/خط السكة الحديدية", - "ca": "ferrocarril", - "cs": "železnice", - "da": "jernbane", - "de": "eisenbahn", - "el": "σιδηρόδρομος", - "en": "railway", - "es": "ferrocarril", - "et": "raudtee", - "fi": "rautatie", - "fr": "chemin de fer", - "he": "רשת רכבות", - "hi": "रेल", - "hr": "željeznica", - "hu": "vasút", - "is": "lestarsamgöngur", - "it": "ferrovia", - "ja": "鉄道", - "ko": "철도", - "lt": "geležinkelis", - "lv": "dzelzceļš", - "nb": "jernbane", - "nl": "spoorwegen", - "pl": "kolej", - "pt": "ferrovia", - "ro": "cale ferată", - "ru": "железная дорога", - "sk": "železnica", - "sl": "železnica", - "sr": "железница", - "sv": "järnväg", - "th": "การขนส่งระบบราง", - "tr": "demiryolu", - "uk": "залізниця", - "vi": "đường sắt", - "zh": "鐵路系統", - "zh-cn": "铁路系统" - }, - "road": { - "ar": "طريق", - "bg": "път", - "ca": "carretera", - "cs": "silnice", - "da": "vej", - "de": "straße", - "de-ch": "strasse", - "el": "δρόμος", - "en": "road", - "es": "carretera", - "et": "tee", - "fi": "tie", - "fr": "route", - "he": "כביש", - "hi": "सड़क", - "hr": "cesta", - "hu": "út", - "id": "jalan", - "is": "vegur", - "it": "strada", - "ja": "道路", - "ko": "도로", - "lt": "kelias", - "lv": "ceļš", - "nb": "vei", - "nl": "weg", - "pl": "droga", - "pt": "estrada", - "ro": "drum", - "ru": "дорога", - "sk": "cesta", - "sl": "cesta", - "sr": "пут", - "sv": "väg", - "th": "ถนน", - "tr": "yol", - "uk": "дорога", - "vi": "đường giao thông", - "zh": "道路" - }, - "snowmobile": { - "ar": "زلاقة الجليد الآلية", - "bg": "снегоход", - "ca": "moto de neu", - "cs": "sněžný skútr", - "da": "snescooter", - "de": "schneemobil", - "el": "ατομικό όχημα χιονιού", - "en": "snowmobile", - "es": "motonieve", - "et": "mootorsaan", - "fi": "moottorikelkka", - "fr": "motoneige", - "he": "אופנוע שלג", - "id": "mobil salju", - "is": "vélsleði", - "it": "motoslitta", - "ja": "スノーモービル", - "ko": "설상차", - "lt": "sniego rogės", - "lv": "sniega motocikls", - "nb": "snøskuter", - "nl": "sneeuwscooter", - "pl": "skuter śnieżny", - "pt": "moto de neve", - "ro": "snowmobil", - "ru": "снегоход", - "sk": "snežný skúter", - "sl": "motorne sani", - "sv": "snöskoter", - "tr": "karmobil", - "uk": "снігохід", - "zh": "雪上摩托車" - }, - "subway": { - "ar": "خط قطار سريع", - "ca": "línia de metro", - "cs": "linka metra", - "da": "metrolinje", - "de": "u-bahn-linie", - "el": "γραμμή μετρό", - "en": "rapid transit railway line", - "en-gb": "metro line", - "es": "línea de metro", - "fi": "metrolinja", - "fr": "ligne de métro", - "he": "קו מטרו", - "hu": "metróvonal", - "id": "jalur kereta api cepat", - "it": "linea di metropolitana", - "ja": "地下鉄路線", - "ko": "지하철 노선", - "nb": "metrostrekning", - "nl": "metrolijn", - "pl": "linia metra", - "pt": "linha de metropolitano", - "pt-br": "linha de metrô", - "ro": "linie de metrou", - "ru": "линия метрополитена", - "sk": "linka metra", - "sr": "линија метроа", - "sv": "tunnelbanelinje", - "tr": "metro hattı", - "uk": "лінія метрополітену", - "zh": "地鐵路線", - "zh-cn": "地铁线路", - "zh-hk": "地鐵路綫", - "zh-tw": "捷運路線" - }, - "train": { - "ca": "línia principal", - "da": "hovedbane", - "de": "hauptbahn", - "en": "main line", - "fi": "päärata", - "fr": "ligne de chemin de fer principale", - "hu": "vasúti fővonal", - "ja": "本線", - "ko": "간선철도", - "nl": "hoofdspoorweg", - "pl": "magistrala kolejowa", - "ro": "magistrală", - "sv": "stambana", - "tr": "ana demiryolu hattı", - "zh": "正线", - "zh-hk": "正線" - }, - "transhumance": { - "ca": "transhumància", - "de": "transhumanz", - "en": "transhumance", - "es": "trashumancia", - "he": "נדידה עונתית של רועים", - "hr": "transhumanca", - "hu": "transzhumáló pásztorkodás", - "it": "transumanza", - "ja": "移牧", - "ko": "이목", - "nb": "transhumans", - "pl": "transhumancja", - "pt": "transumância", - "ro": "transhumanță", - "ru": "отгонное животноводство", - "sl": "transhumanca", - "sr": "трансхумација", - "tr": "yaylacılık", - "uk": "відгінний випас худоби", - "zh": "移牧" - } - }, - "safety": { - "": { - "de": "gesichtsmaske vorgeschrieben", - "en": "face mask mandatory", - "fr": "port du masque obligatoire", - "nl": "mondmasker vereist", - "pl": "obowiązek noszenia maseczki ochronnej", - "pt": "uso de máscara obrigatório" - } - }, - "sauna": { - "hanjeungmak": { - "en": "hanjeungmak", - "ko": "한증막" - }, - "infrared": { - "ar": "ساونا الأشعة تحت الحمراء", - "cs": "infrasauna", - "de": "infrarotwärmekabine", - "en": "infrared sauna", - "ko": "적외선 사우나", - "ru": "инфракрасная сауна", - "vi": "phòng tắm hơi tia hồng ngoại" - }, - "smoke": { - "de": "rauchsauna", - "en": "smoke sauna", - "et": "suitsusaun", - "fi": "savusauna", - "hr": "tradicija parnih kupelji iz võromaa", - "ja": "サヴサウナ", - "nb": "røykbadstue", - "nl": "rooksauna", - "pt": "sauna de fumo", - "sv": "rökbastu" - } - }, - "school": { - "": { - "ar": "مدرسة شاملة", - "ca": "escola d'educació especial", - "cs": "reálka", - "da": "realskole", - "de": "förderschule", - "de-ch": "gesamtschule", - "en": "special education school", - "en-ca": "comprehensive school", - "en-gb": "comprehensive school", - "es": "escuela de educación especial", - "et": "erikool", - "fi": "erityiskoulu", - "fr": "école spécialisée", - "he": "בית ספר לחינוך מיוחד", - "hu": "kisegítő iskola", - "id": "sekolah komprehensif", - "it": "comprehensive schools", - "ja": "特殊学校", - "ko": "특수학교", - "lv": "speciālās izglītības skola", - "nb": "spesialskole", - "nl": "school voor speciaal onderwijs", - "pl": "gimnazjum realne", - "pt": "necessidades educativas especiais", - "ru": "коррекционная школа", - "sr": "специјална школа", - "sv": "särskola", - "tr": "meslek okulu", - "uk": "загальноосвітня школа", - "zh": "特殊學校", - "zh-cn": "综合学校" - } - }, - "seamark": { - "": { - "ar": "مزرعة الرياح البحرية", - "bg": "абисално дъно", - "ca": "parc eòlic marí", - "cs": "hlubokomořská rovina", - "da": "havvindmøllepark", - "de": "offshore-windpark", - "el": "νεωλκείο", - "en": "offshore wind farm", - "es": "llanura abisal", - "et": "abüssaalne tasandik", - "fi": "veneenlaskupaikka", - "fr": "parc éolien en mer", - "he": "חוות טורבינות רוח ימית", - "hi": "अगाध मैदान", - "hr": "priobalna vjetroelektrana", - "hu": "híd", - "id": "peternakan angin lepas pantai", - "is": "brú", - "it": "parco eolico offshore", - "ja": "釣魚禁止", - "ko": "슬립웨이", - "lt": "tiltas", - "lv": "jūras vēja ferma", - "nb": "havvindmøllepark", - "nl": "abyssale vlakte", - "pl": "morska farma wiatrowa", - "pt": "parque eólico em alto-mar", - "pt-br": "ponte", - "ro": "pod", - "ru": "не нырять", - "sk": "most", - "sl": "odobalna vetrna energija", - "sr": "мост", - "sv": "havsbaserad vindkraftspark", - "th": "ที่ราบก้นสมุทร", - "tr": "abisal düzlük", - "uk": "абісальна рівнина", - "vi": "đồng bằng biển thẳm", - "zh": "海上風電場", - "zh-cn": "桥", - "zh-hk": "橋" - } - }, - "service": { - "": { - "de": "fahrradwerkstatt", - "en": "cycle repair shop", - "fr": "atelier de réparation de cycles" - }, - "aircraft_control": { - "ar": "برج مراقبة", - "ca": "torre de control", - "cs": "řídicí věž", - "da": "kontroltårn", - "de": "tower", - "el": "πύργος ελέγχου", - "en": "control tower", - "es": "torre de control", - "et": "lennujuhtimistorn", - "fi": "lähilennonjohto", - "fr": "tour de contrôle", - "he": "מגדל פיקוח", - "hu": "irányítótorony", - "it": "torre di controllo", - "ja": "管制塔", - "nb": "kontrolltårn", - "nl": "verkeerstoren", - "pl": "wieża kontroli lotów", - "pt": "torre de controle", - "ru": "командно-диспетчерский пункт", - "sk": "letisková riadiaca veža", - "sr": "контролни торањ", - "sv": "kontrolltorn", - "uk": "командно-диспетчерський пункт", - "zh": "塔台" - }, - "alley": { - "ar": "زقاق", - "ca": "carreró", - "cs": "ulička", - "da": "stræde", - "de": "gasse", - "el": "δρομάκι", - "en": "alley", - "es": "callejón", - "et": "põiktänav", - "fi": "kuja", - "fr": "ruelle", - "he": "סמטה", - "hu": "köz", - "id": "gang", - "it": "vicolo", - "ja": "路地", - "ko": "골목", - "nb": "bakgate", - "nl": "steeg", - "pt-br": "beco", - "ro": "stradelă", - "ru": "переулок", - "sv": "gränd", - "tr": "dar sokak", - "uk": "провулок", - "zh": "巷" - }, - "commuter": { - "ca": "servei de tren de rodalies", - "cs": "linka příměstské železnice", - "de": "vorortbahnlinie", - "en": "commuter rail service", - "es": "línea de tren de cercanías", - "fr": "ligne de trains de banlieue", - "ja": "通勤列車サービス", - "nl": "voorstadstreindienst", - "pt": "linha de comboio suburbana", - "pt-br": "linha de trem suburbana", - "ru": "пригородное железнодорожное сообщение", - "sv": "pendeltågstrafik", - "zh": "通勤铁路路线" - }, - "driveway": { - "ar": "درب", - "ca": "pas de vehicles", - "de": "zufahrt", - "en": "driveway", - "es": "vado de vehículos", - "fr": "entrée carrossable", - "it": "passo carrabile", - "ja": "私有車道", - "nl": "oprijlaan", - "zh": "私家車道" - }, - "siding": { - "da": "sidespor", - "de": "nebengleis", - "en": "siding", - "fr": "voie d’évitement", - "he": "עקלתון", - "hu": "mellékvágány", - "id": "sepur simpang", - "ja": "側線 (鉄道)", - "nb": "sidespor", - "nl": "nevenspoor", - "pl": "tor boczny", - "pt": "desvio", - "sv": "sidospår", - "zh": "侧线", - "zh-cn": "置留线", - "zh-hk": "側線" - }, - "spur": { - "cs": "železniční vlečka", - "de": "stillgelegter gleisanschluss", - "en": "abandoned industrial spur", - "fr": "embranchement particulier", - "hu": "iparvágány", - "it": "raccordo ferroviario", - "nl": "verlaten zijspoor", - "pl": "bocznica kolejowa", - "ru": "подъездные пути", - "sk": "vlečka", - "sv": "kapillärnät", - "uk": "під'їзна колія", - "zh": "侧线" - }, - "yard": { - "ar": "ساحة السكك الحديدية", - "ca": "dipòsit de trens", - "cs": "kolejiště", - "da": "ranger- og opstillingsbanegård", - "de": "rangierbahnhof", - "en": "rail yard", - "es": "depósito de trenes", - "et": "teedepark", - "fi": "ratapiha", - "fr": "dépôt de trains", - "he": "חצר רכבות", - "hu": "rendező pályaudvar", - "id": "emplasemen", - "it": "deposito ferroviario", - "ja": "車両基地", - "ko": "차량기지", - "nl": "opstelterrein", - "pt": "pátio de trens", - "ro": "depou", - "ru": "парк путей", - "sv": "bangård", - "uk": "горловина станції", - "zh": "车辆段", - "zh-hk": "鐵路車廠", - "zh-tw": "機廠" - } - }, - "shelter_type": { - "dugout": { - "bg": "землянка", - "cs": "zemnice", - "de": "wohnhöhle", - "en": "dugout", - "es": "arquitectura subterránea", - "fi": "korsu", - "hr": "zemunica", - "ja": "竪穴式住居", - "lt": "žeminė", - "nl": "dug-out", - "pl": "ziemianka", - "ru": "землянка", - "sk": "zemľanka", - "sl": "zemljanka", - "sr": "земуница", - "sv": "korsu", - "uk": "землянка", - "zh": "地下掩體" - }, - "lean_to": { - "da": "shelter", - "en": "lean-to", - "es": "alpendre", - "fi": "kiintolaavu", - "fr": "appentis", - "ja": "片流れの屋根", - "lt": "pastogė", - "nb": "gapahuk", - "pt": "puxadinho", - "ru": "лабаз", - "sv": "vindskydd", - "uk": "лабаз" - }, - "picnic_shelter": { - "da": "picnichytte", - "en": "picnic shelter", - "fr": "abri de pique-nique" - }, - "public_transport": { - "cs": "zastávkový přístřešek", - "de": "fahrgastunterstand", - "en": "public transport shelter", - "fr": "abri de transport en commun", - "it": "pensilina" - } - }, - "shop": { - "agrarian": { - "de": "agrargeschäft", - "en": "agrarian shop", - "fr": "magasin agricole" - }, - "alcohol": { - "ar": "قبو", - "ca": "celler", - "cs": "vinný sklep", - "da": "vinkælder", - "de": "spirituosengeschäft", - "el": "κελάρι κρασιών", - "en": "liquor store", - "es": "licorería", - "et": "veinikelder", - "fi": "viinikellari", - "fr": "caviste", - "he": "מרתף יינות", - "hr": "vinski podrum", - "hu": "italbolt", - "it": "cantina", - "ja": "酒屋", - "nb": "alkoholutsalg", - "nl": "slijterij", - "pl": "sklep monopolowy", - "pt": "botillería", - "ro": "magazin de băuturi", - "ru": "винный погреб", - "sv": "vinkällare", - "tr": "şarap kavı", - "uk": "винниця", - "zh": "酒铺" - }, - "anime": { - "de": "animeladen", - "en": "anime shop", - "ja": "アニメショップ", - "nl": "animewinkel", - "zh": "動畫商店" - }, - "antiques": { - "bg": "антиквариат", - "cs": "starožitnictví", - "de": "antiquitätengeschäft", - "en": "antique shop", - "es": "tienda de antigüedades", - "fi": "antikvariaatti", - "fr": "antiquaire", - "it": "antiquariato", - "ja": "骨董品店", - "ko": "골동품 상점", - "nb": "antikvitetshandel", - "nl": "antiekwinkel", - "pl": "antykwariat", - "pt": "antiquário", - "sl": "starinarna", - "sv": "antikaffär", - "tr": "antika satıcısı", - "vi": "cửa hàng đồ cổ", - "zh": "藝術與古董購物" - }, - "appliance": { - "de": "haushaltsgerätladen", - "en": "appliance store" - }, - "art": { - "de": "kunstgalerie", - "en": "commercial art gallery", - "es": "galería de arte comercial", - "et": "müügigalerii", - "fr": "galerie d'art", - "he": "גלריית אמנות מסחרית", - "id": "galeri seni komersial", - "ja": "商業芸術ギャラリー", - "nl": "kunstgalerie", - "uk": "комерційна галерея мистецтв", - "zh-tw": "商業藝廊" - }, - "atv": { - "de": "quadladen", - "en": "quad shop" - }, - "baby_goods": { - "de": "babykleidergeschäft", - "en": "baby clothing shop", - "fr": "magasin de puériculture", - "it": "negozio di articoli per bambini", - "nl": "babywinkel" - }, - "bag": { - "de": "taschengeschäft", - "en": "bag shop", - "fr": "magasin de maroquinerie", - "nl": "tassenwinkel" - }, - "bakery": { - "ar": "مخبز", - "bg": "пекарна", - "ca": "forn de pa", - "cs": "pekárna", - "da": "bageri", - "de": "bäckerei", - "el": "αρτοποιείο", - "en": "julie's", - "en-ca": "bakery", - "en-gb": "bakery", - "es": "panadería", - "fi": "leipomo", - "fr": "boulangerie", - "he": "מאפייה", - "hr": "pekarnica", - "hu": "pékség", - "id": "toko roti", - "is": "bakarí", - "it": "panificio", - "ja": "ベーカリー", - "ko": "베이커리", - "lv": "ceptuve", - "nb": "bakeri", - "nl": "bakkerij", - "pl": "piekarnia", - "pt": "padaria", - "ro": "brutărie", - "ru": "пекарня", - "sk": "pekáreň", - "sl": "pekarna", - "sr": "пекара", - "sv": "bageri", - "th": "ร้านขนมปัง", - "tr": "ekmek fırını", - "uk": "пекарня", - "vi": "tiệm bánh", - "zh": "西餅店", - "zh-cn": "西饼店" - }, - "bathroom_furnishing": { - "de": "badezimmermöbelgeschäft", - "en": "bathroom furnishing store" - }, - "beauty": { - "ar": "صالون تجميل", - "ca": "saló de bellesa", - "de": "schönheitssalon", - "en": "beauty salon", - "es": "salón de belleza", - "et": "ilusalong", - "fi": "kauneushoitola", - "fr": "salon de beauté", - "he": "מכון יופי", - "hu": "szépségszalon", - "id": "salon", - "ja": "美容サロン", - "ko": "미용실", - "nl": "schoonheidssalon", - "pt": "salão de beleza", - "ru": "салон красоты", - "sv": "skönhetssalong", - "tr": "güzellik salonu", - "uk": "салон краси", - "vi": "thẩm mỹ viện", - "zh": "美容院" - }, - "bed": { - "de": "bettengeschäft", - "en": "bed shop", - "fr": "magasin de literie" - }, - "beverages": { - "de": "getränkemarkt", - "en": "beverage shop", - "fr": "magasin de boissons", - "nl": "drankwinkel", - "zh": "饮品店" - }, - "bicycle": { - "da": "cykelforretning", - "de": "fahrradladen", - "en": "bike shop", - "es": "bicicletería", - "fr": "magasin de vélo", - "he": "חנות אופניים", - "hu": "kerékpár üzlet", - "it": "negozio di biciclette", - "ja": "自転車店", - "ko": "자전거 판매점", - "nl": "fietsenwinkel" - }, - "boat": { - "de": "bootsladen", - "en": "boat shop" - }, - "bookmaker": { - "ar": "مراهنة", - "ca": "corredor d'apostes", - "de": "buchmacher", - "el": "εταιρεία στοιχημάτων", - "en": "bookmaker", - "es": "corredor de apuestas", - "fi": "vedonvälittäjä", - "hu": "bukméker", - "it": "allibratore", - "ja": "ブックメーカー", - "ko": "마권업자", - "pl": "bukmacher", - "pt": "corretor de apostas", - "ru": "букмекер", - "sk": "stávková kancelária", - "sr": "кладионичар", - "sv": "vadhållningsagent", - "tr": "müşterek bahis", - "uk": "букмекер", - "vi": "nhà cái", - "zh": "博彩公司" - }, - "books": { - "ar": "بيع الكتب", - "bg": "книжарница", - "ca": "llibreria", - "cs": "knihkupectví", - "da": "boghandel", - "de": "buchhandlung", - "el": "βιβλιοπωλείο", - "en": "bookstore", - "en-gb": "bookshop", - "es": "librería", - "et": "raamatupood", - "fi": "kirjakauppa", - "fr": "librairie", - "he": "חנות ספרים", - "hu": "könyvesbolt", - "id": "toko buku", - "is": "bóksala", - "it": "libreria", - "ja": "書店", - "ko": "서점", - "lv": "grāmatnīca", - "nb": "bokhandel", - "nl": "boekhandel", - "pl": "księgarnia", - "pt": "livraria", - "ro": "librărie", - "ru": "книжный магазин", - "sr": "књижара", - "sv": "bokhandel", - "th": "ร้านหนังสือ", - "tr": "kitap mağazası", - "uk": "книгарня", - "vi": "nhà sách", - "zh": "書店", - "zh-cn": "书店" - }, - "boutique": { - "ar": "بوتيك", - "cs": "butik", - "el": "μπουτίκ", - "en": "boutique", - "he": "בוטיק", - "id": "butik", - "ja": "ブティック", - "ko": "부티크", - "nl": "boetiek", - "pl": "butik", - "ru": "бутик", - "sr": "бутик", - "tr": "butik", - "uk": "бутик (крамниця)", - "vi": "cửa hàng thời trang", - "zh": "時裝店" - }, - "brewing_supplies": { - "de": "brauzubehör", - "en": "brewing supply" - }, - "butcher": { - "ar": "جزار", - "ca": "carnisseria", - "cs": "řeznictví", - "da": "slagterbutik", - "de": "fleischerei", - "de-at": "fleischhauer", - "el": "χασάπης", - "en": "butcher shop", - "en-ca": "butcher", - "en-gb": "butcher", - "es": "carnicería", - "et": "lihunik", - "fi": "lihakauppa", - "fr": "boucherie", - "he": "אטליז", - "hr": "mesar", - "hu": "húsbolt", - "id": "tukang daging", - "it": "macelleria", - "ja": "精肉店", - "ko": "정육점", - "lv": "miesnieks", - "nb": "slakter", - "nl": "slagerij", - "pl": "sklep mięsny", - "pt": "açougue", - "ro": "măcelărie", - "ru": "мясной магазин", - "sl": "mesar", - "sr": "месар", - "sv": "charkuteributik", - "th": "คนขายเนื้อสัตว์", - "tr": "kasap", - "uk": "м’ясник", - "vi": "người giết mổ gia súc", - "zh": "屠户" - }, - "camera": { - "de": "kameraladen", - "en": "camera shop" - }, - "candles": { - "de": "kerzenladen", - "en": "candle shop", - "es": "cerería", - "nl": "kaarsenwinkel" - }, - "cannabis": { - "ar": "مقهى كانابيس", - "bg": "кофишоп", - "cs": "coffee shop", - "da": "coffeeshop", - "de": "coffeeshop", - "en": "cannabis coffee shop", - "es": "coffee shop", - "et": "coffeeshop", - "fi": "coffee shop", - "fr": "coffee shop", - "he": "קופי שופ", - "hr": "coffee shop", - "id": "coffee shop", - "it": "coffee-shop", - "ja": "コーヒーショップ", - "ko": "커피숍", - "nb": "coffeeshop", - "nl": "coffeeshop", - "pl": "coffee shop", - "pt": "coffeeshop", - "ro": "coffee shop", - "ru": "кофешоп", - "sv": "coffeeshop", - "tr": "coffeeshop", - "uk": "кофішоп", - "zh": "大麻咖啡店" - }, - "car": { - "bg": "автокъща", - "ca": "automoció", - "cs": "prodejce automobilů", - "da": "bilforhandler", - "de": "autohaus", - "en": "car dealership", - "es": "concesionaria de autos", - "fi": "autokauppa", - "fr": "distribution automobile", - "hu": "autókereskedés", - "it": "concessionaria d'auto", - "ja": "自動車ディーラー", - "nb": "bilforhandler", - "nl": "autohandel", - "pt": "concessionária de carros", - "ru": "автомобильный дилер", - "sv": "bilaffär", - "tr": "araba satış bayiliği", - "uk": "автомобільний дилер", - "vi": "đại lý xe hơi", - "zh": "汽車經銷商" - }, - "car_parts": { - "de": "autoteileladen", - "en": "car parts shop", - "fr": "magasin de pièces détachées", - "nl": "auto-onderdelenwinkel" - }, - "car_repair": { - "ar": "ورشة تصليح سيارات", - "bg": "автосервиз", - "ca": "taller mecànic", - "cs": "autoservis", - "da": "autoværksted", - "de": "autowerkstatt", - "el": "συνεργείο αυτοκινήτων", - "en": "automobile repair shop", - "en-gb": "garage", - "es": "taller mecánico", - "fi": "autokorjaamo", - "fr": "atelier de réparation automobile", - "he": "מוסך", - "hi": "mechanic", - "it": "carrozzeria", - "lt": "automobilių servisas", - "nb": "bilverksted", - "nl": "garage", - "pt": "oficina mecânica", - "ru": "станция технического обслуживания", - "sk": "autoservis", - "sv": "bilverkstad", - "tr": "oto tamir atölyesi", - "uk": "станція технічного обслуговування", - "zh": "汽車維修廠" - }, - "carpet": { - "de": "teppichladen", - "en": "carpet shop" - }, - "chandler": { - "de": "schiffsausrüster", - "en": "ship chandler", - "fr": "shipchandler", - "he": "ספק ציוד ימי", - "is": "bátaverslun", - "ja": "シップチャンドラー", - "nb": "skipshandler", - "nl": "scheepsbevoorrader", - "ru": "шипчандлер", - "sv": "skeppshandel", - "tr": "gemi levazımcısı", - "uk": "шипчандлер", - "zh": "船用杂货商" - }, - "charity": { - "ar": "متجر خيري", - "da": "genbrugsbutik", - "de": "secondhandladen", - "en": "charity shop", - "es": "tienda de segunda mano", - "fr": "boutique de charité", - "hu": "adománybolt", - "it": "mercatino dell'usato", - "ja": "古着", - "ko": "자선 가게", - "nl": "kringloopwinkel", - "pl": "sklep charytatywny", - "pt": "brechó", - "ru": "благотворительный магазин", - "tr": "yardım mağazası", - "uk": "благодійний магазин", - "vi": "cửa hàng từ thiện", - "zh": "义卖商店", - "zh-cn": "古着", - "zh-hk": "古着", - "zh-tw": "古著" - }, - "cheese": { - "ca": "formatgeria", - "da": "osteri", - "de": "käserei", - "en": "cheesery", - "es": "quesería", - "fi": "juustola", - "fr": "fromagerie", - "ja": "チーズ工場", - "lv": "sierotava", - "nb": "ysteri", - "nl": "kaasmakerij", - "pl": "serownia", - "pt": "queijaria", - "ru": "сыроварня", - "sv": "ysteri" - }, - "chemist": { - "ca": "drogueria", - "cs": "drogerie", - "de": "drogerie", - "en": "drugstore", - "es": "droguería", - "fr": "droguerie", - "id": "apotek", - "ja": "ドラッグストア", - "ko": "드러그스토어", - "nl": "drogisterij", - "pl": "drogeria", - "ru": "дрогери", - "sr": "апотека", - "tr": "zincir eczane", - "uk": "дрогері", - "zh": "藥妝店" - }, - "chocolate": { - "de": "schokoladenladen", - "en": "chocolate shop", - "es": "chocolatería", - "fr": "magasin de chocolat", - "it": "cioccolateria", - "ja": "チョコレート専門店", - "nl": "chocoladewinkel" - }, - "clothes": { - "ca": "botiga de roba", - "cs": "obchod s oděvy", - "da": "tøjbutik", - "de": "bekleidungsgeschäft", - "en": "clothing store", - "es": "tienda de ropa", - "fi": "vaateliike", - "fr": "magasin de vêtements", - "hu": "divatszalon", - "it": "negozio di abbigliamento", - "ja": "衣料品店", - "nl": "kledingwinkel", - "pt": "loja de roupas", - "ru": "магазин одежды", - "sv": "klädaffär", - "tr": "giyim mağazası", - "vi": "cửa hàng quần áo", - "zh": "服裝店" - }, - "collector": { - "de": "sammlerartikelladen", - "en": "collector's items store" - }, - "computer": { - "ca": "botiga d'informàtica", - "de": "computerladen", - "en": "computer shop", - "fr": "magasin d'informatique", - "it": "negozio di computer", - "ja": "コンピューターショップ", - "nl": "computerwinkel", - "ru": "компьютерный магазин", - "uk": "комп'ютерний магазин" - }, - "confectionery": { - "bg": "сладкарница", - "ca": "confiteria", - "de": "süßwarenladen", - "en": "confectionery store", - "en-gb": "sweet shop", - "es": "tienda de confitería", - "fr": "confiserie", - "he": "חנות ממתקים", - "it": "negozio di dolciumi", - "ja": "甘味処", - "nl": "snoepwinkel", - "pt": "confeitaria", - "sr": "бомбонџија", - "tr": "şekerci", - "vi": "cửa hàng bánh kẹo" - }, - "convenience": { - "ar": "ألفامارت", - "ca": "botiga d'ultramarins", - "cs": "smíšené zboží", - "da": "nærbutik", - "de": "convenience shop", - "el": "παντοπωλείο", - "en": "alfamart", - "en-ca": "convenience store", - "en-gb": "convenience store", - "es": "tienda de conveniencia", - "fi": "lähikauppa", - "fr": "épicerie", - "he": "חנות נוחות", - "hr": "prodavaonice susjedstva", - "it": "convenience store", - "ja": "アルファマート", - "ko": "편의점", - "nb": "nærbutikk", - "nl": "gemakswinkel", - "pt": "loja de conveniência", - "ro": "magazin de cartier", - "ru": "магазин у дома", - "sv": "mindre livsmedelsbutik", - "tr": "mahalle bakkalı", - "uk": "магазин біля дому", - "vi": "tiệm tiện lợi", - "zh": "阿爾法零售集團", - "zh-hk": "便利店" - }, - "copyshop": { - "de": "copyshop", - "en": "copy shop", - "es": "copistería", - "fr": "magasin de photocopies", - "nl": "copyshop", - "pt-br": "loja de fotocópia", - "zh": "影印店" - }, - "cosmetics": { - "de": "kosmetikladen", - "en": "cosmetic shop", - "fr": "magasin de cosmétique", - "it": "negozio di cosmetici", - "nl": "cosmeticawinkel" - }, - "country_store": { - "de": "dorfladen", - "en": "general store", - "fi": "sekatavarakauppa", - "fr": "magasin général", - "ja": "よろずや", - "ko": "제네럴 스토어", - "nb": "landhandel", - "ru": "универсальный магазин", - "sv": "lanthandel", - "zh": "常規市集" - }, - "craft": { - "de": "kunstbedarfladen", - "en": "arts and crafts shop", - "fr": "boutique d'artisanat" - }, - "curtain": { - "de": "gardinengeschäft", - "en": "curtain shop" - }, - "dairy": { - "ar": "ملبنة", - "de": "milchladen", - "en": "dairy store", - "et": "piimapood" - }, - "deli": { - "ar": "جواهز", - "bg": "деликатес", - "cs": "lahůdky", - "da": "delikatesse", - "de": "feinkostladen", - "en": "delicatessen", - "fi": "herkkukauppa", - "he": "מעדנייה", - "id": "delikatesen", - "it": "gastronomia", - "ja": "デリカテッセン", - "ko": "델리", - "lt": "delikatesas", - "nb": "delikatesse", - "nl": "delicatessenwinkel", - "pl": "delikatesy", - "pt": "delicatesse", - "ru": "магазин деликатесов", - "sv": "delikatess", - "th": "เดลิคาเทสเซ็น", - "uk": "делікатес", - "zh": "熟食店" - }, - "department_store": { - "ar": "متجر التجزئة", - "bg": "универсален магазин", - "ca": "gran magatzem", - "cs": "obchodní dům", - "da": "stormagasin", - "de": "warenhaus", - "de-ch": "kaufhaus", - "el": "πολυκατάστημα", - "en": "department store", - "es": "grandes almacenes", - "fi": "tavaratalo", - "fr": "grand magasin", - "he": "חנות כלבו", - "hi": "विभागीय भंडार", - "hr": "robna kuća", - "hu": "áruház", - "id": "toko serba ada", - "is": "deildaverslun", - "it": "grande magazzino", - "ja": "百貨店", - "ko": "백화점", - "nb": "varemagasin", - "nl": "warenhuis", - "pl": "dom towarowy", - "pt": "grande armazém", - "pt-br": "loja de departamento", - "ru": "универсальный магазин", - "sk": "obchodný dom", - "sr": "робна кућа", - "sv": "varuhus", - "th": "ห้างสรรพสินค้า", - "tr": "çok katlı mağazacılık", - "uk": "універмаг", - "vi": "cửa hàng bách hóa", - "zh": "百貨公司", - "zh-cn": "百货公司" - }, - "doityourself": { - "ca": "ferreteria", - "cs": "hobbymarket", - "da": "byggemarked", - "de": "baumarkt", - "el": "κιγκαλερία", - "en": "hardware store", - "es": "ferretería", - "fi": "rautakauppa", - "fr": "magasin de bricolage", - "id": "toko perangkat keras", - "ja": "ホームセンター", - "nl": "bouwmarkt", - "pl": "sklep budowlany", - "pt": "loja de ferragens", - "ru": "хозяйственный магазин", - "sv": "järnhandel", - "tr": "yapımarket", - "vi": "cửa hàng ngũ kim", - "zh": "五金店" - }, - "doors": { - "de": "türladen", - "en": "door shop", - "nl": "deurenwinkel" - }, - "dry_cleaning": { - "ar": "منظجفة", - "cs": "čistírna oděvů", - "de": "chemische reinigung", - "en": "dry cleaner", - "fr": "teinturier", - "nl": "stomerij" - }, - "e-cigarette": { - "de": "e-zigarettenladen", - "en": "vape shop", - "fr": "vapostore" - }, - "electrical": { - "de": "elektrofachgeschäft", - "en": "electrical supply store", - "fr": "magasin de matériel électrique" - }, - "electronics": { - "ca": "botiga d'electrònica", - "de": "elektronikladen", - "en": "electronics store", - "es": "tienda de electrónicos", - "fr": "magasin d'électronique", - "he": "חנות מכשירי חשמל", - "it": "negozio di elettronica", - "ja": "電気店", - "nl": "elektronicawinkel", - "ru": "магазин электроники", - "tr": "tüketici elektroniği mağazası" - }, - "energy": { - "ca": "empresa d'energia", - "cs": "energetická společnost", - "da": "energiselskab", - "de": "energieversorgungsunternehmen", - "en": "energy company", - "es": "empresa de energía", - "fi": "energiayhtiö", - "fr": "fournisseur d'énergie", - "he": "חברת אנרגיה", - "hu": "energetikai vállalkozás", - "it": "azienda energetica", - "ja": "電気事業者", - "nb": "kraftleverandør", - "nl": "energiemaatschappij", - "pl": "przedsiębiorstwo energetyczne", - "pt": "companhia de energia", - "ru": "энергетические компании", - "uk": "енергокомпанія" - }, - "equestrian": { - "en": "tack shop" - }, - "erotic": { - "ar": "متجر البضائع الجنسية", - "bg": "секс магазин", - "ca": "sex-shop", - "da": "sexshop", - "de": "sexshop", - "en": "sex shop", - "fi": "seksikauppa", - "he": "חנות מין", - "hu": "szexshop", - "id": "toko dewasa", - "it": "sexy shop", - "ja": "アダルトグッズショップ", - "ko": "성인용품점", - "nl": "seksshop", - "ru": "секс-шоп", - "sk": "sexshop", - "sr": "секс-шоп", - "sv": "sexbutik", - "uk": "секс-шоп", - "zh": "成人用品店" - }, - "estate_agent": { - "ar": "سمسار عقارات", - "ca": "agent immobiliari", - "cs": "realitní makléř", - "da": "ejendomsmægler", - "de": "immobilienmakler", - "el": "μεσίτης", - "en": "real estate agent", - "es": "agente inmobiliario", - "et": "kinnisvaramaakler", - "fi": "kiinteistönvälittäjä", - "fr": "agent immobilier ou agente immobilière", - "he": "סוכן נדל\"ן", - "hu": "ingatlanközvetítő", - "id": "agen real estat", - "it": "agente immobiliare", - "ja": "宅地建物取引士", - "ko": "부동산중개사", - "lt": "nekilnojamojo turto agentas", - "nb": "eiendomsmegler", - "nl": "vastgoedmakelaar", - "pl": "pośrednik w obrocie nieruchomościami", - "pt-br": "agente imobiliário", - "ro": "agent imobiliar", - "ru": "риелтор", - "sl": "nepremičninski posrednik", - "sr": "агент за некретнине", - "sv": "fastighetsmäklare", - "tr": "emlakçı", - "uk": "ріелтор", - "vi": "môi giới bất động sản", - "zh": "地產代理" - }, - "fabric": { - "de": "stoffladen", - "en": "fabric shop", - "fi": "kangaskauppa", - "fr": "magasin de tissu", - "nl": "stoffenwinkel", - "pt": "loja de fazendas", - "sv": "tygaffär" - }, - "farm": { - "ar": "متجر بيع منتجات المزارع", - "da": "gårdbutik", - "de": "hofladen", - "en": "farm shop", - "fr": "magasin de produits fermiers", - "ja": "農産物直売所", - "zh": "農產品直銷所" - }, - "fashion": { - "ca": "botiga de roba", - "cs": "obchod s oděvy", - "da": "tøjbutik", - "de": "bekleidungsgeschäft", - "en": "clothing store", - "es": "tienda de ropa", - "fi": "vaateliike", - "fr": "magasin de vêtements", - "hu": "divatszalon", - "it": "negozio di abbigliamento", - "ja": "衣料品店", - "nl": "kledingwinkel", - "pt": "loja de roupas", - "ru": "магазин одежды", - "sv": "klädaffär", - "tr": "giyim mağazası", - "vi": "cửa hàng quần áo", - "zh": "服裝店" - }, - "fireplace": { - "de": "kaminofenladen", - "en": "fireplace shop", - "nl": "haardwinkel" - }, - "fishing": { - "de": "angelzubehörladen", - "en": "fishing equipment store", - "it": "negozio di pesca", - "nl": "hengelsport winkel" - }, - "fishmonger": { - "ar": "سماك", - "ca": "peixater", - "cs": "obchodník s rybami", - "da": "fiskehandler", - "de": "fischhändler", - "en": "fishmonger", - "es": "pescadero", - "et": "kalakaupmees", - "fi": "kalakauppias", - "fr": "poissonnier", - "hu": "halkereskedő", - "it": "pescivendolo", - "ko": "어물상", - "nb": "fiskehandler", - "nl": "visboer", - "pt-br": "peixeiro", - "ru": "рыботорговец", - "sv": "fiskhandlare", - "tr": "balıkçı", - "vi": "dân bán cá", - "zh": "魚販" - }, - "flooring": { - "de": "fußbodengeschäft", - "en": "flooring shop" - }, - "florist": { - "cs": "květinářství", - "de": "blumenladen", - "en": "flower shop", - "es": "florería", - "fi": "kukkakauppa", - "fr": "fleuriste", - "hu": "virágbolt", - "ja": "花屋", - "ko": "꽃집", - "nb": "blomsterbutikk", - "nl": "bloemisterij", - "pl": "kwiaciarnia", - "pt": "loja de flores", - "ru": "цветочный магазин", - "sv": "blomsterhandel", - "tr": "çiçekçi", - "zh": "花店" - }, - "footwear": { - "it": "calzaturificio" - }, - "frame": { - "de": "rahmenladen", - "en": "frame shop", - "nl": "lijstenwinkel" - }, - "free_flying": { - "de": "gleitsegelfachgeschäft", - "en": "free flying equipment store" - }, - "frozen_food": { - "de": "tiefkühlkostladen", - "en": "frozen food shop" - }, - "fuel": { - "de": "treibstofffachgeschäft", - "en": "fuel shop" - }, - "funeral_directors": { - "ar": "دار جنائز", - "ca": "funerària", - "cs": "pohřební komora", - "de": "bestattungsinstitut", - "en": "funeral home", - "es": "funeraria", - "et": "matusebüroo", - "fi": "hautaustoimisto", - "fr": "funérarium", - "he": "בית לוויות", - "hu": "ravatalozó", - "id": "rumah duka", - "it": "imprese funebri", - "ja": "葬斎場", - "ko": "장례식장", - "nb": "begravelsesbyrå", - "nl": "uitvaartcentrum", - "pl": "zakład pogrzebowy", - "pt": "funerária", - "ru": "похоронное бюро", - "sv": "begravningsbyrå", - "uk": "похоронне бюро", - "vi": "nhà quàn", - "zh": "殯儀館", - "zh-cn": "殡仪馆" - }, - "furniture": { - "da": "møbelforretning", - "de": "möbelhaus", - "en": "furniture retailer", - "es": "tienda de muebles", - "fi": "huonekaluliike", - "fr": "magasin de meubles", - "hu": "bútoráruház", - "ja": "家具店", - "nb": "møbelbutikk", - "nl": "meubelwinkel", - "pl": "sklep meblowy", - "pt": "loja de móveis", - "sv": "möbelaffär", - "vi": "tiệm nội thất" - }, - "games": { - "ca": "botiga de jocs de taula", - "de": "brettspieleladen", - "en": "board games shop", - "nl": "bordspellenwinkel" - }, - "garden_centre": { - "cs": "zahradní centrum", - "de": "gartencenter", - "en": "garden centre", - "es": "centro de jardinería", - "fr": "jardinerie", - "it": "centro giardinaggio", - "nb": "hagesenter", - "nl": "tuincentrum", - "ru": "садовый центр" - }, - "garden_furniture": { - "de": "gartenmöbelladen", - "en": "garden furniture shop" - }, - "gas": { - "de": "gasflaschenladen", - "en": "bottled gas shop", - "nl": "gasfleswinkel", - "pl": "punkt wymiany butli" - }, - "general": { - "de": "dorfladen", - "en": "general store", - "fi": "sekatavarakauppa", - "fr": "magasin général", - "ja": "よろずや", - "ko": "제네럴 스토어", - "nb": "landhandel", - "ru": "универсальный магазин", - "sv": "lanthandel", - "zh": "常規市集" - }, - "gift": { - "ca": "botiga de regals", - "de": "andenkenladen", - "en": "gift shop", - "fi": "lahjatavarakauppa", - "fr": "boutique de cadeaux", - "he": "חנות מזכרות", - "id": "toko cendera mata", - "ja": "ギフトショップ", - "ko": "기념품점", - "nl": "souvenirwinkel", - "ru": "магазин сувениров", - "sr": "продавница сувенира", - "sv": "souvenirbutik", - "zh": "礼品店", - "zh-hk": "禮品店" - }, - "glaziery": { - "de": "glaserei", - "en": "glaziery", - "fi": "lasitusliike", - "nl": "glashandel" - }, - "golf": { - "de": "pro-shop", - "en": "pro shop", - "fr": "magasin de golf", - "nl": "golfshop" - }, - "greengrocer": { - "ar": "خضري", - "ca": "fruiteria", - "cs": "zelinářství", - "da": "grønthandel", - "de": "obst- und gemüsehändler", - "el": "μανάβικο", - "en": "greengrocer", - "es": "frutería", - "fr": "magasin de fruits et légumes", - "he": "ירקן", - "hu": "zöldség-gyümölcs bolt", - "it": "fruttivendolo", - "ja": "八百屋", - "nl": "groenteboer", - "pl": "sklep warzywny", - "pt": "quitanda", - "tr": "manav", - "vi": "người bán rau quả", - "zh": "八百屋" - }, - "grocery": { - "ar": "بقالة", - "ca": "botiga d'ultramarins", - "cs": "potraviny", - "da": "dagligvarehandel", - "de": "lebensmittelgeschäft", - "en": "grocery store", - "es": "tienda de ultramarinos", - "fi": "elintarvikeliike", - "fr": "épicerie", - "he": "מכולת", - "hu": "élelmiszerbolt", - "is": "matvöruverslun", - "it": "drogheria", - "ja": "グロサリー", - "ko": "식료품점", - "nb": "dagligvarebutikk", - "nl": "levensmiddelenwinkel", - "pl": "sklep spożywczy", - "pt": "mercearia", - "ru": "бакалея", - "sr": "бакалница", - "sv": "livsmedelsbutik", - "tr": "bakkal", - "uk": "бакалія", - "vi": "tiệm tạp hóa", - "zh": "雜貨店" - }, - "haberdashery": { - "ca": "merceria", - "cs": "galanterie", - "da": "galanterikræmmer", - "de": "kurzwaren", - "en": "mercery", - "en-gb": "haberdashery", - "es": "mercería", - "fi": "lyhyttavara", - "fr": "mercerie", - "he": "סדקית", - "hu": "rövidáruipar", - "lv": "galantērija", - "nb": "kortevarer", - "nl": "fournituren", - "pl": "galanteria", - "ro": "mercerie", - "ru": "галантерея", - "sk": "galantéria", - "sv": "korta varor", - "tr": "tuhafiye", - "uk": "галантерея", - "vi": "cửa hàng tơ lụa", - "zh-tw": "布匹飾品" - }, - "hairdresser": { - "ca": "establiment de tall de pèl", - "da": "frisørsalon", - "de": "friseurladen", - "en": "haircutting establishment", - "es": "peluquería", - "fi": "parturi-kampaamo", - "fr": "salon de coiffure", - "hu": "fodrászat", - "it": "bottega di parrucchiere", - "ja": "美容院", - "ko": "머리방", - "nl": "kapsalon", - "pl": "zakład fryzjerski", - "pt": "estabelecimento de corte de cabelo", - "ro": "frizerie", - "ru": "парикмахерская", - "sv": "frisersalong", - "uk": "перукарня" - }, - "hairdresser_supply": { - "de": "friseurbedarfladen", - "en": "hairdresser supply shop", - "fr": "magasin de matériels et produits pour coiffeurs" - }, - "hardware": { - "ca": "ferreteria", - "cs": "hobbymarket", - "da": "byggemarked", - "de": "baumarkt", - "el": "κιγκαλερία", - "en": "hardware store", - "es": "ferretería", - "fi": "rautakauppa", - "fr": "magasin de bricolage", - "id": "toko perangkat keras", - "ja": "ホームセンター", - "nl": "bouwmarkt", - "pl": "sklep budowlany", - "pt": "loja de ferragens", - "ru": "хозяйственный магазин", - "sv": "järnhandel", - "tr": "yapımarket", - "vi": "cửa hàng ngũ kim", - "zh": "五金店" - }, - "health_food": { - "ar": "متجر الأغذية الصحية", - "de": "bioladen", - "en": "health food store", - "fi": "luontaistuotekauppa", - "he": "בית טבע", - "hi": "हेल्थ फूड स्टोर", - "ja": "健康食品店", - "nl": "biologische winkel", - "sr": "продавница здраве хране", - "sv": "hälsokostaffär", - "zh": "健康食品店" - }, - "hearing_aids": { - "ar": "عالم السمع", - "ca": "audiòleg", - "cs": "audiolog", - "de": "audiologe", - "en": "audiologist", - "es": "audiólogo", - "fi": "audiologi", - "fr": "audiologiste", - "he": "אודיולוג", - "hu": "audiológus", - "is": "heyrnarfræðingur", - "it": "audiologo", - "nl": "audioloog", - "pl": "audiolog", - "pt": "audiologista", - "ru": "аудиолог", - "sr": "аудиолог", - "sv": "audionom", - "th": "นักโสตสัมผัสวิทยา", - "tr": "odyolog" - }, - "herbalist": { - "ar": "طبيب أعشاب", - "cs": "bylinkář", - "de": "kräutersammler", - "el": "βοτανοθεραπευτής", - "en": "herbalist", - "es": "herborista", - "et": "maitseainete kollektsioneerimine", - "fr": "herboriste", - "it": "erborista", - "ja": "本草学者", - "ko": "본초학자", - "nb": "urtemedisiner", - "nl": "herborist", - "pl": "zielarz", - "ru": "торговец лекарственными травами", - "sl": "zeliščar", - "sr": "травар", - "uk": "травник" - }, - "hifi": { - "de": "hifi-laden", - "en": "hifi store" - }, - "hobby": { - "en": "hobby shop" - }, - "houseware": { - "de": "haushaltswarenladen", - "en": "houseware shop", - "fr": "magasin d'articles ménagers", - "nl": "huiswarenwinkel" - }, - "hunting": { - "de": "jagdausrüstungsgeschäft", - "en": "hunting shop", - "pl": "sklep myśliwski" - }, - "ice_cream": { - "ar": "محل الآيس كريم", - "ca": "gelateria", - "da": "isbutik", - "de": "eisdiele", - "en": "ice cream parlor", - "en-gb": "ice cream parlour", - "es": "heladería", - "fi": "jäätelöbaari", - "fr": "glacier", - "he": "גלידרייה", - "id": "parlor es krim", - "it": "gelateria", - "ja": "アイスクリーム・パーラー", - "ko": "아이스크림 가게", - "nl": "ijssalon", - "pl": "lodziarnia", - "pt": "sorveteria", - "ru": "кафе-мороженое", - "sr": "сладолеџиница", - "sv": "glasskafé", - "tr": "dondurma salonu", - "vi": "tiệm kem" - }, - "insurance": { - "ar": "سمسار تأمين", - "bg": "застрахователен брокер", - "ca": "mediador d'assegurances", - "cs": "pojišťovací agent", - "da": "forsikringsmægler", - "de": "versicherungsmakler", - "el": "ασφαλιστής", - "en": "insurance broker", - "es": "corredor de seguros", - "fi": "vakuutusmeklari", - "fr": "courtier d'assurances", - "he": "סוכן ביטוח", - "hu": "biztosításközvetítő", - "it": "broker assicurativo", - "ja": "保険仲立人", - "ko": "보험중개인", - "lt": "draudimo agentas", - "nb": "forsikringsfunksjonær", - "nl": "verzekeringsmakelaar", - "pl": "broker ubezpieczeniowy", - "pt": "corretor de seguros", - "ru": "страховой брокер", - "sl": "zavarovalniški agent", - "sr": "посредник у осигурању", - "sv": "försäkringsmäklare", - "uk": "страховий брокер", - "zh": "保险中介", - "zh-hk": "保險代理人" - }, - "interior_decoration": { - "de": "inneneinrichtungsladen", - "en": "interior decorations shop", - "fr": "magasin de décoration intérieure" - }, - "jetski": { - "de": "jetskiladen", - "en": "jetski store" - }, - "jewelry": { - "ca": "joieria", - "da": "smykkebutik", - "de": "juwelierladen", - "en": "jewelry shop", - "en-gb": "jewellery shop", - "et": "juveelipood", - "fi": "koruliike", - "fr": "bijouterie", - "it": "gioielleria", - "ja": "宝石店", - "nl": "juwelierszaak", - "ru": "ювелирный магазин", - "sl": "zlatarna", - "sv": "smyckesbutik", - "tr": "kuyumcu", - "vi": "cửa hàng trang sức", - "zh": "珠宝店" - }, - "kiosk": { - "ar": "كشك", - "ca": "quiosc", - "cs": "kiosek", - "el": "περίπτερο", - "en": "kiosk", - "es": "quiosco", - "fi": "kioski", - "fr": "kiosque", - "he": "קיוסק", - "hu": "kioszk", - "id": "kios", - "it": "chiosco", - "ja": "キオスク", - "ko": "키오스크", - "lt": "kioskas", - "lv": "kiosks", - "pt": "quiosque", - "ro": "chioșc", - "ru": "киоск", - "sr": "киоск", - "tr": "büfe", - "uk": "кіоск", - "vi": "quầy bán hàng", - "zh": "便亭", - "zh-cn": "自助機台" - }, - "kitchen": { - "de": "küchenstudio", - "en": "kitchen shop" - }, - "lamps": { - "de": "lampengeschäft", - "en": "lamp store" - }, - "laundry": { - "bg": "перално помещение", - "ca": "bugaderia", - "cs": "prádelna", - "da": "møntvaskeri", - "de": "waschsalon", - "en": "self-service laundry", - "es": "lavandería de autoservicio", - "et": "pesumaja", - "fi": "itsepalvelupesula", - "fr": "blanchisserie", - "he": "מכבסה", - "hu": "önkiszolgáló mosoda", - "id": "penatu", - "it": "lavanderia self-service", - "ja": "コインランドリー", - "ko": "빨래방", - "nb": "vaskeri", - "nl": "wasserette", - "pl": "pralnia samoobsługowa", - "pt": "lavandaria", - "pt-br": "lavanderia", - "ru": "прачечная самообслуживания", - "sv": "tvättomat", - "tr": "self servis çamaşırhane", - "uk": "ландромат", - "zh": "自助洗衣店" - }, - "leather": { - "de": "lederladen", - "en": "leather shop", - "fr": "magasin de maroquinerie", - "nl": "lederwinkel", - "pt": "loja de couro" - }, - "lighting": { - "de": "lampengeschäft", - "en": "lamp store" - }, - "locksmith": { - "ar": "قفّال", - "ca": "manyà", - "cs": "zámečník", - "da": "låsesmed", - "de": "schlosser", - "en": "locksmith", - "es": "cerrajero", - "et": "lukksepp", - "fr": "serrurier ou serrurière", - "he": "מנעולן", - "hu": "lakatos", - "nb": "låsesmed", - "nl": "slotenmaker", - "pl": "ślusarz", - "pt": "chaveiro", - "ro": "lăcătuș", - "ru": "слесарь", - "sl": "ključavničar", - "sv": "låssmed", - "uk": "слюсар", - "zh": "鎖匠" - }, - "lottery": { - "de": "lotterieladen", - "en": "lottery store", - "fr": "boutique des lotos" - }, - "mall": { - "ar": "مركز تسوق", - "bg": "търговски център", - "ca": "centre comercial", - "cs": "obchodní centrum", - "da": "butikscenter", - "de": "einkaufszentrum", - "el": "εμπορικό κέντρο", - "en": "shopping mall", - "en-gb": "shopping centre", - "es": "área comercial", - "et": "kaubanduskeskus", - "fi": "kauppakeskus", - "fr": "centre commercial", - "he": "מרכז קניות", - "hi": "शॉपिंग मॉल", - "hr": "prodajni centar", - "hu": "bevásárlóközpont", - "id": "mal", - "is": "verslunarmiðstöð", - "it": "centro commerciale", - "ja": "ショッピングモール", - "ko": "쇼핑센터", - "lt": "prekybos centras", - "lv": "iepirkšanās centrs", - "nb": "kjøpesenter", - "nl": "mall", - "pl": "centrum handlowe", - "pt": "centro comercial", - "pt-br": "shopping center", - "ro": "centru comercial", - "ru": "молл", - "sk": "nákupné stredisko", - "sr": "тржни центар", - "sv": "handelscentrum", - "th": "ศูนย์การค้า", - "tr": "alışveriş merkezi", - "uk": "торговий центр", - "vi": "trung tâm thương mại", - "zh": "购物中心", - "zh-cn": "商场", - "zh-hk": "商場", - "zh-tw": "商場" - }, - "massage": { - "ca": "saló de massatges", - "de": "massagesalon", - "en": "massage shop", - "en-gb": "massage parlour", - "es": "salón de masajes", - "fr": "salon de massage", - "he": "מכון עיסוי", - "ja": "マッサージパーラー", - "ko": "안마시술소", - "ru": "массажный салон", - "th": "อาบอบนวด", - "tr": "masaj salonu", - "zh": "按摩院" - }, - "medical_supply": { - "de": "sanitätshaus", - "en": "medical equipment shop", - "fr": "magasin de matériel médical", - "tr": "sanitätshaus" - }, - "military_surplus": { - "ar": "فوائض عسكرية", - "de": "surplus", - "en": "military surplus", - "fr": "surplus militaire", - "ja": "払い下げ", - "pl": "demobil", - "uk": "військові надлишки", - "vi": "đồ quân đội dư thừa", - "zh": "軍需用品" - }, - "mobile_phone": { - "cs": "prodejna mobilních telefonů", - "de": "handy-shop", - "en": "mobile phone shop", - "fr": "magasin de téléphonie mobile", - "ja": "携帯ショップ" - }, - "money_lender": { - "ca": "prestamista", - "da": "pengeudlåner", - "de": "geldverleiher", - "en": "moneylender", - "es": "prestamista", - "fr": "prêteur privé", - "he": "מלווה בריבית", - "hi": "साहूकार", - "ja": "金貸し", - "nb": "pengeutlåner", - "nl": "geldschieter", - "ru": "ростовщик", - "sl": "posojevalec denarja", - "uk": "лихвар", - "zh": "財務公司" - }, - "motorcycle": { - "de": "motorradladen", - "en": "motorcycle rental", - "fr": "magasin de motos", - "pl": "wypożyczalnia motorów", - "tr": "motosiklet kiralama" - }, - "music": { - "da": "pladebutik", - "de": "plattenladen", - "el": "δισκοπωλείο", - "en": "record shop", - "es": "tienda de discos", - "fi": "levykauppa", - "fr": "disquaire", - "he": "חנות תקליטים", - "it": "negozio di dischi", - "ja": "cdショップ", - "nb": "platebutikk", - "nl": "platenwinkel", - "sv": "skivbutik", - "tr": "plak mağazası", - "vi": "cửa hàng băng đĩa", - "zh": "唱片店" - }, - "musical_instrument": { - "ca": "botiga de música", - "de": "musikinstrumentengeschäft", - "en": "music store", - "es": "tienda de música", - "fi": "musiikkiliike", - "fr": "magasin de musique", - "ja": "楽器店", - "nl": "muziekinstrumentenwinkel", - "pt": "loja de instrumentos musicais", - "ru": "музыкальный магазин", - "sv": "musikaffär", - "tr": "müzik mağazası", - "vi": "cửa hàng nhạc cụ" - }, - "newsagent": { - "ca": "agent de notícies", - "de": "zeitungshändler", - "el": "περίπτερο", - "en": "newsagent", - "es": "quiosco de periódicos", - "fr": "maison de la presse", - "he": "דוכן עיתונים", - "hu": "újságárus", - "it": "edicola", - "ja": "新聞売店", - "nb": "aviskiosk", - "nl": "krantenwinkel", - "pt": "banca de jornal", - "tr": "gazete bayii", - "uk": "кіоск із пресою", - "vi": "sạp báo", - "zh": "報攤" - }, - "nutrition_supplements": { - "de": "nahrungsergänzungsmittelladen", - "en": "nutrition supplements store" - }, - "optician": { - "ar": "نظاراتي", - "ca": "òptic", - "cs": "optik", - "da": "optiker", - "de": "augenoptiker", - "el": "οπτικός", - "en": "optician", - "es": "óptico", - "fi": "optometristi", - "fr": "opticien-lunetier", - "he": "אופטיקאי", - "hu": "optikus", - "id": "ahli optik", - "it": "ottico", - "ja": "眼鏡店", - "ko": "안경사", - "nb": "optiker", - "nl": "opticien", - "pl": "optyk", - "pt-br": "óptica", - "ru": "оптик", - "sl": "optik", - "sv": "optiker", - "tr": "optisyen", - "zh": "配鏡師" - }, - "outdoor": { - "de": "outdoorladen", - "en": "outdoor equipment store", - "fr": "magasin d'équipement de plein air" - }, - "paint": { - "de": "farbengeschäft", - "en": "paint store", - "es": "tienda de pinturas", - "fr": "magasin de peinture", - "nl": "verfwinkel", - "sl": "prodajalna barv" - }, - "party": { - "de": "partyzubehörladen", - "en": "party shop", - "pt": "loja de festas" - }, - "pasta": { - "de": "nudelladen", - "en": "pasta store", - "it": "pastificio", - "nl": "pastawinkel" - }, - "pastry": { - "ca": "pastisser", - "cs": "cukrárna", - "da": "konditori", - "de": "konditorei", - "en": "confectionery", - "fi": "konditoria", - "fr": "konditorei", - "he": "קונדיטוריה", - "hr": "slastičarnica", - "hu": "cukrászda", - "id": "konditorei", - "it": "konditorei", - "ja": "ケーキ店", - "nb": "konditori", - "nl": "konditorei", - "pl": "cukiernia", - "ro": "konditorei", - "ru": "кондитерская", - "sv": "konditori", - "tr": "konditorei", - "uk": "цукерня", - "zh": "糕點師" - }, - "pawnbroker": { - "ar": "مرتهن", - "bg": "заложна къща", - "ca": "casa d'empenyorament", - "cs": "zastavárna", - "da": "pantelåner", - "de": "pfandhaus", - "el": "ενέχυρο", - "en": "pawnbroker", - "es": "casa de empeños", - "et": "pandimaja", - "fi": "panttilainaamo", - "fr": "prêt sur gage", - "he": "עבוט", - "hu": "zálogkölcsönző", - "id": "rumah gadai", - "it": "pegno", - "ja": "質屋", - "ko": "전당포", - "lt": "lombardas", - "lv": "lombards", - "nb": "pantelåner", - "nl": "pandmakelaar", - "pl": "lombard", - "pt": "penhor", - "pt-br": "casa de penhor", - "ro": "casă de amanet", - "ru": "ломбард", - "sk": "záložňa", - "sv": "pantbank", - "tr": "tefeci", - "uk": "ломбард", - "vi": "tiệm cầm đồ", - "zh": "典當業" - }, - "perfumery": { - "cs": "parfumerie", - "da": "parfumeri", - "de": "parfümerie", - "en": "perfumery", - "es": "perfumería", - "et": "parfümeeria", - "fr": "parfumerie", - "nb": "parfymeri", - "nl": "parfumerie", - "pt": "perfumaria", - "ro": "parfumerie" - }, - "pet": { - "ca": "botiga d'animals", - "cs": "obchod se zvířecími potřebami", - "de": "zoofachgeschäft", - "en": "pet store", - "es": "tienda de animales", - "fi": "lemmikkikauppa", - "fr": "animalerie", - "he": "חנות חיות מחמד", - "it": "negozio per animali", - "ja": "ペットショップ", - "ko": "애완동물 가게", - "nb": "dyrebutikk", - "nl": "dierenwinkel", - "pl": "sklep zoologiczny", - "pt": "pet shop", - "ru": "зоомагазин", - "sr": "продавница кућних љубимаца", - "tr": "pet shop", - "uk": "зоомагазин", - "zh": "寵物店" - }, - "photo": { - "de": "fotoladen", - "en": "photo shop", - "fr": "magasin de photo", - "nl": "fotozaak" - }, - "pottery": { - "ar": "فخار", - "bg": "грънчарство", - "ca": "terrissa", - "cs": "hrnčířství", - "da": "pottemagerkunst", - "de": "töpferei", - "el": "αγγειοπλαστική", - "en": "pottery", - "es": "alfarería", - "et": "savinõu", - "fi": "keramiikka", - "fr": "poterie", - "he": "קדרות", - "hi": "मृद्भाण्ड", - "hr": "lončarstvo", - "hu": "fazekasság", - "id": "tembikar", - "is": "leirkeragerð", - "it": "lavorazione della ceramica", - "ja": "焼物", - "ko": "도예", - "lt": "puodininkystė", - "lv": "podniecība", - "nb": "pottemakeri", - "nl": "pottenbakken", - "pl": "garncarstwo", - "pt": "olaria", - "ro": "olărit", - "ru": "гончарное производство", - "sl": "lončarstvo", - "sr": "грнчарство", - "sv": "krukmakeri", - "th": "เครื่องปั้นดินเผา", - "tr": "çömlekçilik", - "uk": "гончарство", - "vi": "đồ gốm", - "zh": "陶器製作" - }, - "pyrotechnics": { - "de": "feuerwerkszubehörladen", - "en": "firework supply store" - }, - "radiotechnics": { - "de": "funktechnisches fachgeschäft", - "en": "radiotechnic store" - }, - "religion": { - "en": "religious merchandising store" - }, - "robot": { - "de": "roboterladen", - "en": "robot shop" - }, - "scuba_diving": { - "de": "tauchausrüstungszubehörgeschäft", - "en": "scuba diving equipment store" - }, - "seafood": { - "ca": "peixateria", - "cs": "rybárna", - "de": "fischhandlung", - "en": "seafood market", - "es": "pescadería", - "fi": "kalakauppa", - "fr": "poissonnerie", - "it": "pescheria", - "ja": "鮮魚店", - "ko": "어물전", - "nl": "viswinkel" - }, - "second_hand": { - "ar": "سوق متجول", - "ca": "brocanter", - "da": "genbrugsbutik", - "de": "gebrauchtwarenladen", - "en": "second-hand shop", - "es": "tienda de segunda mano", - "fi": "osto ja myyntiliike", - "fr": "magasin de seconde main", - "it": "mercatino dell'usato", - "ja": "古物商", - "ko": "중고 시장", - "nl": "kringloopcentrum", - "pt": "brechó", - "sv": "andrahandsaffär", - "vi": "cửa hàng đồ cũ", - "zh": "二手店" - }, - "security": { - "de": "sicherheitstechnikfachgeschäft", - "en": "security shop" - }, - "sewing": { - "de": "nähzubehörgeschäft", - "en": "sewing shop" - }, - "ship_chandler": { - "de": "schiffsausrüster", - "en": "ship chandler", - "fr": "shipchandler", - "he": "ספק ציוד ימי", - "is": "bátaverslun", - "ja": "シップチャンドラー", - "nb": "skipshandler", - "nl": "scheepsbevoorrader", - "ru": "шипчандлер", - "sv": "skeppshandel", - "tr": "gemi levazımcısı", - "uk": "шипчандлер", - "zh": "船用杂货商" - }, - "shoes": { - "ar": "دكان لبيع الأحذية", - "ca": "sabateria", - "cs": "obchod s obuví", - "da": "skobutik", - "de": "schuhladen", - "en": "shoe store", - "es": "zapatería", - "fi": "kenkäkauppa", - "fr": "magasin de chaussures", - "it": "negozio di scarpe", - "ja": "靴屋", - "nl": "schoenwinkel", - "pt": "loja de sapatos", - "vi": "cửa hàng giày" - }, - "ski": { - "de": "skiladen", - "en": "ski store" - }, - "snowmobile": { - "de": "schneemobilladen", - "en": "snowmobile store" - }, - "spices": { - "de": "gewürzladen", - "en": "spice store", - "nl": "specerijenwinkel" - }, - "sports": { - "de": "sportladen", - "en": "sport shop", - "fr": "magasin de sport", - "nl": "sportwinkel" - }, - "stationery": { - "de": "schreibwarenhandlung", - "en": "stationery shop", - "en-gb": "stationers", - "es": "papelería", - "fr": "papeterie", - "it": "cartoleria", - "ja": "文具店", - "nl": "kantoorboekhandel", - "pt": "papelaria", - "ro": "papetăria", - "zh": "文具店" - }, - "storage_rental": { - "ar": "تخزين ذاتي", - "ca": "guardamobles", - "da": "lagerhotel", - "de": "mietlager", - "el": "αυτοεξυπηρετούμενη αποθήκευση", - "en": "self storage", - "fi": "pienvarasto", - "fr": "garde-meuble", - "he": "אחסון לטווח ארוך", - "ja": "トランクルーム", - "nb": "minilager", - "ro": "spațiu de depozitare", - "ru": "индивидуальное хранение вещей", - "sv": "hyrlager", - "tr": "eşya depolama antalya", - "uk": "склад індивідуального зберігання", - "vi": "kho tự quản", - "zh": "迷你自存倉", - "zh-cn": "迷你自存仓" - }, - "supermarket": { - "ar": "سوبرماركت", - "bg": "супермаркет", - "ca": "supermercat", - "da": "supermarked", - "de": "supermarkt", - "el": "σουπερμάρκετ", - "en": "supermarket", - "es": "supermercado", - "fr": "supermarché", - "he": "מרכול", - "hi": "सुपरमार्केट", - "hu": "szupermarket", - "is": "stórmarkaður", - "it": "supermercato", - "ja": "スーパーマーケット", - "ko": "슈퍼마켓", - "lv": "lielveikals", - "nb": "supermarked", - "nl": "supermarkt", - "pt": "supermercado", - "ro": "supermagazin", - "ru": "супермаркет", - "sr": "супермаркет", - "sv": "snabbköp", - "th": "ซูเปอร์มาร์เก็ต", - "tr": "süpermarket", - "uk": "супермаркет", - "vi": "siêu thị", - "zh": "超級市場", - "zh-cn": "超级市场" - }, - "swimming_pool": { - "de": "schwimmbadzubehörladen", - "en": "swimming pool equipment shop" - }, - "tailor": { - "ar": "محل خياطة", - "ca": "sastreria", - "cs": "krejčovství", - "de": "schneiderei", - "en": "tailor shop", - "es": "sastrería", - "fr": "boutique de tailleur", - "nl": "kleermakerij", - "sk": "krajčírstvo", - "sv": "skrädderi" - }, - "tattoo": { - "ca": "saló de tatuatges", - "de": "tattoostudio", - "en": "tattoo parlor", - "en-gb": "tattoo parlour", - "fi": "tatuointiliike", - "fr": "salon de tatouage", - "nl": "tatoeagezaak", - "sr": "тетовер-шоп", - "sv": "tattueringsstudio" - }, - "tea": { - "de": "teeladen", - "en": "tea shop", - "fr": "magasin de thé", - "it": "negozio di thè", - "nl": "theewinkel" - }, - "ticket": { - "de": "vorverkaufsstelle", - "en": "ticket shop", - "fr": "billetterie", - "it": "biglietteria" - }, - "tiles": { - "de": "fliesenladen", - "en": "tile store" - }, - "tobacco": { - "ar": "دخاخني", - "ca": "estanc", - "cs": "trafika", - "da": "tobakshandel", - "de": "tabakladen", - "de-at": "tabaktrafik", - "el": "καπνοπωλείο", - "en": "smoke shop", - "es": "estanco", - "fr": "bureau de tabac", - "hu": "dohánybolt", - "it": "tabaccheria", - "ja": "煙草店", - "nl": "sigarenwinkel", - "pl": "trafika", - "pt": "tabacaria", - "sv": "tobakshandlare", - "vi": "người bán thuốc lá", - "zh": "煙草商" - }, - "tortilla": { - "en": "tortilleria", - "es": "tortillería" - }, - "toys": { - "ca": "tenda de juguetes", - "cs": "hračkárství", - "da": "legetøjsbutik", - "de": "spielzeugladen", - "en": "toy store", - "es": "juguetería", - "fi": "lelukauppa", - "fr": "magasin de jouets", - "hu": "játékbolt", - "it": "negozio di giocattoli", - "ja": "玩具店", - "ko": "장난감 가게", - "nl": "speelgoedwinkel", - "pt": "loja de brinquedos", - "sk": "hračkárstvo", - "sv": "leksaksaffär", - "tr": "oyuncak mağazası", - "vi": "cửa hàng đồ chơi" - }, - "trade": { - "da": "handel med byggematerialer", - "de": "baustoffhandel", - "en": "building materials trade", - "fr": "commerce de matériaux de construction" - }, - "travel_agency": { - "ar": "وكالة سفر", - "bg": "туристическа агенция", - "ca": "agència de viatges", - "cs": "cestovní kancelář", - "da": "rejsebureau", - "de": "reisebüro", - "el": "ταξιδιωτικό γραφείο", - "en": "travel agency", - "en-gb": "agency", - "es": "agencia de viajes", - "et": "reisibüroo", - "fi": "matkatoimisto", - "fr": "agence de voyages", - "he": "סוכנות נסיעות", - "hi": "ट्रैवल एजेंसी", - "hu": "utazási iroda", - "id": "biro perjalanan", - "is": "ferðaskrifstofa", - "it": "agenzia turistica", - "ja": "旅行会社", - "ko": "여행사", - "lt": "kelionių agentūra", - "lv": "ceļojumu aģentūra", - "nb": "reisebyrå", - "nl": "reisbureau", - "pl": "biuro podróży", - "pt": "agência de viagens", - "ru": "туристическое агентство", - "sl": "turistična agencija", - "sr": "туристичка агенција", - "sv": "resebyrå", - "tr": "seyahat acentesi", - "uk": "туристичний оператор", - "vi": "công ty lữ hành", - "zh": "旅行社" - }, - "trophy": { - "de": "trophäenladen", - "en": "trophy store" - }, - "tyres": { - "de": "reifenhändler", - "en": "tire shop", - "fi": "rengasliike", - "fr": "magasin de pneus", - "nl": "bandenwinkel", - "sv": "däckfirma" - }, - "vacant": { - "de": "leerstehendes geschäft", - "en": "vacant shop" - }, - "vacuum_cleaner": { - "de": "staubsaugerladen", - "en": "vacuum cleaner store" - }, - "variety_store": { - "ca": "botiga de tot a 100", - "cs": "jednotkový obchod", - "de": "sonderpostenmarkt", - "en": "variety store", - "es": "tienda de todo a 100", - "fi": "halpakauppa", - "fr": "magasin à prix unique", - "id": "toko variasi", - "ja": "バラエティ・ストア", - "pl": "sklep wszystko po 5 złotych", - "pt": "loja 1,99", - "ru": "магазин фиксированной цены", - "sk": "jednotkový obchod", - "tr": "tuhafiye dükkânı", - "zh": "雜貨商店", - "zh-cn": "多样化商店" - }, - "video": { - "ca": "videoclub", - "de": "videothek", - "en": "video rental shop", - "es": "videoclub", - "fi": "videovuokraamo", - "fr": "vidéo-club", - "he": "ספריית וידאו", - "hu": "videotéka", - "it": "videoteca", - "ja": "レンタルビデオ", - "ko": "비디오 대여", - "nl": "videotheek", - "pl": "wypożyczalnia wideo", - "pt": "locadora de vídeo", - "sr": "видеотека", - "sv": "videobutik", - "uk": "магазин відеопрокату", - "vi": "cửa hàng cho thuê băng đĩa hình", - "zh": "影碟出租店" - }, - "video_games": { - "de": "videospielladen", - "en": "video game store", - "ja": "ビデオゲーム販売店", - "nl": "videogamewinkel", - "sv": "datorspelsbutik" - }, - "watches": { - "de": "uhrengeschäft", - "en": "watch shop", - "fr": "boutique de montres", - "nl": "horlogewinkel", - "pt": "relojoaria", - "ru": "часовой магазин" - }, - "weapons": { - "de": "waffenladen", - "en": "gun shop", - "ja": "銃砲店", - "nb": "våpenbutikk", - "ru": "оружейный магазин", - "zh": "枪店" - }, - "wholesale": { - "ar": "ادفع واستلم (بيع الجملة)", - "de": "abholgroßmarkt", - "en": "cash and carry", - "fi": "warehouse club", - "fr": "libre-service de gros", - "ja": "現金問屋", - "nl": "zelfbedieningsgroothandel", - "pt": "atacado-varejista", - "ru": "cash & carry", - "vi": "câu lạc bộ kho", - "zh": "现购自运" - }, - "wigs": { - "en": "wig shop" - }, - "window_blind": { - "de": "rollladenverkauf", - "en": "window blind shop", - "fr": "magasin de stores", - "ru": "магазин штор" - }, - "wine": { - "cs": "vinotéka", - "da": "vinhandel", - "de": "weinladen", - "en": "wine shop", - "fr": "caviste", - "nl": "wijnwinkel", - "sv": "vinaffär" - }, - "yes": { - "ar": "محل", - "bg": "магазин", - "ca": "botiga", - "cs": "prodejna", - "da": "butik", - "de": "laden", - "el": "κατάστημα", - "en": "shop", - "es": "tienda", - "et": "kauplus", - "fi": "kauppa", - "fr": "magasin", - "he": "חנות", - "hr": "prodavaonica", - "hu": "üzlet", - "id": "toko", - "is": "verslun", - "it": "negozio", - "ja": "店", - "ko": "가게", - "lt": "parduotuvė", - "lv": "veikals", - "nb": "butikk", - "nl": "winkel", - "pl": "sklep", - "pt": "loja", - "ro": "magazin", - "ru": "магазин", - "sk": "maloobchod", - "sl": "prodajalna", - "sr": "продавница", - "sv": "butik", - "tr": "dükkân", - "uk": "крамниця", - "vi": "cửa hàng", - "zh": "商店" - } - }, - "site": { - "wind_farm": { - "ar": "مزرعة الرياح", - "bg": "вятърна електроцентрала", - "ca": "parc eòlic", - "cs": "větrný park", - "da": "vindmøllepark", - "de": "windpark", - "el": "αιολικό πάρκο", - "en": "wind farm", - "es": "parque eólico", - "et": "tuulepark", - "fi": "tuulipuisto", - "fr": "parc éolien", - "he": "חוות רוח", - "hr": "vjetroelektrana", - "hu": "szélfarm", - "id": "ladang angin", - "it": "parco eolico", - "ja": "集合型風力発電所", - "lt": "vėjo ferma", - "nb": "vindpark", - "nl": "windmolenpark", - "pl": "farma wiatrowa", - "pt": "parque eólico", - "ro": "parc eolian", - "ru": "ветряная электростанция", - "sl": "vetrna elektrarna", - "sr": "ветропарк", - "sv": "vindkraftspark", - "th": "ฟาร์มกังหันลม", - "tr": "rüzgâr çiftliği", - "uk": "вітряна електростанція", - "vi": "trang trại gió", - "zh": "風力發電廠", - "zh-cn": "风力发电厂" - } - }, - "site_type": { - "megalith": { - "ar": "جندل", - "bg": "мегалит", - "ca": "megàlit", - "cs": "megalit", - "da": "megalit", - "el": "μεγάλιθος", - "en": "megalith", - "es": "megalito", - "et": "megaliit", - "fi": "megaliitti", - "fr": "mégalithe", - "he": "מגלית", - "hi": "महापाषाण", - "hr": "megalit", - "id": "megalit", - "it": "megalito", - "ja": "巨石記念物", - "ko": "거석기념물", - "lt": "megalitas", - "nb": "megalitt", - "nl": "megaliet", - "pl": "megalit", - "pt": "megalíto", - "ro": "megalit", - "ru": "мегалит", - "sk": "megalit", - "sl": "megalit", - "sr": "мегалит", - "sv": "megalit", - "tr": "megalit", - "uk": "мегаліти", - "vi": "cự thạch", - "zh": "巨石文化" - }, - "minilith": { - "en": "minilith", - "pt": "minilito" - }, - "rock_shelter": { - "ar": "مأوى صخري", - "ca": "abric rocós", - "cs": "skalní přístřešek", - "de": "abri", - "en": "rock shelter", - "es": "abrigo rocoso", - "fr": "abri sous roche", - "he": "מחסה-סלע", - "hi": "शैलाश्रय", - "ja": "岩陰遺跡", - "nb": "heller", - "nl": "abri", - "pl": "koleba skalna", - "sk": "abri", - "sr": "окапина", - "uk": "колиба", - "zh": "岩棚" - } - }, - "smoking": { - "no": { - "ar": "حظر التدخين", - "ca": "prohibició de fumar", - "cs": "zákaz kouření", - "da": "rygeforbud", - "de": "rauchverbot", - "en": "smoking ban", - "es": "prohibido fumar", - "fr": "interdiction de fumer", - "hr": "zabrana pušenja", - "hu": "dohányzási tilalom", - "id": "larangan merokok", - "is": "reykingabann", - "it": "legge antifumo", - "ja": "禁煙", - "ko": "금연", - "lv": "smēķēšanas ierobežošana", - "nb": "røykeforbud", - "nl": "rookverbod", - "pl": "zakaz palenia", - "pt": "proibição de fumar", - "ru": "запрет на курение", - "sk": "zákaz fajčenia", - "sv": "rökförbud", - "uk": "палити заборонено", - "zh": "禁煙", - "zh-tw": "禁菸" - }, - "separated": { - "en": "smoking separated" - }, - "yes": { - "cs": "kouření povoleno", - "da": "rygning tilladt", - "de": "rauchen erlaubt", - "en": "smoking allowed", - "es": "permitido fumar", - "fr": "autorisation de fumer", - "nb": "røyking tillatt", - "pl": "palenie dozwolone", - "pt": "permitido fumar", - "ru": "курение разрешено", - "uk": "паління дозволене" - } - }, - "social_facility": { - "assisted_living": { - "ar": "دار مسنين", - "ca": "llar de retir", - "cs": "domov pro seniory", - "da": "plejehjem", - "de": "altenheim", - "de-ch": "altersheim", - "el": "γηροκομείο", - "en": "retirement home", - "es": "hogar de retiro", - "et": "vanadekodu", - "fi": "vanhainkoti", - "fr": "maison de retraite", - "he": "בית אבות", - "hr": "starački dom", - "hu": "öregek otthona", - "id": "panti werdha", - "is": "elliheimili", - "it": "casa di riposo", - "ja": "リタイヤメント・ホーム", - "ko": "양로원", - "nb": "aldershjem", - "nl": "verzorgingstehuis", - "pl": "dom opieki", - "pt": "casa de retiro", - "ru": "дом престарелых", - "sl": "dom upokojencev", - "sv": "äldreboende", - "uk": "геріатричний пансіонат", - "zh": "老人院" - }, - "food_bank": { - "ar": "بنك الطعام", - "ca": "banc dels aliments", - "cs": "potravinová banka", - "de": "tafel", - "el": "τράπεζα τροφίμων", - "en": "food bank", - "es": "banco de alimentos", - "et": "toidupank (üldmõiste)", - "fi": "ruokapankki", - "fr": "banque alimentaire", - "he": "בנק מזון", - "hr": "die tafeln", - "hu": "élelmiszerbank", - "id": "bank makanan", - "it": "banco alimentare", - "ja": "フードバンク", - "ko": "푸드뱅크", - "lt": "maisto bankas", - "nb": "matsentral", - "nl": "voedselbank", - "pl": "bank żywności", - "pt": "banco alimentar", - "ro": "banca de alimente", - "ru": "пищевой банк", - "uk": "продовольчий банк", - "vi": "ngân hàng thực phẩm", - "zh": "食物銀行", - "zh-cn": "食物银行" - }, - "nursing_home": { - "ar": "التمريض المنزلي", - "ca": "residència de gent gran", - "cs": "dům s pečovatelskou službou", - "de": "pflegeheim", - "en": "nursing home", - "es": "residencia geriátrica", - "et": "hooldekodu", - "fi": "hoitokoti", - "fr": "établissement médico-social", - "hi": "नर्सिंग होम", - "hu": "idősek otthona", - "id": "rumah perawatan", - "it": "casa di riposo", - "ja": "ナーシングホーム", - "nb": "sykehjem", - "nl": "verpleeghuis", - "pl": "dom pomocy społecznej", - "sv": "vårdhem", - "tr": "huzurevi", - "vi": "viện dưỡng lão", - "zh": "介護老人福祉設施" - } - }, - "socket": { - "": { - "bg": "шуко", - "da": "schuko", - "el": "σούκο", - "en": "chademo", - "en-ca": "schuko", - "en-gb": "schuko", - "et": "f-tüüp", - "he": "צ'וקו", - "is": "schuko", - "ko": "차데모", - "pt": "schuko", - "ru": "schuko", - "sr": "шуко", - "tr": "schuko", - "uk": "schuko", - "vi": "schuko" - } - }, - "source": { - "": { - "ar": "24 مارس 2014", - "ca": "24 de març del 2014", - "cs": "24. březen 2014", - "de": "24. märz 2014", - "en": "24 march 2014", - "es": "24 de marzo de 2014", - "fi": "24. maaliskuuta 2014", - "fr": "24 mars 2014", - "hi": "२४ मार्च २०१४", - "it": "24 marzo 2014", - "ja": "2014年3月24日", - "ko": "2014년 3월 24일", - "nl": "24 maart 2014", - "pt": "24 de março de 2014", - "ru": "24 марта 2014 года", - "sr": "24. март 2014.", - "sv": "24 mars 2014", - "th": "24 มีนาคม 2557", - "tr": "24 mart 2014", - "vi": "24 tháng 3 năm 2014", - "zh": "2014年3月24日" - }, - "BAG": { - "ar": "سجلات عناوين أساسية", - "de": "basisregister adressen und gebäude", - "en": "basic register addresses and buildings", - "nb": "basisregistraties adressen en gebouwen", - "nl": "basisregistraties adressen en gebouwen" - }, - "Bing": { - "ar": "خرائط بينج", - "de": "microsoft bing maps", - "en": "bing maps", - "es": "bing mapas", - "fr": "microsoft bing cartes", - "ko": "빙 맵", - "nl": "microsoft bing maps", - "pl": "microsoft bing maps", - "pt": "microsoft bing maps", - "ru": "microsoft bing maps", - "sv": "microsoft bing maps", - "tr": "bing haritalar", - "vi": "bing bản đồ" - }, - "CBERS": { - "de": "china-brazil earth resources satellite program", - "en": "china–brazil earth resources satellite program", - "es": "el programa de satélite de recursos terrestres china-brasil", - "fi": "cbers", - "fr": "china-brazil earth resources satellite program", - "it": "cbers", - "ja": "中国・ブラジル地球資源衛星", - "pl": "china-brazil earth resources satellite", - "pt": "programa do satélite sino-brasileiro de recursos terrestres", - "zh": "资源一号卫星" - }, - "DNIT": { - "de": "nationales ministerium für verkehrsinfrastruktur", - "en": "national department of transport infrastructure", - "es": "departamento nacional de infraestructura de transportes", - "pt": "departamento nacional de infraestrutura de transportes" - }, - "Funai": { - "ar": "المؤسسة الوطنية للسكان الأصليين", - "en": "fundação nacional do índio", - "fr": "fondation nationale de l'indien", - "he": "המוסד הלאומי למען האינדיאנים", - "hr": "funai", - "ja": "国立先住民保護財団", - "nb": "funai", - "ru": "funai", - "uk": "національний індіанський фонд", - "zh": "国家印第安人基金会" - }, - "GPS": { - "ar": "نظام التموضع العالمي", - "bg": "глобална система за позициониране", - "ca": "sistema de posicionament global", - "en": "global positioning system", - "es": "sistema de posicionamiento global", - "et": "gps", - "fi": "gps", - "he": "gps", - "hi": "ग्लोबल पोजीशनिंग प्रणाली", - "id": "sistem pemosisi global", - "it": "gps", - "ja": "グローバル・ポジショニング・システム", - "ko": "gps", - "lt": "gps", - "lv": "globālā pozicionēšanas sistēma", - "pt": "sistema de posicionamento global", - "ru": "gps", - "sk": "globálny lokalizačný systém", - "sl": "gps", - "sr": "глобални позициони систем", - "th": "จีพีเอส", - "tr": "gps", - "uk": "gps", - "vi": "hệ thống định vị toàn cầu", - "zh": "全球定位系统", - "zh-tw": "全球定位系統" - }, - "IBGE": { - "ar": "المعهد البرازيلي للجغرافيا والإحصاء", - "bg": "бразилски институт по география и статистика", - "ca": "institut brasiler de geografia i estadística", - "da": "det brasilianske institut for geografi og statistik", - "en": "instituto brasileiro de geografia e estatística", - "es": "instituto brasileño de geografía y estadística", - "fr": "institut brésilien de géographie et de statistiques", - "he": "ibge", - "hu": "brazil földrajzi és statisztikai hivatal", - "id": "institut geografi dan statistik brasil", - "ja": "ブラジル地理統計院", - "lv": "brazīlijas ģeogrāfijas un statistikas institūts", - "nb": "det brasilianske instituttet for geografi og statistikk", - "ru": "бразильский институт географии и статистики", - "tr": "brezilya coğrafya ve i̇statistik enstitüsü", - "uk": "бразильський інститут географії і статистики", - "zh": "巴西國家地理及統計局", - "zh-cn": "巴西国家地理与统计局" - }, - "ICMBio": { - "de": "instituto chico mendes de conservação da biodiversidade", - "en": "chico mendes institute for biodiversity conservation", - "es": "instituto chico mendes para la conservación de la biodiversidad", - "fi": "instituto chico mendes de conservação da biodiversidade", - "fr": "institut chico mendes", - "it": "istituto chico mendes per la conservazione della biodiversità", - "ja": "シコ・メンデス生物多様性保全研究所", - "nl": "instituto chico mendes de conservação da biodiversidade", - "pt": "instituto chico mendes de conservação da biodiversidade", - "zh": "奇科·門德斯生物多樣性保護協會" - }, - "IGVSB": { - "es": "instituto geográfico de venezuela simón bolívar", - "ja": "ベネズエラ・シモン・ボリバル地理研究所", - "pt": "instituto geográfico da venezuela simón bolívar" - }, - "Instituto Geográfico Nacional": { - "ca": "institut geogràfic nacional d'espanya", - "cs": "národní geografický institut", - "en": "instituto geográfico nacional", - "fr": "institut géographique national (espagne)", - "ja": "スペイン国立地理研究所", - "pt": "instituto geográfico nacional da espanha", - "zh": "國家地理研究所" - }, - "Kartverket": { - "da": "statens kartverk", - "de": "kartverket", - "en": "norwegian mapping and cadastre authority", - "fi": "kartverket", - "fr": "kartverket", - "he": "רשות ממשלתית למיפוי ולקדסטר של נורווגיה", - "nb": "statens kartverk", - "nl": "noorse cartografische en kadaster autoriteit", - "ru": "государственная служба картографии и кадастра норвегии", - "sv": "statens kartverk" - }, - "Mapbox": { - "en": "mapbox", - "hi": "मॅपबॉक्स", - "ru": "мапбокс", - "uk": "мапбокс" - }, - "NHD": { - "en": "national hydrography dataset" - }, - "PMLP": { - "en": "town hall of laranjal paulista", - "pt": "prefeitura municipal de laranjal paulista" - }, - "PNOA": { - "ca": "pla nacional d'ortofotografia aèria", - "da": "plan nacional de ortofotografía aérea", - "de": "plan nacional de ortofotografía aérea", - "en": "national aerial orthophotography plan", - "es": "plan nacional de ortofotografía aérea", - "fr": "plan national d'orthophotographie aérienne", - "id": "plan nacional de ortofotografía aérea", - "it": "plan nacional de ortofotografía aérea", - "nl": "plan nacional de ortofotografía aérea", - "pt": "plan nacional de ortofotografía aérea", - "ro": "plan nacional de ortofotografía aérea", - "sv": "plan nacional de ortofotografía aérea" - }, - "Yahoo": { - "ar": "فيرايزون ميديا", - "ca": "yahoo! inc. (2017-actualitat)", - "de": "verizon media", - "en": "yahoo inc.", - "id": "yahoo!", - "it": "oath", - "ja": "ヴェライゾン・メディア", - "ko": "오아츠", - "lv": "oath", - "pl": "verizon media", - "pt": "oath", - "ru": "oath inc.", - "vi": "truyền thông verizon", - "zh": "威訊媒體" - }, - "aerial_imagery": { - "ar": "تصوير جوي", - "bg": "аерофотография", - "ca": "fotografia aèria", - "cs": "fotografie ze vzduchu", - "da": "luftfotografering", - "de": "luftbildfotografie", - "el": "αεροφωτογραφία", - "en": "aerial photography", - "es": "fotografía aérea", - "et": "aerofotograafia", - "fi": "ilmavalokuvaus", - "fr": "photographie aérienne", - "he": "צילום אוויר", - "hr": "zračna fotografija", - "hu": "légi fotózás", - "id": "fotografi udara dan interpretasi citra satelit", - "is": "loftmyndun", - "it": "fotografia aerea", - "ja": "空中写真", - "ko": "항공 사진", - "lt": "aeronuotrauka", - "nb": "flyfotografi", - "nl": "luchtfotografie", - "pl": "aerofotografia", - "pt": "aerofotografia", - "ro": "fotografie aeriană", - "ru": "аэрофотосъёмка", - "sk": "letecké fotografovanie", - "sr": "аероснимање", - "sv": "flygfotografering", - "th": "แป้นพิมพ์เกษมณี", - "tr": "hava fotoğrafçılığı", - "uk": "аерозйомка", - "vi": "chụp ảnh trên không trung", - "zh": "航拍" - }, - "common_knowledge": { - "ar": "معرفة عامة", - "ca": "coneixement públic", - "en": "common knowledge", - "es": "conocimiento público", - "fi": "yleinen tieto", - "fr": "connaissance commune", - "hu": "köztudomású tény", - "id": "pengetahuan umum", - "ja": "一般的な知識", - "ko": "상식", - "nl": "algemeen bekend", - "pl": "wiedza wspólna", - "pt": "conhecimento geral", - "ru": "общеизвестный факт", - "sl": "običajno znanje", - "sv": "allmän kännedom", - "zh": "常識" - }, - "digitalglobe": { - "ca": "digitalglobe, inc", - "en": "digitalglobe", - "ko": "디지털글로브", - "zh-cn": "数字地球公司" - }, - "esri": { - "ar": "إزري", - "de": "environmental systems research institute", - "el": "arc map", - "en": "esri", - "fr": "environmental systems research institute", - "hi": "विकि.जीआईएस", - "hu": "environmental systems research institute", - "zh": "美國環境系統研究所公司" - }, - "extrapolation": { - "ar": "استكمال خارجي", - "bg": "екстраполация", - "ca": "extrapolació", - "cs": "extrapolace", - "da": "ekstrapolation", - "en": "extrapolation", - "es": "extrapolación", - "he": "אקסטרפולציה", - "hi": "बहिर्वेशन", - "hr": "ekstrapolacija", - "hu": "extrapoláció", - "id": "ekstrapolasi (matematika)", - "it": "estrapolazione", - "ja": "外挿", - "ko": "보외법", - "nb": "ekstrapolasjon", - "nl": "extrapolatie", - "pl": "ekstrapolacja", - "pt": "extrapolação", - "ro": "extrapolare", - "ru": "экстраполяция", - "sv": "extrapolering", - "th": "การประมาณค่านอกช่วง", - "tr": "ekstrapolasyon", - "uk": "екстраполяція", - "vi": "ngoại suy", - "zh": "外推" - }, - "maxar": { - "en": "maxar technologies", - "he": "מקסאר טכנולוגיות", - "ja": "マクサー・テクノロジーズ", - "pl": "maxar", - "zh": "馬薩爾科技", - "zh-cn": "麦克萨科技" - }, - "pmsp": { - "de": "militärische staatspolizei von são paulo", - "en": "military police of são paulo state", - "es": "policía militar del estado de sao paulo", - "ja": "サンパウロ州軍警察", - "pt": "polícia militar do estado de são paulo", - "zh": "聖保羅州軍事警察" - }, - "survey": { - "ar": "الحقيقة الارضية", - "ca": "veritat terreny", - "el": "εδαφική αλήθεια", - "en": "ground truth", - "es": "verdad terreno", - "pt": "verdade no solo", - "zh": "基準真相", - "zh-tw": "地面實況" - }, - "www.geoportal.gov.pl": { - "pl": "geoportal 2" - } - }, - "species": { - "": { - "ar": "دردار باسق", - "de": "englische ulme", - "en": "ulmus procera", - "nl": "engelse veldiep" - }, - "Ulmus_procera": { - "ar": "دردار باسق", - "de": "englische ulme", - "en": "ulmus procera", - "nl": "engelse veldiep" - } - }, - "sport": { - "10pin": { - "ar": "بولينج بعشرة دبابيس", - "bg": "боулинг", - "ca": "bowling de deu", - "cs": "bowling", - "da": "bowling", - "de": "bowling", - "el": "μπόουλινγκ", - "en": "ten-pin bowling", - "es": "bowling", - "et": "keegel", - "fi": "keilailu", - "fr": "bowling", - "he": "כדורת", - "hr": "kuglanje", - "hu": "bowling", - "id": "boling", - "it": "bowling", - "ja": "ボウリング", - "ko": "볼링", - "lt": "boulingas", - "lv": "boulings", - "nb": "bowling", - "nl": "bowlen", - "pl": "kręgle", - "pt": "bowling", - "pt-br": "boliche", - "ro": "bowling", - "ru": "10-кегельный боулинг", - "sk": "bowling", - "sr": "kuglanje na deset čunjeva", - "sv": "bowling", - "th": "โบว์ลิ่ง", - "tr": "bovling", - "uk": "боулінг", - "vi": "bowling", - "zh": "10瓶制保齡球", - "zh-cn": "保龄球", - "zh-hk": "保齡球", - "zh-tw": "保齡球" - }, - "8pin": { - "en": "eight-pin bowling", - "fr": "quilles de huit" - }, - "9pin": { - "cs": "kuželky", - "da": "keglespil", - "de": "kegeln", - "en": "nine-pin bowling", - "en-ca": "skittles", - "en-gb": "skittles", - "es": "bolos", - "fr": "jeu de neuf quilles", - "hu": "teke", - "ja": "ケーゲル", - "nb": "kjeglespill", - "nl": "kegelen", - "pl": "kręgle klasyczne", - "pt": "bolão", - "ro": "popice", - "ru": "9-кегельный боулинг", - "sl": "kegljanje", - "sr": "куглање на 9 чуњева", - "sv": "kägel", - "zh": "9瓶制保齡球", - "zh-cn": "九柱戏" - }, - "aikido": { - "ar": "أيكيدو", - "bg": "айкидо", - "de": "aikidō", - "el": "αϊκίντο", - "en": "aikido", - "es": "aikidō", - "et": "aikidō", - "fr": "aïkido", - "he": "אייקידו", - "hi": "अकिदो", - "hu": "aikidó", - "ja": "合気道", - "ko": "아이키도", - "ro": "aikidō", - "ru": "айкидо", - "sr": "аикидо", - "th": "ไอคิโด", - "uk": "айкідо", - "zh": "合氣道" - }, - "airsoft": { - "ar": "إير سوفت", - "bg": "страйкбол", - "da": "hardball", - "en": "airsoft", - "he": "איירסופט", - "it": "softair", - "ja": "サバイバル・ゲーム", - "ko": "서바이벌 게임", - "ru": "страйкбол", - "uk": "страйкбол", - "zh": "生存遊戲", - "zh-cn": "生存游戏" - }, - "american_football": { - "ar": "كرة القدم الأمريكية", - "bg": "американски футбол", - "ca": "futbol americà", - "cs": "americký fotbal", - "da": "amerikansk fodbold", - "el": "αμερικανικό ποδόσφαιρο", - "en": "american football", - "es": "fútbol americano", - "et": "ameerika jalgpall", - "fi": "amerikkalainen jalkapallo", - "fr": "football américain", - "he": "פוטבול", - "hi": "अमेरिकी फ़ुटबॉल", - "hr": "američki nogomet", - "hu": "amerikaifutball", - "id": "sepak bola amerika", - "is": "amerískur fótbolti", - "it": "football americano", - "ja": "アメリカンフットボール", - "ko": "미식축구", - "lt": "amerikietiškasis futbolas", - "lv": "amerikāņu futbols", - "nb": "amerikansk fotball", - "pl": "futbol amerykański", - "pt": "futebol americano", - "ro": "fotbal american", - "ru": "американский футбол", - "sk": "americký futbal", - "sl": "ameriški nogomet", - "sr": "амерички фудбал", - "sv": "amerikansk fotboll", - "th": "อเมริกันฟุตบอล", - "tr": "amerikan futbolu", - "uk": "американський футбол", - "vi": "bóng bầu dục mỹ", - "zh": "美式足球" - }, - "archery": { - "ar": "نبالة", - "bg": "стрелба с лък", - "ca": "tir amb arc", - "cs": "lukostřelba", - "da": "bueskydning", - "de": "bogenschießen", - "de-ch": "bogenschiessen", - "el": "τοξοβολία", - "en": "archery", - "es": "tiro con arco", - "et": "vibusport", - "fi": "jousiammunta", - "fr": "tir à l'arc", - "he": "קשתות", - "hi": "धनुर्विद्या", - "hr": "streličarstvo", - "hu": "íjászat", - "id": "panahan", - "is": "bogfimi", - "it": "tiro con l'arco", - "ja": "アーチェリー", - "ko": "궁술", - "lt": "šaudymas iš lanko", - "lv": "loka šaušana", - "nb": "bueskyting", - "nl": "boogschieten", - "pl": "łucznictwo", - "pt": "tiro com arco", - "ro": "tir cu arcul", - "ru": "стрельба из лука", - "sk": "lukostreľba", - "sl": "lokostrelstvo", - "sr": "стреличарство", - "sv": "bågskytte", - "th": "การยิงธนู", - "tr": "okçuluk", - "uk": "стрільба з лука", - "vi": "bắn cung", - "zh": "射箭" - }, - "athletics": { - "ar": "ألعاب القوى", - "bg": "лека атлетика", - "ca": "atletisme", - "cs": "atletika", - "da": "atletik", - "de": "leichtathletik", - "el": "στίβος", - "en": "athletics", - "es": "atletismo", - "et": "kergejõustik", - "fi": "yleisurheilu", - "fr": "athlétisme", - "he": "אתלטיקה", - "hi": "एथलेटिक्स", - "hr": "atletika", - "hu": "atlétika", - "id": "atletik", - "is": "frjálsar íþróttir", - "it": "atletica leggera", - "ja": "陸上競技", - "ko": "육상", - "lt": "lengvoji atletika", - "lv": "vieglatlētika", - "nb": "friidrett", - "nl": "atletiek", - "pl": "lekkoatletyka", - "pt": "atletismo", - "ro": "atletism", - "ru": "лёгкая атлетика", - "sk": "atletika", - "sl": "atletika", - "sr": "атлетика", - "sv": "friidrott", - "th": "กรีฑา", - "tr": "atletizm", - "uk": "легка атлетика", - "vi": "điền kinh", - "zh": "田徑", - "zh-cn": "田径" - }, - "australian_football": { - "ar": "كرة القدم الأسترالية", - "bg": "австралийски футбол", - "ca": "futbol australià", - "cs": "australský fotbal", - "da": "australsk fodbold", - "de": "australian football", - "el": "αυστραλιανό ποδόσφαιρο", - "en": "australian rules football", - "es": "fútbol australiano", - "fi": "australialainen jalkapallo", - "fr": "football australien", - "he": "פוטבול אוסטרלי", - "hi": "ऑस्ट्रेलियाई फ़ुटबॉल", - "hr": "australski nogomet", - "hu": "ausztrál futball", - "id": "sepak bola australia", - "is": "ástralskur fótbolti", - "it": "football australiano", - "ja": "オーストラリアンフットボール", - "ko": "오지 풋볼", - "lt": "australiškasis futbolas", - "lv": "austrāliešu futbols", - "nb": "australsk fotball", - "nl": "australian football", - "pl": "futbol australijski", - "pt": "futebol australiano", - "ro": "fotbal australian", - "ru": "австралийский футбол", - "sk": "austrálsky futbal", - "sr": "аустралијски фудбал", - "sv": "australisk fotboll", - "tr": "avustralya futbolu", - "uk": "австралійський футбол", - "vi": "bóng bầu dục úc", - "zh": "澳式足球" - }, - "badminton": { - "ar": "الريشة الطائرة", - "bg": "бадминтон", - "ca": "bàdminton", - "el": "αντιπτέριση", - "en": "badminton", - "es": "bádminton", - "et": "sulgpall", - "fi": "sulkapallo", - "he": "בדמינטון", - "hi": "बैडमिंटन", - "hu": "tollaslabda", - "id": "bulu tangkis", - "it": "volano", - "ja": "バドミントン", - "ko": "배드민턴", - "lt": "badmintonas", - "lv": "badmintons", - "pt": "badmínton", - "ru": "бадминтон", - "sk": "bedminton", - "sr": "бадминтон", - "th": "แบดมินตัน", - "uk": "бадмінтон", - "vi": "cầu lông", - "zh": "羽毛球", - "zh-tw": "羽球" - }, - "bandy": { - "ar": "الباندي", - "bg": "хокей с топка", - "el": "μπάντι", - "en": "bandy", - "et": "jääpall", - "fi": "jääpallo", - "he": "בנדי", - "hr": "bendi", - "hu": "jéglabda", - "ja": "バンディ", - "ko": "밴디", - "lt": "bandis", - "lv": "bendijs", - "ru": "хоккей с мячом", - "sk": "bandyhokej", - "sr": "bendi", - "uk": "хокей з м'ячем", - "zh": "班迪球" - }, - "base": { - "ca": "salt base", - "de": "base-jumping", - "el": "'αλμα βάσης", - "en": "base jumping", - "es": "salto base", - "fi": "base-hyppääminen", - "fr": "base jump", - "he": "קפיצת בסיס", - "hi": "बीएएसई कूद", - "hr": "base skakanje", - "hu": "ungarn", - "ja": "ベース・ジャンピング", - "ko": "베이스 점핑", - "lt": "b.a.s.e. šuoliai", - "nb": "basehopping", - "nl": "base-jumpen", - "ru": "бейсджампинг", - "sr": "base skakanje", - "sv": "base-hoppning", - "tr": "base jump", - "uk": "бейс-джампінг", - "zh": "定点跳伞" - }, - "baseball": { - "ar": "كرة القاعدة", - "bg": "бейзбол", - "ca": "beisbol", - "el": "μπέιζμπολ", - "en": "baseball", - "es": "béisbol", - "et": "pesapall", - "he": "בייסבול", - "hi": "बेसबॉल", - "hr": "bejzbol", - "id": "bisbol", - "is": "hafnabolti", - "ja": "野球", - "ko": "야구", - "lt": "beisbolas", - "lv": "beisbols", - "nl": "honkbal", - "pt": "basebol", - "pt-br": "beisebol", - "ru": "бейсбол", - "sk": "bejzbal", - "sl": "bejzbol", - "sr": "бејзбол", - "sv": "baseboll", - "th": "เบสบอล", - "tr": "beyzbol", - "uk": "бейсбол", - "vi": "bóng chày", - "zh": "棒球" - }, - "basketball": { - "ar": "كرة السلة", - "bg": "баскетбол", - "ca": "basquetbol", - "cs": "basketbal", - "el": "καλαθοσφαίριση", - "en": "basketball", - "es": "baloncesto", - "et": "korvpall", - "fi": "koripallo", - "fr": "basket-ball", - "he": "כדורסל", - "hi": "बास्केटबॉल", - "hr": "košarka", - "hu": "kosárlabda", - "id": "bola basket", - "is": "körfuknattleikur", - "it": "pallacanestro", - "ja": "バスケットボール", - "ko": "농구", - "lt": "krepšinis", - "lv": "basketbols", - "nl": "basketbal", - "pl": "koszykówka", - "pt": "basquetebol", - "pt-br": "basquete", - "ro": "baschet", - "ru": "баскетбол", - "sk": "basketbal", - "sl": "košarka", - "sr": "кошарка", - "sv": "basket", - "th": "บาสเกตบอล", - "tr": "basketbol", - "uk": "баскетбол", - "vi": "bóng rổ", - "zh": "篮球", - "zh-hk": "籃球", - "zh-tw": "籃球" - }, - "beachvolleyball": { - "ar": "الكرة الطائرة الشاطئية", - "bg": "плажен волейбол", - "ca": "voleibol platja", - "cs": "plážový volejbal", - "da": "beachvolley", - "de": "beachvolleyball", - "el": "μπιτς βόλεϊ", - "en": "beach volleyball", - "es": "voleibol de playa", - "et": "rannavõrkpall", - "fi": "rantalentopallo", - "fr": "beach-volley", - "he": "כדורעף חופים", - "hi": "बीच वॉलीबॉल", - "hr": "odbojka na pijesku", - "hu": "strandröplabda", - "id": "voli pantai", - "it": "beach volley", - "ja": "ビーチバレー", - "ko": "비치발리볼", - "lt": "paplūdimio tinklinis", - "lv": "pludmales volejbols", - "nb": "sandvolleyball", - "nl": "beachvolleybal", - "pl": "siatkówka plażowa", - "pt": "voleibol de praia", - "ro": "volei de plajă", - "ru": "пляжный волейбол", - "sl": "odbojka na mivki", - "sr": "одбојка на песку", - "sv": "beachvolleyboll", - "th": "วอลเลย์บอลชายหาด", - "tr": "plaj voleybolu", - "uk": "пляжний волейбол", - "vi": "bóng chuyền bãi biển", - "zh": "沙滩排球", - "zh-hk": "沙灘排球", - "zh-tw": "沙灘排球" - }, - "billiards": { - "ar": "بلياردو", - "bg": "билярд", - "ca": "billar", - "cs": "kulečník", - "da": "billard", - "de": "billard", - "el": "μπιλιάρδο", - "en": "cue sports", - "es": "billar", - "et": "piljard", - "fi": "biljardi", - "fr": "billard", - "he": "ביליארד", - "hi": "बिलियर्ड्स", - "hr": "biljar", - "hu": "biliárd", - "id": "biliar", - "it": "biliardo", - "ja": "ビリヤード", - "ko": "당구", - "lt": "biliardas", - "lv": "biljards", - "nb": "biljard", - "nl": "biljart", - "pl": "bilard", - "pt": "bilhar", - "ro": "biliard", - "ru": "бильярд", - "sk": "biliard", - "sl": "biljard", - "sr": "билијар", - "sv": "biljard", - "th": "บิลเลียด", - "tr": "bilardo", - "uk": "більярд", - "vi": "bi-a", - "zh": "撞球", - "zh-cn": "台球", - "zh-hk": "桌球" - }, - "bmx": { - "ar": "بي إم إكس", - "bg": "велосипеден мотокрос", - "en": "bmx", - "fi": "bmx-pyöräily", - "he": "אופני bmx", - "hr": "bmx biciklizam", - "nb": "bmx-sykling", - "sr": "bmx трке", - "th": "บีเอ็มเอ็กซ์", - "zh": "小轮车", - "zh-hk": "小輪車", - "zh-tw": "小輪車" - }, - "bobsleigh": { - "ar": "زلاجة جماعية", - "bg": "бобслей", - "ca": "bob", - "cs": "boby", - "da": "bobslæde", - "de": "bobsport", - "el": "αγωνιστικό έλκηθρο", - "en": "bobsleigh", - "et": "bobisõit", - "fi": "rattikelkkailu", - "he": "מזחלות", - "hr": "bob", - "hu": "bob", - "id": "bobsled", - "it": "bob", - "ja": "ボブスレー", - "ko": "봅슬레이", - "lt": "ledrogių sportas", - "lv": "bobslejs", - "nl": "bobsleeën", - "pl": "bobsleje", - "ro": "bob", - "ru": "бобслей", - "sk": "boby", - "sr": "боб", - "sv": "bob", - "tr": "bobsled", - "uk": "бобслей", - "vi": "xe trượt lòng máng", - "zh": "有舵雪橇", - "zh-cn": "雪车" - }, - "bossaball": { - "ar": "بوسابول", - "en": "bossaball", - "he": "כדור בוסה", - "ja": "ボサボール", - "lt": "bosabolas", - "ru": "боссабол" - }, - "boules": { - "ar": "بول", - "ca": "esport de boles", - "cs": "koulové sporty", - "de": "boulodrome", - "en": "petanque pitch", - "es": "pista de petanca", - "fi": "bocce", - "fr": "pétanquodrome", - "hr": "boćanje", - "hu": "golyósport", - "it": "bocciodromo", - "ja": "ブールスポーツ", - "ko": "불 (스포츠)", - "lt": "bočė", - "nb": "boule", - "nl": "boulodrome", - "pl": "bulodrom", - "pt": "boules", - "ru": "корт для бочче", - "sl": "balinanje", - "sr": "боћање", - "sv": "boulebana", - "tr": "boules", - "uk": "бочче", - "zh": "地擲球", - "zh-cn": "滚木球" - }, - "bowls": { - "ar": "لعبة البولينج", - "en": "bowls", - "et": "murukeegel", - "fi": "nurmikeilailu", - "fr": "boulingrin", - "he": "כדורת דשא", - "hi": "बाउल्स", - "id": "boling lapangan", - "ja": "ローンボウルズ", - "ko": "론볼", - "lt": "rutulių sportas", - "pt": "lawn bowls", - "ru": "игра в боулз", - "uk": "боулз", - "zh": "草地滾球" - }, - "boxing": { - "ar": "الملاكمة", - "bg": "бокс", - "ca": "boxa", - "cs": "box", - "da": "boksning", - "de": "boxen", - "el": "πυγμαχία", - "en": "boxing", - "es": "boxeo", - "et": "poks", - "fi": "nyrkkeily", - "fr": "boxe", - "he": "אגרוף (ספורט)", - "hi": "मुक्केबाज़ी", - "hr": "boks", - "hu": "ökölvívás", - "id": "tinju", - "is": "hnefaleikar", - "it": "pugilato", - "ja": "ボクシング", - "ko": "권투", - "lt": "boksas", - "lv": "bokss", - "nb": "boksing", - "nl": "boksen", - "pl": "boks", - "pt": "boxe", - "ro": "box", - "ru": "бокс", - "sk": "box", - "sl": "boks", - "sr": "бокс", - "sv": "boxning", - "th": "มวยสากล", - "tr": "boks", - "uk": "бокс", - "vi": "quyền anh", - "zh": "拳击" - }, - "canadian_football": { - "ar": "كرة القدم الكندية", - "ca": "futbol canadenc", - "cs": "kanadský fotbal", - "el": "καναδικό ποδόσφαιρο", - "en": "canadian football", - "es": "fútbol canadiense", - "fi": "kanadalainen jalkapallo", - "fr": "football canadien", - "he": "פוטבול קנדי", - "hi": "कैनेडियन फ़ुटबॉल", - "id": "sepak bola kanada", - "it": "football canadese", - "ja": "カナディアン・フットボール", - "ko": "캐나디안 풋볼", - "lt": "kanadietiškasis futbolas", - "nb": "canadisk fotball", - "pl": "futbol kanadyjski", - "pt": "futebol canadiano", - "pt-br": "futebol canadense", - "ru": "канадский футбол", - "sr": "канадски фудбал", - "sv": "kanadensisk fotboll", - "tr": "kanada futbolu", - "uk": "канадський футбол", - "zh": "加拿大式足球" - }, - "canoe": { - "ar": "قيادة قارب الكانوي", - "ca": "canotatge", - "cs": "kanoistika", - "de": "kanusport", - "el": "κανό", - "en": "canoeing", - "es": "canotaje", - "fi": "melonta", - "fr": "canoë", - "id": "kano", - "it": "canoa", - "ja": "カヌースポーツ", - "ko": "카누 경기", - "nb": "kanosport", - "nl": "kanovaren", - "pl": "kajakarstwo", - "pt": "canoagem", - "ru": "гребля на каноэ", - "sk": "kanoistika", - "sr": "vožnja kanuom", - "sv": "kanotsport", - "uk": "веслування на каное", - "vi": "chèo xuồng", - "zh": "皮划艇" - }, - "car_racing": { - "ar": "سباق سيارات", - "bg": "автомобилни спортове", - "ca": "automobilisme", - "cs": "automobilové závody", - "da": "bilsport", - "de": "automobilsport", - "el": "αγώνας αυτοκινήτων", - "en": "auto racing", - "es": "automovilismo", - "et": "autosport", - "fi": "autourheilu", - "fr": "sport automobile", - "he": "מרוץ מכוניות", - "hr": "automobilizam", - "hu": "autóversenyzés", - "id": "balap mobil", - "is": "kappakstur", - "it": "automobilismo", - "ja": "自動車競技", - "ko": "자동차 경주", - "lt": "automobilių sportas", - "lv": "autosports", - "nb": "bilsport", - "nl": "autosport", - "pl": "wyścig samochodowy", - "pt": "automobilismo", - "ro": "automobilism", - "ru": "автоспорт", - "sk": "automobilový šport", - "sl": "avtomobilistično dirkanje", - "sr": "аутомобилизам", - "sv": "bilsport", - "th": "การแข่งรถ", - "tr": "otomobil yarışı", - "uk": "автомобільні гонки", - "vi": "đua ô tô", - "zh": "賽車" - }, - "chess": { - "ar": "شطرنج", - "bg": "шахмат", - "ca": "escacs", - "cs": "šachy", - "da": "skak", - "de": "schach", - "el": "σκάκι", - "en": "chess", - "es": "ajedrez", - "et": "male", - "fi": "shakki", - "fr": "échecs", - "he": "שחמט", - "hi": "शतरंज", - "hr": "šah", - "hu": "sakk", - "id": "catur", - "is": "skák", - "it": "scacchi", - "ja": "チェス", - "ko": "체스", - "lt": "šachmatai", - "lv": "šahs", - "nb": "sjakk", - "nl": "schaken", - "pl": "szachy", - "pt": "xadrez", - "ro": "șah", - "ru": "шахматы", - "sk": "šach", - "sl": "šah", - "sr": "шах", - "sv": "schack", - "th": "หมากรุกสากล", - "tr": "satranç", - "uk": "шахи", - "vi": "cờ vua", - "zh": "國際象棋", - "zh-cn": "国际象棋", - "zh-tw": "西洋棋" - }, - "cliff_diving": { - "de": "klippenspringen", - "en": "cliff jumping", - "es": "clavado de gran altura", - "fr": "plongeon de haut vol", - "he": "קפיצה למים מגובה", - "hu": "óriás toronyugrás", - "ja": "クリフジャンプ", - "ko": "하이 다이빙", - "nb": "klippestuping", - "nl": "klifduiken", - "ru": "клифф-дайвинг", - "sl": "skakanje v vodo z visokih višin", - "sr": "слободни скокови у воду", - "sv": "klippdykning", - "zh": "高空跳水" - }, - "climbing": { - "ar": "رياضة التسلق", - "ca": "escalada esportiva", - "cs": "sportovní lezení", - "da": "sportsklatring", - "de": "sportklettern", - "el": "αθλητική αναρρίχηση", - "en": "sport climbing", - "es": "escalada deportiva", - "et": "sportronimine", - "fi": "boulderointi", - "fr": "escalade sportive", - "he": "טיפוס", - "hr": "športsko penjanje", - "hu": "hegymászás", - "id": "panjat dinding", - "it": "arrampicata sportiva", - "ja": "スポーツクライミング", - "ko": "인공암벽등반", - "lt": "laipiojimo sportas", - "lv": "boulderings", - "nb": "sportsklatring", - "nl": "klimsport", - "pl": "wspinaczka sportowa", - "pt": "boulder", - "ro": "escaladă sportivă", - "ru": "спортивное скалолазание", - "sk": "lezenie", - "sl": "športno plezanje", - "sr": "спортско пењање", - "sv": "sportklättring", - "tr": "spor tırmanışı", - "uk": "спортивне скелелазіння", - "zh": "攀石", - "zh-hk": "抱石" - }, - "climbing_adventure": { - "cs": "lanový park", - "de": "seilgarten", - "en": "adventure park", - "et": "seikluspark", - "fr": "parcours aventure en forêt", - "he": "פארק הרפתקאות", - "hu": "kalandpark", - "id": "taman kembara", - "it": "parco avventura", - "ja": "アドベンチャーパーク", - "nl": "klimbos", - "pl": "park linowy", - "pt": "arborismo", - "ru": "канатный парк", - "sl": "pustolovski park" - }, - "cockfighting": { - "ar": "مصارعة الديوك", - "ca": "baralla de galls", - "cs": "kohoutí zápasy", - "de": "hahnenkampf", - "el": "κοκορομαχία", - "en": "cockfight", - "es": "pelea de gallos", - "fi": "kukkotappelu", - "fr": "combat de coqs", - "he": "קרב תרנגולים", - "hr": "borba pijetlova", - "id": "sabung ayam", - "it": "combattimento di galli", - "ja": "闘鶏", - "ko": "닭싸움", - "nb": "hanekamp", - "nl": "hanengevecht", - "pl": "walki kogutów", - "pt": "rinha de galo", - "ru": "петушиные бои", - "sr": "борба петлова", - "sv": "tuppfäktning", - "th": "ไก่ชน", - "tr": "horoz dövüşü", - "uk": "півнячі бої", - "vi": "đá gà", - "zh": "斗鸡", - "zh-hk": "鬥雞", - "zh-tw": "鬥雞" - }, - "cricket": { - "ar": "الكريكت", - "bg": "крикет", - "ca": "estadi de criquet", - "cs": "kriket", - "da": "cricketbane", - "de": "cricketfeld", - "el": "κρίκετ", - "en": "cricket field", - "es": "campo de críquet", - "et": "kriket", - "fi": "kriketti", - "fr": "terrain de cricket", - "he": "קריקט", - "hi": "क्रिकेट का मैदान", - "hr": "kriket", - "hu": "krikettpálya", - "id": "kriket", - "is": "krikket", - "it": "campo di cricket", - "ja": "クリケット競技場", - "ko": "크리켓", - "lt": "kriketas", - "lv": "krikets", - "nb": "cricketarena", - "nl": "cricketveld", - "pl": "krykiet", - "pt": "críquete", - "ro": "crichet", - "ru": "крикетное поле", - "sk": "kriket", - "sl": "kriket", - "sr": "крикет", - "sv": "cricket", - "th": "คริกเกต", - "tr": "kriket alanı", - "uk": "поле для крикету", - "vi": "bóng gậy", - "zh": "板球場" - }, - "croquet": { - "ar": "كروكيه", - "cs": "kroket", - "da": "kroket", - "de": "krocket", - "en": "croquet", - "et": "kroket", - "fi": "kroketti", - "he": "קרוקט", - "hu": "krokett", - "ja": "クロッケー", - "ko": "크로케", - "lt": "kroketas", - "nb": "krokket", - "pl": "krokiet", - "ru": "крокет", - "sr": "крокет", - "sv": "krocket", - "tr": "kroket", - "uk": "крокет", - "zh": "槌球" - }, - "crossfit": { - "ar": "كروس فت", - "bg": "кросфит", - "en": "crossfit", - "he": "קרוספיט", - "ja": "クロスフィット", - "ko": "크로스핏", - "ru": "кроссфит", - "uk": "кросфіт" - }, - "curling": { - "ar": "كَرْلنغ", - "bg": "кърлинг", - "ca": "cúrling", - "el": "κέρλινγκ", - "en": "curling", - "et": "jääkeegel", - "he": "קרלינג", - "is": "krulla", - "ja": "カーリング", - "ko": "컬링", - "lt": "akmenslydis", - "lv": "kērlings", - "ru": "кёрлинг", - "sr": "керлинг", - "th": "เคอร์ลิง", - "tr": "körling", - "uk": "керлінґ", - "vi": "bi đá trên băng", - "zh": "冰壺", - "zh-cn": "冰壶" - }, - "cycling": { - "ar": "سباق الدراجات الهوائية", - "ca": "ciclisme de competició", - "cs": "sportovní cyklistika", - "da": "cykelsport", - "de": "radsport", - "el": "ποδηλασία", - "en": "cycle sport", - "en-ca": "bicycle racing", - "en-gb": "bicycle racing", - "es": "ciclismo de competición", - "et": "jalgrattasport", - "fi": "kilpapyöräily", - "fr": "sport cycliste", - "he": "מרוץ אופניים", - "hu": "kerékpársport", - "id": "olahraga sepeda", - "it": "ciclismo", - "ja": "自転車競技", - "ko": "사이클", - "lt": "dviračių sportas", - "lv": "riteņbraukšanas sports", - "nb": "sykling", - "nl": "wielersport", - "pl": "kolarstwo", - "pt": "ciclismo de competição", - "ro": "ciclism", - "ru": "велосипедный спорт", - "sk": "športová cyklistika", - "sl": "športno kolesarstvo", - "sr": "бициклистички спорт", - "sv": "cykelsport", - "th": "การแข่งขันจักรยาน", - "tr": "bisiklet sporu", - "uk": "велосипедні гонки", - "vi": "xe đạp thể thao", - "zh": "自行車運動", - "zh-cn": "自行车运动", - "zh-hk": "單車運動", - "zh-tw": "自由車運動" - }, - "darts": { - "ar": "جماحية", - "bg": "дартс", - "ca": "dardell", - "cs": "šipky", - "da": "dart", - "el": "βελάκια", - "en": "darts", - "es": "dardos", - "et": "noolemäng", - "fr": "fléchettes", - "he": "הטלת חצים", - "hr": "pikado", - "id": "panah lempar", - "it": "freccette", - "ja": "ダーツ", - "ko": "다트", - "lt": "smiginis", - "lv": "šautriņu mešana", - "nb": "dart", - "pl": "dart", - "pt": "dardos", - "ru": "дартс", - "sk": "šípky", - "sl": "pikado", - "sr": "пикадо", - "sv": "dart", - "th": "เกมปาเป้า", - "tr": "dart", - "uk": "дартс", - "zh": "飛鏢", - "zh-cn": "飞镖" - }, - "disc_golf": { - "ar": "ديسك غولف", - "bg": "диск голф", - "cs": "discgolf", - "da": "frisbee golf", - "de": "discgolf", - "el": "γκολφ δίσκου", - "en": "disc golf", - "et": "kettagolf", - "fi": "frisbeegolf", - "fr": "disque-golf", - "he": "דיסק גולף", - "is": "frisbígolf", - "ja": "ディスクゴルフ", - "ko": "디스크 골프", - "lt": "diskgolfas", - "nb": "diskgolf", - "nl": "diskgolf", - "pt": "frisbee golf", - "ru": "диск-гольф", - "sr": "диск голф", - "sv": "discgolf", - "uk": "диск-гольф", - "zh": "飞盘高尔夫", - "zh-hk": "飛盤高爾夫" - }, - "dog_racing": { - "ar": "سباق الكلاب السلوقية", - "ca": "cursa de llebrers", - "cs": "chrtí dostihy", - "da": "væddeløbshund", - "de": "windhundrennen", - "en": "greyhound racing", - "es": "carrera de galgos", - "fi": "vinttikoirakilpailut", - "fr": "course de lévriers", - "he": "מרוץ כלבים", - "hu": "kutyaverseny", - "it": "corse di levrieri", - "ja": "ドッグレース", - "ko": "개 경주", - "nb": "hundeveddeløp", - "nl": "windhondenrennen", - "ru": "собачьи бега", - "sv": "hundkapplöpning", - "tr": "tazı yarışı", - "uk": "собачі перегони", - "vi": "đua chó", - "zh": "賽狗", - "zh-cn": "灰狗赛跑" - }, - "dog_training": { - "ca": "ensinistrament caní", - "da": "hundetræning", - "de": "hundeerziehung", - "en": "dog training", - "es": "adiestramiento de perros", - "fi": "koiran kouluttaminen", - "he": "אילוף כלבים", - "hi": "कुत्ते का प्रशिक्षण", - "hu": "kutyanevelés és -kiképzés", - "it": "addestramento cani", - "ko": "개 훈련", - "nl": "hondentraining", - "pt": "adestramento de cães", - "ru": "виды дрессировки собак", - "sv": "hundträning", - "zh": "訓狗" - }, - "equestrian": { - "ar": "رياضة الفروسية", - "bg": "конен спорт", - "ca": "esports eqüestres", - "cs": "jezdecký sport", - "da": "hestesport", - "de": "pferdesport", - "el": "ιππικό αγώνισμα", - "en": "equestrian sport", - "es": "deporte ecuestre", - "et": "ratsasport", - "fi": "hevosurheilu", - "fr": "sport équestre", - "hu": "lovassport", - "it": "sport equestre", - "ja": "乗馬", - "ko": "승마", - "nb": "hestesport", - "nl": "paardensport", - "pl": "sport jeździecki", - "pt": "desporto equestre", - "ro": "sporturi ecvestre", - "ru": "конный спорт", - "sk": "jazdectvo", - "sr": "коњички спорт", - "sv": "hästsport", - "uk": "кінний спорт", - "zh": "马术运动" - }, - "exercise": { - "ar": "تمارين رياضية", - "bg": "физическо упражнение", - "ca": "exercici físic", - "cs": "tělesné cvičení", - "da": "motion", - "de": "körperliche bewegung", - "el": "άσκηση", - "en": "physical exercise", - "es": "ejercicio físico", - "et": "kehaline aktiivsus", - "fi": "kuntoilu", - "fr": "fitness", - "he": "פעילות גופנית", - "hi": "व्यायाम", - "hu": "testmozgás", - "id": "latihan fisik", - "is": "líkamsrækt", - "it": "esercizio fisico", - "ja": "フィジカルトレーニング", - "ko": "운동", - "lt": "pratimas", - "lv": "fizisks vingrinājums", - "nb": "fysisk mosjon", - "nl": "lichaamsbeweging", - "pl": "ćwiczenia fizyczne", - "pt": "exercício físico", - "ro": "exercițiu fizic", - "ru": "физические упражнения", - "sk": "telesné cvičenie", - "sl": "telovadba", - "sr": "физичка активност", - "sv": "träning", - "th": "การออกกำลังกาย", - "tr": "fiziksel egzersiz", - "uk": "фізичні вправи", - "vi": "thể dục", - "zh": "體能鍛煉" - }, - "field_hockey": { - "ar": "هوكي الحقل", - "bg": "хокей на трева", - "ca": "hoquei sobre herba", - "cs": "pozemní hokej", - "da": "hockey", - "de": "hockey", - "de-ch": "landhockey", - "el": "χόκεϊ επί χόρτου", - "en": "field hockey", - "es": "hockey sobre hierba", - "et": "maahoki", - "fi": "maahockey", - "fr": "hockey sur gazon", - "he": "הוקי שדה", - "hi": "मैदानी हॉकी", - "hr": "hokej na travi", - "hu": "gyeplabda", - "id": "hoki lapangan", - "is": "hokkí", - "it": "hockey su prato", - "ja": "フィールドホッケー", - "ko": "하키", - "lt": "žolės riedulys", - "lv": "lauka hokejs", - "nb": "landhockey", - "nl": "veldhockey", - "pl": "hokej na trawie", - "pt": "hóquei em campo", - "pt-br": "hóquei sobre grama", - "ro": "hochei pe iarbă", - "ru": "хоккей на траве", - "sk": "pozemný hokej", - "sl": "hokej na travi", - "sr": "хокеј на трави", - "sv": "landhockey", - "tr": "çim hokeyi", - "uk": "хокей на траві", - "vi": "khúc côn cầu trên cỏ", - "zh": "曲棍球", - "zh-tw": "草地曲棍球" - }, - "fishing": { - "ar": "صيد السمك", - "bg": "риболов", - "ca": "pesca", - "cs": "rybolov", - "da": "fiskeri", - "de": "fischen", - "de-ch": "fischerei", - "el": "αλιεία", - "en": "fishing", - "es": "pesca", - "et": "kalapüük", - "fi": "kalastus", - "fr": "pêche", - "he": "דיג", - "hi": "मत्स्य पालन", - "hr": "ribolov", - "hu": "halászat", - "id": "memancing", - "is": "fiskveiðar", - "it": "pesca", - "ja": "釣り", - "ko": "고기잡이", - "lt": "žūklė", - "lv": "zvejošana", - "nb": "fiske", - "nl": "visserij", - "pl": "połów ryb", - "pt": "pesca", - "ro": "pescuit", - "ru": "рыбная ловля", - "sk": "rybolov", - "sl": "ribolov", - "sr": "риболов", - "sv": "fiske", - "th": "การจับปลา", - "tr": "balıkçılık", - "uk": "рибальство", - "vi": "ngư nghiệp", - "zh": "捕鱼" - }, - "fitness": { - "ar": "نادي صحي", - "bg": "фитнес зала", - "ca": "centre de fitness", - "cs": "posilovna", - "da": "motionscenter", - "de": "fitnessstudio", - "el": "άσκηση", - "en": "health club", - "en-ca": "physical exercise", - "en-gb": "physical exercise", - "es": "club de salud", - "et": "jõusaal", - "fi": "kuntosali", - "fr": "centre de remise en forme", - "he": "פעילות גופנית", - "hi": "व्यायाम", - "hr": "teretana", - "hu": "edzőterem", - "id": "pusat kebugaran", - "is": "líkamsrækt", - "it": "esercizio fisico", - "ja": "フィットネスクラブ", - "ko": "헬스클럽", - "lt": "pratimas", - "lv": "fitnesa klubs", - "nb": "helsestudio", - "nl": "sportschool", - "pl": "siłownia", - "pt": "academia desportiva", - "pt-br": "exercício físico", - "ro": "exercițiu fizic", - "ru": "фитнес-клуб", - "sk": "telesné cvičenie", - "sl": "telovadba", - "sr": "физичка активност", - "sv": "motionssal", - "th": "การออกกำลังกาย", - "tr": "fitness merkezi", - "uk": "фітнес-клуб", - "vi": "phòng tập gym", - "zh": "健身房" - }, - "four_square": { - "en": "four square", - "es": "cuatro cuadras", - "ja": "がんばこ", - "ru": "квадрат", - "sv": "ruta", - "uk": "квадрат" - }, - "free_flying": { - "en": "freeflying", - "it": "freefly", - "pt": "freefly", - "ru": "фрифлай", - "uk": "фріфлай" - }, - "futsal": { - "ar": "كرة الصالات", - "bg": "футзал", - "ca": "futbol sala", - "el": "ποδόσφαιρο σάλας", - "en": "futsal", - "es": "fútbol sala", - "he": "קטרגל", - "it": "calcio a 5", - "ja": "フットサル", - "ko": "풋살", - "lt": "salės futbolas", - "lv": "telpu futbols", - "nl": "zaalvoetbal", - "pt": "futebol de salão", - "ru": "мини-футбол", - "sr": "футсал", - "th": "ฟุตซอล", - "uk": "футзал", - "zh": "室内五人足球", - "zh-hk": "五人制足球", - "zh-tw": "室內五人制足球" - }, - "gaelic_games": { - "ca": "jocs gaèlics", - "cs": "galské sporty", - "el": "γαελικός αθλητισμός", - "en": "gaelic games", - "es": "juegos gaélicos", - "et": "gaeli sportmängud", - "fi": "gaelilaiset urheilulajit", - "fr": "sport gaélique", - "it": "sport gaelici", - "ja": "ゲーリック・ゲームズ", - "ru": "гэльские игры", - "sv": "gaeliska spel", - "uk": "гельські ігри", - "zh": "蓋爾式運動" - }, - "golf": { - "ar": "غولف", - "bg": "голф", - "el": "γκολφ", - "en": "golf", - "he": "גולף", - "hi": "गॉल्फ़", - "ja": "ゴルフ", - "ko": "골프", - "lt": "golfas", - "lv": "golfs", - "pt": "golfe", - "ru": "гольф", - "sr": "голф", - "th": "กอล์ฟ", - "uk": "гольф", - "zh": "高爾夫球" - }, - "gymnastics": { - "ar": "جمباز", - "bg": "гимнастика", - "ca": "gimnàstica", - "cs": "gymnastika", - "da": "gymnastik", - "de": "turnen", - "el": "γυμναστική", - "en": "gymnastics", - "es": "gimnasia", - "et": "võimlemine", - "fi": "voimistelu", - "fr": "gymnastique", - "he": "התעמלות", - "hi": "जिम्नास्टिक्स", - "hr": "gimnastika", - "hu": "torna", - "id": "senam", - "is": "fimleikar", - "it": "ginnastica", - "ja": "体操", - "ko": "체조", - "lt": "gimnastika", - "lv": "vingrošana", - "nb": "gymnastikk", - "nl": "gymnastiek", - "pl": "gimnastyka", - "pt": "ginástica", - "ro": "gimnastică", - "ru": "гимнастика", - "sk": "gymnastika", - "sl": "gimnastika", - "sr": "гимнастика", - "sv": "gymnastik", - "th": "ยิมนาสติก", - "tr": "jimnastik", - "uk": "гімнастика", - "vi": "thể dục dụng cụ", - "zh": "体操", - "zh-hk": "體操", - "zh-tw": "體操" - }, - "handball": { - "ar": "كرة اليد", - "bg": "хандбал", - "ca": "handbol", - "cs": "házená", - "da": "håndbold", - "el": "χειροσφαίριση", - "en": "handball", - "es": "balonmano", - "et": "käsipall", - "fi": "käsipallo", - "he": "כדוריד", - "hi": "हैंडबॉल", - "hr": "rukomet", - "hu": "kézilabda", - "id": "bola tangan", - "is": "handbolti", - "it": "pallamano", - "ja": "ハンドボール", - "ko": "핸드볼", - "lt": "rankinis", - "lv": "rokasbumba", - "nb": "håndball", - "nl": "handbal", - "pl": "piłka ręczna", - "pt": "andebol", - "pt-br": "handebol", - "ro": "handbal", - "ru": "гандбол", - "sk": "hádzaná", - "sl": "rokomet", - "sr": "рукомет", - "sv": "handboll", - "th": "แฮนด์บอล", - "tr": "hentbol", - "uk": "гандбол", - "vi": "bóng ném", - "zh": "手球" - }, - "hapkido": { - "ar": "هابكيدو", - "bg": "хапкидо", - "el": "χαπκίντο", - "en": "hapkido", - "he": "הפקידו", - "hu": "hapkidó", - "ja": "ハプキドー", - "ko": "합기도", - "pt": "hapkidô", - "ru": "хапкидо", - "sr": "хапкидо", - "th": "ฮับกีโด", - "uk": "хапкідо", - "zh": "合氣道", - "zh-cn": "合气道" - }, - "horse_racing": { - "ar": "سباق الخيل", - "bg": "конни надбягвания", - "ca": "cursa de cavalls", - "cs": "dostihový sport", - "da": "hestevæddeløb", - "de": "pferderennen", - "el": "ιπποδρομία", - "en": "horse racing", - "es": "turf", - "fi": "laukkaurheilu", - "fr": "sport hippique", - "he": "מרוץ סוסים", - "hi": "अश्वधावन", - "hr": "konjički sport", - "hu": "lóverseny", - "id": "pacuan kuda", - "is": "kappreiðar", - "it": "ippica", - "ja": "競馬", - "ko": "경마", - "lt": "žirgų lenktynės", - "lv": "zirgu skriešanās sacīkstes", - "nb": "hesteveddeløp", - "nl": "rensport", - "pl": "wyścigi konne", - "pt": "turfe", - "ro": "cursă de cai", - "ru": "конные скачки", - "sk": "dostihy", - "sr": "коњичке трке", - "sv": "hästkapplöpning", - "th": "การแข่งม้า", - "tr": "at yarışı", - "uk": "кінні перегони", - "vi": "đua ngựa", - "zh": "賽馬", - "zh-cn": "赛马" - }, - "horse_riding": { - "ar": "فروسية", - "bg": "конна езда", - "ca": "equitació", - "cs": "jezdectví", - "da": "ridning", - "de": "reiten", - "el": "ιππασία", - "en": "equestrianism", - "es": "equitación", - "et": "ratsutamine", - "fi": "ratsastus", - "fr": "équitation", - "he": "רכיבה", - "hi": "घुड़सवारी", - "hr": "jahanje", - "hu": "lovaglás", - "id": "berkuda", - "is": "hestamennska", - "it": "equitazione", - "ja": "馬術", - "ko": "승마", - "lt": "jojimas", - "lv": "jāšana", - "nb": "hesteriding", - "nl": "paardrijden", - "pl": "jeździectwo", - "pt": "hipismo", - "ro": "călărie", - "ru": "верховая езда", - "sk": "jazdectvo", - "sl": "konjeništvo", - "sr": "јахање", - "sv": "hästhållning", - "tr": "binicilik", - "uk": "верхова їзда", - "vi": "cưỡi ngựa nghệ thuật", - "zh": "马术", - "zh-hk": "馬術", - "zh-tw": "馬術" - }, - "horseshoes": { - "de": "hufeisenwerfen", - "en": "horseshoes", - "es": "herradura", - "fr": "jeu de fers à cheval", - "he": "זריקת פרסה", - "ja": "ホースシューズ", - "pl": "rzut podkową", - "sv": "hästskokastning", - "tr": "at nalı oyunu", - "zh": "掷马蹄铁" - }, - "ice_hockey": { - "ar": "هوكي الجليد", - "bg": "хокей на лед", - "ca": "hoquei sobre gel", - "cs": "lední hokej", - "da": "ishockey", - "de": "eishockey", - "el": "χόκεϊ επί πάγου", - "en": "ice hockey", - "en-ca": "hockey", - "es": "hockey sobre hielo", - "et": "jäähoki", - "fi": "jääkiekko", - "fr": "hockey sur glace", - "he": "הוקי קרח", - "hi": "आइस हॉकी", - "hr": "hokej na ledu", - "hu": "jégkorong", - "id": "hoki es", - "is": "íshokkí", - "it": "hockey su ghiaccio", - "ja": "アイスホッケー", - "ko": "아이스하키", - "lt": "ledo ritulys", - "lv": "hokejs", - "nb": "ishockey", - "nl": "ijshockey", - "pl": "hokej na lodzie", - "pt": "hóquei no gelo", - "ro": "hochei pe gheață", - "ru": "хоккей с шайбой", - "sk": "ľadový hokej", - "sl": "hokej na ledu", - "sr": "хокеј на леду", - "sv": "ishockey", - "th": "ฮอกกี้น้ำแข็ง", - "tr": "buz hokeyi", - "uk": "хокей із шайбою", - "vi": "khúc côn cầu trên băng", - "zh": "冰球" - }, - "ice_skating": { - "ar": "تزلج على الجليد", - "ca": "patinatge sobre gel", - "cs": "bruslení", - "da": "skøjteløb", - "de": "schlittschuhlaufen", - "el": "παγοδρομία", - "en": "ice skating", - "es": "patinaje sobre hielo", - "et": "uisutamine", - "fi": "luistelu", - "fr": "patinage sur glace", - "he": "החלקה על הקרח", - "hi": "आइस स्केटिंग", - "hr": "klizanje na ledu", - "id": "seluncur es", - "it": "pattinaggio su ghiaccio", - "ja": "アイススケート", - "ko": "빙상 스케이트", - "lt": "čiuožimas ant ledo", - "nb": "skøyteløp på is", - "nl": "schaatsen", - "pl": "łyżwiarstwo", - "pt": "patinagem no gelo", - "ru": "катание на коньках", - "sk": "korčuľovanie", - "sl": "drsanje na ledu", - "sr": "клизање на леду", - "sv": "skridskosport", - "th": "สเกตน้ำแข็ง", - "tr": "buz pateni", - "uk": "катання на ковзанах", - "vi": "trượt băng", - "zh": "滑冰" - }, - "ice_stock": { - "ca": "icestock", - "cs": "metaná", - "da": "isstok", - "de": "stockschießen", - "de-ch": "stockschiessen", - "en": "ice stock sport", - "fi": "jääkolkka", - "fr": "eisstock", - "it": "stock sport", - "ja": "アイス・ストック・スポーツ", - "ko": "바이에른 컬링", - "lt": "aištokas", - "nb": "isstock", - "nl": "ijsstokschieten", - "pl": "ice stock", - "ru": "айсшток", - "sv": "isstock", - "uk": "айсшток", - "zh": "冰上滑盤" - }, - "judo": { - "ar": "جودو", - "bg": "джудо", - "el": "τζούντο", - "en": "judo", - "es": "yudo", - "et": "džuudo", - "he": "ג'ודו", - "hi": "जूडो", - "hu": "cselgáncs", - "is": "júdó", - "ja": "柔道", - "ko": "유도", - "lt": "dziudo", - "lv": "džudo", - "pt-br": "judô", - "ru": "дзюдо", - "sk": "džudo", - "sr": "џудо", - "th": "ยูโด", - "uk": "дзюдо", - "zh": "柔道" - }, - "karate": { - "ar": "كاراتيه", - "bg": "карате", - "el": "καράτε", - "en": "karate", - "fr": "karaté", - "he": "קראטה", - "hi": "कराटे", - "ja": "空手", - "ko": "공수도", - "lt": "karatė", - "lv": "karatē", - "pt": "caraté", - "pt-br": "caratê", - "ru": "карате", - "sr": "карате", - "th": "คาราเต้", - "uk": "карате", - "zh": "空手道" - }, - "karting": { - "ar": "كارتينغ", - "bg": "картинг", - "ca": "kàrting", - "da": "gokart", - "de": "kartbahn", - "en": "kart circuit", - "es": "karting", - "et": "kardisport", - "fi": "karting", - "fr": "circuit de karting", - "he": "קארטינג", - "hi": "कार्ट रेसिंग", - "hr": "karting", - "hu": "gokart", - "id": "gokar", - "it": "kartodromo", - "ja": "カートサーキット", - "ko": "레이싱 카트", - "lt": "kartingas", - "lv": "kartings", - "nb": "gokart", - "nl": "kartcircuit", - "pl": "karting", - "pt": "kartódromo", - "ro": "karting", - "ru": "картодром", - "sk": "karting", - "sl": "karting", - "sr": "karting", - "sv": "karting", - "tr": "karting pisti", - "uk": "картинг", - "zh": "卡丁車", - "zh-cn": "卡丁车" - }, - "kitesurfing": { - "ar": "تزلج شراعي", - "bg": "кайтсърфинг", - "ca": "surf d'estel", - "cs": "kitesurfing", - "da": "kitesurfing", - "de": "kitesurfen", - "en": "kite surfing", - "es": "kitesurf", - "et": "lohesurf", - "fi": "leijalautailu", - "fr": "kitesurf", - "he": "קייטסרפינג", - "hi": "काइटसर्फिंग", - "hr": "kitesurfing", - "hu": "kitesurf", - "id": "selancar layang", - "it": "kitesurfing", - "ja": "カイトサーフィン", - "ko": "카이트서핑", - "lt": "jėgos aitvarų ir banglenčių sportas", - "lv": "kaitbords", - "nb": "kiting", - "nl": "kitesurfen", - "pl": "kitesurfing", - "pt": "kitesurf", - "ro": "kitesurfing", - "ru": "кайтсёрфинг", - "sk": "kiting", - "sl": "kajtanje", - "sr": "kajting", - "sv": "kitesurf", - "tr": "uçurtma sörfü", - "uk": "кайтсерфінг", - "zh": "風箏衝浪", - "zh-cn": "风筝冲浪" - }, - "korfball": { - "ar": "كرة السلة الهولندية", - "bg": "корфбол", - "ca": "corfbol", - "cs": "korfbal", - "el": "κόρφμπολ", - "en": "korfball", - "es": "korfbal", - "fi": "korfpallo", - "fr": "korfbal", - "he": "קורפבול", - "id": "bola keranjang", - "ja": "コーフボール", - "ko": "코프볼", - "lt": "olandiškasis krepšinis", - "nb": "kurvball", - "nl": "korfbal", - "pt": "corfebol", - "ru": "корфбол", - "sk": "korfbal", - "sr": "корфбол", - "tr": "korfbol", - "uk": "корфбол", - "zh": "合球" - }, - "krachtbal": { - "en": "krachtbal" - }, - "lacrosse": { - "ar": "لكروس", - "bg": "лакрос", - "cs": "lakros", - "el": "λακρός", - "en": "lacrosse", - "fi": "haavipallo", - "fr": "crosse", - "he": "לקרוס", - "hi": "लैक्रोस", - "is": "háfleikur", - "ja": "ラクロス", - "ko": "라크로스", - "lt": "lakrosas", - "lv": "lakross", - "ru": "лякросс", - "sk": "lakros", - "sr": "лакрос", - "tr": "lakros", - "uk": "лакрос", - "vi": "bóng vợt", - "zh": "袋棍球" - }, - "laser_tag": { - "bg": "лазертаг", - "cs": "laser game", - "en": "laser tag", - "fr": "jeu laser", - "hu": "lasergame", - "id": "tembak laser", - "ja": "レーザー交戦装置", - "nl": "lasergame", - "ru": "лазертаг", - "sv": "lasergame", - "uk": "лазертаг" - }, - "long_jump": { - "ar": "قفز طويل", - "bg": "скок на дължина", - "ca": "salt de llargada", - "cs": "skok daleký", - "da": "længdespring", - "de": "weitsprung", - "el": "άλμα εις μήκος", - "en": "long jump", - "es": "salto de longitud", - "et": "kaugushüpe", - "fi": "pituushyppy", - "fr": "saut en longueur", - "he": "קפיצה לרוחק", - "hi": "lambi kood", - "hr": "skok u dalj", - "hu": "távolugrás", - "id": "lompat jauh", - "is": "langstökk", - "it": "salto in lungo", - "ja": "走幅跳", - "ko": "멀리뛰기", - "lt": "šuolis į tolį", - "lv": "tāllēkšana", - "nb": "lengdehopp", - "nl": "verspringen", - "pl": "skok w dal", - "pt": "salto em comprimento", - "ro": "săritură în lungime", - "ru": "прыжок в длину", - "sk": "skok do diaľky", - "sl": "skok v daljino", - "sr": "скок удаљ", - "sv": "längdhopp", - "th": "กระโดดไกล", - "tr": "uzun atlama", - "uk": "стрибки в довжину", - "vi": "nhảy xa", - "zh": "跳遠", - "zh-cn": "跳远" - }, - "martial_arts": { - "ar": "فنون قتالية", - "bg": "бойно изкуство", - "ca": "art marcial", - "cs": "bojové umění", - "da": "kampsport", - "de": "kampfkunst", - "el": "πολεμικές τέχνες", - "en": "martial art", - "es": "arte marcial", - "et": "võitluskunstid", - "fi": "itsepuolustuslaji", - "fr": "art martial", - "he": "אמנות לחימה", - "hi": "युद्ध कलाएँ", - "hr": "borilačke vještine", - "hu": "harcművészet", - "id": "seni bela diri", - "is": "bardagaíþrótt", - "it": "arte marziale", - "ja": "格闘技", - "ko": "무예", - "lt": "kovos menai", - "lv": "cīņas māksla", - "nb": "kampkunst", - "nl": "vechtkunst", - "pl": "sztuki walki", - "pt": "artes marciais", - "ro": "artă marțială", - "ru": "боевое искусство", - "sk": "bojové umenie", - "sl": "borilna veščina", - "sr": "борилачка вjештина", - "sv": "stridskonst", - "th": "ศิลปะการต่อสู้", - "tr": "dövüş sanatları", - "uk": "бойові мистецтва", - "vi": "võ thuật", - "zh": "武術", - "zh-cn": "武术" - }, - "miniature_golf": { - "ar": "غولف مصغر", - "cs": "minigolf", - "da": "minigolf", - "de": "minigolf", - "el": "μίνι γκολφ", - "en": "miniature golf", - "es": "minigolf", - "et": "minigolf", - "fi": "ratagolf", - "fr": "minigolf", - "he": "מיני גולף", - "hu": "minigolf", - "it": "minigolf", - "ja": "パターゴルフ", - "lt": "minigolfas", - "nb": "minigolf", - "nl": "minigolf", - "pl": "minigolf", - "pt": "minigolfe", - "ru": "мини-гольф", - "sl": "minigolf", - "sr": "мини голф", - "sv": "bangolf", - "tr": "minigolf", - "uk": "міні-гольф", - "zh": "小型高爾夫球" - }, - "motocross": { - "ar": "موتوكروس", - "bg": "мотокрос", - "ca": "motocròs", - "cs": "motokros", - "en": "motocross", - "et": "motokross", - "fr": "moto-cross", - "he": "מוטוקרוס", - "hr": "motokros", - "hu": "motokrossz", - "ja": "モトクロス", - "ko": "모토크로스", - "lv": "motokross", - "nl": "motorcross", - "ru": "мотокросс", - "sk": "motokros", - "sl": "motokros", - "th": "มอเตอร์ครอส", - "tr": "motokros", - "uk": "мотокрос", - "zh": "越野摩托車賽", - "zh-hk": "越野電單車賽" - }, - "motor": { - "ar": "رياضة المحركات الآلية", - "ca": "esports de motor", - "cs": "motoristický sport", - "el": "μηχανοκίνητος αθλητισμός", - "en": "motorsport", - "es": "deporte de motor", - "et": "mootorisport", - "fi": "moottoriurheilu", - "fr": "sport mécanique", - "he": "ספורט מוטורי", - "hr": "mototrke", - "id": "olahraga otomotif", - "is": "akstursíþróttir", - "it": "sport motoristici", - "ja": "モータースポーツ", - "ko": "모터스포츠", - "lv": "motoru sports", - "nl": "gemotoriseerde sport", - "pl": "sport motorowy", - "pt": "desporto motorizado", - "pt-br": "esporte a motor", - "ro": "sport cu motor", - "ru": "моторные виды спорта", - "sl": "motošport", - "sr": "мото-спорт", - "th": "กีฬาท้าความเร็ว", - "tr": "motor sporları", - "uk": "моторні види спорту", - "vi": "đua xe thể thao", - "zh": "動力運動" - }, - "mtb": { - "ar": "دراجة جبلية", - "bg": "планински велосипед", - "ca": "bicicleta tot terreny", - "cs": "horské kolo", - "da": "mountainbike", - "de": "mountainbike", - "en": "mountain bike", - "es": "bicicleta de montaña", - "fi": "maastopolkupyörä", - "fr": "vélo tout-terrain", - "he": "אופני הרים", - "hr": "brdski biciklizam", - "id": "sepeda gunung", - "is": "fjallahjól", - "ja": "マウンテンバイク", - "ko": "산악 자전거", - "lt": "kalnų dviratis", - "nb": "terrengsykkel", - "nl": "mountainbike", - "pl": "rower górski", - "pt": "bicicleta de montanha", - "ru": "горный велосипед", - "sk": "horský bicykel", - "sl": "gorsko kolo", - "sr": "брдски бициклизам", - "sv": "mountainbike", - "th": "จักรยานเสือภูเขา", - "tr": "dağ bisikleti", - "uk": "гірський велосипед", - "vi": "xe đạp leo núi", - "zh": "登山車", - "zh-cn": "登山车" - }, - "multi": { - "ar": "رياضة", - "bg": "спорт", - "ca": "esport", - "el": "αθλητισμός", - "en": "sport", - "es": "deporte", - "fi": "urheilu", - "he": "ספורט", - "hi": "खेल", - "id": "olahraga", - "is": "íþrótt", - "ja": "スポーツ", - "ko": "스포츠", - "lt": "sportas", - "lv": "sports", - "pt": "desporto", - "pt-br": "esporte", - "ru": "спорт", - "sk": "šport", - "sl": "šport", - "sr": "спорт", - "th": "กีฬา", - "tr": "spor", - "uk": "спорт", - "vi": "thể thao", - "zh": "体育", - "zh-hk": "體育", - "zh-tw": "體育" - }, - "netball": { - "ar": "كرة الشبكة", - "el": "νέτμπολ", - "en": "netball", - "fi": "verkkopallo", - "he": "נטבול", - "id": "bola jaring", - "ja": "ネットボール", - "ko": "네트볼", - "lt": "netbolas", - "lv": "netbols", - "nb": "nettball", - "ru": "нетбол", - "tr": "netbol", - "uk": "нетбол", - "vi": "bóng lưới", - "zh": "籃網球", - "zh-cn": "篮网球" - }, - "obstacle_course": { - "da": "forhindringsbane", - "de": "hindernisbahn", - "en": "obstacle course", - "es": "recorrido de obstáculos", - "fr": "course à obstacles", - "he": "מסלול מכשולים", - "ja": "障害物競走", - "nl": "hindernisbaan", - "ru": "полоса препятствий", - "sv": "hinderbana", - "tr": "engel parkuru", - "uk": "смуга перешкод", - "zh": "障碍训练", - "zh-cn": "障碍训练场" - }, - "orienteering": { - "ar": "سباق موجه", - "bg": "спортно ориентиране", - "ca": "cursa d'orientació", - "cs": "orientační sporty", - "da": "orienteringsløb", - "de": "orientierungslauf", - "el": "αγωνιστικός προσανατολισμός", - "en": "orienteering", - "es": "orientación", - "et": "orienteerumine", - "fi": "suunnistus", - "fr": "course d'orientation", - "he": "ניווט ספורטיבי", - "hr": "orijentacijski šport", - "hu": "tájfutás", - "is": "rathlaup", - "it": "orientamento", - "ja": "オリエンテーリング", - "ko": "오리엔티어링", - "lt": "orientavimosi sportas", - "lv": "orientēšanās sports", - "nb": "orientering", - "nl": "oriëntatieloop", - "pl": "bieg na orientację", - "pt": "orientação", - "ro": "orientare", - "ru": "спортивное ориентирование", - "sk": "orientačný beh", - "sl": "orientacija", - "sr": "оријентиринг", - "sv": "orientering", - "tr": "oryantiring", - "uk": "спортивне орієнтування", - "vi": "thể thao định hướng", - "zh": "定向运动" - }, - "paddle_tennis": { - "en": "paddle tennis", - "fr": "paddle-tennis", - "he": "פאדל טניס", - "ja": "パドルテニス", - "pl": "padel", - "ru": "падел-теннис", - "uk": "паддл теніс", - "zh": "板網球" - }, - "padle": { - "ar": "رياضة البادل", - "ca": "pàdel", - "da": "padeltennis", - "de": "padel-tennis", - "el": "πάντελ", - "en": "padel", - "es": "pádel", - "he": "פאדל", - "ja": "パドルテニス", - "lt": "padelio tenisas", - "pt": "pádel", - "uk": "падель (спорт)", - "zh": "笼式网球" - }, - "paintball": { - "ar": "كرة الطلاء", - "bg": "пейнтбол", - "el": "χρωματοσφαίριση", - "en": "paintball", - "et": "värvikuulimäng", - "he": "פיינטבול", - "ja": "ペイントボール", - "ko": "페인트볼", - "lt": "dažasvydis", - "lv": "peintbols", - "ru": "пейнтбол", - "sr": "пејнтбол", - "uk": "пейнтбол", - "zh": "迷彩漆彈運動", - "zh-cn": "迷彩漆弹运动" - }, - "parachuting": { - "ar": "هبوط بالمظلات", - "bg": "парашутизъм", - "ca": "paracaigudisme", - "cs": "parašutismus", - "da": "faldskærmsudspring", - "de": "fallschirmspringen", - "el": "πτώση με αλεξίπτωτο", - "en": "skydiving", - "es": "paracaidismo", - "fi": "laskuvarjohyppy", - "fr": "parachutisme", - "he": "צניחה חופשית", - "hi": "पैराशूटिंग", - "hr": "padobranstvo", - "hu": "ejtőernyőzés", - "id": "terjun payung", - "is": "fallhlífastökk", - "it": "paracadutismo", - "ja": "スカイダイビング", - "ko": "스카이 다이빙", - "lt": "parašiutų sportas", - "lv": "izpletņlēkšana", - "nb": "fallskjermhopping", - "nl": "parachutespringen", - "pl": "spadochroniarstwo", - "pt": "paraquedismo", - "ro": "parașutism", - "ru": "парашютизм", - "sk": "parašutizmus", - "sl": "padalstvo", - "sr": "падобранство", - "sv": "fallskärmshoppning", - "tr": "paraşütle atlama", - "uk": "парашутизм", - "vi": "nhảy dù", - "zh": "跳伞", - "zh-hk": "跳傘", - "zh-tw": "跳傘" - }, - "paragliding": { - "ar": "طيران شراعي", - "bg": "парапланеризъм", - "ca": "parapent", - "de": "gleitschirmfliegen", - "el": "αλεξίπτωτο πλαγιάς", - "en": "paragliding", - "es": "parapente", - "et": "tiibvari", - "fi": "varjoliito", - "fr": "parapente", - "he": "רחיפה", - "hr": "padobransko jedrenje", - "hu": "siklóernyőzés", - "id": "paralayang", - "it": "parapendio", - "ja": "パラグライダー", - "ko": "패러글라이딩", - "lt": "parasparnis", - "nl": "parapente", - "pl": "paralotniarstwo", - "pt": "parapente", - "ro": "parapantism", - "ru": "параплан", - "sk": "paraglajding", - "sl": "jadralno padalstvo", - "sr": "параглајдинг", - "sv": "skärmflygning", - "th": "ร่มร่อน", - "tr": "yamaç paraşütü", - "uk": "парапланеризм", - "vi": "dù lượn", - "zh": "滑翔伞", - "zh-hk": "滑翔傘", - "zh-tw": "滑翔傘" - }, - "pelota": { - "ar": "كرة الباسك", - "ca": "joc de pilota", - "cs": "pelota", - "da": "pelota", - "de": "pelota", - "en": "handball sports", - "es": "juego de pelota", - "fi": "pelota", - "fr": "jeu de balle", - "he": "כדור בסקי", - "hr": "baskijska pilota", - "hu": "baszk pelota", - "id": "pelota", - "is": "pelóta", - "it": "sport sferistici", - "ja": "バスク・ペロタ", - "ko": "펠로타", - "lt": "baskų pelota", - "nb": "pelota", - "nl": "kaatsen", - "pl": "pelota", - "pt": "pelota basca", - "ru": "пелота", - "sr": "пелота", - "sv": "pelota", - "tr": "basque pelota", - "uk": "пелота", - "zh": "壁網球", - "zh-cn": "回力球", - "zh-hk": "回力球", - "zh-tw": "回力球" - }, - "petanque": { - "ar": "الكرة الحديدية", - "bg": "петанк", - "ca": "petanca", - "cs": "pétanque", - "de": "pétanque", - "el": "εδαφοσφαίριση", - "en": "petanque", - "en-ca": "pétanque", - "en-gb": "pétanque", - "es": "petanca", - "et": "petank", - "fi": "petankki", - "fr": "pétanque", - "he": "פטאנק", - "hu": "pétanque", - "id": "pétanque", - "it": "pétanque", - "ja": "ペタンク", - "ko": "페탕크", - "lt": "petankė", - "pl": "pétanque", - "pt": "petanca", - "ro": "pétanque", - "ru": "петанк", - "sk": "pétanque", - "sl": "petanka", - "sr": "petank", - "sv": "boule", - "th": "เปตอง", - "tr": "petank", - "uk": "петанк", - "vi": "bi sắt", - "zh": "法式滾球", - "zh-cn": "法式滚球" - }, - "pickleball": { - "ar": "بيكل بول", - "cs": "piklebal", - "en": "pickleball", - "ja": "ピックルボール", - "ru": "пиклбол", - "uk": "піклбол", - "zh": "匹克球" - }, - "pilates": { - "ar": "بيلاتس", - "bg": "пилатес", - "el": "πιλάτες", - "en": "pilates", - "he": "פילאטיס", - "ja": "ピラティス・メソッド", - "ko": "필라테스", - "lt": "pilatesas", - "ru": "пилатес", - "sr": "пилатес", - "th": "พีลาเทิส", - "uk": "пілатес", - "zh": "彼拉提斯" - }, - "racquet": { - "ar": "كرة الراح", - "ca": "raquetbol", - "cs": "raketbal", - "en": "racquetball", - "es": "raquetbol", - "he": "רקטבול", - "hu": "raketball", - "ja": "ラケットボール", - "ko": "라켓볼", - "lt": "raketbolas", - "pt": "raquetebol", - "ru": "ракетбол", - "th": "แร็กเกตบอล", - "tr": "raketbol", - "uk": "ракетбол", - "zh": "短柄牆球" - }, - "rc_car": { - "bg": "радиоуправляем автомобилен модел", - "ca": "cotxe teledirigit", - "da": "trådløs fjernstyret modelbil", - "de": "funkferngesteuertes modellauto", - "en": "radio-controlled car", - "es": "automóvil teledirigido", - "fi": "radio-ohjattava auto", - "fr": "voiture radiocommandée", - "he": "מכונית המופעלת ממרחק", - "it": "modellismo automobilistico dinamico", - "ja": "ラジコン模型自動車", - "ko": "무선조종 자동차", - "nb": "radiostyrt bil", - "nl": "radiografisch bestuurde auto", - "pt": "carrinho de controle remoto", - "ru": "радиоуправляемая автомодель", - "sr": "radio kontrolisani", - "sv": "radiostyrd modellbil", - "zh": "遙控車" - }, - "rock_climbing": { - "ar": "تسلق الصخور", - "bg": "скално катерене", - "ca": "escalada de roques", - "cs": "horolezectví", - "da": "klippeklatring", - "de": "felsklettern", - "el": "αναρρίχηση σε βράχο", - "en": "rock climbing", - "es": "escalada en roca", - "et": "kaljuronimine", - "fi": "kalliokiipeily", - "fr": "escalade sur rochers", - "he": "טיפוס מצוקים", - "id": "panjat tebing", - "it": "arrampicata su roccia", - "ja": "ロック・クライミング", - "ko": "암벽등반", - "lv": "klinšu kāpšana", - "nb": "fjellklatring", - "nl": "rotsklimmen", - "pl": "wspinaczka skalna", - "ru": "скалолазание", - "sl": "sistem", - "sr": "алпинизам", - "uk": "скелелазіння", - "vi": "leo núi đá", - "zh": "攀岩" - }, - "roller_skating": { - "ar": "تزلج بالعجلات", - "ca": "patinatge sobre rodes", - "de": "rollsport", - "en": "roller skating", - "es": "patín sobre ruedas tradicional", - "et": "rulluisutamine", - "fi": "rullaluistelu", - "fr": "patinage à roulettes", - "he": "גלגיליות", - "hu": "görkorcsolyázás", - "it": "pattinaggio a rotelle", - "ja": "ローラースケート", - "ko": "롤러스케이팅", - "nb": "rulleskøyting", - "nl": "rolschaatsen", - "pl": "wrotkarstwo", - "pt": "patinagem sobre rodas", - "pt-br": "patinação sobre rodas", - "ru": "роликовые коньки", - "sl": "kotalkanje", - "sr": "rolanje", - "sv": "rullskridskoåkning", - "tr": "paten", - "uk": "роликові ковзани", - "zh": "轮滑", - "zh-tw": "輪滑" - }, - "rowing": { - "ar": "التجديف", - "bg": "академично гребане", - "ca": "rem", - "cs": "veslování", - "da": "roning", - "de": "rudersport", - "el": "κωπηλασία", - "en": "rowing", - "es": "remo", - "et": "sõudmine", - "fi": "soutu", - "fr": "aviron", - "he": "חתירה", - "hr": "veslanje", - "hu": "evezés", - "id": "dayung", - "is": "kappróður", - "it": "canottaggio", - "ja": "ボート競技", - "ko": "조정", - "lt": "irklavimas", - "lv": "akadēmiskā airēšana", - "nb": "roing", - "nl": "roeien", - "pl": "wioślarstwo", - "pt": "remo", - "ro": "canotaj", - "ru": "академическая гребля", - "sk": "veslovanie", - "sl": "veslanje", - "sr": "веслање", - "sv": "rodd", - "tr": "kürek", - "uk": "академічне веслування", - "vi": "chèo thuyền", - "zh": "赛艇", - "zh-hk": "賽艇", - "zh-tw": "划船" - }, - "rugby": { - "ar": "دوري الرغبي", - "bg": "ръгби", - "ca": "rugbi a 13", - "de-ch": "rugby", - "el": "ράγκμπυ λιγκ", - "en": "rugby league", - "en-ca": "rugby football", - "et": "ragbi", - "fr": "rugby à xiii", - "he": "ליגת הרוגבי", - "hi": "रग्बी लीग", - "hr": "ragbi", - "hu": "ligarögbi", - "id": "liga rugbi", - "is": "ruðningur", - "it": "rugby a 13", - "ja": "ラグビーリーグ", - "ko": "럭비 리그", - "lt": "regbis", - "lv": "regbijs", - "pt": "râguebi de treze", - "pt-br": "rúgbi", - "ro": "rugby în 13", - "ru": "регбилиг", - "sl": "rugby", - "sr": "рагби лига", - "th": "รักบี้", - "tr": "ragbi ligi", - "uk": "регбіліг", - "vi": "bóng bầu dục liên minh", - "zh": "聯盟式橄欖球", - "zh-cn": "橄榄球类运动", - "zh-hk": "欖球聯盟", - "zh-tw": "橄欖球類運動" - }, - "rugby_league": { - "ar": "دوري الرغبي", - "ca": "rugbi a 13", - "el": "ράγκμπυ λιγκ", - "en": "rugby league", - "fr": "rugby à xiii", - "he": "ליגת הרוגבי", - "hi": "रग्बी लीग", - "hu": "ligarögbi", - "id": "liga rugbi", - "it": "rugby a 13", - "ja": "ラグビーリーグ", - "ko": "럭비 리그", - "pt": "râguebi de treze", - "ro": "rugby în 13", - "ru": "регбилиг", - "sr": "рагби лига", - "tr": "ragbi ligi", - "uk": "регбіліг", - "vi": "bóng bầu dục liên minh", - "zh": "聯盟式橄欖球", - "zh-hk": "欖球聯盟" - }, - "rugby_union": { - "ar": "اتحاد الرغبي", - "ca": "rugbi a 15", - "el": "ράγκμπι γιούνιον", - "en": "rugby union", - "es": "rugby a 15", - "fr": "rugby à xv", - "he": "רוגבי יוניון", - "hi": "रग्बी यूनियन", - "hu": "uniós rögbi", - "id": "uni rugbi", - "it": "rugby a 15", - "ja": "ラグビーユニオン", - "ko": "럭비 유니언", - "pt": "râguebi de quinze", - "ro": "rugby în xv", - "ru": "регби-15", - "sk": "ragby", - "sr": "рагби јунион", - "th": "รักบี้ยูเนียน", - "tr": "ragbi birliği", - "uk": "регбі-15", - "vi": "bóng bầu dục liên hiệp", - "zh": "聯合式橄欖球", - "zh-cn": "联合式橄榄球", - "zh-hk": "聯合式欖球" - }, - "running": { - "ar": "جري", - "ca": "disciplines atlètiques de cursa", - "cs": "běžecká disciplína lehké atletiky", - "da": "løbesport", - "de": "laufdisziplinen der leichtathletik", - "en": "running discipline of track", - "et": "jooks", - "fi": "juoksulaji", - "fr": "épreuves de course à pied en athlétisme", - "he": "ריצה (ספורט)", - "hu": "futószámok", - "it": "discipline di corsa di atletica leggera", - "nl": "loopsport", - "pl": "biegi lekkoatletyczne", - "pt": "corrida de pista", - "ru": "беговые виды лёгкой атлетики", - "sl": "tek", - "sv": "löpgrenar", - "uk": "бігові види легкої атлетики" - }, - "sailing": { - "ar": "إبحار", - "ca": "vela", - "cs": "jachting", - "da": "kapsejlads", - "de": "regattasegeln", - "el": "ιστιοπλοΐα", - "en": "sailing", - "es": "vela", - "et": "purjesport", - "fi": "kilpapurjehdus", - "fr": "voile", - "he": "שיט תחרותי", - "hu": "vitorlázás", - "id": "pelayaran (olahraga)", - "is": "siglingakeppni", - "it": "vela", - "ja": "セーリング", - "ko": "세일링", - "lv": "burāšana", - "nb": "seiling", - "nl": "zeilen", - "pl": "regaty żeglarskie", - "pt": "vela", - "ro": "iahting", - "ru": "парусный спорт", - "sk": "jachting", - "sl": "športno jadranje", - "sr": "спортско једрење", - "sv": "kappsegling", - "tr": "yelken", - "uk": "вітрильний спорт", - "zh": "帆船運動", - "zh-cn": "帆船运动" - }, - "scuba_diving": { - "ar": "غوص بجهاز التنفس تحت الماء المكتفي ذاتيا", - "bg": "водолазно гмуркане", - "ca": "submarinisme", - "cs": "přístrojové potápění", - "da": "dykning", - "de": "gerätetauchen", - "el": "αυτόνομη κατάδυση", - "en": "scuba diving", - "es": "submarinismo", - "fi": "laitesukellus", - "fr": "plongée en scaphandre autonome", - "he": "צלילה", - "hr": "ronjenje", - "hu": "búvár", - "id": "selam scuba", - "it": "immersione subacquea", - "ja": "スクーバダイビング", - "ko": "스쿠버 다이빙", - "nb": "apparatdykking", - "nl": "scuba duiken", - "pl": "płetwonurek", - "pt": "mergulho autônomo", - "pt-br": "mergulho recreativo", - "ru": "подводное плавание со снаряжением", - "sk": "prístrojové potápanie", - "sl": "potapljanje z jeklenko", - "sr": "роњење", - "sv": "sportdykning", - "th": "การดำน้ำลึก", - "tr": "aletli dalış", - "vi": "lặn có bình khí", - "zh": "水肺潛水" - }, - "shooting": { - "ar": "رماية", - "bg": "спортна стрелба", - "ca": "tir esportiu", - "cs": "sportovní střelba", - "da": "skydesport", - "de": "sportschießen", - "de-ch": "sportschiessen", - "el": "σκοποβολή", - "en": "shooting sport", - "es": "tiro deportivo", - "et": "laskesport", - "fi": "ammunta", - "fr": "tir sportif", - "he": "ירי ספורטיבי", - "hi": "निशानेबाजी", - "hr": "streljaštvo", - "hu": "sportlövészet", - "id": "olahraga menembak", - "is": "skotfimi", - "it": "tiro", - "ja": "射撃競技", - "ko": "사격", - "lt": "šaudymas", - "lv": "šaušana", - "nb": "skytesport", - "nl": "schietsport", - "pl": "strzelectwo", - "pt": "esportes de tiro", - "pt-br": "tiro desportivo", - "ro": "tir sportiv", - "ru": "стрелковый спорт", - "sk": "športová streľba", - "sl": "strelstvo", - "sr": "стрељаштво", - "sv": "sportskytte", - "tr": "atıcılık sporu", - "uk": "стрілецький спорт", - "vi": "bắn súng (thể thao)", - "zh": "射擊運動", - "zh-cn": "射击运动" - }, - "shooting_range": { - "bg": "стрелбище", - "ca": "polígon de tir", - "cs": "střelnice", - "da": "skydebane", - "de": "schießstand", - "el": "πεδίο βολής", - "en": "shooting range", - "es": "polígono de tiro", - "et": "lasketiir", - "fi": "ampumarata", - "fr": "stand de tir", - "he": "מטווח", - "id": "lapangan tembak", - "it": "poligono di tiro", - "ja": "射撃場", - "lt": "tiras", - "nb": "skytebane", - "nl": "schietbaan", - "pl": "strzelnica (strzelectwo)", - "pt": "estande de tiro", - "ro": "poligon de tragere", - "ru": "стрельбище", - "sl": "strelišče", - "sv": "skjutbana", - "tr": "poligon", - "uk": "тир", - "vi": "trường bắn", - "zh": "射擊靶場" - }, - "shuffleboard": { - "ar": "شفلبورد", - "en": "shuffleboard", - "fr": "jeu de galets", - "ja": "シャフルボード", - "ru": "шаффлборд", - "zh": "沙狐球" - }, - "skateboard": { - "ar": "تزلج لوحي", - "bg": "скейтбординг", - "ca": "patinatge de monopatí", - "de": "skateboardfahren", - "el": "σκέιτμπορντινγκ", - "en": "skateboarding", - "es": "monopatinaje", - "et": "rulasõit", - "fi": "rullalautailu", - "fr": "skateboard", - "he": "סקייטבורדינג", - "hu": "gördeszkázás", - "is": "hjólabretti", - "it": "skateboard", - "ja": "スケートボーディング", - "ko": "스케이트보딩", - "lt": "riedlenčių sportas", - "lv": "skeitbordings", - "nb": "rullebrettkjøring", - "nl": "skateboarden", - "pt": "skate", - "ro": "skateboard", - "ru": "скейтбординг", - "sk": "skejtbording", - "sl": "rolkanje", - "sr": "скејтбординг", - "sv": "skateboard", - "th": "สเกตบอร์ด", - "tr": "kaykay", - "uk": "скейтбординг", - "vi": "trượt ván", - "zh": "滑板活动" - }, - "skating": { - "ca": "patinatge", - "da": "skøjtning", - "en": "skating", - "es": "patinaje", - "et": "uisutamine", - "fr": "patinage", - "hr": "klizanje", - "hu": "korcsolyázás", - "it": "pattinaggio", - "ja": "スケート競技", - "nb": "skøyter", - "nl": "schaatsen", - "ru": "катание", - "sl": "drsanje", - "sr": "клизање", - "sv": "skridskoåkning", - "zh": "溜冰" - }, - "ski_jumping": { - "ar": "قفز تزلجي", - "bg": "ски скокове", - "ca": "salt d'esquí", - "cs": "skoky na lyžích", - "da": "skihop", - "de": "skispringen", - "el": "άλμα με σκι", - "en": "ski jumping", - "es": "salto de esquí", - "et": "suusahüpped", - "fi": "mäkihyppy", - "fr": "saut à ski", - "he": "קפיצות סקי", - "hr": "skijaški skokovi", - "hu": "síugrás", - "id": "lompat ski", - "is": "skíðastökk", - "it": "salto con gli sci", - "ja": "スキージャンプ", - "ko": "스키점프", - "lt": "šuoliai su slidėmis", - "lv": "tramplīnlēkšana", - "nb": "skihopping", - "nl": "schansspringen", - "pl": "skoki narciarskie", - "pt": "salto de esqui", - "ro": "sărituri cu schiurile", - "ru": "прыжки на лыжах с трамплина", - "sk": "skoky na lyžiach", - "sl": "smučarski skoki", - "sr": "скијашки скокови", - "sv": "backhoppning", - "th": "อาคารกีฬากระโดดสกี", - "tr": "kayakla atlama", - "uk": "стрибки з трампліна", - "zh": "跳台滑雪" - }, - "skiing": { - "ar": "تزلج على الجليد", - "bg": "ски спорт", - "ca": "esquí", - "cs": "lyžování", - "da": "skisport", - "de": "skifahren", - "el": "σκι", - "en": "skiing", - "es": "esquí", - "et": "suusasport", - "fi": "hiihto", - "fr": "ski", - "he": "סקי", - "hi": "स्कीबाज़ी", - "hr": "skijanje", - "hu": "síelés", - "id": "ski", - "is": "skíðaíþróttir", - "it": "sci", - "ja": "スキー", - "ko": "스키", - "lt": "slidžių sportas", - "lv": "slēpošana", - "nb": "skiidrett", - "nl": "skiën", - "pl": "narciarstwo", - "pt": "esqui", - "ro": "schi", - "ru": "лыжный спорт", - "sk": "lyžovanie", - "sl": "smučanje", - "sr": "скијање на снегу", - "sv": "skidsport", - "tr": "kayak", - "uk": "лижний спорт", - "vi": "trượt tuyết", - "zh": "滑雪" - }, - "soccer": { - "ar": "كرة القدم", - "bg": "футбол", - "ca": "futbol", - "cs": "fotbal", - "da": "fodbold", - "de": "bolzplatz", - "de-at": "fußball", - "de-ch": "fussball", - "el": "ποδόσφαιρο", - "en": "association football", - "en-ca": "soccer", - "en-us": "soccer", - "es": "fútbol", - "et": "jalgpall", - "fi": "jalkapallo", - "fr": "football", - "he": "כדורגל", - "hi": "फुटबॉल", - "hr": "nogomet", - "hu": "labdarúgás", - "id": "sepak bola", - "is": "knattspyrna", - "it": "calcio", - "ja": "サッカー", - "ko": "축구", - "lt": "futbolas", - "lv": "futbols", - "nb": "fotball", - "nl": "voetbal", - "pl": "piłka nożna", - "pt": "futebol", - "ro": "fotbal", - "ru": "футбол", - "sk": "futbal", - "sl": "nogomet", - "sr": "фудбал", - "sv": "fotboll", - "th": "ฟุตบอล", - "tr": "futbol", - "uk": "футбол", - "vi": "bóng đá", - "zh": "足球" - }, - "softball": { - "ar": "الكرة اللينة", - "bg": "софтбол", - "ca": "softbol", - "el": "σόφτμπολ", - "en": "softball", - "es": "sóftbol", - "et": "pehmepall", - "he": "סופטבול", - "hr": "softbol", - "id": "sofbol", - "is": "mjúkbolti", - "ja": "ソフトボール", - "ko": "소프트볼", - "lt": "softbolas", - "lv": "softbols", - "nl": "softbal", - "pt": "softbol", - "ru": "софтбол", - "sk": "softbal", - "sr": "софтбол", - "sv": "softboll", - "th": "ซอฟต์บอล", - "tr": "softbol", - "uk": "софтбол", - "vi": "bóng mềm", - "zh": "壘球", - "zh-cn": "垒球" - }, - "squash": { - "ar": "إسكواش", - "bg": "скуош", - "ca": "esquaix", - "el": "τοιχοσφαίριση", - "en": "squash", - "he": "סקווש", - "hi": "स्क्वैश", - "hr": "skvoš", - "hu": "fallabda", - "ja": "スカッシュ", - "ko": "스쿼시", - "lt": "skvošas", - "lv": "skvošs", - "ru": "сквош", - "sl": "skvoš", - "sr": "skvoš", - "th": "สควอช (กีฬา)", - "tr": "duvar topu", - "uk": "сквош", - "vi": "bóng quần", - "zh": "壁球" - }, - "sumo": { - "ar": "سومو", - "bg": "сумо", - "cs": "sumó", - "de": "sumō", - "el": "σούμο", - "en": "sumo", - "he": "סומו", - "hi": "सूमो", - "hr": "sumo hrvanje", - "hu": "szumó", - "ja": "相撲", - "ko": "스모", - "pt": "sumô", - "ru": "сумо", - "sr": "сумо", - "sv": "sumobrottning", - "th": "ซูโม่", - "tr": "sumo güreşi", - "uk": "сумо", - "zh": "相撲" - }, - "surfing": { - "ar": "ركمجة", - "bg": "сърфиране", - "ca": "surf", - "de": "wellenreiten", - "el": "σέρφινγκ", - "en": "surfing", - "es": "surf", - "et": "surfamine", - "fi": "lainelautailu", - "fr": "surf", - "he": "גלישת גלים", - "hi": "लहरबाज़ी", - "hr": "surfanje", - "hu": "hullámlovaglás", - "id": "selancar", - "is": "brimbrettabrun", - "it": "surf", - "ja": "サーフィン", - "ko": "파도타기", - "lt": "banglenčių sportas", - "lv": "sērfings", - "nl": "surfen", - "pt": "surfe", - "ru": "сёрфинг", - "sl": "surfanje", - "sr": "сурфовање", - "th": "โต้คลื่น", - "tr": "sörf", - "uk": "серфінг", - "vi": "lướt sóng", - "zh": "衝浪", - "zh-cn": "冲浪" - }, - "swimming": { - "ar": "السباحة", - "bg": "плуване", - "ca": "natació", - "cs": "plavání", - "da": "konkurrencesvømning", - "de": "schwimmsport", - "el": "κολύμβηση", - "en": "swimming", - "es": "natación", - "et": "ujumine", - "fi": "uinti", - "fr": "natation sportive", - "he": "שחייה תחרותית", - "hr": "plivanje (sport)", - "hu": "versenyúszás", - "id": "renang", - "it": "nuoto", - "ja": "競泳", - "ko": "수영", - "lv": "peldēšana", - "nb": "svømming", - "nl": "zwemsport", - "pl": "pływanie sportowe", - "pt": "natação pura", - "pt-br": "natação", - "ro": "natație", - "ru": "плавание", - "sl": "plavanje", - "sr": "пливање", - "sv": "tävlingssimning", - "th": "กีฬาว่ายน้ำ", - "tr": "yüzme", - "uk": "спортивне плавання", - "vi": "bơi lội", - "zh": "游泳运动", - "zh-cn": "竞赛游泳" - }, - "table_soccer": { - "ar": "كرة قدم الطاولة", - "bg": "футбол на маса", - "ca": "futbolí", - "cs": "stolní fotbal", - "da": "bordfodbold", - "de": "tischfußball", - "de-ch": "tischfussball", - "el": "επιτραπέζιο ποδοσφαιράκι", - "en": "table football", - "es": "fútbol de mesa", - "fi": "pöytäjalkapallo", - "fr": "baby-foot", - "he": "כדורגל שולחן", - "hr": "stolni nogomet", - "hu": "csocsó", - "id": "sepak bola meja", - "it": "calcio balilla", - "ja": "テーブル・フットボール", - "ko": "테이블 풋볼", - "nl": "tafelvoetbal", - "pl": "piłkarzyki", - "pt": "futebol de mesa", - "ro": "foosball", - "ru": "кикер", - "sk": "stolný futbal", - "sr": "стони фудбал", - "sv": "bordsfotboll", - "th": "ฟุตบอลโต๊ะ", - "tr": "langırt", - "uk": "кікер", - "vi": "bi lắc", - "zh": "桌上足球" - }, - "table_tennis": { - "ar": "كرة الطاولة", - "bg": "тенис на маса", - "ca": "tennis de taula", - "cs": "stolní tenis", - "da": "bordtennis", - "de": "tischtennis", - "el": "επιτραπέζια αντισφαίριση", - "en": "table tennis", - "es": "tenis de mesa", - "et": "lauatennis", - "fi": "pöytätennis", - "fr": "tennis de table", - "he": "טניס שולחן", - "hi": "टेबल टेनिस", - "hr": "stolni tenis", - "hu": "asztalitenisz", - "id": "tenis meja", - "is": "borðtennis", - "it": "tennistavolo", - "ja": "卓球", - "ko": "탁구", - "lt": "stalo tenisas", - "lv": "galda teniss", - "nb": "bordtennis", - "nl": "tafeltennis", - "pl": "tenis stołowy", - "pt": "tênis de mesa", - "ro": "tenis de masă", - "ru": "настольный теннис", - "sk": "stolný tenis", - "sl": "namizni tenis", - "sr": "стони тенис", - "sv": "bordtennis", - "th": "เทเบิลเทนนิส", - "tr": "masa tenisi", - "uk": "настільний теніс", - "vi": "bóng bàn", - "zh": "乒乓球", - "zh-tw": "桌球" - }, - "taekwondo": { - "ar": "تايكوندو", - "bg": "таекуондо", - "el": "τάε κβον ντο", - "en": "taekwondo", - "he": "טאקוונדו", - "ja": "テコンドー", - "ko": "태권도", - "lt": "tekvondo", - "lv": "tekvondo", - "ru": "тхэквондо", - "sl": "taekwon-do", - "sr": "теквондо", - "th": "เทควันโด", - "tr": "tekvando", - "uk": "тхеквондо", - "zh": "跆拳道" - }, - "team_handball": { - "ar": "كرة اليد", - "bg": "хандбал", - "ca": "handbol", - "cs": "házená", - "da": "håndbold", - "el": "χειροσφαίριση", - "en": "handball", - "es": "balonmano", - "et": "käsipall", - "fi": "käsipallo", - "he": "כדוריד", - "hi": "हैंडबॉल", - "hr": "rukomet", - "hu": "kézilabda", - "id": "bola tangan", - "is": "handbolti", - "it": "pallamano", - "ja": "ハンドボール", - "ko": "핸드볼", - "lt": "rankinis", - "lv": "rokasbumba", - "nb": "håndball", - "nl": "handbal", - "pl": "piłka ręczna", - "pt": "andebol", - "pt-br": "handebol", - "ro": "handbal", - "ru": "гандбол", - "sk": "hádzaná", - "sl": "rokomet", - "sr": "рукомет", - "sv": "handboll", - "th": "แฮนด์บอล", - "tr": "hentbol", - "uk": "гандбол", - "vi": "bóng ném", - "zh": "手球" - }, - "tennis": { - "ar": "ملعب كرة مضرب", - "bg": "тенис корт", - "ca": "pista de tennis", - "cs": "tenisový dvorec", - "da": "tennisbane", - "de": "tennisplatz", - "de-ch": "tennis", - "el": "αντισφαίριση", - "en": "tennis court", - "en-ca": "tennis", - "en-gb": "tennis", - "es": "pista de tenis", - "et": "tenniseväljak", - "fi": "tenniskenttä", - "fr": "court de tennis", - "he": "מגרש טניס", - "hi": "टेनिस", - "hr": "tenis", - "hu": "tenisz", - "id": "lapangan tenis", - "is": "tennis", - "it": "campo da tennis", - "ja": "テニスコート", - "ko": "테니스 코트", - "lt": "teniso kortas", - "lv": "teniss", - "nb": "tennisbane", - "nl": "tennisbaan", - "pl": "kort tenisowy", - "pt": "campo de ténis", - "pt-br": "quadra de tênis", - "ro": "tenis", - "ru": "теннисный корт", - "sk": "tenis", - "sl": "teniško igrišče", - "sr": "тениски терен", - "sv": "tennisbana", - "th": "เทนนิส", - "tr": "kort", - "uk": "тенісний корт", - "vi": "sân quần vợt", - "zh": "網球場", - "zh-cn": "网球", - "zh-tw": "網球" - }, - "toboggan": { - "ar": "الزحافات الثلجية", - "bg": "спортни шейни", - "cs": "saně", - "da": "kælk", - "de": "rennrodeln", - "el": "λουτζ", - "en": "luge", - "et": "kelgutamine", - "fi": "ohjaskelkkailu", - "fr": "luge de course", - "he": "לוז'", - "hr": "sanjkanje", - "hu": "szánkó", - "it": "slittino", - "ja": "リュージュ", - "ko": "루지", - "lt": "rogučių sportas", - "lv": "kamaniņu braukšana", - "nb": "aking", - "nl": "rodelen", - "pl": "saneczkarstwo", - "ro": "sanie", - "ru": "санный спорт", - "sr": "санкање", - "sv": "rodel", - "tr": "kızak", - "uk": "санний спорт", - "vi": "trượt băng nằm ngửa", - "zh": "無舵雪橇", - "zh-cn": "无舵雪橇" - }, - "trampoline": { - "ar": "جمباز القفز", - "ca": "gimnàstica de trampolí", - "cs": "skoky na trampolíně", - "da": "trampolinspring", - "de": "trampolinturnen", - "en": "trampoline gymnastics", - "es": "gimnasia en trampolín", - "et": "trampoliinvõimlemine", - "fi": "trampoliinivoimistelu", - "fr": "trampoline", - "he": "טרמפולינה", - "hr": "trampolin", - "hu": "trambulin", - "id": "senam trampolin", - "it": "trampolino elastico", - "ja": "トランポリン競技", - "ko": "트램펄린 경기", - "lt": "šuoliai ant batuto", - "nb": "trampoline", - "nl": "trampolinespringen", - "pl": "skoki na trampolinie", - "pt": "trampolim acrobático", - "ru": "прыжки на батуте", - "sk": "skoky na trampolíne", - "sr": "трамполина (спорт)", - "sv": "trampolin", - "uk": "стрибки на батуті", - "zh": "弹床", - "zh-hk": "彈牀" - }, - "ultimate": { - "ar": "ألتيمت", - "bg": "ултимейт", - "cs": "ultimate frisbee", - "el": "φρίσμπι", - "en": "ultimate", - "he": "אולטימייט", - "hr": "ultimate frizbi", - "is": "ultimate frisbee", - "ja": "アルティメット", - "ko": "얼티밋 프리스비", - "lt": "lėkščiasvydis", - "lv": "frisbijs", - "nl": "ultimate frisbee", - "pl": "ultimate frisbee", - "ru": "алтимат фрисби", - "sk": "ultimate frisbee", - "sl": "ultimate frizbi", - "sr": "алтимет фризби", - "uk": "алтимат", - "vi": "ném đĩa", - "zh": "終極飛盤" - }, - "ultralight_aviation": { - "ar": "طائرة فائقة الخفة", - "ca": "aviació ultralleugera", - "cs": "ultralehké letadlo", - "da": "ultralet fly", - "de": "ultraleichtflugzeug", - "en": "ultralight aviation", - "es": "avión ultraligero", - "fi": "ultrakevyt lentokone", - "fr": "planeur ultra-léger motorisé", - "he": "אווירון זעיר ממדים", - "hr": "mikrolaki avion", - "id": "penerbangan ultra ringan", - "is": "fis", - "it": "ultraleggero", - "ja": "超軽量動力機", - "ko": "초경량 항공", - "lt": "ultra lengvas orlaivis", - "nb": "mikrofly", - "nl": "ultralicht motorluchtvaartuig", - "pl": "samolot ultralekki", - "pt": "ultraleve", - "ru": "сверхлёгкая авиация", - "sl": "ultralahko letalo", - "sr": "ултралаки авион", - "sv": "ultralätt flyg", - "tr": "ultralight havacılık", - "zh": "輕型航空器" - }, - "volleyball": { - "ar": "الكرة الطائرة", - "bg": "волейбол", - "ca": "voleibol", - "cs": "volejbal", - "el": "πετοσφαίριση", - "en": "volleyball", - "es": "voleibol", - "et": "võrkpall", - "fi": "lentopallo", - "fr": "volley-ball", - "he": "כדורעף", - "hi": "वालीबॉल", - "hr": "odbojka", - "hu": "röplabda", - "id": "bola voli", - "is": "blak", - "it": "pallavolo", - "ja": "バレーボール", - "ko": "배구", - "lt": "tinklinis", - "lv": "volejbols", - "nl": "volleybal", - "pl": "piłka siatkowa", - "pt": "voleibol", - "ro": "volei", - "ru": "волейбол", - "sk": "volejbal", - "sl": "odbojka", - "sr": "одбојка", - "sv": "volleyboll", - "th": "วอลเลย์บอล", - "tr": "voleybol", - "uk": "волейбол", - "vi": "bóng chuyền", - "zh": "排球" - }, - "water_polo": { - "ar": "كرة الماء", - "bg": "водна топка", - "ca": "waterpolo", - "cs": "vodní pólo", - "da": "vandpolo", - "de": "wasserball", - "el": "υδατοσφαίριση", - "en": "water polo", - "es": "waterpolo", - "et": "veepall", - "fi": "vesipallo", - "fr": "water-polo", - "he": "כדורמים", - "hi": "वाटर पोलो", - "hr": "vaterpolo", - "hu": "vízilabda", - "id": "polo air", - "is": "sundknattleikur", - "it": "pallanuoto", - "ja": "水球", - "ko": "수구", - "lt": "vandensvydis", - "lv": "ūdenspolo", - "nb": "vannpolo", - "nl": "waterpolo", - "pl": "piłka wodna", - "pt": "polo aquático", - "ro": "polo pe apă", - "ru": "водное поло", - "sk": "vodné pólo", - "sl": "vaterpolo", - "sr": "ватерполо", - "sv": "vattenpolo", - "th": "โปโลน้ำ", - "tr": "sutopu", - "uk": "водне поло", - "vi": "bóng nước", - "zh": "水球" - }, - "water_ski": { - "ar": "تزلج على الماء", - "bg": "водни ски", - "ca": "esquí aquàtic", - "cs": "vodní lyžování", - "da": "vandskiløb", - "de": "wasserski", - "el": "θαλάσσιο σκι", - "en": "water skiing", - "es": "esquí acuático", - "et": "veesuusatamine", - "fi": "vesihiihto", - "fr": "ski nautique", - "he": "סקי מים", - "hi": "वातर स्कीइङ्", - "hr": "skijanje na vodi", - "id": "ski air", - "it": "sci nautico", - "ja": "水上スキー", - "ko": "수상스키", - "lt": "vandens slidžių sportas", - "nb": "vannski", - "nl": "waterskiën", - "pl": "narciarstwo wodne", - "pt": "esqui aquático", - "ro": "schi nautic", - "ru": "воднолыжный спорт", - "sl": "smučanje na vodi", - "sr": "скијање на води", - "sv": "vattenskidor", - "tr": "su kayağı", - "uk": "водні лижі", - "zh": "滑水" - }, - "weightlifting": { - "ar": "رفع الأثقال", - "bg": "вдигане на тежести", - "ca": "halterofília", - "cs": "vzpírání", - "da": "vægtløftning", - "de": "gewichtheben", - "el": "άρση βαρών", - "en": "weightlifting", - "es": "halterofilia", - "et": "tõstesport", - "fi": "painonnosto", - "fr": "haltérophilie", - "he": "הרמת משקולות", - "hi": "भारोत्तोलन", - "hr": "dizanje utega", - "hu": "súlyemelés", - "id": "angkat besi", - "is": "lyftingar", - "it": "sollevamento pesi", - "ja": "重量挙げ", - "ko": "역도", - "lt": "sunkioji atletika", - "lv": "svarcelšana", - "nb": "vektløfting", - "nl": "gewichtheffen", - "pl": "podnoszenie ciężarów", - "pt": "halterofilismo", - "ro": "haltere", - "ru": "тяжёлая атлетика", - "sk": "vzpieranie", - "sl": "olimpijsko dviganje uteži", - "sr": "дизање тегова", - "sv": "tyngdlyftning", - "th": "ยกน้ำหนัก", - "tr": "halter", - "uk": "важка атлетика", - "vi": "cử tạ", - "zh": "举重", - "zh-hk": "舉重", - "zh-tw": "舉重" - }, - "wrestling": { - "ar": "مصارعة", - "bg": "борба", - "ca": "lluita", - "cs": "zápas", - "da": "brydning", - "de": "ringen", - "el": "πάλη", - "en": "wrestling", - "es": "lucha", - "et": "maadlus", - "fi": "paini", - "fr": "lutte", - "he": "היאבקות", - "hi": "कुश्ती", - "hr": "hrvanje", - "hu": "birkózás", - "id": "pergulatan", - "it": "lotta", - "ja": "レスリング", - "ko": "레슬링", - "lt": "imtynės", - "lv": "cīņas sports", - "nb": "bryting", - "nl": "worstelen", - "pl": "zapasy", - "pt": "luta", - "ro": "lupte", - "ru": "борьба", - "sk": "zápasenie", - "sl": "rokoborba", - "sr": "рвање", - "sv": "brottning", - "th": "มวยปล้ำ", - "tr": "güreş", - "uk": "боротьба", - "vi": "đấu vật", - "zh": "摔跤", - "zh-hk": "摔角", - "zh-tw": "角力" - }, - "yoga": { - "ar": "يوجا", - "bg": "йога", - "ca": "ioga", - "cs": "jóga", - "da": "yoga", - "de": "yoga", - "el": "γιόγκα", - "en": "yoga studio", - "en-ca": "yoga", - "en-gb": "yoga", - "es": "yoga", - "et": "jooga", - "fi": "jooga", - "fr": "studio de yoga", - "he": "יוגה", - "hi": "योग", - "hr": "joga", - "hu": "jóga", - "id": "yoga", - "is": "jóga", - "it": "yoga", - "ja": "ヨーガ", - "ko": "요가", - "lt": "joga", - "lv": "joga", - "nb": "yoga", - "nl": "yoga", - "pl": "joga", - "pt": "ioga", - "ro": "yoga", - "ru": "йога", - "sk": "joga", - "sl": "joga", - "sr": "јога", - "sv": "yoga", - "th": "โยคะ", - "tr": "yoga", - "uk": "йоґа", - "vi": "yoga", - "zh": "瑜伽" - } - }, - "station": { - "subway": { - "ar": "محطة مترو", - "bg": "метростанция", - "ca": "estació de metro", - "cs": "stanice metra", - "da": "metrostation", - "de": "u-bahnhof", - "de-at": "u-bahn-station", - "el": "σταθμός μετρό", - "en": "metro station", - "es": "estación de metro", - "et": "metroojaam", - "fi": "metroasema", - "fr": "station de métro", - "he": "תחנת רכבת תחתית", - "hi": "मेट्रो स्टेशन", - "hu": "metróállomás", - "id": "stasiun kereta api metro", - "it": "fermata della metropolitana", - "ja": "地下鉄駅", - "ko": "도시철도역", - "lt": "metro stotis", - "nb": "metrostasjon", - "nl": "metrostation", - "pl": "stacja metra", - "pt": "estação de metropolitano", - "pt-br": "estação de metrô", - "ro": "stație de metrou", - "ru": "станция метрополитена", - "sk": "stanica metra", - "sr": "метро станица", - "sv": "tunnelbanestation", - "tr": "metro istasyonu", - "uk": "станція метрополітену", - "zh": "地铁車站", - "zh-cn": "地铁站", - "zh-hk": "地鐵站", - "zh-tw": "捷運站" - } - }, - "stone_type": { - "coat_of_arms": { - "ar": "شعار الدرع", - "bg": "герб", - "ca": "escut d'armes", - "cs": "erb", - "da": "våben", - "de": "wappen", - "el": "οικόσημο", - "en": "coat of arms", - "es": "escudo de armas", - "et": "vapp", - "fi": "vaakuna", - "fr": "blason", - "he": "שלט אצולה", - "hi": "राज्य - चिह्न", - "hr": "grb", - "hu": "címer", - "id": "lambang kebesaran", - "is": "skjaldarmerki", - "it": "stemma", - "ja": "紋章", - "ko": "문장", - "lt": "herbas", - "lv": "ģerbonis", - "nb": "våpen", - "nl": "heraldisch wapen", - "pl": "herb", - "pt": "brasão", - "ro": "stemă", - "ru": "герб", - "sk": "erb", - "sl": "grb", - "sr": "грб", - "sv": "heraldiskt vapen", - "th": "ตราอาร์ม", - "tr": "arma", - "uk": "герб", - "vi": "phù hiệu áo giáp", - "zh": "紋章", - "zh-cn": "纹章" - }, - "hunger_stone": { - "ar": "حجارة الجوع", - "ca": "pedra de la fam", - "cs": "hladový kámen", - "de": "hungerstein", - "en": "hunger stone", - "es": "piedras del hambre", - "fr": "pierre de la faim", - "he": "סלע רעב", - "it": "pietra della fame", - "ja": "ハンガーストーン", - "ko": "헝거 스톤", - "lv": "bada akmens", - "nb": "hungersten", - "nl": "hongersteen", - "pl": "kamień głodowy", - "pt": "pedra da fome", - "ru": "камни голода", - "sv": "hungersten", - "th": "หินแห่งความหิวโหย", - "uk": "камінь голоду", - "zh": "饥饿之石" - } - }, - "studio": { - "audio": { - "ar": "إستديو تسجيل", - "ca": "estudi de gravació", - "cs": "nahrávací studio", - "da": "pladestudie", - "de": "tonstudio", - "el": "στούντιο ηχογράφησης", - "en": "recording studio", - "es": "estudio de grabación", - "fi": "äänitysstudio", - "fr": "studio d'enregistrement", - "he": "אולפן הקלטות", - "hu": "hangstúdió", - "id": "studio rekaman", - "it": "studio di registrazione", - "ja": "録音スタジオ", - "ko": "녹음실", - "nb": "musikkstudio", - "nl": "geluidsstudio", - "pl": "studio nagraniowe", - "pt": "estúdio de gravação", - "ro": "studio de înregistrare", - "ru": "студия звукозаписи", - "sk": "nahrávacie štúdio", - "sl": "snemalni studio", - "sr": "тонски студио", - "sv": "inspelningsstudio", - "tr": "kayıt stüdyosu", - "uk": "студія звукозапису", - "vi": "phòng thu", - "zh": "錄音室", - "zh-cn": "录音室" - }, - "television": { - "ar": "استديو تلفزيون", - "ca": "estudi de televisió", - "cs": "televizní studio", - "de": "fernsehstudio", - "el": "τηλεοπτικό στούντιο", - "en": "television studio", - "es": "estudio de televisión", - "fi": "televisiostudio", - "fr": "studio de télévision", - "he": "אולפני טלוויזיה", - "hu": "televízióstúdió", - "it": "studio televisivo", - "ja": "テレビスタジオ", - "ko": "텔레비전 스튜디오", - "nb": "tv-studio", - "nl": "televisiestudio", - "pl": "studio telewizyjne", - "pt": "estúdio de televisão", - "ru": "телевизионная студия", - "sr": "телевиѕијски студио", - "sv": "tv-studio", - "th": "สตูดิโอโทรทัศน์", - "tr": "televizyon stüdyosu", - "uk": "телестудія", - "vi": "trường quay truyền hình", - "zh": "電視製片廠" - } - }, - "substation": { - "traction": { - "ca": "subestació elèctrica de tracció", - "cs": "měnírna", - "de": "unterwerk", - "en": "rail transport electrical substation", - "es": "subestación de tracción", - "et": "veoalajaam", - "fr": "sous-station de traction", - "he": "תחנת השנאה רכבתית", - "id": "gardu traksi", - "it": "impianto di sottostazione elettrica ferroviaria", - "nl": "tractieonderstation", - "pl": "podstacja trakcyjna", - "ro": "substație de tracțiune", - "ru": "тяговая подстанция", - "sk": "meniareň", - "uk": "тягова підстанція", - "zh": "牵引变电站" - } - }, - "summit": { - "": { - "cs": "vrcholový kříž", - "de": "gipfelkreuz", - "en": "summit cross", - "es": "cruz de la cumbre", - "fr": "croix sommitale", - "id": "salib puncak", - "it": "croce di vetta", - "nl": "bergtopkruis" - } - }, - "support": { - "ceiling": { - "ar": "سقف", - "bg": "таван", - "ca": "sostre", - "cs": "strop", - "da": "loft", - "de": "decke", - "el": "οροφή", - "en": "ceiling", - "es": "techo", - "et": "lagi", - "fi": "sisäkatto", - "fr": "plafond", - "he": "תקרה", - "hr": "strop", - "hu": "mennyezet", - "id": "langit-langit", - "it": "soffitto", - "ja": "天井", - "ko": "천장", - "lt": "lubos", - "lv": "griesti", - "nl": "plafond", - "pl": "strop", - "pt": "teto", - "ro": "tavan", - "ru": "потолок", - "sk": "strop", - "sl": "strop", - "sr": "плафон", - "sv": "innertak", - "tr": "tavan", - "uk": "стеля", - "vi": "trần nhà", - "zh": "天花板" - }, - "fence": { - "ar": "سور", - "bg": "ограда", - "ca": "tanca", - "cs": "plot", - "da": "hegn", - "de": "zaun", - "el": "φράχτης", - "en": "fence", - "es": "valla", - "et": "tara", - "fi": "aita", - "fr": "clôture", - "he": "גדר", - "hi": "बाड़", - "hu": "kerítés (építmény)", - "id": "pagar", - "it": "recinto", - "ja": "柵", - "ko": "울타리", - "lt": "tvora", - "lv": "žogs", - "nb": "gjerde", - "nl": "hek", - "pl": "płot", - "pt": "cerca", - "ro": "gard", - "ru": "забор", - "sk": "oplotenie", - "sl": "ograja", - "sr": "ограда", - "sv": "stängsel", - "tr": "çit", - "uk": "огорожа", - "vi": "hàng dậu", - "zh": "圍欄" - }, - "scaffold": { - "ar": "سِقَالَة", - "bg": "строително скеле", - "ca": "bastida", - "cs": "lešení", - "da": "stillads", - "de": "gerüst", - "el": "σκαλωσιά", - "en": "scaffold", - "es": "andamio", - "et": "telling", - "fi": "työteline", - "fr": "échafaudage", - "he": "פיגום", - "hi": "मचान", - "hr": "skela", - "id": "perancah", - "it": "ponteggio", - "ja": "足場", - "ko": "비계", - "lt": "pastoliai", - "nb": "stillas", - "nl": "bouwsteiger", - "pl": "rusztowanie", - "pt": "andaime", - "ro": "schelărie", - "ru": "леса", - "sk": "lešenie", - "sr": "грађевинске скеле", - "sv": "byggnadsställning", - "th": "นั่งร้าน", - "tr": "i̇skele", - "uk": "риштування", - "vi": "giàn giáo công tác", - "zh": "腳手架", - "zh-cn": "脚手架" - }, - "street_furniture": { - "ar": "تأثيث مدني", - "bg": "улично обзавеждане", - "ca": "mobiliari urbà", - "da": "byinventar", - "de": "stadtmöbel", - "en": "street furniture", - "es": "mobiliario urbano", - "fi": "katukaluste", - "fr": "mobilier urbain", - "he": "ריהוט רחוב", - "hu": "köztéri bútor", - "id": "perabot jalan", - "is": "götugögn", - "it": "arredo urbano", - "ja": "アーバンデザイン", - "nl": "straatmeubilair", - "pl": "mała architektura", - "pt": "mobiliário urbano", - "ru": "уличная мебель", - "sl": "oprema cest", - "sv": "gatumöbel", - "tr": "kent mobilyası", - "uk": "мала архітектурна форма", - "zh": "街道傢具" - }, - "wall": { - "ar": "جدار", - "bg": "стена", - "ca": "paret", - "cs": "zeď", - "da": "mur", - "de": "mauer", - "el": "τοίχος", - "en": "wall", - "es": "pared", - "et": "müür", - "fi": "muuri", - "fr": "mur", - "he": "קיר", - "hi": "दीवार", - "hr": "zid", - "hu": "fal", - "id": "dinding", - "is": "múr", - "it": "muro", - "ja": "壁", - "ko": "벽", - "lt": "siena", - "lv": "mūris", - "nb": "mur", - "nl": "muur", - "pl": "mur", - "pt": "muro", - "ro": "zid", - "ru": "стена", - "sk": "stena", - "sl": "zid", - "sr": "зид", - "sv": "mur", - "th": "ผนัง", - "tr": "duvar", - "uk": "стіна", - "vi": "tường", - "zh": "墙", - "zh-hk": "牆", - "zh-tw": "牆" - } - }, - "surface": { - "artificial_turf": { - "ar": "عشب صناعي", - "ca": "gespa artificial", - "cs": "umělý trávník", - "da": "kunstgræs", - "de": "kunstrasen", - "el": "τεχνητός χλοοτάπητας", - "en": "artificial turf", - "es": "césped artificial", - "fi": "tekonurmi", - "fr": "pelouse artificielle", - "he": "דשא מלאכותי", - "hr": "umjetna trava", - "hu": "műfű", - "id": "rumput sintetis", - "it": "erba sintetica", - "ja": "人工芝", - "ko": "인조잔디", - "lv": "mākslīgais zāliens", - "nb": "kunstgress", - "nl": "kunstgras", - "pt": "relva sintética", - "pt-br": "grama sintética", - "ru": "искусственная трава", - "sl": "umetna trava", - "sv": "konstgräs", - "th": "หญ้าเทียม", - "tr": "yapay çim", - "uk": "штучна трава", - "vi": "cỏ nhân tạo", - "zh": "人工草坪" - }, - "asphalt": { - "ar": "أسفلت", - "bg": "асфалтобетон", - "ca": "formigó asfàltic", - "cs": "asfaltový beton", - "da": "asfalt", - "de": "asphalt", - "en": "asphalt concrete", - "es": "hormigón asfáltico", - "et": "asfaltbetoonsegu", - "fi": "asfaltti", - "fr": "enrobé", - "hr": "asfalt", - "hu": "aszfalt beton", - "is": "malbik", - "it": "conglomerato bituminoso", - "ja": "アスファルト混合物", - "ko": "아스팔트 콘크리트", - "lt": "asfaltbetonis", - "lv": "asfaltbetons", - "nb": "asfalt", - "nl": "asfaltbeton", - "pl": "asfaltobeton", - "ro": "asfalt", - "ru": "асфальтобетон", - "sr": "асфалтни бетон", - "sv": "asfalt", - "th": "แอสฟอลต์คอนกรีต", - "tr": "asfalt beton", - "uk": "асфальтобетон", - "vi": "bê tông nhựa", - "zh": "瀝青混凝土" - }, - "concrete": { - "de": "betonfläche", - "en": "concrete surface", - "fr": "revêtement en béton", - "nl": "betonverharding", - "ru": "бетонное покрытие" - }, - "mud": { - "ar": "الطين", - "bg": "кал", - "ca": "fang", - "cs": "bahno", - "da": "mudder", - "de": "schlamm", - "el": "λάσπη", - "en": "mud", - "es": "barro", - "et": "muda", - "fi": "muta", - "fr": "boue", - "he": "בוץ", - "hi": "पंक", - "hr": "blato", - "hu": "iszap", - "id": "lumpur", - "it": "fango", - "ja": "泥", - "ko": "진흙", - "lv": "dubļi", - "nl": "modder", - "pl": "błoto", - "pt": "lama", - "ro": "nămol", - "ru": "грязь", - "sr": "муљ", - "sv": "slam (material)", - "tr": "çamur", - "uk": "грязь", - "vi": "bùn", - "zh": "泥" - }, - "paved": { - "ca": "paviment", - "cs": "dlažba", - "de": "pflaster", - "en": "pavement", - "es": "pavimento", - "fi": "katukivi", - "fr": "pavage", - "hi": "कुट्टिम", - "id": "perkerasan jalan", - "it": "pavimentazione", - "ja": "ペーブメントデザイン", - "nb": "brolegning", - "nl": "elementenverharding", - "pl": "bruk", - "pt": "piso", - "ro": "pavaj", - "ru": "мостовая", - "sl": "tlak", - "tr": "döşeme", - "uk": "бруківка", - "vi": "đường lát", - "zh": "镶嵌路面", - "zh-tw": "舖面磚" - }, - "sett": { - "ar": "حجر رصف", - "bg": "паве", - "ca": "llambordí", - "cs": "dlažební kostka", - "da": "brosten", - "de": "pflaster", - "en": "sett", - "es": "adoquín", - "fr": "pavé", - "he": "אבני מרצפות", - "hu": "macskakő", - "is": "brústeinn", - "it": "pavé", - "ja": "石畳", - "lt": "gargždas", - "nb": "brostein", - "nl": "kassei", - "pl": "bruk", - "ru": "брусчатка", - "sv": "gatsten", - "uk": "брущатка", - "zh": "比利時石塊" - }, - "tarmac": { - "ar": "طرماق", - "el": "ασφαλτικό σκυρόδεμα", - "en": "tarmac", - "fi": "öljysora", - "ja": "ターマック", - "sv": "oljegrus", - "zh": "柏油路" - }, - "tartan": { - "en": "tartan", - "es": "tartán" - } - }, - "surveillance": { - "": { - "da": "overvågningskamera", - "de": "videoüberwachungskamera", - "en": "closed-circuit television camera", - "hi": "क्लोज सर्किट टेलिविज़न कैमरा", - "ja": "閉回路テレビジョンカメラ", - "ru": "камера видеонаблюдения", - "sv": "övervakningskamera", - "th": "กล้องวงจรปิด", - "tr": "cctv kamera" - }, - "webcam": { - "ar": "مسار صفحة كاميرا الويب", - "bg": "уеб камера", - "ca": "url de la pàgina de la càmera web", - "cs": "url webkamery", - "da": "webkamera", - "de": "url der webcam", - "el": "web camera", - "en": "webcam page url", - "es": "cámara web", - "et": "veebikaamera", - "fi": "verkkokamera", - "fr": "webcam", - "he": "מצלמת רשת", - "hi": "वेबकैम", - "hu": "webkamera url-je", - "id": "kamera web", - "is": "vefmyndavél", - "it": "url pagina webcam", - "ja": "ライブカメラページのurl", - "ko": "웹캠 url", - "lt": "internetinė vaizdo kamera", - "lv": "tīmekļkamera", - "nb": "webkamera lenke", - "nl": "url voor webcampagina", - "pl": "url strony z widokiem z kamery", - "pt": "página da webcam", - "pt-br": "webcam", - "ro": "cameră web", - "ru": "страница веб-камеры", - "sk": "webkamera", - "sl": "url spletne kamere", - "sr": "адреса странице веб-камере", - "sv": "url till webbkamera", - "th": "เว็บแคม", - "tr": "web kamerası sayfası url'si", - "uk": "сторінка веб-камери", - "vi": "webcam", - "zh": "摄像头", - "zh-hk": "網絡攝影機", - "zh-tw": "網路攝影機" - } - }, - "takeaway": { - "only": { - "en": "take and bake pizzeria", - "es": "pizzerías take and bake" - } - }, - "telecom": { - "exchange": { - "ar": "بدالة الهاتف", - "bg": "телефонна централа", - "ca": "central de commutació", - "cs": "telefonní ústředna", - "da": "telefoncentral", - "de": "vermittlungsstelle", - "en": "telephone exchange", - "es": "central telefónica", - "fi": "puhelinkeskus", - "fr": "commutateur téléphonique", - "he": "מרכזייה", - "hu": "telefonközpont", - "id": "sentral telepon", - "it": "centrale telefonica", - "ja": "電話交換機", - "ko": "전화 교환기", - "nb": "telefonsentral", - "nl": "telefooncentrale", - "pl": "centrala telefoniczna", - "pt": "central telefónica", - "pt-br": "central telefônica", - "ro": "centrală telefonică", - "ru": "автоматическая телефонная станция", - "sk": "telefónna ústredňa", - "sv": "telefonväxel", - "tr": "telefon santrali", - "uk": "автоматична телефонна станція", - "zh": "电信交换" - } - }, - "telescope": { - "": { - "ar": "تلسكوب بصري", - "bg": "радиотелескоп", - "ca": "telescopi òptic", - "cs": "gamma teleskop", - "da": "radioteleskop", - "de": "gammateleskop", - "de-ch": "optisches teleskop", - "el": "οπτικό τηλεσκόπιο", - "en": "gamma-ray telescope", - "en-ca": "optical telescope", - "es": "telescopio óptico", - "et": "raadioteleskoop", - "fi": "optinen teleskooppi", - "fr": "télescope à rayons gamma", - "he": "טלסקופ אופטי", - "hi": "प्रकाशीय दूरदर्शी", - "hr": "optički teleskop", - "hu": "optikai távcső", - "id": "teleskop optik", - "it": "telescopio ottico", - "ja": "ガンマ線望遠鏡", - "ko": "광학 망원경", - "lt": "optinis teleskopas", - "lv": "radioteleskops", - "nb": "optisk teleskop", - "nl": "optische telescoop", - "pl": "teleskop promieniowania gamma", - "pt": "telescópio óptico", - "ro": "radiotelescop", - "ru": "гамма-телескоп", - "sk": "optický ďalekohľad", - "sl": "optični teleskop", - "sr": "оптички телескоп", - "sv": "optiskt teleskop", - "th": "กล้องส่องทางไกล", - "tr": "optik teleskoplar", - "uk": "гамма-телескоп", - "vi": "kính viễn vọng quang học", - "zh": "光學望遠鏡", - "zh-cn": "光学望远镜", - "zh-hk": "電波望遠鏡", - "zh-tw": "電波望遠鏡" - } - }, - "theatre": { - "": { - "ar": "الملعب الروماني", - "bg": "амфитеатър", - "ca": "amfiteatre", - "cs": "amfiteátr", - "da": "amfiteater", - "de": "amphitheater", - "el": "αμφιθέατρο", - "en": "amphitheatre", - "es": "anfiteatro", - "et": "amfiteater", - "fi": "amfiteatteri", - "fr": "amphithéâtre", - "he": "אמפיתיאטרון", - "hi": "रंगभूमि", - "hr": "amfiteatar", - "hu": "amfiteátrum", - "id": "amfiteater", - "it": "anfiteatro", - "ja": "アンフィテアトルム", - "ko": "원형극장", - "lt": "amfiteatras", - "lv": "amfiteātris", - "nb": "amfiteater", - "nl": "amfitheater", - "pl": "amfiteatr", - "pt": "anfiteatro", - "ro": "amfiteatru", - "ru": "амфитеатр", - "sk": "amfiteáter", - "sl": "amfiteater", - "sr": "амфитеатар", - "sv": "amfiteater", - "tr": "amfitiyatro", - "uk": "амфітеатр", - "zh": "圓形競技場" - } - }, - "tomb": { - "columbarium": { - "ar": "كولمباريوم", - "bg": "колумбарий", - "ca": "columbari", - "cs": "kolumbárium", - "da": "kolumbarium", - "de": "kolumbarium", - "el": "κολουμβάριο", - "en": "cinerarium", - "es": "columbario", - "et": "kolumbaarium", - "fi": "uurnaholvi", - "fr": "columbarium", - "he": "קולומבריום", - "hr": "kolumbarij", - "id": "rumah abu", - "it": "colombario", - "ja": "納骨堂", - "ko": "콜롬바리움", - "lt": "kolumbariumas", - "nb": "kolumbarium", - "nl": "columbarium", - "pl": "kolumbarium", - "pt": "columbário", - "ru": "колумбарий", - "sv": "kolumbarium", - "uk": "колумбарій", - "zh": "納骨塔" - }, - "crypt": { - "ar": "السرداب", - "bg": "крипта", - "ca": "cripta", - "cs": "krypta", - "da": "krypt", - "de": "krypta", - "el": "κρύπτη", - "en": "crypt", - "es": "cripta", - "et": "krüpt", - "fi": "krypta", - "fr": "crypte", - "he": "קריפטה", - "hr": "kripta", - "hu": "kripta", - "it": "cripta", - "ja": "地下聖堂", - "ko": "크립트", - "lt": "kripta", - "lv": "kripta", - "nb": "krypt", - "nl": "crypte", - "pl": "krypta", - "pt": "cripta", - "ru": "крипта", - "sk": "krypta", - "sl": "kripta", - "sr": "крипта", - "sv": "krypta", - "th": "ห้องเก็บศพใต้โบสถ์", - "uk": "крипта", - "zh": "地下墓室" - }, - "hypogeum": { - "bg": "хипогей", - "ca": "hipogeu", - "de": "hypogäum", - "en": "hypogeum", - "es": "hipogeo", - "fr": "hypogée", - "he": "היפוגאום", - "hu": "hipogeum", - "it": "ipogeo", - "ja": "地下墳墓", - "ko": "히포게움", - "pt": "hipogeu", - "ro": "hipogeu", - "sl": "hipogej", - "th": "คูหาใต้ดิน", - "tr": "hipoje", - "uk": "гіпогей", - "zh": "地下墓室" - }, - "mausoleum": { - "ar": "ضريح", - "bg": "мавзолей", - "ca": "mausoleu", - "cs": "mauzoleum", - "el": "μαυσωλείο", - "en": "mausoleum", - "es": "mausoleo", - "fi": "mausoleumi", - "fr": "mausolée", - "he": "מאוזוליאום", - "hi": "मकबरा", - "hr": "mauzolej", - "hu": "mauzóleum", - "id": "monumen makam", - "is": "leghöll", - "it": "mausoleo", - "ja": "廟", - "ko": "영묘", - "lt": "mauzoliejus", - "lv": "mauzolejs", - "pl": "mauzoleum", - "pt": "mausoléu", - "ro": "mausoleu", - "ru": "мавзолей", - "sk": "mauzóleum", - "sl": "mavzolej", - "sr": "маузолеј", - "tr": "anıt mezar", - "uk": "мавзолей", - "vi": "lăng", - "zh": "陵墓" - }, - "pyramid": { - "ar": "هرم", - "bg": "пирамида", - "ca": "piràmide", - "cs": "pyramida", - "da": "pyramide", - "de": "pyramide", - "el": "πυραμίδα", - "en": "pyramid", - "es": "pirámide", - "et": "püramiid", - "fi": "pyramidi", - "fr": "pyramide", - "he": "פירמידה", - "hi": "पिरमिड", - "hr": "piramida", - "hu": "piramis", - "id": "piramida", - "is": "pýramídi", - "it": "piramide", - "ja": "ピラミッド", - "ko": "피라미드", - "lt": "piramidė", - "lv": "piramīda", - "nb": "pyramide", - "nl": "piramide", - "pl": "piramida", - "pt": "pirâmide", - "ro": "piramidă", - "ru": "пирамида", - "sk": "pyramída", - "sl": "piramida", - "sr": "пирамида", - "th": "พีระมิด", - "tr": "piramit", - "uk": "піраміда", - "vi": "kim tự tháp", - "zh": "金字塔" - }, - "rock-cut": { - "ca": "tomba excavada a la roca", - "de": "felsengrab", - "en": "rock-cut tomb", - "es": "tumba excavada en la roca", - "fr": "tombe rupestre", - "hu": "barlangsír", - "ja": "岩窟墓", - "nl": "rotsgraf", - "tr": "kaya mezarı", - "zh": "石方开挖坟墓" - }, - "sarcophagus": { - "ar": "ناووس", - "bg": "саркофаг", - "ca": "sarcòfag", - "cs": "sarkofág", - "da": "sarkofag", - "de": "sarkophag", - "el": "σαρκοφάγος", - "en": "sarcophagus", - "es": "sarcófago", - "et": "sarkofaag", - "fi": "sarkofagi", - "fr": "sarcophage", - "he": "סרקופג", - "hr": "sarkofag", - "hu": "szarkofág", - "id": "sarkofagus", - "is": "steinkista", - "it": "sarcofago", - "ja": "サルコファガス", - "ko": "석관", - "lt": "sarkofagas", - "nb": "sarkofag", - "nl": "sarcofaag", - "pl": "sarkofag", - "pt": "sarcófago", - "ro": "sarcofag", - "ru": "саркофаг", - "sk": "sarkofág", - "sl": "sarkofag", - "sr": "саркофаг", - "sv": "sarkofag", - "th": "โลงหิน", - "tr": "lahit", - "uk": "саркофаг", - "vi": "quách (đồ vật)", - "zh": "石棺" - }, - "table": { - "cs": "tumba", - "de": "tumba", - "en": "table tomb", - "es": "tumba de mesa", - "fi": "tumba", - "hu": "tumba", - "pl": "tumba", - "sv": "tumba" - }, - "tumulus": { - "ar": "جثوة", - "bg": "могила", - "ca": "túmul", - "cs": "mohyla", - "da": "gravhøj", - "de": "hügelgrab", - "el": "τύμβος", - "en": "tumulus", - "es": "túmulo", - "he": "רוגם", - "hr": "tumul", - "hu": "halomsír", - "it": "tumulo", - "ja": "墳丘墓", - "ko": "봉분", - "lt": "pilkapis", - "nb": "gravhaug", - "nl": "grafheuvel", - "pt": "mamoa", - "pt-br": "túmulo", - "ro": "tumul", - "ru": "тумулус", - "sk": "mohyla", - "sl": "gomilno grobišče", - "sr": "громиле", - "sv": "gravhög", - "tr": "tümülüs", - "uk": "тумулус", - "zh": "墳丘墓" - }, - "vault": { - "en": "burial vault", - "es": "sepultura", - "hu": "sírbolt" - }, - "war_grave": { - "ca": "cementiri militar", - "cs": "válečný hrob", - "da": "krigskirkegård", - "de": "soldatenfriedhof", - "el": "πολεμικό νεκροταφείο", - "en": "military cemetery", - "es": "cementerio militar", - "et": "sõjahaud", - "fi": "sankarihauta", - "fr": "cimetière militaire", - "he": "בית קברות צבאי", - "hr": "vojničko groblje", - "hu": "hadi temető", - "id": "kompleks pemakaman militer", - "it": "cimitero militare", - "ja": "戦没者墓地", - "lt": "karių kapinės", - "nb": "krigskirkegård", - "nl": "militaire begraafplaats", - "pl": "cmentarz wojenny", - "pt": "cemitério militar", - "ru": "военное захоронение", - "sl": "vojaško pokopališče", - "sr": "војничко гробље", - "sv": "militärkyrkogård", - "tr": "şehitlik", - "uk": "військове поховання", - "zh": "军人公墓", - "zh-tw": "軍人公墓" - } - }, - "tourism": { - "alpine_hut": { - "ar": "مأوى جبلي", - "bg": "туристическа хижа", - "ca": "refugi de muntanya", - "cs": "horská chata", - "da": "bjerghytte", - "de": "schutzhütte", - "el": "ορειβατικό καταφύγιο", - "en": "mountain hut", - "es": "refugio de montaña", - "fi": "vuoristomaja", - "fr": "refuge de montagne", - "he": "בקתה הררית", - "hr": "planinarski objekti", - "hu": "menedékház", - "it": "rifugio di montagna", - "ja": "山小屋", - "ko": "산장", - "nb": "fjellhytte", - "nl": "berghut", - "pl": "schronisko turystyczne", - "pt": "refúgio de montanha", - "ru": "горный приют", - "sk": "horská chata", - "sl": "planinska koča", - "sr": "планинарски дом", - "sv": "fjällstuga", - "uk": "гірський притулок", - "zh": "山小屋" - }, - "apartment": { - "ar": "إيجار العطلة", - "da": "sommerhusudlejning", - "de": "ferienwohnung", - "en": "vacation rental", - "es": "casa de alquiler vacacional", - "fi": "vuokrattava loma-asunto", - "fr": "meublé de tourisme", - "he": "דירת נופש", - "it": "casa per vacanza", - "ja": "民泊", - "ko": "민박", - "nl": "vakantiewoning", - "pt": "aluguel por temporada", - "zh": "民宿" - }, - "aquarium": { - "ar": "أكواريوم عام", - "bg": "обществен аквариум", - "ca": "aquari públic", - "cs": "veřejné akvárium", - "da": "offentlig akvarium", - "de": "öffentliches aquarium", - "el": "δημόσιο ενυδρείο", - "en": "public aquarium", - "es": "acuario público", - "fi": "yleisöakvaario", - "fr": "aquarium public", - "he": "אקווריום ציבורי", - "hu": "nyilvános akvárium", - "it": "acquario", - "ja": "水族館", - "ko": "수족관", - "nb": "offentlig akvarium", - "nl": "publiek aquarium", - "pl": "akwarium publiczne", - "pt": "aquário público", - "ru": "публичный аквариум", - "sr": "јавни акваријум", - "sv": "offentligt akvarium", - "th": "พิพิธภัณฑ์สัตว์น้ำ", - "tr": "halka açık akvaryum", - "zh": "水族館" - }, - "artwork": { - "ar": "عمل فني", - "bg": "произведение на изкуството", - "ca": "obra d'art", - "cs": "umělecké dílo", - "da": "kunstværk", - "de": "kunstwerk", - "el": "έργο τέχνης", - "en": "work of art", - "es": "obra de arte", - "et": "kunstiteos", - "fi": "taideteos", - "fr": "œuvre d’art", - "he": "יצירת אמנות", - "hi": "कलाकृति", - "hr": "umjetničko djelo", - "hu": "műalkotás", - "id": "karya seni", - "it": "opera d'arte", - "ja": "芸術作品", - "ko": "예술 작품", - "lt": "kūrinys", - "lv": "mākslas darbs", - "nb": "kunstverk", - "nl": "kunstwerk", - "pl": "dzieło sztuki", - "pt": "obra de arte", - "ro": "operă de artă", - "ru": "произведение искусства", - "sk": "umelecké dielo", - "sl": "umetniško delo", - "sr": "уметничко дело", - "sv": "konstverk", - "tr": "sanat eseri", - "uk": "витвір мистецтва", - "vi": "nghệ phẩm", - "zh": "艺术作品", - "zh-hk": "藝術作品", - "zh-tw": "藝術作品" - }, - "attraction": { - "ar": "مزار سياحي", - "ca": "atracció turística", - "cs": "turistická atrakce", - "da": "seværdighed", - "de": "sehenswürdigkeit", - "el": "αξιοθέατο", - "en": "tourist attraction", - "es": "atracción turística", - "et": "vaatamisväärsus", - "fi": "nähtävyys", - "fr": "attraction touristique", - "he": "אטרקציה תיירותית", - "hi": "पर्यटन स्थल", - "hr": "znamenitost", - "hu": "turisztikai látnivaló", - "id": "lokawisata", - "it": "attrazione turistica", - "ja": "観光地", - "ko": "관광지", - "lt": "lankytina vieta", - "lv": "apskates vieta", - "nb": "turistattraksjon", - "nl": "toeristische attractie", - "pl": "atrakcja turystyczna", - "pt": "atração turística", - "ro": "atracție turistică", - "ru": "достопримечательность", - "sk": "turistická atrakcia", - "sl": "turistična zanimivost", - "sr": "знаменитост", - "sv": "sevärdhet", - "th": "สถานที่ท่องเที่ยว", - "tr": "görülecek yer", - "uk": "пам'ятка", - "vi": "điểm tham quan", - "zh": "旅游胜地", - "zh-cn": "旅游景点", - "zh-hk": "旅遊景點", - "zh-tw": "觀光景點" - }, - "camp_pitch": { - "en": "campsite", - "sv": "campingplats" - }, - "camp_site": { - "ar": "مخيم", - "ca": "campament", - "cs": "kemp", - "da": "lejrplads", - "de": "campingplatz", - "el": "χώρος κατασκήνωσης", - "en": "campsite", - "es": "área de camping", - "et": "puhkelaager", - "fi": "leirintäalue", - "fr": "emplacement de camping", - "he": "מחנה", - "hr": "kampiranje", - "hu": "kemping", - "it": "area di campeggio", - "ja": "キャンプ場", - "ko": "야영지", - "lt": "kempingas", - "nb": "campingplass", - "nl": "camping", - "pl": "kemping", - "pt": "parque de campismo", - "ru": "кемпинг", - "sk": "kemping", - "sl": "kamp", - "sv": "lägerplats", - "tr": "kamp alanı", - "uk": "кемпінг", - "vi": "trại", - "zh": "露營場" - }, - "caravan_site": { - "cs": "stání pro obytné auto", - "da": "autocamperplads", - "de": "reisemobil-stellplatz", - "en": "motorhome stopover", - "fi": "matkaparkki", - "fr": "aire de camping-cars", - "ja": "rvパーク", - "nl": "camperplaats", - "sv": "ställplats", - "zh": "rv公園" - }, - "chalet": { - "ar": "كوخ", - "bg": "колиба", - "da": "sommerhus", - "de": "ferienhaus", - "en": "vacation home", - "es": "casa de verano", - "et": "suvila", - "fi": "loma-asunto", - "fr": "meublé de tourisme", - "he": "בית קיץ", - "hi": "कुटिया", - "hr": "koliba", - "id": "pondok", - "it": "casa vacanze", - "ja": "ホリデーハウス", - "nb": "sommerhus", - "nl": "vakantiehuis", - "pl": "domek letniskowy", - "pt": "casa de verão", - "ro": "casă de vacanță", - "sk": "letohrádok", - "sv": "fritidshus", - "th": "ปอเนาะ", - "uk": "хата", - "zh": "度假屋" - }, - "gallery": { - "ar": "معرض فني", - "bg": "художествена галерия", - "ca": "galeria d'art", - "cs": "galerie umění", - "da": "kunstgalleri", - "de": "kunstgalerie", - "de-ch": "kunstmuseum", - "el": "έκθεση τέχνης", - "en": "art gallery", - "en-ca": "art museum", - "es": "galería de arte", - "et": "kunstigalerii", - "fi": "taidegalleria", - "fr": "galerie d'art", - "he": "גלריית אמנות", - "hi": "चित्रशाला", - "hr": "umjetnička galerija", - "hu": "galéria", - "id": "galeri seni", - "is": "gallerí", - "it": "galleria d'arte", - "ja": "ギャラリー", - "ko": "갤러리", - "lt": "meno muziejus", - "lv": "mākslas galerija", - "nb": "kunstgalleri", - "nl": "galerie", - "pl": "galeria sztuki", - "pt": "galeria de arte", - "pt-br": "museu de arte", - "ro": "galerie de artă", - "ru": "художественная галерея", - "sl": "umetniška galerija", - "sr": "уметничка галерија", - "sv": "konstgalleri", - "th": "หอศิลป์", - "tr": "sanat galerisi", - "uk": "галерея мистецтв", - "vi": "bảo tàng nghệ thuật", - "zh": "藝廊", - "zh-cn": "艺术博物馆", - "zh-hk": "藝術博物館" - }, - "guest_house": { - "ar": "دار ضيافة", - "ca": "casa d'hostes", - "da": "gæstehus", - "de": "gästehaus", - "el": "ξενώνας", - "en": "guest house", - "es": "casa de huéspedes", - "et": "külalistemaja", - "fr": "maison d'hôtes", - "he": "בית הארחה", - "ja": "ゲストハウス", - "ko": "게스트하우스", - "ru": "гостевой дом", - "sr": "гостинска кућа", - "tr": "misafirhane", - "vi": "nhà khách", - "zh": "招待所" - }, - "hostel": { - "ar": "نزل الشباب", - "bg": "хостел", - "ca": "alberg", - "da": "vandrerhjem", - "de": "herberge", - "el": "πανδοχείο", - "en": "hostel", - "es": "albergue", - "fi": "hostelli", - "fr": "auberge", - "he": "אכסניה", - "hi": "पथचारी आन्दोलन", - "id": "losmen", - "is": "farfuglaheimili", - "it": "ostello", - "ja": "ホステル", - "ko": "호스텔", - "lt": "nakvynės namai", - "nb": "vandrerhjem", - "ru": "хостел", - "sr": "хостел", - "sv": "vandrarhem", - "th": "หอพักสงเคราะห์", - "uk": "хостел", - "zh": "宾馆", - "zh-tw": "青年旅社" - }, - "hotel": { - "ar": "فندق", - "bg": "хотел", - "el": "ξενοδοχείο", - "en": "hotel", - "et": "hotell", - "fi": "hotelli", - "fr": "hôtel", - "he": "בית מלון", - "hi": "होटल", - "hu": "szálloda", - "is": "hótel", - "it": "albergo", - "ja": "ホテル", - "ko": "호텔", - "lt": "viešbutis", - "lv": "viesnīca", - "nb": "hotell", - "ru": "гостиница", - "sr": "хотел", - "sv": "hotell", - "th": "โรงแรม", - "tr": "otel", - "uk": "готель", - "vi": "khách sạn", - "zh": "酒店", - "zh-tw": "飯店" - }, - "information": { - "ar": "مركز زوار", - "ca": "oficina de turisme", - "cs": "turistické centrum", - "da": "turistbureau", - "de": "fremdenverkehrsamt", - "el": "κέντρο επισκεπτών", - "en": "tourism office", - "es": "oficina de turismo", - "et": "turismiinfokeskus", - "fi": "matkailuneuvonta", - "fr": "office de tourisme", - "he": "מרכז מבקרים", - "hr": "centar za posjetitelje", - "it": "ufficio turistico", - "ja": "観光案内所", - "ko": "관광 안내소", - "nb": "turistinformasjon", - "nl": "bezoekerscentrum", - "pt": "posto de turismo", - "ru": "информационно-туристический центр", - "sr": "туристичка организација", - "sv": "turistbyrå", - "tr": "turizm danışma bürosu", - "zh": "游客中心" - }, - "motel": { - "ar": "موتيل", - "bg": "мотел", - "el": "μοτέλ", - "en": "motel", - "et": "motell", - "fi": "motelli", - "he": "מוטל", - "ja": "モーテル", - "ko": "모텔", - "lt": "motelis", - "nb": "motell", - "ru": "мотель", - "sr": "мотел", - "sv": "motell", - "th": "ห้องพักริมทาง", - "uk": "мотель", - "vi": "khách sạn dọc đường", - "zh": "汽車旅館", - "zh-cn": "汽车旅馆" - }, - "museum": { - "ar": "متحف", - "bg": "музей", - "ca": "museu", - "cs": "muzeum", - "el": "μουσείο", - "en": "museum", - "es": "museo", - "et": "muuseum", - "fi": "museo", - "fr": "musée", - "he": "מוזיאון", - "hi": "संग्रहालय", - "hr": "muzej", - "hu": "múzeum", - "is": "safn", - "it": "museo", - "ja": "博物館", - "ko": "박물관", - "lt": "muziejus", - "lv": "muzejs", - "pl": "muzeum", - "pt": "museu", - "ro": "muzeu", - "ru": "музей", - "sk": "múzeum", - "sl": "muzej", - "sr": "музеј", - "th": "พิพิธภัณฑสถาน", - "tr": "müze", - "uk": "музей", - "vi": "viện bảo tàng", - "zh": "博物館", - "zh-cn": "博物馆" - }, - "picnic_site": { - "ca": "àrea de pícnic", - "de": "picknickplatz", - "en": "picnic site", - "fr": "aire de pique-nique", - "ja": "ピクニック場", - "nl": "picknickplaats", - "sv": "picknickplats" - }, - "theme_park": { - "ar": "منتزه ترفيهي ذو سمة", - "ca": "parc temàtic", - "cs": "tematický park", - "da": "temapark", - "de": "themenpark", - "el": "θεματικό πάρκο", - "en": "theme park", - "es": "parque temático", - "et": "teemapark", - "fi": "teemapuisto", - "fr": "parc à thèmes", - "hu": "szabadidőpark", - "id": "taman bertema", - "it": "parco tematico", - "ja": "テーマ・パーク", - "ko": "테마파크", - "nb": "temapark", - "nl": "themapark", - "pl": "park tematyczny", - "pt": "parque temático", - "ru": "тематический парк", - "sr": "тематски парк", - "sv": "temapark", - "tr": "tema park", - "zh": "主題公園" - }, - "viewpoint": { - "ca": "mirador", - "cs": "vyhlídka", - "da": "udsigtspunkt", - "de": "aussichtspunkt", - "en": "scenic viewpoint", - "en-gb": "viewpoint", - "es": "mirador", - "fi": "näköalapaikka", - "fr": "point de vue panoramique", - "he": "נקודת תצפית", - "hr": "vidikovac", - "hu": "kilátó", - "it": "punto di vista panoramico", - "ja": "展望所", - "nb": "utsiktspunkt", - "nl": "uitzichtpunt", - "pl": "punkt widokowy", - "pt": "miradouro", - "pt-br": "mirante", - "ro": "loc de vedere panoramic", - "ru": "смотровая площадка", - "sl": "razgledišče", - "sv": "utsiktsplats", - "tr": "bakış noktası", - "zh": "风景点" - }, - "wilderness_hut": { - "de-ch": "biwakschachtel", - "en": "bothy", - "es": "chozo", - "fr": "refuge", - "lt": "eigulio namelis", - "pl": "gajówka", - "ru": "лесной домик", - "tr": "çiftlik işleri barakası", - "zh": "博希" - }, - "wine_cellar": { - "ar": "قبو", - "ca": "celler", - "cs": "vinný sklep", - "da": "vinkælder", - "de": "weinkeller", - "el": "κελάρι κρασιών", - "en": "wine cellar", - "es": "bodega subterránea", - "et": "veinikelder", - "fi": "viinikellari", - "fr": "cave à vin", - "he": "מרתף יינות", - "hr": "vinski podrum", - "hu": "borpince", - "it": "cantina", - "ja": "ワインセラー", - "nl": "wijnkelder", - "pl": "piwnica win", - "pt": "adega", - "ru": "винный погреб", - "sv": "vinkällare", - "tr": "şarap kavı", - "uk": "винниця", - "zh": "酒窖" - }, - "yes": { - "ar": "سياحة", - "bg": "туризъм", - "ca": "turisme", - "cs": "turistika", - "da": "turisme", - "de": "tourismus", - "el": "τουρισμός", - "en": "tourism", - "es": "turismo", - "et": "turism", - "fi": "matkailu", - "fr": "tourisme", - "he": "תיירות", - "hi": "पर्यटन", - "hr": "turizam", - "hu": "turizmus", - "id": "pariwisata", - "is": "ferðaþjónusta", - "it": "turismo", - "ja": "観光", - "ko": "관광", - "lt": "turizmas", - "lv": "tūrisms", - "nb": "turisme", - "nl": "toerisme", - "pl": "turystyka", - "pt": "turismo", - "ro": "turism", - "ru": "туризм", - "sk": "turistika", - "sl": "turizem", - "sr": "туризам", - "sv": "turism", - "th": "การท่องเที่ยว", - "tr": "turizm", - "uk": "туризм", - "vi": "du lịch", - "zh": "旅游", - "zh-tw": "旅遊" - }, - "zoo": { - "ar": "حديقة حيوان", - "bg": "зоопарк", - "ca": "zoològic", - "cs": "zoologická zahrada", - "da": "zoologisk have", - "el": "ζωολογικός κήπος", - "en": "zoo", - "es": "zoológico", - "et": "loomaaed", - "fi": "eläintarha", - "fr": "parc zoologique", - "he": "גן חיות", - "hi": "चिड़ियाघर", - "hr": "zoološki vrt", - "hu": "állatkert", - "id": "kebun binatang", - "is": "dýragarður", - "it": "giardino zoologico", - "ja": "動物園", - "ko": "동물원", - "lt": "zoologijos sodas", - "lv": "zooloģiskais dārzs", - "nb": "dyrehage", - "nl": "dierentuin", - "pl": "ogród zoologiczny", - "pt": "jardim zoológico", - "ro": "grădină zoologică", - "ru": "зоопарк", - "sk": "zoologická záhrada", - "sl": "živalski vrt", - "sr": "зоолошки врт", - "sv": "djurpark", - "th": "สวนสัตว์", - "tr": "hayvanat bahçesi", - "uk": "зоопарк", - "vi": "vườn bách thú", - "zh": "動物園", - "zh-cn": "动物园" - } - }, - "tower": { - "": { - "ar": "عاكس مكافئ", - "bg": "купол", - "ca": "espill parabòlic", - "cs": "kupole", - "da": "kuppel", - "de": "parabolspiegel", - "de-ch": "stahlfachwerkturm", - "el": "τρούλος", - "en": "parabolic reflector", - "en-ca": "lattice tower", - "en-gb": "lattice tower", - "es": "espejo parabólico", - "et": "paraboolpeegel", - "fi": "kupoli", - "fr": "réflecteur parabolique", - "he": "כיפה", - "hi": "परवलयज परावर्तक", - "hr": "parabolično zrcalo", - "hu": "távcsőtükör", - "id": "kubah", - "is": "hvolfþak", - "it": "specchio parabolico", - "ja": "放物面鏡", - "ko": "돔", - "lt": "kupolas", - "lv": "kupols", - "nb": "kuppel", - "nl": "paraboolreflector", - "pl": "reflektor paraboliczny", - "pt": "reflector parabólico", - "pt-br": "campanário", - "ro": "dom", - "ru": "параболический отражатель", - "sk": "kupola", - "sl": "kupola", - "sr": "параболично огледало", - "sv": "parabolisk spegel", - "th": "จานสะท้อนแบบพาราโบลา", - "tr": "kubbe", - "uk": "купол", - "vi": "kiến trúc vòm", - "zh": "拋物面反射器", - "zh-cn": "镂空塔", - "zh-tw": "鐘樓" - } - }, - "traffic_calming": { - "bump": { - "ar": "مطب", - "ca": "ressalt", - "cs": "zpomalovací práh", - "da": "vejbump", - "de": "bremsschwelle", - "en": "speed bump", - "es": "resalte", - "fi": "hidaste", - "fr": "ralentisseur", - "he": "פס האטה", - "hr": "uspornik", - "id": "polisi tidur", - "it": "dosso stradale", - "ja": "ハンプ", - "ko": "과속방지턱", - "lv": "ātruma slāpētājs", - "nb": "fartshump", - "nl": "verkeersdrempel", - "pl": "próg zwalniający", - "pt": "lombada", - "ro": "prag limitator de viteză", - "ru": "лежачий полицейский", - "sk": "spomaľovací prah", - "sr": "лежећи полицајац", - "sv": "farthinder", - "uk": "лежачий поліцейський", - "zh": "减速带" - }, - "choker": { - "en": "choker" - }, - "island": { - "ar": "جزيرة مرورية", - "de": "verkehrsinsel", - "en": "traffic island", - "es": "isleta", - "id": "pulau jalan", - "ja": "安全地帯", - "ko": "교통섬", - "nl": "verkeerseiland", - "ru": "островок безопасности" - } - }, - "traffic_sign": { - "DE": { - "de": "touristisches hinweisschild", - "en": "tourist sign", - "it": "cartello turistico", - "pt": "sinalização turística", - "sr": "turistički znak" - }, - "FR": { - "en": "ab2", - "fr": "panneau de signalisation d'une priorité ponctuelle" - }, - "US": { - "en": "mdmutcd r7-4(9): bus stop (symbol) - no standing any time" - }, - "city_limit": { - "ca": "senyal de límit administratiu", - "da": "byskilt", - "de": "ortstafel", - "en": "town sign", - "fi": "kunnanrajakyltti", - "ko": "경계표지", - "nl": "plaatsnaambord", - "pl": "znak drogowy miejscowości", - "ro": "indicator de localitate", - "ru": "дорожный знак с названием населённого пункта", - "uk": "табличка населеного пункту", - "zh": "城鎮標誌" - }, - "maxspeed": { - "de": "geschwindigkeitsbegrenzungszeichen", - "en": "speed limit sign" - } - }, - "traffic_signals": { - "traffic_light": { - "ar": "إشارة ضوئية", - "bg": "светофар", - "ca": "semàfor", - "cs": "světelné signalizační zařízení", - "da": "trafiksignal", - "de": "ampel", - "el": "φωτεινός σηματοδότης", - "en": "traffic light", - "es": "semáforo", - "et": "valgusfoor", - "fi": "liikennevalo-ohjaus", - "fr": "feu de circulation", - "he": "רמזור", - "hr": "semafor", - "hu": "közlekedési lámpa", - "id": "lampu lalu lintas", - "is": "umferðarljós", - "it": "semaforo", - "ja": "信号機", - "ko": "신호등", - "lt": "šviesoforas", - "lv": "luksofors", - "nb": "trafikklys", - "nl": "verkeerslicht", - "pl": "sygnalizacja świetlna", - "pt": "semáforo", - "ro": "semafor", - "ru": "cветофор", - "sk": "svetelné signalizačné zariadenia", - "sl": "semafor", - "sr": "семафор", - "sv": "trafiksignal", - "th": "ไฟจราจร", - "tr": "trafik ışığı", - "uk": "світлофор", - "vi": "đèn giao thông", - "zh": "交通號誌", - "zh-cn": "信號燈" - } - }, - "transformer": { - "distribution": { - "de": "verteilungstransformator", - "en": "distribution transformer", - "es": "transformador de distribución", - "fi": "jakelumuuntaja", - "fr": "transformateur de distribution", - "hi": "वितरण ट्रांसफॉर्मर", - "ja": "柱上変圧器", - "nl": "distributietransformator", - "pl": "transformator rozdzielczy" - } - }, - "trolley_wire": { - "yes": { - "ar": "أسلاك علوية", - "bg": "контактна мрежа", - "ca": "catenària", - "cs": "trolejové vedení", - "da": "køreledning", - "de": "oberleitung", - "el": "αλυσοειδής γραμμή επαφής", - "en": "overhead contact line", - "en-ca": "overhead line", - "en-gb": "overhead line", - "es": "catenaria", - "et": "kontaktliin", - "fi": "ajojohdin", - "fr": "caténaire", - "hi": "अतिरिक्त रेखा", - "hu": "felsővezeték", - "id": "listrik aliran atas", - "it": "linea aerea di contatto", - "ja": "架空電車線方式", - "ko": "가공 전차선", - "lv": "kontakttīkls", - "nb": "kontaktledning", - "nl": "bovenleiding", - "pl": "przewody trakcyjne", - "pt": "catenária", - "ru": "контактная сеть", - "sk": "trolejové vedenie", - "sr": "контактна мрежа", - "sv": "kontaktledning", - "th": "ระบบจ่ายไฟฟ้าเหนือหัว", - "tr": "katener", - "uk": "контактна мережа", - "zh": "高架電纜", - "zh-cn": "架空接触网", - "zh-hk": "架空電纜", - "zh-tw": "高架電車線" - } - }, - "tunnel": { - "culvert": { - "ar": "بربخ", - "cs": "propustek", - "da": "underløb", - "de": "durchlass", - "en": "culvert", - "es": "obra de drenaje", - "et": "truup", - "fi": "siltarumpu", - "fr": "buse", - "id": "gorong-gorong", - "ja": "カルバート", - "ko": "암거", - "lv": "caurteka", - "nb": "stikkrenne", - "nl": "duiker", - "pl": "przepust", - "ru": "дренажная труба", - "sv": "trumma", - "th": "ท่อลอด", - "uk": "кульверт", - "zh": "涵洞" - } - }, - "type": { - "multilinestring": { - "en": "multilinestring" - }, - "multipolygon": { - "en": "multipolygon" - }, - "public_transport": { - "ar": "مواصلات عامة", - "bg": "обществен транспорт", - "ca": "transport públic", - "cs": "veřejná doprava", - "da": "kollektiv trafik", - "de": "öffentlicher verkehr", - "el": "δημόσια συγκοινωνία", - "en": "public transport", - "es": "transporte público", - "et": "ühistransport", - "fi": "julkinen liikenne", - "fr": "transport en commun", - "he": "תחבורה ציבורית", - "hr": "javni prijevoz", - "hu": "tömegközlekedés", - "id": "transportasi umum", - "is": "almenningssamgöngur", - "it": "trasporto pubblico", - "ja": "公共交通機関", - "ko": "대중교통", - "lt": "viešasis transportas", - "lv": "sabiedriskais transports", - "nb": "kollektivtransport", - "nl": "openbaar vervoer", - "pl": "publiczny transport zbiorowy", - "pt": "transporte coletivo", - "pt-br": "transporte público", - "ro": "transport public", - "ru": "общественный транспорт", - "sk": "verejná doprava", - "sl": "javni prevoz", - "sr": "јавни превоз", - "sv": "kollektivtrafik", - "th": "การขนส่งสาธารณะ", - "tr": "toplu taşımacılık", - "uk": "громадський транспорт", - "vi": "giao thông công cộng", - "zh": "公共交通", - "zh-tw": "公共運輸" - }, - "restriction": { - "en": "turn restriction routing", - "zh": "转弯限制路由" - }, - "waterway": { - "ar": "معبر مائي", - "bg": "воден път", - "ca": "via navegable", - "cs": "vodní cesta", - "da": "vandvej", - "de": "wasserstraße", - "de-at": "fluss", - "de-ch": "wasserstrasse", - "el": "ποταμός", - "en": "waterway", - "es": "vía de agua", - "et": "veetee", - "fi": "vesiväylä", - "fr": "voie navigable", - "he": "נתיב מים", - "hr": "vodeni tok", - "hu": "vízi út", - "id": "jalan air", - "is": "á", - "it": "idrovia", - "ja": "水路", - "ko": "수로", - "lt": "upė", - "lv": "ūdensceļš", - "nb": "vannvei", - "nl": "vaarweg", - "pl": "droga wodna", - "pt": "hidrovia", - "ro": "cale navigabilă", - "ru": "водный путь", - "sk": "rieka", - "sl": "reka", - "sr": "водени ток", - "sv": "vattenväg", - "th": "แม่น้ำ", - "tr": "su yolu", - "uk": "водний шлях", - "vi": "đường thủy", - "zh": "水道" - } - }, - "usage": { - "spillway": { - "ar": "مفيض", - "bg": "преливник", - "ca": "sobreeixidor", - "cs": "bezpečnostní přeliv", - "de": "hochwasserentlastung", - "el": "υπερχειλιστής", - "en": "spillway", - "es": "aliviadero", - "et": "veelase", - "fr": "déversoir", - "he": "מברץ", - "hr": "preljev brane", - "id": "saluran pelimpah", - "it": "stramazzo", - "ja": "放流設備", - "ko": "물넘이", - "nb": "flomløp", - "nl": "overlaat", - "pl": "przelew", - "pt": "vertedouro", - "ro": "deversor", - "ru": "слив плотины", - "sk": "bezpečnostný prepad", - "sl": "prelivni kanal", - "sv": "utskov", - "th": "ทางน้ำล้น", - "tr": "dolusavak", - "uk": "водоскидна споруда", - "zh": "溢洪道" - } - }, - "vacant": { - "shop": { - "de": "leerstehendes geschäft", - "en": "vacant shop" - }, - "yes": { - "ca": "edifici desocupat", - "en": "vacant building", - "nl": "leegstaand gebouw" - } - }, - "vegetarian": { - "only": { - "ca": "restaurant vegetarià", - "de": "vegetarisches restaurant", - "en": "vegetarian restaurant", - "es": "restaurante vegetariano", - "fi": "kasvisravintola", - "fr": "restaurant végétarien", - "it": "ristorante vegetariano", - "ja": "ベジタリアンレストラン", - "nl": "vegetarische eetgelegenheid", - "pt": "restaurante vegetariano", - "ru": "вегетарианский ресторан", - "sv": "vegetarisk restaurang" - } - }, - "vending": { - "art": { - "de": "kunstautomat", - "en": "art vending machine" - }, - "books": { - "de": "buchautomat", - "en": "book vending machine", - "ru": "книжный автомат" - }, - "bottle_return": { - "ar": "آلة بيع عكسي", - "da": "pantautomat", - "de": "leergutautomat", - "en": "reverse vending machine", - "es": "máquina expendedora inversa", - "fi": "pullonpalautusautomaatti", - "id": "mesin jual otomatis terbalik", - "it": "cassonetto intelligente", - "ja": "自動回収機", - "lt": "taromatas", - "nb": "pantemaskin", - "nl": "flessenautomaat", - "pl": "maszyna do skupu butelek", - "pt": "máquina de venda automática reversa", - "ru": "фандомат", - "sv": "pantmaskin", - "uk": "фандомат" - }, - "cigarettes": { - "de": "zigarettenautomat", - "en": "cigarette machine" - }, - "condoms": { - "ar": "ماكينة الواقي الذكري", - "cs": "automat na kondomy", - "de": "kondomautomat", - "en": "condom machine", - "fr": "distributeur de préservatifs", - "ko": "콘돔 판매기", - "ru": "кондомат", - "sk": "automat na kondómy", - "uk": "кондомат", - "vi": "máy bán bao cao su", - "zh": "避孕套自動販賣機" - }, - "drinks": { - "cs": "nápojový automat", - "de": "getränkeautomat", - "en": "drink vending machine", - "fr": "distributeur automatique de boissons", - "ja": "飲料自動販売機", - "ru": "торговый автомат по продаже напитков" - }, - "fishing_bait": { - "de": "wurmautomat", - "en": "bait machine", - "fr": "distributeur d'asticots" - }, - "milk": { - "de": "milchautomat", - "en": "milk vending machine", - "fr": "distributeur de lait frais", - "ru": "торговый автомат по продаже молока", - "sl": "mlekomat", - "sv": "mjölkautomat" - }, - "newspapers": { - "ca": "màquina expenedora de diaris", - "de": "zeitungsautomat", - "en": "newspaper vending machine", - "ru": "автомат по продаже газет", - "vi": "máy bán báo", - "zh": "報箱" - }, - "parking_tickets": { - "de": "parkscheinautomat", - "en": "pay and display", - "fr": "horodateur", - "it": "parcheggio a pagamento", - "ja": "パーキングチケット発給機", - "nl": "parkeerautomaat", - "pl": "parkomat", - "sv": "parkeringsautomat", - "uk": "заплати й покажи", - "zh": "憑票" - }, - "public_transport_tickets": { - "ca": "màquina de bitllets", - "cs": "automat na jízdenky", - "da": "billetautomat", - "de": "fahrkartenautomat", - "de-ch": "billetautomat", - "en": "ticket machine", - "es": "máquina de boletos", - "fi": "junamaatti", - "fr": "distributeur automatique de titres de transport", - "hu": "jegyautomata", - "id": "mesin tiket", - "it": "biglietteria automatica", - "ja": "自動券売機", - "ko": "표 자동판매기", - "nb": "billettautomat", - "nl": "kaartautomaat", - "pl": "automat biletowy", - "ru": "билетный автомат", - "sv": "biljettautomat", - "tr": "bilet makinesi", - "zh": "自动售票机", - "zh-hk": "自動售票機" - }, - "stamps": { - "cs": "známkový automat", - "da": "frimærkeautomat", - "de": "briefmarkenautomat", - "en": "stamp vending machine", - "ru": "почтовый автомат" - }, - "sweets": { - "de": "snackautomat", - "en": "snack machine", - "fr": "distributeur automatique de snacks" - }, - "toll": { - "cs": "automat na dálniční známky", - "de": "mautstellen-terminal", - "en": "toll automat", - "sk": "mýtomat" - } - }, - "volcano": { - "": { - "ar": "بركان هادئ", - "bg": "стратовулкан", - "ca": "volcà adormit", - "cs": "stratovulkán", - "da": "stratovulkan", - "de": "schlafender vulkan", - "el": "στρωματοηφαίστειο", - "en": "dormant volcano", - "es": "volcán dormido", - "et": "uinunud vulkaan", - "fi": "potentiaalisesti aktiivinen tulivuori", - "fr": "volcan endormi", - "he": "הר געש שכבתי", - "hi": "dormant volcanoes", - "hr": "stratovulkan", - "hu": "rétegvulkán", - "id": "gunung berapi tidur", - "is": "eldkeila", - "it": "vulcano quiescente", - "ja": "休火山", - "ko": "휴화산", - "lt": "stratovulkanas", - "lv": "stratovulkāns", - "nb": "stratovulkan", - "nl": "slapende vulkaan", - "pl": "wulkan drzemiący", - "pt": "estratovulcão", - "ro": "stratovulcan", - "ru": "дремлющие вулканы", - "sk": "stratovulkán", - "sl": "stratovulkan", - "sr": "стратовулкан", - "sv": "potentiellt aktiv vulkan", - "th": "กรวยภูเขาไฟสลับชั้น", - "tr": "stratovolkan", - "uk": "стратовулкан", - "vi": "núi lửa dạng tầng", - "zh": "休眠火山", - "zh-cn": "复式火山", - "zh-hk": "睡火山", - "zh-tw": "複式火山" - } - }, - "voltage": { - "15000": { - "cs": "15 kv; 16,7 hz", - "de": "15 kv einphasenwechselspannung mit 16,7 hz", - "en": "15 kv, 16.7 hz ac railway electrification", - "en-ca": "15 kv ac railway electrification", - "en-gb": "15 kv ac railway electrification", - "es": "electrificación ferroviaria de 15 kv de ca", - "fr": "électrification ferroviaire 15 kv 16,7 hz", - "hu": "15 kv-os villamos vontatás", - "it": "elettrificazione ferroviaria a 15 kv ac", - "nb": "15 kv, 16 2/3 hz vekselstrøm jernbaneforsyning", - "nl": "15 kv bovenleidingssysteem", - "pl": "15 kv; 16,7 hz", - "ru": "15 кв, 16,7 гц перем.", - "sv": "15 kv, 16,7 hz växelspänning järnvägsmatning", - "uk": "15 кв змінного струму електрифікація", - "zh": "15千伏交流电气化铁路" - }, - "25000": { - "cs": "25 kv, 50 hz", - "de": "elektrifizierung mit 25 kv einphasenwechselspannung mit 50 hz", - "en": "25 kv, 50 hz ac railway electrification", - "es": "electrivicación del ferocarril con 25 kv ca y 50 hz", - "fr": "électrification ferroviaire 25 kv 50 hz", - "hu": "25 kv 50 hz-es villamos vontatás", - "ja": "交流25kv 50hz鉄道電化", - "ru": "25 кв, 50 гц перем.", - "sv": "25 kv, 50 hz växelspänning järnvägsmatning", - "tr": "25 kv, 50 hz aa demiryolu elektrifikasyonu", - "zh": "25千伏50赫兹交流电", - "zh-tw": "2萬5千伏特60赫茲交流電" - }, - "630": { - "en": "630 v dc railway electrification", - "fr": "électrification ferroviaire 630 v continu", - "hu": "630 voltos egyenáram", - "ja": "直流630v鉄道電化", - "ko": "630 v dc 철도 통전", - "ru": "630 в пост." - }, - "750": { - "de": "750 v =", - "en": "750 v dc railway electrification", - "es": "electrificación ferroviaria de 750 v", - "fr": "électrification ferroviaire 750 v continu", - "hu": "750 v egyenáram", - "it": "elettrificazione ferroviaria 750 v cc", - "ja": "直流750v鉄道電化", - "ko": "750 v dc 철도 통전", - "pl": "elektryfikacja prądem stałym o napięciu 750 v", - "ru": "750 в пост.", - "tr": "750 v da demiryolu elektrifikasyonu", - "uk": "постійний струм, 750 в", - "zh": "750伏直流電鐵路電氣化" - } - }, - "wall": { - "noise_barrier": { - "ca": "barrera acústica", - "cs": "protihluková stěna", - "da": "støjskærm", - "de": "lärmschutzwand", - "en": "noise barrier", - "es": "barrera acústica", - "fi": "melueste", - "fr": "mur anti-bruit", - "he": "מחסומי הרעש", - "id": "penghalang bising", - "it": "barriera antirumore", - "ja": "遮音壁", - "ko": "방음벽", - "nb": "støyskjerm", - "nl": "geluidsscherm", - "pl": "ekran akustyczny", - "pt": "barreira sonora", - "ru": "шумозащитный экран", - "sl": "protihrupna ograja", - "sr": "звучна баријера (изолација)", - "sv": "bullerskydd", - "uk": "шумозахисний екран", - "vi": "tường cách âm", - "zh": "隔音屏障" - } - }, - "water": { - "lake": { - "ar": "بحيرة", - "bg": "езеро", - "ca": "llac", - "cs": "jezero", - "da": "sø", - "de": "see", - "el": "λίμνη", - "en": "lake", - "es": "lago", - "et": "järv", - "fi": "järvi", - "fr": "lac", - "he": "אגם", - "hi": "झील", - "hr": "jezero", - "hu": "tó", - "id": "danau", - "is": "stöðuvatn", - "it": "lago", - "ja": "湖", - "ko": "호수", - "lt": "ežeras", - "lv": "ezers", - "nb": "innsjø", - "nl": "meer", - "pl": "jezioro", - "pt": "lago", - "ro": "lac", - "ru": "озеро", - "sk": "jazero", - "sl": "jezero", - "sr": "језеро", - "sv": "insjö", - "th": "ทะเลสาบ", - "tr": "göl", - "uk": "озеро", - "vi": "hồ", - "zh": "湖泊" - }, - "pond": { - "ca": "bassa", - "de": "teich", - "en": "artificial pond", - "en-us": "pond (artificial)", - "fr": "mare", - "ja": "人工池", - "lt": "kūdra", - "lv": "dīķis", - "nl": "vijver", - "ru": "пруд", - "uk": "став", - "vi": "ao nhân tạo" - }, - "reservoir": { - "ar": "بحيرة خزان", - "bg": "язовир", - "ca": "embassament", - "cs": "přehradní nádrž", - "de": "stausee", - "el": "τεχνητή λίμνη", - "en": "reservoir", - "es": "embalse", - "et": "paisjärv", - "fi": "patojärvi", - "fr": "lac de barrage", - "he": "מאגר מים", - "hi": "जलाशय", - "hr": "umjetno jezero", - "hu": "víztározó", - "id": "waduk", - "is": "uppistöðulón", - "it": "bacino artificiale", - "ja": "貯水池", - "ko": "저수지", - "lt": "tvenkinys", - "lv": "uzpludinājums", - "nb": "vannmagasin", - "nl": "stuwmeer", - "pl": "zbiornik zaporowy", - "pt": "reservatório", - "ro": "lac de acumulare", - "ru": "водохранилище", - "sk": "priehradná nádrž", - "sl": "akumulacijsko jezero", - "sr": "вештачко језеро", - "sv": "vattenmagasin", - "th": "อ่างเก็บน้ำ", - "tr": "baraj gölü", - "uk": "водосховище", - "vi": "hồ chứa nước", - "zh": "水庫", - "zh-cn": "水库" - } - }, - "waterway": { - "boatyard": { - "ar": "حوض بناء سفن", - "bg": "корабостроителница", - "ca": "drassana", - "cs": "loděnice", - "da": "værft", - "de": "werft", - "el": "ναυπηγείο", - "en": "shipyard", - "es": "astillero naval", - "et": "laevatehas", - "fi": "telakka", - "fr": "chantier naval", - "he": "מספנה", - "hi": "डॉकयार्ड", - "hr": "brodogradilište", - "hu": "hajógyár", - "id": "galangan kapal", - "is": "slippur", - "it": "cantiere navale", - "ja": "造船所", - "ko": "조선소", - "nb": "skipsverft", - "nl": "scheepswerf", - "pl": "stocznia", - "pt": "estaleiro naval", - "pt-br": "estaleiro", - "ro": "șantier naval", - "ru": "верфь", - "sk": "lodenica", - "sl": "ladjedelnica", - "sr": "бродоградилиште", - "sv": "skeppsvarv", - "th": "อู่ต่อเรือ", - "tr": "tersane", - "uk": "корабельня", - "zh": "造船厂" - }, - "canal": { - "ar": "قناة", - "bg": "канал", - "cs": "vodní kanál", - "da": "kanal", - "de": "kanal", - "el": "διώρυγα", - "en": "canal", - "et": "kanal", - "fi": "kanava", - "he": "תעלת מים", - "hi": "नहर", - "hr": "kanal", - "hu": "csatorna", - "id": "kanal", - "is": "skurður", - "it": "canale artificiale", - "ja": "運河", - "ko": "운하", - "lt": "kanalas", - "lv": "kanāls", - "nb": "kanal", - "nl": "kanaal", - "pl": "kanał wodny", - "ru": "канал", - "sk": "prieplav", - "sl": "prekop", - "sr": "канал", - "sv": "kanal", - "th": "คลอง", - "tr": "ark", - "uk": "канал", - "vi": "kênh đào", - "zh": "運河" - }, - "dam": { - "ar": "سد", - "bg": "язовирна стена", - "ca": "presa d'aigua", - "cs": "přehrada", - "da": "dæmning", - "de": "talsperre", - "el": "φράγμα", - "en": "dam", - "es": "represa", - "et": "pais", - "fi": "pato", - "fr": "barrage", - "he": "סכר", - "hi": "बाँध", - "hr": "brana", - "hu": "gát", - "id": "bendungan", - "is": "stífla", - "it": "diga", - "ja": "ダム", - "ko": "댐", - "lt": "užtvanka", - "lv": "aizsprosts", - "nb": "demning", - "pl": "zapora wodna", - "pt": "barragem", - "ro": "baraj", - "ru": "плотина", - "sk": "priehrada", - "sl": "jez", - "sr": "брана", - "sv": "dammbyggnad", - "th": "เขื่อน", - "tr": "baraj", - "uk": "гребля", - "vi": "đập", - "zh": "水坝", - "zh-hk": "水壩", - "zh-tw": "水壩" - }, - "ditch": { - "ar": "خندق", - "bg": "вада", - "ca": "rasa", - "cs": "příkop", - "da": "grøft", - "de": "wassergraben", - "en": "ditch", - "es": "cuneta o canal", - "et": "kraav", - "fi": "oja", - "fr": "fossé", - "hr": "jarak", - "hu": "árok", - "id": "selokan", - "it": "fosso", - "ja": "溝渠", - "ko": "구거", - "lv": "grāvis", - "nb": "grøft", - "nl": "sloot", - "pl": "rów wodny", - "pt": "fosso", - "ro": "șanț", - "ru": "канава", - "sr": "jarak", - "sv": "dike", - "th": "ลำเหมือง", - "tr": "su hendeği", - "uk": "канава", - "zh": "溝渠" - }, - "dock": { - "ar": "مرسى", - "bg": "корабен док", - "ca": "dàrsena", - "cs": "dok", - "da": "dok", - "el": "νεωδόχος", - "en": "dock", - "es": "muelle", - "et": "dokk", - "fi": "telakka", - "fr": "darse", - "he": "מבדוק", - "hi": "गोदी", - "hu": "dokk", - "id": "dok", - "is": "skipakví", - "it": "darsena", - "ja": "ドック", - "ko": "선거 (조선)", - "lt": "dokas", - "nb": "dokk", - "nl": "dok", - "pl": "dok", - "pt": "doca", - "ro": "doc", - "ru": "корабельный док", - "sr": "пристаниште", - "sv": "docka", - "tr": "dok", - "uk": "корабельний док", - "zh": "船塢" - }, - "fish_pass": { - "ar": "سلم سمك", - "ca": "pas de peix", - "cs": "rybí přechod", - "da": "fisketrappe", - "de": "fischtreppe", - "en": "fish ladder", - "es": "escalera de peces", - "et": "kalatrepp", - "fi": "kalatie", - "fr": "échelle à poissons", - "he": "סולם דגים", - "hr": "riblja staza", - "hu": "hallépcső", - "id": "tangga ikan", - "is": "fiskistigi", - "it": "passaggio per pesci", - "ja": "魚道", - "ko": "어도", - "lt": "žuvitakis", - "nb": "fisketrapp", - "nl": "vistrap", - "pl": "przepławka", - "pt": "escada de peixes", - "ro": "scară de pești", - "ru": "рыбопропускные сооружения", - "sv": "fiskväg", - "uk": "рибопропускні споруди", - "vi": "thang cá", - "zh": "魚道" - }, - "lock_gate": { - "en": "lock gate", - "fr": "vanne d'écluse" - }, - "milestone": { - "ar": "ميل نهري", - "bg": "речен километър", - "cs": "říční kilometr", - "de": "flusskilometer", - "en": "river mile", - "es": "milla de río", - "hr": "riječni kilometar", - "hu": "folyamkilométer", - "nl": "kilometerraai", - "pl": "kilometraż rzeki", - "sk": "riečny kilometer", - "vi": "dặm sông", - "zh": "河英里" - }, - "river": { - "ar": "نهر", - "bg": "река", - "ca": "riu", - "cs": "řeka", - "da": "flod", - "de": "fluss", - "el": "ποταμός", - "en": "river", - "es": "río", - "et": "jõgi", - "fi": "joki", - "fr": "rivière", - "he": "נהר", - "hi": "नदी", - "hr": "rijeka", - "hu": "folyó", - "id": "sungai", - "is": "á", - "it": "fiume", - "ja": "川", - "ko": "강", - "lt": "upė", - "lv": "upe", - "nb": "elv", - "nl": "rivier", - "pl": "rzeka", - "pt": "rio", - "ro": "râu", - "ru": "река", - "sk": "rieka", - "sl": "reka", - "sr": "река", - "sv": "flod", - "th": "แม่น้ำ", - "tr": "nehir", - "uk": "річка", - "vi": "sông", - "zh": "河流" - }, - "stream": { - "ar": "جدول مائي", - "bg": "ручей", - "ca": "quebrada", - "cs": "potůček", - "da": "bæk", - "de": "bach", - "en": "brook", - "es": "arroyo", - "et": "oja", - "fi": "puro", - "fr": "ruisseau", - "hr": "potok", - "hu": "patak", - "it": "ruscello", - "ko": "내", - "lt": "upokšnis", - "lv": "strauts", - "nb": "bekk", - "nl": "beek", - "pl": "potok", - "pt": "córrego", - "ro": "pârâu", - "ru": "ручей", - "sk": "potok", - "sl": "potok", - "sr": "поток", - "sv": "bäck", - "th": "ธารน้ำ", - "tr": "dere", - "uk": "струмок", - "vi": "suối nhỏ", - "zh": "溪" - }, - "turning_point": { - "en": "winding hole", - "nl": "zwaaikom" - }, - "wadi": { - "ar": "وادي", - "bg": "уади", - "ca": "uadi", - "cs": "vádí", - "el": "ουάντι", - "en": "wadi", - "es": "uadi", - "et": "vadi", - "fi": "vadi", - "fr": "oued", - "he": "ואדי", - "hr": "vadi", - "hu": "vádi", - "it": "uadi", - "ja": "ワジ", - "ko": "와디", - "lt": "vadis", - "pt": "uádi", - "ro": "ued", - "ru": "вади", - "sk": "vádí", - "sl": "vadi", - "sr": "вади", - "tr": "vadi", - "uk": "ваді", - "zh": "乾谷", - "zh-cn": "干谷" - }, - "waterfall": { - "ar": "شلال", - "bg": "водопад", - "ca": "salt d'aigua", - "cs": "vodopád", - "da": "vandfald", - "de": "wasserfall", - "el": "καταρράκτης", - "en": "waterfall", - "es": "cascada", - "et": "juga", - "fi": "vesiputous", - "fr": "chute d'eau", - "he": "מפל מים", - "hi": "झरना", - "hr": "vodopad", - "hu": "vízesés", - "id": "air terjun", - "is": "foss", - "it": "cascata", - "ja": "滝", - "ko": "폭포", - "lt": "krioklys", - "lv": "ūdenskritums", - "nb": "foss", - "nl": "waterval", - "pl": "wodospad", - "pt": "cascata", - "pt-br": "cachoeira", - "ro": "cascadă", - "ru": "водопад", - "sk": "vodopád", - "sl": "slap", - "sr": "водопад", - "sv": "vattenfall", - "th": "น้ำตก", - "tr": "şelale", - "uk": "водоспад", - "vi": "thác", - "zh": "瀑布" - }, - "weir": { - "ar": "هدار", - "ca": "assut", - "cs": "jez", - "da": "stemmeværk", - "de": "wehr", - "el": "υδροφράχτης", - "en": "weir", - "es": "vertedero hidráulico", - "et": "ülevoolupais", - "fi": "pato", - "fr": "seuil", - "hi": "बंधिका", - "hr": "brana-weir", - "id": "bendung", - "is": "stíflugarður", - "it": "briglia", - "ja": "堰", - "ko": "보", - "nl": "stuw", - "pl": "jaz", - "ru": "запруда", - "sk": "hať", - "sv": "överfallsvärn", - "th": "ฝาย", - "tr": "su bendi", - "uk": "водозлив", - "zh": "堰" - } - }, - "wetland": { - "marsh": { - "ar": "هور", - "bg": "блато", - "ca": "aiguamoll", - "cs": "mokřadní louka", - "de": "sumpf", - "el": "έλος", - "en": "marsh", - "es": "pantano", - "et": "padur", - "fi": "marskimaa", - "fr": "marais", - "he": "ביצת עשב", - "hi": "दलदल", - "hr": "močvara", - "hu": "mocsár", - "id": "paya", - "it": "palude", - "ja": "沼", - "ko": "소택", - "lt": "marša", - "lv": "purvājs", - "nb": "sump", - "nl": "moeras", - "pl": "bagno", - "pt": "marisma", - "ru": "болото", - "sk": "močiar", - "sl": "močvirje", - "sr": "мочвара", - "sv": "kärr", - "th": "ที่ลุ่มชื้นแฉะ", - "tr": "bataklık", - "uk": "болото", - "vi": "đồng lầy", - "zh": "草沼" - }, - "swamp": { - "ar": "مستنقع", - "bg": "мочурище", - "ca": "pantà", - "cs": "bažinatý les", - "da": "sump", - "de": "bruch", - "de-ch": "sumpf", - "el": "έλος", - "en": "swamp", - "es": "pantano", - "et": "lodu", - "fi": "suometsä", - "fr": "marécage", - "he": "ביצה", - "hi": "दलदल", - "hr": "močvara", - "hu": "ártéri erdő", - "id": "rawa", - "is": "mýri", - "it": "palude alberata", - "ja": "沼地", - "ko": "늪", - "lt": "raistas", - "lv": "dumbrājs", - "nb": "sump", - "nl": "zwamp", - "pl": "zadrzewione bagno", - "pt": "pântano", - "ro": "mlaștină", - "ru": "заболоченный лес", - "sk": "močiar", - "sl": "močvirje", - "sr": "мочвара", - "sv": "träsk", - "th": "ที่ลุ่มน้ำขัง", - "tr": "bataklık", - "uk": "болото", - "vi": "đầm lầy", - "zh": "树沼" - }, - "tidalflat": { - "en": "tidal flat" - } - }, - "wheelchair": { - "no": { - "ca": "inaccessible amb cadira de rodes", - "de": "nicht rollstuhlzugänglich", - "el": "μη προσβάσιμο με αναπηρική καρέκλα", - "en": "wheelchair inaccessible", - "fr": "inaccessible aux personnes à mobilité réduite", - "id": "tidak dapat diakses kursi roda", - "it": "inaccessibile alle persone con disabilità motorie", - "ja": "車椅子利用不可", - "ko": "휠체어 사용자는 이용할 수 없음", - "lv": "nepieejams ratiņkrēslā", - "nb": "utilgjengelig for rullestol", - "nl": "niet-rolstoeltoegankelijk", - "pl": "niedostępne dla wózków inwalidzkich", - "pt": "inacessível por cadeira de rodas", - "ru": "недоступно для кресел-каталок", - "sv": "otillgänglig för rullstol", - "tr": "tekerlekli sandalyeyle erişilemez" - }, - "yes": { - "ca": "accessible amb cadira de rodes", - "de": "rollstuhlzugänglich", - "el": "προσβάσιμο με αναπηρική καρέκλα", - "en": "wheelchair accessible", - "es": "accesible con silla de ruedas", - "fr": "accessible, sans aide, aux personnes à mobilité réduite", - "he": "נגיש לכיסאות גלגלים", - "hu": "akadálymentesített közlekedés", - "id": "dapat diakses kursi roda", - "it": "accessibile alle persone con disabilità motorie", - "ja": "車椅子利用可", - "ko": "휠체어 사용자도 이용할 수 있음", - "lv": "pieejams ratiņkrēslā", - "nb": "tilgjengelig for rullestol", - "nl": "rolstoeltoegankelijk", - "pl": "dostępne dla wózków inwalidzkich", - "pt": "acessível por cadeira de rodas", - "ro": "accesibil persoanelor cu mobilitate redusă", - "ru": "доступно для кресел-каталок", - "sr": "приступачно инвалидским колицима", - "sv": "tillgänglig för rullstol", - "tr": "tekerlekli sandalyeyle erişilebilir", - "uk": "доступно для інвалідних візків", - "zh": "可使用輪椅" - } - }, - "wholesale": { - "supermarket": { - "ca": "mercat majorista", - "de": "großmarkt", - "en": "wholesale market", - "es": "mercado de abastos", - "fr": "marché de gros", - "he": "שוק סיטונאי", - "hu": "nagybani piac", - "it": "mercato all'ingrosso", - "ja": "卸売市場", - "nl": "groothandelsmarkt", - "pl": "targ hurtowy", - "pt": "mercado atacadista", - "zh": "批发市场", - "zh-tw": "量販市場" - } - }, - "window": { - "skylight": { - "ca": "claraboia", - "cs": "střešní světlík", - "de": "oberlicht", - "el": "φεγγίτης", - "en": "skylight", - "es": "tragaluz", - "fi": "kattoikkuna", - "fr": "verrière", - "it": "lucernario", - "ja": "天窓", - "nl": "bovenlicht", - "pl": "świetlik (architektura)", - "pt": "claraboia", - "sk": "strešné svetlíky", - "sv": "takfönster", - "zh": "天窗" - } - }, - "zoo": { - "aviary": { - "ar": "مَطير", - "bg": "волиера", - "ca": "aviari", - "cs": "voliéra", - "da": "voliere", - "de": "voliere", - "en": "aviary", - "es": "aviario", - "fi": "aviaario", - "fr": "volière", - "it": "voliera", - "ja": "禽舎", - "nl": "volière", - "pl": "ptaszarnia", - "pt": "aviário", - "ru": "авиарий", - "sr": "авиаријум", - "sv": "voljär", - "zh": "大鸟笼" - }, - "birds": { - "de": "vogelpark", - "en": "bird park", - "fr": "parc ornithologique", - "ja": "鳥類園", - "nl": "vogelpark" - }, - "butterfly": { - "ar": "فراشة", - "bg": "дневни пеперуди", - "ca": "papallona", - "cs": "denní motýli", - "da": "sommerfugl", - "de": "tagfalter", - "el": "πεταλούδα", - "en": "butterflies", - "en-ca": "butterfly", - "en-gb": "butterfly", - "es": "rhopalocera", - "et": "päevaliblikad", - "fi": "rhopalocera", - "fr": "rhopalocères", - "he": "פרפרים", - "hi": "तितली", - "hr": "dnevni leptiri", - "hu": "nappali lepkék", - "id": "kupu-kupu", - "is": "fiðrildi", - "it": "farfalla", - "ja": "チョウ", - "ko": "나비", - "lv": "tauriņi", - "nb": "rhopalocera", - "nl": "vlinder", - "pl": "motyl dzienny", - "pt": "borboleta", - "ro": "fluture", - "ru": "бабочки", - "sk": "motýľ", - "sl": "dnevni metulji", - "sr": "дневни лептир", - "sv": "dagfjärilar", - "th": "ผีเสื้อ", - "tr": "kelebek", - "uk": "rhopalocera", - "vi": "bướm ngày", - "zh": "錘角亞目", - "zh-cn": "锤角亚目", - "zh-hk": "蝴蝶" - }, - "enclosure": { - "ar": "قفص", - "ca": "gàbia", - "cs": "klec", - "da": "bur", - "de": "käfig", - "el": "κλουβί", - "en": "cage", - "es": "jaula", - "et": "puur", - "fi": "häkki", - "he": "כלוב", - "hr": "kavez", - "hu": "ketrec", - "it": "gabbia", - "ja": "ケージ", - "ko": "우리", - "lt": "narvas", - "nl": "kooi", - "pt": "jaula", - "ru": "клетка для животных", - "sr": "кавез", - "sv": "bur", - "tr": "kafes", - "uk": "клітка", - "zh": "籠", - "zh-cn": "笼" - }, - "falconry": { - "de": "greifvogelschau", - "en": "falconry display" - }, - "petting_zoo": { - "ar": "حدائق الحيوانات الأليفة للأطفال", - "de": "streichelzoo", - "en": "petting zoo", - "he": "פינת חי", - "ja": "ふれあい動物園", - "ko": "페팅 동물원", - "nl": "kinderboerderij", - "ru": "контактный зоопарк", - "uk": "контактний зоопарк", - "zh": "爱畜动物园" - }, - "reptile": { - "ar": "زواحف", - "bg": "влечуги", - "ca": "rèptil", - "cs": "plazi", - "da": "krybdyr", - "de": "reptilien", - "el": "ερπετά", - "en": "reptilia", - "en-ca": "reptile", - "en-gb": "reptile", - "es": "reptil", - "et": "roomajad", - "fi": "matelijat", - "he": "זוחלים", - "hi": "सरीसृप", - "hr": "gmazovi", - "hu": "hüllők", - "id": "reptil", - "is": "skriðdýr", - "ja": "爬虫類", - "ko": "파충류", - "lt": "ropliai", - "lv": "rāpuļi", - "nb": "krypdyr", - "nl": "reptielen", - "pl": "gady", - "pt": "réptil", - "pt-br": "répteis", - "ro": "reptilă", - "ru": "пресмыкающиеся", - "sk": "plazy", - "sl": "plazilci", - "sr": "гмизавци", - "sv": "kräldjur", - "th": "สัตว์เลื้อยคลาน", - "tr": "sürüngenler", - "uk": "плазуни", - "vi": "động vật bò sát", - "zh": "爬行纲", - "zh-cn": "爬行动物", - "zh-hk": "爬蟲類", - "zh-tw": "爬行動物" - }, - "safari_park": { - "bg": "сафари парк", - "da": "safaripark", - "de": "safaripark", - "en": "safari park", - "et": "safaripark", - "fr": "parc safari", - "it": "zoo safari", - "ja": "サファリパーク", - "ko": "사파리 공원", - "nl": "safaripark", - "pl": "park safari", - "sv": "safaripark", - "vi": "khu dã sinh", - "zh": "野生动物园", - "zh-hk": "上海" - }, - "wildlife_park": { - "de": "wildpark", - "en": "wildlife park", - "fi": "villieläinpuisto", - "fr": "parc de vision", - "nl": "wildpark", - "zh-cn": "野生动物园" - } - } - } -} \ No newline at end of file diff --git a/searx/data/useragents.json b/searx/data/useragents.json deleted file mode 100644 index 5b52aff8e..000000000 --- a/searx/data/useragents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "versions": [ - "119.0", - "118.0" - ], - "os": [ - "Windows NT 10.0; Win64; x64", - "X11; Linux x86_64" - ], - "ua": "Mozilla/5.0 ({os}; rv:109.0) Gecko/20100101 Firefox/{version}" -} \ No newline at end of file diff --git a/searx/data/wikidata_units.json b/searx/data/wikidata_units.json deleted file mode 100644 index 151eb8f31..000000000 --- a/searx/data/wikidata_units.json +++ /dev/null @@ -1,1257 +0,0 @@ -{ - "Q199": "1", - "Q100036106": "int nmi", - "Q100149279": "°We", - "Q100995": "lb", - "Q101194838": "GHz/V", - "Q101427873": "pk (US)", - "Q101427917": "pk (UK)", - "Q101463141": "ym²", - "Q101463237": "zm²", - "Q101463321": "am²", - "Q101463409": "fm²", - "Q101463496": "pm²", - "Q101463679": "hm²", - "Q101464050": "Mm²", - "Q101464215": "Gm²", - "Q101464369": "Tm²", - "Q101464499": "Pm²", - "Q101464624": "Em²", - "Q101464753": "Zm²", - "Q101464875": "Ym²", - "Q101515060": "g/J", - "Q101875087": "cd/cm²", - "Q101879174": "dm/s", - "Q102068844": "cm⁻³", - "Q102130673": "ym/s", - "Q102130674": "zm/s", - "Q102130677": "am/s", - "Q102130679": "fm/s", - "Q102130681": "pm/s", - "Q102130684": "nm/s", - "Q102130686": "μm/s", - "Q102130688": "mm/s", - "Q102130690": "dam/s", - "Q102130692": "hm/s", - "Q102130694": "Mm/s", - "Q102130696": "Gm/s", - "Q102130698": "Tm/s", - "Q102130700": "Pm/s", - "Q102130702": "Em/s", - "Q102130704": "Zm/s", - "Q102130706": "Ym/s", - "Q102130743": "ym/s²", - "Q102130745": "zm/s²", - "Q102130747": "am/s²", - "Q102130748": "fm/s²", - "Q102130751": "pm/s²", - "Q102130753": "nm/s²", - "Q102130755": "μm/s²", - "Q102130756": "mm/s²", - "Q102130758": "dm/s²", - "Q102130759": "dam/s²", - "Q102130761": "hm/s²", - "Q102130762": "km/s²", - "Q102130765": "Mm/s²", - "Q102130767": "Gm/s²", - "Q102130769": "Tm/s²", - "Q102130771": "Pm/s²", - "Q102130773": "Em/s²", - "Q102130775": "Zm/s²", - "Q102130777": "Ym/s²", - "Q1022113": "cm³", - "Q102573": "Bq", - "Q103246": "Sv", - "Q103510": "bar", - "Q10380431": "TJ", - "Q1040401": "das", - "Q1040427": "hs", - "Q104117265": "Bi", - "Q1042866": "Zib", - "Q104628312": "vars", - "Q104629193": "m/Es²", - "Q104816263": "kg/dm³", - "Q104907398": "μN m", - "Q104907399": "mN m", - "Q1050958": "inHg", - "Q1051665": "m/s²", - "Q1052397": "rad", - "Q1054140": "Mm", - "Q10543042": "Ym", - "Q105519288": "B SPL", - "Q1057069": "hg", - "Q105761866": "mV/K", - "Q105816142": "tsp", - "Q105816269": "cup (US)", - "Q105840138": "BU", - "Q1063756": "rad/s", - "Q1063786": "in²", - "Q1065153": "mrad", - "Q106589841": "MHz/T", - "Q106611785": "g/dm³", - "Q106611903": "J/g", - "Q1066138": "Ps", - "Q106617289": "GBq/kg", - "Q106617513": "mGy/s", - "Q106617558": "mSv/s", - "Q106617559": "μSv/s", - "Q106617560": "nSv/s", - "Q106617579": "kBq/kg", - "Q106617585": "MBq/kg", - "Q106623539": "Mg/m³", - "Q106623548": "μg/m³", - "Q106623562": "kg/cm³", - "Q106623580": "kg/kmol", - "Q106623615": "kg cm²", - "Q106623620": "kg mm²", - "Q106629974": "m³/m³", - "Q106639792": "dm³/kg", - "Q106645176": "dz", - "Q106645210": "mg/g", - "Q106645232": "g/mm", - "Q106645237": "kg/mm", - "Q106645241": "mg/m", - "Q106645245": "kg/km", - "Q106645257": "MN m", - "Q106645261": "kN m", - "Q106645290": "dN m", - "Q1067722": "Fg", - "Q106777906": "μS/m", - "Q106777917": "S/cm", - "Q106777923": "mS/cm", - "Q106777925": "MS/m", - "Q106777933": "kS/m", - "Q106777943": "nS/m", - "Q106777952": "nS/cm", - "Q106777957": "pS/m", - "Q106808096": "kJ/g", - "Q106808114": "GC/m³", - "Q106808120": "C/mm³", - "Q106808129": "MC/m³", - "Q106808138": "C/cm³", - "Q106808144": "kC/m³", - "Q106808151": "mC/m³", - "Q106808156": "μC/m³", - "Q106808167": "MC/m²", - "Q106808174": "C/mm²", - "Q106808180": "C/cm²", - "Q106808187": "kC/m²", - "Q106808194": "mC/m²", - "Q106808200": "μC/m²", - "Q106808221": "mC/kg", - "Q106885926": "N/mm", - "Q106886632": "hbar", - "Q106886776": "N/mm²", - "Q1069725": "p.", - "Q106998070": "cm³/m³", - "Q106998079": "dm³/m³", - "Q107028522": "μg/hg", - "Q107028836": "MK⁻¹", - "Q107133620": "mg/m²", - "Q107133637": "g/cm²", - "Q107133667": "mg/cm²", - "Q107133676": "g/m²", - "Q107164998": "cd mm²/m²", - "Q107210119": "g/s", - "Q107210344": "mg/s", - "Q107226391": "cm⁻¹", - "Q1072404": "K", - "Q107244316": "mm⁻¹", - "Q107244475": "dm⁻¹", - "Q107244557": "km⁻¹", - "Q107256474": "l.", - "Q107299747": "kvar", - "Q107299751": "Mvar", - "Q107313731": "μg/kg", - "Q107313738": "ng/kg", - "Q107313800": "cm³/s", - "Q107325155": "kWb/m", - "Q107325173": "Wb/mm", - "Q107361007": "kJ/s", - "Q107361082": "MJ/m³", - "Q107361092": "J/cm²", - "Q107361171": "mW/m²", - "Q107361180": "μW/m²", - "Q107361187": "pW/m²", - "Q107378499": "kN/m²", - "Q107410680": "cN m", - "Q107410689": "N cm", - "Q107410785": "g/mm²", - "Q107410801": "g/(cm s)", - "Q107410895": "kJ/hg", - "Q107440604": "W/cm²", - "Q107440662": "mmol/kg", - "Q107440685": "mmol/g", - "Q107440698": "kmol/kg", - "Q107440839": "g/g", - "Q107440910": "g/hg", - "Q107441004": "mg/hg", - "Q107460729": "mm³/mm³", - "Q107460790": "kg/GJ", - "Q107460866": "g/m", - "Q107460882": "mg/km", - "Q107461064": "MJ/m²", - "Q107461092": "g/(m² s)", - "Q107461119": "μg/(m² s)", - "Q107461139": "μg/J", - "Q107461146": "g/MJ", - "Q107538710": "μH/m", - "Q107538724": "nH/m", - "Q107970291": "mol/dm³", - "Q1084321": "Tb/s", - "Q1086691": "fg", - "Q108730765": "kW a", - "Q108888186": "eV/c²", - "Q108888198": "keV/c²", - "Q108888206": "MeV/c²", - "Q108888224": "GeV/c²", - "Q1091257": "tex", - "Q1092296": "a", - "Q110143852": "Ω cm", - "Q110143896": "cm³/g", - "Q1104069": "$", - "Q11061003": "μm²", - "Q11061005": "nm²", - "Q110742003": "dppx", - "Q1131660": "st", - "Q1137675": "cr", - "Q114002440": "𒄀", - "Q114002534": "𒃻", - "Q114002639": "𒈨𒊑", - "Q114002796": "𒂆", - "Q114002930": "𒀺", - "Q114002955": "𒀹𒃷", - "Q114002974": "𒃷", - "Q1140444": "Zb", - "Q1140577": "Yb", - "Q114589269": "Ѧ", - "Q1152074": "Pb", - "Q1152323": "Tb", - "Q115277430": "QB", - "Q115280832": "RB", - "Q115359862": "qg", - "Q115359863": "rg", - "Q115359865": "Rg", - "Q115359866": "Qg", - "Q115359910": "Rm", - "Q115533751": "rm", - "Q115533764": "qm", - "Q115533776": "Qm", - "Q116432446": "ᵐ", - "Q116432563": "ˢ", - "Q116443090": "ʰ", - "Q1165799": "mil", - "Q116939356": "Qs", - "Q11776930": "Mg", - "Q11830636": "psf", - "Q11929860": "kpc", - "Q1194225": "lbf", - "Q1194580": "Mib", - "Q1195111": "Eb", - "Q1196837": "ω_P", - "Q1197459": "Ms", - "Q11982285": "Em³", - "Q11982288": "Zm³", - "Q11982289": "Tm³", - "Q12011178": "Zs", - "Q12034595": "oz (ap.)", - "Q1204894": "Gib", - "Q121960323": "m/m", - "Q121965382": "mol/mol", - "Q121981098": "m²/m²", - "Q12257695": "Eb/s", - "Q12257696": "EB/s", - "Q12261466": "kB/s", - "Q12263659": "mgal", - "Q12265780": "Pb/s", - "Q12265783": "PB/s", - "Q12269121": "Yb/s", - "Q12269122": "YB/s", - "Q12269308": "Zb/s", - "Q12269309": "ZB/s", - "Q122972375": "Rs", - "Q1238720": "vols.", - "Q1247300": "cm H₂O", - "Q12714022": "cwt", - "Q12789864": "GeV", - "Q12874593": "W h", - "Q128822": "kn", - "Q13035094": "J/mol", - "Q130964": "cal", - "Q131255": "F", - "Q13147228": "g/cm³", - "Q131723": "₿", - "Q1322380": "Ts", - "Q1323615": "oz t", - "Q132643": "kr", - "Q13400897": "g", - "Q13479685": "mm H2O", - "Q1351253": "Eib", - "Q1351334": "Pib", - "Q13542672": "Ry", - "Q13548586": "THz", - "Q13582667": "kgf/cm²", - "Q1361854": "dwt", - "Q1363007": "slug", - "Q1374438": "ks", - "Q13753469": "MB/s", - "Q1377051": "Gs", - "Q1394540": "bm", - "Q1396128": "F", - "Q1413142": "Gb", - "Q14158377": "A_P", - "Q1427899": "U", - "Q14623803": "MDa", - "Q14623804": "kDa", - "Q1472674": "S", - "Q14754979": "Zg", - "Q14786969": "MJ", - "Q14850704": "℧", - "Q14913554": "Ys", - "Q14914907": "th", - "Q14916719": "Gpc", - "Q14923662": "Pm³", - "Q15120301": "l atm", - "Q1542309": "xu", - "Q1545979": "ft³", - "Q1550511": "yd²", - "Q15551713": "Sh", - "Q1569733": "St", - "Q15784325": "apc", - "Q160857": "hp", - "Q162525": "°E", - "Q1628990": "hph", - "Q163343": "T", - "Q163354": "H", - "Q1640501": "hyl", - "Q1645498": "μg", - "Q16859309": "lb ft", - "Q169893": "S", - "Q170804": "Wb", - "Q17093295": "m/h", - "Q17143051": "Tf", - "Q17255465": "v_P", - "Q173117": "R$", - "Q1741429": "kpm", - "Q174728": "cm", - "Q174789": "mm", - "Q175821": "μm", - "Q1768929": "p", - "Q1770733": "Tg", - "Q1772386": "dg", - "Q177493": "G", - "Q177612": "sr", - "Q1777507": "fs", - "Q177974": "atm", - "Q178506": "bbl", - "Q178674": "nm", - "Q1790908": "mi3", - "Q1793863": "sn", - "Q179836": "lx", - "Q180154": "km/h", - "Q180892": "M☉", - "Q1815100": "cl", - "Q182098": "kWh", - "Q1823150": "μW", - "Q182429": "m/s", - "Q1826195": "dl", - "Q18413919": "cm/s", - "Q185078": "a", - "Q185153": "erg", - "Q185648": "Torr", - "Q185759": "span", - "Q1872619": "zs", - "Q190095": "Gy", - "Q19017495": "mm²", - "Q190951": "S$", - "Q191118": "t", - "Q1913097": "fg", - "Q1916026": "μV", - "Q192027": "Bd", - "Q192274": "pm", - "Q193098": "KD", - "Q1935515": "mA s", - "Q19392152": "TL", - "Q193933": "dpt", - "Q194339": "B$", - "Q1970718": "mam", - "Q1972579": "pdl", - "Q19877834": "cd-ft", - "Q199462": "LE", - "Q199471": "Afs", - "Q200323": "dm", - "Q200337": "Kz", - "Q201880": "LL", - "Q201933": "dyn", - "Q2029156": "quad", - "Q2029519": "hl", - "Q203567": "₦", - "Q2042279": "m H₂O", - "Q2051195": "GWh", - "Q2055118": "ppb", - "Q2064166": "fc", - "Q206600": "MRF", - "Q20706220": "cmm", - "Q20706221": "dmm", - "Q2080811": "vol%", - "Q208526": "NT$", - "Q208528": "gon", - "Q208634": "kat", - "Q208788": "fm", - "Q2090348": "Kib/s", - "Q209351": "b", - "Q209426": "′", - "Q21006887": "ppm", - "Q2100949": "P", - "Q21014455": "m/min", - "Q210472": "B/.", - "Q21061369": "g/kg", - "Q21062777": "MPa", - "Q21064807": "kPa", - "Q21075844": "ml/l", - "Q21077820": "mg/m³", - "Q21091747": "mg/kg", - "Q211256": "mi/h", - "Q21154419": "PD", - "Q211580": "BTU (th)", - "Q212120": "A⋅h", - "Q213005": "G$", - "Q2140397": "in³", - "Q214377": "ell", - "Q2143992": "kHz", - "Q21489891": "nm³", - "Q21489892": "Gm³", - "Q21489893": "Mm³", - "Q21489894": "μm³", - "Q21500224": "mas", - "Q2151240": "mag", - "Q215571": "N m", - "Q21604951": "g/m³", - "Q2165290": "yd³", - "Q216880": "kgf", - "Q217208": "a", - "Q2175964": "dm³", - "Q218593": "in", - "Q2199357": "dec", - "Q22137107": "mas/y", - "Q2215478": "ppt", - "Q2221356": "mW h", - "Q22350885": "da", - "Q2243141": "Gb/s", - "Q2254856": "ca", - "Q22673229": "ft/min", - "Q2269250": "kb/s", - "Q2282891": "μl", - "Q2282906": "ng", - "Q22934083": "nC", - "Q229354": "Ci", - "Q232291": "mi²", - "Q2332346": "ml", - "Q235729": "y (365 days)", - "Q23823681": "TW", - "Q23925410": "gal (UK)", - "Q23925413": "gal (US)", - "Q23931040": "dam²", - "Q23931103": "nmi²", - "Q240468": "syr£", - "Q242988": "Lib$", - "Q2438073": "ag", - "Q2448803": "mV", - "Q2451296": "μF", - "Q246868": "lot", - "Q2474258": "mSv", - "Q2478223": "r", - "Q2483628": "as", - "Q2489298": "cm²", - "Q249439": "q_P", - "Q2518569": "nSv", - "Q253276": "mi", - "Q254532": "deg²", - "Q25472681": "GB/s", - "Q25472693": "TB/s", - "Q25499149": "oct", - "Q25511288": "mb", - "Q2553708": "MV", - "Q2554092": "kV", - "Q259502": "A$", - "Q260126": "rem", - "Q2612219": "Pg", - "Q261247": "ct", - "Q26162546": "mm²/s", - "Q2619500": "foe", - "Q2636421": "nH", - "Q2637946": "dal", - "Q2642547": "ha", - "Q2652700": "Osm", - "Q2655272": "Eg", - "Q2659078": "TW h", - "Q2670039": "₶", - "Q26708069": "kcal", - "Q267391": "K", - "Q2679083": "μH", - "Q2682463": "nF", - "Q2691798": "cg", - "Q271206": "sud£", - "Q2737347": "mm²", - "Q2739114": "μSv", - "Q275112": "Bz$", - "Q2756030": "pF", - "Q2757753": "PW h", - "Q2762458": "ys", - "Q2784622": "T", - "Q27864215": "μW h", - "Q2793566": "GV", - "Q27949241": "R", - "Q2799294": "Gg", - "Q281096": "cd/m²", - "Q28719934": "keV", - "Q28924752": "g/mol", - "Q28924753": "kg/mol", - "Q2924137": "mH", - "Q296936": "toe", - "Q29924639": "kVA", - "Q30001811": "aBq", - "Q30001813": "aC", - "Q30001814": "aHz", - "Q30001815": "aJ", - "Q30001816": "akat", - "Q30001818": "aL", - "Q30001819": "alm", - "Q30001820": "alx", - "Q30001822": "aN", - "Q30001823": "aΩ", - "Q30001825": "aPa", - "Q30001826": "arad", - "Q30001827": "aS", - "Q30001828": "aSv", - "Q30001829": "asr", - "Q30001830": "aT", - "Q30001831": "aV", - "Q30001832": "aW", - "Q30001833": "aWb", - "Q3013059": "ka", - "Q304479": "tr", - "Q305896": "DPI", - "Q3095010": "γ", - "Q31889818": "ppq", - "Q3194304": "kb", - "Q3207456": "mW", - "Q321017": "R", - "Q3221356": "ym", - "Q3239557": "pg", - "Q3241121": "mg", - "Q324923": "Hart", - "Q3249364": "cs", - "Q3251645": "ds", - "Q3267417": "Tm", - "Q3270676": "zm", - "Q32750621": "liq pt (US)", - "Q32750759": "fl oz (US)", - "Q32750816": "bu (US)", - "Q32751272": "dry pt (US)", - "Q32751296": "bbl (US)", - "Q3276763": "GHz", - "Q3277907": "Em", - "Q3277915": "Zm", - "Q3277919": "Pm", - "Q3312063": "fL", - "Q3320608": "kW", - "Q3331719": "dma", - "Q3332689": "RT", - "Q3332814": "Mb", - "Q3396758": "daa", - "Q3414243": "qps", - "Q3421309": "R_J", - "Q3495543": "mbar", - "Q355198": "px", - "Q3674704": "km/s", - "Q3675550": "mm³", - "Q3712659": "$", - "Q376660": "nat", - "Q37732658": "°R", - "Q3773454": "Mpc", - "Q3815076": "Kib", - "Q3833309": "£", - "Q3858002": "mA⋅h", - "Q3867152": "ft/s²", - "Q389062": "Tib", - "Q3902688": "pl", - "Q3902709": "ps", - "Q39360235": "US lea", - "Q39360471": "nl", - "Q39362962": "µin", - "Q39363132": "UK lg", - "Q39363209": "UK nl", - "Q39380159": "US nmi", - "Q39462789": "µin²", - "Q39467934": "kgf/m²", - "Q39469927": "N/m²", - "Q39617688": "cwt", - "Q39617818": "t lb", - "Q39628023": "y", - "Q39699418": "cm/s²", - "Q39708248": "S", - "Q39709980": "bd", - "Q39710113": "bhp EDR", - "Q3972226": "kL", - "Q4041686": "in H20", - "Q4068266": "Ʒ", - "Q4176683": "aC", - "Q42319606": "people/m²", - "Q4243638": "km³", - "Q4456994": "mF", - "Q469356": "T", - "Q476572": "Ha", - "Q482798": "yd", - "Q483261": "Da", - "Q483725": "A.M.", - "Q484092": "lm", - "Q4861171": "H", - "Q494083": "fur", - "Q4989854": "kJ", - "Q4992853": "kt", - "Q500515": "Gal", - "Q5042194": "L.T.", - "Q50808017": "kg m²", - "Q5139563": "hPa", - "Q514845": "pz", - "Q5195628": "hm³", - "Q5198770": "dam³", - "Q524410": "Ga", - "Q5299480": "DPCm", - "Q53393488": "PHz", - "Q53393490": "EHz", - "Q53393494": "ZHz", - "Q53393498": "YHz", - "Q53393659": "ML", - "Q53393664": "GL", - "Q53393669": "El", - "Q53393674": "ZL", - "Q53393678": "YL", - "Q53393768": "zl", - "Q53393771": "yL", - "Q53393868": "GJ", - "Q53393886": "PJ", - "Q53393890": "EJ", - "Q53393893": "ZJ", - "Q53393898": "YJ", - "Q53448786": "yHz", - "Q53448790": "zHz", - "Q53448794": "fHz", - "Q53448797": "pHz", - "Q53448801": "nHz", - "Q53448806": "μHz", - "Q53448808": "mHz", - "Q53448813": "cHz", - "Q53448817": "dHz", - "Q53448820": "daHz", - "Q53448826": "hHz", - "Q53448828": "yJ", - "Q53448832": "zJ", - "Q53448835": "fJ", - "Q53448842": "pJ", - "Q53448844": "nJ", - "Q53448847": "μJ", - "Q53448851": "mJ", - "Q53448856": "cJ", - "Q53448860": "dJ", - "Q53448864": "daJ", - "Q53448875": "hJ", - "Q53448879": "yPa", - "Q53448883": "zPa", - "Q53448886": "fPa", - "Q53448892": "pPa", - "Q53448897": "nPa", - "Q53448900": "μPa", - "Q53448906": "mPa", - "Q53448909": "cPa", - "Q53448914": "dPa", - "Q53448918": "daPa", - "Q53448922": "GPa", - "Q53448927": "TPa", - "Q53448931": "PPa", - "Q53448936": "EPa", - "Q53448939": "ZPa", - "Q53448943": "YPa", - "Q53448949": "yV", - "Q53448952": "zV", - "Q53448957": "fV", - "Q53448960": "pV", - "Q53448965": "nV", - "Q53448969": "cV", - "Q53448973": "dV", - "Q53448977": "daV", - "Q53448981": "hV", - "Q53448985": "TV", - "Q53448990": "PV", - "Q53448994": "EV", - "Q53448996": "ZV", - "Q53449001": "YV", - "Q53449006": "yW", - "Q53449008": "zW", - "Q53449013": "fW", - "Q53449018": "pW", - "Q53449021": "nW", - "Q53449025": "cW", - "Q53449029": "dW", - "Q53449033": "daW", - "Q53449036": "hW", - "Q53449040": "PW", - "Q53449045": "EW", - "Q53449049": "ZW", - "Q53449054": "YW", - "Q53561461": "wf", - "Q53561822": "wf", - "Q53651160": "zm³", - "Q53651201": "Ym³", - "Q53651356": "ym³", - "Q53651512": "pm³", - "Q53651713": "fm³", - "Q536785": "ρ_P", - "Q53951982": "Mt", - "Q53952048": "kt", - "Q54006645": "ZWb", - "Q54081354": "ZT", - "Q54081925": "ZSv", - "Q54082468": "ZS", - "Q54083144": "ZΩ", - "Q54083318": "ZN", - "Q54083566": "Zlm", - "Q54083579": "Zlx", - "Q54083712": "ZBq", - "Q54083746": "ZC", - "Q54083766": "ZF", - "Q54083779": "ZGy", - "Q54083795": "ZH", - "Q54083813": "Zkat", - "Q5409016": "MVA", - "Q5465723": "ft-pdl", - "Q549389": "b/s", - "Q550341": "V A", - "Q552299": "ch", - "Q55442349": "U/L", - "Q55726194": "mg/L", - "Q56156859": "mmol", - "Q56156949": "μmol", - "Q56157046": "nmol", - "Q56157048": "pmol", - "Q56160603": "fmol", - "Q56317622": "Q_P", - "Q56318907": "kbar", - "Q56349362": "Bs.S", - "Q56402798": "kN", - "Q5711261": "am³", - "Q581432": "‴", - "Q5879479": "GW", - "Q6003257": "am", - "Q6009164": "MW h", - "Q6014364": "in/s", - "Q603071": "E°", - "Q605704": "doz", - "Q60742631": "AU/yr", - "Q608697": "Mx", - "Q610135": "G", - "Q613726": "Yg", - "Q6170164": "yg", - "Q6171168": "zg", - "Q61756607": "yd", - "Q61771602": "ft", - "Q61771670": "in", - "Q61793198": "rd", - "Q61794766": "ch (US survey)", - "Q61994988": "Wth", - "Q61995006": "KWth", - "Q626299": "psi", - "Q630369": "var", - "Q636200": "U", - "Q640907": "sb", - "Q6414556": "kip", - "Q648908": "bya", - "Q64996135": "gal (US)/min", - "Q65028392": "mm/a", - "Q651336": "M_J", - "Q6517513": "dag", - "Q667419": "UK t", - "Q681996": "M🜨", - "Q685662": "p_P", - "Q686163": "$", - "Q68725821": "°Rø", - "Q68726230": "°De", - "Q68726625": "°N", - "Q69362731": "°C", - "Q69363953": "K", - "Q693944": "gr", - "Q6982035": "MW", - "Q69878540": "fl oz (UK)", - "Q70378044": "dmol", - "Q70378549": "dK", - "Q70393458": "kmol", - "Q70395375": "Tmol", - "Q70395643": "Mmol", - "Q70395830": "kK", - "Q70396179": "mK", - "Q70397275": "μK", - "Q70397725": "cmol", - "Q70397932": "cK", - "Q70398457": "nK", - "Q70398619": "MK", - "Q70398813": "Gmol", - "Q70398991": "GK", - "Q70440025": "daK", - "Q70440438": "hK", - "Q70440620": "damol", - "Q70440823": "hmol", - "Q70443020": "EK", - "Q70443154": "yK", - "Q70443282": "zK", - "Q70443367": "fK", - "Q70443453": "TK", - "Q70443757": "pK", - "Q70443901": "YK", - "Q70444029": "PK", - "Q70444141": "Emol", - "Q70444284": "ymol", - "Q70444386": "zmol", - "Q70444514": "Ymol", - "Q70444609": "Pmol", - "Q712226": "km²", - "Q72081071": "MeV", - "Q723733": "ms", - "Q730251": "ft·lbf", - "Q732707": "MHz", - "Q73408": "K", - "Q7350781": "Mb/s", - "Q7398951": "PPI", - "Q743895": "bpm", - "Q748716": "fps", - "Q752197": "kJ/mol", - "Q7574000": "sp", - "Q7672057": "TU", - "Q777017": "dBm", - "Q780456": "Td", - "Q78754556": "rot", - "Q78757683": "windings", - "Q79726": "kB", - "Q79735": "MB", - "Q79738": "GB", - "Q79741": "TB", - "Q79744": "PB", - "Q79745": "EB", - "Q79747": "ZB", - "Q7974920": "W s", - "Q79752": "YB", - "Q79756": "KiB", - "Q79758": "MiB", - "Q79765": "GiB", - "Q79769": "TiB", - "Q79774": "PiB", - "Q79777": "EiB", - "Q79779": "ZiB", - "Q79781": "YiB", - "Q80237579": "J/nm", - "Q809678": "Ba", - "Q81062869": "W/nm", - "Q81073100": "W/(sr nm)", - "Q81292": "acre", - "Q81454": "Å", - "Q8229770": "B/s", - "Q828224": "km", - "Q829073": "\"", - "Q83216": "cd", - "Q83327": "eV", - "Q834105": "g/L", - "Q835916": "IU", - "Q838801": "ns", - "Q842015": "μs", - "Q842981": "thm (US)", - "Q844211": "kg/m³", - "Q844338": "hm", - "Q844976": "Oe", - "Q845958": "¥", - "Q848856": "dam", - "Q851872": "o", - "Q854546": "Gm", - "Q855161": "Yib", - "Q856240": "ft³/min", - "Q857027": "ft²", - "Q85854198": "MN", - "Q87262709": "kΩ", - "Q87416053": "MΩ", - "Q88296091": "tsp", - "Q89187604": "bbl (US)", - "Q89473028": "bu (UK)", - "Q89662131": "pt (UK)", - "Q901492": "ph", - "Q902274": "cp", - "Q9026416": "MWth", - "Q9048643": "nl", - "Q905912": "L", - "Q906223": "Es", - "Q909066": "at", - "Q911730": "nx", - "Q914151": "P_P", - "Q915169": "F_P", - "Q918094": "g", - "Q93318": "M", - "Q933427": "B", - "Q93678895": "gill (US)", - "Q93679498": "gill (UK)", - "Q94076025": "dalm", - "Q94076717": "dakat", - "Q942092": "BWI$", - "Q94414053": "Prad", - "Q94414499": "PC", - "Q94415026": "Grad", - "Q94415255": "GC", - "Q94415438": "Yrad", - "Q94415526": "YC", - "Q94415561": "krad", - "Q94415782": "Mrad", - "Q94416260": "GN", - "Q94416535": "cN", - "Q94416879": "YN", - "Q94417138": "PN", - "Q94417481": "μGy", - "Q94417583": "μS", - "Q94417598": "μT", - "Q94417933": "μlm", - "Q94418102": "μN", - "Q94418220": "μsr", - "Q94418481": "μBq", - "Q94479580": "GΩ", - "Q94480021": "PΩ", - "Q94480081": "YΩ", - "Q94480128": "cΩ", - "Q94480131": "TΩ", - "Q94480136": "pΩ", - "Q94480254": "nΩ", - "Q94480476": "dΩ", - "Q94480633": "EΩ", - "Q94480967": "daΩ", - "Q94481176": "hΩ", - "Q94481339": "fΩ", - "Q94481646": "yΩ", - "Q94487174": "zΩ", - "Q94487366": "mΩ", - "Q94487561": "μΩ", - "Q94487750": "kGy", - "Q94488007": "klx", - "Q94488361": "MF", - "Q94488759": "GBq", - "Q94489041": "PBq", - "Q94489223": "YBq", - "Q94489429": "MBq", - "Q94489465": "kBq", - "Q94489476": "TBq", - "Q94489494": "kWb", - "Q94489520": "kS", - "Q94490951": "klm", - "Q94491129": "kkat", - "Q94634634": "cC", - "Q94634655": "MC", - "Q94634666": "kC", - "Q94634677": "TC", - "Q94634684": "μC", - "Q94634699": "mC", - "Q94693759": "csr", - "Q94693773": "msr", - "Q94693786": "mWb", - "Q94693805": "μWb", - "Q94693819": "GS", - "Q94693849": "cS", - "Q94693918": "MS", - "Q94694019": "TS", - "Q94694096": "pS", - "Q94694154": "nS", - "Q94694206": "mS", - "Q94731530": "mlm", - "Q94731808": "mkat", - "Q94731887": "μkat", - "Q94732218": "nkat", - "Q94732627": "pkat", - "Q94733432": "fkat", - "Q94733760": "cGy", - "Q94734107": "dGy", - "Q94734232": "mGy", - "Q94734359": "daGy", - "Q94734468": "aGy", - "Q94734527": "pGy", - "Q94734593": "nGy", - "Q94734689": "kT", - "Q94734788": "mT", - "Q94939947": "Gkat", - "Q94940018": "Pkat", - "Q94940081": "ykat", - "Q94940160": "dkat", - "Q94940232": "Ekat", - "Q94940295": "Ykat", - "Q94940582": "Tkat", - "Q94940892": "hkat", - "Q94941461": "zkat", - "Q94942602": "MGy", - "Q94942863": "GGy", - "Q94986863": "YWb", - "Q94986889": "PWb", - "Q94986906": "cWb", - "Q94986920": "GWb", - "Q94986942": "MWb", - "Q94986962": "TWb", - "Q95178536": "Mlm", - "Q95178777": "Tlm", - "Q95178881": "clm", - "Q95179024": "plm", - "Q95179137": "nlm", - "Q95179382": "hlm", - "Q95179467": "flm", - "Q95179608": "zlm", - "Q95179695": "Mkat", - "Q95179788": "ckat", - "Q95179882": "PGy", - "Q95377836": "PF", - "Q95377853": "YF", - "Q95378017": "kF", - "Q95378296": "TF", - "Q95379145": "cF", - "Q95379382": "GF", - "Q95379491": "daC", - "Q95379580": "hC", - "Q95379588": "dC", - "Q95379596": "EC", - "Q95446327": "pC", - "Q95446670": "fC", - "Q95447079": "zC", - "Q95447237": "yC", - "Q95447253": "fF", - "Q95447263": "zF", - "Q95447276": "aF", - "Q95447555": "dF", - "Q95447863": "EF", - "Q95448262": "yF", - "Q95448479": "hF", - "Q95448689": "daF", - "Q95448950": "kSv", - "Q95559229": "GSv", - "Q95559368": "YSv", - "Q95559441": "MSv", - "Q95559576": "TSv", - "Q95559603": "PSv", - "Q95609154": "nWb", - "Q95609210": "fWb", - "Q95609261": "zWb", - "Q95609291": "dWb", - "Q95609317": "EWb", - "Q95676212": "pWb", - "Q95676232": "yWb", - "Q95676243": "hWb", - "Q95676250": "daWb", - "Q95676257": "PS", - "Q95676260": "YS", - "Q95676273": "zS", - "Q95676275": "fS", - "Q95676279": "yS", - "Q95676287": "hS", - "Q95676291": "daS", - "Q95676297": "dS", - "Q95676298": "ES", - "Q95720731": "YGy", - "Q95720734": "TGy", - "Q95720736": "fGy", - "Q95720739": "yGy", - "Q95720741": "zGy", - "Q95720742": "EGy", - "Q95720746": "hGy", - "Q95720749": "mlx", - "Q95720758": "μlx", - "Q95720773": "dalx", - "Q95720777": "hlx", - "Q95720781": "dlx", - "Q95720786": "clx", - "Q95857671": "zSv", - "Q95859071": "fSv", - "Q95860960": "daSv", - "Q95861107": "hSv", - "Q95861296": "dSv", - "Q95862182": "ESv", - "Q95863358": "cSv", - "Q95863591": "ySv", - "Q95863894": "pSv", - "Q95864194": "zBq", - "Q95864378": "fBq", - "Q95864695": "daBq", - "Q95864940": "hBq", - "Q95865286": "dBq", - "Q95865530": "EBq", - "Q95865716": "cBq", - "Q95865877": "yBq", - "Q95866173": "pBq", - "Q95866344": "nBq", - "Q95866767": "mBq", - "Q95867993": "mN", - "Q95948345": "crad", - "Q95948364": "drad", - "Q95948734": "daN", - "Q95948739": "hN", - "Q95948747": "dN", - "Q95976839": "Plm", - "Q95976853": "Glm", - "Q95976869": "Ylm", - "Q95976889": "ylm", - "Q95976917": "dlm", - "Q95976919": "Elm", - "Q95976921": "nT", - "Q95993516": "TN", - "Q95993522": "nN", - "Q95993524": "fN", - "Q95993526": "yN", - "Q95993528": "zN", - "Q95993530": "EN", - "Q95993532": "pN", - "Q95993537": "μrad", - "Q95993542": "nrad", - "Q95993547": "frad", - "Q95993553": "prad", - "Q95993554": "darad", - "Q95993557": "hrad", - "Q95993619": "pT", - "Q96025401": "daT", - "Q96025405": "Trad", - "Q96025407": "Zrad", - "Q96025409": "zrad", - "Q96025413": "yrad", - "Q96025414": "Erad", - "Q96025419": "Ylx", - "Q96025422": "Glx", - "Q96025427": "Plx", - "Q96025431": "Mlx", - "Q96025433": "Tlx", - "Q96025435": "nlx", - "Q96025441": "flx", - "Q96050953": "GH", - "Q96051010": "PH", - "Q96051029": "YH", - "Q96051052": "cH", - "Q96051074": "TH", - "Q96051106": "MH", - "Q96051123": "kH", - "Q96051126": "fH", - "Q96051133": "yH", - "Q96051139": "hH", - "Q96051142": "dH", - "Q96051144": "EH", - "Q96051150": "pH", - "Q96051160": "daH", - "Q96051186": "zH", - "Q96051199": "aH", - "Q96051245": "ylx", - "Q96051267": "Elx", - "Q96051282": "plx", - "Q96051312": "zlx", - "Q96070067": "PT", - "Q96070074": "YT", - "Q96070076": "GT", - "Q96070087": "cT", - "Q96070103": "MT", - "Q96070125": "hT", - "Q96070145": "fT", - "Q96070174": "TT", - "Q96070195": "zT", - "Q96070247": "yT", - "Q96070254": "dT", - "Q96070264": "ET", - "Q96070276": "m°C", - "Q96070318": "dsr", - "Q96070329": "nsr", - "Q96070341": "psr", - "Q96095866": "fsr", - "Q96095897": "zsr", - "Q96095917": "ysr", - "Q96095927": "dasr", - "Q96095928": "hsr", - "Q96095931": "ksr", - "Q96095933": "Msr", - "Q96095939": "Gsr", - "Q96095941": "μ°C", - "Q96095955": "n°C", - "Q96095960": "k°C", - "Q96106290": "Tsr", - "Q96106298": "Psr", - "Q96106311": "Esr", - "Q96106319": "Zsr", - "Q96106332": "Ysr", - "Q96106346": "c°C", - "Q96106360": "d°C", - "Q96106368": "da°C", - "Q96106385": "h°C", - "Q96106393": "M°C", - "Q96236286": "G°C", - "Q96312779": "μas", - "Q97059641": "p°C", - "Q97059652": "T°C", - "Q97143826": "P°C", - "Q97143831": "y°C", - "Q97143835": "f°C", - "Q97143838": "Z°C", - "Q97143842": "E°C", - "Q97143843": "z°C", - "Q97143849": "Y°C", - "Q97143851": "a°C", - "Q98492214": "den", - "Q98793302": "qt (UK)", - "Q98793408": "liq qt (US)", - "Q98793687": "dry qt (US)", - "Q99476928": "gf", - "Q99487704": "ppt", - "Q99490009": "BTU (IT)", - "Q99490479": "BTU (39 °F)", - "Q99490986": "BTU (59 °F)", - "Q99491193": "BTU (60 °F)", - "Q99491447": "BTU (mean)", - "Q99492167": "m Hg", - "Q11229": "%", - "Q11570": "kg", - "Q11573": "m", - "Q11574": "s", - "Q11579": "K", - "Q11582": "L", - "Q12129": "pc", - "Q12438": "N", - "Q1811": "AU", - "Q20764": "Ma", - "Q2101": "e", - "Q25235": "h", - "Q25236": "W", - "Q25250": "V", - "Q25267": "°C", - "Q25269": "J", - "Q25272": "A", - "Q25343": "m²", - "Q25406": "C", - "Q25517": "m³", - "Q33680": "rad", - "Q35852": "ha", - "Q36384": "Eq", - "Q3710": "ft", - "Q39274": "Sv", - "Q39369": "Hz", - "Q41509": "mol", - "Q41803": "g", - "Q42289": "°F", - "Q4406": "$T", - "Q44395": "Pa", - "Q4588": "WS$", - "Q4592": "F$", - "Q4596": "Rs", - "Q4597": "$", - "Q47083": "Ω", - "Q48013": "oz", - "Q4917": "US$", - "Q50094": "Np", - "Q50098": "B", - "Q531": "l.y.", - "Q5329": "dB", - "Q573": "d", - "Q577": "a", - "Q7727": "min", - "Q8799": "B", - "Q8805": "bit" -} \ No newline at end of file diff --git a/searx/enginelib/__init__.py b/searx/enginelib/__init__.py deleted file mode 100644 index 263ebd23c..000000000 --- a/searx/enginelib/__init__.py +++ /dev/null @@ -1,145 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Implementations of the framework for the SearXNG engines. - -.. hint:: - - The long term goal is to modularize all implementations of the engine - framework here in this Python package. ToDo: - - - move implementations of the :ref:`searx.engines loader` to a new module in - the :py:obj:`searx.enginelib` namespace. - -""" - - -from __future__ import annotations -from typing import List, Callable, TYPE_CHECKING - -if TYPE_CHECKING: - from searx.enginelib import traits - - -class Engine: # pylint: disable=too-few-public-methods - """Class of engine instances build from YAML settings. - - Further documentation see :ref:`general engine configuration`. - - .. hint:: - - This class is currently never initialized and only used for type hinting. - """ - - # Common options in the engine module - - engine_type: str - """Type of the engine (:ref:`searx.search.processors`)""" - - paging: bool - """Engine supports multiple pages.""" - - time_range_support: bool - """Engine supports search time range.""" - - safesearch: bool - """Engine supports SafeSearch""" - - language_support: bool - """Engine supports languages (locales) search.""" - - language: str - """For an engine, when there is ``language: ...`` in the YAML settings the engine - does support only this one language: - - .. code:: yaml - - - name: google french - engine: google - language: fr - """ - - region: str - """For an engine, when there is ``region: ...`` in the YAML settings the engine - does support only this one region:: - - .. code:: yaml - - - name: google belgium - engine: google - region: fr-BE - """ - - fetch_traits: Callable - """Function to to fetch engine's traits from origin.""" - - traits: traits.EngineTraits - """Traits of the engine.""" - - # settings.yml - - categories: List[str] - """Specifies to which :ref:`engine categories` the engine should be added.""" - - name: str - """Name that will be used across SearXNG to define this engine. In settings, on - the result page ..""" - - engine: str - """Name of the python file used to handle requests and responses to and from - this search engine (file name from :origin:`searx/engines` without - ``.py``).""" - - enable_http: bool - """Enable HTTP (by default only HTTPS is enabled).""" - - shortcut: str - """Code used to execute bang requests (``!foo``)""" - - timeout: float - """Specific timeout for search-engine.""" - - display_error_messages: bool - """Display error messages on the web UI.""" - - proxies: dict - """Set proxies for a specific engine (YAML): - - .. code:: yaml - - proxies : - http: socks5://proxy:port - https: socks5://proxy:port - """ - - disabled: bool - """To disable by default the engine, but not deleting it. It will allow the - user to manually activate it in the settings.""" - - inactive: bool - """Remove the engine from the settings (*disabled & removed*).""" - - about: dict - """Additional fields describing the engine. - - .. code:: yaml - - about: - website: https://example.com - wikidata_id: Q306656 - official_api_documentation: https://example.com/api-doc - use_official_api: true - require_api_key: true - results: HTML - """ - - using_tor_proxy: bool - """Using tor proxy (``true``) or not (``false``) for this engine.""" - - send_accept_language_header: bool - """When this option is activated, the language (locale) that is selected by - the user is used to build and send a ``Accept-Language`` header in the - request to the origin search engine.""" - - tokens: List[str] - """A list of secret tokens to make this engine *private*, more details see - :ref:`private engines`.""" diff --git a/searx/enginelib/traits.py b/searx/enginelib/traits.py deleted file mode 100644 index 6402fde22..000000000 --- a/searx/enginelib/traits.py +++ /dev/null @@ -1,252 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Engine's traits are fetched from the origin engines and stored in a JSON file -in the *data folder*. Most often traits are languages and region codes and -their mapping from SearXNG's representation to the representation in the origin -search engine. For new traits new properties can be added to the class -:py:class:`EngineTraits`. - -To load traits from the persistence :py:obj:`EngineTraitsMap.from_data` can be -used. -""" - -from __future__ import annotations -import json -import dataclasses -import types -from typing import Dict, Iterable, Union, Callable, Optional, TYPE_CHECKING -from typing_extensions import Literal, Self - -from searx import locales -from searx.data import data_dir, ENGINE_TRAITS - -if TYPE_CHECKING: - from . import Engine - - -class EngineTraitsEncoder(json.JSONEncoder): - """Encodes :class:`EngineTraits` to a serializable object, see - :class:`json.JSONEncoder`.""" - - def default(self, o): - """Return dictionary of a :class:`EngineTraits` object.""" - if isinstance(o, EngineTraits): - return o.__dict__ - return super().default(o) - - -@dataclasses.dataclass -class EngineTraits: - """The class is intended to be instantiated for each engine.""" - - regions: Dict[str, str] = dataclasses.field(default_factory=dict) - """Maps SearXNG's internal representation of a region to the one of the engine. - - SearXNG's internal representation can be parsed by babel and the value is - send to the engine: - - .. code:: python - - regions ={ - 'fr-BE' : , - } - - for key, egnine_region regions.items(): - searxng_region = babel.Locale.parse(key, sep='-') - ... - """ - - languages: Dict[str, str] = dataclasses.field(default_factory=dict) - """Maps SearXNG's internal representation of a language to the one of the engine. - - SearXNG's internal representation can be parsed by babel and the value is - send to the engine: - - .. code:: python - - languages = { - 'ca' : , - } - - for key, egnine_lang in languages.items(): - searxng_lang = babel.Locale.parse(key) - ... - """ - - all_locale: Optional[str] = None - """To which locale value SearXNG's ``all`` language is mapped (shown a "Default - language"). - """ - - data_type: Literal['traits_v1'] = 'traits_v1' - """Data type, default is 'traits_v1'. - """ - - custom: Dict[str, Union[Dict[str, Dict], Iterable[str]]] = dataclasses.field(default_factory=dict) - """A place to store engine's custom traits, not related to the SearXNG core. - """ - - def get_language(self, searxng_locale: str, default=None): - """Return engine's language string that *best fits* to SearXNG's locale. - - :param searxng_locale: SearXNG's internal representation of locale - selected by the user. - - :param default: engine's default language - - The *best fits* rules are implemented in - :py:obj:`searx.locales.get_engine_locale`. Except for the special value ``all`` - which is determined from :py:obj:`EngineTraits.all_locale`. - """ - if searxng_locale == 'all' and self.all_locale is not None: - return self.all_locale - return locales.get_engine_locale(searxng_locale, self.languages, default=default) - - def get_region(self, searxng_locale: str, default=None): - """Return engine's region string that best fits to SearXNG's locale. - - :param searxng_locale: SearXNG's internal representation of locale - selected by the user. - - :param default: engine's default region - - The *best fits* rules are implemented in - :py:obj:`searx.locales.get_engine_locale`. Except for the special value ``all`` - which is determined from :py:obj:`EngineTraits.all_locale`. - """ - if searxng_locale == 'all' and self.all_locale is not None: - return self.all_locale - return locales.get_engine_locale(searxng_locale, self.regions, default=default) - - def is_locale_supported(self, searxng_locale: str) -> bool: - """A *locale* (SearXNG's internal representation) is considered to be - supported by the engine if the *region* or the *language* is supported - by the engine. - - For verification the functions :py:func:`EngineTraits.get_region` and - :py:func:`EngineTraits.get_language` are used. - """ - if self.data_type == 'traits_v1': - return bool(self.get_region(searxng_locale) or self.get_language(searxng_locale)) - - raise TypeError('engine traits of type %s is unknown' % self.data_type) - - def copy(self): - """Create a copy of the dataclass object.""" - return EngineTraits(**dataclasses.asdict(self)) - - @classmethod - def fetch_traits(cls, engine: Engine) -> Union[Self, None]: - """Call a function ``fetch_traits(engine_traits)`` from engines namespace to fetch - and set properties from the origin engine in the object ``engine_traits``. If - function does not exists, ``None`` is returned. - """ - - fetch_traits = getattr(engine, 'fetch_traits', None) - engine_traits = None - - if fetch_traits: - engine_traits = cls() - fetch_traits(engine_traits) - return engine_traits - - def set_traits(self, engine: Engine): - """Set traits from self object in a :py:obj:`.Engine` namespace. - - :param engine: engine instance build by :py:func:`searx.engines.load_engine` - """ - - if self.data_type == 'traits_v1': - self._set_traits_v1(engine) - else: - raise TypeError('engine traits of type %s is unknown' % self.data_type) - - def _set_traits_v1(self, engine: Engine): - # For an engine, when there is `language: ...` in the YAML settings the engine - # does support only this one language (region):: - # - # - name: google italian - # engine: google - # language: it - # region: it-IT - - traits = self.copy() - - _msg = "settings.yml - engine: '%s' / %s: '%s' not supported" - - languages = traits.languages - if hasattr(engine, 'language'): - if engine.language not in languages: - raise ValueError(_msg % (engine.name, 'language', engine.language)) - traits.languages = {engine.language: languages[engine.language]} - - regions = traits.regions - if hasattr(engine, 'region'): - if engine.region not in regions: - raise ValueError(_msg % (engine.name, 'region', engine.region)) - traits.regions = {engine.region: regions[engine.region]} - - engine.language_support = bool(traits.languages or traits.regions) - - # set the copied & modified traits in engine's namespace - engine.traits = traits - - -class EngineTraitsMap(Dict[str, EngineTraits]): - """A python dictionary to map :class:`EngineTraits` by engine name.""" - - ENGINE_TRAITS_FILE = (data_dir / 'engine_traits.json').resolve() - """File with persistence of the :py:obj:`EngineTraitsMap`.""" - - def save_data(self): - """Store EngineTraitsMap in in file :py:obj:`self.ENGINE_TRAITS_FILE`""" - with open(self.ENGINE_TRAITS_FILE, 'w', encoding='utf-8') as f: - json.dump(self, f, indent=2, sort_keys=True, cls=EngineTraitsEncoder) - - @classmethod - def from_data(cls) -> Self: - """Instantiate :class:`EngineTraitsMap` object from :py:obj:`ENGINE_TRAITS`""" - obj = cls() - for k, v in ENGINE_TRAITS.items(): - obj[k] = EngineTraits(**v) - return obj - - @classmethod - def fetch_traits(cls, log: Callable) -> Self: - from searx import engines # pylint: disable=cyclic-import, import-outside-toplevel - - names = list(engines.engines) - names.sort() - obj = cls() - - for engine_name in names: - engine = engines.engines[engine_name] - - traits = EngineTraits.fetch_traits(engine) - if traits is not None: - log("%-20s: SearXNG languages --> %s " % (engine_name, len(traits.languages))) - log("%-20s: SearXNG regions --> %s" % (engine_name, len(traits.regions))) - obj[engine_name] = traits - - return obj - - def set_traits(self, engine: Engine | types.ModuleType): - """Set traits in a :py:obj:`Engine` namespace. - - :param engine: engine instance build by :py:func:`searx.engines.load_engine` - """ - - engine_traits = EngineTraits(data_type='traits_v1') - if engine.name in self.keys(): - engine_traits = self[engine.name] - - elif engine.engine in self.keys(): - # The key of the dictionary traits_map is the *engine name* - # configured in settings.xml. When multiple engines are configured - # in settings.yml to use the same origin engine (python module) - # these additional engines can use the languages from the origin - # engine. For this use the configured ``engine: ...`` from - # settings.yml - engine_traits = self[engine.engine] - - engine_traits.set_traits(engine) diff --git a/searx/engines/1337x.py b/searx/engines/1337x.py deleted file mode 100644 index 730a4c445..000000000 --- a/searx/engines/1337x.py +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - 1337x -""" - -from urllib.parse import quote, urljoin -from lxml import html -from searx.utils import extract_text, get_torrent_size, eval_xpath, eval_xpath_list, eval_xpath_getindex - -# about -about = { - "website": 'https://1337x.to/', - "wikidata_id": 'Q28134166', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -url = 'https://1337x.to/' -search_url = url + 'search/{search_term}/{pageno}/' -categories = ['files'] -paging = True - - -def request(query, params): - params['url'] = search_url.format(search_term=quote(query), pageno=params['pageno']) - - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - for result in eval_xpath_list(dom, '//table[contains(@class, "table-list")]/tbody//tr'): - href = urljoin(url, eval_xpath_getindex(result, './td[contains(@class, "name")]/a[2]/@href', 0)) - title = extract_text(eval_xpath(result, './td[contains(@class, "name")]/a[2]')) - seed = extract_text(eval_xpath(result, './/td[contains(@class, "seeds")]')) - leech = extract_text(eval_xpath(result, './/td[contains(@class, "leeches")]')) - filesize_info = extract_text(eval_xpath(result, './/td[contains(@class, "size")]/text()')) - filesize, filesize_multiplier = filesize_info.split() - filesize = get_torrent_size(filesize, filesize_multiplier) - - results.append( - { - 'url': href, - 'title': title, - 'seed': seed, - 'leech': leech, - 'filesize': filesize, - 'template': 'torrent.html', - } - ) - - return results diff --git a/searx/engines/9gag.py b/searx/engines/9gag.py deleted file mode 100644 index d1846725c..000000000 --- a/searx/engines/9gag.py +++ /dev/null @@ -1,77 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=invalid-name -"""9GAG (social media)""" - -from json import loads -from datetime import datetime -from urllib.parse import urlencode - -about = { - "website": 'https://9gag.com/', - "wikidata_id": 'Q277421', - "official_api_documentation": None, - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['social media'] -paging = True - -search_url = "https://9gag.com/v1/search-posts?{query}" -page_size = 10 - - -def request(query, params): - query = urlencode({'query': query, 'c': (params['pageno'] - 1) * page_size}) - - params['url'] = search_url.format(query=query) - - return params - - -def response(resp): - results = [] - - json_results = loads(resp.text)['data'] - - for result in json_results['posts']: - result_type = result['type'] - - # Get the not cropped version of the thumbnail when the image height is not too important - if result['images']['image700']['height'] > 400: - thumbnail = result['images']['imageFbThumbnail']['url'] - else: - thumbnail = result['images']['image700']['url'] - - if result_type == 'Photo': - results.append( - { - 'template': 'images.html', - 'url': result['url'], - 'title': result['title'], - 'content': result['description'], - 'publishedDate': datetime.utcfromtimestamp(result['creationTs']), - 'img_src': result['images']['image700']['url'], - 'thumbnail_src': thumbnail, - } - ) - elif result_type == 'Animated': - results.append( - { - 'template': 'videos.html', - 'url': result['url'], - 'title': result['title'], - 'content': result['description'], - 'publishedDate': datetime.utcfromtimestamp(result['creationTs']), - 'thumbnail': thumbnail, - 'iframe_src': result['images'].get('image460sv', {}).get('url'), - } - ) - - if 'tags' in json_results: - for suggestion in json_results['tags']: - results.append({'suggestion': suggestion['key']}) - - return results diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py deleted file mode 100644 index da2b2037e..000000000 --- a/searx/engines/__init__.py +++ /dev/null @@ -1,253 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Load and initialize the ``engines``, see :py:func:`load_engines` and register -:py:obj:`engine_shortcuts`. - -usage:: - - load_engines( settings['engines'] ) - -""" - -from __future__ import annotations - -import sys -import copy -from os.path import realpath, dirname - -from typing import TYPE_CHECKING, Dict -import types -import inspect - -from searx import logger, settings -from searx.utils import load_module - -if TYPE_CHECKING: - from searx.enginelib import Engine - -logger = logger.getChild('engines') -ENGINE_DIR = dirname(realpath(__file__)) -ENGINE_DEFAULT_ARGS = { - # Common options in the engine module - "engine_type": "online", - "paging": False, - "time_range_support": False, - "safesearch": False, - # settings.yml - "categories": ["general"], - "enable_http": False, - "shortcut": "-", - "timeout": settings["outgoing"]["request_timeout"], - "display_error_messages": True, - "disabled": False, - "inactive": False, - "about": {}, - "using_tor_proxy": False, - "send_accept_language_header": False, - "tokens": [], -} -# set automatically when an engine does not have any tab category -DEFAULT_CATEGORY = 'other' - - -# Defaults for the namespace of an engine module, see :py:func:`load_engine` - -categories = {'general': []} -engines: Dict[str, Engine | types.ModuleType] = {} -engine_shortcuts = {} -"""Simple map of registered *shortcuts* to name of the engine (or ``None``). - -:: - - engine_shortcuts[engine.shortcut] = engine.name - -:meta hide-value: -""" - - -def check_engine_module(module: types.ModuleType): - # probe unintentional name collisions / for example name collisions caused - # by import statements in the engine module .. - - # network: https://github.com/searxng/searxng/issues/762#issuecomment-1605323861 - obj = getattr(module, 'network', None) - if obj and inspect.ismodule(obj): - msg = f'type of {module.__name__}.network is a module ({obj.__name__}), expected a string' - # logger.error(msg) - raise TypeError(msg) - - -def load_engine(engine_data: dict) -> Engine | types.ModuleType | None: - """Load engine from ``engine_data``. - - :param dict engine_data: Attributes from YAML ``settings:engines/`` - :return: initialized namespace of the ````. - - 1. create a namespace and load module of the ```` - 2. update namespace with the defaults from :py:obj:`ENGINE_DEFAULT_ARGS` - 3. update namespace with values from ``engine_data`` - - If engine *is active*, return namespace of the engine, otherwise return - ``None``. - - This function also returns ``None`` if initialization of the namespace fails - for one of the following reasons: - - - engine name contains underscore - - engine name is not lowercase - - required attribute is not set :py:func:`is_missing_required_attributes` - - """ - # pylint: disable=too-many-return-statements - - engine_name = engine_data.get('name') - if engine_name is None: - logger.error('An engine does not have a "name" field') - return None - if '_' in engine_name: - logger.error('Engine name contains underscore: "{}"'.format(engine_name)) - return None - - if engine_name.lower() != engine_name: - logger.warning('Engine name is not lowercase: "{}", converting to lowercase'.format(engine_name)) - engine_name = engine_name.lower() - engine_data['name'] = engine_name - - # load_module - module_name = engine_data.get('engine') - if module_name is None: - logger.error('The "engine" field is missing for the engine named "{}"'.format(engine_name)) - return None - try: - engine = load_module(module_name + '.py', ENGINE_DIR) - except (SyntaxError, KeyboardInterrupt, SystemExit, SystemError, ImportError, RuntimeError): - logger.exception('Fatal exception in engine "{}"'.format(module_name)) - sys.exit(1) - except BaseException: - logger.exception('Cannot load engine "{}"'.format(module_name)) - return None - - check_engine_module(engine) - update_engine_attributes(engine, engine_data) - update_attributes_for_tor(engine) - - # avoid cyclic imports - # pylint: disable=import-outside-toplevel - from searx.enginelib.traits import EngineTraitsMap - - trait_map = EngineTraitsMap.from_data() - trait_map.set_traits(engine) - - if not is_engine_active(engine): - return None - - if is_missing_required_attributes(engine): - return None - - set_loggers(engine, engine_name) - - if not any(cat in settings['categories_as_tabs'] for cat in engine.categories): - engine.categories.append(DEFAULT_CATEGORY) - - return engine - - -def set_loggers(engine, engine_name): - # set the logger for engine - engine.logger = logger.getChild(engine_name) - # the engine may have load some other engines - # may sure the logger is initialized - # use sys.modules.copy() to avoid "RuntimeError: dictionary changed size during iteration" - # see https://github.com/python/cpython/issues/89516 - # and https://docs.python.org/3.10/library/sys.html#sys.modules - modules = sys.modules.copy() - for module_name, module in modules.items(): - if ( - module_name.startswith("searx.engines") - and module_name != "searx.engines.__init__" - and not hasattr(module, "logger") - ): - module_engine_name = module_name.split(".")[-1] - module.logger = logger.getChild(module_engine_name) # type: ignore - - -def update_engine_attributes(engine: Engine | types.ModuleType, engine_data): - # set engine attributes from engine_data - for param_name, param_value in engine_data.items(): - if param_name == 'categories': - if isinstance(param_value, str): - param_value = list(map(str.strip, param_value.split(','))) - engine.categories = param_value # type: ignore - elif hasattr(engine, 'about') and param_name == 'about': - engine.about = {**engine.about, **engine_data['about']} # type: ignore - else: - setattr(engine, param_name, param_value) - - # set default attributes - for arg_name, arg_value in ENGINE_DEFAULT_ARGS.items(): - if not hasattr(engine, arg_name): - setattr(engine, arg_name, copy.deepcopy(arg_value)) - - -def update_attributes_for_tor(engine: Engine | types.ModuleType): - if using_tor_proxy(engine) and hasattr(engine, 'onion_url'): - engine.search_url = engine.onion_url + getattr(engine, 'search_path', '') # type: ignore - engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0) # type: ignore - - -def is_missing_required_attributes(engine): - """An attribute is required when its name doesn't start with ``_`` (underline). - Required attributes must not be ``None``. - - """ - missing = False - for engine_attr in dir(engine): - if not engine_attr.startswith('_') and getattr(engine, engine_attr) is None: - logger.error('Missing engine config attribute: "{0}.{1}"'.format(engine.name, engine_attr)) - missing = True - return missing - - -def using_tor_proxy(engine: Engine | types.ModuleType): - """Return True if the engine configuration declares to use Tor.""" - return settings['outgoing'].get('using_tor_proxy') or getattr(engine, 'using_tor_proxy', False) - - -def is_engine_active(engine: Engine | types.ModuleType): - # check if engine is inactive - if engine.inactive is True: - return False - - # exclude onion engines if not using tor - if 'onions' in engine.categories and not using_tor_proxy(engine): - return False - - return True - - -def register_engine(engine: Engine | types.ModuleType): - if engine.name in engines: - logger.error('Engine config error: ambiguous name: {0}'.format(engine.name)) - sys.exit(1) - engines[engine.name] = engine - - if engine.shortcut in engine_shortcuts: - logger.error('Engine config error: ambiguous shortcut: {0}'.format(engine.shortcut)) - sys.exit(1) - engine_shortcuts[engine.shortcut] = engine.name - - for category_name in engine.categories: - categories.setdefault(category_name, []).append(engine) - - -def load_engines(engine_list): - """usage: ``engine_list = settings['engines']``""" - engines.clear() - engine_shortcuts.clear() - categories.clear() - categories['general'] = [] - for engine_data in engine_list: - engine = load_engine(engine_data) - if engine: - register_engine(engine) - return engines diff --git a/searx/engines/ahmia.py b/searx/engines/ahmia.py deleted file mode 100644 index 33e0cc393..000000000 --- a/searx/engines/ahmia.py +++ /dev/null @@ -1,80 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Ahmia (Onions) -""" - -from urllib.parse import urlencode, urlparse, parse_qs -from lxml.html import fromstring -from searx.engines.xpath import extract_url, extract_text, eval_xpath_list, eval_xpath - -# about -about = { - "website": 'http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion', - "wikidata_id": 'Q18693938', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine config -categories = ['onions'] -paging = True -page_size = 10 - -# search url -search_url = 'http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion/search/?{query}' -time_range_support = True -time_range_dict = {'day': 1, 'week': 7, 'month': 30} - -# xpaths -results_xpath = '//li[@class="result"]' -url_xpath = './h4/a/@href' -title_xpath = './h4/a[1]' -content_xpath = './/p[1]' -correction_xpath = '//*[@id="didYouMean"]//a' -number_of_results_xpath = '//*[@id="totalResults"]' - - -def request(query, params): - params['url'] = search_url.format(query=urlencode({'q': query})) - - if params['time_range'] in time_range_dict: - params['url'] += '&' + urlencode({'d': time_range_dict[params['time_range']]}) - - return params - - -def response(resp): - results = [] - dom = fromstring(resp.text) - - # trim results so there's not way too many at once - first_result_index = page_size * (resp.search_params.get('pageno', 1) - 1) - all_results = eval_xpath_list(dom, results_xpath) - trimmed_results = all_results[first_result_index : first_result_index + page_size] - - # get results - for result in trimmed_results: - # remove ahmia url and extract the actual url for the result - raw_url = extract_url(eval_xpath_list(result, url_xpath, min_len=1), search_url) - cleaned_url = parse_qs(urlparse(raw_url).query).get('redirect_url', [''])[0] - - title = extract_text(eval_xpath(result, title_xpath)) - content = extract_text(eval_xpath(result, content_xpath)) - - results.append({'url': cleaned_url, 'title': title, 'content': content, 'is_onion': True}) - - # get spelling corrections - for correction in eval_xpath_list(dom, correction_xpath): - results.append({'correction': extract_text(correction)}) - - # get number of results - number_of_results = eval_xpath(dom, number_of_results_xpath) - if number_of_results: - try: - results.append({'number_of_results': int(extract_text(number_of_results))}) - except: - pass - - return results diff --git a/searx/engines/annas_archive.py b/searx/engines/annas_archive.py deleted file mode 100644 index a2db32ab4..000000000 --- a/searx/engines/annas_archive.py +++ /dev/null @@ -1,187 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""`Anna's Archive`_ is a free non-profit online shadow library metasearch -engine providing access to a variety of book resources (also via IPFS), created -by a team of anonymous archivists (AnnaArchivist_). - -.. _Anna's Archive: https://annas-archive.org/ -.. _AnnaArchivist: https://annas-software.org/AnnaArchivist/annas-archive - -Configuration -============= - -The engine has the following additional settings: - -- :py:obj:`aa_content` -- :py:obj:`aa_ext` -- :py:obj:`aa_sort` - -With this options a SearXNG maintainer is able to configure **additional** -engines for specific searches in Anna's Archive. For example a engine to search -for *newest* articles and journals (PDF) / by shortcut ``!aaa ``. - -.. code:: yaml - - - name: annas articles - engine: annas_archive - shortcut: aaa - aa_content: 'journal_article' - aa_ext: 'pdf' - aa_sort: 'newest' - -Implementations -=============== - -""" - -from typing import List, Dict, Any, Optional -from urllib.parse import quote -from lxml import html - -from searx.utils import extract_text, eval_xpath, eval_xpath_list -from searx.enginelib.traits import EngineTraits -from searx.data import ENGINE_TRAITS - -# about -about: Dict[str, Any] = { - "website": "https://annas-archive.org/", - "wikidata_id": "Q115288326", - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": "HTML", -} - -# engine dependent config -categories: List[str] = ["files"] -paging: bool = False - -# search-url -base_url: str = "https://annas-archive.org" -aa_content: str = "" -"""Anan's search form field **Content** / possible values:: - - journal_article, book_any, book_fiction, book_unknown, book_nonfiction, - book_comic, magazine, standards_document - -To not filter use an empty string (default). -""" -aa_sort: str = '' -"""Sort Anna's results, possible values:: - - newest, oldest, largest, smallest - -To sort by *most relevant* use an empty string (default).""" - -aa_ext: str = '' -"""Filter Anna's results by a file ending. Common filters for example are -``pdf`` and ``epub``. - -.. note:: - - Anna's Archive is a beta release: Filter results by file extension does not - really work on Anna's Archive. - -""" - - -def init(engine_settings=None): # pylint: disable=unused-argument - """Check of engine's settings.""" - traits = EngineTraits(**ENGINE_TRAITS['annas archive']) - - if aa_content and aa_content not in traits.custom['content']: - raise ValueError(f'invalid setting content: {aa_content}') - - if aa_sort and aa_sort not in traits.custom['sort']: - raise ValueError(f'invalid setting sort: {aa_sort}') - - if aa_ext and aa_ext not in traits.custom['ext']: - raise ValueError(f'invalid setting ext: {aa_ext}') - - -def request(query, params: Dict[str, Any]) -> Dict[str, Any]: - q = quote(query) - lang = traits.get_language(params["language"], traits.all_locale) # type: ignore - params["url"] = base_url + f"/search?lang={lang or ''}&content={aa_content}&ext={aa_ext}&sort={aa_sort}&q={q}" - return params - - -def response(resp) -> List[Dict[str, Optional[str]]]: - results: List[Dict[str, Optional[str]]] = [] - dom = html.fromstring(resp.text) - - for item in eval_xpath_list(dom, '//main//div[contains(@class, "h-[125]")]/a'): - results.append(_get_result(item)) - - # The rendering of the WEB page is very strange; except the first position - # all other positions of Anna's result page are enclosed in SGML comments. - # These comments are *uncommented* by some JS code, see query of class - # '.js-scroll-hidden' in Anna's HTML template: - # https://annas-software.org/AnnaArchivist/annas-archive/-/blob/main/allthethings/templates/macros/md5_list.html - - for item in eval_xpath_list(dom, '//main//div[contains(@class, "js-scroll-hidden")]'): - item = html.fromstring(item.xpath('./comment()')[0].text) - results.append(_get_result(item)) - - return results - - -def _get_result(item): - return { - 'template': 'paper.html', - 'url': base_url + item.xpath('./@href')[0], - 'title': extract_text(eval_xpath(item, './/h3/text()[1]')), - 'publisher': extract_text(eval_xpath(item, './/div[contains(@class, "text-sm")]')), - 'authors': [extract_text(eval_xpath(item, './/div[contains(@class, "italic")]'))], - 'content': extract_text(eval_xpath(item, './/div[contains(@class, "text-xs")]')), - 'img_src': item.xpath('.//img/@src')[0], - } - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages and other search arguments from Anna's search form.""" - # pylint: disable=import-outside-toplevel - - import babel - from searx.network import get # see https://github.com/searxng/searxng/issues/762 - from searx.locales import language_tag - - engine_traits.all_locale = '' - engine_traits.custom['content'] = [] - engine_traits.custom['ext'] = [] - engine_traits.custom['sort'] = [] - - resp = get(base_url + '/search') - if not resp.ok: # type: ignore - raise RuntimeError("Response from Anna's search page is not OK.") - dom = html.fromstring(resp.text) # type: ignore - - # supported language codes - - lang_map = {} - for x in eval_xpath_list(dom, "//form//input[@name='lang']"): - eng_lang = x.get("value") - if eng_lang in ('', '_empty', 'nl-BE', 'und'): - continue - try: - locale = babel.Locale.parse(lang_map.get(eng_lang, eng_lang), sep='-') - except babel.UnknownLocaleError: - # silently ignore unknown languages - # print("ERROR: %s -> %s is unknown by babel" % (x.get("data-name"), eng_lang)) - continue - sxng_lang = language_tag(locale) - conflict = engine_traits.languages.get(sxng_lang) - if conflict: - if conflict != eng_lang: - print("CONFLICT: babel %s --> %s, %s" % (sxng_lang, conflict, eng_lang)) - continue - engine_traits.languages[sxng_lang] = eng_lang - - for x in eval_xpath_list(dom, "//form//input[@name='content']"): - engine_traits.custom['content'].append(x.get("value")) - - for x in eval_xpath_list(dom, "//form//input[@name='ext']"): - engine_traits.custom['ext'].append(x.get("value")) - - for x in eval_xpath_list(dom, "//form//select[@name='sort']//option"): - engine_traits.custom['sort'].append(x.get("value")) diff --git a/searx/engines/apkmirror.py b/searx/engines/apkmirror.py deleted file mode 100644 index ac7cd7431..000000000 --- a/searx/engines/apkmirror.py +++ /dev/null @@ -1,62 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""APKMirror -""" - -# pylint: disable=invalid-name - -from urllib.parse import urlencode -from lxml import html - -from searx.utils import ( - eval_xpath_list, - eval_xpath_getindex, - extract_text, -) - -about = { - "website": 'https://www.apkmirror.com', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['files', 'apps'] -paging = True -time_range_support = False - -# search-url -base_url = 'https://www.apkmirror.com' -search_url = base_url + '/?post_type=app_release&searchtype=apk&page={pageno}&{query}' - - -def request(query, params): - params['url'] = search_url.format( - pageno=params['pageno'], - query=urlencode({'s': query}), - ) - logger.debug("query_url --> %s", params['url']) - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - # parse results - for result in eval_xpath_list(dom, "//div[@id='content']//div[@class='listWidget']/div/div[@class='appRow']"): - - link = eval_xpath_getindex(result, './/h5/a', 0) - - url = base_url + link.attrib.get('href') + '#downloads' - title = extract_text(link) - img_src = base_url + eval_xpath_getindex(result, './/img/@src', 0) - res = {'url': url, 'title': title, 'img_src': img_src} - - results.append(res) - - return results diff --git a/searx/engines/apple_app_store.py b/searx/engines/apple_app_store.py deleted file mode 100644 index f75a1a657..000000000 --- a/searx/engines/apple_app_store.py +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" - Apple App Store -""" - -from json import loads -from urllib.parse import urlencode -from dateutil.parser import parse - -about = { - "website": 'https://www.apple.com/app-store/', - "wikidata_id": 'Q368215', - "official_api_documentation": ( - 'https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/' - 'iTuneSearchAPI/UnderstandingSearchResults.html#//apple_ref/doc/uid/TP40017632-CH8-SW1' - ), - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['files', 'apps'] -safesearch = True - -search_url = 'https://itunes.apple.com/search?{query}' - - -def request(query, params): - explicit = "Yes" - - if params['safesearch'] > 0: - explicit = "No" - - params['url'] = search_url.format(query=urlencode({'term': query, 'media': 'software', 'explicit': explicit})) - - return params - - -def response(resp): - results = [] - - json_result = loads(resp.text) - - for result in json_result['results']: - results.append( - { - 'url': result['trackViewUrl'], - 'title': result['trackName'], - 'content': result['description'], - 'img_src': result['artworkUrl100'], - 'publishedDate': parse(result['currentVersionReleaseDate']), - 'author': result['sellerName'], - } - ) - - return results diff --git a/searx/engines/apple_maps.py b/searx/engines/apple_maps.py deleted file mode 100644 index eb4af422e..000000000 --- a/searx/engines/apple_maps.py +++ /dev/null @@ -1,113 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Apple Maps""" - -from json import loads -from time import time -from urllib.parse import urlencode - -from searx.network import get as http_get -from searx.engines.openstreetmap import get_key_label - -about = { - "website": 'https://www.apple.com/maps/', - "wikidata_id": 'Q276101', - "official_api_documentation": None, - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -token = {'value': '', 'last_updated': None} - -categories = ['map'] -paging = False - -search_url = "https://api.apple-mapkit.com/v1/search?{query}&mkjsVersion=5.72.53" - - -def obtain_token(): - update_time = time() - (time() % 1800) - try: - # use duckduckgo's mapkit token - token_response = http_get('https://duckduckgo.com/local.js?get_mk_token=1', timeout=2.0) - actual_token = http_get( - 'https://cdn.apple-mapkit.com/ma/bootstrap?apiVersion=2&mkjsVersion=5.72.53&poi=1', - timeout=2.0, - headers={'Authorization': 'Bearer ' + token_response.text}, - ) - token['value'] = loads(actual_token.text)['authInfo']['access_token'] - token['last_updated'] = update_time - # pylint: disable=bare-except - except: - pass - return token - - -def request(query, params): - if time() - (token['last_updated'] or 0) > 1800: - obtain_token() - - params['url'] = search_url.format(query=urlencode({'q': query, 'lang': params['language']})) - - params['headers'] = {'Authorization': 'Bearer ' + token['value']} - - return params - - -def response(resp): - results = [] - - resp_json = loads(resp.text) - - user_language = resp.search_params['language'] - - for result in resp_json['results']: - boundingbox = None - if 'displayMapRegion' in result: - box = result['displayMapRegion'] - boundingbox = [box['southLat'], box['northLat'], box['westLng'], box['eastLng']] - - links = [] - if 'telephone' in result: - telephone = result['telephone'] - links.append( - { - 'label': get_key_label('phone', user_language), - 'url': 'tel:' + telephone, - 'url_label': telephone, - } - ) - if result.get('urls'): - url = result['urls'][0] - links.append( - { - 'label': get_key_label('website', user_language), - 'url': url, - 'url_label': url, - } - ) - - results.append( - { - 'template': 'map.html', - 'type': result.get('poiCategory'), - 'title': result['name'], - 'links': links, - 'latitude': result['center']['lat'], - 'longitude': result['center']['lng'], - 'url': result['placecardUrl'], - 'boundingbox': boundingbox, - 'geojson': {'type': 'Point', 'coordinates': [result['center']['lng'], result['center']['lat']]}, - 'address': { - 'name': result['name'], - 'house_number': result.get('subThoroughfare'), - 'road': result.get('thoroughfare'), - 'locality': result.get('locality'), - 'postcode': result.get('postCode'), - 'country': result.get('country'), - }, - } - ) - - return results diff --git a/searx/engines/archlinux.py b/searx/engines/archlinux.py deleted file mode 100644 index 9d5009ed7..000000000 --- a/searx/engines/archlinux.py +++ /dev/null @@ -1,152 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Arch Linux Wiki -~~~~~~~~~~~~~~~ - -This implementation does not use a official API: Mediawiki provides API, but -Arch Wiki blocks access to it. - -""" - -from typing import TYPE_CHECKING -from urllib.parse import urlencode, urljoin, urlparse -import lxml -import babel - -from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex -from searx.enginelib.traits import EngineTraits -from searx.locales import language_tag - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - - -about = { - "website": 'https://wiki.archlinux.org/', - "wikidata_id": 'Q101445877', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['it', 'software wikis'] -paging = True -main_wiki = 'wiki.archlinux.org' - - -def request(query, params): - - sxng_lang = params['searxng_locale'].split('-')[0] - netloc: str = traits.custom['wiki_netloc'].get(sxng_lang, main_wiki) # type: ignore - title: str = traits.custom['title'].get(sxng_lang, 'Special:Search') # type: ignore - base_url = 'https://' + netloc + '/index.php?' - offset = (params['pageno'] - 1) * 20 - - if netloc == main_wiki: - eng_lang: str = traits.get_language(sxng_lang, 'English') # type: ignore - query += ' (' + eng_lang + ')' - elif netloc == 'wiki.archlinuxcn.org': - base_url = 'https://' + netloc + '/wzh/index.php?' - - args = { - 'search': query, - 'title': title, - 'limit': 20, - 'offset': offset, - 'profile': 'default', - } - - params['url'] = base_url + urlencode(args) - return params - - -def response(resp): - - results = [] - dom = lxml.html.fromstring(resp.text) # type: ignore - - # get the base URL for the language in which request was made - sxng_lang = resp.search_params['searxng_locale'].split('-')[0] - netloc: str = traits.custom['wiki_netloc'].get(sxng_lang, main_wiki) # type: ignore - base_url = 'https://' + netloc + '/index.php?' - - for result in eval_xpath_list(dom, '//ul[@class="mw-search-results"]/li'): - link = eval_xpath_getindex(result, './/div[@class="mw-search-result-heading"]/a', 0) - content = extract_text(result.xpath('.//div[@class="searchresult"]')) - results.append( - { - 'url': urljoin(base_url, link.get('href')), # type: ignore - 'title': extract_text(link), - 'content': content, - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages from Archlinux-Wiki. The location of the Wiki address of a - language is mapped in a :py:obj:`custom field - ` (``wiki_netloc``). Depending - on the location, the ``title`` argument in the request is translated. - - .. code:: python - - "custom": { - "wiki_netloc": { - "de": "wiki.archlinux.de", - # ... - "zh": "wiki.archlinuxcn.org" - } - "title": { - "de": "Spezial:Suche", - # ... - "zh": "Special:\u641c\u7d22" - }, - }, - - """ - # pylint: disable=import-outside-toplevel - from searx.network import get # see https://github.com/searxng/searxng/issues/762 - - engine_traits.custom['wiki_netloc'] = {} - engine_traits.custom['title'] = {} - - title_map = { - 'de': 'Spezial:Suche', - 'fa': 'ویژه:جستجو', - 'ja': '特別:検索', - 'zh': 'Special:搜索', - } - - resp = get('https://wiki.archlinux.org/') - if not resp.ok: # type: ignore - print("ERROR: response from wiki.archlinux.org is not OK.") - - dom = lxml.html.fromstring(resp.text) # type: ignore - for a in eval_xpath_list(dom, "//a[@class='interlanguage-link-target']"): - - sxng_tag = language_tag(babel.Locale.parse(a.get('lang'), sep='-')) - # zh_Hans --> zh - sxng_tag = sxng_tag.split('_')[0] - - netloc = urlparse(a.get('href')).netloc - if netloc != 'wiki.archlinux.org': - title = title_map.get(sxng_tag) - if not title: - print("ERROR: title tag from %s (%s) is unknown" % (netloc, sxng_tag)) - continue - engine_traits.custom['wiki_netloc'][sxng_tag] = netloc - engine_traits.custom['title'][sxng_tag] = title # type: ignore - - eng_tag = extract_text(eval_xpath_list(a, ".//span")) - engine_traits.languages[sxng_tag] = eng_tag # type: ignore - - engine_traits.languages['en'] = 'English' diff --git a/searx/engines/artic.py b/searx/engines/artic.py deleted file mode 100644 index c0ae0a5e7..000000000 --- a/searx/engines/artic.py +++ /dev/null @@ -1,69 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""The Art Institute of Chicago - -Explore thousands of artworks from The Art Institute of Chicago. - -* https://artic.edu - -""" - -from json import loads -from urllib.parse import urlencode - -about = { - "website": 'https://www.artic.edu', - "wikidata_id": 'Q239303', - "official_api_documentation": 'http://api.artic.edu/docs/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['images'] -paging = True -nb_per_page = 20 - -search_api = 'https://api.artic.edu/api/v1/artworks/search?' -image_api = 'https://www.artic.edu/iiif/2/' - - -def request(query, params): - - args = urlencode( - { - 'q': query, - 'page': params['pageno'], - 'fields': 'id,title,artist_display,medium_display,image_id,date_display,dimensions,artist_titles', - 'limit': nb_per_page, - } - ) - params['url'] = search_api + args - - logger.debug("query_url --> %s", params['url']) - return params - - -def response(resp): - - results = [] - json_data = loads(resp.text) - - for result in json_data['data']: - - if not result['image_id']: - continue - - results.append( - { - 'url': 'https://artic.edu/artworks/%(id)s' % result, - 'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result, - 'content': result['medium_display'], - 'author': ', '.join(result['artist_titles']), - 'img_src': image_api + '/%(image_id)s/full/843,/0/default.jpg' % result, - 'img_format': result['dimensions'], - 'template': 'images.html', - } - ) - - return results diff --git a/searx/engines/arxiv.py b/searx/engines/arxiv.py deleted file mode 100644 index a4811ebd5..000000000 --- a/searx/engines/arxiv.py +++ /dev/null @@ -1,109 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - ArXiV (Scientific preprints) -""" - -from lxml import etree -from lxml.etree import XPath -from datetime import datetime -from searx.utils import eval_xpath, eval_xpath_list, eval_xpath_getindex - -# about -about = { - "website": 'https://arxiv.org', - "wikidata_id": 'Q118398', - "official_api_documentation": 'https://arxiv.org/help/api', - "use_official_api": True, - "require_api_key": False, - "results": 'XML-RSS', -} - -categories = ['science', 'scientific publications'] -paging = True - -base_url = ( - 'https://export.arxiv.org/api/query?search_query=all:' + '{query}&start={offset}&max_results={number_of_results}' -) - -# engine dependent config -number_of_results = 10 - -# xpaths -arxiv_namespaces = { - "atom": "http://www.w3.org/2005/Atom", - "arxiv": "http://arxiv.org/schemas/atom", -} -xpath_entry = XPath('//atom:entry', namespaces=arxiv_namespaces) -xpath_title = XPath('.//atom:title', namespaces=arxiv_namespaces) -xpath_id = XPath('.//atom:id', namespaces=arxiv_namespaces) -xpath_summary = XPath('.//atom:summary', namespaces=arxiv_namespaces) -xpath_author_name = XPath('.//atom:author/atom:name', namespaces=arxiv_namespaces) -xpath_doi = XPath('.//arxiv:doi', namespaces=arxiv_namespaces) -xpath_pdf = XPath('.//atom:link[@title="pdf"]', namespaces=arxiv_namespaces) -xpath_published = XPath('.//atom:published', namespaces=arxiv_namespaces) -xpath_journal = XPath('.//arxiv:journal_ref', namespaces=arxiv_namespaces) -xpath_category = XPath('.//atom:category/@term', namespaces=arxiv_namespaces) -xpath_comment = XPath('./arxiv:comment', namespaces=arxiv_namespaces) - - -def request(query, params): - # basic search - offset = (params['pageno'] - 1) * number_of_results - - string_args = dict(query=query, offset=offset, number_of_results=number_of_results) - - params['url'] = base_url.format(**string_args) - - return params - - -def response(resp): - results = [] - dom = etree.fromstring(resp.content) - for entry in eval_xpath_list(dom, xpath_entry): - title = eval_xpath_getindex(entry, xpath_title, 0).text - - url = eval_xpath_getindex(entry, xpath_id, 0).text - abstract = eval_xpath_getindex(entry, xpath_summary, 0).text - - authors = [author.text for author in eval_xpath_list(entry, xpath_author_name)] - - # doi - doi_element = eval_xpath_getindex(entry, xpath_doi, 0, default=None) - doi = None if doi_element is None else doi_element.text - - # pdf - pdf_element = eval_xpath_getindex(entry, xpath_pdf, 0, default=None) - pdf_url = None if pdf_element is None else pdf_element.attrib.get('href') - - # journal - journal_element = eval_xpath_getindex(entry, xpath_journal, 0, default=None) - journal = None if journal_element is None else journal_element.text - - # tags - tag_elements = eval_xpath(entry, xpath_category) - tags = [str(tag) for tag in tag_elements] - - # comments - comments_elements = eval_xpath_getindex(entry, xpath_comment, 0, default=None) - comments = None if comments_elements is None else comments_elements.text - - publishedDate = datetime.strptime(eval_xpath_getindex(entry, xpath_published, 0).text, '%Y-%m-%dT%H:%M:%SZ') - - res_dict = { - 'template': 'paper.html', - 'url': url, - 'title': title, - 'publishedDate': publishedDate, - 'content': abstract, - 'doi': doi, - 'authors': authors, - 'journal': journal, - 'tags': tags, - 'comments': comments, - 'pdf_url': pdf_url, - } - - results.append(res_dict) - - return results diff --git a/searx/engines/bandcamp.py b/searx/engines/bandcamp.py deleted file mode 100644 index 8feff1fe0..000000000 --- a/searx/engines/bandcamp.py +++ /dev/null @@ -1,95 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Bandcamp (Music) - -@website https://bandcamp.com/ -@provide-api no -@results HTML -@parse url, title, content, publishedDate, iframe_src, thumbnail - -""" - -from urllib.parse import urlencode, urlparse, parse_qs -from dateutil.parser import parse as dateparse -from lxml import html - -from searx.utils import ( - eval_xpath_getindex, - eval_xpath_list, - extract_text, -) - -# about -about = { - "website": 'https://bandcamp.com/', - "wikidata_id": 'Q545966', - "official_api_documentation": 'https://bandcamp.com/developer', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['music'] -paging = True - -base_url = "https://bandcamp.com/" -search_string = 'search?{query}&page={page}' -iframe_src = "https://bandcamp.com/EmbeddedPlayer/{type}={result_id}/size=large/bgcol=000/linkcol=fff/artwork=small" - - -def request(query, params): - '''pre-request callback - - params: - method : POST/GET - headers : {} - data : {} # if method == POST - url : '' - category: 'search category' - pageno : 1 # number of the requested page - ''' - - search_path = search_string.format(query=urlencode({'q': query}), page=params['pageno']) - params['url'] = base_url + search_path - return params - - -def response(resp): - '''post-response callback - - resp: requests response object - ''' - results = [] - dom = html.fromstring(resp.text) - - for result in eval_xpath_list(dom, '//li[contains(@class, "searchresult")]'): - - link = eval_xpath_getindex(result, './/div[@class="itemurl"]/a', 0, default=None) - if link is None: - continue - - title = result.xpath('.//div[@class="heading"]/a/text()') - content = result.xpath('.//div[@class="subhead"]/text()') - new_result = { - "url": extract_text(link), - "title": extract_text(title), - "content": extract_text(content), - } - - date = eval_xpath_getindex(result, '//div[@class="released"]/text()', 0, default=None) - if date: - new_result["publishedDate"] = dateparse(date.replace("released ", "")) - - thumbnail = result.xpath('.//div[@class="art"]/img/@src') - if thumbnail: - new_result['img_src'] = thumbnail[0] - - result_id = parse_qs(urlparse(link.get('href')).query)["search_item_id"][0] - itemtype = extract_text(result.xpath('.//div[@class="itemtype"]')).lower() - if "album" == itemtype: - new_result["iframe_src"] = iframe_src.format(type='album', result_id=result_id) - elif "track" == itemtype: - new_result["iframe_src"] = iframe_src.format(type='track', result_id=result_id) - - results.append(new_result) - return results diff --git a/searx/engines/base.py b/searx/engines/base.py deleted file mode 100755 index 5a2d66619..000000000 --- a/searx/engines/base.py +++ /dev/null @@ -1,112 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - BASE (Scholar publications) -""" - -from urllib.parse import urlencode -from lxml import etree -from datetime import datetime -import re -from searx.utils import searx_useragent - -# about -about = { - "website": 'https://base-search.net', - "wikidata_id": 'Q448335', - "official_api_documentation": 'https://api.base-search.net/', - "use_official_api": True, - "require_api_key": False, - "results": 'XML', -} - -categories = ['science'] - -base_url = ( - 'https://api.base-search.net/cgi-bin/BaseHttpSearchInterface.fcgi' - + '?func=PerformSearch&{query}&boost=oa&hits={hits}&offset={offset}' -) - -# engine dependent config -paging = True -number_of_results = 10 - -# shortcuts for advanced search -shorcut_dict = { - # user-friendly keywords - 'format:': 'dcformat:', - 'author:': 'dccreator:', - 'collection:': 'dccollection:', - 'hdate:': 'dchdate:', - 'contributor:': 'dccontributor:', - 'coverage:': 'dccoverage:', - 'date:': 'dcdate:', - 'abstract:': 'dcdescription:', - 'urls:': 'dcidentifier:', - 'language:': 'dclanguage:', - 'publisher:': 'dcpublisher:', - 'relation:': 'dcrelation:', - 'rights:': 'dcrights:', - 'source:': 'dcsource:', - 'subject:': 'dcsubject:', - 'title:': 'dctitle:', - 'type:': 'dcdctype:', -} - - -def request(query, params): - # replace shortcuts with API advanced search keywords - for key in shorcut_dict.keys(): - query = re.sub(key, shorcut_dict[key], query) - - # basic search - offset = (params['pageno'] - 1) * number_of_results - - string_args = dict(query=urlencode({'query': query}), offset=offset, hits=number_of_results) - - params['url'] = base_url.format(**string_args) - - params['headers']['User-Agent'] = searx_useragent() - return params - - -def response(resp): - results = [] - - search_results = etree.XML(resp.content) - - for entry in search_results.xpath('./result/doc'): - content = "No description available" - - date = datetime.now() # needed in case no dcdate is available for an item - for item in entry: - if item.attrib["name"] == "dcdate": - date = item.text - - elif item.attrib["name"] == "dctitle": - title = item.text - - elif item.attrib["name"] == "dclink": - url = item.text - - elif item.attrib["name"] == "dcdescription": - content = item.text[:300] - if len(item.text) > 300: - content += "..." - - # dates returned by the BASE API are not several formats - publishedDate = None - for date_format in ['%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%d', '%Y-%m', '%Y']: - try: - publishedDate = datetime.strptime(date, date_format) - break - except: - pass - - if publishedDate is not None: - res_dict = {'url': url, 'title': title, 'publishedDate': publishedDate, 'content': content} - else: - res_dict = {'url': url, 'title': title, 'content': content} - - results.append(res_dict) - - return results diff --git a/searx/engines/bilibili.py b/searx/engines/bilibili.py deleted file mode 100644 index 642b33e1a..000000000 --- a/searx/engines/bilibili.py +++ /dev/null @@ -1,100 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Bilibili is a Chinese video sharing website. - -.. _Bilibili: https://www.bilibili.com -""" - -import random -import string -from urllib.parse import urlencode -from datetime import datetime, timedelta - -# Engine metadata -about = { - "website": "https://www.bilibili.com", - "wikidata_id": "Q3077586", - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": "JSON", -} - -# Engine configuration -paging = True -results_per_page = 20 -categories = ["videos"] - -# Search URL -base_url = "https://api.bilibili.com/x/web-interface/search/type" - -cookie = { - "innersign": "0", - "buvid3": "".join(random.choice(string.hexdigits) for _ in range(16)) + "infoc", - "i-wanna-go-back": "-1", - "b_ut": "7", - "FEED_LIVE_VERSION": "V8", - "header_theme_version": "undefined", - "home_feed_column": "4", -} - - -def request(query, params): - query_params = { - "__refresh__": "true", - "page": params["pageno"], - "page_size": results_per_page, - "single_column": "0", - "keyword": query, - "search_type": "video", - } - - params["url"] = f"{base_url}?{urlencode(query_params)}" - params["cookies"] = cookie - - return params - - -# Format the video duration -def format_duration(duration): - minutes, seconds = map(int, duration.split(":")) - total_seconds = minutes * 60 + seconds - - formatted_duration = str(timedelta(seconds=total_seconds))[2:] if 0 <= total_seconds < 3600 else "" - - return formatted_duration - - -def response(resp): - search_res = resp.json() - - results = [] - - for item in search_res.get("data", {}).get("result", []): - title = item["title"] - url = item["arcurl"] - thumbnail = item["pic"] - description = item["description"] - author = item["author"] - video_id = item["aid"] - unix_date = item["pubdate"] - - formatted_date = datetime.utcfromtimestamp(unix_date) - formatted_duration = format_duration(item["duration"]) - iframe_url = f"https://player.bilibili.com/player.html?aid={video_id}&high_quality=1&autoplay=false&danmaku=0" - - results.append( - { - "title": title, - "url": url, - "content": description, - "author": author, - "publishedDate": formatted_date, - "length": formatted_duration, - "thumbnail": thumbnail, - "iframe_src": iframe_url, - "template": "videos.html", - } - ) - - return results diff --git a/searx/engines/bing.py b/searx/engines/bing.py deleted file mode 100644 index ae001ffac..000000000 --- a/searx/engines/bing.py +++ /dev/null @@ -1,262 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This is the implementation of the Bing-WEB engine. Some of this -implementations are shared by other engines: - -- :ref:`bing images engine` -- :ref:`bing news engine` -- :ref:`bing videos engine` - -On the `preference page`_ Bing offers a lot of languages an regions (see section -LANGUAGE and COUNTRY/REGION). The Language is the language of the UI, we need -in SearXNG to get the translations of data such as *"published last week"*. - -There is a description of the offical search-APIs_, unfortunately this is not -the API we can use or that bing itself would use. You can look up some things -in the API to get a better picture of bing, but the value specifications like -the market codes are usually outdated or at least no longer used by bing itself. - -The market codes have been harmonized and are identical for web, video and -images. The news area has also been harmonized with the other categories. Only -political adjustments still seem to be made -- for example, there is no news -category for the Chinese market. - -.. _preference page: https://www.bing.com/account/general -.. _search-APIs: https://learn.microsoft.com/en-us/bing/search-apis/ - -""" -# pylint: disable=too-many-branches, invalid-name - -from typing import TYPE_CHECKING -import base64 -import re -import time -from urllib.parse import parse_qs, urlencode, urlparse -from lxml import html -import babel -import babel.languages - -from searx.utils import eval_xpath, extract_text, eval_xpath_list, eval_xpath_getindex -from searx.locales import language_tag, region_tag -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger = logging.getLogger() - -traits: EngineTraits - -about = { - "website": 'https://www.bing.com', - "wikidata_id": 'Q182496', - "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-web-search-api', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['general', 'web'] -paging = True -time_range_support = True -safesearch = True -"""Bing results are always SFW. To get NSFW links from bing some age -verification by a cookie is needed / thats not possible in SearXNG. -""" - -base_url = 'https://www.bing.com/search' -"""Bing (Web) search URL""" - - -def _page_offset(pageno): - return (int(pageno) - 1) * 10 + 1 - - -def set_bing_cookies(params, engine_language, engine_region): - params['cookies']['_EDGE_CD'] = f'm={engine_region}&u={engine_language}' - params['cookies']['_EDGE_S'] = f'mkt={engine_region}&ui={engine_language}' - logger.debug("bing cookies: %s", params['cookies']) - - -def request(query, params): - """Assemble a Bing-Web request.""" - - engine_region = traits.get_region(params['searxng_locale'], traits.all_locale) # type: ignore - engine_language = traits.get_language(params['searxng_locale'], 'en') # type: ignore - set_bing_cookies(params, engine_language, engine_region) - - page = params.get('pageno', 1) - query_params = { - 'q': query, - # if arg 'pq' is missed, somtimes on page 4 we get results from page 1, - # don't ask why it is only sometimes / its M$ and they have never been - # deterministic ;) - 'pq': query, - } - - # To get correct page, arg first and this arg FORM is needed, the value PERE - # is on page 2, on page 3 its PERE1 and on page 4 its PERE2 .. and so forth. - # The 'first' arg should never send on page 1. - - if page > 1: - query_params['first'] = _page_offset(page) # see also arg FORM - if page == 2: - query_params['FORM'] = 'PERE' - elif page > 2: - query_params['FORM'] = 'PERE%s' % (page - 2) - - params['url'] = f'{base_url}?{urlencode(query_params)}' - - if params.get('time_range'): - unix_day = int(time.time() / 86400) - time_ranges = {'day': '1', 'week': '2', 'month': '3', 'year': f'5_{unix_day-365}_{unix_day}'} - params['url'] += f'&filters=ex1:"ez{time_ranges[params["time_range"]]}"' - - return params - - -def response(resp): - # pylint: disable=too-many-locals - - results = [] - result_len = 0 - - dom = html.fromstring(resp.text) - - # parse results again if nothing is found yet - - for result in eval_xpath_list(dom, '//ol[@id="b_results"]/li[contains(@class, "b_algo")]'): - - link = eval_xpath_getindex(result, './/h2/a', 0, None) - if link is None: - continue - url = link.attrib.get('href') - title = extract_text(link) - - content = eval_xpath(result, './/p') - for p in content: - # Make sure that the element is free of: - # Web - for e in p.xpath('.//span[@class="algoSlug_icon"]'): - e.getparent().remove(e) - content = extract_text(content) - - # get the real URL - if url.startswith('https://www.bing.com/ck/a?'): - # get the first value of u parameter - url_query = urlparse(url).query - parsed_url_query = parse_qs(url_query) - param_u = parsed_url_query["u"][0] - # remove "a1" in front - encoded_url = param_u[2:] - # add padding - encoded_url = encoded_url + '=' * (-len(encoded_url) % 4) - # decode base64 encoded URL - url = base64.urlsafe_b64decode(encoded_url).decode() - - # append result - results.append({'url': url, 'title': title, 'content': content}) - - # get number_of_results - try: - result_len_container = "".join(eval_xpath(dom, '//span[@class="sb_count"]//text()')) - if "-" in result_len_container: - - # Remove the part "from-to" for paginated request ... - result_len_container = result_len_container[result_len_container.find("-") * 2 + 2 :] - - result_len_container = re.sub('[^0-9]', '', result_len_container) - - if len(result_len_container) > 0: - result_len = int(result_len_container) - - except Exception as e: # pylint: disable=broad-except - logger.debug('result error :\n%s', e) - - if result_len and _page_offset(resp.search_params.get("pageno", 0)) > result_len: - # Avoid reading more results than avalaible. - # For example, if there is 100 results from some search and we try to get results from 120 to 130, - # Bing will send back the results from 0 to 10 and no error. - # If we compare results count with the first parameter of the request we can avoid this "invalid" results. - return [] - - results.append({'number_of_results': result_len}) - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages and regions from Bing-Web.""" - # pylint: disable=import-outside-toplevel - - from searx.network import get # see https://github.com/searxng/searxng/issues/762 - - resp = get("https://www.bing.com/account/general") - if not resp.ok: # type: ignore - print("ERROR: response from bing is not OK.") - - dom = html.fromstring(resp.text) # type: ignore - - # languages - - engine_traits.languages['zh'] = 'zh-hans' - - map_lang = {'prs': 'fa-AF', 'en': 'en-us'} - bing_ui_lang_map = { - # HINT: this list probably needs to be supplemented - 'en': 'us', # en --> en-us - 'da': 'dk', # da --> da-dk - } - - for href in eval_xpath(dom, '//div[@id="language-section"]//li/a/@href'): - eng_lang = parse_qs(urlparse(href).query)['setlang'][0] - babel_lang = map_lang.get(eng_lang, eng_lang) - try: - sxng_tag = language_tag(babel.Locale.parse(babel_lang.replace('-', '_'))) - except babel.UnknownLocaleError: - print("ERROR: language (%s) is unknown by babel" % (babel_lang)) - continue - # Language (e.g. 'en' or 'de') from https://www.bing.com/account/general - # is converted by bing to 'en-us' or 'de-de'. But only if there is not - # already a '-' delemitter in the language. For instance 'pt-PT' --> - # 'pt-pt' and 'pt-br' --> 'pt-br' - bing_ui_lang = eng_lang.lower() - if '-' not in bing_ui_lang: - bing_ui_lang = bing_ui_lang + '-' + bing_ui_lang_map.get(bing_ui_lang, bing_ui_lang) - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != bing_ui_lang: - print(f"CONFLICT: babel {sxng_tag} --> {conflict}, {bing_ui_lang}") - continue - engine_traits.languages[sxng_tag] = bing_ui_lang - - # regions (aka "market codes") - - engine_traits.regions['zh-CN'] = 'zh-cn' - - map_market_codes = { - 'zh-hk': 'en-hk', # not sure why, but at M$ this is the market code for Hongkong - } - for href in eval_xpath(dom, '//div[@id="region-section"]//li/a/@href'): - cc_tag = parse_qs(urlparse(href).query)['cc'][0] - if cc_tag == 'clear': - engine_traits.all_locale = cc_tag - continue - - # add market codes from official languages of the country .. - for lang_tag in babel.languages.get_official_languages(cc_tag, de_facto=True): - if lang_tag not in engine_traits.languages.keys(): - # print("ignore lang: %s <-- %s" % (cc_tag, lang_tag)) - continue - lang_tag = lang_tag.split('_')[0] # zh_Hant --> zh - market_code = f"{lang_tag}-{cc_tag}" # zh-tw - - market_code = map_market_codes.get(market_code, market_code) - sxng_tag = region_tag(babel.Locale.parse('%s_%s' % (lang_tag, cc_tag.upper()))) - conflict = engine_traits.regions.get(sxng_tag) - if conflict: - if conflict != market_code: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, market_code)) - continue - engine_traits.regions[sxng_tag] = market_code diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py deleted file mode 100644 index faf0941c8..000000000 --- a/searx/engines/bing_images.py +++ /dev/null @@ -1,109 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Bing-Images: description see :py:obj:`searx.engines.bing`. -""" -# pylint: disable=invalid-name - - -from typing import TYPE_CHECKING -import json -from urllib.parse import urlencode - -from lxml import html - -from searx.enginelib.traits import EngineTraits -from searx.engines.bing import set_bing_cookies -from searx.engines.bing import fetch_traits # pylint: disable=unused-import - - -if TYPE_CHECKING: - import logging - - logger = logging.getLogger() - -traits: EngineTraits - -# about -about = { - "website": 'https://www.bing.com/images', - "wikidata_id": 'Q182496', - "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-image-search-api', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['images', 'web'] -paging = True -safesearch = True -time_range_support = True - -base_url = 'https://www.bing.com/images/async' -"""Bing (Images) search URL""" - -time_map = { - 'day': 60 * 24, - 'week': 60 * 24 * 7, - 'month': 60 * 24 * 31, - 'year': 60 * 24 * 365, -} - - -def request(query, params): - """Assemble a Bing-Image request.""" - - engine_region = traits.get_region(params['searxng_locale'], traits.all_locale) # type: ignore - engine_language = traits.get_language(params['searxng_locale'], 'en') # type: ignore - set_bing_cookies(params, engine_language, engine_region) - - # build URL query - # - example: https://www.bing.com/images/async?q=foo&async=content&first=1&count=35 - query_params = { - 'q': query, - 'async': '1', - # to simplify the page count lets use the default of 35 images per page - 'first': (int(params.get('pageno', 1)) - 1) * 35 + 1, - 'count': 35, - } - - # time range - # - example: one year (525600 minutes) 'qft=+filterui:age-lt525600' - - if params['time_range']: - query_params['qft'] = 'filterui:age-lt%s' % time_map[params['time_range']] - - params['url'] = base_url + '?' + urlencode(query_params) - - return params - - -def response(resp): - """Get response from Bing-Images""" - - results = [] - dom = html.fromstring(resp.text) - - for result in dom.xpath('//ul[contains(@class, "dgControl_list")]/li'): - - metadata = result.xpath('.//a[@class="iusc"]/@m') - if not metadata: - continue - - metadata = json.loads(result.xpath('.//a[@class="iusc"]/@m')[0]) - title = ' '.join(result.xpath('.//div[@class="infnmpt"]//a/text()')).strip() - img_format = ' '.join(result.xpath('.//div[@class="imgpt"]/div/span/text()')).strip() - source = ' '.join(result.xpath('.//div[@class="imgpt"]//div[@class="lnkw"]//a/text()')).strip() - results.append( - { - 'template': 'images.html', - 'url': metadata['purl'], - 'thumbnail_src': metadata['turl'], - 'img_src': metadata['murl'], - 'content': metadata['desc'], - 'title': title, - 'source': source, - 'img_format': img_format, - } - ) - return results diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py deleted file mode 100644 index 3585a1cd1..000000000 --- a/searx/engines/bing_news.py +++ /dev/null @@ -1,159 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Bing-News: description see :py:obj:`searx.engines.bing`. - -.. hint:: - - Bing News is *different* in some ways! - -""" - -# pylint: disable=invalid-name - -from typing import TYPE_CHECKING -from urllib.parse import urlencode - -from lxml import html - -from searx.utils import eval_xpath, extract_text, eval_xpath_list, eval_xpath_getindex -from searx.enginelib.traits import EngineTraits -from searx.engines.bing import set_bing_cookies - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - - -# about -about = { - "website": 'https://www.bing.com/news', - "wikidata_id": 'Q2878637', - "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-news-search-api', - "use_official_api": False, - "require_api_key": False, - "results": 'RSS', -} - -# engine dependent config -categories = ['news'] -paging = True -"""If go through the pages and there are actually no new results for another -page, then bing returns the results from the last page again.""" - -time_range_support = True -time_map = { - 'day': 'interval="4"', - 'week': 'interval="7"', - 'month': 'interval="9"', -} -"""A string '4' means *last hour*. We use *last hour* for ``day`` here since the -difference of *last day* and *last week* in the result list is just marginally. -Bing does not have news range ``year`` / we use ``month`` instead.""" - -base_url = 'https://www.bing.com/news/infinitescrollajax' -"""Bing (News) search URL""" - - -def request(query, params): - """Assemble a Bing-News request.""" - - engine_region = traits.get_region(params['searxng_locale'], traits.all_locale) # type: ignore - engine_language = traits.get_language(params['searxng_locale'], 'en') # type: ignore - set_bing_cookies(params, engine_language, engine_region) - - # build URL query - # - # example: https://www.bing.com/news/infinitescrollajax?q=london&first=1 - - page = int(params.get('pageno', 1)) - 1 - query_params = { - 'q': query, - 'InfiniteScroll': 1, - # to simplify the page count lets use the default of 10 images per page - 'first': page * 10 + 1, - 'SFX': page, - 'form': 'PTFTNR', - 'setlang': engine_region.split('-')[0], - 'cc': engine_region.split('-')[-1], - } - - if params['time_range']: - query_params['qft'] = time_map.get(params['time_range'], 'interval="9"') - - params['url'] = base_url + '?' + urlencode(query_params) - - return params - - -def response(resp): - """Get response from Bing-Video""" - results = [] - - if not resp.ok or not resp.text: - return results - - dom = html.fromstring(resp.text) - - for newsitem in eval_xpath_list(dom, '//div[contains(@class, "newsitem")]'): - - link = eval_xpath_getindex(newsitem, './/a[@class="title"]', 0, None) - if link is None: - continue - url = link.attrib.get('href') - title = extract_text(link) - content = extract_text(eval_xpath(newsitem, './/div[@class="snippet"]')) - - metadata = [] - source = eval_xpath_getindex(newsitem, './/div[contains(@class, "source")]', 0, None) - if source is not None: - for item in ( - eval_xpath_getindex(source, './/span[@aria-label]/@aria-label', 0, None), - # eval_xpath_getindex(source, './/a', 0, None), - # eval_xpath_getindex(source, './div/span', 3, None), - link.attrib.get('data-author'), - ): - if item is not None: - t = extract_text(item) - if t and t.strip(): - metadata.append(t.strip()) - metadata = ' | '.join(metadata) - - thumbnail = None - imagelink = eval_xpath_getindex(newsitem, './/a[@class="imagelink"]//img', 0, None) - if imagelink is not None: - thumbnail = 'https://www.bing.com/' + imagelink.attrib.get('src') - - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'img_src': thumbnail, - 'metadata': metadata, - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages and regions from Bing-News.""" - # pylint: disable=import-outside-toplevel - - from searx.engines.bing import fetch_traits as _f - - _f(engine_traits) - - # fix market codes not known by bing news: - - # In bing the market code 'zh-cn' exists, but there is no 'news' category in - # bing for this market. Alternatively we use the the market code from Honk - # Kong. Even if this is not correct, it is better than having no hits at - # all, or sending false queries to bing that could raise the suspicion of a - # bot. - - # HINT: 'en-hk' is the region code it does not indicate the language en!! - engine_traits.regions['zh-CN'] = 'en-hk' diff --git a/searx/engines/bing_videos.py b/searx/engines/bing_videos.py deleted file mode 100644 index 41bf2d3e1..000000000 --- a/searx/engines/bing_videos.py +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Bing-Videos: description see :py:obj:`searx.engines.bing`. -""" -# pylint: disable=invalid-name - -from typing import TYPE_CHECKING -import json -from urllib.parse import urlencode - -from lxml import html - -from searx.enginelib.traits import EngineTraits -from searx.engines.bing import set_bing_cookies -from searx.engines.bing import fetch_traits # pylint: disable=unused-import -from searx.engines.bing_images import time_map - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - - -about = { - "website": 'https://www.bing.com/videos', - "wikidata_id": 'Q4914152', - "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-video-search-api', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['videos', 'web'] -paging = True -safesearch = True -time_range_support = True - -base_url = 'https://www.bing.com/videos/asyncv2' -"""Bing (Videos) async search URL.""" - - -def request(query, params): - """Assemble a Bing-Video request.""" - - engine_region = traits.get_region(params['searxng_locale'], traits.all_locale) # type: ignore - engine_language = traits.get_language(params['searxng_locale'], 'en') # type: ignore - set_bing_cookies(params, engine_language, engine_region) - - # build URL query - # - # example: https://www.bing.com/videos/asyncv2?q=foo&async=content&first=1&count=35 - - query_params = { - 'q': query, - 'async': 'content', - # to simplify the page count lets use the default of 35 images per page - 'first': (int(params.get('pageno', 1)) - 1) * 35 + 1, - 'count': 35, - } - - # time range - # - # example: one week (10080 minutes) '&qft= filterui:videoage-lt10080' '&form=VRFLTR' - - if params['time_range']: - query_params['form'] = 'VRFLTR' - query_params['qft'] = ' filterui:videoage-lt%s' % time_map[params['time_range']] - - params['url'] = base_url + '?' + urlencode(query_params) - - return params - - -def response(resp): - """Get response from Bing-Video""" - results = [] - - dom = html.fromstring(resp.text) - - for result in dom.xpath('//div[@class="dg_u"]//div[contains(@id, "mc_vtvc_video")]'): - metadata = json.loads(result.xpath('.//div[@class="vrhdata"]/@vrhm')[0]) - info = ' - '.join(result.xpath('.//div[@class="mc_vtvc_meta_block"]//span/text()')).strip() - content = '{0} - {1}'.format(metadata['du'], info) - thumbnail = result.xpath('.//div[contains(@class, "mc_vtvc_th")]//img/@src')[0] - - results.append( - { - 'url': metadata['murl'], - 'thumbnail': thumbnail, - 'title': metadata.get('vt', ''), - 'content': content, - 'template': 'videos.html', - } - ) - - return results diff --git a/searx/engines/brave.py b/searx/engines/brave.py deleted file mode 100644 index 1794cfc89..000000000 --- a/searx/engines/brave.py +++ /dev/null @@ -1,425 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Brave supports the categories listed in :py:obj:`brave_category` (General, -news, videos, images). The support of :py:obj:`paging` and :py:obj:`time range -` is limited (see remarks). - -Configured ``brave`` engines: - -.. code:: yaml - - - name: brave - engine: brave - ... - brave_category: search - time_range_support: true - paging: true - - - name: brave.images - engine: brave - ... - brave_category: images - - - name: brave.videos - engine: brave - ... - brave_category: videos - - - name: brave.news - engine: brave - ... - brave_category: news - - -.. _brave regions: - -Brave regions -============= - -Brave uses two-digit tags for the regions like ``ca`` while SearXNG deals with -locales. To get a mapping, all *officiat de-facto* languages of the Brave -region are mapped to regions in SearXNG (see :py:obj:`babel -`): - -.. code:: python - - "regions": { - .. - "en-CA": "ca", - "fr-CA": "ca", - .. - } - - -.. note:: - - The language (aka region) support of Brave's index is limited to very basic - languages. The search results for languages like Chinese or Arabic are of - low quality. - - -.. _brave languages: - -Brave languages -=============== - -Brave's language support is limited to the UI (menus, area local notations, -etc). Brave's index only seems to support a locale, but it does not seem to -support any languages in its index. The choice of available languages is very -small (and its not clear to me where the difference in UI is when switching -from en-us to en-ca or en-gb). - -In the :py:obj:`EngineTraits object ` the -UI languages are stored in a custom field named ``ui_lang``: - -.. code:: python - - "custom": { - "ui_lang": { - "ca": "ca", - "de-DE": "de-de", - "en-CA": "en-ca", - "en-GB": "en-gb", - "en-US": "en-us", - "es": "es", - "fr-CA": "fr-ca", - "fr-FR": "fr-fr", - "ja-JP": "ja-jp", - "pt-BR": "pt-br", - "sq-AL": "sq-al" - } - }, - -Implementations -=============== - -""" - -from typing import TYPE_CHECKING - -from urllib.parse import ( - urlencode, - urlparse, - parse_qs, -) - -from lxml import html - -from searx import locales -from searx.utils import ( - extract_text, - eval_xpath_list, - eval_xpath_getindex, - js_variable_to_python, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -about = { - "website": 'https://search.brave.com/', - "wikidata_id": 'Q22906900', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -base_url = "https://search.brave.com/" -categories = [] -brave_category = 'search' -"""Brave supports common web-search, video search, image and video search. - -- ``search``: Common WEB search -- ``videos``: search for videos -- ``images``: search for images -- ``news``: search for news -""" - -brave_spellcheck = False -"""Brave supports some kind of spell checking. When activated, Brave tries to -fix typos, e.g. it searches for ``food`` when the user queries for ``fooh``. In -the UI of Brave the user gets warned about this, since we can not warn the user -in SearXNG, the spellchecking is disabled by default. -""" - -send_accept_language_header = True -paging = False -"""Brave only supports paging in :py:obj:`brave_category` ``search`` (UI -category All).""" - -safesearch = True -safesearch_map = {2: 'strict', 1: 'moderate', 0: 'off'} # cookie: safesearch=off - -time_range_support = False -"""Brave only supports time-range in :py:obj:`brave_category` ``search`` (UI -category All).""" - -time_range_map = { - 'day': 'pd', - 'week': 'pw', - 'month': 'pm', - 'year': 'py', -} - - -def request(query, params): - - # Don't accept br encoding / see https://github.com/searxng/searxng/pull/1787 - params['headers']['Accept-Encoding'] = 'gzip, deflate' - - args = { - 'q': query, - } - if brave_spellcheck: - args['spellcheck'] = '1' - - if brave_category == 'search': - if params.get('pageno', 1) - 1: - args['offset'] = params.get('pageno', 1) - 1 - if time_range_map.get(params['time_range']): - args['tf'] = time_range_map.get(params['time_range']) - - params["url"] = f"{base_url}{brave_category}?{urlencode(args)}" - - # set properties in the cookies - - params['cookies']['safesearch'] = safesearch_map.get(params['safesearch'], 'off') - # the useLocation is IP based, we use cookie 'country' for the region - params['cookies']['useLocation'] = '0' - params['cookies']['summarizer'] = '0' - - engine_region = traits.get_region(params['searxng_locale'], 'all') - params['cookies']['country'] = engine_region.split('-')[-1].lower() # type: ignore - - ui_lang = locales.get_engine_locale(params['searxng_locale'], traits.custom["ui_lang"], 'en-us') - params['cookies']['ui_lang'] = ui_lang - - logger.debug("cookies %s", params['cookies']) - - -def response(resp): - - if brave_category == 'search': - return _parse_search(resp) - - datastr = "" - for line in resp.text.split("\n"): - if "const data = " in line: - datastr = line.replace("const data = ", "").strip()[:-1] - break - - json_data = js_variable_to_python(datastr) - json_resp = json_data[1]['data']['body']['response'] - - if brave_category == 'news': - return _parse_news(json_resp['news']) - - if brave_category == 'images': - return _parse_images(json_resp) - if brave_category == 'videos': - return _parse_videos(json_resp) - - raise ValueError(f"Unsupported brave category: {brave_category}") - - -def _parse_search(resp): - - result_list = [] - dom = html.fromstring(resp.text) - - answer_tag = eval_xpath_getindex(dom, '//div[@class="answer"]', 0, default=None) - if answer_tag: - url = eval_xpath_getindex(dom, '//div[@id="featured_snippet"]/a[@class="result-header"]/@href', 0, default=None) - result_list.append({'answer': extract_text(answer_tag), 'url': url}) - - # xpath_results = '//div[contains(@class, "snippet fdb") and @data-type="web"]' - xpath_results = '//div[contains(@class, "snippet ")]' - - for result in eval_xpath_list(dom, xpath_results): - - url = eval_xpath_getindex(result, './/a[contains(@class, "h")]/@href', 0, default=None) - title_tag = eval_xpath_getindex(result, './/div[contains(@class, "url")]', 0, default=None) - if url is None or title_tag is None or not urlparse(url).netloc: # partial url likely means it's an ad - continue - - content_tag = eval_xpath_getindex(result, './/div[@class="snippet-description"]', 0, default='') - img_src = eval_xpath_getindex(result, './/img[contains(@class, "thumb")]/@src', 0, default='') - - item = { - 'url': url, - 'title': extract_text(title_tag), - 'content': extract_text(content_tag), - 'img_src': img_src, - } - - video_tag = eval_xpath_getindex( - result, './/div[contains(@class, "video-snippet") and @data-macro="video"]', 0, default=None - ) - if video_tag is not None: - - # In my tests a video tag in the WEB search was most often not a - # video, except the ones from youtube .. - - iframe_src = _get_iframe_src(url) - if iframe_src: - item['iframe_src'] = iframe_src - item['template'] = 'videos.html' - item['thumbnail'] = eval_xpath_getindex(video_tag, './/img/@src', 0, default='') - else: - item['img_src'] = eval_xpath_getindex(video_tag, './/img/@src', 0, default='') - - result_list.append(item) - - return result_list - - -def _get_iframe_src(url): - parsed_url = urlparse(url) - if parsed_url.path == '/watch' and parsed_url.query: - video_id = parse_qs(parsed_url.query).get('v', []) # type: ignore - if video_id: - return 'https://www.youtube-nocookie.com/embed/' + video_id[0] # type: ignore - return None - - -def _parse_news(json_resp): - result_list = [] - - for result in json_resp["results"]: - item = { - 'url': result['url'], - 'title': result['title'], - 'content': result['description'], - } - if result['thumbnail'] is not None: - item['img_src'] = result['thumbnail']['src'] - result_list.append(item) - - return result_list - - -def _parse_images(json_resp): - result_list = [] - - for result in json_resp["results"]: - item = { - 'url': result['url'], - 'title': result['title'], - 'content': result['description'], - 'template': 'images.html', - 'img_format': result['properties']['format'], - 'source': result['source'], - 'img_src': result['properties']['url'], - } - result_list.append(item) - - return result_list - - -def _parse_videos(json_resp): - result_list = [] - - for result in json_resp["results"]: - - url = result['url'] - item = { - 'url': url, - 'title': result['title'], - 'content': result['description'], - 'template': 'videos.html', - 'length': result['video']['duration'], - 'duration': result['video']['duration'], - } - - if result['thumbnail'] is not None: - item['thumbnail'] = result['thumbnail']['src'] - - iframe_src = _get_iframe_src(url) - if iframe_src: - item['iframe_src'] = iframe_src - - result_list.append(item) - - return result_list - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch :ref:`languages ` and :ref:`regions ` from Brave.""" - - # pylint: disable=import-outside-toplevel, too-many-branches - - import babel.languages - from searx.locales import region_tag, language_tag - from searx.network import get # see https://github.com/searxng/searxng/issues/762 - - engine_traits.custom["ui_lang"] = {} - - headers = { - 'Accept-Encoding': 'gzip, deflate', - } - lang_map = {'no': 'nb'} # norway - - # languages (UI) - - resp = get('https://search.brave.com/settings', headers=headers) - - if not resp.ok: # type: ignore - print("ERROR: response from Brave is not OK.") - dom = html.fromstring(resp.text) # type: ignore - - for option in dom.xpath('//div[@id="language-select"]//option'): - - ui_lang = option.get('value') - try: - if '-' in ui_lang: - sxng_tag = region_tag(babel.Locale.parse(ui_lang, sep='-')) - else: - sxng_tag = language_tag(babel.Locale.parse(ui_lang)) - - except babel.UnknownLocaleError: - print("ERROR: can't determine babel locale of Brave's (UI) language %s" % ui_lang) - continue - - conflict = engine_traits.custom["ui_lang"].get(sxng_tag) - if conflict: - if conflict != ui_lang: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, ui_lang)) - continue - engine_traits.custom["ui_lang"][sxng_tag] = ui_lang - - # search regions of brave - - resp = get('https://cdn.search.brave.com/serp/v2/_app/immutable/chunks/parameters.734c106a.js', headers=headers) - - if not resp.ok: # type: ignore - print("ERROR: response from Brave is not OK.") - - country_js = resp.text[resp.text.index("options:{all") + len('options:') :] - country_js = country_js[: country_js.index("},k={default")] - country_tags = js_variable_to_python(country_js) - - for k, v in country_tags.items(): - if k == 'all': - engine_traits.all_locale = 'all' - continue - country_tag = v['value'] - - # add official languages of the country .. - for lang_tag in babel.languages.get_official_languages(country_tag, de_facto=True): - lang_tag = lang_map.get(lang_tag, lang_tag) - sxng_tag = region_tag(babel.Locale.parse('%s_%s' % (lang_tag, country_tag.upper()))) - # print("%-20s: %s <-- %s" % (v['label'], country_tag, sxng_tag)) - - conflict = engine_traits.regions.get(sxng_tag) - if conflict: - if conflict != country_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, country_tag)) - continue - engine_traits.regions[sxng_tag] = country_tag diff --git a/searx/engines/bt4g.py b/searx/engines/bt4g.py deleted file mode 100644 index 786aa1920..000000000 --- a/searx/engines/bt4g.py +++ /dev/null @@ -1,124 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""BT4G_ (bt4g.com) is not a tracker and doesn't store any content and only -collects torrent metadata (such as file names and file sizes) and a magnet link -(torrent identifier). - -This engine does not parse the HTML page because there is an API in XML (RSS). -The RSS feed provides fewer data like amount of seeders/leechers and the files -in the torrent file. It's a tradeoff for a "stable" engine as the XML from RSS -content will change way less than the HTML page. - -.. _BT4G: https://bt4g.com/ - -Configuration -============= - -The engine has the following additional settings: - -- :py:obj:`bt4g_order_by` -- :py:obj:`bt4g_category` - -With this options a SearXNG maintainer is able to configure **additional** -engines for specific torrent searches. For example a engine to search only for -Movies and sort the result list by the count of seeders. - -.. code:: yaml - - - name: bt4g.movie - engine: bt4g - shortcut: bt4gv - categories: video - bt4g_order_by: seeders - bt4g_category: 'movie' - -Implementations -=============== - -""" - -import re -from datetime import datetime -from urllib.parse import quote - -from lxml import etree - -from searx.utils import get_torrent_size - -# about -about = { - "website": 'https://bt4gprx.com', - "use_official_api": False, - "require_api_key": False, - "results": 'XML', -} - -# engine dependent config -categories = ['files'] -paging = True -time_range_support = True - -# search-url -url = 'https://bt4gprx.com' -search_url = url + '/search?q={search_term}&orderby={order_by}&category={category}&p={pageno}&page=rss' -bt4g_order_by = 'relevance' -"""Result list can be ordered by ``relevance`` (default), ``size``, ``seeders`` -or ``time``. - -.. hint:: - - When *time_range* is activate, the results always ordered by ``time``. -""" - -bt4g_category = 'all' -"""BT$G offers categories: ``all`` (default), ``audio``, ``movie``, ``doc``, -``app`` and `` other``. -""" - - -def request(query, params): - - order_by = bt4g_order_by - if params['time_range']: - order_by = 'time' - - params['url'] = search_url.format( - search_term=quote(query), - order_by=order_by, - category=bt4g_category, - pageno=params['pageno'], - ) - return params - - -def response(resp): - results = [] - - search_results = etree.XML(resp.content) - - # return empty array if nothing is found - if len(search_results) == 0: - return [] - - for entry in search_results.xpath('./channel/item'): - title = entry.find("title").text - link = entry.find("guid").text - fullDescription = entry.find("description").text.split('
') - filesize = fullDescription[1] - filesizeParsed = re.split(r"([A-Z]+)", filesize) - magnetlink = entry.find("link").text - pubDate = entry.find("pubDate").text - results.append( - { - 'url': link, - 'title': title, - 'magnetlink': magnetlink, - 'seed': 'N/A', - 'leech': 'N/A', - 'filesize': get_torrent_size(filesizeParsed[0], filesizeParsed[1]), - 'publishedDate': datetime.strptime(pubDate, '%a,%d %b %Y %H:%M:%S %z'), - 'template': 'torrent.html', - } - ) - - return results diff --git a/searx/engines/btdigg.py b/searx/engines/btdigg.py deleted file mode 100644 index c5dd92105..000000000 --- a/searx/engines/btdigg.py +++ /dev/null @@ -1,89 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - BTDigg (Videos, Music, Files) -""" - -from lxml import html -from urllib.parse import quote, urljoin -from searx.utils import extract_text, get_torrent_size - -# about -about = { - "website": 'https://btdig.com', - "wikidata_id": 'Q4836698', - "official_api_documentation": {'url': 'https://btdig.com/contacts', 'comment': 'on demand'}, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['files'] -paging = True - -# search-url -url = 'https://btdig.com' -search_url = url + '/search?q={search_term}&p={pageno}' - - -# do search-request -def request(query, params): - params['url'] = search_url.format(search_term=quote(query), pageno=params['pageno'] - 1) - - return params - - -# get response from search-request -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - search_res = dom.xpath('//div[@class="one_result"]') - - # return empty array if nothing is found - if not search_res: - return [] - - # parse results - for result in search_res: - link = result.xpath('.//div[@class="torrent_name"]//a')[0] - href = urljoin(url, link.attrib.get('href')) - title = extract_text(link) - - excerpt = result.xpath('.//div[@class="torrent_excerpt"]')[0] - content = html.tostring(excerpt, encoding='unicode', method='text', with_tail=False) - # it is better to emit
instead of |, but html tags are verboten - content = content.strip().replace('\n', ' | ') - content = ' '.join(content.split()) - - filesize = result.xpath('.//span[@class="torrent_size"]/text()')[0].split()[0] - filesize_multiplier = result.xpath('.//span[@class="torrent_size"]/text()')[0].split()[1] - files = (result.xpath('.//span[@class="torrent_files"]/text()') or ['1'])[0] - - # convert filesize to byte if possible - filesize = get_torrent_size(filesize, filesize_multiplier) - - # convert files to int if possible - try: - files = int(files) - except: - files = None - - magnetlink = result.xpath('.//div[@class="torrent_magnet"]//a')[0].attrib['href'] - - # append result - results.append( - { - 'url': href, - 'title': title, - 'content': content, - 'filesize': filesize, - 'files': files, - 'magnetlink': magnetlink, - 'template': 'torrent.html', - } - ) - - # return results sorted by seeder - return results diff --git a/searx/engines/chefkoch.py b/searx/engines/chefkoch.py deleted file mode 100644 index 9dc6ae0dd..000000000 --- a/searx/engines/chefkoch.py +++ /dev/null @@ -1,72 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Chefkoch is a German database of recipes. -""" - -from datetime import datetime -from urllib.parse import urlencode - -about = { - 'website': "https://www.chefkoch.de", - 'official_api_documentation': None, - 'use_official_api': False, - 'require_api_key': False, - 'results': 'JSON', - 'language': 'de', -} - -paging = True -categories = [] - -number_of_results = 20 -skip_premium = True - - -base_url = "https://api.chefkoch.de" -thumbnail_format = "crop-240x300" - - -def request(query, params): - args = {'query': query, 'limit': number_of_results, 'offset': (params['pageno'] - 1) * number_of_results} - params['url'] = f"{base_url}/v2/search-gateway/recipes?{urlencode(args)}" - return params - - -def response(resp): - results = [] - - json = resp.json() - - for result in json['results']: - recipe = result['recipe'] - - if skip_premium and (recipe['isPremium'] or recipe['isPlus']): - continue - - publishedDate = None - if recipe['submissionDate']: - publishedDate = datetime.strptime(result['recipe']['submissionDate'][:19], "%Y-%m-%dT%H:%M:%S") - - content = ( - "difficulity: " - + str(recipe['difficulty']) - + " / preparation time: " - + str(recipe['preparationTime']) - + "min / ingredient count: " - + str(recipe['ingredientCount']) - ) - - if recipe['subtitle']: - content = f"{recipe['subtitle']} / {content}" - - results.append( - { - 'url': recipe['siteUrl'], - 'title': recipe['title'], - 'content': content, - 'thumbnail': recipe['previewImageUrlTemplate'].replace("", thumbnail_format), - 'publishedDate': publishedDate, - } - ) - - return results diff --git a/searx/engines/command.py b/searx/engines/command.py deleted file mode 100644 index ffb87509a..000000000 --- a/searx/engines/command.py +++ /dev/null @@ -1,243 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -"""With *command engines* administrators can run engines to integrate arbitrary -shell commands. - -.. attention:: - - When creating and enabling a ``command`` engine on a public instance, you - must be careful to avoid leaking private data. - -The easiest solution is to limit the access by setting ``tokens`` as described -in section :ref:`private engines`. The engine base is flexible. Only your -imagination can limit the power of this engine (and maybe security concerns). - -Configuration -============= - -The following options are available: - -``command``: - A comma separated list of the elements of the command. A special token - ``{{QUERY}}`` tells where to put the search terms of the user. Example: - - .. code:: yaml - - ['ls', '-l', '-h', '{{QUERY}}'] - -``delimiter``: - A mapping containing a delimiter ``char`` and the *titles* of each element in - ``keys``. - -``parse_regex``: - A dict containing the regular expressions for each result key. - -``query_type``: - - The expected type of user search terms. Possible values: ``path`` and - ``enum``. - - ``path``: - Checks if the user provided path is inside the working directory. If not, - the query is not executed. - - ``enum``: - Is a list of allowed search terms. If the user submits something which is - not included in the list, the query returns an error. - -``query_enum``: - A list containing allowed search terms if ``query_type`` is set to ``enum``. - -``working_dir``: - The directory where the command has to be executed. Default: ``./``. - -``result_separator``: - The character that separates results. Default: ``\\n``. - -Example -======= - -The example engine below can be used to find files with a specific name in the -configured working directory: - -.. code:: yaml - - - name: find - engine: command - command: ['find', '.', '-name', '{{QUERY}}'] - query_type: path - shortcut: fnd - delimiter: - chars: ' ' - keys: ['line'] - -Implementations -=============== -""" - -import re -from os.path import expanduser, isabs, realpath, commonprefix -from shlex import split as shlex_split -from subprocess import Popen, PIPE -from threading import Thread - -from searx import logger - - -engine_type = 'offline' -paging = True -command = [] -delimiter = {} -parse_regex = {} -query_type = '' -query_enum = [] -environment_variables = {} -working_dir = realpath('.') -result_separator = '\n' -result_template = 'key-value.html' -timeout = 4.0 - -_command_logger = logger.getChild('command') -_compiled_parse_regex = {} - - -def init(engine_settings): - check_parsing_options(engine_settings) - - if 'command' not in engine_settings: - raise ValueError('engine command : missing configuration key: command') - - global command, working_dir, delimiter, parse_regex, environment_variables - - command = engine_settings['command'] - - if 'working_dir' in engine_settings: - working_dir = engine_settings['working_dir'] - if not isabs(engine_settings['working_dir']): - working_dir = realpath(working_dir) - - if 'parse_regex' in engine_settings: - parse_regex = engine_settings['parse_regex'] - for result_key, regex in parse_regex.items(): - _compiled_parse_regex[result_key] = re.compile(regex, flags=re.MULTILINE) - if 'delimiter' in engine_settings: - delimiter = engine_settings['delimiter'] - - if 'environment_variables' in engine_settings: - environment_variables = engine_settings['environment_variables'] - - -def search(query, params): - cmd = _get_command_to_run(query) - if not cmd: - return [] - - results = [] - reader_thread = Thread(target=_get_results_from_process, args=(results, cmd, params['pageno'])) - reader_thread.start() - reader_thread.join(timeout=timeout) - - return results - - -def _get_command_to_run(query): - params = shlex_split(query) - __check_query_params(params) - - cmd = [] - for c in command: - if c == '{{QUERY}}': - cmd.extend(params) - else: - cmd.append(c) - - return cmd - - -def _get_results_from_process(results, cmd, pageno): - leftover = '' - count = 0 - start, end = __get_results_limits(pageno) - with Popen(cmd, stdout=PIPE, stderr=PIPE, env=environment_variables) as process: - line = process.stdout.readline() - while line: - buf = leftover + line.decode('utf-8') - raw_results = buf.split(result_separator) - if raw_results[-1]: - leftover = raw_results[-1] - raw_results = raw_results[:-1] - - for raw_result in raw_results: - result = __parse_single_result(raw_result) - if result is None: - _command_logger.debug('skipped result:', raw_result) - continue - - if start <= count and count <= end: - result['template'] = result_template - results.append(result) - - count += 1 - if end < count: - return results - - line = process.stdout.readline() - - return_code = process.wait(timeout=timeout) - if return_code != 0: - raise RuntimeError('non-zero return code when running command', cmd, return_code) - - -def __get_results_limits(pageno): - start = (pageno - 1) * 10 - end = start + 9 - return start, end - - -def __check_query_params(params): - if not query_type: - return - - if query_type == 'path': - query_path = params[-1] - query_path = expanduser(query_path) - if commonprefix([realpath(query_path), working_dir]) != working_dir: - raise ValueError('requested path is outside of configured working directory') - elif query_type == 'enum' and len(query_enum) > 0: - for param in params: - if param not in query_enum: - raise ValueError('submitted query params is not allowed', param, 'allowed params:', query_enum) - - -def check_parsing_options(engine_settings): - """Checks if delimiter based parsing or regex parsing is configured correctly""" - - if 'delimiter' not in engine_settings and 'parse_regex' not in engine_settings: - raise ValueError('failed to init settings for parsing lines: missing delimiter or parse_regex') - if 'delimiter' in engine_settings and 'parse_regex' in engine_settings: - raise ValueError('failed to init settings for parsing lines: too many settings') - - if 'delimiter' in engine_settings: - if 'chars' not in engine_settings['delimiter'] or 'keys' not in engine_settings['delimiter']: - raise ValueError - - -def __parse_single_result(raw_result): - """Parses command line output based on configuration""" - - result = {} - - if delimiter: - elements = raw_result.split(delimiter['chars'], maxsplit=len(delimiter['keys']) - 1) - if len(elements) != len(delimiter['keys']): - return {} - for i in range(len(elements)): - result[delimiter['keys'][i]] = elements[i] - - if parse_regex: - for result_key, regex in _compiled_parse_regex.items(): - found = regex.search(raw_result) - if not found: - return {} - result[result_key] = raw_result[found.start() : found.end()] - - return result diff --git a/searx/engines/core.py b/searx/engines/core.py deleted file mode 100644 index 2fa66e226..000000000 --- a/searx/engines/core.py +++ /dev/null @@ -1,116 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""CORE (science) - -""" - -from datetime import datetime -from urllib.parse import urlencode - -from searx.exceptions import SearxEngineAPIException - -about = { - "website": 'https://core.ac.uk', - "wikidata_id": 'Q22661180', - "official_api_documentation": 'https://core.ac.uk/documentation/api/', - "use_official_api": True, - "require_api_key": True, - "results": 'JSON', -} - -categories = ['science', 'scientific publications'] -paging = True -nb_per_page = 10 - -api_key = 'unset' - -base_url = 'https://core.ac.uk:443/api-v2/search/' -search_string = '{query}?page={page}&pageSize={nb_per_page}&apiKey={apikey}' - - -def request(query, params): - - if api_key == 'unset': - raise SearxEngineAPIException('missing CORE API key') - - search_path = search_string.format( - query=urlencode({'q': query}), - nb_per_page=nb_per_page, - page=params['pageno'], - apikey=api_key, - ) - params['url'] = base_url + search_path - - return params - - -def response(resp): - results = [] - json_data = resp.json() - - for result in json_data['data']: - source = result['_source'] - url = None - if source.get('urls'): - url = source['urls'][0].replace('http://', 'https://', 1) - - if url is None and source.get('doi'): - # use the DOI reference - url = 'https://doi.org/' + source['doi'] - - if url is None and source.get('downloadUrl'): - # use the downloadUrl - url = source['downloadUrl'] - - if url is None and source.get('identifiers'): - # try to find an ark id, see - # https://www.wikidata.org/wiki/Property:P8091 - # and https://en.wikipedia.org/wiki/Archival_Resource_Key - arkids = [ - identifier[5:] # 5 is the length of "ark:/" - for identifier in source.get('identifiers') - if isinstance(identifier, str) and identifier.startswith('ark:/') - ] - if len(arkids) > 0: - url = 'https://n2t.net/' + arkids[0] - - if url is None: - continue - - publishedDate = None - time = source['publishedDate'] or source['depositedDate'] - if time: - publishedDate = datetime.fromtimestamp(time / 1000) - - # sometimes the 'title' is None / filter None values - journals = [j['title'] for j in (source.get('journals') or []) if j['title']] - - publisher = source['publisher'] - if publisher: - publisher = source['publisher'].strip("'") - - results.append( - { - 'template': 'paper.html', - 'title': source['title'], - 'url': url, - 'content': source['description'] or '', - # 'comments': '', - 'tags': source['topics'], - 'publishedDate': publishedDate, - 'type': (source['types'] or [None])[0], - 'authors': source['authors'], - 'editor': ', '.join(source['contributors'] or []), - 'publisher': publisher, - 'journal': ', '.join(journals), - # 'volume': '', - # 'pages' : '', - # 'number': '', - 'doi': source['doi'], - 'issn': [x for x in [source.get('issn')] if x], - 'isbn': [x for x in [source.get('isbn')] if x], # exists in the rawRecordXml - 'pdf_url': source.get('repositoryDocument', {}).get('pdfOrigin'), - } - ) - - return results diff --git a/searx/engines/crossref.py b/searx/engines/crossref.py deleted file mode 100644 index c2ed7763f..000000000 --- a/searx/engines/crossref.py +++ /dev/null @@ -1,64 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""CrossRef""" - -from urllib.parse import urlencode -from datetime import datetime - -about = { - "website": "https://www.crossref.org/", - "wikidata_id": "Q5188229", - "official_api_documentation": "https://api.crossref.org", - "use_official_api": False, - "require_api_key": False, - "results": "JSON", -} - -categories = ["science", "scientific publications"] -paging = True -search_url = "https://api.crossref.org/works" - - -def request(query, params): - params["url"] = search_url + "?" + urlencode({"query": query, "offset": 20 * (params["pageno"] - 1)}) - return params - - -def response(resp): - results = [] - for record in resp.json()["message"]["items"]: - - if record["type"] == "component": - # These seem to be files published along with papers. Not something you'd search for - continue - result = { - "template": "paper.html", - "content": record.get("abstract", ""), - "doi": record.get("DOI"), - "pages": record.get("page"), - "publisher": record.get("publisher"), - "tags": record.get("subject"), - "type": record.get("type"), - "url": record.get("URL"), - "volume": record.get("volume"), - } - if record["type"] == "book-chapter": - result["title"] = record["container-title"][0] - if record["title"][0].lower().strip() != result["title"].lower().strip(): - result["title"] += f" ({record['title'][0]})" - else: - result["title"] = record["title"][0] if "title" in record else record.get("container-title", [None])[0] - result["journal"] = record.get("container-title", [None])[0] if "title" in record else None - - if "resource" in record and "primary" in record["resource"] and "URL" in record["resource"]["primary"]: - result["url"] = record["resource"]["primary"]["URL"] - if "published" in record and "date-parts" in record["published"]: - result["publishedDate"] = datetime(*(record["published"]["date-parts"][0] + [1, 1][:3])) - result["authors"] = [a.get("given", "") + " " + a.get("family", "") for a in record.get("author", [])] - result["isbn"] = record.get("isbn") or [i["value"] for i in record.get("isbn-type", [])] - # All the links are not PDFs, even if the URL ends with ".pdf" - # result["pdf_url"] = record.get("link", [{"URL": None}])[0]["URL"] - - results.append(result) - - return results diff --git a/searx/engines/currency_convert.py b/searx/engines/currency_convert.py deleted file mode 100644 index 2e87ef751..000000000 --- a/searx/engines/currency_convert.py +++ /dev/null @@ -1,51 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Currency convert (DuckDuckGo) -""" - -import json - -# about -about = { - "website": 'https://duckduckgo.com/', - "wikidata_id": 'Q12805', - "official_api_documentation": 'https://duckduckgo.com/api', - "use_official_api": False, - "require_api_key": False, - "results": 'JSONP', - "description": "Service from DuckDuckGo.", -} - -engine_type = 'online_currency' -categories = [] -base_url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}' -weight = 100 - -https_support = True - - -def request(_query, params): - params['url'] = base_url.format(params['from'], params['to']) - return params - - -def response(resp): - # remove first and last lines to get only json - json_resp = resp.text[resp.text.find('\n') + 1 : resp.text.rfind('\n') - 2] - try: - conversion_rate = float(json.loads(json_resp)["to"][0]["mid"]) - except IndexError: - return [] - answer = '{0} {1} = {2} {3}, 1 {1} ({5}) = {4} {3} ({6})'.format( - resp.search_params['amount'], - resp.search_params['from'], - resp.search_params['amount'] * conversion_rate, - resp.search_params['to'], - conversion_rate, - resp.search_params['from_name'], - resp.search_params['to_name'], - ) - - url = f"https://duckduckgo.com/?q={resp.search_params['from']}+to+{resp.search_params['to']}" - - return [{"answer": answer, "url": url}] diff --git a/searx/engines/dailymotion.py b/searx/engines/dailymotion.py deleted file mode 100644 index 99da9616c..000000000 --- a/searx/engines/dailymotion.py +++ /dev/null @@ -1,252 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -Dailymotion (Videos) -~~~~~~~~~~~~~~~~~~~~ - -.. _REST GET: https://developers.dailymotion.com/tools/ -.. _Global API Parameters: https://developers.dailymotion.com/api/#global-parameters -.. _Video filters API: https://developers.dailymotion.com/api/#video-filters -.. _Fields selection: https://developers.dailymotion.com/api/#fields-selection - -""" - -from typing import TYPE_CHECKING - -from datetime import datetime, timedelta -from urllib.parse import urlencode -import time -import babel - -from searx.network import get, raise_for_httperror # see https://github.com/searxng/searxng/issues/762 -from searx.utils import html_to_text -from searx.exceptions import SearxEngineAPIException -from searx.locales import region_tag, language_tag -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://www.dailymotion.com', - "wikidata_id": 'Q769222', - "official_api_documentation": 'https://www.dailymotion.com/developer', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['videos'] -paging = True -number_of_results = 10 - -time_range_support = True -time_delta_dict = { - "day": timedelta(days=1), - "week": timedelta(days=7), - "month": timedelta(days=31), - "year": timedelta(days=365), -} - -safesearch = True -safesearch_params = { - 2: {'is_created_for_kids': 'true'}, - 1: {'is_created_for_kids': 'true'}, - 0: {}, -} -"""True if this video is "Created for Kids" / intends to target an audience -under the age of 16 (``is_created_for_kids`` in `Video filters API`_ ) -""" - -family_filter_map = { - 2: 'true', - 1: 'true', - 0: 'false', -} -"""By default, the family filter is turned on. Setting this parameter to -``false`` will stop filtering-out explicit content from searches and global -contexts (``family_filter`` in `Global API Parameters`_ ). -""" - -result_fields = [ - 'allow_embed', - 'description', - 'title', - 'created_time', - 'duration', - 'url', - 'thumbnail_360_url', - 'id', -] -"""`Fields selection`_, by default, a few fields are returned. To request more -specific fields, the ``fields`` parameter is used with the list of fields -SearXNG needs in the response to build a video result list. -""" - -search_url = 'https://api.dailymotion.com/videos?' -"""URL to retrieve a list of videos. - -- `REST GET`_ -- `Global API Parameters`_ -- `Video filters API`_ -""" - -iframe_src = "https://www.dailymotion.com/embed/video/{video_id}" -"""URL template to embed video in SearXNG's result list.""" - - -def request(query, params): - - if not query: - return False - - eng_region: str = traits.get_region(params['searxng_locale'], 'en_US') # type: ignore - eng_lang = traits.get_language(params['searxng_locale'], 'en') - - args = { - 'search': query, - 'family_filter': family_filter_map.get(params['safesearch'], 'false'), - 'thumbnail_ratio': 'original', # original|widescreen|square - # https://developers.dailymotion.com/api/#video-filters - 'languages': eng_lang, - 'page': params['pageno'], - 'password_protected': 'false', - 'private': 'false', - 'sort': 'relevance', - 'limit': number_of_results, - 'fields': ','.join(result_fields), - } - - args.update(safesearch_params.get(params['safesearch'], {})) - - # Don't add localization and country arguments if the user does select a - # language (:de, :en, ..) - - if len(params['searxng_locale'].split('-')) > 1: - # https://developers.dailymotion.com/api/#global-parameters - args['localization'] = eng_region - args['country'] = eng_region.split('_')[1] - # Insufficient rights for the `ams_country' parameter of route `GET /videos' - # 'ams_country': eng_region.split('_')[1], - - time_delta = time_delta_dict.get(params["time_range"]) - if time_delta: - created_after = datetime.now() - time_delta - args['created_after'] = datetime.timestamp(created_after) - - query_str = urlencode(args) - params['url'] = search_url + query_str - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_res = resp.json() - - # check for an API error - if 'error' in search_res: - raise SearxEngineAPIException(search_res['error'].get('message')) - - raise_for_httperror(resp) - - # parse results - for res in search_res.get('list', []): - - title = res['title'] - url = res['url'] - - content = html_to_text(res['description']) - if len(content) > 300: - content = content[:300] + '...' - - publishedDate = datetime.fromtimestamp(res['created_time'], None) - - length = time.gmtime(res.get('duration')) - if length.tm_hour: - length = time.strftime("%H:%M:%S", length) - else: - length = time.strftime("%M:%S", length) - - thumbnail = res['thumbnail_360_url'] - thumbnail = thumbnail.replace("http://", "https://") - - item = { - 'template': 'videos.html', - 'url': url, - 'title': title, - 'content': content, - 'publishedDate': publishedDate, - 'length': length, - 'thumbnail': thumbnail, - } - - # HINT: no mater what the value is, without API token videos can't shown - # embedded - if res['allow_embed']: - item['iframe_src'] = iframe_src.format(video_id=res['id']) - - results.append(item) - - # return results - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch locales & languages from dailymotion. - - Locales fetched from `api/locales `_. - There are duplications in the locale codes returned from Dailymotion which - can be ignored:: - - en_EN --> en_GB, en_US - ar_AA --> ar_EG, ar_AE, ar_SA - - The language list `api/languages `_ - contains over 7000 *languages* codes (see PR1071_). We use only those - language codes that are used in the locales. - - .. _PR1071: https://github.com/searxng/searxng/pull/1071 - - """ - - resp = get('https://api.dailymotion.com/locales') - if not resp.ok: # type: ignore - print("ERROR: response from dailymotion/locales is not OK.") - - for item in resp.json()['list']: # type: ignore - eng_tag = item['locale'] - if eng_tag in ('en_EN', 'ar_AA'): - continue - try: - sxng_tag = region_tag(babel.Locale.parse(eng_tag)) - except babel.UnknownLocaleError: - print("ERROR: item unknown --> %s" % item) - continue - - conflict = engine_traits.regions.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.regions[sxng_tag] = eng_tag - - locale_lang_list = [x.split('_')[0] for x in engine_traits.regions.values()] - - resp = get('https://api.dailymotion.com/languages') - if not resp.ok: # type: ignore - print("ERROR: response from dailymotion/languages is not OK.") - - for item in resp.json()['list']: # type: ignore - eng_tag = item['code'] - if eng_tag in locale_lang_list: - sxng_tag = language_tag(babel.Locale.parse(eng_tag)) - engine_traits.languages[sxng_tag] = eng_tag diff --git a/searx/engines/deepl.py b/searx/engines/deepl.py deleted file mode 100644 index 85072710f..000000000 --- a/searx/engines/deepl.py +++ /dev/null @@ -1,62 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Deepl translation engine""" - -from json import loads - -about = { - "website": 'https://deepl.com', - "wikidata_id": 'Q43968444', - "official_api_documentation": 'https://www.deepl.com/docs-api', - "use_official_api": True, - "require_api_key": True, - "results": 'JSON', -} - -engine_type = 'online_dictionary' -categories = ['general'] - -url = 'https://api-free.deepl.com/v2/translate' -api_key = None - - -def request(_query, params): - '''pre-request callback - - params: - - - ``method`` : POST/GET - - ``headers``: {} - - ``data``: {} # if method == POST - - ``url``: '' - - ``category``: 'search category' - - ``pageno``: 1 # number of the requested page - ''' - - params['url'] = url - params['method'] = 'POST' - params['data'] = {'auth_key': api_key, 'text': params['query'], 'target_lang': params['to_lang'][1]} - - return params - - -def response(resp): - results = [] - result = loads(resp.text) - translations = result['translations'] - - infobox = "
" - - for translation in translations: - infobox += f"
{translation['text']}
" - - infobox += "
" - - results.append( - { - 'infobox': 'Deepl', - 'content': infobox, - } - ) - - return results diff --git a/searx/engines/deezer.py b/searx/engines/deezer.py deleted file mode 100644 index 63c71e3cc..000000000 --- a/searx/engines/deezer.py +++ /dev/null @@ -1,60 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Deezer (Music) -""" - -from json import loads -from urllib.parse import urlencode - -# about -about = { - "website": 'https://deezer.com', - "wikidata_id": 'Q602243', - "official_api_documentation": 'https://developers.deezer.com/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['music'] -paging = True - -# search-url -url = 'https://api.deezer.com/' -search_url = url + 'search?{query}&index={offset}' -iframe_src = "https://www.deezer.com/plugins/player?type=tracks&id={audioid}" - -# do search-request -def request(query, params): - offset = (params['pageno'] - 1) * 25 - - params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset) - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_res = loads(resp.text) - - # parse results - for result in search_res.get('data', []): - if result['type'] == 'track': - title = result['title'] - url = result['link'] - - if url.startswith('http://'): - url = 'https' + url[4:] - - content = '{} - {} - {}'.format(result['artist']['name'], result['album']['title'], result['title']) - - # append result - results.append( - {'url': url, 'title': title, 'iframe_src': iframe_src.format(audioid=result['id']), 'content': content} - ) - - # return results - return results diff --git a/searx/engines/demo_offline.py b/searx/engines/demo_offline.py deleted file mode 100644 index 9d6e3b52d..000000000 --- a/searx/engines/demo_offline.py +++ /dev/null @@ -1,73 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Within this module we implement a *demo offline engine*. Do not look to -close to the implementation, its just a simple example. To get in use of this -*demo* engine add the following entry to your engines list in ``settings.yml``: - -.. code:: yaml - - - name: my offline engine - engine: demo_offline - shortcut: demo - disabled: false - -""" - -import json - -engine_type = 'offline' -categories = ['general'] -disabled = True -timeout = 2.0 - -about = { - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -# if there is a need for globals, use a leading underline -_my_offline_engine = None - - -def init(engine_settings=None): - """Initialization of the (offline) engine. The origin of this demo engine is a - simple json string which is loaded in this example while the engine is - initialized. - - """ - global _my_offline_engine # pylint: disable=global-statement - - _my_offline_engine = ( - '[ {"value": "%s"}' - ', {"value":"first item"}' - ', {"value":"second item"}' - ', {"value":"third item"}' - ']' % engine_settings.get('name') - ) - - -def search(query, request_params): - """Query (offline) engine and return results. Assemble the list of results from - your local engine. In this demo engine we ignore the 'query' term, usual - you would pass the 'query' term to your local engine to filter out the - results. - - """ - ret_val = [] - - result_list = json.loads(_my_offline_engine) - - for row in result_list: - entry = { - 'query': query, - 'language': request_params['searxng_locale'], - 'value': row.get("value"), - # choose a result template or comment out to use the *default* - 'template': 'key-value.html', - } - ret_val.append(entry) - - return ret_val diff --git a/searx/engines/demo_online.py b/searx/engines/demo_online.py deleted file mode 100644 index 08add5371..000000000 --- a/searx/engines/demo_online.py +++ /dev/null @@ -1,100 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Within this module we implement a *demo online engine*. Do not look to -close to the implementation, its just a simple example which queries `The Art -Institute of Chicago `_ - -To get in use of this *demo* engine add the following entry to your engines -list in ``settings.yml``: - -.. code:: yaml - - - name: my online engine - engine: demo_online - shortcut: demo - disabled: false - -""" - -from json import loads -from urllib.parse import urlencode - -engine_type = 'online' -send_accept_language_header = True -categories = ['general'] -disabled = True -timeout = 2.0 -categories = ['images'] -paging = True -page_size = 20 - -search_api = 'https://api.artic.edu/api/v1/artworks/search?' -image_api = 'https://www.artic.edu/iiif/2/' - -about = { - "website": 'https://www.artic.edu', - "wikidata_id": 'Q239303', - "official_api_documentation": 'http://api.artic.edu/docs/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - - -# if there is a need for globals, use a leading underline -_my_online_engine = None - - -def init(engine_settings): - """Initialization of the (online) engine. If no initialization is needed, drop - this init function. - - """ - global _my_online_engine # pylint: disable=global-statement - _my_online_engine = engine_settings.get('name') - - -def request(query, params): - """Build up the ``params`` for the online request. In this example we build a - URL to fetch images from `artic.edu `__ - - """ - args = urlencode( - { - 'q': query, - 'page': params['pageno'], - 'fields': 'id,title,artist_display,medium_display,image_id,date_display,dimensions,artist_titles', - 'limit': page_size, - } - ) - params['url'] = search_api + args - return params - - -def response(resp): - """Parse out the result items from the response. In this example we parse the - response from `api.artic.edu `__ and filter out all - images. - - """ - results = [] - json_data = loads(resp.text) - - for result in json_data['data']: - - if not result['image_id']: - continue - - results.append( - { - 'url': 'https://artic.edu/artworks/%(id)s' % result, - 'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result, - 'content': result['medium_display'], - 'author': ', '.join(result['artist_titles']), - 'img_src': image_api + '/%(image_id)s/full/843,/0/default.jpg' % result, - 'img_format': result['dimensions'], - 'template': 'images.html', - } - ) - - return results diff --git a/searx/engines/deviantart.py b/searx/engines/deviantart.py deleted file mode 100644 index fa88d9389..000000000 --- a/searx/engines/deviantart.py +++ /dev/null @@ -1,88 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Deviantart (Images) - -""" - -import urllib.parse -from lxml import html - -from searx.utils import extract_text, eval_xpath, eval_xpath_list - -# about -about = { - "website": 'https://www.deviantart.com/', - "wikidata_id": 'Q46523', - "official_api_documentation": 'https://www.deviantart.com/developers/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['images'] -paging = True - -# search-url -base_url = 'https://www.deviantart.com' - -results_xpath = '//div[@class="_2pZkk"]/div/div/a' -url_xpath = './@href' -thumbnail_src_xpath = './div/img/@src' -img_src_xpath = './div/img/@srcset' -title_xpath = './@aria-label' -premium_xpath = '../div/div/div/text()' -premium_keytext = 'Watch the artist to view this deviation' -cursor_xpath = '(//a[@class="_1OGeq"]/@href)[last()]' - - -def request(query, params): - - # https://www.deviantart.com/search?q=foo - - nextpage_url = params['engine_data'].get('nextpage') - # don't use nextpage when user selected to jump back to page 1 - if params['pageno'] > 1 and nextpage_url is not None: - params['url'] = nextpage_url - else: - params['url'] = f"{base_url}/search?{urllib.parse.urlencode({'q': query})}" - - return params - - -def response(resp): - - results = [] - dom = html.fromstring(resp.text) - - for result in eval_xpath_list(dom, results_xpath): - # skip images that are blurred - _text = extract_text(eval_xpath(result, premium_xpath)) - if _text and premium_keytext in _text: - continue - img_src = extract_text(eval_xpath(result, img_src_xpath)) - if img_src: - img_src = img_src.split(' ')[0] - parsed_url = urllib.parse.urlparse(img_src) - img_src = parsed_url._replace(path=parsed_url.path.split('/v1')[0]).geturl() - - results.append( - { - 'template': 'images.html', - 'url': extract_text(eval_xpath(result, url_xpath)), - 'img_src': img_src, - 'thumbnail_src': extract_text(eval_xpath(result, thumbnail_src_xpath)), - 'title': extract_text(eval_xpath(result, title_xpath)), - } - ) - - nextpage_url = extract_text(eval_xpath(dom, cursor_xpath)) - if nextpage_url: - results.append( - { - 'engine_data': nextpage_url.replace("http://", "https://"), - 'key': 'nextpage', - } - ) - - return results diff --git a/searx/engines/dictzone.py b/searx/engines/dictzone.py deleted file mode 100644 index 126e75374..000000000 --- a/searx/engines/dictzone.py +++ /dev/null @@ -1,60 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Dictzone -""" - -from urllib.parse import urljoin -from lxml import html -from searx.utils import eval_xpath - -# about -about = { - "website": 'https://dictzone.com/', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -engine_type = 'online_dictionary' -categories = ['general'] -url = 'https://dictzone.com/{from_lang}-{to_lang}-dictionary/{query}' -weight = 100 - -results_xpath = './/table[@id="r"]/tr' -https_support = True - - -def request(query, params): - params['url'] = url.format(from_lang=params['from_lang'][2], to_lang=params['to_lang'][2], query=params['query']) - - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - for k, result in enumerate(eval_xpath(dom, results_xpath)[1:]): - try: - from_result, to_results_raw = eval_xpath(result, './td') - except: - continue - - to_results = [] - for to_result in eval_xpath(to_results_raw, './p/a'): - t = to_result.text_content() - if t.strip(): - to_results.append(to_result.text_content()) - - results.append( - { - 'url': urljoin(str(resp.url), '?%d' % k), - 'title': from_result.text_content(), - 'content': '; '.join(to_results), - } - ) - - return results diff --git a/searx/engines/digbt.py b/searx/engines/digbt.py deleted file mode 100644 index 2914e9228..000000000 --- a/searx/engines/digbt.py +++ /dev/null @@ -1,64 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - DigBT (Videos, Music, Files) -""" - -from urllib.parse import urljoin -from lxml import html -from searx.utils import extract_text, get_torrent_size - -# about -about = { - "website": 'https://digbt.org', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['videos', 'music', 'files'] -paging = True - -URL = 'https://digbt.org' -SEARCH_URL = URL + '/search/{query}-time-{pageno}' -FILESIZE = 3 -FILESIZE_MULTIPLIER = 4 - - -def request(query, params): - params['url'] = SEARCH_URL.format(query=query, pageno=params['pageno']) - - return params - - -def response(resp): - dom = html.fromstring(resp.text) - search_res = dom.xpath('.//td[@class="x-item"]') - - if not search_res: - return list() - - results = list() - for result in search_res: - url = urljoin(URL, result.xpath('.//a[@title]/@href')[0]) - title = extract_text(result.xpath('.//a[@title]')) - content = extract_text(result.xpath('.//div[@class="files"]')) - files_data = extract_text(result.xpath('.//div[@class="tail"]')).split() - filesize = get_torrent_size(files_data[FILESIZE], files_data[FILESIZE_MULTIPLIER]) - magnetlink = result.xpath('.//div[@class="tail"]//a[@class="title"]/@href')[0] - - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'filesize': filesize, - 'magnetlink': magnetlink, - 'seed': 'N/A', - 'leech': 'N/A', - 'template': 'torrent.html', - } - ) - - return results diff --git a/searx/engines/docker_hub.py b/searx/engines/docker_hub.py deleted file mode 100644 index cde96d016..000000000 --- a/searx/engines/docker_hub.py +++ /dev/null @@ -1,63 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Docker Hub (IT) - -""" -# pylint: disable=use-dict-literal - -from json import loads -from urllib.parse import urlencode -from dateutil import parser - -about = { - "website": 'https://hub.docker.com', - "wikidata_id": 'Q100769064', - "official_api_documentation": 'https://docs.docker.com/registry/spec/api/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['it'] # optional -paging = True - -base_url = "https://hub.docker.com/" -search_url = base_url + "api/content/v1/products/search?{query}&type=image&page_size=25" - - -def request(query, params): - - params['url'] = search_url.format(query=urlencode(dict(q=query, page=params["pageno"]))) - params["headers"]["Search-Version"] = "v3" - - return params - - -def response(resp): - '''post-response callback - resp: requests response object - ''' - results = [] - body = loads(resp.text) - - # Make sure `summaries` isn't `null` - search_res = body.get("summaries") - if search_res: - for item in search_res: - result = {} - - # Make sure correct URL is set - filter_type = item.get("filter_type") - is_official = filter_type in ["store", "official"] - - if is_official: - result["url"] = base_url + "_/" + item.get('slug', "") - else: - result["url"] = base_url + "r/" + item.get('slug', "") - result["title"] = item.get("name") - result["content"] = item.get("short_description") - result["publishedDate"] = parser.parse(item.get("updated_at") or item.get("created_at")) - result["thumbnail"] = item["logo_url"].get("large") or item["logo_url"].get("small") - results.append(result) - - return results diff --git a/searx/engines/doku.py b/searx/engines/doku.py deleted file mode 100644 index 08f56bbe7..000000000 --- a/searx/engines/doku.py +++ /dev/null @@ -1,86 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Doku Wiki -""" - -from urllib.parse import urlencode -from lxml.html import fromstring -from searx.utils import extract_text, eval_xpath - -# about -about = { - "website": 'https://www.dokuwiki.org/', - "wikidata_id": 'Q851864', - "official_api_documentation": 'https://www.dokuwiki.org/devel:xmlrpc', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['general'] # TODO , 'images', 'music', 'videos', 'files' -paging = False -number_of_results = 5 - -# search-url -# Doku is OpenSearch compatible -base_url = 'http://localhost:8090' -search_url = ( - # fmt: off - '/?do=search' - '&{query}' - # fmt: on -) -# TODO '&startRecord={offset}' -# TODO '&maximumRecords={limit}' - - -# do search-request -def request(query, params): - - params['url'] = base_url + search_url.format(query=urlencode({'id': query})) - - return params - - -# get response from search-request -def response(resp): - results = [] - - doc = fromstring(resp.text) - - # parse results - # Quickhits - for r in eval_xpath(doc, '//div[@class="search_quickresult"]/ul/li'): - try: - res_url = eval_xpath(r, './/a[@class="wikilink1"]/@href')[-1] - except: - continue - - if not res_url: - continue - - title = extract_text(eval_xpath(r, './/a[@class="wikilink1"]/@title')) - - # append result - results.append({'title': title, 'content': "", 'url': base_url + res_url}) - - # Search results - for r in eval_xpath(doc, '//dl[@class="search_results"]/*'): - try: - if r.tag == "dt": - res_url = eval_xpath(r, './/a[@class="wikilink1"]/@href')[-1] - title = extract_text(eval_xpath(r, './/a[@class="wikilink1"]/@title')) - elif r.tag == "dd": - content = extract_text(eval_xpath(r, '.')) - - # append result - results.append({'title': title, 'content': content, 'url': base_url + res_url}) - except: - continue - - if not res_url: - continue - - # return results - return results diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py deleted file mode 100644 index 5ae456b04..000000000 --- a/searx/engines/duckduckgo.py +++ /dev/null @@ -1,467 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -DuckDuckGo Lite -~~~~~~~~~~~~~~~ -""" - -from typing import TYPE_CHECKING -import re -from urllib.parse import urlencode -import json -import babel -import lxml.html - -from searx import ( - locales, - redislib, - external_bang, -) -from searx.utils import ( - eval_xpath, - eval_xpath_getindex, - extract_text, -) -from searx.network import get # see https://github.com/searxng/searxng/issues/762 -from searx import redisdb -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -about = { - "website": 'https://lite.duckduckgo.com/lite/', - "wikidata_id": 'Q12805', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -send_accept_language_header = True -"""DuckDuckGo-Lite tries to guess user's prefered language from the HTTP -``Accept-Language``. Optional the user can select a region filter (but not a -language). -""" - -# engine dependent config -categories = ['general', 'web'] -paging = True -time_range_support = True -safesearch = True # user can't select but the results are filtered - -url = 'https://lite.duckduckgo.com/lite/' -# url_ping = 'https://duckduckgo.com/t/sl_l' - -time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'} -form_data = {'v': 'l', 'api': 'd.js', 'o': 'json'} - - -def cache_vqd(query, value): - """Caches a ``vqd`` value from a query.""" - c = redisdb.client() - if c: - logger.debug("cache vqd value: %s", value) - key = 'SearXNG_ddg_vqd' + redislib.secret_hash(query) - c.set(key, value, ex=600) - - -def get_vqd(query): - """Returns the ``vqd`` that fits to the *query*. If there is no ``vqd`` cached - (:py:obj:`cache_vqd`) the query is sent to DDG to get a vqd value from the - response. - - .. hint:: - - If an empty string is returned there are no results for the ``query`` and - therefore no ``vqd`` value. - - DDG's bot detection is sensitive to the ``vqd`` value. For some search terms - (such as extremely long search terms that are often sent by bots), no ``vqd`` - value can be determined. - - If SearXNG cannot determine a ``vqd`` value, then no request should go out - to DDG: - - A request with a wrong ``vqd`` value leads to DDG temporarily putting - SearXNG's IP on a block list. - - Requests from IPs in this block list run into timeouts. - - Not sure, but it seems the block list is a sliding window: to get my IP rid - from the bot list I had to cool down my IP for 1h (send no requests from - that IP to DDG). - - TL;DR; the ``vqd`` value is needed to pass DDG's bot protection and is used - by all request to DDG: - - - DuckDuckGo Lite: ``https://lite.duckduckgo.com/lite`` (POST form data) - - DuckDuckGo Web: ``https://links.duckduckgo.com/d.js?q=...&vqd=...`` - - DuckDuckGo Images: ``https://duckduckgo.com/i.js??q=...&vqd=...`` - - DuckDuckGo Videos: ``https://duckduckgo.com/v.js??q=...&vqd=...`` - - DuckDuckGo News: ``https://duckduckgo.com/news.js??q=...&vqd=...`` - - """ - value = '' - c = redisdb.client() - if c: - key = 'SearXNG_ddg_vqd' + redislib.secret_hash(query) - value = c.get(key) - if value or value == b'': - value = value.decode('utf-8') - logger.debug("re-use cached vqd value: %s", value) - return value - - query_url = 'https://lite.duckduckgo.com/lite/?{args}'.format(args=urlencode({'q': query})) - res = get(query_url) - doc = lxml.html.fromstring(res.text) - value = doc.xpath("//input[@name='vqd']/@value") - if value: - value = value[0] - else: - # Some search terms do not have results and therefore no vqd value. If - # no vqd value can be determined for the search term, an empty string is - # chached. - value = '' - logger.debug("new vqd value: '%s'", value) - cache_vqd(query, value) - return value - - -def get_ddg_lang(eng_traits: EngineTraits, sxng_locale, default='en_US'): - """Get DuckDuckGo's language identifier from SearXNG's locale. - - DuckDuckGo defines its languages by region codes (see - :py:obj:`fetch_traits`). - - To get region and language of a DDG service use: - - .. code: python - - eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) - eng_lang = get_ddg_lang(traits, params['searxng_locale']) - - It might confuse, but the ``l`` value of the cookie is what SearXNG calls - the *region*: - - .. code:: python - - # !ddi paris :es-AR --> {'ad': 'es_AR', 'ah': 'ar-es', 'l': 'ar-es'} - params['cookies']['ad'] = eng_lang - params['cookies']['ah'] = eng_region - params['cookies']['l'] = eng_region - - .. hint:: - - `DDG-lite `__ does not offer a language - selection to the user, only a region can be selected by the user - (``eng_region`` from the example above). DDG-lite stores the selected - region in a cookie:: - - params['cookies']['kl'] = eng_region # 'ar-es' - - """ - return eng_traits.custom['lang_region'].get( # type: ignore - sxng_locale, eng_traits.get_language(sxng_locale, default) - ) - - -ddg_reg_map = { - 'tw-tzh': 'zh_TW', - 'hk-tzh': 'zh_HK', - 'ct-ca': 'skip', # ct-ca and es-ca both map to ca_ES - 'es-ca': 'ca_ES', - 'id-en': 'id_ID', - 'no-no': 'nb_NO', - 'jp-jp': 'ja_JP', - 'kr-kr': 'ko_KR', - 'xa-ar': 'ar_SA', - 'sl-sl': 'sl_SI', - 'th-en': 'th_TH', - 'vn-en': 'vi_VN', -} - -ddg_lang_map = { - # use ar --> ar_EG (Egypt's arabic) - "ar_DZ": 'lang_region', - "ar_JO": 'lang_region', - "ar_SA": 'lang_region', - # use bn --> bn_BD - 'bn_IN': 'lang_region', - # use de --> de_DE - 'de_CH': 'lang_region', - # use en --> en_US, - 'en_AU': 'lang_region', - 'en_CA': 'lang_region', - 'en_GB': 'lang_region', - # Esperanto - 'eo_XX': 'eo', - # use es --> es_ES, - 'es_AR': 'lang_region', - 'es_CL': 'lang_region', - 'es_CO': 'lang_region', - 'es_CR': 'lang_region', - 'es_EC': 'lang_region', - 'es_MX': 'lang_region', - 'es_PE': 'lang_region', - 'es_UY': 'lang_region', - 'es_VE': 'lang_region', - # use fr --> rf_FR - 'fr_CA': 'lang_region', - 'fr_CH': 'lang_region', - 'fr_BE': 'lang_region', - # use nl --> nl_NL - 'nl_BE': 'lang_region', - # use pt --> pt_PT - 'pt_BR': 'lang_region', - # skip these languages - 'od_IN': 'skip', - 'io_XX': 'skip', - 'tokipona_XX': 'skip', -} - - -def request(query, params): - - # request needs a vqd argument - vqd = get_vqd(query) - if not vqd: - # some search terms do not have results and therefore no vqd value - params['url'] = None - return params - - # quote ddg bangs - query_parts = [] - # for val in re.split(r'(\s+)', query): - for val in re.split(r'(\s+)', query): - if not val.strip(): - continue - if val.startswith('!') and external_bang.get_node(external_bang.EXTERNAL_BANGS, val[1:]): - val = f"'{val}'" - query_parts.append(val) - query = ' '.join(query_parts) - - eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) - # eng_lang = get_ddg_lang(traits, params['searxng_locale']) - - params['url'] = url - params['method'] = 'POST' - params['data']['q'] = query - - # The API is not documented, so we do some reverse engineering and emulate - # what https://lite.duckduckgo.com/lite/ does when you press "next Page" - # link again and again .. - - params['headers']['Content-Type'] = 'application/x-www-form-urlencoded' - params['data']['vqd'] = vqd - - # initial page does not have an offset - if params['pageno'] == 2: - # second page does have an offset of 30 - offset = (params['pageno'] - 1) * 30 - params['data']['s'] = offset - params['data']['dc'] = offset + 1 - - elif params['pageno'] > 2: - # third and following pages do have an offset of 30 + n*50 - offset = 30 + (params['pageno'] - 2) * 50 - params['data']['s'] = offset - params['data']['dc'] = offset + 1 - - # initial page does not have additional data in the input form - if params['pageno'] > 1: - - params['data']['o'] = form_data.get('o', 'json') - params['data']['api'] = form_data.get('api', 'd.js') - params['data']['nextParams'] = form_data.get('nextParams', '') - params['data']['v'] = form_data.get('v', 'l') - params['headers']['Referer'] = 'https://lite.duckduckgo.com/' - - params['data']['kl'] = eng_region - params['cookies']['kl'] = eng_region - - params['data']['df'] = '' - if params['time_range'] in time_range_dict: - params['data']['df'] = time_range_dict[params['time_range']] - params['cookies']['df'] = time_range_dict[params['time_range']] - - logger.debug("param data: %s", params['data']) - logger.debug("param cookies: %s", params['cookies']) - return params - - -def response(resp): - - if resp.status_code == 303: - return [] - - results = [] - doc = lxml.html.fromstring(resp.text) - - result_table = eval_xpath(doc, '//html/body/form/div[@class="filters"]/table') - - if len(result_table) == 2: - # some locales (at least China) does not have a "next page" button and - # the layout of the HTML tables is different. - result_table = result_table[1] - elif not len(result_table) >= 3: - # no more results - return [] - else: - result_table = result_table[2] - # update form data from response - form = eval_xpath(doc, '//html/body/form/div[@class="filters"]/table//input/..') - if len(form): - - form = form[0] - form_data['v'] = eval_xpath(form, '//input[@name="v"]/@value')[0] - form_data['api'] = eval_xpath(form, '//input[@name="api"]/@value')[0] - form_data['o'] = eval_xpath(form, '//input[@name="o"]/@value')[0] - logger.debug('form_data: %s', form_data) - - value = eval_xpath(form, '//input[@name="vqd"]/@value')[0] - query = resp.search_params['data']['q'] - cache_vqd(query, value) - - tr_rows = eval_xpath(result_table, './/tr') - # In the last is the form of the 'previous/next page' links - tr_rows = tr_rows[:-1] - - len_tr_rows = len(tr_rows) - offset = 0 - - while len_tr_rows >= offset + 4: - - # assemble table rows we need to scrap - tr_title = tr_rows[offset] - tr_content = tr_rows[offset + 1] - offset += 4 - - # ignore sponsored Adds - if tr_content.get('class') == 'result-sponsored': - continue - - a_tag = eval_xpath_getindex(tr_title, './/td//a[@class="result-link"]', 0, None) - if a_tag is None: - continue - - td_content = eval_xpath_getindex(tr_content, './/td[@class="result-snippet"]', 0, None) - if td_content is None: - continue - - results.append( - { - 'title': a_tag.text_content(), - 'content': extract_text(td_content), - 'url': a_tag.get('href'), - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages & regions from DuckDuckGo. - - SearXNG's ``all`` locale maps DuckDuckGo's "Alle regions" (``wt-wt``). - DuckDuckGo's language "Browsers prefered language" (``wt_WT``) makes no - sense in a SearXNG request since SearXNG's ``all`` will not add a - ``Accept-Language`` HTTP header. The value in ``engine_traits.all_locale`` - is ``wt-wt`` (the region). - - Beside regions DuckDuckGo also defines its languages by region codes. By - example these are the english languages in DuckDuckGo: - - - en_US - - en_AU - - en_CA - - en_GB - - The function :py:obj:`get_ddg_lang` evaluates DuckDuckGo's language from - SearXNG's locale. - - """ - # pylint: disable=too-many-branches, too-many-statements - # fetch regions - - engine_traits.all_locale = 'wt-wt' - - # updated from u588 to u661 / should be updated automatically? - resp = get('https://duckduckgo.com/util/u661.js') - - if not resp.ok: # type: ignore - print("ERROR: response from DuckDuckGo is not OK.") - - pos = resp.text.find('regions:{') + 8 # type: ignore - js_code = resp.text[pos:] # type: ignore - pos = js_code.find('}') + 1 - regions = json.loads(js_code[:pos]) - - for eng_tag, name in regions.items(): - - if eng_tag == 'wt-wt': - engine_traits.all_locale = 'wt-wt' - continue - - region = ddg_reg_map.get(eng_tag) - if region == 'skip': - continue - - if not region: - eng_territory, eng_lang = eng_tag.split('-') - region = eng_lang + '_' + eng_territory.upper() - - try: - sxng_tag = locales.region_tag(babel.Locale.parse(region)) - except babel.UnknownLocaleError: - print("ERROR: %s (%s) -> %s is unknown by babel" % (name, eng_tag, region)) - continue - - conflict = engine_traits.regions.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.regions[sxng_tag] = eng_tag - - # fetch languages - - engine_traits.custom['lang_region'] = {} - - pos = resp.text.find('languages:{') + 10 # type: ignore - js_code = resp.text[pos:] # type: ignore - pos = js_code.find('}') + 1 - js_code = '{"' + js_code[1:pos].replace(':', '":').replace(',', ',"') - languages = json.loads(js_code) - - for eng_lang, name in languages.items(): - - if eng_lang == 'wt_WT': - continue - - babel_tag = ddg_lang_map.get(eng_lang, eng_lang) - if babel_tag == 'skip': - continue - - try: - - if babel_tag == 'lang_region': - sxng_tag = locales.region_tag(babel.Locale.parse(eng_lang)) - engine_traits.custom['lang_region'][sxng_tag] = eng_lang - continue - - sxng_tag = locales.language_tag(babel.Locale.parse(babel_tag)) - - except babel.UnknownLocaleError: - print("ERROR: language %s (%s) is unknown by babel" % (name, eng_lang)) - continue - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_lang: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_lang)) - continue - engine_traits.languages[sxng_tag] = eng_lang diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py deleted file mode 100644 index 49f9dee34..000000000 --- a/searx/engines/duckduckgo_definitions.py +++ /dev/null @@ -1,255 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -DuckDuckGo Instant Answer API -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `DDG-API `__ is no longer documented but from -reverse engineering we can see that some services (e.g. instant answers) still -in use from the DDG search engine. - -As far we can say the *instant answers* API does not support languages, or at -least we could not find out how language support should work. It seems that -most of the features are based on English terms. - -""" - -from typing import TYPE_CHECKING - -from urllib.parse import urlencode, urlparse, urljoin -from lxml import html - -from searx.data import WIKIDATA_UNITS -from searx.utils import extract_text, html_to_text, get_string_replaces_function -from searx.external_urls import get_external_url, get_earth_coordinates_url, area_to_osm_zoom - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -# about -about = { - "website": 'https://duckduckgo.com/', - "wikidata_id": 'Q12805', - "official_api_documentation": 'https://duckduckgo.com/api', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -send_accept_language_header = True - -URL = 'https://api.duckduckgo.com/' + '?{query}&format=json&pretty=0&no_redirect=1&d=1' - -WIKIDATA_PREFIX = ['http://www.wikidata.org/entity/', 'https://www.wikidata.org/entity/'] - -replace_http_by_https = get_string_replaces_function({'http:': 'https:'}) - - -def is_broken_text(text): - """duckduckgo may return something like ``http://somewhere Related website`` - - The href URL is broken, the "Related website" may contains some HTML. - - The best solution seems to ignore these results. - """ - return text.startswith('http') and ' ' in text - - -def result_to_text(text, htmlResult): - # TODO : remove result ending with "Meaning" or "Category" # pylint: disable=fixme - result = None - dom = html.fromstring(htmlResult) - a = dom.xpath('//a') - if len(a) >= 1: - result = extract_text(a[0]) - else: - result = text - if not is_broken_text(result): - return result - return None - - -def request(query, params): - params['url'] = URL.format(query=urlencode({'q': query})) - return params - - -def response(resp): - # pylint: disable=too-many-locals, too-many-branches, too-many-statements - results = [] - - search_res = resp.json() - - # search_res.get('Entity') possible values (not exhaustive) : - # * continent / country / department / location / waterfall - # * actor / musician / artist - # * book / performing art / film / television / media franchise / concert tour / playwright - # * prepared food - # * website / software / os / programming language / file format / software engineer - # * company - - content = '' - heading = search_res.get('Heading', '') - attributes = [] - urls = [] - infobox_id = None - relatedTopics = [] - - # add answer if there is one - answer = search_res.get('Answer', '') - if answer: - logger.debug('AnswerType="%s" Answer="%s"', search_res.get('AnswerType'), answer) - if search_res.get('AnswerType') not in ['calc', 'ip']: - results.append({'answer': html_to_text(answer), 'url': search_res.get('AbstractURL', '')}) - - # add infobox - if 'Definition' in search_res: - content = content + search_res.get('Definition', '') - - if 'Abstract' in search_res: - content = content + search_res.get('Abstract', '') - - # image - image = search_res.get('Image') - image = None if image == '' else image - if image is not None and urlparse(image).netloc == '': - image = urljoin('https://duckduckgo.com', image) - - # urls - # Official website, Wikipedia page - for ddg_result in search_res.get('Results', []): - firstURL = ddg_result.get('FirstURL') - text = ddg_result.get('Text') - if firstURL is not None and text is not None: - urls.append({'title': text, 'url': firstURL}) - results.append({'title': heading, 'url': firstURL}) - - # related topics - for ddg_result in search_res.get('RelatedTopics', []): - if 'FirstURL' in ddg_result: - firstURL = ddg_result.get('FirstURL') - text = ddg_result.get('Text') - if not is_broken_text(text): - suggestion = result_to_text(text, ddg_result.get('Result')) - if suggestion != heading and suggestion is not None: - results.append({'suggestion': suggestion}) - elif 'Topics' in ddg_result: - suggestions = [] - relatedTopics.append({'name': ddg_result.get('Name', ''), 'suggestions': suggestions}) - for topic_result in ddg_result.get('Topics', []): - suggestion = result_to_text(topic_result.get('Text'), topic_result.get('Result')) - if suggestion != heading and suggestion is not None: - suggestions.append(suggestion) - - # abstract - abstractURL = search_res.get('AbstractURL', '') - if abstractURL != '': - # add as result ? problem always in english - infobox_id = abstractURL - urls.append({'title': search_res.get('AbstractSource'), 'url': abstractURL, 'official': True}) - results.append({'url': abstractURL, 'title': heading}) - - # definition - definitionURL = search_res.get('DefinitionURL', '') - if definitionURL != '': - # add as result ? as answer ? problem always in english - infobox_id = definitionURL - urls.append({'title': search_res.get('DefinitionSource'), 'url': definitionURL}) - - # to merge with wikidata's infobox - if infobox_id: - infobox_id = replace_http_by_https(infobox_id) - - # attributes - # some will be converted to urls - if 'Infobox' in search_res: - infobox = search_res.get('Infobox') - if 'content' in infobox: - osm_zoom = 17 - coordinates = None - for info in infobox.get('content'): - data_type = info.get('data_type') - data_label = info.get('label') - data_value = info.get('value') - - # Workaround: ddg may return a double quote - if data_value == '""': - continue - - # Is it an external URL ? - # * imdb_id / facebook_profile / youtube_channel / youtube_video / twitter_profile - # * instagram_profile / rotten_tomatoes / spotify_artist_id / itunes_artist_id / soundcloud_id - # * netflix_id - external_url = get_external_url(data_type, data_value) - if external_url is not None: - urls.append({'title': data_label, 'url': external_url}) - elif data_type in ['instance', 'wiki_maps_trigger', 'google_play_artist_id']: - # ignore instance: Wikidata value from "Instance Of" (Qxxxx) - # ignore wiki_maps_trigger: reference to a javascript - # ignore google_play_artist_id: service shutdown - pass - elif data_type == 'string' and data_label == 'Website': - # There is already an URL for the website - pass - elif data_type == 'area': - attributes.append({'label': data_label, 'value': area_to_str(data_value), 'entity': 'P2046'}) - osm_zoom = area_to_osm_zoom(data_value.get('amount')) - elif data_type == 'coordinates': - if data_value.get('globe') == 'http://www.wikidata.org/entity/Q2': - # coordinate on Earth - # get the zoom information from the area - coordinates = info - else: - # coordinate NOT on Earth - attributes.append({'label': data_label, 'value': data_value, 'entity': 'P625'}) - elif data_type == 'string': - attributes.append({'label': data_label, 'value': data_value}) - - if coordinates: - data_label = coordinates.get('label') - data_value = coordinates.get('value') - latitude = data_value.get('latitude') - longitude = data_value.get('longitude') - url = get_earth_coordinates_url(latitude, longitude, osm_zoom) - urls.append({'title': 'OpenStreetMap', 'url': url, 'entity': 'P625'}) - - if len(heading) > 0: - # TODO get infobox.meta.value where .label='article_title' # pylint: disable=fixme - if image is None and len(attributes) == 0 and len(urls) == 1 and len(relatedTopics) == 0 and len(content) == 0: - results.append({'url': urls[0]['url'], 'title': heading, 'content': content}) - else: - results.append( - { - 'infobox': heading, - 'id': infobox_id, - 'content': content, - 'img_src': image, - 'attributes': attributes, - 'urls': urls, - 'relatedTopics': relatedTopics, - } - ) - - return results - - -def unit_to_str(unit): - for prefix in WIKIDATA_PREFIX: - if unit.startswith(prefix): - wikidata_entity = unit[len(prefix) :] - return WIKIDATA_UNITS.get(wikidata_entity, unit) - return unit - - -def area_to_str(area): - """parse ``{'unit': 'https://www.wikidata.org/entity/Q712226', 'amount': '+20.99'}``""" - unit = unit_to_str(area.get('unit')) - if unit is not None: - try: - amount = float(area.get('amount')) - return '{} {}'.format(amount, unit) - except ValueError: - pass - return '{} {}'.format(area.get('amount', ''), area.get('unit', '')) diff --git a/searx/engines/duckduckgo_extra.py b/searx/engines/duckduckgo_extra.py deleted file mode 100644 index 25692add7..000000000 --- a/searx/engines/duckduckgo_extra.py +++ /dev/null @@ -1,142 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -DuckDuckGo Extra (images, videos, news) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" - -from datetime import datetime -from typing import TYPE_CHECKING -from urllib.parse import urlencode - -from searx.engines.duckduckgo import fetch_traits # pylint: disable=unused-import -from searx.engines.duckduckgo import ( - get_ddg_lang, - get_vqd, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://duckduckgo.com/', - "wikidata_id": 'Q12805', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON (site requires js to get images)', -} - -# engine dependent config -categories = ['images', 'web'] -ddg_category = 'images' -"""The category must be any of ``images``, ``videos`` and ``news`` -""" -paging = True -safesearch = True -send_accept_language_header = True - -safesearch_cookies = {0: '-2', 1: None, 2: '1'} -safesearch_args = {0: '1', 1: None, 2: '1'} - -search_path_map = {'images': 'i', 'videos': 'v', 'news': 'news'} - - -def request(query, params): - - # request needs a vqd argument - vqd = get_vqd(query) - if not vqd: - # some search terms do not have results and therefore no vqd value - params['url'] = None - return params - - eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) - eng_lang = get_ddg_lang(traits, params['searxng_locale']) - - args = { - 'q': query, - 'o': 'json', - # 'u': 'bing', - 'l': eng_region, - 'f': ',,,,,', - 'vqd': vqd, - } - - if params['pageno'] > 1: - args['s'] = (params['pageno'] - 1) * 100 - - params['cookies']['ad'] = eng_lang # zh_CN - params['cookies']['ah'] = eng_region # "us-en,de-de" - params['cookies']['l'] = eng_region # "hk-tzh" - - safe_search = safesearch_cookies.get(params['safesearch']) - if safe_search is not None: - params['cookies']['p'] = safe_search # "-2", "1" - safe_search = safesearch_args.get(params['safesearch']) - if safe_search is not None: - args['p'] = safe_search # "-1", "1" - - logger.debug("cookies: %s", params['cookies']) - - params['url'] = f'https://duckduckgo.com/{search_path_map[ddg_category]}.js?{urlencode(args)}' - - return params - - -def _image_result(result): - return { - 'template': 'images.html', - 'url': result['url'], - 'title': result['title'], - 'content': '', - 'thumbnail_src': result['thumbnail'], - 'img_src': result['image'], - 'img_format': '%s x %s' % (result['width'], result['height']), - 'source': result['source'], - } - - -def _video_result(result): - return { - 'template': 'videos.html', - 'url': result['content'], - 'title': result['title'], - 'content': result['description'], - 'thumbnail': result['images'].get('small') or result['images'].get('medium'), - 'iframe_src': result['embed_url'], - 'source': result['provider'], - 'length': result['duration'], - 'metadata': result.get('uploader'), - } - - -def _news_result(result): - return { - 'url': result['url'], - 'title': result['title'], - 'content': result['excerpt'], - 'source': result['source'], - 'publishedDate': datetime.utcfromtimestamp(result['date']), - } - - -def response(resp): - results = [] - res_json = resp.json() - - for result in res_json['results']: - if ddg_category == 'images': - results.append(_image_result(result)) - elif ddg_category == 'videos': - results.append(_video_result(result)) - elif ddg_category == 'news': - results.append(_news_result(result)) - else: - raise ValueError(f"Invalid duckduckgo category: {ddg_category}") - - return results diff --git a/searx/engines/duckduckgo_weather.py b/searx/engines/duckduckgo_weather.py deleted file mode 100644 index 3d59c4b0a..000000000 --- a/searx/engines/duckduckgo_weather.py +++ /dev/null @@ -1,159 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""" -DuckDuckGo Weather -~~~~~~~~~~~~~~~~~~ -""" - -from typing import TYPE_CHECKING -from json import loads -from urllib.parse import quote - -from dateutil import parser as date_parser -from flask_babel import gettext - -from searx.engines.duckduckgo import fetch_traits # pylint: disable=unused-import -from searx.engines.duckduckgo import get_ddg_lang -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - - -about = { - "website": 'https://duckduckgo.com/', - "wikidata_id": 'Q12805', - "official_api_documentation": None, - "use_official_api": True, - "require_api_key": False, - "results": "JSON", -} - -send_accept_language_header = True - -# engine dependent config -categories = ["weather"] -URL = "https://duckduckgo.com/js/spice/forecast/{query}/{lang}" - - -def generate_condition_table(condition): - res = "" - - res += f"{gettext('Condition')}" f"{condition['conditionCode']}" - - res += ( - f"{gettext('Temperature')}" - f"{condition['temperature']}°C / {c_to_f(condition['temperature'])}°F" - ) - - res += ( - f"{gettext('Feels like')}{condition['temperatureApparent']}°C / " - f"{c_to_f(condition['temperatureApparent'])}°F" - ) - - res += ( - f"{gettext('Wind')}{condition['windDirection']}° — " - f"{(condition['windSpeed'] * 1.6093440006147):.2f} km/h / {condition['windSpeed']} mph" - ) - - res += f"{gettext('Visibility')}{condition['visibility']} m" - - res += f"{gettext('Humidity')}{(condition['humidity'] * 100):.1f}%" - - return res - - -def generate_day_table(day): - res = "" - - res += ( - f"{gettext('Min temp.')}{day['temperatureMin']}°C / " - f"{c_to_f(day['temperatureMin'])}°F" - ) - res += ( - f"{gettext('Max temp.')}{day['temperatureMax']}°C / " - f"{c_to_f(day['temperatureMax'])}°F" - ) - res += f"{gettext('UV index')}{day['maxUvIndex']}" - res += f"{gettext('Sunrise')}{date_parser.parse(day['sunrise']).strftime('%H:%M')}" - res += f"{gettext('Sunset')}{date_parser.parse(day['sunset']).strftime('%H:%M')}" - - return res - - -def request(query, params): - - eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) - eng_lang = get_ddg_lang(traits, params['searxng_locale']) - - # !ddw paris :es-AR --> {'ad': 'es_AR', 'ah': 'ar-es', 'l': 'ar-es'} - params['cookies']['ad'] = eng_lang - params['cookies']['ah'] = eng_region - params['cookies']['l'] = eng_region - logger.debug("cookies: %s", params['cookies']) - - params["url"] = URL.format(query=quote(query), lang=eng_lang.split('_')[0]) - return params - - -def c_to_f(temperature): - return "%.2f" % ((temperature * 1.8) + 32) - - -def response(resp): - results = [] - - if resp.text.strip() == "ddg_spice_forecast();": - return [] - - result = loads(resp.text[resp.text.find('\n') + 1 : resp.text.rfind('\n') - 2]) - - current = result["currentWeather"] - - title = result['location'] - - infobox = f"

{gettext('Current condition')}

" - - infobox += generate_condition_table(current) - - infobox += "
" - - last_date = None - - for time in result['forecastHourly']['hours']: - current_time = date_parser.parse(time['forecastStart']) - - if last_date != current_time.date(): - if last_date is not None: - infobox += "" - - infobox += f"

{current_time.strftime('%Y-%m-%d')}

" - - infobox += "" - - for day in result['forecastDaily']['days']: - if date_parser.parse(day['forecastStart']).date() == current_time.date(): - infobox += generate_day_table(day) - - infobox += "
" - - last_date = current_time.date() - - infobox += f"" - - infobox += generate_condition_table(time) - - infobox += "
{current_time.strftime('%H:%M')}
" - - results.append( - { - "infobox": title, - "content": infobox, - } - ) - - return results diff --git a/searx/engines/duden.py b/searx/engines/duden.py deleted file mode 100644 index dca566404..000000000 --- a/searx/engines/duden.py +++ /dev/null @@ -1,83 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Duden -""" - -import re -from urllib.parse import quote, urljoin -from lxml import html -from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex -from searx.network import raise_for_httperror - -# about -about = { - "website": 'https://www.duden.de', - "wikidata_id": 'Q73624591', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', - "language": 'de', -} - -categories = ['dictionaries'] -paging = True - -# search-url -base_url = 'https://www.duden.de/' -search_url = base_url + 'suchen/dudenonline/{query}?search_api_fulltext=&page={offset}' - - -def request(query, params): - '''pre-request callback - params: - method : POST/GET - headers : {} - data : {} # if method == POST - url : '' - category: 'search category' - pageno : 1 # number of the requested page - ''' - - offset = params['pageno'] - 1 - if offset == 0: - search_url_fmt = base_url + 'suchen/dudenonline/{query}' - params['url'] = search_url_fmt.format(query=quote(query)) - else: - params['url'] = search_url.format(offset=offset, query=quote(query)) - # after the last page of results, spelling corrections are returned after a HTTP redirect - # whatever the page number is - params['soft_max_redirects'] = 1 - params['raise_for_httperror'] = False - return params - - -def response(resp): - '''post-response callback - resp: requests response object - ''' - results = [] - - if resp.status_code == 404: - return results - - raise_for_httperror(resp) - - dom = html.fromstring(resp.text) - - number_of_results_element = eval_xpath_getindex( - dom, '//a[@class="active" and contains(@href,"/suchen/dudenonline")]/span/text()', 0, default=None - ) - if number_of_results_element is not None: - number_of_results_string = re.sub('[^0-9]', '', number_of_results_element) - results.append({'number_of_results': int(number_of_results_string)}) - - for result in eval_xpath_list(dom, '//section[not(contains(@class, "essay"))]'): - url = eval_xpath_getindex(result, './/h2/a', 0).get('href') - url = urljoin(base_url, url) - title = eval_xpath(result, 'string(.//h2/a)').strip() - content = extract_text(eval_xpath(result, './/p')) - # append result - results.append({'url': url, 'title': title, 'content': content}) - - return results diff --git a/searx/engines/dummy-offline.py b/searx/engines/dummy-offline.py deleted file mode 100644 index 632eeb2b3..000000000 --- a/searx/engines/dummy-offline.py +++ /dev/null @@ -1,22 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Dummy Offline -""" - - -# about -about = { - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - - -def search(query, request_params): - return [ - { - 'result': 'this is what you get', - } - ] diff --git a/searx/engines/dummy.py b/searx/engines/dummy.py deleted file mode 100644 index 1a1b57d8c..000000000 --- a/searx/engines/dummy.py +++ /dev/null @@ -1,24 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Dummy -""" - -# about -about = { - "website": None, - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'empty array', -} - - -# do search-request -def request(query, params): - return params - - -# get response from search-request -def response(resp): - return [] diff --git a/searx/engines/ebay.py b/searx/engines/ebay.py deleted file mode 100644 index 07870f044..000000000 --- a/searx/engines/ebay.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Ebay (Videos, Music, Files) -""" - -from lxml import html -from searx.engines.xpath import extract_text -from urllib.parse import quote - -# about -about = { - "website": 'https://www.ebay.com', - "wikidata_id": 'Q58024', - "official_api_documentation": 'https://developer.ebay.com/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['shopping'] -paging = True - -# Set base_url in settings.yml in order to -# have the desired local TLD. -base_url = None -search_url = '/sch/i.html?_nkw={query}&_sacat={pageno}' - -results_xpath = '//li[contains(@class, "s-item")]' -url_xpath = './/a[@class="s-item__link"]/@href' -title_xpath = './/h3[@class="s-item__title"]' -content_xpath = './/div[@span="SECONDARY_INFO"]' -price_xpath = './/div[contains(@class, "s-item__detail")]/span[@class="s-item__price"][1]/text()' -shipping_xpath = './/span[contains(@class, "s-item__shipping")]/text()' -source_country_xpath = './/span[contains(@class, "s-item__location")]/text()' -thumbnail_xpath = './/img[@class="s-item__image-img"]/@src' - - -def request(query, params): - params['url'] = f'{base_url}' + search_url.format(query=quote(query), pageno=params['pageno']) - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - results_dom = dom.xpath(results_xpath) - if not results_dom: - return [] - - for result_dom in results_dom: - url = extract_text(result_dom.xpath(url_xpath)) - title = extract_text(result_dom.xpath(title_xpath)) - content = extract_text(result_dom.xpath(content_xpath)) - price = extract_text(result_dom.xpath(price_xpath)) - shipping = extract_text(result_dom.xpath(shipping_xpath)) - source_country = extract_text(result_dom.xpath(source_country_xpath)) - thumbnail = extract_text(result_dom.xpath(thumbnail_xpath)) - - if title == "": - continue - - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'price': price, - 'shipping': shipping, - 'source_country': source_country, - 'thumbnail': thumbnail, - 'template': 'products.html', - } - ) - - return results diff --git a/searx/engines/elasticsearch.py b/searx/engines/elasticsearch.py deleted file mode 100644 index 7bddab1cb..000000000 --- a/searx/engines/elasticsearch.py +++ /dev/null @@ -1,178 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""".. sidebar:: info - - - :origin:`elasticsearch.py ` - - `Elasticsearch `_ - - `Elasticsearch Guide - `_ - - `Install Elasticsearch - `_ - -Elasticsearch_ supports numerous ways to query the data it is storing. At the -moment the engine supports the most popular search methods (``query_type``): - -- ``match``, -- ``simple_query_string``, -- ``term`` and -- ``terms``. - -If none of the methods fit your use case, you can select ``custom`` query type -and provide the JSON payload to submit to Elasticsearch in -``custom_query_json``. - -Example -======= - -The following is an example configuration for an Elasticsearch_ instance with -authentication configured to read from ``my-index`` index. - -.. code:: yaml - - - name: elasticsearch - shortcut: es - engine: elasticsearch - base_url: http://localhost:9200 - username: elastic - password: changeme - index: my-index - query_type: match - # custom_query_json: '{ ... }' - enable_http: true - -""" - -from json import loads, dumps -from searx.exceptions import SearxEngineAPIException - - -base_url = 'http://localhost:9200' -username = '' -password = '' -index = '' -search_url = base_url + '/' + index + '/_search' -query_type = 'match' -custom_query_json = {} -show_metadata = False -categories = ['general'] - - -def init(engine_settings): - if 'query_type' in engine_settings and engine_settings['query_type'] not in _available_query_types: - raise ValueError('unsupported query type', engine_settings['query_type']) - - if index == '': - raise ValueError('index cannot be empty') - - -def request(query, params): - if query_type not in _available_query_types: - return params - - if username and password: - params['auth'] = (username, password) - - params['url'] = search_url - params['method'] = 'GET' - params['data'] = dumps(_available_query_types[query_type](query)) - params['headers']['Content-Type'] = 'application/json' - - return params - - -def _match_query(query): - """ - The standard for full text queries. - searx format: "key:value" e.g. city:berlin - REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html - """ - - try: - key, value = query.split(':') - except Exception as e: - raise ValueError('query format must be "key:value"') from e - - return {"query": {"match": {key: {'query': value}}}} - - -def _simple_query_string_query(query): - """ - Accepts query strings, but it is less strict than query_string - The field used can be specified in index.query.default_field in Elasticsearch. - REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html - """ - - return {'query': {'simple_query_string': {'query': query}}} - - -def _term_query(query): - """ - Accepts one term and the name of the field. - searx format: "key:value" e.g. city:berlin - REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html - """ - - try: - key, value = query.split(':') - except Exception as e: - raise ValueError('query format must be key:value') from e - - return {'query': {'term': {key: value}}} - - -def _terms_query(query): - """ - Accepts multiple terms and the name of the field. - searx format: "key:value1,value2" e.g. city:berlin,paris - REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html - """ - - try: - key, values = query.split(':') - except Exception as e: - raise ValueError('query format must be key:value1,value2') from e - - return {'query': {'terms': {key: values.split(',')}}} - - -def _custom_query(query): - key, value = query.split(':') - custom_query = custom_query_json - for query_key, query_value in custom_query.items(): - if query_key == '{{KEY}}': - custom_query[key] = custom_query.pop(query_key) - if query_value == '{{VALUE}}': - custom_query[query_key] = value - return custom_query - - -def response(resp): - results = [] - - resp_json = loads(resp.text) - if 'error' in resp_json: - raise SearxEngineAPIException(resp_json['error']) - - for result in resp_json['hits']['hits']: - r = {key: str(value) if not key.startswith('_') else value for key, value in result['_source'].items()} - r['template'] = 'key-value.html' - - if show_metadata: - r['metadata'] = {'index': result['_index'], 'id': result['_id'], 'score': result['_score']} - - results.append(r) - - return results - - -_available_query_types = { - # Full text queries - # https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html - 'match': _match_query, - 'simple_query_string': _simple_query_string_query, - # Term-level queries - # https://www.elastic.co/guide/en/elasticsearch/reference/current/term-level-queries.html - 'term': _term_query, - 'terms': _terms_query, - # Query JSON defined by the instance administrator. - 'custom': _custom_query, -} diff --git a/searx/engines/emojipedia.py b/searx/engines/emojipedia.py deleted file mode 100644 index a1f3ef7b8..000000000 --- a/searx/engines/emojipedia.py +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Emojipedia - -Emojipedia is an emoji reference website which documents the meaning and -common usage of emoji characters in the Unicode Standard. It is owned by Zedge -since 2021. Emojipedia is a voting member of The Unicode Consortium.[1] - -[1] https://en.wikipedia.org/wiki/Emojipedia -""" - -from urllib.parse import urlencode -from lxml import html - -from searx.utils import ( - eval_xpath_list, - extract_text, -) - -about = { - "website": 'https://emojipedia.org', - "wikidata_id": 'Q22908129', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = [] - -base_url = 'https://emojipedia.org' -search_url = base_url + '/search?{query}' - - -def request(query, params): - params['url'] = search_url.format( - query=urlencode({'q': query}), - ) - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - for result in eval_xpath_list(dom, '//div[starts-with(@class, "EmojisList")]/a'): - - url = base_url + result.attrib.get('href') - res = {'url': url, 'title': extract_text(result), 'content': ''} - - results.append(res) - - return results diff --git a/searx/engines/fdroid.py b/searx/engines/fdroid.py deleted file mode 100644 index b5f004e7b..000000000 --- a/searx/engines/fdroid.py +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - F-Droid (a repository of FOSS applications for Android) -""" - -from urllib.parse import urlencode -from lxml import html -from searx.utils import extract_text - -# about -about = { - "website": 'https://f-droid.org/', - "wikidata_id": 'Q1386210', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['files', 'apps'] -paging = True - -# search-url -base_url = 'https://search.f-droid.org/' -search_url = base_url + '?{query}' - - -# do search-request -def request(query, params): - query = urlencode({'q': query, 'page': params['pageno'], 'lang': ''}) - params['url'] = search_url.format(query=query) - return params - - -# get response from search-request -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - for app in dom.xpath('//a[@class="package-header"]'): - app_url = app.xpath('./@href')[0] - app_title = extract_text(app.xpath('./div/h4[@class="package-name"]/text()')) - app_content = ( - extract_text(app.xpath('./div/div/span[@class="package-summary"]')).strip() - + ' - ' - + extract_text(app.xpath('./div/div/span[@class="package-license"]')).strip() - ) - app_img_src = app.xpath('./img[@class="package-icon"]/@src')[0] - - results.append({'url': app_url, 'title': app_title, 'content': app_content, 'img_src': app_img_src}) - - return results diff --git a/searx/engines/flickr.py b/searx/engines/flickr.py deleted file mode 100644 index b7cd76808..000000000 --- a/searx/engines/flickr.py +++ /dev/null @@ -1,97 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Flickr (Images) - - More info on api-key : https://www.flickr.com/services/apps/create/ -""" - -from json import loads -from urllib.parse import urlencode - -# about -about = { - "website": 'https://www.flickr.com', - "wikidata_id": 'Q103204', - "official_api_documentation": 'https://secure.flickr.com/services/api/flickr.photos.search.html', - "use_official_api": True, - "require_api_key": True, - "results": 'JSON', -} - -categories = ['images'] - -nb_per_page = 15 -paging = True -api_key = None - - -url = ( - 'https://api.flickr.com/services/rest/?method=flickr.photos.search' - + '&api_key={api_key}&{text}&sort=relevance' - + '&extras=description%2C+owner_name%2C+url_o%2C+url_n%2C+url_z' - + '&per_page={nb_per_page}&format=json&nojsoncallback=1&page={page}' -) -photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}' - -paging = True - - -def build_flickr_url(user_id, photo_id): - return photo_url.format(userid=user_id, photoid=photo_id) - - -def request(query, params): - params['url'] = url.format( - text=urlencode({'text': query}), api_key=api_key, nb_per_page=nb_per_page, page=params['pageno'] - ) - return params - - -def response(resp): - results = [] - - search_results = loads(resp.text) - - # return empty array if there are no results - if 'photos' not in search_results: - return [] - - if 'photo' not in search_results['photos']: - return [] - - photos = search_results['photos']['photo'] - - # parse results - for photo in photos: - if 'url_o' in photo: - img_src = photo['url_o'] - elif 'url_z' in photo: - img_src = photo['url_z'] - else: - continue - - # For a bigger thumbnail, keep only the url_z, not the url_n - if 'url_n' in photo: - thumbnail_src = photo['url_n'] - elif 'url_z' in photo: - thumbnail_src = photo['url_z'] - else: - thumbnail_src = img_src - - url = build_flickr_url(photo['owner'], photo['id']) - - # append result - results.append( - { - 'url': url, - 'title': photo['title'], - 'img_src': img_src, - 'thumbnail_src': thumbnail_src, - 'content': photo['description']['_content'], - 'author': photo['ownername'], - 'template': 'images.html', - } - ) - - # return results - return results diff --git a/searx/engines/flickr_noapi.py b/searx/engines/flickr_noapi.py deleted file mode 100644 index 5299c604f..000000000 --- a/searx/engines/flickr_noapi.py +++ /dev/null @@ -1,143 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Flickr (Images) - -""" - -from typing import TYPE_CHECKING - -import json -from time import time -import re -from urllib.parse import urlencode -from searx.utils import ecma_unescape, html_to_text - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -# about -about = { - "website": 'https://www.flickr.com', - "wikidata_id": 'Q103204', - "official_api_documentation": 'https://secure.flickr.com/services/api/flickr.photos.search.html', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['images'] -paging = True -time_range_support = True -safesearch = False - -time_range_dict = { - 'day': 60 * 60 * 24, - 'week': 60 * 60 * 24 * 7, - 'month': 60 * 60 * 24 * 7 * 4, - 'year': 60 * 60 * 24 * 7 * 52, -} -image_sizes = ('o', 'k', 'h', 'b', 'c', 'z', 'm', 'n', 't', 'q', 's') - -search_url = 'https://www.flickr.com/search?{query}&page={page}' -time_range_url = '&min_upload_date={start}&max_upload_date={end}' -photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}' -modelexport_re = re.compile(r"^\s*modelExport:\s*({.*}),$", re.M) - - -def build_flickr_url(user_id, photo_id): - return photo_url.format(userid=user_id, photoid=photo_id) - - -def _get_time_range_url(time_range): - if time_range in time_range_dict: - return time_range_url.format(start=time(), end=str(int(time()) - time_range_dict[time_range])) - return '' - - -def request(query, params): - params['url'] = search_url.format(query=urlencode({'text': query}), page=params['pageno']) + _get_time_range_url( - params['time_range'] - ) - return params - - -def response(resp): # pylint: disable=too-many-branches - results = [] - - matches = modelexport_re.search(resp.text) - if matches is None: - return results - - match = matches.group(1) - model_export = json.loads(match) - - if 'legend' not in model_export: - return results - legend = model_export['legend'] - - # handle empty page - if not legend or not legend[0]: - return results - - for x, index in enumerate(legend): - if len(index) != 8: - logger.debug("skip legend enty %s : %s", x, index) - continue - - photo = model_export['main'][index[0]][int(index[1])][index[2]][index[3]][index[4]][index[5]][int(index[6])][ - index[7] - ] - author = ecma_unescape(photo.get('realname', '')) - source = ecma_unescape(photo.get('username', '')) - if source: - source += ' @ Flickr' - title = ecma_unescape(photo.get('title', '')) - content = html_to_text(ecma_unescape(photo.get('description', ''))) - img_src = None - - # From the biggest to the lowest format - size_data = None - for image_size in image_sizes: - if image_size in photo['sizes']['data']: - size_data = photo['sizes']['data'][image_size]['data'] - break - - if not size_data: - logger.debug('cannot find valid image size: {0}'.format(repr(photo['sizes']['data']))) - continue - - img_src = size_data['url'] - img_format = f"{size_data['width']} x {size_data['height']}" - - # For a bigger thumbnail, keep only the url_z, not the url_n - if 'n' in photo['sizes']['data']: - thumbnail_src = photo['sizes']['data']['n']['data']['url'] - elif 'z' in photo['sizes']['data']: - thumbnail_src = photo['sizes']['data']['z']['data']['url'] - else: - thumbnail_src = img_src - - if 'ownerNsid' not in photo: - # should not happen, disowned photo? Show it anyway - url = img_src - else: - url = build_flickr_url(photo['ownerNsid'], photo['id']) - - result = { - 'url': url, - 'img_src': img_src, - 'thumbnail_src': thumbnail_src, - 'source': source, - 'img_format': img_format, - 'template': 'images.html', - } - result['author'] = author.encode(errors='ignore').decode() - result['source'] = source.encode(errors='ignore').decode() - result['title'] = title.encode(errors='ignore').decode() - result['content'] = content.encode(errors='ignore').decode() - results.append(result) - - return results diff --git a/searx/engines/framalibre.py b/searx/engines/framalibre.py deleted file mode 100644 index b2c9d9077..000000000 --- a/searx/engines/framalibre.py +++ /dev/null @@ -1,68 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - FramaLibre (It) -""" - -from html import escape -from urllib.parse import urljoin, urlencode -from lxml import html -from searx.utils import extract_text - -# about -about = { - "website": 'https://framalibre.org/', - "wikidata_id": 'Q30213882', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['it'] -paging = True - -# search-url -base_url = 'https://framalibre.org/' -search_url = base_url + 'recherche-par-crit-res?{query}&page={offset}' - -# specific xpath variables -results_xpath = '//div[@class="nodes-list-row"]/div[contains(@typeof,"sioc:Item")]' -link_xpath = './/h3[@class="node-title"]/a[@href]' -thumbnail_xpath = './/img[@class="media-object img-responsive"]/@src' -content_xpath = './/div[@class="content"]//p' - - -# do search-request -def request(query, params): - offset = params['pageno'] - 1 - params['url'] = search_url.format(query=urlencode({'keys': query}), offset=offset) - - return params - - -# get response from search-request -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - # parse results - for result in dom.xpath(results_xpath): - link = result.xpath(link_xpath)[0] - href = urljoin(base_url, link.attrib.get('href')) - # there's also a span (class="rdf-meta element-hidden" property="dc:title")'s content property for this... - title = escape(extract_text(link)) - thumbnail_tags = result.xpath(thumbnail_xpath) - thumbnail = None - if len(thumbnail_tags) > 0: - thumbnail = extract_text(thumbnail_tags[0]) - if thumbnail[0] == '/': - thumbnail = base_url + thumbnail - content = escape(extract_text(result.xpath(content_xpath))) - - # append result - results.append({'url': href, 'title': title, 'img_src': thumbnail, 'content': content}) - - # return results - return results diff --git a/searx/engines/freesound.py b/searx/engines/freesound.py deleted file mode 100644 index ea6666621..000000000 --- a/searx/engines/freesound.py +++ /dev/null @@ -1,64 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Freesound (Sound) -""" - -from json import loads -from urllib.parse import urlencode -from datetime import datetime - -disabled = True -api_key = "" - -# about -about = { - "website": "https://freesound.org", - "wikidata_id": "Q835703", - "official_api_documentation": "https://freesound.org/docs/api", - "use_official_api": True, - "require_api_key": True, - "results": "JSON", -} - -# engine dependent config -paging = True - -# search url -url = "https://freesound.org/apiv2/" -search_url = ( - url + "search/text/?query={query}&page={page}&fields=name,url,download,created,description,type&token={api_key}" -) - -# search request -def request(query, params): - params["url"] = search_url.format( - query=urlencode({"q": query}), - page=params["pageno"], - api_key=api_key, - ) - return params - - -# get response from search request -def response(resp): - results = [] - search_res = loads(resp.text) - # parse results - for result in search_res.get("results", []): - title = result["name"] - content = result["description"][:128] - publishedDate = datetime.fromisoformat(result["created"]) - uri = result["download"] - - # append result - results.append( - { - "url": result["url"], - "title": title, - "publishedDate": publishedDate, - "audio_src": uri, - "content": content, - } - ) - - return results diff --git a/searx/engines/frinkiac.py b/searx/engines/frinkiac.py deleted file mode 100644 index 95a1366de..000000000 --- a/searx/engines/frinkiac.py +++ /dev/null @@ -1,51 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Frinkiac (Images) -""" - -from json import loads -from urllib.parse import urlencode - -# about -about = { - "website": 'https://frinkiac.com', - "wikidata_id": 'Q24882614', - "official_api_documentation": {'url': None, 'comment': 'see https://github.com/MitchellAW/CompuGlobal'}, - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['images'] - -BASE = 'https://frinkiac.com/' -SEARCH_URL = '{base}api/search?{query}' -RESULT_URL = '{base}?{query}' -THUMB_URL = '{base}img/{episode}/{timestamp}/medium.jpg' -IMAGE_URL = '{base}img/{episode}/{timestamp}.jpg' - - -def request(query, params): - params['url'] = SEARCH_URL.format(base=BASE, query=urlencode({'q': query})) - return params - - -def response(resp): - results = [] - response_data = loads(resp.text) - for result in response_data: - episode = result['Episode'] - timestamp = result['Timestamp'] - - results.append( - { - 'template': 'images.html', - 'url': RESULT_URL.format(base=BASE, query=urlencode({'p': 'caption', 'e': episode, 't': timestamp})), - 'title': episode, - 'content': '', - 'thumbnail_src': THUMB_URL.format(base=BASE, episode=episode, timestamp=timestamp), - 'img_src': IMAGE_URL.format(base=BASE, episode=episode, timestamp=timestamp), - } - ) - - return results diff --git a/searx/engines/genius.py b/searx/engines/genius.py deleted file mode 100644 index db1f66603..000000000 --- a/searx/engines/genius.py +++ /dev/null @@ -1,103 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=invalid-name -"""Genius - -""" - -from urllib.parse import urlencode -from datetime import datetime - -# about -about = { - "website": 'https://genius.com/', - "wikidata_id": 'Q3419343', - "official_api_documentation": 'https://docs.genius.com/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['music', 'lyrics'] -paging = True -page_size = 5 - -url = 'https://genius.com/api/' -search_url = url + 'search/{index}?{query}&page={pageno}&per_page={page_size}' -music_player = 'https://genius.com{api_path}/apple_music_player' - - -def request(query, params): - params['url'] = search_url.format( - query=urlencode({'q': query}), - index='multi', - page_size=page_size, - pageno=params['pageno'], - ) - return params - - -def parse_lyric(hit): - content = '' - highlights = hit['highlights'] - if highlights: - content = hit['highlights'][0]['value'] - else: - content = hit['result'].get('title_with_featured', '') - - timestamp = hit['result']['lyrics_updated_at'] - result = { - 'url': hit['result']['url'], - 'title': hit['result']['full_title'], - 'content': content, - 'img_src': hit['result']['song_art_image_thumbnail_url'], - } - if timestamp: - result.update({'publishedDate': datetime.fromtimestamp(timestamp)}) - api_path = hit['result'].get('api_path') - if api_path: - # The players are just playing 30sec from the title. Some of the player - # will be blocked because of a cross-origin request and some players will - # link to apple when you press the play button. - result['iframe_src'] = music_player.format(api_path=api_path) - return result - - -def parse_artist(hit): - result = { - 'url': hit['result']['url'], - 'title': hit['result']['name'], - 'content': '', - 'img_src': hit['result']['image_url'], - } - return result - - -def parse_album(hit): - res = hit['result'] - content = res.get('name_with_artist', res.get('name', '')) - x = res.get('release_date_components') - if x: - x = x.get('year') - if x: - content = "%s / %s" % (x, content) - return { - 'url': res['url'], - 'title': res['full_title'], - 'img_src': res['cover_art_url'], - 'content': content.strip(), - } - - -parse = {'lyric': parse_lyric, 'song': parse_lyric, 'artist': parse_artist, 'album': parse_album} - - -def response(resp): - results = [] - for section in resp.json()['response']['sections']: - for hit in section['hits']: - func = parse.get(hit['type']) - if func: - results.append(func(hit)) - return results diff --git a/searx/engines/gentoo.py b/searx/engines/gentoo.py deleted file mode 100644 index f0cb6a794..000000000 --- a/searx/engines/gentoo.py +++ /dev/null @@ -1,124 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Gentoo Wiki -""" - -from urllib.parse import urlencode, urljoin -from lxml import html -from searx.utils import extract_text - -# about -about = { - "website": 'https://wiki.gentoo.org/', - "wikidata_id": 'Q1050637', - "official_api_documentation": 'https://wiki.gentoo.org/api.php', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['it', 'software wikis'] -paging = True -base_url = 'https://wiki.gentoo.org' - -# xpath queries -xpath_results = '//ul[@class="mw-search-results"]/li' -xpath_link = './/div[@class="mw-search-result-heading"]/a' -xpath_content = './/div[@class="searchresult"]' - - -# cut 'en' from 'en-US', 'de' from 'de-CH', and so on -def locale_to_lang_code(locale): - if locale.find('-') >= 0: - locale = locale.split('-')[0] - return locale - - -# wikis for some languages were moved off from the main site, we need to make -# requests to correct URLs to be able to get results in those languages -lang_urls = { - 'en': {'base': 'https://wiki.gentoo.org', 'search': '/index.php?title=Special:Search&offset={offset}&{query}'}, - 'others': { - 'base': 'https://wiki.gentoo.org', - 'search': '/index.php?title=Special:Search&offset={offset}&{query}\ - &profile=translation&languagefilter={language}', - }, -} - - -# get base & search URLs for selected language -def get_lang_urls(language): - if language != 'en': - return lang_urls['others'] - return lang_urls['en'] - - -# Language names to build search requests for -# those languages which are hosted on the main site. -main_langs = { - 'ar': 'العربية', - 'bg': 'Български', - 'cs': 'Česky', - 'da': 'Dansk', - 'el': 'Ελληνικά', - 'es': 'Español', - 'he': 'עברית', - 'hr': 'Hrvatski', - 'hu': 'Magyar', - 'it': 'Italiano', - 'ko': '한국어', - 'lt': 'Lietuviškai', - 'nl': 'Nederlands', - 'pl': 'Polski', - 'pt': 'Português', - 'ru': 'Русский', - 'sl': 'Slovenský', - 'th': 'ไทย', - 'uk': 'Українська', - 'zh': '简体中文', -} - -# do search-request -def request(query, params): - # translate the locale (e.g. 'en-US') to language code ('en') - language = locale_to_lang_code(params['language']) - - # if our language is hosted on the main site, we need to add its name - # to the query in order to narrow the results to that language - if language in main_langs: - query += ' (' + main_langs[language] + ')' - - # prepare the request parameters - query = urlencode({'search': query}) - offset = (params['pageno'] - 1) * 20 - - # get request URLs for our language of choice - urls = get_lang_urls(language) - search_url = urls['base'] + urls['search'] - - params['url'] = search_url.format(query=query, offset=offset, language=language) - - return params - - -# get response from search-request -def response(resp): - # get the base URL for the language in which request was made - language = locale_to_lang_code(resp.search_params['language']) - base_url = get_lang_urls(language)['base'] - - results = [] - - dom = html.fromstring(resp.text) - - # parse results - for result in dom.xpath(xpath_results): - link = result.xpath(xpath_link)[0] - href = urljoin(base_url, link.attrib.get('href')) - title = extract_text(link) - content = extract_text(result.xpath(xpath_content)) - - results.append({'url': href, 'title': title, 'content': content}) - - return results diff --git a/searx/engines/github.py b/searx/engines/github.py deleted file mode 100644 index 3180418ef..000000000 --- a/searx/engines/github.py +++ /dev/null @@ -1,61 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Github (IT) -""" - -from json import loads -from urllib.parse import urlencode - -# about -about = { - "website": 'https://github.com/', - "wikidata_id": 'Q364', - "official_api_documentation": 'https://developer.github.com/v3/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['it', 'repos'] - -# search-url -search_url = 'https://api.github.com/search/repositories?sort=stars&order=desc&{query}' # noqa - -accept_header = 'application/vnd.github.preview.text-match+json' - - -# do search-request -def request(query, params): - params['url'] = search_url.format(query=urlencode({'q': query})) - - params['headers']['Accept'] = accept_header - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_res = loads(resp.text) - - # check if items are received - if 'items' not in search_res: - return [] - - # parse results - for res in search_res['items']: - title = res['name'] - url = res['html_url'] - - if res['description']: - content = res['description'][:500] - else: - content = '' - - # append result - results.append({'url': url, 'title': title, 'content': content}) - - # return results - return results diff --git a/searx/engines/google.py b/searx/engines/google.py deleted file mode 100644 index 51c6acbf2..000000000 --- a/searx/engines/google.py +++ /dev/null @@ -1,497 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This is the implementation of the Google WEB engine. Some of this -implementations (manly the :py:obj:`get_google_info`) are shared by other -engines: - -- :ref:`google images engine` -- :ref:`google news engine` -- :ref:`google videos engine` -- :ref:`google scholar engine` -- :ref:`google autocomplete` - -""" - -from typing import TYPE_CHECKING - -import re -from urllib.parse import urlencode -from lxml import html -import babel -import babel.core -import babel.languages - -from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex -from searx.locales import language_tag, region_tag, get_official_locales -from searx.network import get # see https://github.com/searxng/searxng/issues/762 -from searx.exceptions import SearxEngineCaptchaException -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - - -# about -about = { - "website": 'https://www.google.com', - "wikidata_id": 'Q9366', - "official_api_documentation": 'https://developers.google.com/custom-search/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['general', 'web'] -paging = True -time_range_support = True -safesearch = True - -time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'} - -# Filter results. 0: None, 1: Moderate, 2: Strict -filter_mapping = {0: 'off', 1: 'medium', 2: 'high'} - -# specific xpath variables -# ------------------------ - -results_xpath = './/div[contains(@jscontroller, "SC7lYd")]' -title_xpath = './/a/h3[1]' -href_xpath = './/a[h3]/@href' -content_xpath = './/div[@data-sncf]' - -# Suggestions are links placed in a *card-section*, we extract only the text -# from the links not the links itself. -suggestion_xpath = '//div[contains(@class, "EIaa9b")]//a' - -# UI_ASYNC = 'use_ac:true,_fmt:html' # returns a HTTP 500 when user search for -# # celebrities like '!google natasha allegri' -# # or '!google chris evans' -UI_ASYNC = 'use_ac:true,_fmt:prog' -"""Format of the response from UI's async request.""" - - -def get_google_info(params, eng_traits): - """Composing various (language) properties for the google engines (:ref:`google - API`). - - This function is called by the various google engines (:ref:`google web - engine`, :ref:`google images engine`, :ref:`google news engine` and - :ref:`google videos engine`). - - :param dict param: Request parameters of the engine. At least - a ``searxng_locale`` key should be in the dictionary. - - :param eng_traits: Engine's traits fetched from google preferences - (:py:obj:`searx.enginelib.traits.EngineTraits`) - - :rtype: dict - :returns: - Py-Dictionary with the key/value pairs: - - language: - The language code that is used by google (e.g. ``lang_en`` or - ``lang_zh-TW``) - - country: - The country code that is used by google (e.g. ``US`` or ``TW``) - - locale: - A instance of :py:obj:`babel.core.Locale` build from the - ``searxng_locale`` value. - - subdomain: - Google subdomain :py:obj:`google_domains` that fits to the country - code. - - params: - Py-Dictionary with additional request arguments (can be passed to - :py:func:`urllib.parse.urlencode`). - - - ``hl`` parameter: specifies the interface language of user interface. - - ``lr`` parameter: restricts search results to documents written in - a particular language. - - ``cr`` parameter: restricts search results to documents - originating in a particular country. - - ``ie`` parameter: sets the character encoding scheme that should - be used to interpret the query string ('utf8'). - - ``oe`` parameter: sets the character encoding scheme that should - be used to decode the XML result ('utf8'). - - headers: - Py-Dictionary with additional HTTP headers (can be passed to - request's headers) - - - ``Accept: '*/*`` - - """ - - ret_val = { - 'language': None, - 'country': None, - 'subdomain': None, - 'params': {}, - 'headers': {}, - 'cookies': {}, - 'locale': None, - } - - sxng_locale = params.get('searxng_locale', 'all') - try: - locale = babel.Locale.parse(sxng_locale, sep='-') - except babel.core.UnknownLocaleError: - locale = None - - eng_lang = eng_traits.get_language(sxng_locale, 'lang_en') - lang_code = eng_lang.split('_')[-1] # lang_zh-TW --> zh-TW / lang_en --> en - country = eng_traits.get_region(sxng_locale, eng_traits.all_locale) - - # Test zh_hans & zh_hant --> in the topmost links in the result list of list - # TW and HK you should a find wiktionary.org zh_hant link. In the result - # list of zh-CN should not be no hant link instead you should find - # zh.m.wikipedia.org/zh somewhere in the top. - - # '!go 日 :zh-TW' --> https://zh.m.wiktionary.org/zh-hant/%E6%97%A5 - # '!go 日 :zh-CN' --> https://zh.m.wikipedia.org/zh/%E6%97%A5 - - ret_val['language'] = eng_lang - ret_val['country'] = country - ret_val['locale'] = locale - ret_val['subdomain'] = eng_traits.custom['supported_domains'].get(country.upper(), 'www.google.com') - - # hl parameter: - # The hl parameter specifies the interface language (host language) of - # your user interface. To improve the performance and the quality of your - # search results, you are strongly encouraged to set this parameter - # explicitly. - # https://developers.google.com/custom-search/docs/xml_results#hlsp - # The Interface Language: - # https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages - - # https://github.com/searxng/searxng/issues/2515#issuecomment-1607150817 - ret_val['params']['hl'] = f'{lang_code}-{country}' - - # lr parameter: - # The lr (language restrict) parameter restricts search results to - # documents written in a particular language. - # https://developers.google.com/custom-search/docs/xml_results#lrsp - # Language Collection Values: - # https://developers.google.com/custom-search/docs/xml_results_appendices#languageCollections - # - # To select 'all' languages an empty 'lr' value is used. - # - # Different to other google services, Google Scholar supports to select more - # than one language. The languages are separated by a pipe '|' (logical OR). - # By example: &lr=lang_zh-TW%7Clang_de selects articles written in - # traditional chinese OR german language. - - ret_val['params']['lr'] = eng_lang - if sxng_locale == 'all': - ret_val['params']['lr'] = '' - - # cr parameter: - # The cr parameter restricts search results to documents originating in a - # particular country. - # https://developers.google.com/custom-search/docs/xml_results#crsp - - # specify a region (country) only if a region is given in the selected - # locale --> https://github.com/searxng/searxng/issues/2672 - ret_val['params']['cr'] = '' - if len(sxng_locale.split('-')) > 1: - ret_val['params']['cr'] = 'country' + country - - # gl parameter: (mandatory by Google News) - # The gl parameter value is a two-letter country code. For WebSearch - # results, the gl parameter boosts search results whose country of origin - # matches the parameter value. See the Country Codes section for a list of - # valid values. - # Specifying a gl parameter value in WebSearch requests should improve the - # relevance of results. This is particularly true for international - # customers and, even more specifically, for customers in English-speaking - # countries other than the United States. - # https://developers.google.com/custom-search/docs/xml_results#glsp - - # https://github.com/searxng/searxng/issues/2515#issuecomment-1606294635 - # ret_val['params']['gl'] = country - - # ie parameter: - # The ie parameter sets the character encoding scheme that should be used - # to interpret the query string. The default ie value is latin1. - # https://developers.google.com/custom-search/docs/xml_results#iesp - - ret_val['params']['ie'] = 'utf8' - - # oe parameter: - # The oe parameter sets the character encoding scheme that should be used - # to decode the XML result. The default oe value is latin1. - # https://developers.google.com/custom-search/docs/xml_results#oesp - - ret_val['params']['oe'] = 'utf8' - - # num parameter: - # The num parameter identifies the number of search results to return. - # The default num value is 10, and the maximum value is 20. If you request - # more than 20 results, only 20 results will be returned. - # https://developers.google.com/custom-search/docs/xml_results#numsp - - # HINT: seems to have no effect (tested in google WEB & Images) - # ret_val['params']['num'] = 20 - - # HTTP headers - - ret_val['headers']['Accept'] = '*/*' - - # Cookies - - # - https://github.com/searxng/searxng/pull/1679#issuecomment-1235432746 - # - https://github.com/searxng/searxng/issues/1555 - ret_val['cookies']['CONSENT'] = "YES+" - - return ret_val - - -def detect_google_sorry(resp): - if resp.url.host == 'sorry.google.com' or resp.url.path.startswith('/sorry'): - raise SearxEngineCaptchaException() - - -def request(query, params): - """Google search request""" - # pylint: disable=line-too-long - offset = (params['pageno'] - 1) * 10 - google_info = get_google_info(params, traits) - - # https://www.google.de/search?q=corona&hl=de&lr=lang_de&start=0&tbs=qdr%3Ad&safe=medium - query_url = ( - 'https://' - + google_info['subdomain'] - + '/search' - + "?" - + urlencode( - { - 'q': query, - **google_info['params'], - 'filter': '0', - 'start': offset, - # 'vet': '12ahUKEwik3ZbIzfn7AhXMX_EDHbUDBh0QxK8CegQIARAC..i', - # 'ved': '2ahUKEwik3ZbIzfn7AhXMX_EDHbUDBh0Q_skCegQIARAG', - # 'cs' : 1, - # 'sa': 'N', - # 'yv': 3, - # 'prmd': 'vin', - # 'ei': 'GASaY6TxOcy_xc8PtYeY6AE', - # 'sa': 'N', - # 'sstk': 'AcOHfVkD7sWCSAheZi-0tx_09XDO55gTWY0JNq3_V26cNN-c8lfD45aZYPI8s_Bqp8s57AHz5pxchDtAGCA_cikAWSjy9kw3kgg' - # formally known as use_mobile_ui - 'asearch': 'arc', - 'async': UI_ASYNC, - } - ) - ) - - if params['time_range'] in time_range_dict: - query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]}) - if params['safesearch']: - query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]}) - params['url'] = query_url - - params['cookies'] = google_info['cookies'] - params['headers'].update(google_info['headers']) - return params - - -# =26;[3,"dimg_ZNMiZPCqE4apxc8P3a2tuAQ_137"]a87;data:image/jpeg;base64,/9j/4AAQSkZJRgABA -# ...6T+9Nl4cnD+gr9OK8I56/tX3l86nWYw//2Q==26; -RE_DATA_IMAGE = re.compile(r'"(dimg_[^"]*)"[^;]*;(data:image[^;]*;[^;]*);') - - -def _parse_data_images(dom): - data_image_map = {} - for img_id, data_image in RE_DATA_IMAGE.findall(dom.text_content()): - end_pos = data_image.rfind('=') - if end_pos > 0: - data_image = data_image[: end_pos + 1] - data_image_map[img_id] = data_image - logger.debug('data:image objects --> %s', list(data_image_map.keys())) - return data_image_map - - -def response(resp): - """Get response from google's search request""" - # pylint: disable=too-many-branches, too-many-statements - detect_google_sorry(resp) - - results = [] - - # convert the text to dom - dom = html.fromstring(resp.text) - data_image_map = _parse_data_images(dom) - - # results --> answer - answer_list = eval_xpath(dom, '//div[contains(@class, "LGOjhe")]') - for item in answer_list: - results.append( - { - 'answer': item.xpath("normalize-space()"), - 'url': (eval_xpath(item, '../..//a/@href') + [None])[0], - } - ) - - # parse results - - for result in eval_xpath_list(dom, results_xpath): # pylint: disable=too-many-nested-blocks - - try: - title_tag = eval_xpath_getindex(result, title_xpath, 0, default=None) - if title_tag is None: - # this not one of the common google results *section* - logger.debug('ignoring item from the result_xpath list: missing title') - continue - title = extract_text(title_tag) - - url = eval_xpath_getindex(result, href_xpath, 0, None) - if url is None: - logger.debug('ignoring item from the result_xpath list: missing url of title "%s"', title) - continue - - content_nodes = eval_xpath(result, content_xpath) - content = extract_text(content_nodes) - - if not content: - logger.debug('ignoring item from the result_xpath list: missing content of title "%s"', title) - continue - - img_src = content_nodes[0].xpath('.//img/@src') - if img_src: - img_src = img_src[0] - if img_src.startswith('data:image'): - img_id = content_nodes[0].xpath('.//img/@id') - if img_id: - img_src = data_image_map.get(img_id[0]) - else: - img_src = None - - results.append({'url': url, 'title': title, 'content': content, 'img_src': img_src}) - - except Exception as e: # pylint: disable=broad-except - logger.error(e, exc_info=True) - continue - - # parse suggestion - for suggestion in eval_xpath_list(dom, suggestion_xpath): - # append suggestion - results.append({'suggestion': extract_text(suggestion)}) - - # return results - return results - - -# get supported languages from their site - - -skip_countries = [ - # official language of google-country not in google-languages - 'AL', # Albanien (sq) - 'AZ', # Aserbaidschan (az) - 'BD', # Bangladesch (bn) - 'BN', # Brunei Darussalam (ms) - 'BT', # Bhutan (dz) - 'ET', # Äthiopien (am) - 'GE', # Georgien (ka, os) - 'GL', # Grönland (kl) - 'KH', # Kambodscha (km) - 'LA', # Laos (lo) - 'LK', # Sri Lanka (si, ta) - 'ME', # Montenegro (sr) - 'MK', # Nordmazedonien (mk, sq) - 'MM', # Myanmar (my) - 'MN', # Mongolei (mn) - 'MV', # Malediven (dv) // dv_MV is unknown by babel - 'MY', # Malaysia (ms) - 'NP', # Nepal (ne) - 'TJ', # Tadschikistan (tg) - 'TM', # Turkmenistan (tk) - 'UZ', # Usbekistan (uz) -] - - -def fetch_traits(engine_traits: EngineTraits, add_domains: bool = True): - """Fetch languages from Google.""" - # pylint: disable=import-outside-toplevel, too-many-branches - - engine_traits.custom['supported_domains'] = {} - - resp = get('https://www.google.com/preferences') - if not resp.ok: # type: ignore - raise RuntimeError("Response from Google's preferences is not OK.") - - dom = html.fromstring(resp.text) # type: ignore - - # supported language codes - - lang_map = {'no': 'nb'} - for x in eval_xpath_list(dom, '//*[@id="langSec"]//input[@name="lr"]'): - - eng_lang = x.get("value").split('_')[-1] - try: - locale = babel.Locale.parse(lang_map.get(eng_lang, eng_lang), sep='-') - except babel.UnknownLocaleError: - print("ERROR: %s -> %s is unknown by babel" % (x.get("data-name"), eng_lang)) - continue - sxng_lang = language_tag(locale) - - conflict = engine_traits.languages.get(sxng_lang) - if conflict: - if conflict != eng_lang: - print("CONFLICT: babel %s --> %s, %s" % (sxng_lang, conflict, eng_lang)) - continue - engine_traits.languages[sxng_lang] = 'lang_' + eng_lang - - # alias languages - engine_traits.languages['zh'] = 'lang_zh-CN' - - # supported region codes - - for x in eval_xpath_list(dom, '//*[@name="region"]/..//input[@name="region"]'): - eng_country = x.get("value") - - if eng_country in skip_countries: - continue - if eng_country == 'ZZ': - engine_traits.all_locale = 'ZZ' - continue - - sxng_locales = get_official_locales(eng_country, engine_traits.languages.keys(), regional=True) - - if not sxng_locales: - print("ERROR: can't map from google country %s (%s) to a babel region." % (x.get('data-name'), eng_country)) - continue - - for sxng_locale in sxng_locales: - engine_traits.regions[region_tag(sxng_locale)] = eng_country - - # alias regions - engine_traits.regions['zh-CN'] = 'HK' - - # supported domains - - if add_domains: - resp = get('https://www.google.com/supported_domains') - if not resp.ok: # type: ignore - raise RuntimeError("Response from https://www.google.com/supported_domains is not OK.") - - for domain in resp.text.split(): # type: ignore - domain = domain.strip() - if not domain or domain in [ - '.google.com', - ]: - continue - region = domain.split('.')[-1].upper() - engine_traits.custom['supported_domains'][region] = 'www' + domain # type: ignore - if region == 'HK': - # There is no google.cn, we use .com.hk for zh-CN - engine_traits.custom['supported_domains']['CN'] = 'www' + domain # type: ignore diff --git a/searx/engines/google_images.py b/searx/engines/google_images.py deleted file mode 100644 index 1f9759c96..000000000 --- a/searx/engines/google_images.py +++ /dev/null @@ -1,129 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This is the implementation of the Google Images engine using the internal -Google API used by the Google Go Android app. - -This internal API offer results in - -- JSON (``_fmt:json``) -- Protobuf_ (``_fmt:pb``) -- Protobuf_ compressed? (``_fmt:pc``) -- HTML (``_fmt:html``) -- Protobuf_ encoded in JSON (``_fmt:jspb``). - -.. _Protobuf: https://en.wikipedia.org/wiki/Protocol_Buffers -""" - -from typing import TYPE_CHECKING - -from urllib.parse import urlencode -from json import loads - -from searx.engines.google import fetch_traits # pylint: disable=unused-import -from searx.engines.google import ( - get_google_info, - time_range_dict, - detect_google_sorry, -) - -if TYPE_CHECKING: - import logging - from searx.enginelib.traits import EngineTraits - - logger: logging.Logger - traits: EngineTraits - - -# about -about = { - "website": 'https://images.google.com', - "wikidata_id": 'Q521550', - "official_api_documentation": 'https://developers.google.com/custom-search', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['images', 'web'] -paging = True -time_range_support = True -safesearch = True -send_accept_language_header = True - -filter_mapping = {0: 'images', 1: 'active', 2: 'active'} - - -def request(query, params): - """Google-Image search request""" - - google_info = get_google_info(params, traits) - - query_url = ( - 'https://' - + google_info['subdomain'] - + '/search' - + "?" - + urlencode( - { - 'q': query, - 'tbm': "isch", - **google_info['params'], - 'asearch': 'isch', - 'async': '_fmt:json,p:1,ijn:' + str(params['pageno']), - } - ) - ) - - if params['time_range'] in time_range_dict: - query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]}) - if params['safesearch']: - query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]}) - params['url'] = query_url - - params['cookies'] = google_info['cookies'] - params['headers'].update(google_info['headers']) - return params - - -def response(resp): - """Get response from google's search request""" - results = [] - - detect_google_sorry(resp) - - json_start = resp.text.find('{"ischj":') - json_data = loads(resp.text[json_start:]) - - for item in json_data["ischj"].get("metadata", []): - - result_item = { - 'url': item["result"]["referrer_url"], - 'title': item["result"]["page_title"], - 'content': item["text_in_grid"]["snippet"], - 'source': item["result"]["site_title"], - 'img_format': f'{item["original_image"]["width"]} x {item["original_image"]["height"]}', - 'img_src': item["original_image"]["url"], - 'thumbnail_src': item["thumbnail"]["url"], - 'template': 'images.html', - } - - author = item["result"].get('iptc', {}).get('creator') - if author: - result_item['author'] = ', '.join(author) - - copyright_notice = item["result"].get('iptc', {}).get('copyright_notice') - if copyright_notice: - result_item['source'] += ' | ' + copyright_notice - - freshness_date = item["result"].get("freshness_date") - if freshness_date: - result_item['source'] += ' | ' + freshness_date - - file_size = item.get('gsa', {}).get('file_size') - if file_size: - result_item['source'] += ' (%s)' % file_size - - results.append(result_item) - - return results diff --git a/searx/engines/google_news.py b/searx/engines/google_news.py deleted file mode 100644 index a5ed63bbe..000000000 --- a/searx/engines/google_news.py +++ /dev/null @@ -1,305 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This is the implementation of the Google News engine. - -Google News has a different region handling compared to Google WEB. - -- the ``ceid`` argument has to be set (:py:obj:`ceid_list`) -- the hl_ argument has to be set correctly (and different to Google WEB) -- the gl_ argument is mandatory - -If one of this argument is not set correctly, the request is redirected to -CONSENT dialog:: - - https://consent.google.com/m?continue= - -The google news API ignores some parameters from the common :ref:`google API`: - -- num_ : the number of search results is ignored / there is no paging all - results for a query term are in the first response. -- save_ : is ignored / Google-News results are always *SafeSearch* - -.. _hl: https://developers.google.com/custom-search/docs/xml_results#hlsp -.. _gl: https://developers.google.com/custom-search/docs/xml_results#glsp -.. _num: https://developers.google.com/custom-search/docs/xml_results#numsp -.. _save: https://developers.google.com/custom-search/docs/xml_results#safesp -""" - -from typing import TYPE_CHECKING - -from urllib.parse import urlencode -import base64 -from lxml import html -import babel - -from searx import locales -from searx.utils import ( - eval_xpath, - eval_xpath_list, - eval_xpath_getindex, - extract_text, -) - -from searx.engines.google import fetch_traits as _fetch_traits # pylint: disable=unused-import -from searx.engines.google import ( - get_google_info, - detect_google_sorry, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://news.google.com', - "wikidata_id": 'Q12020', - "official_api_documentation": 'https://developers.google.com/custom-search', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['news'] -paging = False -time_range_support = False - -# Google-News results are always *SafeSearch*. Option 'safesearch' is set to -# False here, otherwise checker will report safesearch-errors:: -# -# safesearch : results are identical for safesearch=0 and safesearch=2 -safesearch = True -# send_accept_language_header = True - - -def request(query, params): - """Google-News search request""" - - sxng_locale = params.get('searxng_locale', 'en-US') - ceid = locales.get_engine_locale(sxng_locale, traits.custom['ceid'], default='US:en') - google_info = get_google_info(params, traits) - google_info['subdomain'] = 'news.google.com' # google news has only one domain - - ceid_region, ceid_lang = ceid.split(':') - ceid_lang, ceid_suffix = ( - ceid_lang.split('-') - + [ - None, - ] - )[:2] - - google_info['params']['hl'] = ceid_lang - - if ceid_suffix and ceid_suffix not in ['Hans', 'Hant']: - - if ceid_region.lower() == ceid_lang: - google_info['params']['hl'] = ceid_lang + '-' + ceid_region - else: - google_info['params']['hl'] = ceid_lang + '-' + ceid_suffix - - elif ceid_region.lower() != ceid_lang: - - if ceid_region in ['AT', 'BE', 'CH', 'IL', 'SA', 'IN', 'BD', 'PT']: - google_info['params']['hl'] = ceid_lang - else: - google_info['params']['hl'] = ceid_lang + '-' + ceid_region - - google_info['params']['lr'] = 'lang_' + ceid_lang.split('-')[0] - google_info['params']['gl'] = ceid_region - - query_url = ( - 'https://' - + google_info['subdomain'] - + "/search?" - + urlencode( - { - 'q': query, - **google_info['params'], - } - ) - # ceid includes a ':' character which must not be urlencoded - + ('&ceid=%s' % ceid) - ) - - params['url'] = query_url - params['cookies'] = google_info['cookies'] - params['headers'].update(google_info['headers']) - return params - - -def response(resp): - """Get response from google's search request""" - results = [] - detect_google_sorry(resp) - - # convert the text to dom - dom = html.fromstring(resp.text) - - for result in eval_xpath_list(dom, '//div[@class="xrnccd"]'): - - # The first
tag in the
contains the link to the article - # The href attribute of the tag is a google internal link, we have - # to decode - - href = eval_xpath_getindex(result, './article/a/@href', 0) - href = href.split('?')[0] - href = href.split('/')[-1] - href = base64.urlsafe_b64decode(href + '====') - href = href[href.index(b'http') :].split(b'\xd2')[0] - href = href.decode() - - title = extract_text(eval_xpath(result, './article/h3[1]')) - - # The pub_date is mostly a string like 'yesterday', not a real - # timezone date or time. Therefore we can't use publishedDate. - pub_date = extract_text(eval_xpath(result, './article//time')) - pub_origin = extract_text(eval_xpath(result, './article//a[@data-n-tid]')) - - content = ' / '.join([x for x in [pub_origin, pub_date] if x]) - - # The image URL is located in a preceding sibling tag, e.g.: - # "https://lh3.googleusercontent.com/DjhQh7DMszk.....z=-p-h100-w100" - # These URL are long but not personalized (double checked via tor). - - img_src = extract_text(result.xpath('preceding-sibling::a/figure/img/@src')) - - results.append( - { - 'url': href, - 'title': title, - 'content': content, - 'img_src': img_src, - } - ) - - # return results - return results - - -ceid_list = [ - 'AE:ar', - 'AR:es-419', - 'AT:de', - 'AU:en', - 'BD:bn', - 'BE:fr', - 'BE:nl', - 'BG:bg', - 'BR:pt-419', - 'BW:en', - 'CA:en', - 'CA:fr', - 'CH:de', - 'CH:fr', - 'CL:es-419', - 'CN:zh-Hans', - 'CO:es-419', - 'CU:es-419', - 'CZ:cs', - 'DE:de', - 'EG:ar', - 'ES:es', - 'ET:en', - 'FR:fr', - 'GB:en', - 'GH:en', - 'GR:el', - 'HK:zh-Hant', - 'HU:hu', - 'ID:en', - 'ID:id', - 'IE:en', - 'IL:en', - 'IL:he', - 'IN:bn', - 'IN:en', - 'IN:hi', - 'IN:ml', - 'IN:mr', - 'IN:ta', - 'IN:te', - 'IT:it', - 'JP:ja', - 'KE:en', - 'KR:ko', - 'LB:ar', - 'LT:lt', - 'LV:en', - 'LV:lv', - 'MA:fr', - 'MX:es-419', - 'MY:en', - 'NA:en', - 'NG:en', - 'NL:nl', - 'NO:no', - 'NZ:en', - 'PE:es-419', - 'PH:en', - 'PK:en', - 'PL:pl', - 'PT:pt-150', - 'RO:ro', - 'RS:sr', - 'RU:ru', - 'SA:ar', - 'SE:sv', - 'SG:en', - 'SI:sl', - 'SK:sk', - 'SN:fr', - 'TH:th', - 'TR:tr', - 'TW:zh-Hant', - 'TZ:en', - 'UA:ru', - 'UA:uk', - 'UG:en', - 'US:en', - 'US:es-419', - 'VE:es-419', - 'VN:vi', - 'ZA:en', - 'ZW:en', -] -"""List of region/language combinations supported by Google News. Values of the -``ceid`` argument of the Google News REST API.""" - - -_skip_values = [ - 'ET:en', # english (ethiopia) - 'ID:en', # english (indonesia) - 'LV:en', # english (latvia) -] - -_ceid_locale_map = {'NO:no': 'nb-NO'} - - -def fetch_traits(engine_traits: EngineTraits): - _fetch_traits(engine_traits, add_domains=False) - - engine_traits.custom['ceid'] = {} - - for ceid in ceid_list: - if ceid in _skip_values: - continue - - region, lang = ceid.split(':') - x = lang.split('-') - if len(x) > 1: - if x[1] not in ['Hant', 'Hans']: - lang = x[0] - - sxng_locale = _ceid_locale_map.get(ceid, lang + '-' + region) - try: - locale = babel.Locale.parse(sxng_locale, sep='-') - except babel.UnknownLocaleError: - print("ERROR: %s -> %s is unknown by babel" % (ceid, sxng_locale)) - continue - - engine_traits.custom['ceid'][locales.region_tag(locale)] = ceid diff --git a/searx/engines/google_play.py b/searx/engines/google_play.py deleted file mode 100644 index a9cfd1a76..000000000 --- a/searx/engines/google_play.py +++ /dev/null @@ -1,116 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Google Play Apps & Google Play Movies -""" - -from urllib.parse import urlencode -from lxml import html -from searx.utils import ( - eval_xpath, - extract_url, - extract_text, - eval_xpath_list, - eval_xpath_getindex, -) - -about = { - "website": "https://play.google.com/", - "wikidata_id": "Q79576", - "use_official_api": False, - "require_api_key": False, - "results": "HTML", -} - -send_accept_language_header = True - -play_categ = None # apps|movies -base_url = 'https://play.google.com' -search_url = base_url + "/store/search?{query}&c={play_categ}" - - -def request(query, params): - - if play_categ not in ('movies', 'apps'): - raise ValueError(f"unknown google play category: {play_categ}") - - params["url"] = search_url.format( - query=urlencode({"q": query}), - play_categ=play_categ, - ) - params['cookies']['CONSENT'] = "YES+" - - return params - - -def response(resp): - - if play_categ == 'movies': - return response_movies(resp) - if play_categ == 'apps': - return response_apps(resp) - - raise ValueError(f"Unsupported play category: {play_categ}") - - -def response_movies(resp): - - results = [] - dom = html.fromstring(resp.text) - - for section in eval_xpath(dom, '//c-wiz/section/header/..'): - sec_name = extract_text(eval_xpath(section, './header')) - for item in eval_xpath(section, './/a'): - url = base_url + item.get('href') - div_1, div_2 = eval_xpath(item, './div')[:2] - title = extract_text(eval_xpath(div_2, './div[@title]')) - metadata = extract_text(eval_xpath(div_2, './div[@class]')) - img = eval_xpath(div_1, './/img')[0] - img_src = img.get('src') - results.append( - { - "url": url, - "title": title, - "content": sec_name, - "img_src": img_src, - 'metadata': metadata, - 'template': 'videos.html', - } - ) - return results - - -def response_apps(resp): - - results = [] - dom = html.fromstring(resp.text) - - if eval_xpath(dom, '//div[@class="v6DsQb"]'): - return [] - - spot = eval_xpath_getindex(dom, '//div[@class="ipRz4"]', 0, None) - if spot is not None: - url = extract_url(eval_xpath(spot, './a[@class="Qfxief"]/@href'), search_url) - title = extract_text(eval_xpath(spot, './/div[@class="vWM94c"]')) - content = extract_text(eval_xpath(spot, './/div[@class="LbQbAe"]')) - img = extract_text(eval_xpath(spot, './/img[@class="T75of bzqKMd"]/@src')) - - results.append({"url": url, "title": title, "content": content, "img_src": img}) - - more = eval_xpath_list(dom, '//c-wiz[@jsrenderer="RBsfwb"]//div[@role="listitem"]', min_len=1) - for result in more: - url = extract_url(eval_xpath(result, ".//a/@href"), search_url) - title = extract_text(eval_xpath(result, './/span[@class="DdYX5"]')) - content = extract_text(eval_xpath(result, './/span[@class="wMUdtb"]')) - img = extract_text( - eval_xpath( - result, - './/img[@class="T75of stzEZd" or @class="T75of etjhNc Q8CSx "]/@src', - ) - ) - - results.append({"url": url, "title": title, "content": content, "img_src": img}) - - for suggestion in eval_xpath_list(dom, '//c-wiz[@jsrenderer="qyd4Kb"]//div[@class="ULeU3b neq64b"]'): - results.append({"suggestion": extract_text(eval_xpath(suggestion, './/div[@class="Epkrse "]'))}) - - return results diff --git a/searx/engines/google_scholar.py b/searx/engines/google_scholar.py deleted file mode 100644 index 6f33d1e1a..000000000 --- a/searx/engines/google_scholar.py +++ /dev/null @@ -1,217 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This is the implementation of the Google Scholar engine. - -Compared to other Google services the Scholar engine has a simple GET REST-API -and there does not exists `async` API. Even though the API slightly vintage we -can make use of the :ref:`google API` to assemble the arguments of the GET -request. -""" - -from typing import TYPE_CHECKING -from typing import Optional - -from urllib.parse import urlencode -from datetime import datetime -from lxml import html - -from searx.utils import ( - eval_xpath, - eval_xpath_getindex, - eval_xpath_list, - extract_text, -) - -from searx.exceptions import SearxEngineCaptchaException - -from searx.engines.google import fetch_traits # pylint: disable=unused-import -from searx.engines.google import ( - get_google_info, - time_range_dict, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://scholar.google.com', - "wikidata_id": 'Q494817', - "official_api_documentation": 'https://developers.google.com/custom-search', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['science', 'scientific publications'] -paging = True -language_support = True -time_range_support = True -safesearch = False -send_accept_language_header = True - - -def time_range_args(params): - """Returns a dictionary with a time range arguments based on - ``params['time_range']``. - - Google Scholar supports a detailed search by year. Searching by *last - month* or *last week* (as offered by SearXNG) is uncommon for scientific - publications and is not supported by Google Scholar. - - To limit the result list when the users selects a range, all the SearXNG - ranges (*day*, *week*, *month*, *year*) are mapped to *year*. If no range - is set an empty dictionary of arguments is returned. Example; when - user selects a time range (current year minus one in 2022): - - .. code:: python - - { 'as_ylo' : 2021 } - - """ - ret_val = {} - if params['time_range'] in time_range_dict: - ret_val['as_ylo'] = datetime.now().year - 1 - return ret_val - - -def detect_google_captcha(dom): - """In case of CAPTCHA Google Scholar open its own *not a Robot* dialog and is - not redirected to ``sorry.google.com``. - """ - if eval_xpath(dom, "//form[@id='gs_captcha_f']"): - raise SearxEngineCaptchaException() - - -def request(query, params): - """Google-Scholar search request""" - - google_info = get_google_info(params, traits) - # subdomain is: scholar.google.xy - google_info['subdomain'] = google_info['subdomain'].replace("www.", "scholar.") - - args = { - 'q': query, - **google_info['params'], - 'start': (params['pageno'] - 1) * 10, - 'as_sdt': '2007', # include patents / to disable set '0,5' - 'as_vis': '0', # include citations / to disable set '1' - } - args.update(time_range_args(params)) - - params['url'] = 'https://' + google_info['subdomain'] + '/scholar?' + urlencode(args) - params['cookies'] = google_info['cookies'] - params['headers'].update(google_info['headers']) - return params - - -def parse_gs_a(text: Optional[str]): - """Parse the text written in green. - - Possible formats: - * "{authors} - {journal}, {year} - {publisher}" - * "{authors} - {year} - {publisher}" - * "{authors} - {publisher}" - """ - if text is None or text == "": - return None, None, None, None - - s_text = text.split(' - ') - authors = s_text[0].split(', ') - publisher = s_text[-1] - if len(s_text) != 3: - return authors, None, publisher, None - - # the format is "{authors} - {journal}, {year} - {publisher}" or "{authors} - {year} - {publisher}" - # get journal and year - journal_year = s_text[1].split(', ') - # journal is optional and may contains some coma - if len(journal_year) > 1: - journal = ', '.join(journal_year[0:-1]) - if journal == '…': - journal = None - else: - journal = None - # year - year = journal_year[-1] - try: - publishedDate = datetime.strptime(year.strip(), '%Y') - except ValueError: - publishedDate = None - return authors, journal, publisher, publishedDate - - -def response(resp): # pylint: disable=too-many-locals - """Parse response from Google Scholar""" - results = [] - - # convert the text to dom - dom = html.fromstring(resp.text) - detect_google_captcha(dom) - - # parse results - for result in eval_xpath_list(dom, '//div[@data-rp]'): - - title = extract_text(eval_xpath(result, './/h3[1]//a')) - - if not title: - # this is a [ZITATION] block - continue - - pub_type = extract_text(eval_xpath(result, './/span[@class="gs_ctg2"]')) - if pub_type: - pub_type = pub_type[1:-1].lower() - - url = eval_xpath_getindex(result, './/h3[1]//a/@href', 0) - content = extract_text(eval_xpath(result, './/div[@class="gs_rs"]')) - authors, journal, publisher, publishedDate = parse_gs_a( - extract_text(eval_xpath(result, './/div[@class="gs_a"]')) - ) - if publisher in url: - publisher = None - - # cited by - comments = extract_text(eval_xpath(result, './/div[@class="gs_fl"]/a[starts-with(@href,"/scholar?cites=")]')) - - # link to the html or pdf document - html_url = None - pdf_url = None - doc_url = eval_xpath_getindex(result, './/div[@class="gs_or_ggsm"]/a/@href', 0, default=None) - doc_type = extract_text(eval_xpath(result, './/span[@class="gs_ctg2"]')) - if doc_type == "[PDF]": - pdf_url = doc_url - else: - html_url = doc_url - - results.append( - { - 'template': 'paper.html', - 'type': pub_type, - 'url': url, - 'title': title, - 'authors': authors, - 'publisher': publisher, - 'journal': journal, - 'publishedDate': publishedDate, - 'content': content, - 'comments': comments, - 'html_url': html_url, - 'pdf_url': pdf_url, - } - ) - - # parse suggestion - for suggestion in eval_xpath(dom, '//div[contains(@class, "gs_qsuggest_wrap")]//li//a'): - # append suggestion - results.append({'suggestion': extract_text(suggestion)}) - - for correction in eval_xpath(dom, '//div[@class="gs_r gs_pda"]/a'): - results.append({'correction': extract_text(correction)}) - - return results diff --git a/searx/engines/google_videos.py b/searx/engines/google_videos.py deleted file mode 100644 index f922e1f70..000000000 --- a/searx/engines/google_videos.py +++ /dev/null @@ -1,137 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This is the implementation of the Google Videos engine. - -.. admonition:: Content-Security-Policy (CSP) - - This engine needs to allow images from the `data URLs`_ (prefixed with the - ``data:`` scheme):: - - Header set Content-Security-Policy "img-src 'self' data: ;" - -.. _data URLs: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs - -""" - -from typing import TYPE_CHECKING - -from urllib.parse import urlencode -from lxml import html - -from searx.utils import ( - eval_xpath, - eval_xpath_list, - eval_xpath_getindex, - extract_text, -) - -from searx.engines.google import fetch_traits # pylint: disable=unused-import -from searx.engines.google import ( - get_google_info, - time_range_dict, - filter_mapping, - suggestion_xpath, - detect_google_sorry, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://www.google.com', - "wikidata_id": 'Q219885', - "official_api_documentation": 'https://developers.google.com/custom-search', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config - -categories = ['videos', 'web'] -paging = True -language_support = True -time_range_support = True -safesearch = True - - -def request(query, params): - """Google-Video search request""" - - google_info = get_google_info(params, traits) - - query_url = ( - 'https://' - + google_info['subdomain'] - + '/search' - + "?" - + urlencode( - { - 'q': query, - 'tbm': "vid", - 'start': 10 * params['pageno'], - **google_info['params'], - 'asearch': 'arc', - 'async': 'use_ac:true,_fmt:html', - } - ) - ) - - if params['time_range'] in time_range_dict: - query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]}) - if params['safesearch']: - query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]}) - params['url'] = query_url - - params['cookies'] = google_info['cookies'] - params['headers'].update(google_info['headers']) - return params - - -def response(resp): - """Get response from google's search request""" - results = [] - - detect_google_sorry(resp) - - # convert the text to dom - dom = html.fromstring(resp.text) - - # parse results - for result in eval_xpath_list(dom, '//div[contains(@class, "g ")]'): - - img_src = eval_xpath_getindex(result, './/img/@src', 0, None) - if img_src is None: - continue - - title = extract_text(eval_xpath_getindex(result, './/a/h3[1]', 0)) - url = eval_xpath_getindex(result, './/a/h3[1]/../@href', 0) - - c_node = eval_xpath_getindex(result, './/div[@class="ITZIwc"]', 0) - content = extract_text(c_node) - pub_info = extract_text(eval_xpath(result, './/div[@class="gqF9jc"]')) - - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'author': pub_info, - 'thumbnail': img_src, - 'template': 'videos.html', - } - ) - - # parse suggestion - for suggestion in eval_xpath_list(dom, suggestion_xpath): - # append suggestion - results.append({'suggestion': extract_text(suggestion)}) - - return results diff --git a/searx/engines/hackernews.py b/searx/engines/hackernews.py deleted file mode 100644 index 4183874f2..000000000 --- a/searx/engines/hackernews.py +++ /dev/null @@ -1,91 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Hackernews -""" - -from datetime import datetime -from urllib.parse import urlencode -from dateutil.relativedelta import relativedelta - -from flask_babel import gettext - -# Engine metadata -about = { - "website": "https://news.ycombinator.com/", - "wikidata_id": "Q686797", - "official_api_documentation": "https://hn.algolia.com/api", - "use_official_api": True, - "require_api_key": False, - "results": "JSON", -} - -# Engine configuration -paging = True -time_range_support = True -categories = ["it"] -results_per_page = 30 - -# Search URL -base_url = "https://hn.algolia.com/api/v1" - - -def request(query, params): - search_type = 'search' - if not query: - # if search query is empty show results from HN's front page - search_type = 'search_by_date' - query_params = { - "tags": "front_page", - "page": (params["pageno"] - 1), - } - else: - query_params = { - "query": query, - "page": (params["pageno"] - 1), - "hitsPerPage": results_per_page, - "minWordSizefor1Typo": 4, - "minWordSizefor2Typos": 8, - "advancedSyntax": "true", - "ignorePlurals": "false", - "minProximity": 7, - "numericFilters": '[]', - "tagFilters": '["story",[]]', - "typoTolerance": "true", - "queryType": "prefixLast", - "restrictSearchableAttributes": '["title","comment_text","url","story_text","author"]', - "getRankingInfo": "true", - } - - if params['time_range']: - search_type = 'search_by_date' - timestamp = (datetime.now() - relativedelta(**{f"{params['time_range']}s": 1})).timestamp() - query_params["numericFilters"] = f"created_at_i>{timestamp}" - - params["url"] = f"{base_url}/{search_type}?{urlencode(query_params)}" - return params - - -def response(resp): - results = [] - data = resp.json() - - for hit in data["hits"]: - object_id = hit["objectID"] - points = hit.get("points") or 0 - num_comments = hit.get("num_comments") or 0 - - metadata = "" - if points != 0 or num_comments != 0: - metadata = f"{gettext('points')}: {points}" f" | {gettext('comments')}: {num_comments}" - results.append( - { - "title": hit.get("title") or f"{gettext('author')}: {hit['author']}", - "url": f"https://news.ycombinator.com/item?id={object_id}", - "content": hit.get("url") or hit.get("comment_text") or hit.get("story_text") or "", - "metadata": metadata, - "author": hit["author"], - "publishedDate": datetime.utcfromtimestamp(hit["created_at_i"]), - } - ) - - return results diff --git a/searx/engines/imdb.py b/searx/engines/imdb.py deleted file mode 100644 index 0c6f2d5f0..000000000 --- a/searx/engines/imdb.py +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint - -"""IMDB - Internet Movie Database - -Retrieves results from a basic search. Advanced search options are not -supported. IMDB's API is undocumented, here are some posts about: - -- https://stackoverflow.com/questions/1966503/does-imdb-provide-an-api -- https://rapidapi.com/blog/how-to-use-imdb-api/ - -An alternative that needs IMDPro_ is `IMDb and Box Office Mojo -`_ - -.. __IMDPro: https://pro.imdb.com/login - -""" - -import json - -about = { - "website": 'https://imdb.com/', - "wikidata_id": 'Q37312', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ["movies"] -paging = False - -# suggestion_url = "https://sg.media-imdb.com/suggestion/{letter}/{query}.json" -suggestion_url = "https://v2.sg.media-imdb.com/suggestion/{letter}/{query}.json" - -href_base = 'https://imdb.com/{category}/{entry_id}' - -search_categories = {"nm": "name", "tt": "title", "kw": "keyword", "co": "company", "ep": "episode"} - - -def request(query, params): - - query = query.replace(" ", "_").lower() - params['url'] = suggestion_url.format(letter=query[0], query=query) - - return params - - -def response(resp): - - suggestions = json.loads(resp.text) - results = [] - - for entry in suggestions.get('d', []): - - # https://developer.imdb.com/documentation/key-concepts#imdb-ids - entry_id = entry['id'] - categ = search_categories.get(entry_id[:2]) - if categ is None: - logger.error('skip unknown category tag %s in %s', entry_id[:2], entry_id) - continue - - title = entry['l'] - if 'q' in entry: - title += " (%s)" % entry['q'] - - content = '' - if 'rank' in entry: - content += "(%s) " % entry['rank'] - if 'y' in entry: - content += str(entry['y']) + " - " - if 's' in entry: - content += entry['s'] - - # imageUrl is the image itself, it is not a thumb! - image_url = entry.get('i', {}).get('imageUrl') - if image_url: - # get thumbnail - image_url_name, image_url_prefix = image_url.rsplit('.', 1) - # recipe to get the magic value: - # * search on imdb.com, look at the URL of the thumbnail on the right side of the screen - # * search using the imdb engine, compare the imageUrl and thumbnail URL - # QL75 : JPEG quality (?) - # UX280 : resize to width 320 - # 280,414 : size of the image (add white border) - magic = 'QL75_UX280_CR0,0,280,414_' - if not image_url_name.endswith('_V1_'): - magic = '_V1_' + magic - image_url = image_url_name + magic + '.' + image_url_prefix - results.append( - { - "title": title, - "url": href_base.format(category=categ, entry_id=entry_id), - "content": content, - "img_src": image_url, - } - ) - - return results diff --git a/searx/engines/imgur.py b/searx/engines/imgur.py deleted file mode 100644 index 2fe050705..000000000 --- a/searx/engines/imgur.py +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Imgur (images) -""" - -from urllib.parse import urlencode -from lxml import html -from searx.utils import extract_text, eval_xpath, eval_xpath_list - -about = { - "website": 'https://imgur.com/', - "wikidata_id": 'Q355022', - "official_api_documentation": 'https://api.imgur.com/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['images'] -paging = True -time_range_support = True - -base_url = "https://imgur.com" - -results_xpath = "//div[contains(@class, 'cards')]/div[contains(@class, 'post')]" -url_xpath = "./a/@href" -title_xpath = "./a/img/@alt" -thumbnail_xpath = "./a/img/@src" - - -def request(query, params): - time_range = params['time_range'] or 'all' - args = { - 'q': query, - 'qs': 'thumbs', - 'p': params['pageno'] - 1, - } - params['url'] = f"{base_url}/search/score/{time_range}?{urlencode(args)}" - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - for result in eval_xpath_list(dom, results_xpath): - thumbnail_src = extract_text(eval_xpath(result, thumbnail_xpath)) - img_src = thumbnail_src.replace("b.", ".") - - # that's a bug at imgur's side: - # sometimes there's just no preview image, hence we skip the image - if len(thumbnail_src) < 25: - continue - - results.append( - { - 'template': 'images.html', - 'url': base_url + extract_text(eval_xpath(result, url_xpath)), - 'title': extract_text(eval_xpath(result, title_xpath)), - 'img_src': img_src, - 'thumbnail_src': thumbnail_src, - } - ) - - return results diff --git a/searx/engines/ina.py b/searx/engines/ina.py deleted file mode 100644 index e5fba20bb..000000000 --- a/searx/engines/ina.py +++ /dev/null @@ -1,75 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - INA (Videos) -""" - -from html import unescape -from urllib.parse import urlencode -from lxml import html -from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex - -# about -about = { - "website": 'https://www.ina.fr/', - "wikidata_id": 'Q1665109', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', - "language": 'fr', -} - -# engine dependent config -categories = ['videos'] -paging = True -page_size = 12 - -# search-url -base_url = 'https://www.ina.fr' -search_url = base_url + '/ajax/recherche?{query}&espace=1&sort=pertinence&order=desc&offset={start}&modified=size' - -# specific xpath variables -results_xpath = '//div[@id="searchHits"]/div' -url_xpath = './/a/@href' -title_xpath = './/div[contains(@class,"title-bloc-small")]' -content_xpath = './/div[contains(@class,"sous-titre-fonction")]' -thumbnail_xpath = './/img/@data-src' -publishedDate_xpath = './/div[contains(@class,"dateAgenda")]' - - -# do search-request -def request(query, params): - params['url'] = search_url.format(start=params['pageno'] * page_size, query=urlencode({'q': query})) - return params - - -# get response from search-request -def response(resp): - results = [] - - # we get html in a JSON container... - dom = html.fromstring(resp.text) - - # parse results - for result in eval_xpath_list(dom, results_xpath): - url_relative = eval_xpath_getindex(result, url_xpath, 0) - url = base_url + url_relative - title = unescape(extract_text(eval_xpath(result, title_xpath))) - thumbnail = extract_text(eval_xpath(result, thumbnail_xpath)) - content = extract_text(eval_xpath(result, publishedDate_xpath)) + extract_text( - eval_xpath(result, content_xpath) - ) - - # append result - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'template': 'videos.html', - 'thumbnail': thumbnail, - } - ) - - # return results - return results diff --git a/searx/engines/internet_archive_scholar.py b/searx/engines/internet_archive_scholar.py deleted file mode 100644 index a4f1ddd03..000000000 --- a/searx/engines/internet_archive_scholar.py +++ /dev/null @@ -1,72 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Internet Archive scholar(science) -""" - -from datetime import datetime -from urllib.parse import urlencode -from searx.utils import html_to_text - -about = { - "website": "https://scholar.archive.org/", - "wikidata_id": "Q115667709", - "official_api_documentation": "https://scholar.archive.org/api/redoc", - "use_official_api": True, - "require_api_key": False, - "results": "JSON", -} -categories = ['science', 'scientific publications'] -paging = True - -base_url = "https://scholar.archive.org" -results_per_page = 15 - - -def request(query, params): - args = { - "q": query, - "limit": results_per_page, - "offset": (params["pageno"] - 1) * results_per_page, - } - params["url"] = f"{base_url}/search?{urlencode(args)}" - params["headers"]["Accept"] = "application/json" - return params - - -def response(resp): - results = [] - - json = resp.json() - - for result in json["results"]: - publishedDate, content, doi = None, '', None - - if result['biblio'].get('release_date'): - publishedDate = datetime.strptime(result['biblio']['release_date'], "%Y-%m-%d") - - if len(result['abstracts']) > 0: - content = result['abstracts'][0].get('body') - elif len(result['_highlights']) > 0: - content = result['_highlights'][0] - - if len(result['releases']) > 0: - doi = result['releases'][0].get('doi') - - results.append( - { - 'template': 'paper.html', - 'url': result['fulltext']['access_url'], - 'title': result['biblio'].get('title') or result['biblio'].get('container_name'), - 'content': html_to_text(content), - 'publisher': result['biblio'].get('publisher'), - 'doi': doi, - 'journal': result['biblio'].get('container_name'), - 'authors': result['biblio'].get('contrib_names'), - 'tags': result['tags'], - 'publishedDate': publishedDate, - 'issns': result['biblio'].get('issns'), - 'pdf_url': result['fulltext'].get('access_url'), - } - ) - - return results diff --git a/searx/engines/invidious.py b/searx/engines/invidious.py deleted file mode 100644 index 566b0cf98..000000000 --- a/searx/engines/invidious.py +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Invidious (Videos) -""" - -import time -import random -from urllib.parse import quote_plus, urlparse -from dateutil import parser - -# about -about = { - "website": 'https://api.invidious.io/', - "wikidata_id": 'Q79343316', - "official_api_documentation": 'https://github.com/iv-org/documentation/blob/master/API.md', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ["videos", "music"] -paging = True -time_range_support = True - -# base_url can be overwritten by a list of URLs in the settings.yml -base_url = 'https://vid.puffyan.us' - - -def request(query, params): - time_range_dict = { - "day": "today", - "week": "week", - "month": "month", - "year": "year", - } - - if isinstance(base_url, list): - params["base_url"] = random.choice(base_url) - else: - params["base_url"] = base_url - - search_url = params["base_url"] + "/api/v1/search?q={query}" - params["url"] = search_url.format(query=quote_plus(query)) + "&page={pageno}".format(pageno=params["pageno"]) - - if params["time_range"] in time_range_dict: - params["url"] += "&date={timerange}".format(timerange=time_range_dict[params["time_range"]]) - - if params["language"] != "all": - lang = params["language"].split("-") - if len(lang) == 2: - params["url"] += "&range={lrange}".format(lrange=lang[1]) - - return params - - -def response(resp): - results = [] - - search_results = resp.json() - base_invidious_url = resp.search_params['base_url'] + "/watch?v=" - - for result in search_results: - rtype = result.get("type", None) - if rtype == "video": - videoid = result.get("videoId", None) - if not videoid: - continue - - url = base_invidious_url + videoid - thumbs = result.get("videoThumbnails", []) - thumb = next((th for th in thumbs if th["quality"] == "sddefault"), None) - if thumb: - thumbnail = thumb.get("url", "") - else: - thumbnail = "" - - # some instances return a partial thumbnail url - # we check if the url is partial, and prepend the base_url if it is - if thumbnail and not urlparse(thumbnail).netloc: - thumbnail = resp.search_params['base_url'] + thumbnail - - publishedDate = parser.parse(time.ctime(result.get("published", 0))) - length = time.gmtime(result.get("lengthSeconds")) - if length.tm_hour: - length = time.strftime("%H:%M:%S", length) - else: - length = time.strftime("%M:%S", length) - - results.append( - { - "url": url, - "title": result.get("title", ""), - "content": result.get("description", ""), - 'length': length, - "template": "videos.html", - "author": result.get("author"), - "publishedDate": publishedDate, - "iframe_src": resp.search_params['base_url'] + '/embed/' + videoid, - "thumbnail": thumbnail, - } - ) - - return results diff --git a/searx/engines/jisho.py b/searx/engines/jisho.py deleted file mode 100644 index 7f4392bc1..000000000 --- a/searx/engines/jisho.py +++ /dev/null @@ -1,137 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Jisho (the Japanese-English dictionary) -""" - -from urllib.parse import urlencode, urljoin - -# about -about = { - "website": 'https://jisho.org', - "wikidata_id": 'Q24568389', - "official_api_documentation": "https://jisho.org/forum/54fefc1f6e73340b1f160000-is-there-any-kind-of-search-api", - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', - "language": 'ja', -} - -categories = ['dictionaries'] -paging = False - -URL = 'https://jisho.org' -BASE_URL = 'https://jisho.org/word/' -SEARCH_URL = URL + '/api/v1/search/words?{query}' - - -def request(query, params): - query = urlencode({'keyword': query}) - params['url'] = SEARCH_URL.format(query=query) - logger.debug(f"query_url --> {params['url']}") - return params - - -def response(resp): - results = [] - first_result = True - - search_results = resp.json() - - for page in search_results.get('data', []): - # Entries that are purely from Wikipedia are excluded. - parts_of_speech = page.get('senses') and page['senses'][0].get('parts_of_speech') - if parts_of_speech and parts_of_speech[0] == 'Wikipedia definition': - pass - - # Process alternative forms - alt_forms = [] - for title_raw in page['japanese']: - if 'word' not in title_raw: - alt_forms.append(title_raw['reading']) - else: - title = title_raw['word'] - if 'reading' in title_raw: - title += ' (' + title_raw['reading'] + ')' - alt_forms.append(title) - - result_url = urljoin(BASE_URL, page['slug']) - definitions = get_definitions(page) - - # For results, we'll return the URL, all alternative forms (as title), - # and all definitions (as description) truncated to 300 characters. - content = " ".join(f"{engdef}." for _, engdef, _ in definitions) - results.append( - {'url': result_url, 'title': ", ".join(alt_forms), 'content': content[:300] + (content[300:] and '...')} - ) - - # Like Wordnik, we'll return the first result in an infobox too. - if first_result: - first_result = False - results.append(get_infobox(alt_forms, result_url, definitions)) - - return results - - -def get_definitions(page): - # Process definitions - definitions = [] - for defn_raw in page['senses']: - extra = [] - # Extra data. Since they're not documented, this implementation is based solely by the author's assumptions. - if defn_raw.get('tags'): - if defn_raw.get('info'): - # "usually written as kana: " - extra.append(defn_raw['tags'][0] + ', ' + defn_raw['info'][0] + '. ') - else: - # abbreviation, archaism, etc. - extra.append(', '.join(defn_raw['tags']) + '. ') - elif defn_raw.get('info'): - # inconsistent - extra.append(', '.join(defn_raw['info']).capitalize() + '. ') - if defn_raw.get('restrictions'): - extra.append('Only applies to: ' + ', '.join(defn_raw['restrictions']) + '. ') - definitions.append( - ( - ', '.join(defn_raw['parts_of_speech']), - '; '.join(defn_raw['english_definitions']), - ''.join(extra)[:-1], - ) - ) - return definitions - - -def get_infobox(alt_forms, result_url, definitions): - infobox_content = [] - # title & alt_forms - infobox_title = alt_forms[0] - if len(alt_forms) > 1: - infobox_content.append(f'

Other forms: {", ".join(alt_forms[1:])}

') - - # definitions - infobox_content.append( - ''' -
JMdict - and JMnedict - by EDRDG, CC BY-SA 3.0. -
    - ''' - ) - for pos, engdef, extra in definitions: - if pos == 'Wikipedia definition': - infobox_content.append('
Wikipedia, CC BY-SA 3.0.
    ') - pos = f'{pos}: ' if pos else '' - extra = f' ({extra})' if extra else '' - infobox_content.append(f'
  • {pos}{engdef}{extra}
  • ') - infobox_content.append('
') - - # - return { - 'infobox': infobox_title, - 'content': ''.join(infobox_content), - 'urls': [ - { - 'title': 'Jisho.org', - 'url': result_url, - } - ], - } diff --git a/searx/engines/json_engine.py b/searx/engines/json_engine.py deleted file mode 100644 index 2dd3bc55e..000000000 --- a/searx/engines/json_engine.py +++ /dev/null @@ -1,151 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -from collections.abc import Iterable -from json import loads -from urllib.parse import urlencode -from searx.utils import to_string, html_to_text - - -search_url = None -url_query = None -content_query = None -title_query = None -content_html_to_text = False -title_html_to_text = False -paging = False -suggestion_query = '' -results_query = '' - -cookies = {} -headers = {} -'''Some engines might offer different result based on cookies or headers. -Possible use-case: To set safesearch cookie or header to moderate.''' - -# parameters for engines with paging support -# -# number of results on each page -# (only needed if the site requires not a page number, but an offset) -page_size = 1 -# number of the first page (usually 0 or 1) -first_page_num = 1 - - -def iterate(iterable): - if type(iterable) == dict: - it = iterable.items() - - else: - it = enumerate(iterable) - for index, value in it: - yield str(index), value - - -def is_iterable(obj): - if type(obj) == str: - return False - return isinstance(obj, Iterable) - - -def parse(query): - q = [] - for part in query.split('/'): - if part == '': - continue - else: - q.append(part) - return q - - -def do_query(data, q): - ret = [] - if not q: - return ret - - qkey = q[0] - - for key, value in iterate(data): - - if len(q) == 1: - if key == qkey: - ret.append(value) - elif is_iterable(value): - ret.extend(do_query(value, q)) - else: - if not is_iterable(value): - continue - if key == qkey: - ret.extend(do_query(value, q[1:])) - else: - ret.extend(do_query(value, q)) - return ret - - -def query(data, query_string): - q = parse(query_string) - - return do_query(data, q) - - -def request(query, params): - query = urlencode({'q': query})[2:] - - fp = {'query': query} - if paging and search_url.find('{pageno}') >= 0: - fp['pageno'] = (params['pageno'] - 1) * page_size + first_page_num - - params['cookies'].update(cookies) - params['headers'].update(headers) - - params['url'] = search_url.format(**fp) - params['query'] = query - - return params - - -def identity(arg): - return arg - - -def response(resp): - results = [] - json = loads(resp.text) - - title_filter = html_to_text if title_html_to_text else identity - content_filter = html_to_text if content_html_to_text else identity - - if results_query: - rs = query(json, results_query) - if not len(rs): - return results - for result in rs[0]: - try: - url = query(result, url_query)[0] - title = query(result, title_query)[0] - except: - continue - try: - content = query(result, content_query)[0] - except: - content = "" - results.append( - { - 'url': to_string(url), - 'title': title_filter(to_string(title)), - 'content': content_filter(to_string(content)), - } - ) - else: - for url, title, content in zip(query(json, url_query), query(json, title_query), query(json, content_query)): - results.append( - { - 'url': to_string(url), - 'title': title_filter(to_string(title)), - 'content': content_filter(to_string(content)), - } - ) - - if not suggestion_query: - return results - for suggestion in query(json, suggestion_query): - results.append({'suggestion': suggestion}) - return results diff --git a/searx/engines/kickass.py b/searx/engines/kickass.py deleted file mode 100644 index bda50179b..000000000 --- a/searx/engines/kickass.py +++ /dev/null @@ -1,63 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Kickass Torrent (Videos, Music, Files)""" - -import random -from operator import itemgetter -from urllib.parse import quote - -from lxml import html -from searx.utils import ( - eval_xpath, - eval_xpath_getindex, - eval_xpath_list, - extract_text, - get_torrent_size, - int_or_zero, -) - -about = { - "website": 'https://kickasstorrents.to', - "wikidata_id": 'Q17062285', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['files'] -paging = True - -# base_url can be overwritten by a list of URLs in the settings.yml -base_url = 'https://kickasstorrents.to' - - -def request(query, params): - params['base_url'] = random.choice(base_url) if isinstance(base_url, list) else base_url - params['url'] = params['base_url'] + f'/usearch/{quote(query)}/{params["pageno"]}/' - - return params - - -def response(resp): - results = [] - dom = html.fromstring(resp.text) - - search_res = eval_xpath_list(dom, '//table[contains(@class, "data")]//tr[descendant::a]', None) - if search_res is None: - return [] - - for tag in search_res[1:]: - result = {'template': 'torrent.html'} - url = eval_xpath_getindex(tag, './/a[contains(@class, "cellMainLink")]/@href', 0, None) - result['url'] = resp.search_params['base_url'] + url - result['title'] = extract_text(eval_xpath(tag, './/a[contains(@class, "cellMainLink")]')) - result['content'] = extract_text(eval_xpath(tag, './/span[@class="font11px lightgrey block"]')) - result['seed'] = int_or_zero(extract_text(eval_xpath(tag, './/td[contains(@class, "green")]'))) - result['leech'] = int_or_zero(extract_text(eval_xpath(tag, './/td[contains(@class, "red")]'))) - result['filesize'] = get_torrent_size(*extract_text(eval_xpath(tag, './/td[contains(@class, "nobr")]')).split()) - - results.append(result) - - # results sorted by seeder count - return sorted(results, key=itemgetter('seed'), reverse=True) diff --git a/searx/engines/lemmy.py b/searx/engines/lemmy.py deleted file mode 100644 index bc3cc9cf6..000000000 --- a/searx/engines/lemmy.py +++ /dev/null @@ -1,197 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This engine uses the Lemmy API (https://lemmy.ml/api/v3/search), which is -documented at `lemmy-js-client`_ / `Interface Search`_. Since Lemmy is -federated, results are from many different, independent lemmy instances, and not -only the official one. - -.. _lemmy-js-client: https://join-lemmy.org/api/modules.html -.. _Interface Search: https://join-lemmy.org/api/interfaces/Search.html - -Configuration -============= - -The engine has the following additional settings: - -- :py:obj:`base_url` -- :py:obj:`lemmy_type` - -This implementation is used by different lemmy engines in the :ref:`settings.yml -`: - -.. code:: yaml - - - name: lemmy communities - lemmy_type: Communities - ... - - name: lemmy users - lemmy_type: Users - ... - - name: lemmy posts - lemmy_type: Posts - ... - - name: lemmy comments - lemmy_type: Comments - ... - -Implementations -=============== - -""" - -from datetime import datetime -from urllib.parse import urlencode - -from flask_babel import gettext - -from searx.utils import markdown_to_text - -about = { - "website": 'https://lemmy.ml/', - "wikidata_id": 'Q84777032', - "official_api_documentation": "https://join-lemmy.org/api/", - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} -paging = True -categories = ['social media'] - -base_url = "https://lemmy.ml/" -"""By default, https://lemmy.ml is used for providing the results. If you want -to use a different lemmy instance, you can specify ``base_url``. -""" - -lemmy_type = "Communities" -"""Any of ``Communities``, ``Users``, ``Posts``, ``Comments``""" - - -def request(query, params): - args = { - 'q': query, - 'page': params['pageno'], - 'type_': lemmy_type, - } - - params['url'] = f"{base_url}api/v3/search?{urlencode(args)}" - return params - - -def _get_communities(json): - results = [] - - for result in json["communities"]: - counts = result['counts'] - metadata = ( - f"{gettext('subscribers')}: {counts.get('subscribers', 0)}" - f" | {gettext('posts')}: {counts.get('posts', 0)}" - f" | {gettext('active users')}: {counts.get('users_active_half_year', 0)}" - ) - results.append( - { - 'url': result['community']['actor_id'], - 'title': result['community']['title'], - 'content': markdown_to_text(result['community'].get('description', '')), - 'img_src': result['community'].get('icon', result['community'].get('banner')), - 'publishedDate': datetime.strptime(counts['published'][:19], '%Y-%m-%dT%H:%M:%S'), - 'metadata': metadata, - } - ) - return results - - -def _get_users(json): - results = [] - - for result in json["users"]: - results.append( - { - 'url': result['person']['actor_id'], - 'title': result['person']['name'], - 'content': markdown_to_text(result['person'].get('bio', '')), - } - ) - - return results - - -def _get_posts(json): - results = [] - - for result in json["posts"]: - user = result['creator'].get('display_name', result['creator']['name']) - - img_src = None - if result['post'].get('thumbnail_url'): - img_src = result['post']['thumbnail_url'] + '?format=webp&thumbnail=208' - - metadata = ( - f"▲ {result['counts']['upvotes']} ▼ {result['counts']['downvotes']}" - f" | {gettext('user')}: {user}" - f" | {gettext('comments')}: {result['counts']['comments']}" - f" | {gettext('community')}: {result['community']['title']}" - ) - - content = result['post'].get('body', '').strip() - if content: - content = markdown_to_text(content) - - results.append( - { - 'url': result['post']['ap_id'], - 'title': result['post']['name'], - 'content': content, - 'img_src': img_src, - 'publishedDate': datetime.strptime(result['post']['published'][:19], '%Y-%m-%dT%H:%M:%S'), - 'metadata': metadata, - } - ) - - return results - - -def _get_comments(json): - results = [] - - for result in json["comments"]: - user = result['creator'].get('display_name', result['creator']['name']) - - content = result['comment'].get('content', '').strip() - if content: - content = markdown_to_text(content) - - metadata = ( - f"▲ {result['counts']['upvotes']} ▼ {result['counts']['downvotes']}" - f" | {gettext('user')}: {user}" - f" | {gettext('community')}: {result['community']['title']}" - ) - - results.append( - { - 'url': result['comment']['ap_id'], - 'title': result['post']['name'], - 'content': markdown_to_text(result['comment']['content']), - 'publishedDate': datetime.strptime(result['comment']['published'][:19], '%Y-%m-%dT%H:%M:%S'), - 'metadata': metadata, - } - ) - - return results - - -def response(resp): - json = resp.json() - - if lemmy_type == "Communities": - return _get_communities(json) - - if lemmy_type == "Users": - return _get_users(json) - - if lemmy_type == "Posts": - return _get_posts(json) - - if lemmy_type == "Comments": - return _get_comments(json) - - raise ValueError(f"Unsupported lemmy type: {lemmy_type}") diff --git a/searx/engines/lingva.py b/searx/engines/lingva.py deleted file mode 100644 index bf51b705e..000000000 --- a/searx/engines/lingva.py +++ /dev/null @@ -1,68 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Lingva (alternative Google Translate frontend)""" - -from json import loads - -about = { - "website": 'https://lingva.ml', - "wikidata_id": None, - "official_api_documentation": 'https://github.com/thedaviddelta/lingva-translate#public-apis', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -engine_type = 'online_dictionary' -categories = ['general'] - -url = "https://lingva.ml" -search_url = "{url}/api/v1/{from_lang}/{to_lang}/{query}" - - -def request(_query, params): - params['url'] = search_url.format( - url=url, from_lang=params['from_lang'][1], to_lang=params['to_lang'][1], query=params['query'] - ) - return params - - -def response(resp): - results = [] - - result = loads(resp.text) - info = result["info"] - from_to_prefix = "%s-%s " % (resp.search_params['from_lang'][1], resp.search_params['to_lang'][1]) - - if "typo" in info: - results.append({"suggestion": from_to_prefix + info["typo"]}) - - if 'definitions' in info: # pylint: disable=too-many-nested-blocks - for definition in info['definitions']: - if 'list' in definition: - for item in definition['list']: - if 'synonyms' in item: - for synonym in item['synonyms']: - results.append({"suggestion": from_to_prefix + synonym}) - - infobox = "" - - for translation in info["extraTranslations"]: - infobox += f"{translation['type']}" - - for word in translation["list"]: - infobox += f"
{word['word']}
" - - for meaning in word["meanings"]: - infobox += f"
{meaning}
" - - infobox += "
" - - results.append( - { - 'infobox': result["translation"], - 'content': infobox, - } - ) - - return results diff --git a/searx/engines/loc.py b/searx/engines/loc.py deleted file mode 100644 index 5f58eb3dc..000000000 --- a/searx/engines/loc.py +++ /dev/null @@ -1,97 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -"""Library of Congress: query Photo, Print and Drawing from API endpoint_ -``photos``. - -.. _endpoint: https://www.loc.gov/apis/json-and-yaml/requests/endpoints/ - -.. note:: - - Beside the ``photos`` endpoint_ there are more endpoints available / we are - looking forward for contributions implementing more endpoints. - -""" - -from urllib.parse import urlencode -from searx.network import raise_for_httperror - -about = { - "website": 'https://www.loc.gov/pictures/', - "wikidata_id": 'Q131454', - "official_api_documentation": 'https://www.loc.gov/api', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['images'] -paging = True - -endpoint = 'photos' -base_url = 'https://loc.gov' -search_string = "/{endpoint}/?sp={page}&{query}&fo=json" - - -def request(query, params): - - search_path = search_string.format( - endpoint=endpoint, - query=urlencode({'q': query}), - page=params['pageno'], - ) - params['url'] = base_url + search_path - params['raise_for_httperror'] = False - return params - - -def response(resp): - - results = [] - json_data = resp.json() - - json_results = json_data.get('results') - if not json_results: - # when a search term has none results, loc sends a JSON in a HTTP 404 - # response and the HTTP status code is set in the 'status' element. - if json_data.get('status') == 404: - return results - - raise_for_httperror(resp) - - for result in json_results: - - url = result["item"].get("link") - if not url: - continue - - img_src = result['item'].get('service_medium') - if not img_src or img_src == 'https://memory.loc.gov/pp/grp.gif': - continue - - title = result['title'] - if title.startswith('['): - title = title.strip('[]') - - content_items = [ - result['item'].get('created_published_date'), - result['item'].get('summary', [None])[0], - result['item'].get('notes', [None])[0], - result['item'].get('part_of', [None])[0], - ] - - author = None - if result['item'].get('creators'): - author = result['item']['creators'][0]['title'] - - results.append( - { - 'template': 'images.html', - 'url': url, - 'title': title, - 'content': ' / '.join([i for i in content_items if i]), - 'img_src': img_src, - 'thumbnail_src': result['item'].get('thumb_gallery'), - 'author': author, - } - ) - - return results diff --git a/searx/engines/mastodon.py b/searx/engines/mastodon.py deleted file mode 100644 index 1f9d4014f..000000000 --- a/searx/engines/mastodon.py +++ /dev/null @@ -1,80 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Mastodon_ is an open source alternative to large social media platforms like -Twitter/X, Facebook, ... - -Since it's federated and self-hostable, there's a large amount of available -instances, which can be chosen instead by modifying ``base_url``. - -We use their official API_ for searching, but unfortunately, their Search API_ -forbids pagination without OAuth. - -That's why we use tootfinder.ch for finding posts, which doesn't support searching -for users, accounts or other types of content on Mastodon however. - -.. _Mastodon: https://mastodon.social -.. _API: https://docs.joinmastodon.org/api/ - -""" - -from urllib.parse import urlencode -from datetime import datetime - -about = { - "website": 'https://joinmastodon.org/', - "wikidata_id": 'Q27986619', - "official_api_documentation": 'https://docs.joinmastodon.org/api/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} -categories = ['social media'] - -base_url = "https://mastodon.social" -mastodon_type = "accounts" - -# https://github.com/searxng/searxng/pull/2857#issuecomment-1741713999 -page_size = 40 - - -def request(query, params): - args = { - 'q': query, - 'resolve': 'false', - 'type': mastodon_type, - 'limit': page_size, - } - params['url'] = f"{base_url}/api/v2/search?{urlencode(args)}" - return params - - -def response(resp): - results = [] - - json = resp.json() - - for result in json[mastodon_type]: - if mastodon_type == "accounts": - results.append( - { - 'url': result['uri'], - 'title': result['username'] + f" ({result['followers_count']} followers)", - 'content': result['note'], - 'thumbnail': result.get('avatar'), - 'publishedDate': datetime.strptime(result['created_at'][:10], "%Y-%m-%d"), - } - ) - elif mastodon_type == "hashtags": - uses_count = sum(int(entry['uses']) for entry in result['history']) - user_count = sum(int(entry['accounts']) for entry in result['history']) - results.append( - { - 'url': result['url'], - 'title': result['name'], - 'content': f"Hashtag has been used {uses_count} times by {user_count} different users", - } - ) - else: - raise ValueError(f"Unsupported mastodon type: {mastodon_type}") - - return results diff --git a/searx/engines/material_icons.py b/searx/engines/material_icons.py deleted file mode 100644 index 68b17f4c6..000000000 --- a/searx/engines/material_icons.py +++ /dev/null @@ -1,61 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Material Icons (images) -""" - -import re -from json import loads - -about = { - "website": 'https://fonts.google.com/icons', - "wikidata_id": 'Q107315222', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} -search_url = "https://fonts.google.com/metadata/icons?key=material_symbols&incomplete=true" -result_url = "https://fonts.google.com/icons?icon.query={query}&selected=Material+Symbols+Outlined:{icon_name}:FILL@0{fill};wght@400;GRAD@0;opsz@24" # pylint: disable=line-too-long -img_src_url = "https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/{icon_name}/{svg_type}/24px.svg" -filled_regex = r"(fill)(ed)?" - - -def request(query, params): - params['url'] = search_url - params['query'] = query - return params - - -def response(resp): - results = [] - - query = resp.search_params["query"].lower() - json_results = loads(resp.text[5:]) - - outlined = not re.findall(filled_regex, query) - query = re.sub(filled_regex, "", query).strip() - svg_type = "fill1" if not outlined else "default" - - query_parts = query.split(" ") - - for result in json_results["icons"]: - for part in query_parts: - if part in result["name"] or part in result["tags"] or part in result["categories"]: - break - else: - continue - - tags = [tag.title() for tag in result["tags"]] - categories = [category.title() for category in result["categories"]] - - results.append( - { - 'template': 'images.html', - 'url': result_url.format(icon_name=result["name"], query=result["name"], fill=0 if outlined else 1), - 'img_src': img_src_url.format(icon_name=result["name"], svg_type=svg_type), - 'title': result["name"].replace("_", "").title(), - 'content': ", ".join(tags) + " / " + ", ".join(categories), - } - ) - - return results diff --git a/searx/engines/mediathekviewweb.py b/searx/engines/mediathekviewweb.py deleted file mode 100644 index 5570ebe24..000000000 --- a/searx/engines/mediathekviewweb.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""MediathekViewWeb (API) - -""" - -import datetime -from json import loads, dumps - -about = { - "website": 'https://mediathekviewweb.de/', - "wikidata_id": 'Q27877380', - "official_api_documentation": 'https://gist.github.com/bagbag/a2888478d27de0e989cf777f81fb33de', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', - "language": "de", -} - -categories = ['videos'] -paging = True -time_range_support = False -safesearch = False - - -def request(query, params): - - params['url'] = 'https://mediathekviewweb.de/api/query' - params['method'] = 'POST' - params['headers']['Content-type'] = 'text/plain' - params['data'] = dumps( - { - 'queries': [ - { - 'fields': [ - 'title', - 'topic', - ], - 'query': query, - }, - ], - 'sortBy': 'timestamp', - 'sortOrder': 'desc', - 'future': True, - 'offset': (params['pageno'] - 1) * 10, - 'size': 10, - } - ) - return params - - -def response(resp): - - resp = loads(resp.text) - - mwv_result = resp['result'] - mwv_result_list = mwv_result['results'] - - results = [] - - for item in mwv_result_list: - - item['hms'] = str(datetime.timedelta(seconds=item['duration'])) - - results.append( - { - 'url': item['url_video_hd'].replace("http://", "https://"), - 'title': "%(channel)s: %(title)s (%(hms)s)" % item, - 'length': item['hms'], - 'content': "%(description)s" % item, - 'iframe_src': item['url_video_hd'].replace("http://", "https://"), - 'template': 'videos.html', - } - ) - - return results diff --git a/searx/engines/mediawiki.py b/searx/engines/mediawiki.py deleted file mode 100644 index 6a9ac974a..000000000 --- a/searx/engines/mediawiki.py +++ /dev/null @@ -1,180 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""The MediaWiki engine is a *generic* engine to **query** Wikimedia wikis by -the `MediaWiki Action API`_. For a `query action`_ all Wikimedia wikis have -endpoints that follow this pattern:: - - https://{base_url}/w/api.php?action=query&list=search&format=json - -.. note:: - - In its actual state, this engine is implemented to parse JSON result - (`format=json`_) from a search query (`list=search`_). If you need other - ``action`` and ``list`` types ask SearXNG developers to extend the - implementation according to your needs. - -.. _MediaWiki Action API: https://www.mediawiki.org/wiki/API:Main_page -.. _query action: https://www.mediawiki.org/w/api.php?action=help&modules=query -.. _`list=search`: https://www.mediawiki.org/w/api.php?action=help&modules=query%2Bsearch -.. _`format=json`: https://www.mediawiki.org/w/api.php?action=help&modules=json - -Configuration -============= - -Request: - -- :py:obj:`base_url` -- :py:obj:`search_type` -- :py:obj:`srenablerewrites` -- :py:obj:`srsort` -- :py:obj:`srprop` - -Implementations -=============== - -""" -from __future__ import annotations -from typing import TYPE_CHECKING - -from datetime import datetime -from urllib.parse import urlencode, quote - -from searx.utils import html_to_text -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": None, - "wikidata_id": None, - "official_api_documentation": 'https://www.mediawiki.org/w/api.php?action=help&modules=query', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['general'] -paging = True -number_of_results = 5 - -search_type: str = 'nearmatch' -"""Which type of search to perform. One of the following values: ``nearmatch``, -``text`` or ``title``. - -See ``srwhat`` argument in `list=search`_ documentation. -""" - -srenablerewrites: bool = True -"""Enable internal query rewriting (Type: boolean). Some search backends can -rewrite the query into another which is thought to provide better results, for -instance by correcting spelling errors. - -See ``srenablerewrites`` argument in `list=search`_ documentation. -""" - -srsort: str = 'relevance' -"""Set the sort order of returned results. One of the following values: -``create_timestamp_asc``, ``create_timestamp_desc``, ``incoming_links_asc``, -``incoming_links_desc``, ``just_match``, ``last_edit_asc``, ``last_edit_desc``, -``none``, ``random``, ``relevance``, ``user_random``. - -See ``srenablerewrites`` argument in `list=search`_ documentation. -""" - -srprop: str = 'sectiontitle|snippet|timestamp|categorysnippet' -"""Which properties to return. - -See ``srprop`` argument in `list=search`_ documentation. -""" - -base_url: str = 'https://{language}.wikipedia.org/' -"""Base URL of the Wikimedia wiki. - -``{language}``: - ISO 639-1 language code (en, de, fr ..) of the search language. -""" - -timestamp_format = '%Y-%m-%dT%H:%M:%SZ' -"""The longhand version of MediaWiki time strings.""" - - -def request(query, params): - - # write search-language back to params, required in response - - if params['language'] == 'all': - params['language'] = 'en' - else: - params['language'] = params['language'].split('-')[0] - - if base_url.endswith('/'): - api_url = base_url + 'w/api.php?' - else: - api_url = base_url + '/w/api.php?' - api_url = api_url.format(language=params['language']) - - offset = (params['pageno'] - 1) * number_of_results - - args = { - 'action': 'query', - 'list': 'search', - 'format': 'json', - 'srsearch': query, - 'sroffset': offset, - 'srlimit': number_of_results, - 'srwhat': search_type, - 'srprop': srprop, - 'srsort': srsort, - } - if srenablerewrites: - args['srenablerewrites'] = '1' - - params['url'] = api_url + urlencode(args) - return params - - -# get response from search-request -def response(resp): - - results = [] - search_results = resp.json() - - # return empty array if there are no results - if not search_results.get('query', {}).get('search'): - return [] - - for result in search_results['query']['search']: - - if result.get('snippet', '').startswith('#REDIRECT'): - continue - - title = result['title'] - sectiontitle = result.get('sectiontitle') - content = html_to_text(result.get('snippet', '')) - metadata = html_to_text(result.get('categorysnippet', '')) - timestamp = result.get('timestamp') - - url = ( - base_url.format(language=resp.search_params['language']) + 'wiki/' + quote(title.replace(' ', '_').encode()) - ) - if sectiontitle: - # in case of sectiontitle create a link to the section in the wiki page - url += '#' + quote(sectiontitle.replace(' ', '_').encode()) - title += ' / ' + sectiontitle - - item = {'url': url, 'title': title, 'content': content, 'metadata': metadata} - - if timestamp: - item['publishedDate'] = datetime.strptime(timestamp, timestamp_format) - - results.append(item) - - # return results - return results diff --git a/searx/engines/meilisearch.py b/searx/engines/meilisearch.py deleted file mode 100644 index 0c2370216..000000000 --- a/searx/engines/meilisearch.py +++ /dev/null @@ -1,88 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""".. sidebar:: info - - - :origin:`meilisearch.py ` - - `MeiliSearch `_ - - `MeiliSearch Documentation `_ - - `Install MeiliSearch - `_ - -MeiliSearch_ is aimed at individuals and small companies. It is designed for -small-scale (less than 10 million documents) data collections. E.g. it is great -for storing web pages you have visited and searching in the contents later. - -The engine supports faceted search, so you can search in a subset of documents -of the collection. Furthermore, you can search in MeiliSearch_ instances that -require authentication by setting ``auth_token``. - -Example -======= - -Here is a simple example to query a Meilisearch instance: - -.. code:: yaml - - - name: meilisearch - engine: meilisearch - shortcut: mes - base_url: http://localhost:7700 - index: my-index - enable_http: true - -""" - -# pylint: disable=global-statement - -from json import loads, dumps - - -base_url = 'http://localhost:7700' -index = '' -auth_key = '' -facet_filters = [] -_search_url = '' -result_template = 'key-value.html' -categories = ['general'] -paging = True - - -def init(_): - if index == '': - raise ValueError('index cannot be empty') - - global _search_url - _search_url = base_url + '/indexes/' + index + '/search' - - -def request(query, params): - if auth_key != '': - params['headers']['X-Meili-API-Key'] = auth_key - - params['headers']['Content-Type'] = 'application/json' - params['url'] = _search_url - params['method'] = 'POST' - - data = { - 'q': query, - 'offset': 10 * (params['pageno'] - 1), - 'limit': 10, - } - if len(facet_filters) > 0: - data['facetFilters'] = facet_filters - - params['data'] = dumps(data) - - return params - - -def response(resp): - results = [] - - resp_json = loads(resp.text) - for result in resp_json['hits']: - r = {key: str(value) for key, value in result.items()} - r['template'] = result_template - results.append(r) - - return results diff --git a/searx/engines/metacpan.py b/searx/engines/metacpan.py deleted file mode 100644 index 9d7f539e9..000000000 --- a/searx/engines/metacpan.py +++ /dev/null @@ -1,79 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""metacpan -""" - -from urllib.parse import urlunparse -from json import dumps - -# about -about = { - "website": 'https://metacpan.org/', - "wikidata_id": 'Q841507', - "official_api_documentation": 'https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -number_of_results = 20 # Don't put this over 5000 -categories = ["it", "packages"] -disabled = True -shortcut = "cpan" -paging = True - -query_data_template = { - 'query': { - 'multi_match': { - 'type': 'most_fields', - 'fields': ['documentation', 'documentation.*'], - 'analyzer': 'camelcase', - } - }, - 'filter': { - 'bool': { - 'must': [ - {'exists': {'field': 'documentation'}}, - {'term': {'status': 'latest'}}, - {'term': {'indexed': 1}}, - {'term': {'authorized': 1}}, - ] - } - }, - "sort": [ - {"_score": {"order": "desc"}}, - {"date": {"order": "desc"}}, - ], - '_source': ['documentation', "abstract"], - 'size': number_of_results, -} -search_url = urlunparse(["https", "fastapi.metacpan.org", "/v1/file/_search", "", "", ""]) - - -def request(query, params): - params["url"] = search_url - params["method"] = "POST" - query_data = query_data_template - query_data["query"]["multi_match"]["query"] = query - query_data["from"] = (params["pageno"] - 1) * number_of_results - params["data"] = dumps(query_data) - return params - - -def response(resp): - results = [] - - search_results = resp.json()["hits"]["hits"] - for result in search_results: - fields = result["_source"] - module = fields["documentation"] - results.append( - { - "url": "https://metacpan.org/pod/" + module, - "title": module, - "content": fields.get("abstract", ""), - } - ) - - return results diff --git a/searx/engines/mixcloud.py b/searx/engines/mixcloud.py deleted file mode 100644 index 3f255697e..000000000 --- a/searx/engines/mixcloud.py +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Mixcloud (Music) - -""" - -from urllib.parse import urlencode -from dateutil import parser - -# about -about = { - "website": 'https://www.mixcloud.com/', - "wikidata_id": 'Q6883832', - "official_api_documentation": 'http://www.mixcloud.com/developers/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['music'] -paging = True - -# search-url -url = 'https://api.mixcloud.com/' -search_url = url + 'search/?{query}&type=cloudcast&limit=10&offset={offset}' -iframe_src = "https://www.mixcloud.com/widget/iframe/?feed={url}" - - -def request(query, params): - offset = (params['pageno'] - 1) * 10 - params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset) - return params - - -def response(resp): - results = [] - search_res = resp.json() - - for result in search_res.get('data', []): - - r_url = result['url'] - publishedDate = parser.parse(result['created_time']) - res = { - 'url': r_url, - 'title': result['name'], - 'iframe_src': iframe_src.format(url=r_url), - 'img_src': result['pictures']['medium'], - 'publishedDate': publishedDate, - 'content': result['user']['name'], - } - results.append(res) - - return results diff --git a/searx/engines/mongodb.py b/searx/engines/mongodb.py deleted file mode 100644 index 260d6da97..000000000 --- a/searx/engines/mongodb.py +++ /dev/null @@ -1,103 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""MongoDB_ is a document based database program that handles JSON like data. -Before configuring the ``mongodb`` engine, you must install the dependency -pymongo_. - -Configuration -============= - -In order to query MongoDB_, you have to select a ``database`` and a -``collection``. Furthermore, you have to select a ``key`` that is going to be -searched. MongoDB_ also supports the option ``exact_match_only``, so configure -it as you wish. - -Example -======= - -Below is an example configuration for using a MongoDB collection: - -.. code:: yaml - - # MongoDB engine - # Required dependency: pymongo - - - name: mymongo - engine: mongodb - shortcut: md - exact_match_only: false - host: '127.0.0.1' - port: 27017 - enable_http: true - results_per_page: 20 - database: 'business' - collection: 'reviews' # name of the db collection - key: 'name' # key in the collection to search for - -Implementations -=============== - -""" - -import re - -try: - from pymongo import MongoClient # type: ignore -except ImportError: - # import error is ignored because the admin has to install pymongo manually - # to use the engine - pass - - -engine_type = 'offline' - -# mongodb connection variables -host = '127.0.0.1' -port = 27017 -username = '' -password = '' -database = None -collection = None -key = None - -# engine specific variables -paging = True -results_per_page = 20 -exact_match_only = False -result_template = 'key-value.html' - -_client = None - - -def init(_): - connect() - - -def connect(): - global _client # pylint: disable=global-statement - kwargs = {'port': port} - if username: - kwargs['username'] = username - if password: - kwargs['password'] = password - _client = MongoClient(host, **kwargs)[database][collection] - - -def search(query, params): - results = [] - if exact_match_only: - q = {'$eq': query} - else: - _re = re.compile('.*{0}.*'.format(re.escape(query)), re.I | re.M) - q = {'$regex': _re} - - query = _client.find({key: q}).skip((params['pageno'] - 1) * results_per_page).limit(results_per_page) - - results.append({'number_of_results': query.count()}) - for r in query: - del r['_id'] - r = {str(k): str(v) for k, v in r.items()} - r['template'] = result_template - results.append(r) - - return results diff --git a/searx/engines/moviepilot.py b/searx/engines/moviepilot.py deleted file mode 100644 index f9206c74c..000000000 --- a/searx/engines/moviepilot.py +++ /dev/null @@ -1,116 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Moviepilot is a German movie database, similar to IMDB or TMDB. It doesn't -have any official API, but it uses JSON requests internally to fetch search -results and suggestions, that's being used in this implementation. - -Moviepilot additionally allows to discover movies by certain categories -or filters, hence we provide the following syntax: - -- Any normal search query -> Fetch search results by the query - -- A query containing one of the category identifiers ``fsk``, ``genre``, - ``jahr``, ``jahrzent``, ``land``, ``online``, ``stimmung`` will be used to - search trending items by the provided filters, which are appended to the - filter category after a ``-``. - -Search examples: - -- Normal: ``!mp Tom Cruise`` -- By filter: ``!mp person-Ryan-Gosling`` -- By filter: ``!mp fsk-0 land-deutschland genre-actionfilm`` -- By filter: ``!mp jahrzehnt-2020er online-netflix`` - -For a list of all public filters, observe the url path when browsing - -- https://www.moviepilot.de/filme/beste. - -""" - -from urllib.parse import urlencode -from searx.utils import html_to_text - -about = { - 'website': "https://www.moviepilot.de", - 'official_api_documentation': None, - 'use_official_api': False, - 'require_api_key': False, - 'results': 'JSON', - 'language': 'de', -} -paging = True -categories = ["movies"] - -base_url = "https://www.moviepilot.de" -image_url = "https://assets.cdn.moviepilot.de/files/{image_id}/fill/155/223/{filename}" - -filter_types = ["fsk", "genre", "jahr", "jahrzehnt", "land", "online", "stimmung", "person"] - - -def request(query, params): - query_parts = query.split(" ") - - discovery_filters = [] - for query_part in query_parts: - filter_category_and_value = query_part.split("-", 1) - - if len(filter_category_and_value) < 2: - continue - - filter_category = filter_category_and_value[0] - - if filter_category in filter_types: - discovery_filters.append(query_part) - - params['discovery'] = len(discovery_filters) != 0 - - if params['discovery']: - args = { - 'page': params['pageno'], - 'order': 'beste', - } - params["url"] = f"{base_url}/api/discovery?{urlencode(args)}" - for discovery_filter in discovery_filters: - params["url"] += f"&filters[]={discovery_filter}" - else: - args = { - 'q': query, - 'page': params['pageno'], - 'type': 'suggest', - } - params["url"] = f"{base_url}/api/search?{urlencode(args)}" - - return params - - -def response(resp): - results = [] - - json = resp.json() - - json_results = [] - - if resp.search_params['discovery']: - json_results = json['results'] - else: - json_results = json - - for result in json_results: - item = {'title': result['title']} - - if resp.search_params['discovery']: - content_list = [result.get(x) for x in ['abstract', 'summary']] - item['url'] = base_url + result['path'] - item['content'] = html_to_text(' | '.join([x for x in content_list if x])) - item['metadata'] = html_to_text(result.get('meta_short', '')) - - if result.get('image'): - item['img_src'] = image_url.format(image_id=result['image'], filename=result['image_filename']) - else: - item['url'] = result['url'] - item['content'] = ', '.join([result['class'], result['info'], result['more']]) - item['img_src'] = result['image'] - - results.append(item) - - return results diff --git a/searx/engines/mrs.py b/searx/engines/mrs.py deleted file mode 100644 index 68e34d21d..000000000 --- a/searx/engines/mrs.py +++ /dev/null @@ -1,71 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Matrix Rooms Search - a fully-featured, standalone, matrix rooms search service. - -Configuration -============= - -The engine has the following mandatory settings: - -- :py:obj:`base_url` - -.. code:: yaml - - - name: MRS - engine: mrs - base_url: https://mrs-host - ... - -Implementation -============== -""" - -from urllib.parse import quote_plus - -about = { - "website": 'https://matrixrooms.info', - "wikidata_id": None, - "official_api_documentation": 'https://gitlab.com/etke.cc/mrs/api/-/blob/main/openapi.yml?ref_type=heads', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} -paging = True -categories = ['social media'] - -base_url = "" -matrix_url = "https://matrix.to" -page_size = 20 - - -def init(engine_settings): # pylint: disable=unused-argument - """The ``base_url`` must be set in the configuration, if ``base_url`` is not - set, a :py:obj:`ValueError` is raised during initialization. - - """ - if not base_url: - raise ValueError('engine MRS, base_url is unset') - - -def request(query, params): - params['url'] = f"{base_url}/search/{quote_plus(query)}/{page_size}/{(params['pageno']-1)*page_size}" - return params - - -def response(resp): - results = [] - - for result in resp.json(): - results.append( - { - 'url': matrix_url + '/#/' + result['alias'], - 'title': result['name'], - 'content': result['topic'] - + f" // {result['members']} members" - + f" // {result['alias']}" - + f" // {result['server']}", - 'thumbnail': result['avatar_url'], - } - ) - - return results diff --git a/searx/engines/mwmbl.py b/searx/engines/mwmbl.py deleted file mode 100644 index f4905401d..000000000 --- a/searx/engines/mwmbl.py +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Mwmbl_ is a non-profit, ad-free, free-libre and free-lunch search engine with -a focus on useability and speed. - -.. hint:: - - At the moment it is little more than an idea together with a proof of concept - implementation of the web front-end and search technology on a small index. - Mwmbl_ does not support regions, languages, safe-search or time range. - search. - -.. _Mwmbl: https://github.com/mwmbl/mwmbl - -""" - -from urllib.parse import urlencode - -about = { - "website": 'https://github.com/mwmbl/mwmbl', - "official_api_documentation": 'https://api.mwmbl.org/docs', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} -paging = False -categories = ['general'] - -api_url = "https://api.mwmbl.org" - - -def request(query, params): - params['url'] = f"{api_url}/search?{urlencode({'s': query})}" - return params - - -def response(resp): - results = [] - - json_results = resp.json() - - for result in json_results: - title_parts = [title['value'] for title in result['title']] - results.append( - { - 'url': result['url'], - 'title': ''.join(title_parts), - 'content': result['extract'][0]['value'], - } - ) - - return results diff --git a/searx/engines/mysql_server.py b/searx/engines/mysql_server.py deleted file mode 100644 index 82bb37f51..000000000 --- a/searx/engines/mysql_server.py +++ /dev/null @@ -1,86 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""MySQL is said to be the most popular open source database. Before enabling -MySQL engine, you must install the package ``mysql-connector-python``. - -The authentication plugin is configurable by setting ``auth_plugin`` in the -attributes. By default it is set to ``caching_sha2_password``. - -Example -======= - -This is an example configuration for querying a MySQL server: - -.. code:: yaml - - - name: my_database - engine: mysql_server - database: my_database - username: searxng - password: password - limit: 5 - query_str: 'SELECT * from my_table WHERE my_column=%(query)s' - -Implementations -=============== - -""" - -try: - import mysql.connector # type: ignore -except ImportError: - # import error is ignored because the admin has to install mysql manually to use - # the engine - pass - -engine_type = 'offline' -auth_plugin = 'caching_sha2_password' -host = "127.0.0.1" -port = 3306 -database = "" -username = "" -password = "" -query_str = "" -limit = 10 -paging = True -result_template = 'key-value.html' -_connection = None - - -def init(engine_settings): - global _connection # pylint: disable=global-statement - - if 'query_str' not in engine_settings: - raise ValueError('query_str cannot be empty') - - if not engine_settings['query_str'].lower().startswith('select '): - raise ValueError('only SELECT query is supported') - - _connection = mysql.connector.connect( - database=database, - user=username, - password=password, - host=host, - port=port, - auth_plugin=auth_plugin, - ) - - -def search(query, params): - query_params = {'query': query} - query_to_run = query_str + ' LIMIT {0} OFFSET {1}'.format(limit, (params['pageno'] - 1) * limit) - - with _connection.cursor() as cur: - cur.execute(query_to_run, query_params) - - return _fetch_results(cur) - - -def _fetch_results(cur): - results = [] - for res in cur: - result = dict(zip(cur.column_names, map(str, res))) - result['template'] = result_template - results.append(result) - - return results diff --git a/searx/engines/nyaa.py b/searx/engines/nyaa.py deleted file mode 100644 index bdd3ea6dc..000000000 --- a/searx/engines/nyaa.py +++ /dev/null @@ -1,115 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Nyaa.si (Anime Bittorrent tracker) -""" - -from lxml import html -from urllib.parse import urlencode -from searx.utils import extract_text, get_torrent_size, int_or_zero - -# about -about = { - "website": 'https://nyaa.si/', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['files'] -paging = True - -# search-url -base_url = 'https://nyaa.si/' -search_url = base_url + '?page=search&{query}&offset={offset}' - -# xpath queries -xpath_results = '//table[contains(@class, "torrent-list")]//tr[not(th)]' -xpath_category = './/td[1]/a[1]' -xpath_title = './/td[2]/a[last()]' -xpath_torrent_links = './/td[3]/a' -xpath_filesize = './/td[4]/text()' -xpath_seeds = './/td[6]/text()' -xpath_leeches = './/td[7]/text()' -xpath_downloads = './/td[8]/text()' - - -# do search-request -def request(query, params): - query = urlencode({'term': query}) - params['url'] = search_url.format(query=query, offset=params['pageno']) - return params - - -# get response from search-request -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - - for result in dom.xpath(xpath_results): - # defaults - filesize = 0 - magnet_link = "" - torrent_link = "" - - # category in which our torrent belongs - try: - category = result.xpath(xpath_category)[0].attrib.get('title') - except: - pass - - # torrent title - page_a = result.xpath(xpath_title)[0] - title = extract_text(page_a) - - # link to the page - href = base_url + page_a.attrib.get('href') - - for link in result.xpath(xpath_torrent_links): - url = link.attrib.get('href') - if 'magnet' in url: - # link to the magnet - magnet_link = url - else: - # link to the torrent file - torrent_link = url - - # seed count - seed = int_or_zero(result.xpath(xpath_seeds)) - - # leech count - leech = int_or_zero(result.xpath(xpath_leeches)) - - # torrent downloads count - downloads = int_or_zero(result.xpath(xpath_downloads)) - - # let's try to calculate the torrent size - try: - filesize_info = result.xpath(xpath_filesize)[0] - filesize, filesize_multiplier = filesize_info.split() - filesize = get_torrent_size(filesize, filesize_multiplier) - except: - pass - - # content string contains all information not included into template - content = 'Category: "{category}". Downloaded {downloads} times.' - content = content.format(category=category, downloads=downloads) - - results.append( - { - 'url': href, - 'title': title, - 'content': content, - 'seed': seed, - 'leech': leech, - 'filesize': filesize, - 'torrentfile': torrent_link, - 'magnetlink': magnet_link, - 'template': 'torrent.html', - } - ) - - return results diff --git a/searx/engines/odysee.py b/searx/engines/odysee.py deleted file mode 100644 index 3189ab4c6..000000000 --- a/searx/engines/odysee.py +++ /dev/null @@ -1,145 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Odysee_ is a decentralized video hosting platform. - -.. _Odysee: https://github.com/OdyseeTeam/odysee-frontend -""" - -import time -from urllib.parse import urlencode -from datetime import datetime - -import babel - -from searx.network import get -from searx.locales import language_tag -from searx.enginelib.traits import EngineTraits - -traits: EngineTraits - -# Engine metadata -about = { - "website": "https://odysee.com/", - "wikidata_id": "Q102046570", - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": "JSON", -} - -# Engine configuration -paging = True -time_range_support = True -results_per_page = 20 -categories = ['videos'] - -# Search URL (Note: lighthouse.lbry.com/search works too, and may be faster at times) -base_url = "https://lighthouse.odysee.tv/search" - - -def request(query, params): - time_range_dict = { - "day": "today", - "week": "thisweek", - "month": "thismonth", - "year": "thisyear", - } - - start_index = (params["pageno"] - 1) * results_per_page - query_params = { - "s": query, - "size": results_per_page, - "from": start_index, - "include": "channel,thumbnail_url,title,description,duration,release_time", - "mediaType": "video", - } - - lang = traits.get_language(params['searxng_locale'], None) - if lang is not None: - query_params['language'] = lang - - if params['time_range'] in time_range_dict: - query_params['time_filter'] = time_range_dict[params['time_range']] - - params["url"] = f"{base_url}?{urlencode(query_params)}" - return params - - -# Format the video duration -def format_duration(duration): - seconds = int(duration) - length = time.gmtime(seconds) - if length.tm_hour: - return time.strftime("%H:%M:%S", length) - return time.strftime("%M:%S", length) - - -def response(resp): - data = resp.json() - results = [] - - for item in data: - name = item["name"] - claim_id = item["claimId"] - title = item["title"] - thumbnail_url = item["thumbnail_url"] - description = item["description"] or "" - channel = item["channel"] - release_time = item["release_time"] - duration = item["duration"] - - release_date = datetime.strptime(release_time.split("T")[0], "%Y-%m-%d") - formatted_date = datetime.utcfromtimestamp(release_date.timestamp()) - - url = f"https://odysee.com/{name}:{claim_id}" - iframe_url = f"https://odysee.com/$/embed/{name}:{claim_id}" - odysee_thumbnail = f"https://thumbnails.odycdn.com/optimize/s:390:0/quality:85/plain/{thumbnail_url}" - formatted_duration = format_duration(duration) - - results.append( - { - "title": title, - "url": url, - "content": description, - "author": channel, - "publishedDate": formatted_date, - "length": formatted_duration, - "thumbnail": odysee_thumbnail, - "iframe_src": iframe_url, - "template": "videos.html", - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """ - Fetch languages from Odysee's source code. - """ - - resp = get( - 'https://raw.githubusercontent.com/OdyseeTeam/odysee-frontend/master/ui/constants/supported_browser_languages.js', # pylint: disable=line-too-long - timeout=60, - ) - - if not resp.ok: - print("ERROR: can't determine languages from Odysee") - return - - for line in resp.text.split("\n")[1:-4]: - lang_tag = line.strip().split(": ")[0].replace("'", "") - - try: - sxng_tag = language_tag(babel.Locale.parse(lang_tag, sep="-")) - except babel.UnknownLocaleError: - print("ERROR: %s is unknown by babel" % lang_tag) - continue - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != lang_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, lang_tag)) - continue - - engine_traits.languages[sxng_tag] = lang_tag diff --git a/searx/engines/opensemantic.py b/searx/engines/opensemantic.py deleted file mode 100644 index 64bc321f1..000000000 --- a/searx/engines/opensemantic.py +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Open Semantic Search -""" - -from dateutil import parser -from json import loads -from urllib.parse import quote - -# about -about = { - "website": 'https://www.opensemanticsearch.org/', - "wikidata_id": None, - "official_api_documentation": 'https://www.opensemanticsearch.org/dev', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -base_url = 'http://localhost:8983/solr/opensemanticsearch/' -search_string = 'query?q={query}' - - -def request(query, params): - search_path = search_string.format( - query=quote(query), - ) - params['url'] = base_url + search_path - return params - - -def response(resp): - results = [] - data = loads(resp.text) - docs = data.get('response', {}).get('docs', []) - - for current in docs: - item = {} - item['url'] = current['id'] - item['title'] = current['title_txt_txt_en'] - if current.get('content_txt'): - item['content'] = current['content_txt'][0] - item['publishedDate'] = parser.parse(current['file_modified_dt']) - results.append(item) - - return results diff --git a/searx/engines/openstreetmap.py b/searx/engines/openstreetmap.py deleted file mode 100644 index 68ec0549e..000000000 --- a/searx/engines/openstreetmap.py +++ /dev/null @@ -1,463 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""OpenStreetMap (Map) - -""" - -import re -from json import loads -from urllib.parse import urlencode -from functools import partial - -from flask_babel import gettext - -from searx.data import OSM_KEYS_TAGS, CURRENCIES -from searx.utils import searx_useragent -from searx.external_urls import get_external_url -from searx.engines.wikidata import send_wikidata_query, sparql_string_escape, get_thumbnail - -# about -about = { - "website": 'https://www.openstreetmap.org/', - "wikidata_id": 'Q936', - "official_api_documentation": 'http://wiki.openstreetmap.org/wiki/Nominatim', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['map'] -paging = False -language_support = True -send_accept_language_header = True - -# search-url -base_url = 'https://nominatim.openstreetmap.org/' -search_string = 'search?{query}&polygon_geojson=1&format=jsonv2&addressdetails=1&extratags=1&dedupe=1' -result_id_url = 'https://openstreetmap.org/{osm_type}/{osm_id}' -result_lat_lon_url = 'https://www.openstreetmap.org/?mlat={lat}&mlon={lon}&zoom={zoom}&layers=M' - -route_url = 'https://graphhopper.com/maps/?point={}&point={}&locale=en-US&vehicle=car&weighting=fastest&turn_costs=true&use_miles=false&layer=Omniscale' # pylint: disable=line-too-long -route_re = re.compile('(?:from )?(.+) to (.+)') - -wikidata_image_sparql = """ -select ?item ?itemLabel ?image ?sign ?symbol ?website ?wikipediaName -where { - hint:Query hint:optimizer "None". - values ?item { %WIKIDATA_IDS% } - OPTIONAL { ?item wdt:P18|wdt:P8517|wdt:P4291|wdt:P5252|wdt:P3451|wdt:P4640|wdt:P5775|wdt:P2716|wdt:P1801|wdt:P4896 ?image } - OPTIONAL { ?item wdt:P1766|wdt:P8505|wdt:P8667 ?sign } - OPTIONAL { ?item wdt:P41|wdt:P94|wdt:P154|wdt:P158|wdt:P2910|wdt:P4004|wdt:P5962|wdt:P8972 ?symbol } - OPTIONAL { ?item wdt:P856 ?website } - SERVICE wikibase:label { - bd:serviceParam wikibase:language "%LANGUAGE%,en". - ?item rdfs:label ?itemLabel . - } - OPTIONAL { - ?wikipediaUrl schema:about ?item; - schema:isPartOf/wikibase:wikiGroup "wikipedia"; - schema:name ?wikipediaName; - schema:inLanguage "%LANGUAGE%" . - } -} -ORDER by ?item -""" - - -# key value that are link: mapping functions -# 'mapillary': P1947 -# but https://github.com/kartaview/openstreetcam.org/issues/60 -# but https://taginfo.openstreetmap.org/keys/kartaview ... -def value_to_https_link(value): - http = 'http://' - if value.startswith(http): - value = 'https://' + value[len(http) :] - return (value, value) - - -def value_to_website_link(value): - value = value.split(';')[0] - return (value, value) - - -def value_wikipedia_link(value): - value = value.split(':', 1) - return ('https://{0}.wikipedia.org/wiki/{1}'.format(*value), '{1} ({0})'.format(*value)) - - -def value_with_prefix(prefix, value): - return (prefix + value, value) - - -VALUE_TO_LINK = { - 'website': value_to_website_link, - 'contact:website': value_to_website_link, - 'email': partial(value_with_prefix, 'mailto:'), - 'contact:email': partial(value_with_prefix, 'mailto:'), - 'contact:phone': partial(value_with_prefix, 'tel:'), - 'phone': partial(value_with_prefix, 'tel:'), - 'fax': partial(value_with_prefix, 'fax:'), - 'contact:fax': partial(value_with_prefix, 'fax:'), - 'contact:mastodon': value_to_https_link, - 'facebook': value_to_https_link, - 'contact:facebook': value_to_https_link, - 'contact:foursquare': value_to_https_link, - 'contact:instagram': value_to_https_link, - 'contact:linkedin': value_to_https_link, - 'contact:pinterest': value_to_https_link, - 'contact:telegram': value_to_https_link, - 'contact:tripadvisor': value_to_https_link, - 'contact:twitter': value_to_https_link, - 'contact:yelp': value_to_https_link, - 'contact:youtube': value_to_https_link, - 'contact:webcam': value_to_website_link, - 'wikipedia': value_wikipedia_link, - 'wikidata': partial(value_with_prefix, 'https://wikidata.org/wiki/'), - 'brand:wikidata': partial(value_with_prefix, 'https://wikidata.org/wiki/'), -} -KEY_ORDER = [ - 'cuisine', - 'organic', - 'delivery', - 'delivery:covid19', - 'opening_hours', - 'opening_hours:covid19', - 'fee', - 'payment:*', - 'currency:*', - 'outdoor_seating', - 'bench', - 'wheelchair', - 'level', - 'building:levels', - 'bin', - 'public_transport', - 'internet_access:ssid', -] -KEY_RANKS = {k: i for i, k in enumerate(KEY_ORDER)} - - -def request(query, params): - """do search-request""" - params['url'] = base_url + search_string.format(query=urlencode({'q': query})) - params['route'] = route_re.match(query) - params['headers']['User-Agent'] = searx_useragent() - if 'Accept-Language' not in params['headers']: - params['headers']['Accept-Language'] = 'en' - return params - - -def response(resp): - """get response from search-request""" - results = [] - nominatim_json = loads(resp.text) - user_language = resp.search_params['language'] - - if resp.search_params['route']: - results.append( - { - 'answer': gettext('Get directions'), - 'url': route_url.format(*resp.search_params['route'].groups()), - } - ) - - # simplify the code below: make sure extratags is a dictionary - for result in nominatim_json: - if not isinstance(result.get('extratags'), dict): - result["extratags"] = {} - - # fetch data from wikidata - fetch_wikidata(nominatim_json, user_language) - - # create results - for result in nominatim_json: - title, address = get_title_address(result) - - # ignore result without title - if not title: - continue - - url, osm, geojson = get_url_osm_geojson(result) - img_src = get_thumbnail(get_img_src(result)) - links, link_keys = get_links(result, user_language) - data = get_data(result, user_language, link_keys) - - results.append( - { - 'template': 'map.html', - 'title': title, - 'address': address, - 'address_label': get_key_label('addr', user_language), - 'url': url, - 'osm': osm, - 'geojson': geojson, - 'img_src': img_src, - 'links': links, - 'data': data, - 'type': get_tag_label(result.get('category'), result.get('type', ''), user_language), - 'type_icon': result.get('icon'), - 'content': '', - 'longitude': result['lon'], - 'latitude': result['lat'], - 'boundingbox': result['boundingbox'], - } - ) - - return results - - -def get_wikipedia_image(raw_value): - if not raw_value: - return None - return get_external_url('wikimedia_image', raw_value) - - -def fetch_wikidata(nominatim_json, user_language): - """Update nominatim_json using the result of an unique to wikidata - - For result in nominatim_json: - If result['extratags']['wikidata'] or r['extratags']['wikidata link']: - Set result['wikidata'] to { 'image': ..., 'image_sign':..., 'image_symbal':... } - Set result['extratags']['wikipedia'] if not defined - Set result['extratags']['contact:website'] if not defined - """ - wikidata_ids = [] - wd_to_results = {} - for result in nominatim_json: - extratags = result['extratags'] - # ignore brand:wikidata - wd_id = extratags.get('wikidata', extratags.get('wikidata link')) - if wd_id and wd_id not in wikidata_ids: - wikidata_ids.append('wd:' + wd_id) - wd_to_results.setdefault(wd_id, []).append(result) - - if wikidata_ids: - user_language = 'en' if user_language == 'all' else user_language.split('-')[0] - wikidata_ids_str = " ".join(wikidata_ids) - query = wikidata_image_sparql.replace('%WIKIDATA_IDS%', sparql_string_escape(wikidata_ids_str)).replace( - '%LANGUAGE%', sparql_string_escape(user_language) - ) - wikidata_json = send_wikidata_query(query) - for wd_result in wikidata_json.get('results', {}).get('bindings', {}): - wd_id = wd_result['item']['value'].replace('http://www.wikidata.org/entity/', '') - for result in wd_to_results.get(wd_id, []): - result['wikidata'] = { - 'itemLabel': wd_result['itemLabel']['value'], - 'image': get_wikipedia_image(wd_result.get('image', {}).get('value')), - 'image_sign': get_wikipedia_image(wd_result.get('sign', {}).get('value')), - 'image_symbol': get_wikipedia_image(wd_result.get('symbol', {}).get('value')), - } - # overwrite wikipedia link - wikipedia_name = wd_result.get('wikipediaName', {}).get('value') - if wikipedia_name: - result['extratags']['wikipedia'] = user_language + ':' + wikipedia_name - # get website if not already defined - website = wd_result.get('website', {}).get('value') - if ( - website - and not result['extratags'].get('contact:website') - and not result['extratags'].get('website') - ): - result['extratags']['contact:website'] = website - - -def get_title_address(result): - """Return title and address - - title may be None - """ - address_raw = result.get('address') - address_name = None - address = {} - - # get name - if ( - result['category'] == 'amenity' - or result['category'] == 'shop' - or result['category'] == 'tourism' - or result['category'] == 'leisure' - ): - if address_raw.get('address29'): - # https://github.com/osm-search/Nominatim/issues/1662 - address_name = address_raw.get('address29') - else: - address_name = address_raw.get(result['category']) - elif result['type'] in address_raw: - address_name = address_raw.get(result['type']) - - # add rest of adressdata, if something is already found - if address_name: - title = address_name - address.update( - { - 'name': address_name, - 'house_number': address_raw.get('house_number'), - 'road': address_raw.get('road'), - 'locality': address_raw.get( - 'city', address_raw.get('town', address_raw.get('village')) # noqa - ), # noqa - 'postcode': address_raw.get('postcode'), - 'country': address_raw.get('country'), - 'country_code': address_raw.get('country_code'), - } - ) - else: - title = result.get('display_name') - - return title, address - - -def get_url_osm_geojson(result): - """Get url, osm and geojson""" - osm_type = result.get('osm_type', result.get('type')) - if 'osm_id' not in result: - # see https://github.com/osm-search/Nominatim/issues/1521 - # query example: "EC1M 5RF London" - url = result_lat_lon_url.format(lat=result['lat'], lon=result['lon'], zoom=12) - osm = {} - else: - url = result_id_url.format(osm_type=osm_type, osm_id=result['osm_id']) - osm = {'type': osm_type, 'id': result['osm_id']} - - geojson = result.get('geojson') - # if no geojson is found and osm_type is a node, add geojson Point - if not geojson and osm_type == 'node': - geojson = {'type': 'Point', 'coordinates': [result['lon'], result['lat']]} - - return url, osm, geojson - - -def get_img_src(result): - """Get image URL from either wikidata or r['extratags']""" - # wikidata - img_src = None - if 'wikidata' in result: - img_src = result['wikidata']['image'] - if not img_src: - img_src = result['wikidata']['image_symbol'] - if not img_src: - img_src = result['wikidata']['image_sign'] - - # img_src - extratags = result['extratags'] - if not img_src and extratags.get('image'): - img_src = extratags['image'] - del extratags['image'] - if not img_src and extratags.get('wikimedia_commons'): - img_src = get_external_url('wikimedia_image', extratags['wikimedia_commons']) - del extratags['wikimedia_commons'] - - return img_src - - -def get_links(result, user_language): - """Return links from result['extratags']""" - links = [] - link_keys = set() - extratags = result['extratags'] - if not extratags: - # minor optimization : no need to check VALUE_TO_LINK if extratags is empty - return links, link_keys - for k, mapping_function in VALUE_TO_LINK.items(): - raw_value = extratags.get(k) - if not raw_value: - continue - url, url_label = mapping_function(raw_value) - if url.startswith('https://wikidata.org'): - url_label = result.get('wikidata', {}).get('itemLabel') or url_label - links.append( - { - 'label': get_key_label(k, user_language), - 'url': url, - 'url_label': url_label, - } - ) - link_keys.add(k) - return links, link_keys - - -def get_data(result, user_language, ignore_keys): - """Return key, value of result['extratags'] - - Must be call after get_links - - Note: the values are not translated - """ - data = [] - for k, v in result['extratags'].items(): - if k in ignore_keys: - continue - if get_key_rank(k) is None: - continue - k_label = get_key_label(k, user_language) - if k_label: - data.append( - { - 'label': k_label, - 'key': k, - 'value': v, - } - ) - data.sort(key=lambda entry: (get_key_rank(entry['key']), entry['label'])) - return data - - -def get_key_rank(k): - """Get OSM key rank - - The rank defines in which order the key are displayed in the HTML result - """ - key_rank = KEY_RANKS.get(k) - if key_rank is None: - # "payment:*" in KEY_ORDER matches "payment:cash", "payment:debit card", etc... - key_rank = KEY_RANKS.get(k.split(':')[0] + ':*') - return key_rank - - -def get_label(labels, lang): - """Get label from labels in OSM_KEYS_TAGS - - in OSM_KEYS_TAGS, labels have key == '*' - """ - tag_label = labels.get(lang.lower()) - if tag_label is None: - # example: if 'zh-hk' is not found, check 'zh' - tag_label = labels.get(lang.split('-')[0]) - if tag_label is None and lang != 'en': - # example: if 'zh' is not found, check 'en' - tag_label = labels.get('en') - if tag_label is None and len(labels.values()) > 0: - # example: if still not found, use the first entry - tag_label = labels.values()[0] - return tag_label - - -def get_tag_label(tag_category, tag_name, lang): - """Get tag label from OSM_KEYS_TAGS""" - tag_name = '' if tag_name is None else tag_name - tag_labels = OSM_KEYS_TAGS['tags'].get(tag_category, {}).get(tag_name, {}) - return get_label(tag_labels, lang) - - -def get_key_label(key_name, lang): - """Get key label from OSM_KEYS_TAGS""" - if key_name.startswith('currency:'): - # currency:EUR --> get the name from the CURRENCIES variable - # see https://wiki.openstreetmap.org/wiki/Key%3Acurrency - # and for example https://taginfo.openstreetmap.org/keys/currency:EUR#values - # but there is also currency=EUR (currently not handled) - # https://taginfo.openstreetmap.org/keys/currency#values - currency = key_name.split(':') - if len(currency) > 1: - o = CURRENCIES['iso4217'].get(currency[1]) - if o: - return get_label(o, lang).lower() - return currency[1] - - labels = OSM_KEYS_TAGS['keys'] - for k in key_name.split(':') + ['*']: - labels = labels.get(k) - if labels is None: - return None - return get_label(labels, lang) diff --git a/searx/engines/openverse.py b/searx/engines/openverse.py deleted file mode 100644 index 9f4636e41..000000000 --- a/searx/engines/openverse.py +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - - Openverse (formerly known as: Creative Commons search engine) [Images] - -""" - -from json import loads -from urllib.parse import urlencode - - -about = { - "website": 'https://wordpress.org/openverse/', - "wikidata_id": None, - "official_api_documentation": 'https://api.openverse.engineering/v1/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['images'] - -paging = True -nb_per_page = 20 - -base_url = 'https://api.openverse.engineering/v1/images/' -search_string = '?page={page}&page_size={nb_per_page}&format=json&{query}' - - -def request(query, params): - - search_path = search_string.format(query=urlencode({'q': query}), nb_per_page=nb_per_page, page=params['pageno']) - - params['url'] = base_url + search_path - - return params - - -def response(resp): - results = [] - - json_data = loads(resp.text) - - for result in json_data['results']: - results.append( - { - 'url': result['foreign_landing_url'], - 'title': result['title'], - 'img_src': result['url'], - 'template': 'images.html', - } - ) - - return results diff --git a/searx/engines/pdbe.py b/searx/engines/pdbe.py deleted file mode 100644 index 34c8d3227..000000000 --- a/searx/engines/pdbe.py +++ /dev/null @@ -1,122 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - PDBe (Protein Data Bank in Europe) -""" - -from json import loads -from flask_babel import gettext - -# about -about = { - "website": 'https://www.ebi.ac.uk/pdbe', - "wikidata_id": 'Q55823905', - "official_api_documentation": 'https://www.ebi.ac.uk/pdbe/api/doc/search.html', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['science'] - -hide_obsolete = False - -# status codes of unpublished entries -pdb_unpublished_codes = ['HPUB', 'HOLD', 'PROC', 'WAIT', 'AUTH', 'AUCO', 'REPL', 'POLC', 'REFI', 'TRSF', 'WDRN'] -# url for api query -pdbe_solr_url = 'https://www.ebi.ac.uk/pdbe/search/pdb/select?' -# base url for results -pdbe_entry_url = 'https://www.ebi.ac.uk/pdbe/entry/pdb/{pdb_id}' -# link to preview image of structure -pdbe_preview_url = 'https://www.ebi.ac.uk/pdbe/static/entry/{pdb_id}_deposited_chain_front_image-200x200.png' - - -def request(query, params): - - params['url'] = pdbe_solr_url - params['method'] = 'POST' - params['data'] = {'q': query, 'wt': "json"} # request response in parsable format - return params - - -def construct_body(result): - # set title - title = result['title'] - - # construct content body - content = """{title} - {authors} {journal} ({volume}) {page} ({year})""" - - # replace placeholders with actual content - try: - if result['journal']: - content = content.format( - title=result['citation_title'], - authors=result['entry_author_list'][0], - journal=result['journal'], - volume=result['journal_volume'], - page=result['journal_page'], - year=result['citation_year'], - ) - else: - content = content.format( - title=result['citation_title'], - authors=result['entry_author_list'][0], - journal='', - volume='', - page='', - year=result['release_year'], - ) - img_src = pdbe_preview_url.format(pdb_id=result['pdb_id']) - except (KeyError): - content = None - img_src = None - - # construct url for preview image - try: - img_src = pdbe_preview_url.format(pdb_id=result['pdb_id']) - except (KeyError): - img_src = None - - return [title, content, img_src] - - -def response(resp): - - results = [] - json = loads(resp.text)['response']['docs'] - - # parse results - for result in json: - # catch obsolete entries and mark them accordingly - if result['status'] in pdb_unpublished_codes: - continue - if hide_obsolete: - continue - if result['status'] == 'OBS': - # expand title to add some sort of warning message - title = gettext('{title} (OBSOLETE)').format(title=result['title']) - try: - superseded_url = pdbe_entry_url.format(pdb_id=result['superseded_by']) - except: - continue - - # since we can't construct a proper body from the response, we'll make up our own - msg_superseded = gettext("This entry has been superseded by") - content = '{msg_superseded}: {url} ({pdb_id})'.format( - msg_superseded=msg_superseded, url=superseded_url, pdb_id=result['superseded_by'] - ) - - # obsoleted entries don't have preview images - img_src = None - else: - title, content, img_src = construct_body(result) - - results.append( - { - 'url': pdbe_entry_url.format(pdb_id=result['pdb_id']), - 'title': title, - 'content': content, - 'img_src': img_src, - } - ) - - return results diff --git a/searx/engines/peertube.py b/searx/engines/peertube.py deleted file mode 100644 index d0eba6b88..000000000 --- a/searx/engines/peertube.py +++ /dev/null @@ -1,186 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Peertube and :py:obj:`SepiaSearch ` do share -(more or less) the same REST API and the schema of the JSON result is identical. - -""" - -import re -from urllib.parse import urlencode -from datetime import datetime -from dateutil.parser import parse -from dateutil.relativedelta import relativedelta - -import babel - -from searx.network import get # see https://github.com/searxng/searxng/issues/762 -from searx.locales import language_tag -from searx.utils import html_to_text -from searx.enginelib.traits import EngineTraits - -traits: EngineTraits - -about = { - # pylint: disable=line-too-long - "website": 'https://joinpeertube.org', - "wikidata_id": 'Q50938515', - "official_api_documentation": 'https://docs.joinpeertube.org/api-rest-reference.html#tag/Search/operation/searchVideos', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ["videos"] -paging = True -base_url = "https://peer.tube" -"""Base URL of the Peertube instance. A list of instances is available at: - -- https://instances.joinpeertube.org/instances -""" - -time_range_support = True -time_range_table = { - 'day': relativedelta(), - 'week': relativedelta(weeks=-1), - 'month': relativedelta(months=-1), - 'year': relativedelta(years=-1), -} - -safesearch = True -safesearch_table = {0: 'both', 1: 'false', 2: 'false'} - - -def minute_to_hm(minute): - if isinstance(minute, int): - return "%d:%02d" % (divmod(minute, 60)) - return None - - -def request(query, params): - """Assemble request for the Peertube API""" - - if not query: - return False - - # eng_region = traits.get_region(params['searxng_locale'], 'en_US') - eng_lang = traits.get_language(params['searxng_locale'], None) - - params['url'] = ( - base_url.rstrip("/") - + "/api/v1/search/videos?" - + urlencode( - { - 'search': query, - 'searchTarget': 'search-index', # Vidiversum - 'resultType': 'videos', - 'start': (params['pageno'] - 1) * 10, - 'count': 10, - # -createdAt: sort by date ascending / createdAt: date descending - 'sort': '-match', # sort by *match descending* - 'nsfw': safesearch_table[params['safesearch']], - } - ) - ) - - if eng_lang is not None: - params['url'] += '&languageOneOf[]=' + eng_lang - params['url'] += '&boostLanguages[]=' + eng_lang - - if params['time_range'] in time_range_table: - time = datetime.now().date() + time_range_table[params['time_range']] - params['url'] += '&startDate=' + time.isoformat() - - return params - - -def response(resp): - return video_response(resp) - - -def video_response(resp): - """Parse video response from SepiaSearch and Peertube instances.""" - results = [] - - json_data = resp.json() - - if 'data' not in json_data: - return [] - - for result in json_data['data']: - metadata = [ - x - for x in [ - result.get('channel', {}).get('displayName'), - result.get('channel', {}).get('name') + '@' + result.get('channel', {}).get('host'), - ', '.join(result.get('tags', [])), - ] - if x - ] - - results.append( - { - 'url': result['url'], - 'title': result['name'], - 'content': html_to_text(result.get('description') or ''), - 'author': result.get('account', {}).get('displayName'), - 'length': minute_to_hm(result.get('duration')), - 'template': 'videos.html', - 'publishedDate': parse(result['publishedAt']), - 'iframe_src': result.get('embedUrl'), - 'thumbnail': result.get('thumbnailUrl') or result.get('previewUrl'), - 'metadata': ' | '.join(metadata), - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages from peertube's search-index source code. - - See videoLanguages_ in commit `8ed5c729 - Refactor and redesign client`_ - - .. _8ed5c729 - Refactor and redesign client: - https://framagit.org/framasoft/peertube/search-index/-/commit/8ed5c729 - .. _videoLanguages: - https://framagit.org/framasoft/peertube/search-index/-/commit/8ed5c729#3d8747f9a60695c367c70bb64efba8f403721fad_0_291 - """ - - resp = get( - 'https://framagit.org/framasoft/peertube/search-index/-/raw/master/client/src/components/Filters.vue', - # the response from search-index repository is very slow - timeout=60, - ) - - if not resp.ok: # type: ignore - print("ERROR: response from peertube is not OK.") - return - - js_lang = re.search(r"videoLanguages \(\)[^\n]+(.*?)\]", resp.text, re.DOTALL) # type: ignore - if not js_lang: - print("ERROR: can't determine languages from peertube") - return - - for lang in re.finditer(r"\{ id: '([a-z]+)', label:", js_lang.group(1)): - eng_tag = lang.group(1) - if eng_tag == 'oc': - # Occitanis not known by babel, its closest relative is Catalan - # but 'ca' is already in the list of engine_traits.languages --> - # 'oc' will be ignored. - continue - try: - sxng_tag = language_tag(babel.Locale.parse(eng_tag)) - except babel.UnknownLocaleError: - print("ERROR: %s is unknown by babel" % eng_tag) - continue - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.languages[sxng_tag] = eng_tag - - engine_traits.languages['zh_Hans'] = 'zh' - engine_traits.languages['zh_Hant'] = 'zh' diff --git a/searx/engines/photon.py b/searx/engines/photon.py deleted file mode 100644 index 2ea393679..000000000 --- a/searx/engines/photon.py +++ /dev/null @@ -1,143 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Photon (Map) -""" - -from json import loads -from urllib.parse import urlencode -from searx.utils import searx_useragent - -# about -about = { - "website": 'https://photon.komoot.io', - "wikidata_id": None, - "official_api_documentation": 'https://photon.komoot.io/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['map'] -paging = False -number_of_results = 10 - -# search-url -base_url = 'https://photon.komoot.io/' -search_string = 'api/?{query}&limit={limit}' -result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}' - -# list of supported languages -supported_languages = ['de', 'en', 'fr', 'it'] - - -# do search-request -def request(query, params): - params['url'] = base_url + search_string.format(query=urlencode({'q': query}), limit=number_of_results) - - if params['language'] != 'all': - language = params['language'].split('_')[0] - if language in supported_languages: - params['url'] = params['url'] + "&lang=" + language - - # using searx User-Agent - params['headers']['User-Agent'] = searx_useragent() - - return params - - -# get response from search-request -def response(resp): - results = [] - json = loads(resp.text) - - # parse results - for r in json.get('features', {}): - - properties = r.get('properties') - - if not properties: - continue - - # get title - title = properties.get('name') - - # get osm-type - if properties.get('osm_type') == 'N': - osm_type = 'node' - elif properties.get('osm_type') == 'W': - osm_type = 'way' - elif properties.get('osm_type') == 'R': - osm_type = 'relation' - else: - # continue if invalid osm-type - continue - - url = result_base_url.format(osm_type=osm_type, osm_id=properties.get('osm_id')) - - osm = {'type': osm_type, 'id': properties.get('osm_id')} - - geojson = r.get('geometry') - - if properties.get('extent'): - boundingbox = [ - properties.get('extent')[3], - properties.get('extent')[1], - properties.get('extent')[0], - properties.get('extent')[2], - ] - else: - # TODO: better boundingbox calculation - boundingbox = [ - geojson['coordinates'][1], - geojson['coordinates'][1], - geojson['coordinates'][0], - geojson['coordinates'][0], - ] - - # address calculation - address = {} - - # get name - if ( - properties.get('osm_key') == 'amenity' - or properties.get('osm_key') == 'shop' - or properties.get('osm_key') == 'tourism' - or properties.get('osm_key') == 'leisure' - ): - address = {'name': properties.get('name')} - - # add rest of adressdata, if something is already found - if address.get('name'): - address.update( - { - 'house_number': properties.get('housenumber'), - 'road': properties.get('street'), - 'locality': properties.get( - 'city', properties.get('town', properties.get('village')) # noqa - ), # noqa - 'postcode': properties.get('postcode'), - 'country': properties.get('country'), - } - ) - else: - address = None - - # append result - results.append( - { - 'template': 'map.html', - 'title': title, - 'content': '', - 'longitude': geojson['coordinates'][0], - 'latitude': geojson['coordinates'][1], - 'boundingbox': boundingbox, - 'geojson': geojson, - 'address': address, - 'osm': osm, - 'url': url, - } - ) - - # return results - return results diff --git a/searx/engines/pinterest.py b/searx/engines/pinterest.py deleted file mode 100644 index 4ca316698..000000000 --- a/searx/engines/pinterest.py +++ /dev/null @@ -1,63 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Pinterest (images) -""" - -from json import dumps - -about = { - "website": 'https://www.pinterest.com/', - "wikidata_id": 'Q255381', - "official_api_documentation": 'https://developers.pinterest.com/docs/api/v5/', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['images'] -paging = True - -base_url = 'https://www.pinterest.com' - - -def request(query, params): - args = { - 'options': { - 'query': query, - 'bookmarks': [params['engine_data'].get('bookmark', '')], - }, - 'context': {}, - } - params['url'] = f"{base_url}/resource/BaseSearchResource/get/?data={dumps(args)}" - - return params - - -def response(resp): - results = [] - - json_resp = resp.json() - - results.append( - { - 'engine_data': json_resp['resource_response']['bookmark'], - # it's called bookmark by pinterest, but it's rather a nextpage - # parameter to get the next results - 'key': 'bookmark', - } - ) - - for result in json_resp['resource_response']['data']['results']: - results.append( - { - 'template': 'images.html', - 'url': result['link'] or f"{base_url}/pin/{result['id']}/", - 'title': result.get('title') or result.get('grid_title'), - 'content': (result.get('rich_summary') or {}).get('display_description') or "", - 'img_src': result['images']['orig']['url'], - 'thumbnail_src': result['images']['236x']['url'], - 'source': (result.get('rich_summary') or {}).get('site_name'), - } - ) - - return results diff --git a/searx/engines/piped.py b/searx/engines/piped.py deleted file mode 100644 index 5b4cbded3..000000000 --- a/searx/engines/piped.py +++ /dev/null @@ -1,166 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""An alternative privacy-friendly YouTube frontend which is efficient by -design. `Piped’s architecture`_ consists of 3 components: - -- :py:obj:`backend ` -- :py:obj:`frontend ` -- proxy - -.. _Piped’s architecture: https://docs.piped.video/docs/architecture/ - -Configuration -============= - -The :py:obj:`backend_url` and :py:obj:`frontend_url` has to be set in the engine -named `piped` and are used by all piped engines - -.. code:: yaml - - - name: piped - engine: piped - piped_filter: videos - ... - frontend_url: https://.. - backend_url: - - https://.. - - https://.. - - - name: piped.music - engine: piped - network: piped - shortcut: ppdm - piped_filter: music_songs - ... - -Known Quirks -============ - -The implementation to support :py:obj:`paging ` -is based on the *nextpage* method of Piped's REST API / the :py:obj:`frontend -API `. This feature is *next page driven* and plays well with the -:ref:`infinite_scroll ` setting in SearXNG but it does not really -fit into SearXNG's UI to select a page by number. - -Implementations -=============== -""" - -from __future__ import annotations - -import time -import random -from urllib.parse import urlencode -import datetime -from dateutil import parser - -# about -about = { - "website": 'https://github.com/TeamPiped/Piped/', - "wikidata_id": 'Q107565255', - "official_api_documentation": 'https://docs.piped.video/docs/api-documentation/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = [] -paging = True - -# search-url -backend_url: list | str = "https://pipedapi.kavin.rocks" -"""Piped-Backend_: The core component behind Piped. The value is an URL or a -list of URLs. In the latter case instance will be selected randomly. For a -complete list of official instances see Piped-Instances (`JSON -`__) - -.. _Piped-Instances: https://github.com/TeamPiped/Piped/wiki/Instances -.. _Piped-Backend: https://github.com/TeamPiped/Piped-Backend - -""" - -frontend_url: str = "https://piped.video" -"""Piped-Frontend_: URL to use as link and for embeds. - -.. _Piped-Frontend: https://github.com/TeamPiped/Piped -""" - -piped_filter = 'all' -"""Content filter ``music_songs`` or ``videos``""" - - -def _backend_url() -> str: - from searx.engines import engines # pylint: disable=import-outside-toplevel - - url = engines['piped'].backend_url # type: ignore - if isinstance(url, list): - url = random.choice(url) - return url - - -def _frontend_url() -> str: - from searx.engines import engines # pylint: disable=import-outside-toplevel - - return engines['piped'].frontend_url # type: ignore - - -def request(query, params): - - args = { - 'q': query, - 'filter': piped_filter, - } - - path = "/search" - if params['pageno'] > 1: - # don't use nextpage when user selected to jump back to page 1 - nextpage = params['engine_data'].get('nextpage') - if nextpage: - path = "/nextpage/search" - args['nextpage'] = nextpage - - params["url"] = _backend_url() + f"{path}?" + urlencode(args) - return params - - -def response(resp): - results = [] - - json = resp.json() - - for result in json["items"]: - # note: piped returns -1 for all upload times when filtering for music - uploaded = result.get("uploaded", -1) - - item = { - # the api url differs from the frontend, hence use piped.video as default - "url": _frontend_url() + result.get("url", ""), - "title": result.get("title", ""), - "publishedDate": parser.parse(time.ctime(uploaded / 1000)) if uploaded != -1 else None, - "iframe_src": _frontend_url() + '/embed' + result.get("url", ""), - } - length = result.get("duration") - if length: - item["length"] = datetime.timedelta(seconds=length) - - if piped_filter == 'videos': - item["template"] = "videos.html" - # if the value of shortDescription set, but is None, return empty string - item["content"] = result.get("shortDescription", "") or "" - item["thumbnail"] = result.get("thumbnail", "") - - elif piped_filter == 'music_songs': - item["template"] = "default.html" - item["img_src"] = result.get("thumbnail", "") - item["content"] = result.get("uploaderName", "") or "" - - results.append(item) - - results.append( - { - "engine_data": json["nextpage"], - "key": "nextpage", - } - ) - return results diff --git a/searx/engines/piratebay.py b/searx/engines/piratebay.py deleted file mode 100644 index 4b0984be5..000000000 --- a/searx/engines/piratebay.py +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Piratebay (Videos, Music, Files) -""" - -from json import loads -from datetime import datetime -from operator import itemgetter - -from urllib.parse import quote -from searx.utils import get_torrent_size - -# about -about = { - "website": 'https://thepiratebay.org', - "wikidata_id": 'Q22663', - "official_api_documentation": 'https://apibay.org/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ["files"] - -# search-url -url = "https://thepiratebay.org/" -search_url = "https://apibay.org/q.php?q={search_term}&cat={search_type}" - -# default trackers provided by thepiratebay -trackers = [ - "udp://tracker.coppersurfer.tk:6969/announce", - "udp://9.rarbg.to:2920/announce", - "udp://tracker.opentrackr.org:1337", - "udp://tracker.internetwarriors.net:1337/announce", - "udp://tracker.leechers-paradise.org:6969/announce", - "udp://tracker.coppersurfer.tk:6969/announce", - "udp://tracker.pirateparty.gr:6969/announce", - "udp://tracker.cyberia.is:6969/announce", -] - -# piratebay specific type-definitions -search_types = {"files": "0", "music": "100", "videos": "200"} - - -# do search-request -def request(query, params): - search_type = search_types.get(params["category"], "0") - - params["url"] = search_url.format(search_term=quote(query), search_type=search_type) - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_res = loads(resp.text) - - # return empty array if nothing is found - if search_res[0]["name"] == "No results returned": - return [] - - # parse results - for result in search_res: - link = url + "description.php?id=" + result["id"] - magnetlink = ( - "magnet:?xt=urn:btih:" + result["info_hash"] + "&dn=" + result["name"] + "&tr=" + "&tr=".join(trackers) - ) - - params = { - "url": link, - "title": result["name"], - "seed": result["seeders"], - "leech": result["leechers"], - "magnetlink": magnetlink, - "template": "torrent.html", - } - - # extract and convert creation date - try: - date = datetime.fromtimestamp(float(result["added"])) - params['publishedDate'] = date - except: - pass - - # let's try to calculate the torrent size - try: - filesize = get_torrent_size(result["size"], "B") - params['filesize'] = filesize - except: - pass - - # append result - results.append(params) - - # return results sorted by seeder - return sorted(results, key=itemgetter("seed"), reverse=True) diff --git a/searx/engines/postgresql.py b/searx/engines/postgresql.py deleted file mode 100644 index c0277207c..000000000 --- a/searx/engines/postgresql.py +++ /dev/null @@ -1,89 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""PostgreSQL is a powerful and robust open source database. Before configuring -the PostgreSQL engine, you must install the dependency ``psychopg2``. - -Example -======= - -Below is an example configuration: - -.. code:: yaml - - - name: my_database - engine: postgresql - database: my_database - username: searxng - password: password - query_str: 'SELECT * from my_table WHERE my_column = %(query)s' - -Implementations -=============== - -""" - -try: - import psycopg2 # type: ignore -except ImportError: - # import error is ignored because the admin has to install postgresql - # manually to use the engine. - pass - -engine_type = 'offline' -host = "127.0.0.1" -port = "5432" -database = "" -username = "" -password = "" -query_str = "" -limit = 10 -paging = True -result_template = 'key-value.html' -_connection = None - - -def init(engine_settings): - global _connection # pylint: disable=global-statement - - if 'query_str' not in engine_settings: - raise ValueError('query_str cannot be empty') - - if not engine_settings['query_str'].lower().startswith('select '): - raise ValueError('only SELECT query is supported') - - _connection = psycopg2.connect( - database=database, - user=username, - password=password, - host=host, - port=port, - ) - - -def search(query, params): - query_params = {'query': query} - query_to_run = query_str + ' LIMIT {0} OFFSET {1}'.format(limit, (params['pageno'] - 1) * limit) - - with _connection: - with _connection.cursor() as cur: - cur.execute(query_to_run, query_params) - return _fetch_results(cur) - - -def _fetch_results(cur): - results = [] - titles = [] - - try: - titles = [column_desc.name for column_desc in cur.description] - - for res in cur: - result = dict(zip(titles, map(str, res))) - result['template'] = result_template - results.append(result) - - # no results to fetch - except psycopg2.ProgrammingError: - pass - - return results diff --git a/searx/engines/pubmed.py b/searx/engines/pubmed.py deleted file mode 100644 index b6ffd039f..000000000 --- a/searx/engines/pubmed.py +++ /dev/null @@ -1,127 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - PubMed (Scholar publications) -""" - -from lxml import etree -from datetime import datetime -from urllib.parse import urlencode -from searx.network import get -from searx.utils import ( - eval_xpath_getindex, - eval_xpath_list, - extract_text, -) - -# about -about = { - "website": 'https://www.ncbi.nlm.nih.gov/pubmed/', - "wikidata_id": 'Q1540899', - "official_api_documentation": { - 'url': 'https://www.ncbi.nlm.nih.gov/home/develop/api/', - 'comment': 'More info on api: https://www.ncbi.nlm.nih.gov/books/NBK25501/', - }, - "use_official_api": True, - "require_api_key": False, - "results": 'XML', -} - -categories = ['science', 'scientific publications'] - -base_url = ( - 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi' + '?db=pubmed&{query}&retstart={offset}&retmax={hits}' -) - -# engine dependent config -number_of_results = 10 -pubmed_url = 'https://www.ncbi.nlm.nih.gov/pubmed/' - - -def request(query, params): - # basic search - offset = (params['pageno'] - 1) * number_of_results - - string_args = dict(query=urlencode({'term': query}), offset=offset, hits=number_of_results) - - params['url'] = base_url.format(**string_args) - - return params - - -def response(resp): - results = [] - - # First retrieve notice of each result - pubmed_retrieve_api_url = ( - 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?' + 'db=pubmed&retmode=xml&id={pmids_string}' - ) - - pmids_results = etree.XML(resp.content) - pmids = pmids_results.xpath('//eSearchResult/IdList/Id') - pmids_string = '' - - for item in pmids: - pmids_string += item.text + ',' - - retrieve_notice_args = dict(pmids_string=pmids_string) - - retrieve_url_encoded = pubmed_retrieve_api_url.format(**retrieve_notice_args) - - search_results_response = get(retrieve_url_encoded).content - search_results = etree.XML(search_results_response) - for entry in eval_xpath_list(search_results, '//PubmedArticle'): - medline = eval_xpath_getindex(entry, './MedlineCitation', 0) - - title = eval_xpath_getindex(medline, './/Article/ArticleTitle', 0).text - pmid = eval_xpath_getindex(medline, './/PMID', 0).text - url = pubmed_url + pmid - content = extract_text( - eval_xpath_getindex(medline, './/Abstract/AbstractText//text()', 0, default=None), allow_none=True - ) - doi = extract_text( - eval_xpath_getindex(medline, './/ELocationID[@EIdType="doi"]/text()', 0, default=None), allow_none=True - ) - journal = extract_text( - eval_xpath_getindex(medline, './Article/Journal/Title/text()', 0, default=None), allow_none=True - ) - issn = extract_text( - eval_xpath_getindex(medline, './Article/Journal/ISSN/text()', 0, default=None), allow_none=True - ) - authors = [] - for author in eval_xpath_list(medline, './Article/AuthorList/Author'): - f = eval_xpath_getindex(author, './ForeName', 0, default=None) - l = eval_xpath_getindex(author, './LastName', 0, default=None) - f = '' if f is None else f.text - l = '' if l is None else l.text - authors.append((f + ' ' + l).strip()) - - res_dict = { - 'template': 'paper.html', - 'url': url, - 'title': title, - 'content': content or "", - 'journal': journal, - 'issn': [issn], - 'authors': authors, - 'doi': doi, - } - - accepted_date = eval_xpath_getindex( - entry, './PubmedData/History//PubMedPubDate[@PubStatus="accepted"]', 0, default=None - ) - if accepted_date is not None: - year = eval_xpath_getindex(accepted_date, './Year', 0) - month = eval_xpath_getindex(accepted_date, './Month', 0) - day = eval_xpath_getindex(accepted_date, './Day', 0) - try: - publishedDate = datetime.strptime( - year.text + '-' + month.text + '-' + day.text, - '%Y-%m-%d', - ) - res_dict['publishedDate'] = publishedDate - except Exception as e: - print(e) - - results.append(res_dict) - - return results diff --git a/searx/engines/qwant.py b/searx/engines/qwant.py deleted file mode 100644 index 168eb860e..000000000 --- a/searx/engines/qwant.py +++ /dev/null @@ -1,346 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This engine uses the Qwant API (https://api.qwant.com/v3) to implement Qwant --Web, -News, -Images and -Videos. The API is undocumented but can be reverse -engineered by reading the network log of https://www.qwant.com/ queries. - -For Qwant's *web-search* two alternatives are implemented: - -- ``web``: uses the :py:obj:`api_url` which returns a JSON structure -- ``web-lite``: uses the :py:obj:`web_lite_url` which returns a HTML page - - -Configuration -============= - -The engine has the following additional settings: - -- :py:obj:`qwant_categ` - -This implementation is used by different qwant engines in the :ref:`settings.yml -`: - -.. code:: yaml - - - name: qwant - qwant_categ: web-lite # alternatively use 'web' - ... - - name: qwant news - qwant_categ: news - ... - - name: qwant images - qwant_categ: images - ... - - name: qwant videos - qwant_categ: videos - ... - -Implementations -=============== - -""" - -from datetime import ( - datetime, - timedelta, -) -from json import loads -from urllib.parse import urlencode -from flask_babel import gettext -import babel -import lxml - -from searx.exceptions import SearxEngineAPIException, SearxEngineTooManyRequestsException -from searx.network import raise_for_httperror -from searx.enginelib.traits import EngineTraits - -from searx.utils import ( - eval_xpath, - eval_xpath_list, - extract_text, -) - -traits: EngineTraits - -# about -about = { - "website": 'https://www.qwant.com/', - "wikidata_id": 'Q14657870', - "official_api_documentation": None, - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = [] -paging = True -qwant_categ = None -"""One of ``web-lite`` (or ``web``), ``news``, ``images`` or ``videos``""" - -safesearch = True -# safe_search_map = {0: '&safesearch=0', 1: '&safesearch=1', 2: '&safesearch=2'} - -# fmt: off -qwant_news_locales = [ - 'ca_ad', 'ca_es', 'ca_fr', 'co_fr', 'de_at', 'de_ch', 'de_de', 'en_au', - 'en_ca', 'en_gb', 'en_ie', 'en_my', 'en_nz', 'en_us', 'es_ad', 'es_ar', - 'es_cl', 'es_co', 'es_es', 'es_mx', 'es_pe', 'eu_es', 'eu_fr', 'fc_ca', - 'fr_ad', 'fr_be', 'fr_ca', 'fr_ch', 'fr_fr', 'it_ch', 'it_it', 'nl_be', - 'nl_nl', 'pt_ad', 'pt_pt', -] -# fmt: on - -# search-url - -api_url = 'https://api.qwant.com/v3/search/' -"""URL of Qwant's API (JSON)""" - -web_lite_url = 'https://lite.qwant.com/' -"""URL of Qwant-Lite (HTML)""" - - -def request(query, params): - """Qwant search request""" - - if not query: - return None - - q_locale = traits.get_region(params["searxng_locale"], default='en_US') - - url = api_url + f'{qwant_categ}?' - args = {'q': query} - params['raise_for_httperror'] = False - - # all qwant engines (incl qwant-lite) delivers only 5 pages maximum - if params['pageno'] > 5: - return None - - if qwant_categ == 'web-lite': - - url = web_lite_url + '?' - args['locale'] = q_locale.lower() - args['l'] = q_locale.split('_')[0] - args['s'] = params['safesearch'] - args['p'] = params['pageno'] - - params['raise_for_httperror'] = True - - elif qwant_categ == 'images': - - args['locale'] = q_locale - args['safesearch'] = params['safesearch'] - args['count'] = 50 - args['offset'] = (params['pageno'] - 1) * args['count'] - - else: # web, news, videos - - args['locale'] = q_locale - args['safesearch'] = params['safesearch'] - args['count'] = 10 - args['offset'] = (params['pageno'] - 1) * args['count'] - - params['url'] = url + urlencode(args) - - return params - - -def response(resp): - - if qwant_categ == 'web-lite': - return parse_web_lite(resp) - return parse_web_api(resp) - - -def parse_web_lite(resp): - """Parse results from Qwant-Lite""" - - results = [] - dom = lxml.html.fromstring(resp.text) - - for item in eval_xpath_list(dom, '//section/article'): - if eval_xpath(item, "./span[contains(@class, 'tooltip')]"): - # ignore randomly interspersed advertising adds - continue - results.append( - { - 'url': extract_text(eval_xpath(item, "./span[contains(@class, 'url partner')]")), - 'title': extract_text(eval_xpath(item, './h2/a')), - 'content': extract_text(eval_xpath(item, './p')), - } - ) - - return results - - -def parse_web_api(resp): - """Parse results from Qwant's API""" - # pylint: disable=too-many-locals, too-many-branches, too-many-statements - - results = [] - - # load JSON result - search_results = loads(resp.text) - data = search_results.get('data', {}) - - # check for an API error - if search_results.get('status') != 'success': - error_code = data.get('error_code') - if error_code == 24: - raise SearxEngineTooManyRequestsException() - msg = ",".join(data.get('message', ['unknown'])) - raise SearxEngineAPIException(f"{msg} ({error_code})") - - # raise for other errors - raise_for_httperror(resp) - - if qwant_categ == 'web': - # The WEB query contains a list named 'mainline'. This list can contain - # different result types (e.g. mainline[0]['type'] returns type of the - # result items in mainline[0]['items'] - mainline = data.get('result', {}).get('items', {}).get('mainline', {}) - else: - # Queries on News, Images and Videos do not have a list named 'mainline' - # in the response. The result items are directly in the list - # result['items']. - mainline = data.get('result', {}).get('items', []) - mainline = [ - {'type': qwant_categ, 'items': mainline}, - ] - - # return empty array if there are no results - if not mainline: - return [] - - for row in mainline: - mainline_type = row.get('type', 'web') - if mainline_type != qwant_categ: - continue - - if mainline_type == 'ads': - # ignore adds - continue - - mainline_items = row.get('items', []) - for item in mainline_items: - - title = item.get('title', None) - res_url = item.get('url', None) - - if mainline_type == 'web': - content = item['desc'] - results.append( - { - 'title': title, - 'url': res_url, - 'content': content, - } - ) - - elif mainline_type == 'news': - - pub_date = item['date'] - if pub_date is not None: - pub_date = datetime.fromtimestamp(pub_date) - news_media = item.get('media', []) - img_src = None - if news_media: - img_src = news_media[0].get('pict', {}).get('url', None) - results.append( - { - 'title': title, - 'url': res_url, - 'publishedDate': pub_date, - 'img_src': img_src, - } - ) - - elif mainline_type == 'images': - thumbnail = item['thumbnail'] - img_src = item['media'] - results.append( - { - 'title': title, - 'url': res_url, - 'template': 'images.html', - 'thumbnail_src': thumbnail, - 'img_src': img_src, - } - ) - - elif mainline_type == 'videos': - # some videos do not have a description: while qwant-video - # returns an empty string, such video from a qwant-web query - # miss the 'desc' key. - d, s, c = item.get('desc'), item.get('source'), item.get('channel') - content_parts = [] - if d: - content_parts.append(d) - if s: - content_parts.append("%s: %s " % (gettext("Source"), s)) - if c: - content_parts.append("%s: %s " % (gettext("Channel"), c)) - content = ' // '.join(content_parts) - length = item['duration'] - if length is not None: - length = timedelta(milliseconds=length) - pub_date = item['date'] - if pub_date is not None: - pub_date = datetime.fromtimestamp(pub_date) - thumbnail = item['thumbnail'] - # from some locations (DE and others?) the s2 link do - # response a 'Please wait ..' but does not deliver the thumbnail - thumbnail = thumbnail.replace('https://s2.qwant.com', 'https://s1.qwant.com', 1) - results.append( - { - 'title': title, - 'url': res_url, - 'content': content, - 'publishedDate': pub_date, - 'thumbnail': thumbnail, - 'template': 'videos.html', - 'length': length, - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - - # pylint: disable=import-outside-toplevel - from searx import network - from searx.locales import region_tag - - resp = network.get(about['website']) - text = resp.text - text = text[text.find('INITIAL_PROPS') :] - text = text[text.find('{') : text.find('')] - - q_initial_props = loads(text) - q_locales = q_initial_props.get('locales') - eng_tag_list = set() - - for country, v in q_locales.items(): - for lang in v['langs']: - _locale = "{lang}_{country}".format(lang=lang, country=country) - - if qwant_categ == 'news' and _locale.lower() not in qwant_news_locales: - # qwant-news does not support all locales from qwant-web: - continue - - eng_tag_list.add(_locale) - - for eng_tag in eng_tag_list: - try: - sxng_tag = region_tag(babel.Locale.parse(eng_tag, sep='_')) - except babel.UnknownLocaleError: - print("ERROR: can't determine babel locale of quant's locale %s" % eng_tag) - continue - - conflict = engine_traits.regions.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.regions[sxng_tag] = eng_tag diff --git a/searx/engines/radio_browser.py b/searx/engines/radio_browser.py deleted file mode 100644 index 6b60b398e..000000000 --- a/searx/engines/radio_browser.py +++ /dev/null @@ -1,176 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Search radio stations from RadioBrowser by `Advanced station search API`_. - -.. _Advanced station search API: - https://de1.api.radio-browser.info/#Advanced_station_search - -""" - -from urllib.parse import urlencode -import babel -from flask_babel import gettext - -from searx.network import get -from searx.enginelib.traits import EngineTraits -from searx.locales import language_tag - -traits: EngineTraits - -about = { - "website": 'https://www.radio-browser.info/', - "wikidata_id": 'Q111664849', - "official_api_documentation": 'https://de1.api.radio-browser.info/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} -paging = True -categories = ['music', 'radio'] - -base_url = "https://de1.api.radio-browser.info" # see https://api.radio-browser.info/ for all nodes -number_of_results = 10 - -station_filters = [] # ['countrycode', 'language'] -"""A list of filters to be applied to the search of radio stations. By default -none filters are applied. Valid filters are: - -``language`` - Filter stations by selected language. For instance the ``de`` from ``:de-AU`` - will be translated to `german` and used in the argument ``language=``. - -``countrycode`` - Filter stations by selected country. The 2-digit countrycode of the station - comes from the region the user selected. For instance ``:de-AU`` will filter - out all stations not in ``AU``. - -.. note:: - - RadioBrowser has registered a lot of languages and countrycodes unknown to - :py:obj:`babel` and note that when searching for radio stations, users are - more likely to search by name than by region or language. - -""" - - -def request(query, params): - args = { - 'name': query, - 'order': 'votes', - 'offset': (params['pageno'] - 1) * number_of_results, - 'limit': number_of_results, - 'hidebroken': 'true', - 'reverse': 'true', - } - - if 'language' in station_filters: - lang = traits.get_language(params['searxng_locale']) # type: ignore - if lang: - args['language'] = lang - - if 'countrycode' in station_filters: - if len(params['searxng_locale'].split('-')) > 1: - countrycode = params['searxng_locale'].split('-')[-1].upper() - if countrycode in traits.custom['countrycodes']: # type: ignore - args['countrycode'] = countrycode - - params['url'] = f"{base_url}/json/stations/search?{urlencode(args)}" - return params - - -def response(resp): - results = [] - - json_resp = resp.json() - - for result in json_resp: - url = result['homepage'] - if not url: - url = result['url_resolved'] - - content = [] - tags = ', '.join(result.get('tags', '').split(',')) - if tags: - content.append(tags) - for x in ['state', 'country']: - v = result.get(x) - if v: - v = str(v).strip() - content.append(v) - - metadata = [] - codec = result.get('codec') - if codec and codec.lower() != 'unknown': - metadata.append(f'{codec} ' + gettext('radio')) - for x, y in [ - (gettext('bitrate'), 'bitrate'), - (gettext('votes'), 'votes'), - (gettext('clicks'), 'clickcount'), - ]: - v = result.get(y) - if v: - v = str(v).strip() - metadata.append(f"{x} {v}") - results.append( - { - 'url': url, - 'title': result['name'], - 'img_src': result.get('favicon', '').replace("http://", "https://"), - 'content': ' | '.join(content), - 'metadata': ' | '.join(metadata), - 'iframe_src': result['url_resolved'].replace("http://", "https://"), - } - ) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages and countrycodes from RadioBrowser - - - ``traits.languages``: `list of languages API`_ - - ``traits.custom['countrycodes']``: `list of countries API`_ - - .. _list of countries API: https://de1.api.radio-browser.info/#List_of_countries - .. _list of languages API: https://de1.api.radio-browser.info/#List_of_languages - """ - # pylint: disable=import-outside-toplevel - - from babel.core import get_global - - babel_reg_list = get_global("territory_languages").keys() - - language_list = get(f'{base_url}/json/languages').json() # type: ignore - country_list = get(f'{base_url}/json/countries').json() # type: ignore - - for lang in language_list: - - babel_lang = lang.get('iso_639') - if not babel_lang: - # the language doesn't have any iso code, and hence can't be parsed - # print(f"ERROR: lang - no iso code in {lang}") - continue - try: - sxng_tag = language_tag(babel.Locale.parse(babel_lang, sep="-")) - except babel.UnknownLocaleError: - # print(f"ERROR: language tag {babel_lang} is unknown by babel") - continue - - eng_tag = lang['name'] - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.languages[sxng_tag] = eng_tag - - countrycodes = set() - for region in country_list: - if region['iso_3166_1'] not in babel_reg_list: - print(f"ERROR: region tag {region['iso_3166_1']} is unknown by babel") - continue - countrycodes.add(region['iso_3166_1']) - - countrycodes = list(countrycodes) - countrycodes.sort() - engine_traits.custom['countrycodes'] = countrycodes diff --git a/searx/engines/recoll.py b/searx/engines/recoll.py deleted file mode 100644 index c11e197ed..000000000 --- a/searx/engines/recoll.py +++ /dev/null @@ -1,144 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""".. sidebar:: info - - - `Recoll `_ - - `recoll-webui `_ - - :origin:`searx/engines/recoll.py` - -Recoll_ is a desktop full-text search tool based on Xapian. By itself Recoll_ -does not offer WEB or API access, this can be achieved using recoll-webui_ - -Configuration -============= - -You must configure the following settings: - -``base_url``: - Location where recoll-webui can be reached. - -``mount_prefix``: - Location where the file hierarchy is mounted on your *local* filesystem. - -``dl_prefix``: - Location where the file hierarchy as indexed by recoll can be reached. - -``search_dir``: - Part of the indexed file hierarchy to be search, if empty the full domain is - searched. - -Example -======= - -Scenario: - -#. Recoll indexes a local filesystem mounted in ``/export/documents/reference``, -#. the Recoll search interface can be reached at https://recoll.example.org/ and -#. the contents of this filesystem can be reached though https://download.example.org/reference - -.. code:: yaml - - base_url: https://recoll.example.org/ - mount_prefix: /export/documents - dl_prefix: https://download.example.org - search_dir: '' - -Implementations -=============== - -""" - -from datetime import date, timedelta -from json import loads -from urllib.parse import urlencode, quote - -# about -about = { - "website": None, - "wikidata_id": 'Q15735774', - "official_api_documentation": 'https://www.lesbonscomptes.com/recoll/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -paging = True -time_range_support = True - -# parameters from settings.yml -base_url = None -search_dir = '' -mount_prefix = None -dl_prefix = None - -# embedded -embedded_url = '<{ttype} controls height="166px" ' + 'src="{url}" type="{mtype}">' - - -# helper functions -def get_time_range(time_range): - sw = {'day': 1, 'week': 7, 'month': 30, 'year': 365} # pylint: disable=invalid-name - - offset = sw.get(time_range, 0) - if not offset: - return '' - - return (date.today() - timedelta(days=offset)).isoformat() - - -# do search-request -def request(query, params): - search_after = get_time_range(params['time_range']) - search_url = base_url + 'json?{query}&highlight=0' - params['url'] = search_url.format( - query=urlencode({'query': query, 'page': params['pageno'], 'after': search_after, 'dir': search_dir}) - ) - - return params - - -# get response from search-request -def response(resp): - results = [] - - response_json = loads(resp.text) - - if not response_json: - return [] - - for result in response_json.get('results', []): - title = result['label'] - url = result['url'].replace('file://' + mount_prefix, dl_prefix) - content = '{}'.format(result['snippet']) - - # append result - item = {'url': url, 'title': title, 'content': content, 'template': 'files.html'} - - if result['size']: - item['size'] = int(result['size']) - - for parameter in ['filename', 'abstract', 'author', 'mtype', 'time']: - if result[parameter]: - item[parameter] = result[parameter] - - # facilitate preview support for known mime types - if 'mtype' in result and '/' in result['mtype']: - (mtype, subtype) = result['mtype'].split('/') - item['mtype'] = mtype - item['subtype'] = subtype - - if mtype in ['audio', 'video']: - item['embedded'] = embedded_url.format( - ttype=mtype, url=quote(url.encode('utf8'), '/:'), mtype=result['mtype'] - ) - - if mtype in ['image'] and subtype in ['bmp', 'gif', 'jpeg', 'png']: - item['img_src'] = url - - results.append(item) - - if 'nres' in response_json: - results.append({'number_of_results': response_json['nres']}) - - return results diff --git a/searx/engines/reddit.py b/searx/engines/reddit.py deleted file mode 100644 index 36d92339d..000000000 --- a/searx/engines/reddit.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Reddit -""" - -import json -from datetime import datetime -from urllib.parse import urlencode, urljoin, urlparse - -# about -about = { - "website": 'https://www.reddit.com/', - "wikidata_id": 'Q1136', - "official_api_documentation": 'https://www.reddit.com/dev/api', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['social media'] -page_size = 25 - -# search-url -base_url = 'https://www.reddit.com/' -search_url = base_url + 'search.json?{query}' - - -def request(query, params): - - query = urlencode({'q': query, 'limit': page_size}) - params['url'] = search_url.format(query=query) - - return params - - -def response(resp): - - img_results = [] - text_results = [] - - search_results = json.loads(resp.text) - - # return empty array if there are no results - if 'data' not in search_results: - return [] - - posts = search_results.get('data', {}).get('children', []) - - # process results - for post in posts: - data = post['data'] - - # extract post information - params = {'url': urljoin(base_url, data['permalink']), 'title': data['title']} - - # if thumbnail field contains a valid URL, we need to change template - thumbnail = data['thumbnail'] - url_info = urlparse(thumbnail) - # netloc & path - if url_info[1] != '' and url_info[2] != '': - params['img_src'] = data['url'] - params['thumbnail_src'] = thumbnail - params['template'] = 'images.html' - img_results.append(params) - else: - created = datetime.fromtimestamp(data['created_utc']) - content = data['selftext'] - if len(content) > 500: - content = content[:500] + '...' - params['content'] = content - params['publishedDate'] = created - text_results.append(params) - - # show images first and text results second - return img_results + text_results diff --git a/searx/engines/redis_server.py b/searx/engines/redis_server.py deleted file mode 100644 index 980812509..000000000 --- a/searx/engines/redis_server.py +++ /dev/null @@ -1,105 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Redis is an open source (BSD licensed), in-memory data structure (key value -based) store. Before configuring the ``redis_server`` engine, you must install -the dependency redis_. - -Configuration -============= - -Select a database to search in and set its index in the option ``db``. You can -either look for exact matches or use partial keywords to find what you are -looking for by configuring ``exact_match_only``. - -Example -======= - -Below is an example configuration: - -.. code:: yaml - - # Required dependency: redis - - - name: myredis - shortcut : rds - engine: redis_server - exact_match_only: false - host: '127.0.0.1' - port: 6379 - enable_http: true - password: '' - db: 0 - -Implementations -=============== - -""" - -import redis # pylint: disable=import-error - -engine_type = 'offline' - -# redis connection variables -host = '127.0.0.1' -port = 6379 -password = '' -db = 0 - -# engine specific variables -paging = False -result_template = 'key-value.html' -exact_match_only = True - -_redis_client = None - - -def init(_engine_settings): - global _redis_client # pylint: disable=global-statement - _redis_client = redis.StrictRedis( - host=host, - port=port, - db=db, - password=password or None, - decode_responses=True, - ) - - -def search(query, _params): - if not exact_match_only: - return search_keys(query) - - ret = _redis_client.hgetall(query) - if ret: - ret['template'] = result_template - return [ret] - - if ' ' in query: - qset, rest = query.split(' ', 1) - ret = [] - for res in _redis_client.hscan_iter(qset, match='*{}*'.format(rest)): - ret.append( - { - res[0]: res[1], - 'template': result_template, - } - ) - return ret - return [] - - -def search_keys(query): - ret = [] - for key in _redis_client.scan_iter(match='*{}*'.format(query)): - key_type = _redis_client.type(key) - res = None - - if key_type == 'hash': - res = _redis_client.hgetall(key) - elif key_type == 'list': - res = dict(enumerate(_redis_client.lrange(key, 0, -1))) - - if res: - res['template'] = result_template - res['redis_key'] = key - ret.append(res) - return ret diff --git a/searx/engines/rumble.py b/searx/engines/rumble.py deleted file mode 100644 index e4a50c732..000000000 --- a/searx/engines/rumble.py +++ /dev/null @@ -1,84 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Rumble (Videos) -""" -from urllib.parse import urlencode -from lxml import html -from datetime import datetime - -# about -from searx.utils import extract_text - -about = { - "website": 'https://rumble.com/', - "wikidata_id": 'Q104765127', - "official_api_documentation": 'https://help.rumble.com/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['videos'] -paging = True - -# search-url -base_url = 'https://rumble.com/' - -url_xpath = './/a[@class="video-item--a"]/@href' -thumbnail_xpath = './/img[@class="video-item--img"]/@src' -title_xpath = './/h3[@class="video-item--title"]' -published_date = './/time[@class="video-item--meta video-item--time"]/@datetime' -earned_xpath = './/span[@class="video-item--meta video-item--earned"]/@data-value' -views_xpath = './/span[@class="video-item--meta video-item--views"]/@data-value' -rumbles_xpath = './/span[@class="video-item--meta video-item--rumbles"]/@data-value' -author_xpath = './/div[@class="ellipsis-1"]' -length_xpath = './/span[@class="video-item--duration"]/@data-value' - - -def request(query, params): - args = {"q": query} - if params["pageno"] > 1: - args['page'] = params["pageno"] - params['url'] = f'{base_url}search/video?{urlencode(args)}' - return params - - -def response(resp): - results = [] - dom = html.fromstring(resp.text) - results_dom = dom.xpath('//li[contains(@class, "video-listing-entry")]') - - if not results_dom: - return [] - - for result_dom in results_dom: - url = base_url + extract_text(result_dom.xpath(url_xpath)) - thumbnail = extract_text(result_dom.xpath(thumbnail_xpath)) - title = extract_text(result_dom.xpath(title_xpath)) - p_date = extract_text(result_dom.xpath(published_date)) - # fix offset date for line 644 webapp.py check - fixed_date = datetime.strptime(p_date, '%Y-%m-%dT%H:%M:%S%z') - earned = extract_text(result_dom.xpath(earned_xpath)) - views = extract_text(result_dom.xpath(views_xpath)) - rumbles = extract_text(result_dom.xpath(rumbles_xpath)) - author = extract_text(result_dom.xpath(author_xpath)) - length = extract_text(result_dom.xpath(length_xpath)) - if earned: - content = f"{views} views - {rumbles} rumbles - ${earned}" - else: - content = f"{views} views - {rumbles} rumbles" - - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'author': author, - 'length': length, - 'template': 'videos.html', - 'publishedDate': fixed_date, - 'thumbnail': thumbnail, - } - ) - return results diff --git a/searx/engines/scanr_structures.py b/searx/engines/scanr_structures.py deleted file mode 100644 index ad27079dd..000000000 --- a/searx/engines/scanr_structures.py +++ /dev/null @@ -1,87 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - ScanR Structures (Science) -""" - -from json import loads, dumps -from searx.utils import html_to_text - -# about -about = { - "website": 'https://scanr.enseignementsup-recherche.gouv.fr', - "wikidata_id": 'Q44105684', - "official_api_documentation": 'https://scanr.enseignementsup-recherche.gouv.fr/opendata', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['science'] -paging = True -page_size = 20 - -# search-url -url = 'https://scanr.enseignementsup-recherche.gouv.fr/' -search_url = url + 'api/structures/search' - - -# do search-request -def request(query, params): - - params['url'] = search_url - params['method'] = 'POST' - params['headers']['Content-type'] = "application/json" - params['data'] = dumps( - { - "query": query, - "searchField": "ALL", - "sortDirection": "ASC", - "sortOrder": "RELEVANCY", - "page": params['pageno'], - "pageSize": page_size, - } - ) - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_res = loads(resp.text) - - # return empty array if there are no results - if search_res.get('total', 0) < 1: - return [] - - # parse results - for result in search_res['results']: - if 'id' not in result: - continue - - # is it thumbnail or img_src?? - thumbnail = None - if 'logo' in result: - thumbnail = result['logo'] - if thumbnail[0] == '/': - thumbnail = url + thumbnail - - content = None - if 'highlights' in result: - content = result['highlights'][0]['value'] - - # append result - results.append( - { - 'url': url + 'structure/' + result['id'], - 'title': result['label'], - # 'thumbnail': thumbnail, - 'img_src': thumbnail, - 'content': html_to_text(content), - } - ) - - # return results - return results diff --git a/searx/engines/searchcode_code.py b/searx/engines/searchcode_code.py deleted file mode 100644 index a4b0308f9..000000000 --- a/searx/engines/searchcode_code.py +++ /dev/null @@ -1,72 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Searchcode (IT) -""" - -from json import loads -from urllib.parse import urlencode - -# about -about = { - "website": 'https://searchcode.com/', - "wikidata_id": None, - "official_api_documentation": 'https://searchcode.com/api/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['it'] -paging = True - -# search-url -url = 'https://searchcode.com/' -search_url = url + 'api/codesearch_I/?{query}&p={pageno}' - -# special code-endings which are not recognised by the file ending -code_endings = {'cs': 'c#', 'h': 'c', 'hpp': 'cpp', 'cxx': 'cpp'} - - -# do search-request -def request(query, params): - params['url'] = search_url.format(query=urlencode({'q': query}), pageno=params['pageno'] - 1) - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_results = loads(resp.text) - - # parse results - for result in search_results.get('results', []): - href = result['url'] - title = "" + result['name'] + " - " + result['filename'] - repo = result['repo'] - - lines = dict() - for line, code in result['lines'].items(): - lines[int(line)] = code - - code_language = code_endings.get( - result['filename'].split('.')[-1].lower(), result['filename'].split('.')[-1].lower() - ) - - # append result - results.append( - { - 'url': href, - 'title': title, - 'content': '', - 'repository': repo, - 'codelines': sorted(lines.items()), - 'code_language': code_language, - 'template': 'code.html', - } - ) - - # return results - return results diff --git a/searx/engines/searx_engine.py b/searx/engines/searx_engine.py deleted file mode 100644 index 84a8e6449..000000000 --- a/searx/engines/searx_engine.py +++ /dev/null @@ -1,59 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Searx (all) -""" - -from json import loads -from searx.engines import categories as searx_categories - -# about -about = { - "website": 'https://github.com/searxng/searxng', - "wikidata_id": 'Q17639196', - "official_api_documentation": 'https://docs.searxng.org/dev/search_api.html', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = searx_categories.keys() - -# search-url -instance_urls = [] -instance_index = 0 - - -# do search-request -def request(query, params): - global instance_index - params['url'] = instance_urls[instance_index % len(instance_urls)] - params['method'] = 'POST' - - instance_index += 1 - - params['data'] = { - 'q': query, - 'pageno': params['pageno'], - 'language': params['language'], - 'time_range': params['time_range'], - 'category': params['category'], - 'format': 'json', - } - - return params - - -# get response from search-request -def response(resp): - - response_json = loads(resp.text) - results = response_json['results'] - - for i in ('answers', 'infoboxes'): - results.extend(response_json[i]) - - results.extend({'suggestion': s} for s in response_json['suggestions']) - - results.append({'number_of_results': response_json['number_of_results']}) - - return results diff --git a/searx/engines/seekr.py b/searx/engines/seekr.py deleted file mode 100644 index 9250ac991..000000000 --- a/searx/engines/seekr.py +++ /dev/null @@ -1,218 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""seekr.com Seeker Score - -Seekr is a privately held search and content evaluation engine that prioritizes -credibility over popularity. - -Configuration -============= - -The engine has the following additional settings: - -- :py:obj:`seekr_category` -- :py:obj:`api_key` - -This implementation is used by seekr engines in the :ref:`settings.yml -`: - -.. code:: yaml - - - name: seekr news - seekr_category: news - ... - - name: seekr images - seekr_category: images - ... - - name: seekr videos - seekr_category: videos - ... - -Known Quirks -============ - -The implementation to support :py:obj:`paging ` -is based on the *nextpage* method of Seekr's REST API. This feature is *next -page driven* and plays well with the :ref:`infinite_scroll ` -setting in SearXNG but it does not really fit into SearXNG's UI to select a page -by number. - -Implementations -=============== - -""" - -from datetime import datetime -from json import loads -from urllib.parse import urlencode -from flask_babel import gettext - -about = { - "website": 'https://seekr.com/', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": True, - "results": 'JSON', - "language": 'en', -} - -base_url = "https://api.seekr.com" -paging = True - -api_key = "srh1-22fb-sekr" -"""API key / reversed engineered / is still the same one since 2022.""" - -seekr_category: str = 'unset' -"""Search category, any of ``news``, ``videos`` or ``images``.""" - - -def init(engine_settings): - - # global paging - if engine_settings['seekr_category'] not in ['news', 'videos', 'images']: - raise ValueError(f"Unsupported seekr category: {engine_settings['seekr_category']}") - - -def request(query, params): - - if not query: - return None - - args = { - 'query': query, - 'apiKey': api_key, - } - - api_url = base_url + '/engine' - if seekr_category == 'news': - api_url += '/v2/newssearch' - - elif seekr_category == 'images': - api_url += '/imagetab' - - elif seekr_category == 'videos': - api_url += '/videotab' - - params['url'] = f"{api_url}?{urlencode(args)}" - if params['pageno'] > 1: - nextpage = params['engine_data'].get('nextpage') - if nextpage: - params['url'] = nextpage - - return params - - -def _images_response(json): - - search_results = json.get('expertResponses') - if search_results: - search_results = search_results[0].get('advice') - else: # response from a 'nextResultSet' - search_results = json.get('advice') - - results = [] - if not search_results: - return results - - for result in search_results['results']: - summary = loads(result['summary']) - results.append( - { - 'template': 'images.html', - 'url': summary['refererurl'], - 'title': result['title'], - 'img_src': result['url'], - 'img_format': f"{summary['width']}x{summary['height']}", - 'thumbnail_src': 'https://media.seekr.com/engine/rp/' + summary['tg'] + '/?src= ' + result['thumbnail'], - } - ) - - if search_results.get('nextResultSet'): - results.append( - { - "engine_data": search_results.get('nextResultSet'), - "key": "nextpage", - } - ) - return results - - -def _videos_response(json): - - search_results = json.get('expertResponses') - if search_results: - search_results = search_results[0].get('advice') - else: # response from a 'nextResultSet' - search_results = json.get('advice') - - results = [] - if not search_results: - return results - - for result in search_results['results']: - summary = loads(result['summary']) - results.append( - { - 'template': 'videos.html', - 'url': result['url'], - 'title': result['title'], - 'thumbnail': 'https://media.seekr.com/engine/rp/' + summary['tg'] + '/?src= ' + result['thumbnail'], - } - ) - - if search_results.get('nextResultSet'): - results.append( - { - "engine_data": search_results.get('nextResultSet'), - "key": "nextpage", - } - ) - return results - - -def _news_response(json): - - search_results = json.get('expertResponses') - if search_results: - search_results = search_results[0]['advice']['categorySearchResult']['searchResult'] - else: # response from a 'nextResultSet' - search_results = json.get('advice') - - results = [] - if not search_results: - return results - - for result in search_results['results']: - - results.append( - { - 'url': result['url'], - 'title': result['title'], - 'content': result['summary'] or result["topCategory"] or result["displayUrl"] or '', - 'thumbnail': result.get('thumbnail', ''), - 'publishedDate': datetime.strptime(result['pubDate'][:19], '%Y-%m-%d %H:%M:%S'), - 'metadata': gettext("Language") + ': ' + result.get('language', ''), - } - ) - - if search_results.get('nextResultSet'): - results.append( - { - "engine_data": search_results.get('nextResultSet'), - "key": "nextpage", - } - ) - return results - - -def response(resp): - json = resp.json() - - if seekr_category == "videos": - return _videos_response(json) - if seekr_category == "images": - return _images_response(json) - if seekr_category == "news": - return _news_response(json) - - raise ValueError(f"Unsupported seekr category: {seekr_category}") diff --git a/searx/engines/semantic_scholar.py b/searx/engines/semantic_scholar.py deleted file mode 100644 index 7a1b5b231..000000000 --- a/searx/engines/semantic_scholar.py +++ /dev/null @@ -1,105 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Semantic Scholar (Science) -""" - -from json import dumps, loads -from datetime import datetime - -from flask_babel import gettext - -about = { - "website": 'https://www.semanticscholar.org/', - "wikidata_id": 'Q22908627', - "official_api_documentation": 'https://api.semanticscholar.org/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -categories = ['science', 'scientific publications'] -paging = True -search_url = 'https://www.semanticscholar.org/api/1/search' -paper_url = 'https://www.semanticscholar.org/paper' - - -def request(query, params): - params['url'] = search_url - params['method'] = 'POST' - params['headers']['content-type'] = 'application/json' - params['data'] = dumps( - { - "queryString": query, - "page": params['pageno'], - "pageSize": 10, - "sort": "relevance", - "useFallbackRankerService": False, - "useFallbackSearchCluster": False, - "getQuerySuggestions": False, - "authors": [], - "coAuthors": [], - "venues": [], - "performTitleMatch": True, - } - ) - return params - - -def response(resp): - res = loads(resp.text) - results = [] - for result in res['results']: - url = result.get('primaryPaperLink', {}).get('url') - if not url and result.get('links'): - url = result.get('links')[0] - if not url: - alternatePaperLinks = result.get('alternatePaperLinks') - if alternatePaperLinks: - url = alternatePaperLinks[0].get('url') - if not url: - url = paper_url + '/%s' % result['id'] - - # publishedDate - if 'pubDate' in result: - publishedDate = datetime.strptime(result['pubDate'], "%Y-%m-%d") - else: - publishedDate = None - - # authors - authors = [author[0]['name'] for author in result.get('authors', [])] - - # pick for the first alternate link, but not from the crawler - pdf_url = None - for doc in result.get('alternatePaperLinks', []): - if doc['linkType'] not in ('crawler', 'doi'): - pdf_url = doc['url'] - break - - # comments - comments = None - if 'citationStats' in result: - comments = gettext( - '{numCitations} citations from the year {firstCitationVelocityYear} to {lastCitationVelocityYear}' - ).format( - numCitations=result['citationStats']['numCitations'], - firstCitationVelocityYear=result['citationStats']['firstCitationVelocityYear'], - lastCitationVelocityYear=result['citationStats']['lastCitationVelocityYear'], - ) - - results.append( - { - 'template': 'paper.html', - 'url': url, - 'title': result['title']['text'], - 'content': result['paperAbstract']['text'], - 'journal': result.get('venue', {}).get('text') or result.get('journal', {}).get('name'), - 'doi': result.get('doiInfo', {}).get('doi'), - 'tags': result.get('fieldsOfStudy'), - 'authors': authors, - 'pdf_url': pdf_url, - 'publishedDate': publishedDate, - 'comments': comments, - } - ) - - return results diff --git a/searx/engines/sepiasearch.py b/searx/engines/sepiasearch.py deleted file mode 100644 index 72157b253..000000000 --- a/searx/engines/sepiasearch.py +++ /dev/null @@ -1,86 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""SepiaSearch uses the same languages as :py:obj:`Peertube -` and the response is identical to the response from the -peertube engines. - -""" - -from typing import TYPE_CHECKING - -from urllib.parse import urlencode -from datetime import datetime - -from searx.engines.peertube import fetch_traits # pylint: disable=unused-import -from searx.engines.peertube import ( - # pylint: disable=unused-import - video_response, - safesearch_table, - time_range_table, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -about = { - # pylint: disable=line-too-long - "website": 'https://sepiasearch.org', - "wikidata_id": None, - "official_api_documentation": 'https://docs.joinpeertube.org/api-rest-reference.html#tag/Search/operation/searchVideos', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['videos'] -paging = True - -base_url = 'https://sepiasearch.org' - -time_range_support = True -safesearch = True - - -def request(query, params): - """Assemble request for the SepiaSearch API""" - - if not query: - return False - - # eng_region = traits.get_region(params['searxng_locale'], 'en_US') - eng_lang = traits.get_language(params['searxng_locale'], None) - - params['url'] = ( - base_url.rstrip("/") - + "/api/v1/search/videos?" - + urlencode( - { - 'search': query, - 'start': (params['pageno'] - 1) * 10, - 'count': 10, - # -createdAt: sort by date ascending / createdAt: date descending - 'sort': '-match', # sort by *match descending* - 'nsfw': safesearch_table[params['safesearch']], - } - ) - ) - - if eng_lang is not None: - params['url'] += '&languageOneOf[]=' + eng_lang - params['url'] += '&boostLanguages[]=' + eng_lang - - if params['time_range'] in time_range_table: - time = datetime.now().date() + time_range_table[params['time_range']] - params['url'] += '&startDate=' + time.isoformat() - - return params - - -def response(resp): - return video_response(resp) diff --git a/searx/engines/seznam.py b/searx/engines/seznam.py deleted file mode 100644 index 36a38848a..000000000 --- a/searx/engines/seznam.py +++ /dev/null @@ -1,74 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Seznam - -""" - -from urllib.parse import urlencode -from lxml import html -from searx.network import get -from searx.exceptions import SearxEngineAccessDeniedException -from searx.utils import ( - extract_text, - eval_xpath_list, - eval_xpath_getindex, -) - -# about -about = { - "website": "https://www.seznam.cz/", - "wikidata_id": "Q3490485", - "official_api_documentation": "https://api.sklik.cz/", - "use_official_api": False, - "require_api_key": False, - "results": "HTML", - "language": "cz", -} - -categories = ['general', 'web'] -base_url = 'https://search.seznam.cz/' - - -def request(query, params): - response_index = get(base_url, headers=params['headers'], raise_for_httperror=True) - dom = html.fromstring(response_index.text) - - url_params = { - 'q': query, - 'oq': query, - } - for e in eval_xpath_list(dom, '//input[@type="hidden"]'): - name = e.get('name') - value = e.get('value') - url_params[name] = value - - params['url'] = base_url + '?' + urlencode(url_params) - params['cookies'] = response_index.cookies - return params - - -def response(resp): - if resp.url.path.startswith('/verify'): - raise SearxEngineAccessDeniedException() - - results = [] - - dom = html.fromstring(resp.content.decode()) - for result_element in eval_xpath_list( - dom, '//div[@id="searchpage-root"]//div[@class="Layout--left"]/div[@class="f2c528"]' - ): - result_data = eval_xpath_getindex( - result_element, './/div[@class="c8774a" or @class="e69e8d a11657"]', 0, default=None - ) - if result_data is None: - continue - title_element = eval_xpath_getindex(result_element, './/h3/a', 0) - results.append( - { - 'url': title_element.get('href'), - 'title': extract_text(title_element), - 'content': extract_text(result_data), - } - ) - - return results diff --git a/searx/engines/sjp.py b/searx/engines/sjp.py deleted file mode 100644 index 6daa46e78..000000000 --- a/searx/engines/sjp.py +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Słownik Języka Polskiego - -Dictionary of the polish language from PWN (sjp.pwn) -""" - -from lxml.html import fromstring -from searx import logger -from searx.utils import extract_text -from searx.network import raise_for_httperror - -logger = logger.getChild('sjp engine') - -# about -about = { - "website": 'https://sjp.pwn.pl', - "wikidata_id": 'Q55117369', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', - "language": 'pl', -} - -categories = ['dictionaries'] -paging = False - -URL = 'https://sjp.pwn.pl' -SEARCH_URL = URL + '/szukaj/{query}.html' - -word_xpath = '//div[@class="query"]' -dict_xpath = [ - '//div[@class="wyniki sjp-so-wyniki sjp-so-anchor"]', - '//div[@class="wyniki sjp-wyniki sjp-anchor"]', - '//div[@class="wyniki sjp-doroszewski-wyniki sjp-doroszewski-anchor"]', -] - - -def request(query, params): - params['url'] = SEARCH_URL.format(query=query) - logger.debug(f"query_url --> {params['url']}") - return params - - -def response(resp): - results = [] - - raise_for_httperror(resp) - dom = fromstring(resp.text) - word = extract_text(dom.xpath(word_xpath)) - - definitions = [] - - for dict_src in dict_xpath: - for src in dom.xpath(dict_src): - src_text = extract_text(src.xpath('.//span[@class="entry-head-title"]/text()')).strip() - - src_defs = [] - for def_item in src.xpath('.//div[contains(@class, "ribbon-element")]'): - if def_item.xpath('./div[@class="znacz"]'): - sub_defs = [] - for def_sub_item in def_item.xpath('./div[@class="znacz"]'): - def_sub_text = extract_text(def_sub_item).lstrip('0123456789. ') - sub_defs.append(def_sub_text) - src_defs.append((word, sub_defs)) - else: - def_text = extract_text(def_item).strip() - def_link = def_item.xpath('./span/a/@href') - if 'doroszewski' in def_link[0]: - def_text = f"{def_text}" - src_defs.append((def_text, '')) - - definitions.append((src_text, src_defs)) - - if not definitions: - return results - - infobox = '' - for src in definitions: - infobox += f"
{src[0]}" - infobox += "
    " - for (def_text, sub_def) in src[1]: - infobox += f"
  • {def_text}
  • " - if sub_def: - infobox += "
      " - for sub_def_text in sub_def: - infobox += f"
    1. {sub_def_text}
    2. " - infobox += "
    " - infobox += "
" - - results.append( - { - 'infobox': word, - 'content': infobox, - } - ) - - return results diff --git a/searx/engines/solidtorrents.py b/searx/engines/solidtorrents.py deleted file mode 100644 index b853d9e25..000000000 --- a/searx/engines/solidtorrents.py +++ /dev/null @@ -1,80 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""SolidTorrents -""" - -from datetime import datetime -from urllib.parse import urlencode -import random - -from lxml import html - -from searx.utils import ( - extract_text, - eval_xpath, - eval_xpath_getindex, - eval_xpath_list, - get_torrent_size, -) - -about = { - "website": 'https://www.solidtorrents.to/', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['files'] -paging = True - -# base_url can be overwritten by a list of URLs in the settings.yml -base_url = 'https://solidtorrents.to' - - -def request(query, params): - if isinstance(base_url, list): - params['base_url'] = random.choice(base_url) - else: - params['base_url'] = base_url - search_url = params['base_url'] + '/search?{query}' - query = urlencode({'q': query, 'page': params['pageno']}) - params['url'] = search_url.format(query=query) - return params - - -def response(resp): - results = [] - dom = html.fromstring(resp.text) - - for result in eval_xpath(dom, '//li[contains(@class, "search-result")]'): - torrentfile = eval_xpath_getindex(result, './/a[contains(@class, "dl-torrent")]/@href', 0, None) - magnet = eval_xpath_getindex(result, './/a[contains(@class, "dl-magnet")]/@href', 0, None) - if torrentfile is None or magnet is None: - continue # ignore anime results that which aren't actually torrents - title = eval_xpath_getindex(result, './/h5[contains(@class, "title")]', 0, None) - url = eval_xpath_getindex(result, './/h5[contains(@class, "title")]/a/@href', 0, None) - categ = eval_xpath(result, './/a[contains(@class, "category")]') - stats = eval_xpath_list(result, './/div[contains(@class, "stats")]/div', min_len=5) - - params = { - 'seed': extract_text(stats[3]), - 'leech': extract_text(stats[2]), - 'title': extract_text(title), - 'url': resp.search_params['base_url'] + url, - 'filesize': get_torrent_size(*extract_text(stats[1]).split()), - 'magnetlink': magnet, - 'torrentfile': torrentfile, - 'metadata': extract_text(categ), - 'template': "torrent.html", - } - - try: - params['publishedDate'] = datetime.strptime(extract_text(stats[4]), '%b %d, %Y') - except ValueError: - pass - - results.append(params) - - return results diff --git a/searx/engines/solr.py b/searx/engines/solr.py deleted file mode 100644 index 85ed42cf9..000000000 --- a/searx/engines/solr.py +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -""".. sidebar:: info - - - :origin:`solr.py ` - - `Solr `_ - - `Solr Resources `_ - - `Install Solr `_ - -Solr_ is a popular search engine based on Lucene, just like Elasticsearch_. But -instead of searching in indices, you can search in collections. - -Example -======= - -This is an example configuration for searching in the collection -``my-collection`` and get the results in ascending order. - -.. code:: yaml - - - name: solr - engine: solr - shortcut: slr - base_url: http://localhost:8983 - collection: my-collection - sort: asc - enable_http: true - -""" - -# pylint: disable=global-statement - -from json import loads -from urllib.parse import urlencode -from searx.exceptions import SearxEngineAPIException - - -base_url = 'http://localhost:8983' -collection = '' -rows = 10 -sort = '' # sorting: asc or desc -field_list = 'name' # list of field names to display on the UI -default_fields = '' # default field to query -query_fields = '' # query fields -_search_url = '' -paging = True - - -def init(_): - if collection == '': - raise ValueError('collection cannot be empty') - - global _search_url - _search_url = base_url + '/solr/' + collection + '/select?{params}' - - -def request(query, params): - query_params = {'q': query, 'rows': rows} - if field_list != '': - query_params['fl'] = field_list - if query_fields != '': - query_params['qf'] = query_fields - if default_fields != '': - query_params['df'] = default_fields - if sort != '': - query_params['sort'] = sort - - if 'pageno' in params: - query_params['start'] = rows * (params['pageno'] - 1) - - params['url'] = _search_url.format(params=urlencode(query_params)) - - return params - - -def response(resp): - resp_json = __get_response(resp) - - results = [] - for result in resp_json['response']['docs']: - r = {key: str(value) for key, value in result.items()} - if len(r) == 0: - continue - r['template'] = 'key-value.html' - results.append(r) - - return results - - -def __get_response(resp): - try: - resp_json = loads(resp.text) - except Exception as e: - raise SearxEngineAPIException("failed to parse response") from e - - if 'error' in resp_json: - raise SearxEngineAPIException(resp_json['error']['msg']) - - return resp_json diff --git a/searx/engines/soundcloud.py b/searx/engines/soundcloud.py deleted file mode 100644 index 78947c69c..000000000 --- a/searx/engines/soundcloud.py +++ /dev/null @@ -1,103 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Soundcloud (Music) -""" - -import re -from json import loads -from lxml import html -from dateutil import parser -from urllib.parse import quote_plus, urlencode -from searx.network import get as http_get - -# about -about = { - "website": 'https://soundcloud.com', - "wikidata_id": 'Q568769', - "official_api_documentation": 'https://developers.soundcloud.com/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['music'] -paging = True - -# search-url -# missing attribute: user_id, app_version, app_locale -url = 'https://api-v2.soundcloud.com/' -search_url = ( - url + 'search?{query}' - '&variant_ids=' - '&facet=model' - '&limit=20' - '&offset={offset}' - '&linked_partitioning=1' - '&client_id={client_id}' -) # noqa - -cid_re = re.compile(r'client_id:"([^"]*)"', re.I | re.U) -guest_client_id = '' - - -def get_client_id(): - response = http_get("https://soundcloud.com") - - if response.ok: - tree = html.fromstring(response.content) - # script_tags has been moved from /assets/app/ to /assets/ path. I - # found client_id in https://a-v2.sndcdn.com/assets/49-a0c01933-3.js - script_tags = tree.xpath("//script[contains(@src, '/assets/')]") - app_js_urls = [script_tag.get('src') for script_tag in script_tags if script_tag is not None] - - # extracts valid app_js urls from soundcloud.com content - for app_js_url in app_js_urls[::-1]: - # gets app_js and searches for the clientid - response = http_get(app_js_url) - if response.ok: - cids = cid_re.search(response.content.decode()) - if cids is not None and len(cids.groups()): - return cids.groups()[0] - logger.warning("Unable to fetch guest client_id from SoundCloud, check parser!") - return "" - - -def init(engine_settings=None): - global guest_client_id - # api-key - guest_client_id = get_client_id() - - -# do search-request -def request(query, params): - offset = (params['pageno'] - 1) * 20 - - params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset, client_id=guest_client_id) - - return params - - -# get response from search-request -def response(resp): - results = [] - search_res = loads(resp.text) - - # parse results - for result in search_res.get('collection', []): - - if result['kind'] in ('track', 'playlist'): - uri = quote_plus(result['uri']) - res = { - 'url': result['permalink_url'], - 'title': result['title'], - 'content': result['description'] or '', - 'publishedDate': parser.parse(result['last_modified']), - 'iframe_src': "https://w.soundcloud.com/player/?url=" + uri, - } - img_src = result['artwork_url'] or result['user']['avatar_url'] - if img_src: - res['img_src'] = img_src - results.append(res) - - return results diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py deleted file mode 100644 index 87edb7f1b..000000000 --- a/searx/engines/spotify.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Spotify (Music) -""" - -from json import loads -from urllib.parse import urlencode -import base64 - -from searx.network import post as http_post - -# about -about = { - "website": 'https://www.spotify.com', - "wikidata_id": 'Q689141', - "official_api_documentation": 'https://developer.spotify.com/web-api/search-item/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['music'] -paging = True -api_client_id = None -api_client_secret = None - -# search-url -url = 'https://api.spotify.com/' -search_url = url + 'v1/search?{query}&type=track&offset={offset}' - -# do search-request -def request(query, params): - offset = (params['pageno'] - 1) * 20 - - params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset) - - r = http_post( - 'https://accounts.spotify.com/api/token', - data={'grant_type': 'client_credentials'}, - headers={ - 'Authorization': 'Basic ' - + base64.b64encode("{}:{}".format(api_client_id, api_client_secret).encode()).decode() - }, - ) - j = loads(r.text) - params['headers'] = {'Authorization': 'Bearer {}'.format(j.get('access_token'))} - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_res = loads(resp.text) - - # parse results - for result in search_res.get('tracks', {}).get('items', {}): - if result['type'] == 'track': - title = result['name'] - url = result['external_urls']['spotify'] - content = '{} - {} - {}'.format(result['artists'][0]['name'], result['album']['name'], result['name']) - - # append result - results.append( - { - 'url': url, - 'title': title, - 'iframe_src': "https://embed.spotify.com/?uri=spotify:track:" + result['id'], - 'content': content, - } - ) - - # return results - return results diff --git a/searx/engines/springer.py b/searx/engines/springer.py deleted file mode 100644 index a4d0832d8..000000000 --- a/searx/engines/springer.py +++ /dev/null @@ -1,72 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Springer Nature (science) - -""" - -from datetime import datetime -from json import loads -from urllib.parse import urlencode - -from searx.exceptions import SearxEngineAPIException - -about = { - "website": 'https://www.springernature.com/', - "wikidata_id": 'Q21096327', - "official_api_documentation": 'https://dev.springernature.com/', - "use_official_api": True, - "require_api_key": True, - "results": 'JSON', -} - -categories = ['science', 'scientific publications'] -paging = True -nb_per_page = 10 -api_key = 'unset' - -base_url = 'https://api.springernature.com/metadata/json?' - - -def request(query, params): - if api_key == 'unset': - raise SearxEngineAPIException('missing Springer-Nature API key') - args = urlencode({'q': query, 's': nb_per_page * (params['pageno'] - 1), 'p': nb_per_page, 'api_key': api_key}) - params['url'] = base_url + args - logger.debug("query_url --> %s", params['url']) - return params - - -def response(resp): - results = [] - json_data = loads(resp.text) - - for record in json_data['records']: - published = datetime.strptime(record['publicationDate'], '%Y-%m-%d') - authors = [" ".join(author['creator'].split(', ')[::-1]) for author in record['creators']] - tags = record.get('genre') - if isinstance(tags, str): - tags = [tags] - results.append( - { - 'template': 'paper.html', - 'url': record['url'][0]['value'].replace('http://', 'https://', 1), - 'title': record['title'], - 'content': record['abstract'], - 'comments': record['publicationName'], - 'tags': tags, - 'publishedDate': published, - 'type': record.get('contentType'), - 'authors': authors, - # 'editor': '', - 'publisher': record.get('publisher'), - 'journal': record.get('publicationName'), - 'volume': record.get('volume') or None, - 'pages': '-'.join([x for x in [record.get('startingPage'), record.get('endingPage')] if x]), - 'number': record.get('number') or None, - 'doi': record.get('doi'), - 'issn': [x for x in [record.get('issn')] if x], - 'isbn': [x for x in [record.get('isbn')] if x], - # 'pdf_url' : '' - } - ) - return results diff --git a/searx/engines/sqlite.py b/searx/engines/sqlite.py deleted file mode 100644 index 76e83af8a..000000000 --- a/searx/engines/sqlite.py +++ /dev/null @@ -1,101 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""SQLite is a small, fast and reliable SQL database engine. It does not require -any extra dependency. - -Example -======= - -.. _MediathekView: https://mediathekview.de/ - -To demonstrate the power of database engines, here is a more complex example -which reads from a MediathekView_ (DE) movie database. For this example of the -SQLite engine download the database: - -- https://liste.mediathekview.de/filmliste-v2.db.bz2 - -and unpack into ``searx/data/filmliste-v2.db``. To search the database use e.g -Query to test: ``!mediathekview concert`` - -.. code:: yaml - - - name: mediathekview - engine: sqlite - disabled: False - categories: general - result_template: default.html - database: searx/data/filmliste-v2.db - query_str: >- - SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title, - COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url, - description AS content - FROM film - WHERE title LIKE :wildcard OR description LIKE :wildcard - ORDER BY duration DESC - -Implementations -=============== - -""" - -import sqlite3 -import contextlib - -engine_type = 'offline' -database = "" -query_str = "" -limit = 10 -paging = True -result_template = 'key-value.html' - - -def init(engine_settings): - if 'query_str' not in engine_settings: - raise ValueError('query_str cannot be empty') - - if not engine_settings['query_str'].lower().startswith('select '): - raise ValueError('only SELECT query is supported') - - -@contextlib.contextmanager -def sqlite_cursor(): - """Implements a :py:obj:`Context Manager ` for a - :py:obj:`sqlite3.Cursor`. - - Open database in read only mode: if the database doesn't exist. The default - mode creates an empty file on the file system. See: - - * https://docs.python.org/3/library/sqlite3.html#sqlite3.connect - * https://www.sqlite.org/uri.html - - """ - uri = 'file:' + database + '?mode=ro' - with contextlib.closing(sqlite3.connect(uri, uri=True)) as connect: - connect.row_factory = sqlite3.Row - with contextlib.closing(connect.cursor()) as cursor: - yield cursor - - -def search(query, params): - results = [] - - query_params = { - 'query': query, - 'wildcard': r'%' + query.replace(' ', r'%') + r'%', - 'limit': limit, - 'offset': (params['pageno'] - 1) * limit, - } - query_to_run = query_str + ' LIMIT :limit OFFSET :offset' - - with sqlite_cursor() as cur: - - cur.execute(query_to_run, query_params) - col_names = [cn[0] for cn in cur.description] - - for row in cur.fetchall(): - item = dict(zip(col_names, map(str, row))) - item['template'] = result_template - logger.debug("append result --> %s", item) - results.append(item) - - return results diff --git a/searx/engines/stackexchange.py b/searx/engines/stackexchange.py deleted file mode 100644 index 99615b1a7..000000000 --- a/searx/engines/stackexchange.py +++ /dev/null @@ -1,71 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Stack Exchange API v2.3 - -* https://api.stackexchange.com/ - -""" - -import html -from json import loads -from urllib.parse import urlencode - -about = { - "website": 'https://stackexchange.com', - "wikidata_id": 'Q3495447', - "official_api_documentation": 'https://api.stackexchange.com/docs', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -paging = True -pagesize = 10 - -api_site = 'stackoverflow' -api_sort = 'activity' -api_order = 'desc' - -# https://api.stackexchange.com/docs/advanced-search -search_api = 'https://api.stackexchange.com/2.3/search/advanced?' - - -def request(query, params): - - args = urlencode( - { - 'q': query, - 'page': params['pageno'], - 'pagesize': pagesize, - 'site': api_site, - 'sort': api_sort, - 'order': 'desc', - } - ) - params['url'] = search_api + args - - return params - - -def response(resp): - - results = [] - json_data = loads(resp.text) - - for result in json_data['items']: - - content = "[%s]" % ", ".join(result['tags']) - content += " %s" % result['owner']['display_name'] - if result['is_answered']: - content += ' // is answered' - content += " // score: %s" % result['score'] - - results.append( - { - 'url': "https://%s.com/q/%s" % (api_site, result['question_id']), - 'title': html.unescape(result['title']), - 'content': html.unescape(content), - } - ) - - return results diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py deleted file mode 100644 index 92d69867a..000000000 --- a/searx/engines/startpage.py +++ /dev/null @@ -1,494 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Startpage's language & region selectors are a mess .. - -.. _startpage regions: - -Startpage regions -================= - -In the list of regions there are tags we need to map to common region tags:: - - pt-BR_BR --> pt_BR - zh-CN_CN --> zh_Hans_CN - zh-TW_TW --> zh_Hant_TW - zh-TW_HK --> zh_Hant_HK - en-GB_GB --> en_GB - -and there is at least one tag with a three letter language tag (ISO 639-2):: - - fil_PH --> fil_PH - -The locale code ``no_NO`` from Startpage does not exists and is mapped to -``nb-NO``:: - - babel.core.UnknownLocaleError: unknown locale 'no_NO' - -For reference see languages-subtag at iana; ``no`` is the macrolanguage [1]_ and -W3C recommends subtag over macrolanguage [2]_. - -.. [1] `iana: language-subtag-registry - `_ :: - - type: language - Subtag: nb - Description: Norwegian Bokmål - Added: 2005-10-16 - Suppress-Script: Latn - Macrolanguage: no - -.. [2] - Use macrolanguages with care. Some language subtags have a Scope field set to - macrolanguage, i.e. this primary language subtag encompasses a number of more - specific primary language subtags in the registry. ... As we recommended for - the collection subtags mentioned above, in most cases you should try to use - the more specific subtags ... `W3: The primary language subtag - `_ - -.. _startpage languages: - -Startpage languages -=================== - -:py:obj:`send_accept_language_header`: - The displayed name in Startpage's settings page depend on the location of the - IP when ``Accept-Language`` HTTP header is unset. In :py:obj:`fetch_traits` - we use:: - - 'Accept-Language': "en-US,en;q=0.5", - .. - - to get uniform names independent from the IP). - -.. _startpage categories: - -Startpage categories -==================== - -Startpage's category (for Web-search, News, Videos, ..) is set by -:py:obj:`startpage_categ` in settings.yml:: - - - name: startpage - engine: startpage - startpage_categ: web - ... - -.. hint:: - - The default category is ``web`` .. and other categories than ``web`` are not - yet implemented. - -""" - -from typing import TYPE_CHECKING -from collections import OrderedDict -import re -from unicodedata import normalize, combining -from time import time -from datetime import datetime, timedelta - -import dateutil.parser -import lxml.html -import babel - -from searx.utils import extract_text, eval_xpath, gen_useragent -from searx.network import get # see https://github.com/searxng/searxng/issues/762 -from searx.exceptions import SearxEngineCaptchaException -from searx.locales import region_tag -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://startpage.com', - "wikidata_id": 'Q2333295', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -startpage_categ = 'web' -"""Startpage's category, visit :ref:`startpage categories`. -""" - -send_accept_language_header = True -"""Startpage tries to guess user's language and territory from the HTTP -``Accept-Language``. Optional the user can select a search-language (can be -different to the UI language) and a region filter. -""" - -# engine dependent config -categories = ['general', 'web'] -paging = True -time_range_support = True -safesearch = True - -time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'} -safesearch_dict = {0: '0', 1: '1', 2: '1'} - -# search-url -base_url = 'https://www.startpage.com' -search_url = base_url + '/sp/search' - -# specific xpath variables -# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"] -# not ads: div[@class="result"] are the direct childs of div[@id="results"] -results_xpath = '//div[@class="w-gl__result__main"]' -link_xpath = './/a[@class="w-gl__result-title result-link"]' -content_xpath = './/p[@class="w-gl__description"]' -search_form_xpath = '//form[@id="search"]' -"""XPath of Startpage's origin search form - -.. code: html - -
- - - - - - -
-""" - -# timestamp of the last fetch of 'sc' code -sc_code_ts = 0 -sc_code = '' -sc_code_cache_sec = 30 -"""Time in seconds the sc-code is cached in memory :py:obj:`get_sc_code`.""" - - -def get_sc_code(searxng_locale, params): - """Get an actual ``sc`` argument from Startpage's search form (HTML page). - - Startpage puts a ``sc`` argument on every HTML :py:obj:`search form - `. Without this argument Startpage considers the request - is from a bot. We do not know what is encoded in the value of the ``sc`` - argument, but it seems to be a kind of a *time-stamp*. - - Startpage's search form generates a new sc-code on each request. This - function scrap a new sc-code from Startpage's home page every - :py:obj:`sc_code_cache_sec` seconds. - - """ - - global sc_code_ts, sc_code # pylint: disable=global-statement - - if sc_code and (time() < (sc_code_ts + sc_code_cache_sec)): - logger.debug("get_sc_code: reuse '%s'", sc_code) - return sc_code - - headers = {**params['headers']} - headers['Origin'] = base_url - headers['Referer'] = base_url + '/' - # headers['Connection'] = 'keep-alive' - # headers['Accept-Encoding'] = 'gzip, deflate, br' - # headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' - # headers['User-Agent'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0' - - # add Accept-Language header - if searxng_locale == 'all': - searxng_locale = 'en-US' - locale = babel.Locale.parse(searxng_locale, sep='-') - - if send_accept_language_header: - ac_lang = locale.language - if locale.territory: - ac_lang = "%s-%s,%s;q=0.9,*;q=0.5" % ( - locale.language, - locale.territory, - locale.language, - ) - headers['Accept-Language'] = ac_lang - - get_sc_url = base_url + '/?sc=%s' % (sc_code) - logger.debug("query new sc time-stamp ... %s", get_sc_url) - logger.debug("headers: %s", headers) - resp = get(get_sc_url, headers=headers) - - # ?? x = network.get('https://www.startpage.com/sp/cdn/images/filter-chevron.svg', headers=headers) - # ?? https://www.startpage.com/sp/cdn/images/filter-chevron.svg - # ?? ping-back URL: https://www.startpage.com/sp/pb?sc=TLsB0oITjZ8F21 - - if str(resp.url).startswith('https://www.startpage.com/sp/captcha'): # type: ignore - raise SearxEngineCaptchaException( - message="get_sc_code: got redirected to https://www.startpage.com/sp/captcha", - ) - - dom = lxml.html.fromstring(resp.text) # type: ignore - - try: - sc_code = eval_xpath(dom, search_form_xpath + '//input[@name="sc"]/@value')[0] - except IndexError as exc: - logger.debug("suspend startpage API --> https://github.com/searxng/searxng/pull/695") - raise SearxEngineCaptchaException( - message="get_sc_code: [PR-695] query new sc time-stamp failed! (%s)" % resp.url, # type: ignore - ) from exc - - sc_code_ts = time() - logger.debug("get_sc_code: new value is: %s", sc_code) - return sc_code - - -def request(query, params): - """Assemble a Startpage request. - - To avoid CAPTCHA we need to send a well formed HTTP POST request with a - cookie. We need to form a request that is identical to the request build by - Startpage's search form: - - - in the cookie the **region** is selected - - in the HTTP POST data the **language** is selected - - Additionally the arguments form Startpage's search form needs to be set in - HTML POST data / compare ```` elements: :py:obj:`search_form_xpath`. - """ - if startpage_categ == 'web': - return _request_cat_web(query, params) - - logger.error("Startpages's category '%' is not yet implemented.", startpage_categ) - return params - - -def _request_cat_web(query, params): - - engine_region = traits.get_region(params['searxng_locale'], 'en-US') - engine_language = traits.get_language(params['searxng_locale'], 'en') - - # build arguments - args = { - 'query': query, - 'cat': 'web', - 't': 'device', - 'sc': get_sc_code(params['searxng_locale'], params), # hint: this func needs HTTP headers, - 'with_date': time_range_dict.get(params['time_range'], ''), - } - - if engine_language: - args['language'] = engine_language - args['lui'] = engine_language - - args['abp'] = '1' - if params['pageno'] > 1: - args['page'] = params['pageno'] - - # build cookie - lang_homepage = 'en' - cookie = OrderedDict() - cookie['date_time'] = 'world' - cookie['disable_family_filter'] = safesearch_dict[params['safesearch']] - cookie['disable_open_in_new_window'] = '0' - cookie['enable_post_method'] = '1' # hint: POST - cookie['enable_proxy_safety_suggest'] = '1' - cookie['enable_stay_control'] = '1' - cookie['instant_answers'] = '1' - cookie['lang_homepage'] = 's/device/%s/' % lang_homepage - cookie['num_of_results'] = '10' - cookie['suggestions'] = '1' - cookie['wt_unit'] = 'celsius' - - if engine_language: - cookie['language'] = engine_language - cookie['language_ui'] = engine_language - - if engine_region: - cookie['search_results_region'] = engine_region - - params['cookies']['preferences'] = 'N1N'.join(["%sEEE%s" % x for x in cookie.items()]) - logger.debug('cookie preferences: %s', params['cookies']['preferences']) - - # POST request - logger.debug("data: %s", args) - params['data'] = args - params['method'] = 'POST' - params['url'] = search_url - params['headers']['Origin'] = base_url - params['headers']['Referer'] = base_url + '/' - # is the Accept header needed? - # params['headers']['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' - - return params - - -# get response from search-request -def response(resp): - dom = lxml.html.fromstring(resp.text) - - if startpage_categ == 'web': - return _response_cat_web(dom) - - logger.error("Startpages's category '%' is not yet implemented.", startpage_categ) - return [] - - -def _response_cat_web(dom): - results = [] - - # parse results - for result in eval_xpath(dom, results_xpath): - links = eval_xpath(result, link_xpath) - if not links: - continue - link = links[0] - url = link.attrib.get('href') - - # block google-ad url's - if re.match(r"^http(s|)://(www\.)?google\.[a-z]+/aclk.*$", url): - continue - - # block startpage search url's - if re.match(r"^http(s|)://(www\.)?startpage\.com/do/search\?.*$", url): - continue - - title = extract_text(link) - - if eval_xpath(result, content_xpath): - content: str = extract_text(eval_xpath(result, content_xpath)) # type: ignore - else: - content = '' - - published_date = None - - # check if search result starts with something like: "2 Sep 2014 ... " - if re.match(r"^([1-9]|[1-2][0-9]|3[0-1]) [A-Z][a-z]{2} [0-9]{4} \.\.\. ", content): - date_pos = content.find('...') + 4 - date_string = content[0 : date_pos - 5] - # fix content string - content = content[date_pos:] - - try: - published_date = dateutil.parser.parse(date_string, dayfirst=True) - except ValueError: - pass - - # check if search result starts with something like: "5 days ago ... " - elif re.match(r"^[0-9]+ days? ago \.\.\. ", content): - date_pos = content.find('...') + 4 - date_string = content[0 : date_pos - 5] - - # calculate datetime - published_date = datetime.now() - timedelta(days=int(re.match(r'\d+', date_string).group())) # type: ignore - - # fix content string - content = content[date_pos:] - - if published_date: - # append result - results.append({'url': url, 'title': title, 'content': content, 'publishedDate': published_date}) - else: - # append result - results.append({'url': url, 'title': title, 'content': content}) - - # return results - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch :ref:`languages ` and :ref:`regions ` from Startpage.""" - # pylint: disable=too-many-branches - - headers = { - 'User-Agent': gen_useragent(), - 'Accept-Language': "en-US,en;q=0.5", # bing needs to set the English language - } - resp = get('https://www.startpage.com/do/settings', headers=headers) - - if not resp.ok: # type: ignore - print("ERROR: response from Startpage is not OK.") - - dom = lxml.html.fromstring(resp.text) # type: ignore - - # regions - - sp_region_names = [] - for option in dom.xpath('//form[@name="settings"]//select[@name="search_results_region"]/option'): - sp_region_names.append(option.get('value')) - - for eng_tag in sp_region_names: - if eng_tag == 'all': - continue - babel_region_tag = {'no_NO': 'nb_NO'}.get(eng_tag, eng_tag) # norway - - if '-' in babel_region_tag: - l, r = babel_region_tag.split('-') - r = r.split('_')[-1] - sxng_tag = region_tag(babel.Locale.parse(l + '_' + r, sep='_')) - - else: - try: - sxng_tag = region_tag(babel.Locale.parse(babel_region_tag, sep='_')) - - except babel.UnknownLocaleError: - print("ERROR: can't determine babel locale of startpage's locale %s" % eng_tag) - continue - - conflict = engine_traits.regions.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.regions[sxng_tag] = eng_tag - - # languages - - catalog_engine2code = {name.lower(): lang_code for lang_code, name in babel.Locale('en').languages.items()} - - # get the native name of every language known by babel - - for lang_code in filter( - lambda lang_code: lang_code.find('_') == -1, babel.localedata.locale_identifiers() # type: ignore - ): - native_name = babel.Locale(lang_code).get_language_name().lower() # type: ignore - # add native name exactly as it is - catalog_engine2code[native_name] = lang_code - - # add "normalized" language name (i.e. français becomes francais and español becomes espanol) - unaccented_name = ''.join(filter(lambda c: not combining(c), normalize('NFKD', native_name))) - if len(unaccented_name) == len(unaccented_name.encode()): - # add only if result is ascii (otherwise "normalization" didn't work) - catalog_engine2code[unaccented_name] = lang_code - - # values that can't be determined by babel's languages names - - catalog_engine2code.update( - { - # traditional chinese used in .. - 'fantizhengwen': 'zh_Hant', - # Korean alphabet - 'hangul': 'ko', - # Malayalam is one of 22 scheduled languages of India. - 'malayam': 'ml', - 'norsk': 'nb', - 'sinhalese': 'si', - } - ) - - skip_eng_tags = { - 'english_uk', # SearXNG lang 'en' already maps to 'english' - } - - for option in dom.xpath('//form[@name="settings"]//select[@name="language"]/option'): - - eng_tag = option.get('value') - if eng_tag in skip_eng_tags: - continue - name = extract_text(option).lower() # type: ignore - - sxng_tag = catalog_engine2code.get(eng_tag) - if sxng_tag is None: - sxng_tag = catalog_engine2code[name] - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.languages[sxng_tag] = eng_tag diff --git a/searx/engines/svgrepo.py b/searx/engines/svgrepo.py deleted file mode 100644 index 19c37ff58..000000000 --- a/searx/engines/svgrepo.py +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Svgrepo (images) -""" - -from lxml import html -from searx.utils import extract_text, eval_xpath, eval_xpath_list - -about = { - "website": 'https://www.svgrepo.com', - "official_api_documentation": 'https://svgapi.com', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -paging = True -categories = ['images'] -base_url = "https://www.svgrepo.com" - -results_xpath = "//div[@class='style_nodeListing__7Nmro']/div" -url_xpath = ".//a/@href" -title_xpath = ".//a/@title" -img_src_xpath = ".//img/@src" - - -def request(query, params): - params['url'] = f"{base_url}/vectors/{query}/{params['pageno']}/" - return params - - -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - for result in eval_xpath_list(dom, results_xpath): - results.append( - { - 'template': 'images.html', - 'url': base_url + extract_text(eval_xpath(result, url_xpath)), - 'title': extract_text(eval_xpath(result, title_xpath)).replace(" SVG File", "").replace("Show ", ""), - 'img_src': extract_text(eval_xpath(result, img_src_xpath)), - } - ) - - return results diff --git a/searx/engines/tagesschau.py b/searx/engines/tagesschau.py deleted file mode 100644 index cfa184025..000000000 --- a/searx/engines/tagesschau.py +++ /dev/null @@ -1,113 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""ARD: `Tagesschau API`_ - -The Tagesschau is a news program of the ARD. Via the `Tagesschau API`_, current -news and media reports are available in JSON format. The `Bundesstelle für Open -Data`_ offers a `OpenAPI`_ portal at bundDEV_ where APIs are documented an can -be tested. - -This SearXNG engine uses the `/api2u/search`_ API. - -.. _/api2u/search: http://tagesschau.api.bund.dev/ -.. _bundDEV: https://bund.dev/apis -.. _Bundesstelle für Open Data: https://github.com/bundesAPI -.. _Tagesschau API: https://github.com/AndreasFischer1985/tagesschau-api/blob/main/README_en.md -.. _OpenAPI: https://swagger.io/specification/ - -""" -from typing import TYPE_CHECKING - -from datetime import datetime -from urllib.parse import urlencode -import re - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -about = { - 'website': "https://tagesschau.de", - 'wikidata_id': "Q703907", - 'official_api_documentation': None, - 'use_official_api': True, - 'require_api_key': False, - 'results': 'JSON', - 'language': 'de', -} -categories = ['general', 'news'] -paging = True - -results_per_page = 10 -base_url = "https://www.tagesschau.de" - -use_source_url = True -"""When set to false, display URLs from Tagesschau, and not the actual source -(e.g. NDR, WDR, SWR, HR, ...) - -.. note:: - - The actual source may contain additional content, such as commentary, that is - not displayed in the Tagesschau. - -""" - - -def request(query, params): - args = { - 'searchText': query, - 'pageSize': results_per_page, - 'resultPage': params['pageno'] - 1, - } - - params['url'] = f"{base_url}/api2u/search?{urlencode(args)}" - - return params - - -def response(resp): - results = [] - - json = resp.json() - - for item in json['searchResults']: - item_type = item.get('type') - if item_type in ('story', 'webview'): - results.append(_story(item)) - elif item_type == 'video': - results.append(_video(item)) - else: - logger.error("unknow result type: %s", item_type) - - return results - - -def _story(item): - return { - 'title': item['title'], - 'thumbnail': item.get('teaserImage', {}).get('imageVariants', {}).get('16x9-256'), - 'publishedDate': datetime.strptime(item['date'][:19], '%Y-%m-%dT%H:%M:%S'), - 'content': item['firstSentence'], - 'url': item['shareURL'] if use_source_url else item['detailsweb'], - } - - -def _video(item): - streams = item['streams'] - video_url = streams.get('h264s') or streams.get('h264m') or streams.get('h264l') or streams.get('h264xl') - title = item['title'] - - if "_vapp.mxf" in title: - title = title.replace("_vapp.mxf", "") - title = re.sub(r"APP\d+ (FC-)?", "", title, count=1) - - return { - 'template': 'videos.html', - 'title': title, - 'thumbnail': item.get('teaserImage', {}).get('imageVariants', {}).get('16x9-256'), - 'publishedDate': datetime.strptime(item['date'][:19], '%Y-%m-%dT%H:%M:%S'), - 'content': item.get('firstSentence', ''), - 'iframe_src': video_url, - 'url': video_url, - } diff --git a/searx/engines/tineye.py b/searx/engines/tineye.py deleted file mode 100644 index 6c5ff134c..000000000 --- a/searx/engines/tineye.py +++ /dev/null @@ -1,225 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This engine implements *Tineye - reverse image search* - -Using TinEye, you can search by image or perform what we call a reverse image -search. You can do that by uploading an image or searching by URL. You can also -simply drag and drop your images to start your search. TinEye constantly crawls -the web and adds images to its index. Today, the TinEye index is over 50.2 -billion images `[tineye.com] `_. - -.. hint:: - - This SearXNG engine only supports *'searching by URL'* and it does not use - the official API `[api.tineye.com] `_. - -""" - -from urllib.parse import urlencode -from datetime import datetime -from flask_babel import gettext - -about = { - "website": 'https://tineye.com', - "wikidata_id": 'Q2382535', - "official_api_documentation": 'https://api.tineye.com/python/docs/', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -engine_type = 'online_url_search' -""":py:obj:`searx.search.processors.online_url_search`""" - -categories = ['general'] -paging = True -safesearch = False -base_url = 'https://tineye.com' -search_string = '/result_json/?page={page}&{query}' - -FORMAT_NOT_SUPPORTED = gettext( - "Could not read that image url. This may be due to an unsupported file" - " format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or WebP." -) -"""TinEye error message""" - -NO_SIGNATURE_ERROR = gettext( - "The image is too simple to find matches. TinEye requires a basic level of" - " visual detail to successfully identify matches." -) -"""TinEye error message""" - -DOWNLOAD_ERROR = gettext("The image could not be downloaded.") -"""TinEye error message""" - - -def request(query, params): - """Build TinEye HTTP request using ``search_urls`` of a :py:obj:`engine_type`.""" - - params['raise_for_httperror'] = False - - if params['search_urls']['data:image']: - query = params['search_urls']['data:image'] - elif params['search_urls']['http']: - query = params['search_urls']['http'] - - logger.debug("query URL: %s", query) - query = urlencode({'url': query}) - - # see https://github.com/TinEye/pytineye/blob/main/pytineye/api.py - params['url'] = base_url + search_string.format(query=query, page=params['pageno']) - - params['headers'].update( - { - 'Connection': 'keep-alive', - 'Accept-Encoding': 'gzip, defalte, br', - 'Host': 'tineye.com', - 'DNT': '1', - 'TE': 'trailers', - } - ) - return params - - -def parse_tineye_match(match_json): - """Takes parsed JSON from the API server and turns it into a :py:obj:`dict` - object. - - Attributes `(class Match) `__ - - - `image_url`, link to the result image. - - `domain`, domain this result was found on. - - `score`, a number (0 to 100) that indicates how closely the images match. - - `width`, image width in pixels. - - `height`, image height in pixels. - - `size`, image area in pixels. - - `format`, image format. - - `filesize`, image size in bytes. - - `overlay`, overlay URL. - - `tags`, whether this match belongs to a collection or stock domain. - - - `backlinks`, a list of Backlink objects pointing to the original websites - and image URLs. List items are instances of :py:obj:`dict`, (`Backlink - `__): - - - `url`, the image URL to the image. - - `backlink`, the original website URL. - - `crawl_date`, the date the image was crawled. - - """ - - # HINT: there exists an alternative backlink dict in the domains list / e.g.:: - # - # match_json['domains'][0]['backlinks'] - - backlinks = [] - if "backlinks" in match_json: - - for backlink_json in match_json["backlinks"]: - if not isinstance(backlink_json, dict): - continue - - crawl_date = backlink_json.get("crawl_date") - if crawl_date: - crawl_date = datetime.fromisoformat(crawl_date[:-3]) - else: - crawl_date = datetime.min - - backlinks.append( - { - 'url': backlink_json.get("url"), - 'backlink': backlink_json.get("backlink"), - 'crawl_date': crawl_date, - 'image_name': backlink_json.get("image_name"), - } - ) - - return { - 'image_url': match_json.get("image_url"), - 'domain': match_json.get("domain"), - 'score': match_json.get("score"), - 'width': match_json.get("width"), - 'height': match_json.get("height"), - 'size': match_json.get("size"), - 'image_format': match_json.get("format"), - 'filesize': match_json.get("filesize"), - 'overlay': match_json.get("overlay"), - 'tags': match_json.get("tags"), - 'backlinks': backlinks, - } - - -def response(resp): - """Parse HTTP response from TinEye.""" - results = [] - - try: - json_data = resp.json() - except Exception as exc: # pylint: disable=broad-except - msg = "can't parse JSON response // %s" % exc - logger.error(msg) - json_data = {'error': msg} - - # handle error codes from Tineye - - if resp.is_error: - if resp.status_code in (400, 422): - - message = 'HTTP status: %s' % resp.status_code - error = json_data.get('error') - s_key = json_data.get('suggestions', {}).get('key', '') - - if error and s_key: - message = "%s (%s)" % (error, s_key) - elif error: - message = error - - if s_key == "Invalid image URL": - # test https://docs.searxng.org/_static/searxng-wordmark.svg - message = FORMAT_NOT_SUPPORTED - elif s_key == 'NO_SIGNATURE_ERROR': - # test https://pngimg.com/uploads/dot/dot_PNG4.png - message = NO_SIGNATURE_ERROR - elif s_key == 'Download Error': - # test https://notexists - message = DOWNLOAD_ERROR - - # see https://github.com/searxng/searxng/pull/1456#issuecomment-1193105023 - # results.append({'answer': message}) - logger.error(message) - - return results - - resp.raise_for_status() - - # append results from matches - - for match_json in json_data['matches']: - - tineye_match = parse_tineye_match(match_json) - if not tineye_match['backlinks']: - continue - - backlink = tineye_match['backlinks'][0] - results.append( - { - 'template': 'images.html', - 'url': backlink['backlink'], - 'thumbnail_src': tineye_match['image_url'], - 'source': backlink['url'], - 'title': backlink['image_name'], - 'img_src': backlink['url'], - 'format': tineye_match['image_format'], - 'widht': tineye_match['width'], - 'height': tineye_match['height'], - 'publishedDate': backlink['crawl_date'], - } - ) - - # append number of results - - number_of_results = json_data.get('num_matches') - if number_of_results: - results.append({'number_of_results': number_of_results}) - - return results diff --git a/searx/engines/tokyotoshokan.py b/searx/engines/tokyotoshokan.py deleted file mode 100644 index b01de38c1..000000000 --- a/searx/engines/tokyotoshokan.py +++ /dev/null @@ -1,97 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Tokyo Toshokan (A BitTorrent Library for Japanese Media) -""" - -import re -from urllib.parse import urlencode -from lxml import html -from datetime import datetime -from searx.utils import extract_text, get_torrent_size, int_or_zero - -# about -about = { - "website": 'https://www.tokyotosho.info/', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['files'] -paging = True - -# search-url -base_url = 'https://www.tokyotosho.info/' -search_url = base_url + 'search.php?{query}' - - -# do search-request -def request(query, params): - query = urlencode({'page': params['pageno'], 'terms': query}) - params['url'] = search_url.format(query=query) - return params - - -# get response from search-request -def response(resp): - results = [] - - dom = html.fromstring(resp.text) - rows = dom.xpath('//table[@class="listing"]//tr[contains(@class, "category_0")]') - - # check if there are no results or page layout was changed so we cannot parse it - # currently there are two rows for each result, so total count must be even - if len(rows) == 0 or len(rows) % 2 != 0: - return [] - - # regular expression for parsing torrent size strings - size_re = re.compile(r'Size:\s*([\d.]+)(TB|GB|MB|B)', re.IGNORECASE) - - # processing the results, two rows at a time - for i in range(0, len(rows), 2): - # parse the first row - name_row = rows[i] - - links = name_row.xpath('./td[@class="desc-top"]/a') - params = {'template': 'torrent.html', 'url': links[-1].attrib.get('href'), 'title': extract_text(links[-1])} - # I have not yet seen any torrents without magnet links, but - # it's better to be prepared to stumble upon one some day - if len(links) == 2: - magnet = links[0].attrib.get('href') - if magnet.startswith('magnet'): - # okay, we have a valid magnet link, let's add it to the result - params['magnetlink'] = magnet - - # no more info in the first row, start parsing the second one - info_row = rows[i + 1] - desc = extract_text(info_row.xpath('./td[@class="desc-bot"]')[0]) - for item in desc.split('|'): - item = item.strip() - if item.startswith('Size:'): - try: - # ('1.228', 'GB') - groups = size_re.match(item).groups() - params['filesize'] = get_torrent_size(groups[0], groups[1]) - except: - pass - elif item.startswith('Date:'): - try: - # Date: 2016-02-21 21:44 UTC - date = datetime.strptime(item, 'Date: %Y-%m-%d %H:%M UTC') - params['publishedDate'] = date - except: - pass - elif item.startswith('Comment:'): - params['content'] = item - stats = info_row.xpath('./td[@class="stats"]/span') - # has the layout not changed yet? - if len(stats) == 3: - params['seed'] = int_or_zero(extract_text(stats[0])) - params['leech'] = int_or_zero(extract_text(stats[1])) - - results.append(params) - - return results diff --git a/searx/engines/torznab.py b/searx/engines/torznab.py deleted file mode 100644 index 101cab9e3..000000000 --- a/searx/engines/torznab.py +++ /dev/null @@ -1,243 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Torznab_ is an API specification that provides a standardized way to query -torrent site for content. It is used by a number of torrent applications, -including Prowlarr_ and Jackett_. - -Using this engine together with Prowlarr_ or Jackett_ allows you to search -a huge number of torrent sites which are not directly supported. - -Configuration -============= - -The engine has the following settings: - -``base_url``: - Torznab endpoint URL. - -``api_key``: - The API key to use for authentication. - -``torznab_categories``: - The categories to use for searching. This is a list of category IDs. See - Prowlarr-categories_ or Jackett-categories_ for more information. - -``show_torrent_files``: - Whether to show the torrent file in the search results. Be careful as using - this with Prowlarr_ or Jackett_ leaks the API key. This should be used only - if you are querying a Torznab endpoint without authentication or if the - instance is private. Be aware that private trackers may ban you if you share - the torrent file. Defaults to ``false``. - -``show_magnet_links``: - Whether to show the magnet link in the search results. Be aware that private - trackers may ban you if you share the magnet link. Defaults to ``true``. - -.. _Torznab: - https://torznab.github.io/spec-1.3-draft/index.html -.. _Prowlarr: - https://github.com/Prowlarr/Prowlarr -.. _Jackett: - https://github.com/Jackett/Jackett -.. _Prowlarr-categories: - https://wiki.servarr.com/en/prowlarr/cardigann-yml-definition#categories -.. _Jackett-categories: - https://github.com/Jackett/Jackett/wiki/Jackett-Categories - -Implementations -=============== - -""" -from __future__ import annotations -from typing import TYPE_CHECKING - -from typing import List, Dict, Any -from datetime import datetime -from urllib.parse import quote -from lxml import etree # type: ignore - -from searx.exceptions import SearxEngineAPIException - -if TYPE_CHECKING: - import httpx - import logging - - logger: logging.Logger - -# engine settings -about: Dict[str, Any] = { - "website": None, - "wikidata_id": None, - "official_api_documentation": "https://torznab.github.io/spec-1.3-draft", - "use_official_api": True, - "require_api_key": False, - "results": 'XML', -} -categories: List[str] = ['files'] -paging: bool = False -time_range_support: bool = False - -# defined in settings.yml -# example (Jackett): "http://localhost:9117/api/v2.0/indexers/all/results/torznab" -base_url: str = '' -api_key: str = '' -# https://newznab.readthedocs.io/en/latest/misc/api/#predefined-categories -torznab_categories: List[str] = [] -show_torrent_files: bool = False -show_magnet_links: bool = True - - -def init(engine_settings=None): # pylint: disable=unused-argument - """Initialize the engine.""" - if len(base_url) < 1: - raise ValueError('missing torznab base_url') - - -def request(query: str, params: Dict[str, Any]) -> Dict[str, Any]: - """Build the request params.""" - search_url: str = base_url + '?t=search&q={search_query}' - - if len(api_key) > 0: - search_url += '&apikey={api_key}' - if len(torznab_categories) > 0: - search_url += '&cat={torznab_categories}' - - params['url'] = search_url.format( - search_query=quote(query), api_key=api_key, torznab_categories=",".join([str(x) for x in torznab_categories]) - ) - - return params - - -def response(resp: httpx.Response) -> List[Dict[str, Any]]: - """Parse the XML response and return a list of results.""" - results = [] - search_results = etree.XML(resp.content) - - # handle errors: https://newznab.readthedocs.io/en/latest/misc/api/#newznab-error-codes - if search_results.tag == "error": - raise SearxEngineAPIException(search_results.get("description")) - - channel: etree.Element = search_results[0] - - item: etree.Element - for item in channel.iterfind('item'): - result: Dict[str, Any] = build_result(item) - results.append(result) - - return results - - -def build_result(item: etree.Element) -> Dict[str, Any]: - """Build a result from a XML item.""" - - # extract attributes from XML - # see https://torznab.github.io/spec-1.3-draft/torznab/Specification-v1.3.html#predefined-attributes - enclosure: etree.Element | None = item.find('enclosure') - enclosure_url: str | None = None - if enclosure is not None: - enclosure_url = enclosure.get('url') - - size = get_attribute(item, 'size') - if not size and enclosure: - size = enclosure.get('length') - if size: - size = int(size) - - guid = get_attribute(item, 'guid') - comments = get_attribute(item, 'comments') - pubDate = get_attribute(item, 'pubDate') - seeders = get_torznab_attribute(item, 'seeders') - leechers = get_torznab_attribute(item, 'leechers') - peers = get_torznab_attribute(item, 'peers') - - # map attributes to searx result - result: Dict[str, Any] = { - 'template': 'torrent.html', - 'title': get_attribute(item, 'title'), - 'filesize': size, - 'files': get_attribute(item, 'files'), - 'seed': seeders, - 'leech': _map_leechers(leechers, seeders, peers), - 'url': _map_result_url(guid, comments), - 'publishedDate': _map_published_date(pubDate), - 'torrentfile': None, - 'magnetlink': None, - } - - link = get_attribute(item, 'link') - if show_torrent_files: - result['torrentfile'] = _map_torrent_file(link, enclosure_url) - if show_magnet_links: - magneturl = get_torznab_attribute(item, 'magneturl') - result['magnetlink'] = _map_magnet_link(magneturl, guid, enclosure_url, link) - return result - - -def _map_result_url(guid: str | None, comments: str | None) -> str | None: - if guid and guid.startswith('http'): - return guid - if comments and comments.startswith('http'): - return comments - return None - - -def _map_leechers(leechers: str | None, seeders: str | None, peers: str | None) -> str | None: - if leechers: - return leechers - if seeders and peers: - return str(int(peers) - int(seeders)) - return None - - -def _map_published_date(pubDate: str | None) -> datetime | None: - if pubDate is not None: - try: - return datetime.strptime(pubDate, '%a, %d %b %Y %H:%M:%S %z') - except (ValueError, TypeError) as e: - logger.debug("ignore exception (publishedDate): %s", e) - return None - - -def _map_torrent_file(link: str | None, enclosure_url: str | None) -> str | None: - if link and link.startswith('http'): - return link - if enclosure_url and enclosure_url.startswith('http'): - return enclosure_url - return None - - -def _map_magnet_link( - magneturl: str | None, - guid: str | None, - enclosure_url: str | None, - link: str | None, -) -> str | None: - if magneturl and magneturl.startswith('magnet'): - return magneturl - if guid and guid.startswith('magnet'): - return guid - if enclosure_url and enclosure_url.startswith('magnet'): - return enclosure_url - if link and link.startswith('magnet'): - return link - return None - - -def get_attribute(item: etree.Element, property_name: str) -> str | None: - """Get attribute from item.""" - property_element: etree.Element | None = item.find(property_name) - if property_element is not None: - return property_element.text - return None - - -def get_torznab_attribute(item: etree.Element, attribute_name: str) -> str | None: - """Get torznab special attribute from item.""" - element: etree.Element | None = item.find( - './/torznab:attr[@name="{attribute_name}"]'.format(attribute_name=attribute_name), - {'torznab': 'http://torznab.com/schemas/2015/feed'}, - ) - if element is not None: - return element.get("value") - return None diff --git a/searx/engines/translated.py b/searx/engines/translated.py deleted file mode 100644 index 9900c017b..000000000 --- a/searx/engines/translated.py +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - MyMemory Translated -""" - -# about -about = { - "website": 'https://mymemory.translated.net/', - "wikidata_id": None, - "official_api_documentation": 'https://mymemory.translated.net/doc/spec.php', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -engine_type = 'online_dictionary' -categories = ['dictionaries'] -url = 'https://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}' -web_url = 'https://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}' -weight = 100 -https_support = True - -api_key = '' - - -def request(query, params): - if api_key: - key_form = '&key=' + api_key - else: - key_form = '' - params['url'] = url.format( - from_lang=params['from_lang'][1], to_lang=params['to_lang'][1], query=params['query'], key=key_form - ) - return params - - -def response(resp): - results = [] - results.append( - { - 'url': web_url.format( - from_lang=resp.search_params['from_lang'][2], - to_lang=resp.search_params['to_lang'][2], - query=resp.search_params['query'], - ), - 'title': '[{0}-{1}] {2}'.format( - resp.search_params['from_lang'][1], resp.search_params['to_lang'][1], resp.search_params['query'] - ), - 'content': resp.json()['responseData']['translatedText'], - } - ) - return results diff --git a/searx/engines/unsplash.py b/searx/engines/unsplash.py deleted file mode 100644 index 1967fefd2..000000000 --- a/searx/engines/unsplash.py +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Unsplash - -""" - -from urllib.parse import urlencode, urlparse, urlunparse, parse_qsl -from json import loads - -# about -about = { - "website": 'https://unsplash.com', - "wikidata_id": 'Q28233552', - "official_api_documentation": 'https://unsplash.com/developers', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -base_url = 'https://unsplash.com/' -search_url = base_url + 'napi/search/photos?' -categories = ['images'] -page_size = 20 -paging = True - - -def clean_url(url): - parsed = urlparse(url) - query = [(k, v) for (k, v) in parse_qsl(parsed.query) if k not in ['ixid', 's']] - - return urlunparse((parsed.scheme, parsed.netloc, parsed.path, parsed.params, urlencode(query), parsed.fragment)) - - -def request(query, params): - params['url'] = search_url + urlencode({'query': query, 'page': params['pageno'], 'per_page': page_size}) - logger.debug("query_url --> %s", params['url']) - return params - - -def response(resp): - results = [] - json_data = loads(resp.text) - - if 'results' in json_data: - for result in json_data['results']: - results.append( - { - 'template': 'images.html', - 'url': clean_url(result['links']['html']), - 'thumbnail_src': clean_url(result['urls']['thumb']), - 'img_src': clean_url(result['urls']['raw']), - 'title': result.get('alt_description') or 'unknown', - 'content': result.get('description') or '', - } - ) - - return results diff --git a/searx/engines/vimeo.py b/searx/engines/vimeo.py deleted file mode 100644 index 2449345e6..000000000 --- a/searx/engines/vimeo.py +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Wikipedia (Web -""" - -from urllib.parse import urlencode -from json import loads -from dateutil import parser - -# about -about = { - "website": 'https://vimeo.com/', - "wikidata_id": 'Q156376', - "official_api_documentation": 'http://developer.vimeo.com/api', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['videos'] -paging = True - -# search-url -base_url = 'https://vimeo.com/' -search_url = base_url + '/search/page:{pageno}?{query}' - - -# do search-request -def request(query, params): - params['url'] = search_url.format(pageno=params['pageno'], query=urlencode({'q': query})) - - return params - - -# get response from search-request -def response(resp): - results = [] - data_start_pos = resp.text.find('{"filtered"') - data_end_pos = resp.text.find(';\n', data_start_pos + 1) - data = loads(resp.text[data_start_pos:data_end_pos]) - - # parse results - for result in data['filtered']['data']: - result = result[result['type']] - videoid = result['uri'].split('/')[-1] - url = base_url + videoid - title = result['name'] - thumbnail = result['pictures']['sizes'][-1]['link'] - publishedDate = parser.parse(result['created_time']) - - # append result - results.append( - { - 'url': url, - 'title': title, - 'content': '', - 'template': 'videos.html', - 'publishedDate': publishedDate, - 'iframe_src': "https://player.vimeo.com/video/" + videoid, - 'thumbnail': thumbnail, - } - ) - - # return results - return results diff --git a/searx/engines/wallhaven.py b/searx/engines/wallhaven.py deleted file mode 100644 index f80b5d86d..000000000 --- a/searx/engines/wallhaven.py +++ /dev/null @@ -1,84 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Wallhaven_ is a site created by and for people who like wallpapers. - -.. _Wallhaven: https://wallhaven.cc/about#Copyright -""" - -from datetime import datetime -from urllib.parse import urlencode - -about = { - 'website': 'https://wallhaven.cc/', - 'official_api_documentation': 'https://wallhaven.cc/help/api', - 'use_official_api': True, - 'require_api_key': False, - 'results': 'JSON', -} -categories = ['images'] -paging = True - -base_url = "https://wallhaven.cc" - -api_key = '' -"""If you own an API key you can add it here, further read `Rate Limiting and -Errors`_. - -.. _Rate Limiting and Errors: https://wallhaven.cc/help/api#limits - -""" - -# Possible categories: sfw, sketchy, nsfw -safesearch_map = {0: '111', 1: '110', 2: '100'} -"""Turn purities on(1) or off(0) NSFW requires a valid API key. - -.. code:: text - - 100/110/111 <-- Bits stands for: SFW, Sketchy and NSFW - -`What are SFW, Sketchy and NSFW all about?`_: - -- SFW = "Safe for work" wallpapers. *Grandma approves.* -- Sketchy = Not quite SFW not quite NSFW. *Grandma might be uncomfortable.* -- NSFW = "Not safe for work". *Grandma isn't sure who you are anymore.* - -.. _What are SFW, Sketchy and NSFW all about?: - https://wallhaven.cc/faq#What-are-SFW-Sketchy-and-NSFW-all-about - -""" - - -def request(query, params): - args = { - 'q': query, - 'page': params['pageno'], - 'purity': safesearch_map[params['safesearch']], - } - - if api_key: - params['api_key'] = api_key - - params['url'] = f"{base_url}/api/v1/search?{urlencode(args)}" - return params - - -def response(resp): - results = [] - - json = resp.json() - - for result in json['data']: - results.append( - { - 'template': 'images.html', - 'title': '', - 'content': f"{result['category']} / {result['purity']}", - 'url': result['url'], - 'img_src': result['path'], - 'thumbnail_src': result['thumbs']['small'], - 'img_format': result['resolution'], - 'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'), - } - ) - - return results diff --git a/searx/engines/wikicommons.py b/searx/engines/wikicommons.py deleted file mode 100644 index a478f57d2..000000000 --- a/searx/engines/wikicommons.py +++ /dev/null @@ -1,71 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Wikimedia Commons (images) - -""" - -from urllib.parse import urlencode - -# about -about = { - "website": 'https://commons.wikimedia.org/', - "wikidata_id": 'Q565', - "official_api_documentation": 'https://commons.wikimedia.org/w/api.php', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -base_url = "https://commons.wikimedia.org" -search_prefix = ( - '?action=query' - '&format=json' - '&generator=search' - '&gsrnamespace=6' - '&gsrprop=snippet' - '&prop=info|imageinfo' - '&iiprop=url|size|mime' - '&iiurlheight=180' # needed for the thumb url -) -paging = True -number_of_results = 10 - - -def request(query, params): - language = 'en' - if params['language'] != 'all': - language = params['language'].split('-')[0] - - args = { - 'uselang': language, - 'gsrlimit': number_of_results, - 'gsroffset': number_of_results * (params["pageno"] - 1), - 'gsrsearch': "filetype:bitmap|drawing " + query, - } - - params["url"] = f"{base_url}/w/api.php{search_prefix}&{urlencode(args, safe=':|')}" - return params - - -def response(resp): - results = [] - json = resp.json() - - if not json.get("query", {}).get("pages"): - return results - - for item in json["query"]["pages"].values(): - imageinfo = item["imageinfo"][0] - title = item["title"].replace("File:", "").rsplit('.', 1)[0] - result = { - 'url': imageinfo["descriptionurl"], - 'title': title, - 'content': item["snippet"], - 'img_src': imageinfo["url"], - 'img_format': f'{imageinfo["width"]} x {imageinfo["height"]}', - 'thumbnail_src': imageinfo["thumburl"], - 'template': 'images.html', - } - results.append(result) - - return results diff --git a/searx/engines/wikidata.py b/searx/engines/wikidata.py deleted file mode 100644 index 8fa3a97d3..000000000 --- a/searx/engines/wikidata.py +++ /dev/null @@ -1,796 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This module implements the Wikidata engine. Some implementations are shared -from :ref:`wikipedia engine`. - -""" -# pylint: disable=missing-class-docstring - -from typing import TYPE_CHECKING -from hashlib import md5 -from urllib.parse import urlencode, unquote -from json import loads - -from dateutil.parser import isoparse -from babel.dates import format_datetime, format_date, format_time, get_datetime_format - -from searx.data import WIKIDATA_UNITS -from searx.network import post, get -from searx.utils import searx_useragent, get_string_replaces_function -from searx.external_urls import get_external_url, get_earth_coordinates_url, area_to_osm_zoom -from searx.engines.wikipedia import ( - fetch_wikimedia_traits, - get_wiki_params, -) -from searx.enginelib.traits import EngineTraits - -if TYPE_CHECKING: - import logging - - logger: logging.Logger - -traits: EngineTraits - -# about -about = { - "website": 'https://wikidata.org/', - "wikidata_id": 'Q2013', - "official_api_documentation": 'https://query.wikidata.org/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -display_type = ["infobox"] -"""A list of display types composed from ``infobox`` and ``list``. The latter -one will add a hit to the result list. The first one will show a hit in the -info box. Both values can be set, or one of the two can be set.""" - - -# SPARQL -SPARQL_ENDPOINT_URL = 'https://query.wikidata.org/sparql' -SPARQL_EXPLAIN_URL = 'https://query.wikidata.org/bigdata/namespace/wdq/sparql?explain' -WIKIDATA_PROPERTIES = { - 'P434': 'MusicBrainz', - 'P435': 'MusicBrainz', - 'P436': 'MusicBrainz', - 'P966': 'MusicBrainz', - 'P345': 'IMDb', - 'P2397': 'YouTube', - 'P1651': 'YouTube', - 'P2002': 'Twitter', - 'P2013': 'Facebook', - 'P2003': 'Instagram', -} - -# SERVICE wikibase:mwapi : https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI -# SERVICE wikibase:label: https://en.wikibooks.org/wiki/SPARQL/SERVICE_-_Label#Manual_Label_SERVICE -# https://en.wikibooks.org/wiki/SPARQL/WIKIDATA_Precision,_Units_and_Coordinates -# https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Data_model -# optimization: -# * https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/query_optimization -# * https://github.com/blazegraph/database/wiki/QueryHints -QUERY_TEMPLATE = """ -SELECT ?item ?itemLabel ?itemDescription ?lat ?long %SELECT% -WHERE -{ - SERVICE wikibase:mwapi { - bd:serviceParam wikibase:endpoint "www.wikidata.org"; - wikibase:api "EntitySearch"; - wikibase:limit 1; - mwapi:search "%QUERY%"; - mwapi:language "%LANGUAGE%". - ?item wikibase:apiOutputItem mwapi:item. - } - hint:Prior hint:runFirst "true". - - %WHERE% - - SERVICE wikibase:label { - bd:serviceParam wikibase:language "%LANGUAGE%,en". - ?item rdfs:label ?itemLabel . - ?item schema:description ?itemDescription . - %WIKIBASE_LABELS% - } - -} -GROUP BY ?item ?itemLabel ?itemDescription ?lat ?long %GROUP_BY% -""" - -# Get the calendar names and the property names -QUERY_PROPERTY_NAMES = """ -SELECT ?item ?name -WHERE { - { - SELECT ?item - WHERE { ?item wdt:P279* wd:Q12132 } - } UNION { - VALUES ?item { %ATTRIBUTES% } - } - OPTIONAL { ?item rdfs:label ?name. } -} -""" - -# see the property "dummy value" of https://www.wikidata.org/wiki/Q2013 (Wikidata) -# hard coded here to avoid to an additional SPARQL request when the server starts -DUMMY_ENTITY_URLS = set( - "http://www.wikidata.org/entity/" + wid for wid in ("Q4115189", "Q13406268", "Q15397819", "Q17339402") -) - - -# https://www.w3.org/TR/sparql11-query/#rSTRING_LITERAL1 -# https://lists.w3.org/Archives/Public/public-rdf-dawg/2011OctDec/0175.html -sparql_string_escape = get_string_replaces_function( - # fmt: off - { - '\t': '\\\t', - '\n': '\\\n', - '\r': '\\\r', - '\b': '\\\b', - '\f': '\\\f', - '\"': '\\\"', - '\'': '\\\'', - '\\': '\\\\' - } - # fmt: on -) - -replace_http_by_https = get_string_replaces_function({'http:': 'https:'}) - - -def get_headers(): - # user agent: https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual#Query_limits - return {'Accept': 'application/sparql-results+json', 'User-Agent': searx_useragent()} - - -def get_label_for_entity(entity_id, language): - name = WIKIDATA_PROPERTIES.get(entity_id) - if name is None: - name = WIKIDATA_PROPERTIES.get((entity_id, language)) - if name is None: - name = WIKIDATA_PROPERTIES.get((entity_id, language.split('-')[0])) - if name is None: - name = WIKIDATA_PROPERTIES.get((entity_id, 'en')) - if name is None: - name = entity_id - return name - - -def send_wikidata_query(query, method='GET'): - if method == 'GET': - # query will be cached by wikidata - http_response = get(SPARQL_ENDPOINT_URL + '?' + urlencode({'query': query}), headers=get_headers()) - else: - # query won't be cached by wikidata - http_response = post(SPARQL_ENDPOINT_URL, data={'query': query}, headers=get_headers()) - if http_response.status_code != 200: - logger.debug('SPARQL endpoint error %s', http_response.content.decode()) - logger.debug('request time %s', str(http_response.elapsed)) - http_response.raise_for_status() - return loads(http_response.content.decode()) - - -def request(query, params): - - eng_tag, _wiki_netloc = get_wiki_params(params['searxng_locale'], traits) - query, attributes = get_query(query, eng_tag) - logger.debug("request --> language %s // len(attributes): %s", eng_tag, len(attributes)) - - params['method'] = 'POST' - params['url'] = SPARQL_ENDPOINT_URL - params['data'] = {'query': query} - params['headers'] = get_headers() - params['language'] = eng_tag - params['attributes'] = attributes - - return params - - -def response(resp): - - results = [] - jsonresponse = loads(resp.content.decode()) - - language = resp.search_params['language'] - attributes = resp.search_params['attributes'] - logger.debug("request --> language %s // len(attributes): %s", language, len(attributes)) - - seen_entities = set() - for result in jsonresponse.get('results', {}).get('bindings', []): - attribute_result = {key: value['value'] for key, value in result.items()} - entity_url = attribute_result['item'] - if entity_url not in seen_entities and entity_url not in DUMMY_ENTITY_URLS: - seen_entities.add(entity_url) - results += get_results(attribute_result, attributes, language) - else: - logger.debug('The SPARQL request returns duplicate entities: %s', str(attribute_result)) - - return results - - -_IMG_SRC_DEFAULT_URL_PREFIX = "https://commons.wikimedia.org/wiki/Special:FilePath/" -_IMG_SRC_NEW_URL_PREFIX = "https://upload.wikimedia.org/wikipedia/commons/thumb/" - - -def get_thumbnail(img_src): - """Get Thumbnail image from wikimedia commons - - Images from commons.wikimedia.org are (HTTP) redirected to - upload.wikimedia.org. The redirected URL can be calculated by this - function. - - - https://stackoverflow.com/a/33691240 - - """ - logger.debug('get_thumbnail(): %s', img_src) - if not img_src is None and _IMG_SRC_DEFAULT_URL_PREFIX in img_src.split()[0]: - img_src_name = unquote(img_src.replace(_IMG_SRC_DEFAULT_URL_PREFIX, "").split("?", 1)[0].replace("%20", "_")) - img_src_name_first = img_src_name - img_src_name_second = img_src_name - - if ".svg" in img_src_name.split()[0]: - img_src_name_second = img_src_name + ".png" - - img_src_size = img_src.replace(_IMG_SRC_DEFAULT_URL_PREFIX, "").split("?", 1)[1] - img_src_size = img_src_size[img_src_size.index("=") + 1 : img_src_size.index("&")] - img_src_name_md5 = md5(img_src_name.encode("utf-8")).hexdigest() - img_src = ( - _IMG_SRC_NEW_URL_PREFIX - + img_src_name_md5[0] - + "/" - + img_src_name_md5[0:2] - + "/" - + img_src_name_first - + "/" - + img_src_size - + "px-" - + img_src_name_second - ) - logger.debug('get_thumbnail() redirected: %s', img_src) - - return img_src - - -def get_results(attribute_result, attributes, language): - # pylint: disable=too-many-branches - results = [] - infobox_title = attribute_result.get('itemLabel') - infobox_id = attribute_result['item'] - infobox_id_lang = None - infobox_urls = [] - infobox_attributes = [] - infobox_content = attribute_result.get('itemDescription', []) - img_src = None - img_src_priority = 0 - - for attribute in attributes: - value = attribute.get_str(attribute_result, language) - if value is not None and value != '': - attribute_type = type(attribute) - - if attribute_type in (WDURLAttribute, WDArticle): - # get_select() method : there is group_concat(distinct ...;separator=", ") - # split the value here - for url in value.split(', '): - infobox_urls.append({'title': attribute.get_label(language), 'url': url, **attribute.kwargs}) - # "normal" results (not infobox) include official website and Wikipedia links. - if "list" in display_type and (attribute.kwargs.get('official') or attribute_type == WDArticle): - results.append({'title': infobox_title, 'url': url, "content": infobox_content}) - - # update the infobox_id with the wikipedia URL - # first the local wikipedia URL, and as fallback the english wikipedia URL - if attribute_type == WDArticle and ( - (attribute.language == 'en' and infobox_id_lang is None) or attribute.language != 'en' - ): - infobox_id_lang = attribute.language - infobox_id = url - elif attribute_type == WDImageAttribute: - # this attribute is an image. - # replace the current image only the priority is lower - # (the infobox contain only one image). - if attribute.priority > img_src_priority: - img_src = get_thumbnail(value) - img_src_priority = attribute.priority - elif attribute_type == WDGeoAttribute: - # geocoordinate link - # use the area to get the OSM zoom - # Note: ignore the unit (must be km² otherwise the calculation is wrong) - # Should use normalized value p:P2046/psn:P2046/wikibase:quantityAmount - area = attribute_result.get('P2046') - osm_zoom = area_to_osm_zoom(area) if area else 19 - url = attribute.get_geo_url(attribute_result, osm_zoom=osm_zoom) - if url: - infobox_urls.append({'title': attribute.get_label(language), 'url': url, 'entity': attribute.name}) - else: - infobox_attributes.append( - {'label': attribute.get_label(language), 'value': value, 'entity': attribute.name} - ) - - if infobox_id: - infobox_id = replace_http_by_https(infobox_id) - - # add the wikidata URL at the end - infobox_urls.append({'title': 'Wikidata', 'url': attribute_result['item']}) - - if ( - "list" in display_type - and img_src is None - and len(infobox_attributes) == 0 - and len(infobox_urls) == 1 - and len(infobox_content) == 0 - ): - results.append({'url': infobox_urls[0]['url'], 'title': infobox_title, 'content': infobox_content}) - elif "infobox" in display_type: - results.append( - { - 'infobox': infobox_title, - 'id': infobox_id, - 'content': infobox_content, - 'img_src': img_src, - 'urls': infobox_urls, - 'attributes': infobox_attributes, - } - ) - return results - - -def get_query(query, language): - attributes = get_attributes(language) - select = [a.get_select() for a in attributes] - where = list(filter(lambda s: len(s) > 0, [a.get_where() for a in attributes])) - wikibase_label = list(filter(lambda s: len(s) > 0, [a.get_wikibase_label() for a in attributes])) - group_by = list(filter(lambda s: len(s) > 0, [a.get_group_by() for a in attributes])) - query = ( - QUERY_TEMPLATE.replace('%QUERY%', sparql_string_escape(query)) - .replace('%SELECT%', ' '.join(select)) - .replace('%WHERE%', '\n '.join(where)) - .replace('%WIKIBASE_LABELS%', '\n '.join(wikibase_label)) - .replace('%GROUP_BY%', ' '.join(group_by)) - .replace('%LANGUAGE%', language) - ) - return query, attributes - - -def get_attributes(language): - # pylint: disable=too-many-statements - attributes = [] - - def add_value(name): - attributes.append(WDAttribute(name)) - - def add_amount(name): - attributes.append(WDAmountAttribute(name)) - - def add_label(name): - attributes.append(WDLabelAttribute(name)) - - def add_url(name, url_id=None, **kwargs): - attributes.append(WDURLAttribute(name, url_id, kwargs)) - - def add_image(name, url_id=None, priority=1): - attributes.append(WDImageAttribute(name, url_id, priority)) - - def add_date(name): - attributes.append(WDDateAttribute(name)) - - # Dates - for p in [ - 'P571', # inception date - 'P576', # dissolution date - 'P580', # start date - 'P582', # end date - 'P569', # date of birth - 'P570', # date of death - 'P619', # date of spacecraft launch - 'P620', - ]: # date of spacecraft landing - add_date(p) - - for p in [ - 'P27', # country of citizenship - 'P495', # country of origin - 'P17', # country - 'P159', - ]: # headquarters location - add_label(p) - - # Places - for p in [ - 'P36', # capital - 'P35', # head of state - 'P6', # head of government - 'P122', # basic form of government - 'P37', - ]: # official language - add_label(p) - - add_value('P1082') # population - add_amount('P2046') # area - add_amount('P281') # postal code - add_label('P38') # currency - add_amount('P2048') # height (building) - - # Media - for p in [ - 'P400', # platform (videogames, computing) - 'P50', # author - 'P170', # creator - 'P57', # director - 'P175', # performer - 'P178', # developer - 'P162', # producer - 'P176', # manufacturer - 'P58', # screenwriter - 'P272', # production company - 'P264', # record label - 'P123', # publisher - 'P449', # original network - 'P750', # distributed by - 'P86', - ]: # composer - add_label(p) - - add_date('P577') # publication date - add_label('P136') # genre (music, film, artistic...) - add_label('P364') # original language - add_value('P212') # ISBN-13 - add_value('P957') # ISBN-10 - add_label('P275') # copyright license - add_label('P277') # programming language - add_value('P348') # version - add_label('P840') # narrative location - - # Languages - add_value('P1098') # number of speakers - add_label('P282') # writing system - add_label('P1018') # language regulatory body - add_value('P218') # language code (ISO 639-1) - - # Other - add_label('P169') # ceo - add_label('P112') # founded by - add_label('P1454') # legal form (company, organization) - add_label('P137') # operator (service, facility, ...) - add_label('P1029') # crew members (tripulation) - add_label('P225') # taxon name - add_value('P274') # chemical formula - add_label('P1346') # winner (sports, contests, ...) - add_value('P1120') # number of deaths - add_value('P498') # currency code (ISO 4217) - - # URL - add_url('P856', official=True) # official website - attributes.append(WDArticle(language)) # wikipedia (user language) - if not language.startswith('en'): - attributes.append(WDArticle('en')) # wikipedia (english) - - add_url('P1324') # source code repository - add_url('P1581') # blog - add_url('P434', url_id='musicbrainz_artist') - add_url('P435', url_id='musicbrainz_work') - add_url('P436', url_id='musicbrainz_release_group') - add_url('P966', url_id='musicbrainz_label') - add_url('P345', url_id='imdb_id') - add_url('P2397', url_id='youtube_channel') - add_url('P1651', url_id='youtube_video') - add_url('P2002', url_id='twitter_profile') - add_url('P2013', url_id='facebook_profile') - add_url('P2003', url_id='instagram_profile') - - # Map - attributes.append(WDGeoAttribute('P625')) - - # Image - add_image('P15', priority=1, url_id='wikimedia_image') # route map - add_image('P242', priority=2, url_id='wikimedia_image') # locator map - add_image('P154', priority=3, url_id='wikimedia_image') # logo - add_image('P18', priority=4, url_id='wikimedia_image') # image - add_image('P41', priority=5, url_id='wikimedia_image') # flag - add_image('P2716', priority=6, url_id='wikimedia_image') # collage - add_image('P2910', priority=7, url_id='wikimedia_image') # icon - - return attributes - - -class WDAttribute: - __slots__ = ('name',) - - def __init__(self, name): - self.name = name - - def get_select(self): - return '(group_concat(distinct ?{name};separator=", ") as ?{name}s)'.replace('{name}', self.name) - - def get_label(self, language): - return get_label_for_entity(self.name, language) - - def get_where(self): - return "OPTIONAL { ?item wdt:{name} ?{name} . }".replace('{name}', self.name) - - def get_wikibase_label(self): - return "" - - def get_group_by(self): - return "" - - def get_str(self, result, language): # pylint: disable=unused-argument - return result.get(self.name + 's') - - def __repr__(self): - return '<' + str(type(self).__name__) + ':' + self.name + '>' - - -class WDAmountAttribute(WDAttribute): - def get_select(self): - return '?{name} ?{name}Unit'.replace('{name}', self.name) - - def get_where(self): - return """ OPTIONAL { ?item p:{name} ?{name}Node . - ?{name}Node rdf:type wikibase:BestRank ; ps:{name} ?{name} . - OPTIONAL { ?{name}Node psv:{name}/wikibase:quantityUnit ?{name}Unit. } }""".replace( - '{name}', self.name - ) - - def get_group_by(self): - return self.get_select() - - def get_str(self, result, language): - value = result.get(self.name) - unit = result.get(self.name + "Unit") - if unit is not None: - unit = unit.replace('http://www.wikidata.org/entity/', '') - return value + " " + get_label_for_entity(unit, language) - return value - - -class WDArticle(WDAttribute): - - __slots__ = 'language', 'kwargs' - - def __init__(self, language, kwargs=None): - super().__init__('wikipedia') - self.language = language - self.kwargs = kwargs or {} - - def get_label(self, language): - # language parameter is ignored - return "Wikipedia ({language})".replace('{language}', self.language) - - def get_select(self): - return "?article{language} ?articleName{language}".replace('{language}', self.language) - - def get_where(self): - return """OPTIONAL { ?article{language} schema:about ?item ; - schema:inLanguage "{language}" ; - schema:isPartOf ; - schema:name ?articleName{language} . }""".replace( - '{language}', self.language - ) - - def get_group_by(self): - return self.get_select() - - def get_str(self, result, language): - key = 'article{language}'.replace('{language}', self.language) - return result.get(key) - - -class WDLabelAttribute(WDAttribute): - def get_select(self): - return '(group_concat(distinct ?{name}Label;separator=", ") as ?{name}Labels)'.replace('{name}', self.name) - - def get_where(self): - return "OPTIONAL { ?item wdt:{name} ?{name} . }".replace('{name}', self.name) - - def get_wikibase_label(self): - return "?{name} rdfs:label ?{name}Label .".replace('{name}', self.name) - - def get_str(self, result, language): - return result.get(self.name + 'Labels') - - -class WDURLAttribute(WDAttribute): - - HTTP_WIKIMEDIA_IMAGE = 'http://commons.wikimedia.org/wiki/Special:FilePath/' - - __slots__ = 'url_id', 'kwargs' - - def __init__(self, name, url_id=None, kwargs=None): - super().__init__(name) - self.url_id = url_id - self.kwargs = kwargs - - def get_str(self, result, language): - value = result.get(self.name + 's') - if self.url_id and value is not None and value != '': - value = value.split(',')[0] - url_id = self.url_id - if value.startswith(WDURLAttribute.HTTP_WIKIMEDIA_IMAGE): - value = value[len(WDURLAttribute.HTTP_WIKIMEDIA_IMAGE) :] - url_id = 'wikimedia_image' - return get_external_url(url_id, value) - return value - - -class WDGeoAttribute(WDAttribute): - def get_label(self, language): - return "OpenStreetMap" - - def get_select(self): - return "?{name}Lat ?{name}Long".replace('{name}', self.name) - - def get_where(self): - return """OPTIONAL { ?item p:{name}/psv:{name} [ - wikibase:geoLatitude ?{name}Lat ; - wikibase:geoLongitude ?{name}Long ] }""".replace( - '{name}', self.name - ) - - def get_group_by(self): - return self.get_select() - - def get_str(self, result, language): - latitude = result.get(self.name + 'Lat') - longitude = result.get(self.name + 'Long') - if latitude and longitude: - return latitude + ' ' + longitude - return None - - def get_geo_url(self, result, osm_zoom=19): - latitude = result.get(self.name + 'Lat') - longitude = result.get(self.name + 'Long') - if latitude and longitude: - return get_earth_coordinates_url(latitude, longitude, osm_zoom) - return None - - -class WDImageAttribute(WDURLAttribute): - - __slots__ = ('priority',) - - def __init__(self, name, url_id=None, priority=100): - super().__init__(name, url_id) - self.priority = priority - - -class WDDateAttribute(WDAttribute): - def get_select(self): - return '?{name} ?{name}timePrecision ?{name}timeZone ?{name}timeCalendar'.replace('{name}', self.name) - - def get_where(self): - # To remove duplicate, add - # FILTER NOT EXISTS { ?item p:{name}/psv:{name}/wikibase:timeValue ?{name}bis FILTER (?{name}bis < ?{name}) } - # this filter is too slow, so the response function ignore duplicate results - # (see the seen_entities variable) - return """OPTIONAL { ?item p:{name}/psv:{name} [ - wikibase:timeValue ?{name} ; - wikibase:timePrecision ?{name}timePrecision ; - wikibase:timeTimezone ?{name}timeZone ; - wikibase:timeCalendarModel ?{name}timeCalendar ] . } - hint:Prior hint:rangeSafe true;""".replace( - '{name}', self.name - ) - - def get_group_by(self): - return self.get_select() - - def format_8(self, value, locale): # pylint: disable=unused-argument - # precision: less than a year - return value - - def format_9(self, value, locale): - year = int(value) - # precision: year - if year < 1584: - if year < 0: - return str(year - 1) - return str(year) - timestamp = isoparse(value) - return format_date(timestamp, format='yyyy', locale=locale) - - def format_10(self, value, locale): - # precision: month - timestamp = isoparse(value) - return format_date(timestamp, format='MMMM y', locale=locale) - - def format_11(self, value, locale): - # precision: day - timestamp = isoparse(value) - return format_date(timestamp, format='full', locale=locale) - - def format_13(self, value, locale): - timestamp = isoparse(value) - # precision: minute - return ( - get_datetime_format(format, locale=locale) - .replace("'", "") - .replace('{0}', format_time(timestamp, 'full', tzinfo=None, locale=locale)) - .replace('{1}', format_date(timestamp, 'short', locale=locale)) - ) - - def format_14(self, value, locale): - # precision: second. - return format_datetime(isoparse(value), format='full', locale=locale) - - DATE_FORMAT = { - '0': ('format_8', 1000000000), - '1': ('format_8', 100000000), - '2': ('format_8', 10000000), - '3': ('format_8', 1000000), - '4': ('format_8', 100000), - '5': ('format_8', 10000), - '6': ('format_8', 1000), - '7': ('format_8', 100), - '8': ('format_8', 10), - '9': ('format_9', 1), # year - '10': ('format_10', 1), # month - '11': ('format_11', 0), # day - '12': ('format_13', 0), # hour (not supported by babel, display minute) - '13': ('format_13', 0), # minute - '14': ('format_14', 0), # second - } - - def get_str(self, result, language): - value = result.get(self.name) - if value == '' or value is None: - return None - precision = result.get(self.name + 'timePrecision') - date_format = WDDateAttribute.DATE_FORMAT.get(precision) - if date_format is not None: - format_method = getattr(self, date_format[0]) - precision = date_format[1] - try: - if precision >= 1: - t = value.split('-') - if value.startswith('-'): - value = '-' + t[1] - else: - value = t[0] - return format_method(value, language) - except Exception: # pylint: disable=broad-except - return value - return value - - -def debug_explain_wikidata_query(query, method='GET'): - if method == 'GET': - http_response = get(SPARQL_EXPLAIN_URL + '&' + urlencode({'query': query}), headers=get_headers()) - else: - http_response = post(SPARQL_EXPLAIN_URL, data={'query': query}, headers=get_headers()) - http_response.raise_for_status() - return http_response.content - - -def init(engine_settings=None): # pylint: disable=unused-argument - # WIKIDATA_PROPERTIES : add unit symbols - WIKIDATA_PROPERTIES.update(WIKIDATA_UNITS) - - # WIKIDATA_PROPERTIES : add property labels - wikidata_property_names = [] - for attribute in get_attributes('en'): - if type(attribute) in (WDAttribute, WDAmountAttribute, WDURLAttribute, WDDateAttribute, WDLabelAttribute): - if attribute.name not in WIKIDATA_PROPERTIES: - wikidata_property_names.append("wd:" + attribute.name) - query = QUERY_PROPERTY_NAMES.replace('%ATTRIBUTES%', " ".join(wikidata_property_names)) - jsonresponse = send_wikidata_query(query) - for result in jsonresponse.get('results', {}).get('bindings', {}): - name = result['name']['value'] - lang = result['name']['xml:lang'] - entity_id = result['item']['value'].replace('http://www.wikidata.org/entity/', '') - WIKIDATA_PROPERTIES[(entity_id, lang)] = name.capitalize() - - -def fetch_traits(engine_traits: EngineTraits): - """Uses languages evaluated from :py:obj:`wikipedia.fetch_wikimedia_traits - ` and removes - - - ``traits.custom['wiki_netloc']``: wikidata does not have net-locations for - the languages and the list of all - - - ``traits.custom['WIKIPEDIA_LANGUAGES']``: not used in the wikipedia engine - - """ - - fetch_wikimedia_traits(engine_traits) - engine_traits.custom['wiki_netloc'] = {} - engine_traits.custom['WIKIPEDIA_LANGUAGES'] = [] diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py deleted file mode 100644 index d825cbdea..000000000 --- a/searx/engines/wikipedia.py +++ /dev/null @@ -1,327 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""This module implements the Wikipedia engine. Some of this implementations -are shared by other engines: - -- :ref:`wikidata engine` - -The list of supported languages is :py:obj:`fetched ` from -the article linked by :py:obj:`list_of_wikipedias`. - -Unlike traditional search engines, wikipedia does not support one Wikipedia for -all languages, but there is one Wikipedia for each supported language. Some of -these Wikipedias have a LanguageConverter_ enabled -(:py:obj:`rest_v1_summary_url`). - -A LanguageConverter_ (LC) is a system based on language variants that -automatically converts the content of a page into a different variant. A variant -is mostly the same language in a different script. - -- `Wikipedias in multiple writing systems`_ -- `Automatic conversion between traditional and simplified Chinese characters`_ - -PR-2554_: - The Wikipedia link returned by the API is still the same in all cases - (`https://zh.wikipedia.org/wiki/出租車`_) but if your browser's - ``Accept-Language`` is set to any of ``zh``, ``zh-CN``, ``zh-TW``, ``zh-HK`` - or .. Wikipedia's LC automatically returns the desired script in their - web-page. - - - You can test the API here: https://reqbin.com/gesg2kvx - -.. _https://zh.wikipedia.org/wiki/出租車: - https://zh.wikipedia.org/wiki/%E5%87%BA%E7%A7%9F%E8%BB%8A - -To support Wikipedia's LanguageConverter_, a SearXNG request to Wikipedia uses -:py:obj:`get_wiki_params` and :py:obj:`wiki_lc_locale_variants' in the -:py:obj:`fetch_wikimedia_traits` function. - -To test in SearXNG, query for ``!wp 出租車`` with each of the available Chinese -options: - -- ``!wp 出租車 :zh`` should show 出租車 -- ``!wp 出租車 :zh-CN`` should show 出租车 -- ``!wp 出租車 :zh-TW`` should show 計程車 -- ``!wp 出租車 :zh-HK`` should show 的士 -- ``!wp 出租車 :zh-SG`` should show 德士 - -.. _LanguageConverter: - https://www.mediawiki.org/wiki/Writing_systems#LanguageConverter -.. _Wikipedias in multiple writing systems: - https://meta.wikimedia.org/wiki/Wikipedias_in_multiple_writing_systems -.. _Automatic conversion between traditional and simplified Chinese characters: - https://en.wikipedia.org/wiki/Chinese_Wikipedia#Automatic_conversion_between_traditional_and_simplified_Chinese_characters -.. _PR-2554: https://github.com/searx/searx/pull/2554 - -""" - -import urllib.parse -import babel - -from lxml import html - -from searx import utils -from searx import network as _network -from searx import locales -from searx.enginelib.traits import EngineTraits - -traits: EngineTraits - -# about -about = { - "website": 'https://www.wikipedia.org/', - "wikidata_id": 'Q52', - "official_api_documentation": 'https://en.wikipedia.org/api/', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -display_type = ["infobox"] -"""A list of display types composed from ``infobox`` and ``list``. The latter -one will add a hit to the result list. The first one will show a hit in the -info box. Both values can be set, or one of the two can be set.""" - -send_accept_language_header = True -"""The HTTP ``Accept-Language`` header is needed for wikis where -LanguageConverter_ is enabled.""" - -list_of_wikipedias = 'https://meta.wikimedia.org/wiki/List_of_Wikipedias' -"""`List of all wikipedias `_ -""" - -wikipedia_article_depth = 'https://meta.wikimedia.org/wiki/Wikipedia_article_depth' -"""The *editing depth* of Wikipedia is one of several possible rough indicators -of the encyclopedia's collaborative quality, showing how frequently its articles -are updated. The measurement of depth was introduced after some limitations of -the classic measurement of article count were realized. -""" - -rest_v1_summary_url = 'https://{wiki_netloc}/api/rest_v1/page/summary/{title}' -""" -`wikipedia rest_v1 summary API`_: - The summary response includes an extract of the first paragraph of the page in - plain text and HTML as well as the type of page. This is useful for page - previews (fka. Hovercards, aka. Popups) on the web and link previews in the - apps. - -HTTP ``Accept-Language`` header (:py:obj:`send_accept_language_header`): - The desired language variant code for wikis where LanguageConverter_ is - enabled. - -.. _wikipedia rest_v1 summary API: - https://en.wikipedia.org/api/rest_v1/#/Page%20content/get_page_summary__title_ - -""" - -wiki_lc_locale_variants = { - "zh": ( - "zh-CN", - "zh-HK", - "zh-MO", - "zh-MY", - "zh-SG", - "zh-TW", - ), - "zh-classical": ("zh-classical",), -} -"""Mapping rule of the LanguageConverter_ to map a language and its variants to -a Locale (used in the HTTP ``Accept-Language`` header). For example see `LC -Chinese`_. - -.. _LC Chinese: - https://meta.wikimedia.org/wiki/Wikipedias_in_multiple_writing_systems#Chinese -""" - -wikipedia_script_variants = { - "zh": ( - "zh_Hant", - "zh_Hans", - ) -} - - -def get_wiki_params(sxng_locale, eng_traits): - """Returns the Wikipedia language tag and the netloc that fits to the - ``sxng_locale``. To support LanguageConverter_ this function rates a locale - (region) higher than a language (compare :py:obj:`wiki_lc_locale_variants`). - - """ - eng_tag = eng_traits.get_region(sxng_locale, eng_traits.get_language(sxng_locale, 'en')) - wiki_netloc = eng_traits.custom['wiki_netloc'].get(eng_tag, 'en.wikipedia.org') - return eng_tag, wiki_netloc - - -def request(query, params): - """Assemble a request (`wikipedia rest_v1 summary API`_).""" - if query.islower(): - query = query.title() - - _eng_tag, wiki_netloc = get_wiki_params(params['searxng_locale'], traits) - title = urllib.parse.quote(query) - params['url'] = rest_v1_summary_url.format(wiki_netloc=wiki_netloc, title=title) - - params['raise_for_httperror'] = False - params['soft_max_redirects'] = 2 - - return params - - -# get response from search-request -def response(resp): - - results = [] - if resp.status_code == 404: - return [] - if resp.status_code == 400: - try: - api_result = resp.json() - except Exception: # pylint: disable=broad-except - pass - else: - if ( - api_result['type'] == 'https://mediawiki.org/wiki/HyperSwitch/errors/bad_request' - and api_result['detail'] == 'title-invalid-characters' - ): - return [] - - _network.raise_for_httperror(resp) - - api_result = resp.json() - title = utils.html_to_text(api_result.get('titles', {}).get('display') or api_result.get('title')) - wikipedia_link = api_result['content_urls']['desktop']['page'] - - if "list" in display_type or api_result.get('type') != 'standard': - # show item in the result list if 'list' is in the display options or it - # is a item that can't be displayed in a infobox. - results.append({'url': wikipedia_link, 'title': title, 'content': api_result.get('description', '')}) - - if "infobox" in display_type: - if api_result.get('type') == 'standard': - results.append( - { - 'infobox': title, - 'id': wikipedia_link, - 'content': api_result.get('extract', ''), - 'img_src': api_result.get('thumbnail', {}).get('source'), - 'urls': [{'title': 'Wikipedia', 'url': wikipedia_link}], - } - ) - - return results - - -# Nonstandard language codes -# -# These Wikipedias use language codes that do not conform to the ISO 639 -# standard (which is how wiki subdomains are chosen nowadays). - -lang_map = locales.LOCALE_BEST_MATCH.copy() -lang_map.update( - { - 'be-tarask': 'bel', - 'ak': 'aka', - 'als': 'gsw', - 'bat-smg': 'sgs', - 'cbk-zam': 'cbk', - 'fiu-vro': 'vro', - 'map-bms': 'map', - 'no': 'nb-NO', - 'nrm': 'nrf', - 'roa-rup': 'rup', - 'nds-nl': 'nds', - #'simple: – invented code used for the Simple English Wikipedia (not the official IETF code en-simple) - 'zh-min-nan': 'nan', - 'zh-yue': 'yue', - 'an': 'arg', - } -) - - -def fetch_traits(engine_traits: EngineTraits): - fetch_wikimedia_traits(engine_traits) - print("WIKIPEDIA_LANGUAGES: %s" % len(engine_traits.custom['WIKIPEDIA_LANGUAGES'])) - - -def fetch_wikimedia_traits(engine_traits: EngineTraits): - """Fetch languages from Wikipedia. Not all languages from the - :py:obj:`list_of_wikipedias` are supported by SearXNG locales, only those - known from :py:obj:`searx.locales.LOCALE_NAMES` or those with a minimal - :py:obj:`editing depth `. - - The location of the Wikipedia address of a language is mapped in a - :py:obj:`custom field ` - (``wiki_netloc``). Here is a reduced example: - - .. code:: python - - traits.custom['wiki_netloc'] = { - "en": "en.wikipedia.org", - .. - "gsw": "als.wikipedia.org", - .. - "zh": "zh.wikipedia.org", - "zh-classical": "zh-classical.wikipedia.org" - } - """ - # pylint: disable=too-many-branches - engine_traits.custom['wiki_netloc'] = {} - engine_traits.custom['WIKIPEDIA_LANGUAGES'] = [] - - # insert alias to map from a script or region to a wikipedia variant - - for eng_tag, sxng_tag_list in wikipedia_script_variants.items(): - for sxng_tag in sxng_tag_list: - engine_traits.languages[sxng_tag] = eng_tag - for eng_tag, sxng_tag_list in wiki_lc_locale_variants.items(): - for sxng_tag in sxng_tag_list: - engine_traits.regions[sxng_tag] = eng_tag - - resp = _network.get(list_of_wikipedias) - if not resp.ok: - print("ERROR: response from Wikipedia is not OK.") - - dom = html.fromstring(resp.text) - for row in dom.xpath('//table[contains(@class,"sortable")]//tbody/tr'): - - cols = row.xpath('./td') - if not cols: - continue - cols = [c.text_content().strip() for c in cols] - - depth = float(cols[11].replace('-', '0').replace(',', '')) - articles = int(cols[4].replace(',', '').replace(',', '')) - - eng_tag = cols[3] - wiki_url = row.xpath('./td[4]/a/@href')[0] - wiki_url = urllib.parse.urlparse(wiki_url) - - try: - sxng_tag = locales.language_tag(babel.Locale.parse(lang_map.get(eng_tag, eng_tag), sep='-')) - except babel.UnknownLocaleError: - # print("ERROR: %s [%s] is unknown by babel" % (cols[0], eng_tag)) - continue - finally: - engine_traits.custom['WIKIPEDIA_LANGUAGES'].append(eng_tag) - - if sxng_tag not in locales.LOCALE_NAMES: - - if articles < 10000: - # exclude languages with too few articles - continue - - if int(depth) < 20: - # Rough indicator of a Wikipedia’s quality, showing how - # frequently its articles are updated. - continue - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - - engine_traits.languages[sxng_tag] = eng_tag - engine_traits.custom['wiki_netloc'][eng_tag] = wiki_url.netloc - - engine_traits.custom['WIKIPEDIA_LANGUAGES'].sort() diff --git a/searx/engines/wolframalpha_api.py b/searx/engines/wolframalpha_api.py deleted file mode 100644 index 6a2423b51..000000000 --- a/searx/engines/wolframalpha_api.py +++ /dev/null @@ -1,140 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Wolfram|Alpha (Science) -""" - -from lxml import etree -from urllib.parse import urlencode - -# about -about = { - "website": 'https://www.wolframalpha.com', - "wikidata_id": 'Q207006', - "official_api_documentation": 'https://products.wolframalpha.com/api/', - "use_official_api": True, - "require_api_key": False, - "results": 'XML', -} - -# search-url -search_url = 'https://api.wolframalpha.com/v2/query?appid={api_key}&{query}' -site_url = 'https://www.wolframalpha.com/input/?{query}' -api_key = '' # defined in settings.yml - -# xpath variables -failure_xpath = '/queryresult[attribute::success="false"]' -input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext' -pods_xpath = '//pod' -subpods_xpath = './subpod' -pod_primary_xpath = './@primary' -pod_id_xpath = './@id' -pod_title_xpath = './@title' -plaintext_xpath = './plaintext' -image_xpath = './img' -img_src_xpath = './@src' -img_alt_xpath = './@alt' - -# pods to display as image in infobox -# this pods do return a plaintext, but they look better and are more useful as images -image_pods = {'VisualRepresentation', 'Illustration'} - - -# do search-request -def request(query, params): - params['url'] = search_url.format(query=urlencode({'input': query}), api_key=api_key) - params['headers']['Referer'] = site_url.format(query=urlencode({'i': query})) - - return params - - -# replace private user area characters to make text legible -def replace_pua_chars(text): - pua_chars = { - '\uf522': '\u2192', # right arrow - '\uf7b1': '\u2115', # set of natural numbers - '\uf7b4': '\u211a', # set of rational numbers - '\uf7b5': '\u211d', # set of real numbers - '\uf7bd': '\u2124', # set of integer numbers - '\uf74c': 'd', # differential - '\uf74d': '\u212f', # euler's number - '\uf74e': 'i', # imaginary number - '\uf7d9': '=', - } # equals sign - - for k, v in pua_chars.items(): - text = text.replace(k, v) - - return text - - -# get response from search-request -def response(resp): - results = [] - - search_results = etree.XML(resp.content) - - # return empty array if there are no results - if search_results.xpath(failure_xpath): - return [] - - try: - infobox_title = search_results.xpath(input_xpath)[0].text - except: - infobox_title = "" - - pods = search_results.xpath(pods_xpath) - result_chunks = [] - result_content = "" - for pod in pods: - pod_id = pod.xpath(pod_id_xpath)[0] - pod_title = pod.xpath(pod_title_xpath)[0] - pod_is_result = pod.xpath(pod_primary_xpath) - - subpods = pod.xpath(subpods_xpath) - if not subpods: - continue - - # Appends either a text or an image, depending on which one is more suitable - for subpod in subpods: - content = subpod.xpath(plaintext_xpath)[0].text - image = subpod.xpath(image_xpath) - - if content and pod_id not in image_pods: - - if pod_is_result or not result_content: - if pod_id != "Input": - result_content = "%s: %s" % (pod_title, content) - - # if no input pod was found, title is first plaintext pod - if not infobox_title: - infobox_title = content - - content = replace_pua_chars(content) - result_chunks.append({'label': pod_title, 'value': content}) - - elif image: - result_chunks.append( - { - 'label': pod_title, - 'image': {'src': image[0].xpath(img_src_xpath)[0], 'alt': image[0].xpath(img_alt_xpath)[0]}, - } - ) - - if not result_chunks: - return [] - - title = "Wolfram Alpha (%s)" % infobox_title - - # append infobox - results.append( - { - 'infobox': infobox_title, - 'attributes': result_chunks, - 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer']}], - } - ) - - # append link to site - results.append({'url': resp.request.headers['Referer'], 'title': title, 'content': result_content}) - - return results diff --git a/searx/engines/wolframalpha_noapi.py b/searx/engines/wolframalpha_noapi.py deleted file mode 100644 index bad25602a..000000000 --- a/searx/engines/wolframalpha_noapi.py +++ /dev/null @@ -1,133 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Wolfram|Alpha (Science) -""" - -from json import loads -from time import time -from urllib.parse import urlencode - -from searx.network import get as http_get - -# about -about = { - "website": 'https://www.wolframalpha.com/', - "wikidata_id": 'Q207006', - "official_api_documentation": 'https://products.wolframalpha.com/api/', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} - -# search-url -url = 'https://www.wolframalpha.com/' - -search_url = ( - url + 'input/json.jsp' - '?async=false' - '&banners=raw' - '&debuggingdata=false' - '&format=image,plaintext,imagemap,minput,moutput' - '&formattimeout=2' - '&{query}' - '&output=JSON' - '&parsetimeout=2' - '&proxycode={token}' - '&scantimeout=0.5' - '&sponsorcategories=true' - '&statemethod=deploybutton' -) - -referer_url = url + 'input/?{query}' - -token = {'value': '', 'last_updated': None} - -# pods to display as image in infobox -# this pods do return a plaintext, but they look better and are more useful as images -image_pods = {'VisualRepresentation', 'Illustration', 'Symbol'} - - -# seems, wolframalpha resets its token in every hour -def obtain_token(): - update_time = time() - (time() % 3600) - try: - token_response = http_get('https://www.wolframalpha.com/input/api/v1/code?ts=9999999999999999999', timeout=2.0) - token['value'] = loads(token_response.text)['code'] - token['last_updated'] = update_time - except: - pass - return token - - -def init(engine_settings=None): - obtain_token() - - -# do search-request -def request(query, params): - # obtain token if last update was more than an hour - if time() - (token['last_updated'] or 0) > 3600: - obtain_token() - params['url'] = search_url.format(query=urlencode({'input': query}), token=token['value']) - params['headers']['Referer'] = referer_url.format(query=urlencode({'i': query})) - - return params - - -# get response from search-request -def response(resp): - results = [] - - resp_json = loads(resp.text) - - if not resp_json['queryresult']['success']: - return [] - - # TODO handle resp_json['queryresult']['assumptions'] - result_chunks = [] - infobox_title = "" - result_content = "" - for pod in resp_json['queryresult']['pods']: - pod_id = pod.get('id', '') - pod_title = pod.get('title', '') - pod_is_result = pod.get('primary', None) - - if 'subpods' not in pod: - continue - - if pod_id == 'Input' or not infobox_title: - infobox_title = pod['subpods'][0]['plaintext'] - - for subpod in pod['subpods']: - if subpod['plaintext'] != '' and pod_id not in image_pods: - # append unless it's not an actual answer - if subpod['plaintext'] != '(requires interactivity)': - result_chunks.append({'label': pod_title, 'value': subpod['plaintext']}) - - if pod_is_result or not result_content: - if pod_id != "Input": - result_content = pod_title + ': ' + subpod['plaintext'] - - elif 'img' in subpod: - result_chunks.append({'label': pod_title, 'image': subpod['img']}) - - if not result_chunks: - return [] - - results.append( - { - 'infobox': infobox_title, - 'attributes': result_chunks, - 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer']}], - } - ) - - results.append( - { - 'url': resp.request.headers['Referer'], - 'title': 'Wolfram|Alpha (' + infobox_title + ')', - 'content': result_content, - } - ) - - return results diff --git a/searx/engines/wordnik.py b/searx/engines/wordnik.py deleted file mode 100644 index 21eaeccc3..000000000 --- a/searx/engines/wordnik.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -"""Wordnik (general) - -""" - -from lxml.html import fromstring -from searx.utils import extract_text -from searx.network import raise_for_httperror - -# about -about = { - "website": 'https://www.wordnik.com', - "wikidata_id": 'Q8034401', - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -categories = ['general'] -paging = False - -URL = 'https://www.wordnik.com' -SEARCH_URL = URL + '/words/{query}' - - -def request(query, params): - params['url'] = SEARCH_URL.format(query=query) - logger.debug(f"query_url --> {params['url']}") - return params - - -def response(resp): - results = [] - - raise_for_httperror(resp) - dom = fromstring(resp.text) - word = extract_text(dom.xpath('//*[@id="headword"]/text()')) - - definitions = [] - for src in dom.xpath('//*[@id="define"]//h3[@class="source"]'): - src_text = extract_text(src).strip() - if src_text.startswith('from '): - src_text = src_text[5:] - - src_defs = [] - for def_item in src.xpath('following-sibling::ul[1]/li'): - def_abbr = extract_text(def_item.xpath('.//abbr')).strip() - def_text = extract_text(def_item).strip() - if def_abbr: - def_text = def_text[len(def_abbr) :].strip() - src_defs.append((def_abbr, def_text)) - - definitions.append((src_text, src_defs)) - - if not definitions: - return results - - infobox = '' - for src_text, src_defs in definitions: - infobox += f"{src_text}" - infobox += "
    " - for def_abbr, def_text in src_defs: - if def_abbr: - def_abbr += ": " - infobox += f"
  • {def_abbr} {def_text}
  • " - infobox += "
" - - results.append( - { - 'infobox': word, - 'content': infobox, - } - ) - - return results diff --git a/searx/engines/wttr.py b/searx/engines/wttr.py deleted file mode 100644 index 2eaee62ae..000000000 --- a/searx/engines/wttr.py +++ /dev/null @@ -1,136 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""wttr.in (weather forecast service)""" - -from json import loads -from urllib.parse import quote -from flask_babel import gettext - -about = { - "website": "https://wttr.in", - "wikidata_id": "Q107586666", - "official_api_documentation": "https://github.com/chubin/wttr.in#json-output", - "use_official_api": True, - "require_api_key": False, - "results": "JSON", -} - -categories = ["weather"] - -url = "https://wttr.in/{query}?format=j1&lang={lang}" - - -def get_weather_condition_key(lang): - if lang == "en": - return "weatherDesc" - - return "lang_" + lang.lower() - - -def generate_day_table(day): - res = "" - - res += f"{gettext('Average temp.')}{day['avgtempC']}°C / {day['avgtempF']}°F" - res += f"{gettext('Min temp.')}{day['mintempC']}°C / {day['mintempF']}°F" - res += f"{gettext('Max temp.')}{day['maxtempC']}°C / {day['maxtempF']}°F" - res += f"{gettext('UV index')}{day['uvIndex']}" - res += f"{gettext('Sunrise')}{day['astronomy'][0]['sunrise']}" - res += f"{gettext('Sunset')}{day['astronomy'][0]['sunset']}" - - return res - - -def generate_condition_table(condition, lang, current=False): - res = "" - - if current: - key = "temp_" - else: - key = "temp" - - res += ( - f"{gettext('Condition')}" - f"{condition[get_weather_condition_key(lang)][0]['value']}" - ) - res += ( - f"{gettext('Temperature')}" - f"{condition[key+'C']}°C / {condition[key+'F']}°F" - ) - res += ( - f"{gettext('Feels like')}{condition['FeelsLikeC']}°C / {condition['FeelsLikeF']}°F" - ) - res += ( - f"{gettext('Wind')}{condition['winddir16Point']} — " - f"{condition['windspeedKmph']} km/h / {condition['windspeedMiles']} mph" - ) - res += ( - f"{gettext('Visibility')}{condition['visibility']} km / {condition['visibilityMiles']} mi" - ) - res += f"{gettext('Humidity')}{condition['humidity']}%" - - return res - - -def request(query, params): - if query.replace('/', '') in [":help", ":bash.function", ":translation"]: - return None - - if params["language"] == "all": - params["language"] = "en" - else: - params["language"] = params["language"].split("-")[0] - - params["url"] = url.format(query=quote(query), lang=params["language"]) - - params["raise_for_httperror"] = False - - return params - - -def response(resp): - results = [] - - if resp.status_code == 404: - return [] - - result = loads(resp.text) - - current = result["current_condition"][0] - location = result['nearest_area'][0] - - forecast_indices = {3: gettext('Morning'), 4: gettext('Noon'), 6: gettext('Evening'), 7: gettext('Night')} - - title = f"{location['areaName'][0]['value']}, {location['region'][0]['value']}" - - infobox = f"

{gettext('Current condition')}

" - - infobox += generate_condition_table(current, resp.search_params['language'], True) - - infobox += "
" - - for day in result["weather"]: - infobox += f"

{day['date']}

" - - infobox += "" - - infobox += generate_day_table(day) - - infobox += "
" - - infobox += "" - - for time in forecast_indices.items(): - infobox += f"" - - infobox += generate_condition_table(day['hourly'][time[0]], resp.search_params['language']) - - infobox += "
{time[1]}
" - - results.append( - { - "infobox": title, - "content": infobox, - } - ) - - return results diff --git a/searx/engines/www1x.py b/searx/engines/www1x.py deleted file mode 100644 index a7ec06f18..000000000 --- a/searx/engines/www1x.py +++ /dev/null @@ -1,64 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""1x (Images) - -""" - -from urllib.parse import urlencode, urljoin -from lxml import html, etree - -from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex - -# about -about = { - "website": 'https://1x.com/', - "wikidata_id": None, - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['images'] -paging = False - -# search-url -base_url = 'https://1x.com' -search_url = base_url + '/backend/search.php?{query}' -gallery_url = 'https://gallery.1x.com/' - - -# do search-request -def request(query, params): - params['url'] = search_url.format(query=urlencode({'q': query})) - - return params - - -# get response from search-request -def response(resp): - results = [] - xmldom = etree.fromstring(resp.content) - xmlsearchresult = eval_xpath_getindex(xmldom, '//data', 0) - dom = html.fragment_fromstring(xmlsearchresult.text, create_parent='div') - for link in eval_xpath_list(dom, '//a'): - url = urljoin(base_url, link.attrib.get('href')) - title = extract_text(link) - thumbnail_src = urljoin( - gallery_url, (eval_xpath_getindex(link, './/img', 0).attrib['src']).replace(base_url, '') - ) - # append result - results.append( - { - 'url': url, - 'title': title, - 'img_src': thumbnail_src, - 'content': '', - 'thumbnail_src': thumbnail_src, - 'template': 'images.html', - } - ) - - # return results - return results diff --git a/searx/engines/xpath.py b/searx/engines/xpath.py deleted file mode 100644 index 442e90595..000000000 --- a/searx/engines/xpath.py +++ /dev/null @@ -1,311 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""The XPath engine is a *generic* engine with which it is possible to configure -engines in the settings. - -.. _XPath selector: https://quickref.me/xpath.html#xpath-selectors - -Configuration -============= - -Request: - -- :py:obj:`search_url` -- :py:obj:`lang_all` -- :py:obj:`soft_max_redirects` -- :py:obj:`cookies` -- :py:obj:`headers` - -Paging: - -- :py:obj:`paging` -- :py:obj:`page_size` -- :py:obj:`first_page_num` - -Time Range: - -- :py:obj:`time_range_support` -- :py:obj:`time_range_url` -- :py:obj:`time_range_map` - -Safe-Search: - -- :py:obj:`safe_search_support` -- :py:obj:`safe_search_map` - -Response: - -- :py:obj:`no_result_for_http_status` - -`XPath selector`_: - -- :py:obj:`results_xpath` -- :py:obj:`url_xpath` -- :py:obj:`title_xpath` -- :py:obj:`content_xpath` -- :py:obj:`thumbnail_xpath` -- :py:obj:`suggestion_xpath` - - -Example -======= - -Here is a simple example of a XPath engine configured in the :ref:`settings -engine` section, further read :ref:`engines-dev`. - -.. code:: yaml - - - name : bitbucket - engine : xpath - paging : True - search_url : https://bitbucket.org/repo/all/{pageno}?name={query} - url_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]/@href - title_xpath : //article[@class="repo-summary"]//a[@class="repo-link"] - content_xpath : //article[@class="repo-summary"]/p - -Implementations -=============== - -""" - -from urllib.parse import urlencode - -from lxml import html -from searx.utils import extract_text, extract_url, eval_xpath, eval_xpath_list -from searx.network import raise_for_httperror - -search_url = None -""" -Search URL of the engine. Example:: - - https://example.org/?search={query}&page={pageno}{time_range}{safe_search} - -Replacements are: - -``{query}``: - Search terms from user. - -``{pageno}``: - Page number if engine supports paging :py:obj:`paging` - -``{lang}``: - ISO 639-1 language code (en, de, fr ..) - -``{time_range}``: - :py:obj:`URL parameter ` if engine :py:obj:`supports time - range `. The value for the parameter is taken from - :py:obj:`time_range_map`. - -``{safe_search}``: - Safe-search :py:obj:`URL parameter ` if engine - :py:obj:`supports safe-search `. The ``{safe_search}`` - replacement is taken from the :py:obj:`safes_search_map`. Filter results:: - - 0: none, 1: moderate, 2:strict - - If not supported, the URL parameter is an empty string. - -""" - -lang_all = 'en' -'''Replacement ``{lang}`` in :py:obj:`search_url` if language ``all`` is -selected. -''' - -no_result_for_http_status = [] -'''Return empty result for these HTTP status codes instead of throwing an error. - -.. code:: yaml - - no_result_for_http_status: [] -''' - -soft_max_redirects = 0 -'''Maximum redirects, soft limit. Record an error but don't stop the engine''' - -results_xpath = '' -'''`XPath selector`_ for the list of result items''' - -url_xpath = None -'''`XPath selector`_ of result's ``url``.''' - -content_xpath = None -'''`XPath selector`_ of result's ``content``.''' - -title_xpath = None -'''`XPath selector`_ of result's ``title``.''' - -thumbnail_xpath = False -'''`XPath selector`_ of result's ``img_src``.''' - -suggestion_xpath = '' -'''`XPath selector`_ of result's ``suggestion``.''' - -cached_xpath = '' -cached_url = '' - -cookies = {} -'''Some engines might offer different result based on cookies. -Possible use-case: To set safesearch cookie.''' - -headers = {} -'''Some engines might offer different result based headers. Possible use-case: -To set header to moderate.''' - -paging = False -'''Engine supports paging [True or False].''' - -page_size = 1 -'''Number of results on each page. Only needed if the site requires not a page -number, but an offset.''' - -first_page_num = 1 -'''Number of the first page (usually 0 or 1).''' - -time_range_support = False -'''Engine supports search time range.''' - -time_range_url = '&hours={time_range_val}' -'''Time range URL parameter in the in :py:obj:`search_url`. If no time range is -requested by the user, the URL parameter is an empty string. The -``{time_range_val}`` replacement is taken from the :py:obj:`time_range_map`. - -.. code:: yaml - - time_range_url : '&days={time_range_val}' -''' - -time_range_map = { - 'day': 24, - 'week': 24 * 7, - 'month': 24 * 30, - 'year': 24 * 365, -} -'''Maps time range value from user to ``{time_range_val}`` in -:py:obj:`time_range_url`. - -.. code:: yaml - - time_range_map: - day: 1 - week: 7 - month: 30 - year: 365 -''' - -safe_search_support = False -'''Engine supports safe-search.''' - -safe_search_map = {0: '&filter=none', 1: '&filter=moderate', 2: '&filter=strict'} -'''Maps safe-search value to ``{safe_search}`` in :py:obj:`search_url`. - -.. code:: yaml - - safesearch: true - safes_search_map: - 0: '&filter=none' - 1: '&filter=moderate' - 2: '&filter=strict' - -''' - - -def request(query, params): - '''Build request parameters (see :ref:`engine request`).''' - lang = lang_all - if params['language'] != 'all': - lang = params['language'][:2] - - time_range = '' - if params.get('time_range'): - time_range_val = time_range_map.get(params.get('time_range')) - time_range = time_range_url.format(time_range_val=time_range_val) - - safe_search = '' - if params['safesearch']: - safe_search = safe_search_map[params['safesearch']] - - fargs = { - 'query': urlencode({'q': query})[2:], - 'lang': lang, - 'pageno': (params['pageno'] - 1) * page_size + first_page_num, - 'time_range': time_range, - 'safe_search': safe_search, - } - - params['cookies'].update(cookies) - params['headers'].update(headers) - - params['url'] = search_url.format(**fargs) - params['soft_max_redirects'] = soft_max_redirects - - params['raise_for_httperror'] = False - - return params - - -def response(resp): # pylint: disable=too-many-branches - '''Scrap *results* from the response (see :ref:`engine results`).''' - if no_result_for_http_status and resp.status_code in no_result_for_http_status: - return [] - - raise_for_httperror(resp) - - results = [] - dom = html.fromstring(resp.text) - is_onion = 'onions' in categories - - if results_xpath: - for result in eval_xpath_list(dom, results_xpath): - - url = extract_url(eval_xpath_list(result, url_xpath, min_len=1), search_url) - title = extract_text(eval_xpath_list(result, title_xpath, min_len=1)) - content = extract_text(eval_xpath_list(result, content_xpath)) - tmp_result = {'url': url, 'title': title, 'content': content} - - # add thumbnail if available - if thumbnail_xpath: - thumbnail_xpath_result = eval_xpath_list(result, thumbnail_xpath) - if len(thumbnail_xpath_result) > 0: - tmp_result['img_src'] = extract_url(thumbnail_xpath_result, search_url) - - # add alternative cached url if available - if cached_xpath: - tmp_result['cached_url'] = cached_url + extract_text(eval_xpath_list(result, cached_xpath, min_len=1)) - - if is_onion: - tmp_result['is_onion'] = True - - results.append(tmp_result) - - else: - if cached_xpath: - for url, title, content, cached in zip( - (extract_url(x, search_url) for x in eval_xpath_list(dom, url_xpath)), - map(extract_text, eval_xpath_list(dom, title_xpath)), - map(extract_text, eval_xpath_list(dom, content_xpath)), - map(extract_text, eval_xpath_list(dom, cached_xpath)), - ): - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'cached_url': cached_url + cached, - 'is_onion': is_onion, - } - ) - else: - for url, title, content in zip( - (extract_url(x, search_url) for x in eval_xpath_list(dom, url_xpath)), - map(extract_text, eval_xpath_list(dom, title_xpath)), - map(extract_text, eval_xpath_list(dom, content_xpath)), - ): - results.append({'url': url, 'title': title, 'content': content, 'is_onion': is_onion}) - - if suggestion_xpath: - for suggestion in eval_xpath(dom, suggestion_xpath): - results.append({'suggestion': extract_text(suggestion)}) - - logger.debug("found %s results", len(results)) - return results diff --git a/searx/engines/yacy.py b/searx/engines/yacy.py deleted file mode 100644 index 50c7886c0..000000000 --- a/searx/engines/yacy.py +++ /dev/null @@ -1,187 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""YaCy_ is a free distributed search engine, built on the principles of -peer-to-peer (P2P) networks. - -API: Dev:APIyacysearch_ - -Releases: - -- https://github.com/yacy/yacy_search_server/tags -- https://download.yacy.net/ - -.. _Yacy: https://yacy.net/ -.. _Dev:APIyacysearch: https://wiki.yacy.net/index.php/Dev:APIyacysearch - -Configuration -============= - -The engine has the following (additional) settings: - -- :py:obj:`http_digest_auth_user` -- :py:obj:`http_digest_auth_pass` -- :py:obj:`search_mode` -- :py:obj:`search_type` - -.. code:: yaml - - - name: yacy - engine: yacy - categories: general - search_type: text - base_url: https://yacy.searchlab.eu - shortcut: ya - - - name: yacy images - engine: yacy - categories: images - search_type: image - base_url: https://yacy.searchlab.eu - shortcut: yai - disabled: true - - -Implementations -=============== -""" -# pylint: disable=fixme - -from json import loads -from urllib.parse import urlencode -from dateutil import parser - -from httpx import DigestAuth - -from searx.utils import html_to_text - -# about -about = { - "website": 'https://yacy.net/', - "wikidata_id": 'Q1759675', - "official_api_documentation": 'https://wiki.yacy.net/index.php/Dev:API', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['general'] -paging = True -number_of_results = 10 -http_digest_auth_user = "" -"""HTTP digest user for the local YACY instance""" -http_digest_auth_pass = "" -"""HTTP digest password for the local YACY instance""" - -search_mode = 'global' -"""Yacy search mode ``global`` or ``local``. By default, Yacy operates in ``global`` -mode. - -``global`` - Peer-to-Peer search - -``local`` - Privacy or Stealth mode, restricts the search to local yacy instance. -""" -search_type = 'text' -"""One of ``text``, ``image`` / The search-types ``app``, ``audio`` and -``video`` are not yet implemented (Pull-Requests are welcome). -""" - -# search-url -base_url = 'https://yacy.searchlab.eu' -search_url = ( - '/yacysearch.json?{query}' - '&startRecord={offset}' - '&maximumRecords={limit}' - '&contentdom={search_type}' - '&resource={resource}' -) - - -def init(_): - valid_types = [ - 'text', - 'image', - # 'app', 'audio', 'video', - ] - if search_type not in valid_types: - raise ValueError('search_type "%s" is not one of %s' % (search_type, valid_types)) - - -def request(query, params): - offset = (params['pageno'] - 1) * number_of_results - - params['url'] = base_url + search_url.format( - query=urlencode({'query': query}), - offset=offset, - limit=number_of_results, - search_type=search_type, - resource=search_mode, - ) - - if http_digest_auth_user and http_digest_auth_pass: - params['auth'] = DigestAuth(http_digest_auth_user, http_digest_auth_pass) - - # add language tag if specified - if params['language'] != 'all': - params['url'] += '&lr=lang_' + params['language'].split('-')[0] - - return params - - -def response(resp): - results = [] - - raw_search_results = loads(resp.text) - - # return empty array if there are no results - if not raw_search_results: - return [] - - search_results = raw_search_results.get('channels', []) - - if len(search_results) == 0: - return [] - - for result in search_results[0].get('items', []): - # parse image results - if search_type == 'image': - result_url = '' - if 'url' in result: - result_url = result['url'] - elif 'link' in result: - result_url = result['link'] - else: - continue - - # append result - results.append( - { - 'url': result_url, - 'title': result['title'], - 'content': '', - 'img_src': result['image'], - 'template': 'images.html', - } - ) - - # parse general results - else: - publishedDate = None - if 'pubDate' in result: - publishedDate = parser.parse(result['pubDate']) - - # append result - results.append( - { - 'url': result['link'] or '', - 'title': result['title'], - 'content': html_to_text(result['description']), - 'publishedDate': publishedDate, - } - ) - - # TODO parse video, audio and file results - - return results diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py deleted file mode 100644 index 53dc6f806..000000000 --- a/searx/engines/yahoo.py +++ /dev/null @@ -1,183 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Yahoo Search (Web) - -Languages are supported by mapping the language to a domain. If domain is not -found in :py:obj:`lang2domain` URL ``.search.yahoo.com`` is used. - -""" - -from urllib.parse import ( - unquote, - urlencode, -) -from lxml import html - -from searx.utils import ( - eval_xpath_getindex, - eval_xpath_list, - extract_text, -) -from searx.enginelib.traits import EngineTraits - -traits: EngineTraits - -# about -about = { - "website": 'https://search.yahoo.com/', - "wikidata_id": None, - "official_api_documentation": 'https://developer.yahoo.com/api/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['general', 'web'] -paging = True -time_range_support = True -# send_accept_language_header = True - -time_range_dict = { - 'day': ('1d', 'd'), - 'week': ('1w', 'w'), - 'month': ('1m', 'm'), -} - -lang2domain = { - 'zh_chs': 'hk.search.yahoo.com', - 'zh_cht': 'tw.search.yahoo.com', - 'any': 'search.yahoo.com', - 'en': 'search.yahoo.com', - 'bg': 'search.yahoo.com', - 'cs': 'search.yahoo.com', - 'da': 'search.yahoo.com', - 'el': 'search.yahoo.com', - 'et': 'search.yahoo.com', - 'he': 'search.yahoo.com', - 'hr': 'search.yahoo.com', - 'ja': 'search.yahoo.com', - 'ko': 'search.yahoo.com', - 'sk': 'search.yahoo.com', - 'sl': 'search.yahoo.com', -} -"""Map language to domain""" - -locale_aliases = { - 'zh': 'zh_Hans', - 'zh-HK': 'zh_Hans', - 'zh-CN': 'zh_Hans', # dead since 2015 / routed to hk.search.yahoo.com - 'zh-TW': 'zh_Hant', -} - - -def request(query, params): - """build request""" - - lang = locale_aliases.get(params['language'], None) - if not lang: - lang = params['language'].split('-')[0] - lang = traits.get_language(lang, traits.all_locale) - - offset = (params['pageno'] - 1) * 7 + 1 - age, btf = time_range_dict.get(params['time_range'], ('', '')) - - args = urlencode( - { - 'p': query, - 'ei': 'UTF-8', - 'fl': 1, - 'vl': 'lang_' + lang, - 'btf': btf, - 'fr2': 'time', - 'age': age, - 'b': offset, - 'xargs': 0, - } - ) - - domain = lang2domain.get(lang, '%s.search.yahoo.com' % lang) - params['url'] = 'https://%s/search?%s' % (domain, args) - return params - - -def parse_url(url_string): - """remove yahoo-specific tracking-url""" - - endings = ['/RS', '/RK'] - endpositions = [] - start = url_string.find('http', url_string.find('/RU=') + 1) - - for ending in endings: - endpos = url_string.rfind(ending) - if endpos > -1: - endpositions.append(endpos) - - if start == 0 or len(endpositions) == 0: - return url_string - - end = min(endpositions) - return unquote(url_string[start:end]) - - -def response(resp): - """parse response""" - - results = [] - dom = html.fromstring(resp.text) - - # parse results - for result in eval_xpath_list(dom, '//div[contains(@class,"algo-sr")]'): - url = eval_xpath_getindex(result, './/h3/a/@href', 0, default=None) - if url is None: - continue - url = parse_url(url) - - title = extract_text(result.xpath('.//h3//a/@aria-label')) - content = eval_xpath_getindex(result, './/div[contains(@class, "compText")]', 0, default='') - content = extract_text(content, allow_none=True) - - # append result - results.append({'url': url, 'title': title, 'content': content}) - - for suggestion in eval_xpath_list(dom, '//div[contains(@class, "AlsoTry")]//table//a'): - # append suggestion - results.append({'suggestion': extract_text(suggestion)}) - - return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages from yahoo""" - - # pylint: disable=import-outside-toplevel - import babel - from searx import network - from searx.locales import language_tag - - engine_traits.all_locale = 'any' - - resp = network.get('https://search.yahoo.com/preferences/languages') - if not resp.ok: - print("ERROR: response from yahoo is not OK.") - - dom = html.fromstring(resp.text) - offset = len('lang_') - - eng2sxng = {'zh_chs': 'zh_Hans', 'zh_cht': 'zh_Hant'} - - for val in eval_xpath_list(dom, '//div[contains(@class, "lang-item")]/input/@value'): - eng_tag = val[offset:] - - try: - sxng_tag = language_tag(babel.Locale.parse(eng2sxng.get(eng_tag, eng_tag))) - except babel.UnknownLocaleError: - print('ERROR: unknown language --> %s' % eng_tag) - continue - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.languages[sxng_tag] = eng_tag diff --git a/searx/engines/yahoo_news.py b/searx/engines/yahoo_news.py deleted file mode 100644 index 00f208b17..000000000 --- a/searx/engines/yahoo_news.py +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Yahoo (News) - -Yahoo News is "English only" and do not offer localized nor language queries. - -""" - -# pylint: disable=invalid-name - -import re -from urllib.parse import urlencode -from datetime import datetime, timedelta -from dateutil import parser -from lxml import html - -from searx.utils import ( - eval_xpath_list, - eval_xpath_getindex, - extract_text, -) - -from searx.engines.yahoo import parse_url - -# about -about = { - "website": 'https://news.yahoo.com', - "wikidata_id": 'Q3044717', - "official_api_documentation": 'https://developer.yahoo.com/api/', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -language_support = False -time_range_support = False -safesearch = False -paging = True -categories = ['news'] - -# search-url -search_url = ( - # fmt: off - 'https://news.search.yahoo.com/search' - '?{query}&b={offset}' - # fmt: on -) - -AGO_RE = re.compile(r'([0-9]+)\s*(year|month|week|day|minute|hour)') -AGO_TIMEDELTA = { - 'minute': timedelta(minutes=1), - 'hour': timedelta(hours=1), - 'day': timedelta(days=1), - 'week': timedelta(days=7), - 'month': timedelta(days=30), - 'year': timedelta(days=365), -} - - -def request(query, params): - offset = (params['pageno'] - 1) * 10 + 1 - - params['url'] = search_url.format(offset=offset, query=urlencode({'p': query})) - logger.debug("query_url --> %s", params['url']) - return params - - -def response(resp): - results = [] - dom = html.fromstring(resp.text) - - # parse results - for result in eval_xpath_list(dom, '//ol[contains(@class,"searchCenterMiddle")]//li'): - - url = eval_xpath_getindex(result, './/h4/a/@href', 0, None) - if url is None: - continue - url = parse_url(url) - title = extract_text(result.xpath('.//h4/a')) - content = extract_text(result.xpath('.//p')) - img_src = eval_xpath_getindex(result, './/img/@data-src', 0, None) - - item = {'url': url, 'title': title, 'content': content, 'img_src': img_src} - - pub_date = extract_text(result.xpath('.//span[contains(@class,"s-time")]')) - ago = AGO_RE.search(pub_date) - if ago: - number = int(ago.group(1)) - delta = AGO_TIMEDELTA[ago.group(2)] - pub_date = datetime.now() - delta * number - else: - try: - pub_date = parser.parse(pub_date) - except parser.ParserError: - pub_date = None - - if pub_date is not None: - item['publishedDate'] = pub_date - results.append(item) - - for suggestion in eval_xpath_list(dom, '//div[contains(@class,"AlsoTry")]//td'): - results.append({'suggestion': extract_text(suggestion)}) - - return results diff --git a/searx/engines/youtube_api.py b/searx/engines/youtube_api.py deleted file mode 100644 index 1b332a9f7..000000000 --- a/searx/engines/youtube_api.py +++ /dev/null @@ -1,87 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Youtube (Videos) -""" - -from json import loads -from dateutil import parser -from urllib.parse import urlencode -from searx.exceptions import SearxEngineAPIException - -# about -about = { - "website": 'https://www.youtube.com/', - "wikidata_id": 'Q866', - "official_api_documentation": 'https://developers.google.com/youtube/v3/docs/search/list?apix=true', - "use_official_api": True, - "require_api_key": False, - "results": 'JSON', -} - -# engine dependent config -categories = ['videos', 'music'] -paging = False -api_key = None - -# search-url -base_url = 'https://www.googleapis.com/youtube/v3/search' -search_url = base_url + '?part=snippet&{query}&maxResults=20&key={api_key}' -base_youtube_url = 'https://www.youtube.com/watch?v=' - - -# do search-request -def request(query, params): - params['url'] = search_url.format(query=urlencode({'q': query}), api_key=api_key) - - # add language tag if specified - if params['language'] != 'all': - params['url'] += '&relevanceLanguage=' + params['language'].split('-')[0] - - return params - - -# get response from search-request -def response(resp): - results = [] - - search_results = loads(resp.text) - - if 'error' in search_results and 'message' in search_results['error']: - raise SearxEngineAPIException(search_results['error']['message']) - - # return empty array if there are no results - if 'items' not in search_results: - return [] - - # parse results - for result in search_results['items']: - videoid = result['id']['videoId'] - - title = result['snippet']['title'] - content = '' - thumbnail = '' - - pubdate = result['snippet']['publishedAt'] - publishedDate = parser.parse(pubdate) - - thumbnail = result['snippet']['thumbnails']['high']['url'] - - content = result['snippet']['description'] - - url = base_youtube_url + videoid - - # append result - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'template': 'videos.html', - 'publishedDate': publishedDate, - 'iframe_src': "https://www.youtube-nocookie.com/embed/" + videoid, - 'thumbnail': thumbnail, - } - ) - - # return results - return results diff --git a/searx/engines/youtube_noapi.py b/searx/engines/youtube_noapi.py deleted file mode 100644 index 7992adf82..000000000 --- a/searx/engines/youtube_noapi.py +++ /dev/null @@ -1,171 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" - Youtube (Videos) -""" - -from functools import reduce -from json import loads, dumps -from urllib.parse import quote_plus - -# about -about = { - "website": 'https://www.youtube.com/', - "wikidata_id": 'Q866', - "official_api_documentation": 'https://developers.google.com/youtube/v3/docs/search/list?apix=true', - "use_official_api": False, - "require_api_key": False, - "results": 'HTML', -} - -# engine dependent config -categories = ['videos', 'music'] -paging = True -language_support = False -time_range_support = True - -# search-url -base_url = 'https://www.youtube.com/results' -search_url = base_url + '?search_query={query}&page={page}' -time_range_url = '&sp=EgII{time_range}%253D%253D' -# the key seems to be constant -next_page_url = 'https://www.youtube.com/youtubei/v1/search?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' -time_range_dict = {'day': 'Ag', 'week': 'Aw', 'month': 'BA', 'year': 'BQ'} - -base_youtube_url = 'https://www.youtube.com/watch?v=' - - -# do search-request -def request(query, params): - params['cookies']['CONSENT'] = "YES+" - if not params['engine_data'].get('next_page_token'): - params['url'] = search_url.format(query=quote_plus(query), page=params['pageno']) - if params['time_range'] in time_range_dict: - params['url'] += time_range_url.format(time_range=time_range_dict[params['time_range']]) - else: - params['url'] = next_page_url - params['method'] = 'POST' - params['data'] = dumps( - { - 'context': {"client": {"clientName": "WEB", "clientVersion": "2.20210310.12.01"}}, - 'continuation': params['engine_data']['next_page_token'], - } - ) - params['headers']['Content-Type'] = 'application/json' - - return params - - -# get response from search-request -def response(resp): - if resp.search_params.get('engine_data'): - return parse_next_page_response(resp.text) - return parse_first_page_response(resp.text) - - -def parse_next_page_response(response_text): - results = [] - result_json = loads(response_text) - for section in ( - result_json['onResponseReceivedCommands'][0] - .get('appendContinuationItemsAction')['continuationItems'][0] - .get('itemSectionRenderer')['contents'] - ): - if 'videoRenderer' not in section: - continue - section = section['videoRenderer'] - content = "-" - if 'descriptionSnippet' in section: - content = ' '.join(x['text'] for x in section['descriptionSnippet']['runs']) - results.append( - { - 'url': base_youtube_url + section['videoId'], - 'title': ' '.join(x['text'] for x in section['title']['runs']), - 'content': content, - 'author': section['ownerText']['runs'][0]['text'], - 'length': section['lengthText']['simpleText'], - 'template': 'videos.html', - 'iframe_src': 'https://www.youtube-nocookie.com/embed/' + section['videoId'], - 'thumbnail': section['thumbnail']['thumbnails'][-1]['url'], - } - ) - try: - token = ( - result_json['onResponseReceivedCommands'][0] - .get('appendContinuationItemsAction')['continuationItems'][1] - .get('continuationItemRenderer')['continuationEndpoint'] - .get('continuationCommand')['token'] - ) - results.append( - { - "engine_data": token, - "key": "next_page_token", - } - ) - except: - pass - - return results - - -def parse_first_page_response(response_text): - results = [] - results_data = response_text[response_text.find('ytInitialData') :] - results_data = results_data[results_data.find('{') : results_data.find(';')] - results_json = loads(results_data) if results_data else {} - sections = ( - results_json.get('contents', {}) - .get('twoColumnSearchResultsRenderer', {}) - .get('primaryContents', {}) - .get('sectionListRenderer', {}) - .get('contents', []) - ) - - for section in sections: - if "continuationItemRenderer" in section: - next_page_token = ( - section["continuationItemRenderer"] - .get("continuationEndpoint", {}) - .get("continuationCommand", {}) - .get("token", "") - ) - if next_page_token: - results.append( - { - "engine_data": next_page_token, - "key": "next_page_token", - } - ) - for video_container in section.get('itemSectionRenderer', {}).get('contents', []): - video = video_container.get('videoRenderer', {}) - videoid = video.get('videoId') - if videoid is not None: - url = base_youtube_url + videoid - thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg' - title = get_text_from_json(video.get('title', {})) - content = get_text_from_json(video.get('descriptionSnippet', {})) - author = get_text_from_json(video.get('ownerText', {})) - length = get_text_from_json(video.get('lengthText', {})) - - # append result - results.append( - { - 'url': url, - 'title': title, - 'content': content, - 'author': author, - 'length': length, - 'template': 'videos.html', - 'iframe_src': 'https://www.youtube-nocookie.com/embed/' + videoid, - 'thumbnail': thumbnail, - } - ) - - # return results - return results - - -def get_text_from_json(element): - if 'runs' in element: - return reduce(lambda a, b: a + b.get('text', ''), element.get('runs'), '') - else: - return element.get('simpleText', '') diff --git a/searx/engines/yummly.py b/searx/engines/yummly.py deleted file mode 100644 index 25285ef7c..000000000 --- a/searx/engines/yummly.py +++ /dev/null @@ -1,79 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Yummly -""" - -from urllib.parse import urlencode - -from flask_babel import gettext -from searx.utils import markdown_to_text - -about = { - "website": 'https://yummly.com', - "wikidata_id": 'Q8061140', - # not used since it requires an api key - "official_api_documentation": 'https://developer.yummly.com/documentation.html', - "use_official_api": False, - "require_api_key": False, - "results": 'JSON', -} -paging = True -categories = [] - -api_url = "https://mapi.yummly.com" -number_of_results = 10 -show_pro_recipes = False -base_url = "https://www.yummly.com" - - -def request(query, params): - args = { - 'q': query, - 'start': (params['pageno'] - 1) * number_of_results, - 'maxResult': number_of_results, - } - - params['url'] = f"{api_url}/mapi/v23/content/search?{urlencode(args)}&allowedContent=single_recipe" - - return params - - -def response(resp): - results = [] - - json = resp.json() - - for result in json['feed']: - # don't show pro recipes since they can't be accessed without an account - if not show_pro_recipes and result['proRecipe']: - continue - - content = result['seo']['web']['meta-tags']['description'] - description = result['content']['description'] - if description is not None: - content = markdown_to_text(description['text']) - - img_src = None - if result['display']['images']: - img_src = result['display']['images'][0] - elif result['content']['details']['images']: - img_src = result['content']['details']['images'][0]['resizableImageUrl'] - - url = result['display']['source']['sourceRecipeUrl'] - if 'www.yummly.com/private' in url: - url = base_url + '/' + result['tracking-id'] - - results.append( - { - 'url': url, - 'title': result['display']['displayName'], - 'content': content, - 'img_src': img_src, - 'metadata': f"{gettext('Language')}: {result['locale'].split('-')[0]}", - } - ) - - for suggestion in json['relatedPhrases']['keywords']: - results.append({'suggestion': suggestion}) - - return results diff --git a/searx/engines/zlibrary.py b/searx/engines/zlibrary.py deleted file mode 100644 index 813d52f64..000000000 --- a/searx/engines/zlibrary.py +++ /dev/null @@ -1,221 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""`Z-Library`_ (abbreviated as z-lib, formerly BookFinder) is a shadow library -project for file-sharing access to scholarly journal articles, academic texts -and general-interest books. It began as a mirror of Library Genesis, from which -most of its books originate. - -.. _Z-Library: https://zlibrary-global.se/ - -Configuration -============= - -The engine has the following additional settings: - -- :py:obj:`zlib_year_from` -- :py:obj:`zlib_year_to` -- :py:obj:`zlib_ext` - -With this options a SearXNG maintainer is able to configure **additional** -engines for specific searches in Z-Library. For example a engine to search -only for EPUB from 2010 to 2020. - -.. code:: yaml - - - name: z-library 2010s epub - engine: zlibrary - shortcut: zlib2010s - zlib_year_from: '2010' - zlib_year_to: '2020' - zlib_ext: 'EPUB' - -Implementations -=============== - -""" -from __future__ import annotations -from typing import TYPE_CHECKING -from typing import List, Dict, Any, Optional -from datetime import datetime -from urllib.parse import quote -from lxml import html -from flask_babel import gettext - -from searx.utils import extract_text, eval_xpath, eval_xpath_list -from searx.enginelib.traits import EngineTraits -from searx.data import ENGINE_TRAITS - -if TYPE_CHECKING: - import httpx - import logging - - logger: logging.Logger - -# about -about: Dict[str, Any] = { - "website": "https://zlibrary-global.se", - "wikidata_id": "Q104863992", - "official_api_documentation": None, - "use_official_api": False, - "require_api_key": False, - "results": "HTML", -} - -categories: List[str] = ["files"] -paging: bool = True -base_url: str = "https://zlibrary-global.se" - -zlib_year_from: str = "" -"""Filter z-library's results by year from. E.g '2010'. -""" - -zlib_year_to: str = "" -"""Filter z-library's results by year to. E.g. '2010'. -""" - -zlib_ext: str = "" -"""Filter z-library's results by a file ending. Common filters for example are -``PDF`` and ``EPUB``. -""" - - -def init(engine_settings=None) -> None: # pylint: disable=unused-argument - """Check of engine's settings.""" - traits: EngineTraits = EngineTraits(**ENGINE_TRAITS["z-library"]) - - if zlib_ext and zlib_ext not in traits.custom["ext"]: - raise ValueError(f"invalid setting ext: {zlib_ext}") - if zlib_year_from and zlib_year_from not in traits.custom["year_from"]: - raise ValueError(f"invalid setting year_from: {zlib_year_from}") - if zlib_year_to and zlib_year_to not in traits.custom["year_to"]: - raise ValueError(f"invalid setting year_to: {zlib_year_to}") - - -def request(query: str, params: Dict[str, Any]) -> Dict[str, Any]: - lang: str = traits.get_language(params["language"], traits.all_locale) # type: ignore - search_url: str = ( - base_url - + "/s/{search_query}/?page={pageno}" - + "&yearFrom={zlib_year_from}" - + "&yearTo={zlib_year_to}" - + "&languages[]={lang}" - + "&extensions[]={zlib_ext}" - ) - params["url"] = search_url.format( - search_query=quote(query), - pageno=params["pageno"], - lang=lang, - zlib_year_from=zlib_year_from, - zlib_year_to=zlib_year_to, - zlib_ext=zlib_ext, - ) - return params - - -def response(resp: httpx.Response) -> List[Dict[str, Any]]: - results: List[Dict[str, Any]] = [] - dom = html.fromstring(resp.text) - - for item in dom.xpath('//div[@id="searchResultBox"]//div[contains(@class, "resItemBox")]'): - results.append(_parse_result(item)) - - return results - - -def _text(item, selector: str) -> str | None: - return extract_text(eval_xpath(item, selector)) - - -i18n_language = gettext("Language") -i18n_book_rating = gettext("Book rating") -i18n_file_quality = gettext("File quality") - - -def _parse_result(item) -> Dict[str, Any]: - - author_elements = eval_xpath_list(item, './/div[@class="authors"]//a[@itemprop="author"]') - - result = { - "template": "paper.html", - "url": base_url + item.xpath('(.//a[starts-with(@href, "/book/")])[1]/@href')[0], - "title": _text(item, './/*[@itemprop="name"]'), - "authors": [extract_text(author) for author in author_elements], - "publisher": _text(item, './/a[@title="Publisher"]'), - "type": _text(item, './/div[contains(@class, "property__file")]//div[contains(@class, "property_value")]'), - "img_src": _text(item, './/img[contains(@class, "cover")]/@data-src'), - } - - year = _text(item, './/div[contains(@class, "property_year")]//div[contains(@class, "property_value")]') - if year: - result["publishedDate"] = datetime.strptime(year, '%Y') - - content = [] - language = _text(item, './/div[contains(@class, "property_language")]//div[contains(@class, "property_value")]') - if language: - content.append(f"{i18n_language}: {language.capitalize()}") - book_rating = _text(item, './/span[contains(@class, "book-rating-interest-score")]') - if book_rating and float(book_rating): - content.append(f"{i18n_book_rating}: {book_rating}") - file_quality = _text(item, './/span[contains(@class, "book-rating-quality-score")]') - if file_quality and float(file_quality): - content.append(f"{i18n_file_quality}: {file_quality}") - result["content"] = " | ".join(content) - - return result - - -def fetch_traits(engine_traits: EngineTraits) -> None: - """Fetch languages and other search arguments from zlibrary's search form.""" - # pylint: disable=import-outside-toplevel - - import babel - from searx.network import get # see https://github.com/searxng/searxng/issues/762 - from searx.locales import language_tag - - engine_traits.all_locale = "" - engine_traits.custom["ext"] = [] - engine_traits.custom["year_from"] = [] - engine_traits.custom["year_to"] = [] - - resp = get(base_url) - if not resp.ok: # type: ignore - raise RuntimeError("Response from zlibrary's search page is not OK.") - dom = html.fromstring(resp.text) # type: ignore - - for year in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_yearFrom']/option"): - engine_traits.custom["year_from"].append(year.get("value")) - - for year in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_yearTo']/option"): - engine_traits.custom["year_to"].append(year.get("value")) - - for ext in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_extensions']/option"): - value: Optional[str] = ext.get("value") - if value is None: - value = "" - engine_traits.custom["ext"].append(value) - - # Handle languages - # Z-library uses English names for languages, so we need to map them to their respective locales - language_name_locale_map: Dict[str, babel.Locale] = {} - for locale in babel.core.localedata.locale_identifiers(): # type: ignore - # Create a Locale object for the current locale - loc = babel.Locale.parse(locale) - language_name_locale_map[loc.english_name.lower()] = loc # type: ignore - - for x in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_languages']/option"): - eng_lang = x.get("value") - if eng_lang is None: - continue - try: - locale = language_name_locale_map[eng_lang.lower()] - except KeyError: - # silently ignore unknown languages - # print("ERROR: %s is unknown by babel" % (eng_lang)) - continue - sxng_lang = language_tag(locale) - conflict = engine_traits.languages.get(sxng_lang) - if conflict: - if conflict != eng_lang: - print("CONFLICT: babel %s --> %s, %s" % (sxng_lang, conflict, eng_lang)) - continue - engine_traits.languages[sxng_lang] = eng_lang diff --git a/searx/exceptions.py b/searx/exceptions.py deleted file mode 100644 index ac8eb6314..000000000 --- a/searx/exceptions.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Exception types raised by SearXNG modules. -""" - -from typing import Optional, Union - - -class SearxException(Exception): - """Base SearXNG exception.""" - - -class SearxParameterException(SearxException): - """Raised when query miss a required parameter""" - - def __init__(self, name, value): - if value == '' or value is None: - message = 'Empty ' + name + ' parameter' - else: - message = 'Invalid value "' + value + '" for parameter ' + name - super().__init__(message) - self.message = message - self.parameter_name = name - self.parameter_value = value - - -class SearxSettingsException(SearxException): - """Error while loading the settings""" - - def __init__(self, message: Union[str, Exception], filename: Optional[str]): - super().__init__(message) - self.message = message - self.filename = filename - - -class SearxEngineException(SearxException): - """Error inside an engine""" - - -class SearxXPathSyntaxException(SearxEngineException): - """Syntax error in a XPATH""" - - def __init__(self, xpath_spec, message): - super().__init__(str(xpath_spec) + " " + message) - self.message = message - # str(xpath_spec) to deal with str and XPath instance - self.xpath_str = str(xpath_spec) - - -class SearxEngineResponseException(SearxEngineException): - """Impossible to parse the result of an engine""" - - -class SearxEngineAPIException(SearxEngineResponseException): - """The website has returned an application error""" - - -class SearxEngineAccessDeniedException(SearxEngineResponseException): - """The website is blocking the access""" - - SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineAccessDenied" - """This settings contains the default suspended time (default 86400 sec / 1 - day).""" - - def __init__(self, suspended_time: int = None, message: str = 'Access denied'): - """Generic exception to raise when an engine denies access to the results. - - :param suspended_time: How long the engine is going to be suspended in - second. Defaults to None. - :type suspended_time: int, None - :param message: Internal message. Defaults to ``Access denied`` - :type message: str - """ - suspended_time = suspended_time or self._get_default_suspended_time() - super().__init__(message + ', suspended_time=' + str(suspended_time)) - self.suspended_time = suspended_time - self.message = message - - def _get_default_suspended_time(self): - from searx import get_setting # pylint: disable=C0415 - - return get_setting(self.SUSPEND_TIME_SETTING) - - -class SearxEngineCaptchaException(SearxEngineAccessDeniedException): - """The website has returned a CAPTCHA.""" - - SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineCaptcha" - """This settings contains the default suspended time (default 86400 sec / 1 - day).""" - - def __init__(self, suspended_time=None, message='CAPTCHA'): - super().__init__(message=message, suspended_time=suspended_time) - - -class SearxEngineTooManyRequestsException(SearxEngineAccessDeniedException): - """The website has returned a Too Many Request status code - - By default, searx stops sending requests to this engine for 1 hour. - """ - - SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineTooManyRequests" - """This settings contains the default suspended time (default 3660 sec / 1 - hour).""" - - def __init__(self, suspended_time=None, message='Too many request'): - super().__init__(message=message, suspended_time=suspended_time) - - -class SearxEngineXPathException(SearxEngineResponseException): - """Error while getting the result of an XPath expression""" - - def __init__(self, xpath_spec, message): - super().__init__(str(xpath_spec) + " " + message) - self.message = message - # str(xpath_spec) to deal with str and XPath instance - self.xpath_str = str(xpath_spec) diff --git a/searx/external_bang.py b/searx/external_bang.py deleted file mode 100644 index 0336d880b..000000000 --- a/searx/external_bang.py +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -from urllib.parse import quote_plus, urlparse -from searx.data import EXTERNAL_BANGS - -LEAF_KEY = chr(16) - - -def get_node(external_bangs_db, bang): - node = external_bangs_db['trie'] - after = '' - before = '' - for bang_letter in bang: - after += bang_letter - if after in node and isinstance(node, dict): - node = node[after] - before += after - after = '' - return node, before, after - - -def get_bang_definition_and_ac(external_bangs_db, bang): - node, before, after = get_node(external_bangs_db, bang) - - bang_definition = None - bang_ac_list = [] - if after != '': - for k in node: - if k.startswith(after): - bang_ac_list.append(before + k) - elif isinstance(node, dict): - bang_definition = node.get(LEAF_KEY) - bang_ac_list = [before + k for k in node.keys() if k != LEAF_KEY] - elif isinstance(node, str): - bang_definition = node - bang_ac_list = [] - - return bang_definition, bang_ac_list - - -def resolve_bang_definition(bang_definition, query): - url, rank = bang_definition.split(chr(1)) - if url.startswith('//'): - url = 'https:' + url - if query: - url = url.replace(chr(2), quote_plus(query)) - else: - # go to main instead of search page - o = urlparse(url) - url = o.scheme + '://' + o.netloc - - rank = int(rank) if len(rank) > 0 else 0 - return (url, rank) - - -def get_bang_definition_and_autocomplete(bang, external_bangs_db=None): - if external_bangs_db is None: - external_bangs_db = EXTERNAL_BANGS - - bang_definition, bang_ac_list = get_bang_definition_and_ac(external_bangs_db, bang) - - new_autocomplete = [] - current = [*bang_ac_list] - done = set() - while len(current) > 0: - bang_ac = current.pop(0) - done.add(bang_ac) - - current_bang_definition, current_bang_ac_list = get_bang_definition_and_ac(external_bangs_db, bang_ac) - if current_bang_definition: - _, order = resolve_bang_definition(current_bang_definition, '') - new_autocomplete.append((bang_ac, order)) - for new_bang in current_bang_ac_list: - if new_bang not in done and new_bang not in current: - current.append(new_bang) - - new_autocomplete.sort(key=lambda t: (-t[1], t[0])) - new_autocomplete = list(map(lambda t: t[0], new_autocomplete)) - - return bang_definition, new_autocomplete - - -def get_bang_url(search_query, external_bangs_db=None): - """ - Redirects if the user supplied a correct bang search. - :param search_query: This is a search_query object which contains preferences and the submitted queries. - :return: None if the bang was invalid, else a string of the redirect url. - """ - ret_val = None - - if external_bangs_db is None: - external_bangs_db = EXTERNAL_BANGS - - if search_query.external_bang: - bang_definition, _ = get_bang_definition_and_ac(external_bangs_db, search_query.external_bang) - if bang_definition and isinstance(bang_definition, str): - ret_val = resolve_bang_definition(bang_definition, search_query.query)[0] - - return ret_val diff --git a/searx/external_urls.py b/searx/external_urls.py deleted file mode 100644 index 7844b58d0..000000000 --- a/searx/external_urls.py +++ /dev/null @@ -1,91 +0,0 @@ -import math - -from searx.data import EXTERNAL_URLS - - -IMDB_PREFIX_TO_URL_ID = { - 'tt': 'imdb_title', - 'mn': 'imdb_name', - 'ch': 'imdb_character', - 'co': 'imdb_company', - 'ev': 'imdb_event', -} -HTTP_WIKIMEDIA_IMAGE = 'http://commons.wikimedia.org/wiki/Special:FilePath/' - - -def get_imdb_url_id(imdb_item_id): - id_prefix = imdb_item_id[:2] - return IMDB_PREFIX_TO_URL_ID.get(id_prefix) - - -def get_wikimedia_image_id(url): - if url.startswith(HTTP_WIKIMEDIA_IMAGE): - return url[len(HTTP_WIKIMEDIA_IMAGE) :] - if url.startswith('File:'): - return url[len('File:') :] - return url - - -def get_external_url(url_id, item_id, alternative="default"): - """Return an external URL or None if url_id is not found. - - url_id can take value from data/external_urls.json - The "imdb_id" value is automatically converted according to the item_id value. - - If item_id is None, the raw URL with the $1 is returned. - """ - if item_id is not None: - if url_id == 'imdb_id': - url_id = get_imdb_url_id(item_id) - elif url_id == 'wikimedia_image': - item_id = get_wikimedia_image_id(item_id) - - url_description = EXTERNAL_URLS.get(url_id) - if url_description: - url_template = url_description["urls"].get(alternative) - if url_template is not None: - if item_id is not None: - return url_template.replace('$1', item_id) - else: - return url_template - return None - - -def get_earth_coordinates_url(latitude, longitude, osm_zoom, alternative='default'): - url = ( - get_external_url('map', None, alternative) - .replace('${latitude}', str(latitude)) - .replace('${longitude}', str(longitude)) - .replace('${zoom}', str(osm_zoom)) - ) - return url - - -def area_to_osm_zoom(area): - """Convert an area in km² into an OSM zoom. Less reliable if the shape is not round. - - logarithm regression using these data: - * 9596961 -> 4 (China) - * 3287263 -> 5 (India) - * 643801 -> 6 (France) - * 6028 -> 9 - * 1214 -> 10 - * 891 -> 12 - * 12 -> 13 - - In WolframAlpha: - >>> log fit {9596961,15},{3287263, 14},{643801,13},{6028,10},{1214,9},{891,7},{12,6} - - with 15 = 19-4 (China); 14 = 19-5 (India) and so on - - Args: - area (int,float,str): area in km² - - Returns: - int: OSM zoom or 19 in area is not a number - """ - try: - amount = float(area) - return max(0, min(19, round(19 - 0.688297 * math.log(226.878 * amount)))) - except ValueError: - return 19 diff --git a/searx/flaskfix.py b/searx/flaskfix.py deleted file mode 100644 index 326c4b981..000000000 --- a/searx/flaskfix.py +++ /dev/null @@ -1,78 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring - -from urllib.parse import urlparse - -from werkzeug.middleware.proxy_fix import ProxyFix -from werkzeug.serving import WSGIRequestHandler - -from searx import settings - - -class ReverseProxyPathFix: - '''Wrap the application in this middleware and configure the - front-end server to add these headers, to let you quietly bind - this to a URL other than / and to an HTTP scheme that is - different than what is used locally. - - http://flask.pocoo.org/snippets/35/ - - In nginx: - location /myprefix { - proxy_pass http://127.0.0.1:8000; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Scheme $scheme; - proxy_set_header X-Script-Name /myprefix; - } - - :param wsgi_app: the WSGI application - ''' - - # pylint: disable=too-few-public-methods - - def __init__(self, wsgi_app): - - self.wsgi_app = wsgi_app - self.script_name = None - self.scheme = None - self.server = None - - if settings['server']['base_url']: - - # If base_url is specified, then these values from are given - # preference over any Flask's generics. - - base_url = urlparse(settings['server']['base_url']) - self.script_name = base_url.path - if self.script_name.endswith('/'): - # remove trailing slash to avoid infinite redirect on the index - # see https://github.com/searx/searx/issues/2729 - self.script_name = self.script_name[:-1] - self.scheme = base_url.scheme - self.server = base_url.netloc - - def __call__(self, environ, start_response): - script_name = self.script_name or environ.get('HTTP_X_SCRIPT_NAME', '') - if script_name: - environ['SCRIPT_NAME'] = script_name - path_info = environ['PATH_INFO'] - if path_info.startswith(script_name): - environ['PATH_INFO'] = path_info[len(script_name) :] - - scheme = self.scheme or environ.get('HTTP_X_SCHEME', '') - if scheme: - environ['wsgi.url_scheme'] = scheme - - server = self.server or environ.get('HTTP_X_FORWARDED_HOST', '') - if server: - environ['HTTP_HOST'] = server - return self.wsgi_app(environ, start_response) - - -def patch_application(app): - # serve pages with HTTP/1.1 - WSGIRequestHandler.protocol_version = "HTTP/{}".format(settings['server']['http_protocol_version']) - # patch app to handle non root url-s behind proxy & wsgi - app.wsgi_app = ReverseProxyPathFix(ProxyFix(app.wsgi_app)) diff --git a/searx/infopage/__init__.py b/searx/infopage/__init__.py deleted file mode 100644 index 8e6da0256..000000000 --- a/searx/infopage/__init__.py +++ /dev/null @@ -1,187 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pyright: basic -"""Render SearXNG instance documentation. - -Usage in a Flask app route: - -.. code:: python - - from searx import infopage - - _INFO_PAGES = infopage.InfoPageSet(infopage.MistletoePage) - - @app.route('/info/', methods=['GET']) - def info(pagename): - - locale = request.preferences.get_value('locale') - page = _INFO_PAGES.get_page(pagename, locale) - -""" - -__all__ = ['InfoPage', 'InfoPageSet'] - -import os -import os.path -import logging -import typing - -import urllib.parse -import jinja2 -from flask.helpers import url_for -from markdown_it import MarkdownIt - -from .. import get_setting -from ..compat import cached_property -from ..version import GIT_URL -from ..locales import LOCALE_NAMES - - -logger = logging.getLogger('searx.infopage') -_INFO_FOLDER = os.path.abspath(os.path.dirname(__file__)) - - -class InfoPage: - """A page of the :py:obj:`online documentation `.""" - - def __init__(self, fname): - self.fname = fname - - @cached_property - def raw_content(self): - """Raw content of the page (without any jinja rendering)""" - with open(self.fname, 'r', encoding='utf-8') as f: - return f.read() - - @cached_property - def content(self): - """Content of the page (rendered in a Jinja context)""" - ctx = self.get_ctx() - template = jinja2.Environment().from_string(self.raw_content) - return template.render(**ctx) - - @cached_property - def title(self): - """Title of the content (without any markup)""" - t = "" - for l in self.raw_content.split('\n'): - if l.startswith('# '): - t = l.strip('# ') - return t - - @cached_property - def html(self): - """Render Markdown (CommonMark_) to HTML by using markdown-it-py_. - - .. _CommonMark: https://commonmark.org/ - .. _markdown-it-py: https://github.com/executablebooks/markdown-it-py - - """ - return ( - MarkdownIt("commonmark", {"typographer": True}).enable(["replacements", "smartquotes"]).render(self.content) - ) - - def get_ctx(self): - """Jinja context to render :py:obj:`InfoPage.content`""" - - def _md_link(name, url): - url = url_for(url, _external=True) - return "[%s](%s)" % (name, url) - - def _md_search(query): - url = '%s?q=%s' % (url_for('search', _external=True), urllib.parse.quote(query)) - return '[%s](%s)' % (query, url) - - ctx = {} - ctx['GIT_URL'] = GIT_URL - ctx['get_setting'] = get_setting - ctx['link'] = _md_link - ctx['search'] = _md_search - - return ctx - - def __repr__(self): - return f'<{self.__class__.__name__} fname={self.fname!r}>' - - -class InfoPageSet: # pylint: disable=too-few-public-methods - """Cached rendering of the online documentation a SearXNG instance has. - - :param page_class: render online documentation by :py:obj:`InfoPage` parser. - :type page_class: :py:obj:`InfoPage` - - :param info_folder: information directory - :type info_folder: str - """ - - def __init__( - self, page_class: typing.Optional[typing.Type[InfoPage]] = None, info_folder: typing.Optional[str] = None - ): - self.page_class = page_class or InfoPage - self.folder: str = info_folder or _INFO_FOLDER - """location of the Markdown files""" - - self.CACHE: typing.Dict[tuple, typing.Optional[InfoPage]] = {} - - self.locale_default: str = 'en' - """default language""" - - self.locales: typing.List[str] = [ - locale.replace('_', '-') for locale in os.listdir(_INFO_FOLDER) if locale.replace('_', '-') in LOCALE_NAMES - ] - """list of supported languages (aka locales)""" - - self.toc: typing.List[str] = [ - 'search-syntax', - 'about', - 'donate', - ] - """list of articles in the online documentation""" - - def get_page(self, pagename: str, locale: typing.Optional[str] = None): - """Return ``pagename`` instance of :py:obj:`InfoPage` - - :param pagename: name of the page, a value from :py:obj:`InfoPageSet.toc` - :type pagename: str - - :param locale: language of the page, e.g. ``en``, ``zh_Hans_CN`` - (default: :py:obj:`InfoPageSet.i18n_origin`) - :type locale: str - - """ - locale = locale or self.locale_default - - if pagename not in self.toc: - return None - if locale not in self.locales: - return None - - cache_key = (pagename, locale) - - if cache_key in self.CACHE: - return self.CACHE[cache_key] - - # not yet instantiated - - fname = os.path.join(self.folder, locale.replace('-', '_'), pagename) + '.md' - if not os.path.exists(fname): - logger.info('file %s does not exists', fname) - self.CACHE[cache_key] = None - return None - - page = self.page_class(fname) - self.CACHE[cache_key] = page - return page - - def iter_pages(self, locale: typing.Optional[str] = None, fallback_to_default=False): - """Iterate over all pages of the TOC""" - locale = locale or self.locale_default - for page_name in self.toc: - page_locale = locale - page = self.get_page(page_name, locale) - if fallback_to_default and page is None: - page_locale = self.locale_default - page = self.get_page(page_name, self.locale_default) - if page is not None: - # page is None if the page was deleted by the administrator - yield page_name, page_locale, page diff --git a/searx/infopage/de/about.md b/searx/infopage/de/about.md deleted file mode 100644 index aaf3bffda..000000000 --- a/searx/infopage/de/about.md +++ /dev/null @@ -1,88 +0,0 @@ -# Über SearXNG - -SearXNG ist eine [Metasuchmaschine], welche die Ergebnisse anderer -{{link('Suchmaschinen', 'preferences')}} sammelt und aufbereitet ohne dabei -Informationen über seine Benutzer zu sammeln oder an andere Suchmaschinen weiter -zu geben. - -Das SearXNG Projekt wird von einer offenen Gemeinschaft entwickelt; wenn Sie -Fragen haben oder einfach nur über SearXNG plaudern möchten, besuchen Sie uns -auf Matrix unter: [#searxng:matrix.org] - -Werden Sie Teil des Projekts und unterstützen Sie SearXNG: - -- Sie können die SearXNG Übersetzungen ergänzen oder korrigieren: [Weblate] -- oder folgen Sie den Entwicklungen, senden Sie Beiträge und melden Sie Fehler: - [SearXNG Quellen] -- Mehr Informationen sind in der [SearXNG Dokumentation] zu finden. - -## Warum sollte ich SearXNG benutzen? - -- SearXNG bietet Ihnen vielleicht nicht so personalisierte Ergebnisse wie - Google, aber es erstellt auch kein Profil über Sie. -- SearXNG kümmert sich nicht darum, wonach Sie suchen, gibt niemals etwas an - Dritte weiter und kann nicht dazu verwendet werden Sie zu kompromittieren. -- SearXNG ist freie Software, der Code ist zu 100% offen und jeder ist - willkommen ihn zu verbessern. - -Wenn Ihnen die Privatsphäre wichtig ist, Sie ein bewusster Nutzer sind und Sie -an die digitale Freiheit glauben, sollten Sie SearXNG zu Ihrer -Standardsuchmaschine machen oder eine SearXNG Instanz auf Ihrem eigenen Server -betreiben. - -## Wie kann ich SearXNG als Standardsuchmaschine festlegen? - -SearXNG unterstützt [OpenSearch]. Weitere Informationen zum Ändern Ihrer -Standardsuchmaschine finden Sie in der Dokumentation zu Ihrem [WEB-Browser]: - -- [Firefox] -- [Microsoft Edge] - Hinter dem Link finden sich auch nützliche Hinweise zu - Chrome und Safari. -- [Chromium]-basierte Browser fügen nur Websites hinzu, zu denen der Benutzer - ohne Pfadangabe navigiert. - -Wenn Sie eine Suchmaschine hinzufügen, darf es keine Duplikate mit demselben -Namen geben. Wenn Sie auf ein Problem stoßen, bei dem Sie die Suchmaschine -nicht hinzufügen können, dann können Sie entweder: - -- das Duplikat entfernen (Standardname: SearXNG) oder -- den Eigentümer kontaktieren, damit dieser der Instance einen anderen Namen als - den Standardnamen gibt. - -## Wie funktioniert SearXNG? - -SearXNG ist ein Fork der bekannten [searx] [Metasuchmaschine], die durch das -[Seeks-Projekt] inspiriert wurde (diese beide Projekte werden heute nicht mehr -aktiv weiterentwickelt). SearXNG bietet einen grundlegenden Schutz der -Privatsphäre, indem es die Suchanfragen der Benutzer mit Suchen auf anderen -Plattformen vermischt ohne dabei Suchdaten zu speichern. SearXNG kann im -[WEB-Browser] als weitere oder Standard-Suchmaschine hinzugefügt werden. - -Die {{link('Suchmaschinenstatistik', 'stats')}} enthält einige nützliche -Statistiken über die verwendeten Suchmaschinen. - -## Wie kann ich einen eigenen SearXNG Server betreiben? - -Jeder der mit dem Betrieb von WEB-Servern vertraut ist kann sich eine eigene -Instanz einrichten; die Software dazu kann über die [SearXNG Quellen] bezogen -werden. Weitere Informationen zur Installation und zum Betrieb finden sich in -der [SearXNG Dokumentation]. - -Fügen Sie Ihre Instanz zu der [Liste der öffentlich zugänglichen -Instanzen]({{get_setting('brand.public_instances')}}) hinzu um auch anderen -Menschen zu helfen ihre Privatsphäre zurückzugewinnen und das Internet freier zu -machen. Je dezentraler das Internet ist, desto mehr Freiheit haben wir! - - -[SearXNG Quellen]: {{GIT_URL}} -[#searxng:matrix.org]: https://matrix.to/#/#searxng:matrix.org -[SearXNG Dokumentation]: {{get_setting('brand.docs_url')}} -[searx]: https://github.com/searx/searx -[Metasuchmaschine]: https://de.wikipedia.org/wiki/Metasuchmaschine -[Weblate]: https://translate.codeberg.org/projects/searxng/ -[Seeks-Projekt]: https://beniz.github.io/seeks/ -[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md -[Firefox]: https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox -[Microsoft Edge]: https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine -[Chromium]: https://www.chromium.org/tab-to-search -[WEB-Browser]: https://de.wikipedia.org/wiki/Webbrowser diff --git a/searx/infopage/de/search-syntax.md b/searx/infopage/de/search-syntax.md deleted file mode 100644 index 87562b2d1..000000000 --- a/searx/infopage/de/search-syntax.md +++ /dev/null @@ -1,93 +0,0 @@ -# Suchbegriffe - -SearXNG verfügt über eine Syntax mit der in einer Suchanfrage die Kategorien, -Suchmaschinen, Sprachen und mehr geändert werden können. In den -{{link('Eigenschaften','preferences')}} sind die Kategorien, Suchmaschinen und -Sprachen zu finden, die zur Verfügung stehen. - -## `!` Suchmaschine und Kategorie auswählen - -Zum Festlegen von Kategorie- und/oder Suchmaschinen dient das Präfix `!`. Um -ein paar Beispiele zu geben: - -- in der Wikipedia nach dem Begriff **paris** suchen - - - {{search('!wp paris')}} - - {{search('!wikipedia paris')}} - -- in der Kategorie **Karte** nach dem Begriff **paris** suchen: - - - {{search('!map paris')}} - -- in der Kategorie **Bilder** suchen - - - {{search('!images Wau Holland')}} - -Abkürzungen der Suchmaschinen und Kategorien sind ebenfalls möglich und können -auch kombiniert werden. So wird z.B. mit {{search('!map !ddg !wp paris')}} in -der Kategorie **Karte** als auch mit den Suchmaschinen DuckDuckGo und Wikipedia -nach dem Begriff **paris** gesucht. - -## `:` Sprache auswählen - -Um einen Sprachfilter auszuwählen, verwenden Sie das Präfix `:`. Um ein -einfaches Beispiel zu geben: - -- Wikipedia mit einer benutzerdefinierten Sprache durchsuchen - - - {{search(':de !wp Wau Holland')}} - -## `!!` external bangs - -SearXNG unterstützt die _external bangs_ von [DuckDuckGo]. Das Präfix `!!` kann -verwendet werden um direkt zu einer externen Suchseite zu springen. Um ein -Beispiel zu geben: - -- In Wikipedia mit einer benutzerdefinierten Sprache eine Suche durchführen - - - {{search('!!wde Wau Holland')}} - -Bitte beachten; die Suche wird direkt in der externen Suchmaschine durchgeführt. -SearXNG kann die Privatsphäre des Benutzers in diesem Fall nur eingeschränkt -schützen, dennoch wird diese Funktion von manchen Benutzern als sehr nützlich -empfunden. - -[DuckDuckGo]: https://duckduckgo.com/bang - -## `!!` automatic redirect - -Bei der Verwendung von `!!` innerhalb der Suchanfrage (durch Leerzeichen -getrennt), wird automatisch zum ersten Ergebnis weitergeleitet. Dieses -Verhalten ist vergleichbar mit der "Feeling Lucky"-Funktion von DuckDuckGo. Um -ein Beispiel zu geben: - -- Suchanfrage und direkte Weiterleitung zum ersten Ergebnis - - - {{search('!! Wau Holland')}} - -Bitte beachten: das Ergebnis zu dem weitergeleitet wird, kann nicht auf seine -Vertrauenswürdigkeit überprüft werden. SearXNG kann die Privatsphäre des -Benutzers in diesem Fall nicht schützen, dennoch wird diese Funktion von manchen -Benutzern als sehr nützlich empfunden. - -## Besondere Abfragen - -In den {{link('Eigenschaften', 'preferences')}} finden sich Schlüsselwörter für -_besondere Abfragen_. Um ein paar Beispiele zu geben: - -- Zufallsgenerator für eine UUID - - - {{search('random uuid')}} - -- Bestimmung des Mittelwerts - - - {{search('avg 123 548 2.04 24.2')}} - -- anzeigen des _user agent_ Ihres WEB-Browsers (muss aktiviert sein) - - - {{search('user-agent')}} - -- Zeichenketten in verschiedene Hash-Digests umwandeln (muss aktiviert sein) - - - {{search('md5 lorem ipsum')}} - - {{search('sha512 lorem ipsum')}} diff --git a/searx/infopage/en/about.md b/searx/infopage/en/about.md deleted file mode 100644 index b868813a3..000000000 --- a/searx/infopage/en/about.md +++ /dev/null @@ -1,79 +0,0 @@ -# About SearXNG - -SearXNG is a [metasearch engine], aggregating the results of other -{{link('search engines', 'preferences')}} while not storing information about -its users. - -The SearXNG project is driven by an open community, come join us on Matrix if -you have questions or just want to chat about SearXNG at [#searxng:matrix.org] - -Make SearXNG better. - -- You can improve SearXNG translations at [Weblate], or... -- Track development, send contributions, and report issues at [SearXNG sources]. -- To get further information, visit SearXNG's project documentation at [SearXNG - docs]. - -## Why use it? - -- SearXNG may not offer you as personalized results as Google, but it doesn't - generate a profile about you. -- SearXNG doesn't care about what you search for, never shares anything with a - third-party, and it can't be used to compromise you. -- SearXNG is free software, the code is 100% open, and everyone is welcome to - make it better. - -If you do care about privacy, want to be a conscious user, or otherwise believe -in digital freedom, make SearXNG your default search engine or run it on your -own server! - -## How do I set it as the default search engine? - -SearXNG supports [OpenSearch]. For more information on changing your default -search engine, see your browser's documentation: - -- [Firefox] -- [Microsoft Edge] - Behind the link, you will also find some useful instructions - for Chrome and Safari. -- [Chromium]-based browsers only add websites that the user navigates to without - a path. - -When adding a search engine, there must be no duplicates with the same name. If -you encounter a problem where you cannot add the search engine, you can either: - -- remove the duplicate (default name: SearXNG) or -- contact the owner to give the instance a different name than the default. - -## How does it work? - -SearXNG is a fork from the well-known [searx] [metasearch engine] which was -inspired by the [Seeks project]. It provides basic privacy by mixing your -queries with searches on other platforms without storing search data. SearXNG -can be added to your browser's search bar; moreover, it can be set as the -default search engine. - -The {{link('stats page', 'stats')}} contains some useful anonymous usage -statistics about the engines used. - -## How can I make it my own? - -SearXNG appreciates your concern regarding logs, so take the code from the -[SearXNG sources] and run it yourself! - -Add your instance to this [list of public -instances]({{get_setting('brand.public_instances')}}) to help other people -reclaim their privacy and make the internet freer. The more decentralized the -internet is, the more freedom we have! - - -[SearXNG sources]: {{GIT_URL}} -[#searxng:matrix.org]: https://matrix.to/#/#searxng:matrix.org -[SearXNG docs]: {{get_setting('brand.docs_url')}} -[searx]: https://github.com/searx/searx -[metasearch engine]: https://en.wikipedia.org/wiki/Metasearch_engine -[Weblate]: https://translate.codeberg.org/projects/searxng/ -[Seeks project]: https://beniz.github.io/seeks/ -[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md -[Firefox]: https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox -[Microsoft Edge]: https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine -[Chromium]: https://www.chromium.org/tab-to-search diff --git a/searx/infopage/en/search-syntax.md b/searx/infopage/en/search-syntax.md deleted file mode 100644 index ea6663337..000000000 --- a/searx/infopage/en/search-syntax.md +++ /dev/null @@ -1,84 +0,0 @@ -# Search syntax - -SearXNG comes with a search syntax by with you can modify the categories, -engines, languages and more. See the {{link('preferences', 'preferences')}} for -the list of engines, categories and languages. - -## `!` select engine and category - -To set category and/or engine names use a `!` prefix. To give a few examples: - -- search in Wikipedia for **paris** - - - {{search('!wp paris')}} - - {{search('!wikipedia paris')}} - -- search in category **map** for **paris** - - - {{search('!map paris')}} - -- image search - - - {{search('!images Wau Holland')}} - -Abbreviations of the engines and languages are also accepted. Engine/category -modifiers are chain able and inclusive. E.g. with {{search('!map !ddg !wp -paris')}} search in map category and DuckDuckGo and Wikipedia for **paris**. - -## `:` select language - -To select language filter use a `:` prefix. To give an example: - -- search Wikipedia by a custom language - - - {{search(':fr !wp Wau Holland')}} - -## `!!` external bangs - -SearXNG supports the external bangs from [DuckDuckGo]. To directly jump to a -external search page use the `!!` prefix. To give an example: - -- search Wikipedia by a custom language - - - {{search('!!wfr Wau Holland')}} - -Please note, your search will be performed directly in the external search -engine, SearXNG cannot protect your privacy on this. - -[DuckDuckGo]: https://duckduckgo.com/bang - -## `!!` automatic redirect - -When mentioning `!!` within the search query (separated by spaces), you will -automatically be redirected to the first result. This behavior is comparable to -the "Feeling Lucky" feature from DuckDuckGo. To give an example: - -- search for a query and get redirected to the first result - - - {{search('!! Wau Holland')}} - -Please keep in mind that the result you are being redirected to can't become -verified for being trustworthy, SearXNG cannot protect your personal privacy -when using this feature. Use it at your own risk. - -## Special Queries - -In the {{link('preferences', 'preferences')}} page you find keywords for -_special queries_. To give a few examples: - -- generate a random UUID - - - {{search('random uuid')}} - -- find the average - - - {{search('avg 123 548 2.04 24.2')}} - -- show _user agent_ of your browser (needs to be activated) - - - {{search('user-agent')}} - -- convert strings to different hash digests (needs to be activated) - - - {{search('md5 lorem ipsum')}} - - {{search('sha512 lorem ipsum')}} diff --git a/searx/infopage/fa_IR/about.md b/searx/infopage/fa_IR/about.md deleted file mode 100644 index cf5488f97..000000000 --- a/searx/infopage/fa_IR/about.md +++ /dev/null @@ -1,74 +0,0 @@ -# درباره SearXNG - - -SearXNG یک [موتور فراجستجو] - است که نتایج دیگر {{link('موتور جستجوها', 'preferences')}} را جمع می کند در حالی که اطلاعات مربوط به جستجو را ذخیره نمی‌کند - -پروژه SearXNG توسط یک جامعه باز هدایت می شود، در Matrix به ما بپیوندید اگر -سؤالی دارید یا فقط می خواهید در مورد SearXNG در [#searxng:matrix.org] چت کنید. -و SearXNG را بهتر کنید. - -- می توانید ترجمه های SearXNG را در [وب سایت] بهبود بخشید، یا... -- توسعه را ردیابی کنید، مشارکت ها را ارسال کنید و مشکلات را در [کد منبع SearXNG] گزارش کنید. -- برای دریافت اطلاعات بیشتر، از مستندات پروژه SearXNG در [اسناد SearXNG] استفاده کنید. - -## چرا از SearXNG استفاده کنید؟ - -- ممکن است SearXNG به اندازه Google نتایج شخصی سازی شده را به شما ارائه ندهد، اما اطلاعات شما را ردیابی نمیکند. -- SearXNG به آنچه شما جستجو می کنید اهمیتی نمی دهد، هرگز چیزی را با افراد شخص ثالث به اشتراک نمی گذارد - ، و نمی توان از آن برای به خطر انداختن شما استفاده کرد. -- SearXNG نرم افزار رایگان است، کد 100٪ باز است و همه از آن استقبال می کنند - بهترش کنید. - -اگر به حریم خصوصی اهمیت می دهید، می خواهید یک کاربر آگاه باشید، یا می‌خواهید در آزادی دیجیتال باشید، - SearXNG را موتور جستجوی پیش فرض خود قرار دهید یا آن را بر روی سرور خود اجرا کنید - -## چگونه آن را به عنوان موتور جستجوی پیش فرض تنظیم کنم؟ - -SearXNG از [OpenSearch] پشتیبانی می کند. برای اطلاعات بیشتر در مورد تغییر پیش فرض خود -موتور جستجو، مستندات مرورگر خود را ببینید: - -- [Firefox] -- [Microsoft Edge] - در پشت پیوند، دستورالعمل های مفیدی نیز خواهید یافت - برای کروم و سافاری -- مرورگرهای مبتنی بر [Chromium] فقط وب سایت هایی را اضافه می کنند که کاربر بدون مسیر به آنها پیمایش می کند. - -هنگام اضافه کردن یک موتور جستجو، نباید تکراری با همان نام وجود داشته باشد. اگر -شما با مشکلی روبرو می شوید که نمی توانید موتور جستجو را اضافه کنید، می توانید یکی از موارد زیر را انجام دهید: - -- حذف تکراری (نام پیش فرض: SearXNG) یا -- با مالک تماس بگیرید تا نمونه را نامی متفاوت از پیش فرض قرار دهد. - -## چگونه کار می کند؟ - -SearXNG یک انشعاب از [searx] [موتور فراجستجو] معروف است که بود -با الهام از [پروژه Seeks]. این حریم خصوصی اولیه را برای شما فراهم می کند -پرس و جوهایی با جستجو در سایر سیستم عامل ها بدون ذخیره داده های جستجو. SearXNG -می تواند به نوار جستجوی مرورگر شما اضافه شود. علاوه بر این، می توان آن را به عنوان موتور جستجوی پیش فرض - تنظیم کرد - - حاوی چند کاربرد ناشناس مفید است -آمار موتورهای مورد استفاده : {{link('صفحه آمار', 'stats')}} - -## چگونه می توانم آن را مال خودم کنم؟ - -SearXNG از نگرانی شما در مورد گزارش‌ها قدردانی می‌کند، بنابراین کد را از -[کد منبع SearXNG] دریافت کنید و خودتان آن را اجرا کنید! - -نمونه خود را به این [لیست عمومی اضافه کنید -instances]({{get_setting('brand.public_instances')}}) برای کمک به افراد دیگر -حفظ حریم خصوصی و آزادتر کردن اینترنت. هر چه اینترنت غیرمتمرکزتر باشد -، آزادی بیشتر است! - - -[کد منبع SearXNG]: {{GIT_URL}} -[#searxng:matrix.org]: https://matrix.to/#/#searxng:matrix.org -[اسناد SearXNG]: {{get_setting('brand.docs_url')}} -[searx]: https://github.com/searx/searx -[موتور فراجستجو]: https://fa.wikipedia.org/wiki/Metasearch_engine -[وب سایت]: https://translate.codeberg.org/projects/searxng/ -[پروژه Seeks]: https://beniz.github.io/seeks/ -[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md -[Firefox]: https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox -[Microsoft Edge]: https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine -[Chromium]: https://www.chromium.org/tab-to-search diff --git a/searx/infopage/fa_IR/search-syntax.md b/searx/infopage/fa_IR/search-syntax.md deleted file mode 100644 index 28a189ae2..000000000 --- a/searx/infopage/fa_IR/search-syntax.md +++ /dev/null @@ -1,64 +0,0 @@ -# نحو جستجو -SearXNG با یک متن جستجو همراه است که می توانید دسته ها را تغییر دهید، -موتورها، زبان ها و موارد دیگر. {{link('اولویت ها', 'preferences')}} رابرای -لیست موتورها، دسته ها و زبان ها ببینید. -## `!` موتور و دسته را انتخاب کنید - -برای تنظیم نام دسته و/یا موتور از پیشوند «!» استفاده کنید. برای ذکر چند مثال: - -- در ویکی پدیا برای **paris** جستجو کنید - - - {{search('!wp paris')}} - - {{search('!wikipedia paris')}} - -- جستجو در دسته **نقشه** برای **پاریس** - - {{search('!map paris')}} - -- جستجوی تصویر - - {{search('!images Wau Holland')}} - -اختصارات موتورها و زبان ها نیز پذیرفته می شود. موتور/رده -اصلاح کننده ها زنجیره ای و فراگیر هستند. به عنوان مثال. با {{search('!map !ddg !wp -paris')}} در دسته بندی نقشه و DuckDuckGo و Wikipedia برای **paris** جستجو کنید.. - -## `:` زبان را انتخاب کنید - -برای انتخاب فیلتر زبان از پیشوند «:» استفاده کنید. برای مثال زدن: - -- ویکی پدیا را با یک زبان سفارشی جستجو کنید - - - {{search(':fr !wp Wau Holland')}} - -## `!!` چتری خارجی - -SearXNG از ضربه های خارجی پشتیبانی می کند [DuckDuckGo] . To مستقیماً به a -صفحه جستجوی خارجی از پیشوند «!!» استفاده کنید. برای مثال زدن: - -- ویکی پدیا را با یک زبان سفارشی جستجو کنید - - {{search('!!wfr Wau Holland')}} - -لطفاً توجه داشته باشید، جستجوی شما مستقیماً در جستجوی خارجی انجام می شود -موتور، SearXNG نمی تواند از حریم خصوصی شما در این مورد محافظت کند. -[DuckDuckGo]: https://duckduckgo.com/bang - -## سوالات ویژه - -در صفحه {{link('preferences', 'preferences')}} کلمات کلیدی را پیدا می کنید -_پرسش های ویژه_. برای ذکر چند مثال: - -- ایجاد یک UUID تصادفی - - - {{search('random uuid')}} - -- محاسبه میانگین - - - {{search('avg 123 548 2.04 24.2')}} - -- نشان دادن _user agent_ مرورگر شما (باید فعال شود) - - - {{search('user-agent')}} - -- تبدیل رشته ها به هش های مختلف (باید فعال شود) - - - {{search('md5 lorem ipsum')}} - - {{search('sha512 lorem ipsum')}} diff --git a/searx/infopage/id/about.md b/searx/infopage/id/about.md deleted file mode 100644 index 1cb8d5ad3..000000000 --- a/searx/infopage/id/about.md +++ /dev/null @@ -1,82 +0,0 @@ -# Tentang SearXNG - -SearXNG adalah sebuah [mesin pencari meta], yang mendapatkan hasil dari -{{link('mesin pencari', 'preferences')}} lainnya sambil tidak melacak -penggunanya. - -Proyek SearXNG diarahkan oleh sebuah komunitas terbuka, bergabung dengan kami di -Matrix jika Anda memiliki pertanyaan atau ingin mengobrol tentang SearXNG di -[#searxng:matrix.org] - -Buat SearXNG lebih baik. - -- Anda dapat membuat terjemahan SearXNG lebih baik di [Weblate], atau... -- Lacak pengembangan, kirim kontribusi, dan laporkan masalah di [sumber - SearXNG]. -- Untuk mendapatkan informasi lanjut, kunjungi dokumentasi proyek SearXNG di - [dokumentasi SearXNG]. - -## Kenapa menggunakan SearXNG? - -- SearXNG mungkin tidak menawarkan Anda hasil yang dipersonalisasikan seperti - Google, tetapi tidak membuat sebuah profil tentang Anda. -- SearXNG tidak peduli apa yang Anda cari, tidak akan membagikan apa pun dengan - pihak ketiga, dan tidak dapat digunakan untuk mengkompromikan Anda. -- SearXNG adalah perangkat lunak bebas, kodenya 100% terbuka, dan semuanya - dipersilakan untuk membuatnya lebih baik. - -Jika Anda peduli dengan privasi, ingin menjadi pengguna yang sadar, ataupun -percaya dalam kebebasan digital, buat SearXNG sebagai mesin pencari bawaan atau -jalankan di server Anda sendiri! - -## Bagaimana saya dapat membuat SearXNG sebagai mesin pencari bawaan? - -SearXNG mendukung [OpenSearch]. Untuk informasi lanjut tentang mengubah mesin -pencari bawaan Anda, lihat dokumentasi peramban Anda: - -- [Firefox] -- [Microsoft Edge] - Dibalik tautan, Anda juga akan menemukan beberapa instruksi - berguna untuk Chrome dan Safari. -- Peramban berbasis [Chromium] hanya menambahkan situs web yang dikunjungi oleh - pengguna tanpa sebuah jalur. - -Apabila menambahkan mesin pencari, tidak boleh ada duplikat dengan nama yang -sama. Jika Anda menemukan masalah di mana Anda tidak bisa menambahkan mesin -pencari, Anda bisa: - -- menghapus duplikat (nama default: SearXNG) atau -- menghubungi pemilik untuk memberikan nama yang berbeda dari nama default. - -## Bagaimana caranya SearXNG bekerja? - -SearXNG adalah sebuah *fork* dari [mesin pencari meta] [searx] yang banyak -dikenal yang diinspirasi oleh [proyek Seeks]. SearXNG menyediakan privasi dasar -dengan mencampur kueri Anda dengan pencarian pada *platform* lainnya tanpa -menyimpan data pencarian. SearXNG dapat ditambahkan ke bilah pencarian peramban -Anda; lain lagi, SearXNG dapat diatur sebagai mesin pencarian bawaan. - -{{link('Laman statistik', 'stats')}} berisi beberapa statistik penggunaan anonim -berguna tentang mesin pencarian yang digunakan. - -## Bagaimana caranya untuk membuat SearXNG milik saya? - -SearXNG menghargai kekhawatiran Anda tentang pencatatan (*log*), jadi ambil -kodenya dari [sumber SearXNG] dan jalankan sendiri! - -Tambahkan instansi Anda ke [daftar instansi -publik]({{get_setting('brand.public_instances')}}) ini untuk membantu orang lain -mendapatkan kembali privasi mereka dan membuat internet lebih bebas. Lebih -terdesentralisasinya internet, lebih banyak kebebasan yang kita punya! - - -[sumber SearXNG]: {{GIT_URL}} -[#searxng:matrix.org]: https://matrix.to/#/#searxng:matrix.org -[dokumentasi SearXNG]: {{get_setting('brand.docs_url')}} -[searx]: https://github.com/searx/searx -[mesin pencari meta]: https://id.wikipedia.org/wiki/Mesin_pencari_web#Mesin_Pencari_dan_Mesin_Pencari-meta -[Weblate]: https://translate.codeberg.org/projects/searxng/ -[proyek Seeks]: https://beniz.github.io/seeks/ -[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md -[Firefox]: https://support.mozilla.org/id/kb/add-or-remove-search-engine-firefox -[Microsoft Edge]: https://support.microsoft.com/id-id/microsoft-edge/ubah-mesin-pencarian-default-anda-f863c519-5994-a8ed-6859-00fbc123b782 -[Chromium]: https://www.chromium.org/tab-to-search diff --git a/searx/infopage/id/search-syntax.md b/searx/infopage/id/search-syntax.md deleted file mode 100644 index 36aa12290..000000000 --- a/searx/infopage/id/search-syntax.md +++ /dev/null @@ -1,73 +0,0 @@ -# Sintaks pencarian - -SearXNG mempunyai sintaks pencarian memungkinkan Anda untuk mengubah kategori, -mesin pencari, bahasa dan lainnya. Lihat {{link('preferensi', 'preferences')}} -untuk daftar mesin pencari, kategori dan bahasa. - -## `!` pilih mesin pencari dan kategori - -Untuk menetapkan nama kategori dan/atau mesin pencari gunakan awalan `!`. -Sebagai contoh: - -- cari di Wikipedia tentang **Jakarta** - - - {{search('!wp Jakarta')}} - - {{search('!wikipedia Jakarta')}} - -- cari dalam kategori **peta** untuk **Jakarta** - - - {{search('!map Jakarta')}} - -- pencarian gambar - - - {{search('!images kucing')}} - -Singkatan mesin pencari dan bahasa juga diterima. Pengubah mesin/kategori dapat -dirantai dan inklusif. Misalnya dengan pencarian {{search('!map !ddg !wp -Jakarta')}} dalam kategori peta dan DuckDuckGo dan Wikipedia tentang -**Jakarta**. - -## `:` pilih bahasa - -Untuk memilih saringan bahasa gunakan awalan `:`. Sebagai contoh: - -- cari Wikipedia dengan bahasa lain - - - {{search(':en !wp Jakarta')}} - -## `!!` mesin pencarian (*bangs*) eksternal - -SearXNG mendukung mesin pencarian eksternal (*bangs*) dari [DuckDuckGo]. Untuk -langsung lompat ke sebuah laman pencarian eksternal gunakan awalan `!!`. -Sebagai contoh: - -- cari Wikipedia dengan bahasa yang lain - - - {{search('!!wen cat')}} - -Diingat, pencarian Anda akan dilakukan secara langsung di mesin pencari -eksternal, SearXNG tidak dapat melindungi privasi Anda di sana. - -[DuckDuckGo]: https://duckduckgo.com/bang - -## Kueri Khusus - -Dalam laman {{link('preferensi', 'preferences')}} Anda akan menemukan kata kunci -_kueri khusus_. Sebagai contoh: - -- buat sebuah UUID acak - - - {{search('random uuid')}} - -- temukan rata-rata - - - {{search('avg 123 548 2.04 24.2')}} - -- tampilkan _user agent_ (agen pengguna) dari peramban Anda (harus diaktifkan) - - - {{search('user-agent')}} - -- ubah _string_ (teks) ke intisari *hash* yang berbeda (harus diaktifkan) - - - {{search('md5 kucing sphynx')}} - - {{search('sha512 kucing sphynx')}} diff --git a/searx/limiter.py b/searx/limiter.py deleted file mode 100644 index fa7418922..000000000 --- a/searx/limiter.py +++ /dev/null @@ -1,243 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Bot protection / IP rate limitation. The intention of rate limitation is to -limit suspicious requests from an IP. The motivation behind this is the fact -that SearXNG passes through requests from bots and is thus classified as a bot -itself. As a result, the SearXNG engine then receives a CAPTCHA or is blocked -by the search engine (the origin) in some other way. - -To avoid blocking, the requests from bots to SearXNG must also be blocked, this -is the task of the limiter. To perform this task, the limiter uses the methods -from the :ref:`botdetection`: - -- Analysis of the HTTP header in the request / :ref:`botdetection probe headers` - can be easily bypassed. - -- Block and pass lists in which IPs are listed / :ref:`botdetection ip_lists` - are hard to maintain, since the IPs of bots are not all known and change over - the time. - -- Detection & dynamically :ref:`botdetection rate limit` of bots based on the - behavior of the requests. For dynamically changeable IP lists a Redis - database is needed. - -The prerequisite for IP based methods is the correct determination of the IP of -the client. The IP of the client is determined via the X-Forwarded-For_ HTTP -header. - -.. attention:: - - A correct setup of the HTTP request headers ``X-Forwarded-For`` and - ``X-Real-IP`` is essential to be able to assign a request to an IP correctly: - - - `NGINX RequestHeader`_ - - `Apache RequestHeader`_ - -.. _X-Forwarded-For: - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For -.. _NGINX RequestHeader: - https://docs.searxng.org/admin/installation-nginx.html#nginx-s-searxng-site -.. _Apache RequestHeader: - https://docs.searxng.org/admin/installation-apache.html#apache-s-searxng-site - -Enable Limiter -============== - -To enable the limiter activate: - -.. code:: yaml - - server: - ... - limiter: true # rate limit the number of request on the instance, block some bots - -and set the redis-url connection. Check the value, it depends on your redis DB -(see :ref:`settings redis`), by example: - -.. code:: yaml - - redis: - url: unix:///usr/local/searxng-redis/run/redis.sock?db=0 - - -Configure Limiter -================= - -The methods of :ref:`botdetection` the limiter uses are configured in a local -file ``/etc/searxng/limiter.toml``. The defaults are shown in limiter.toml_ / -Don't copy all values to your local configuration, just enable what you need by -overwriting the defaults. For instance to activate the ``link_token`` method in -the :ref:`botdetection.ip_limit` you only need to set this option to ``true``: - -.. code:: toml - - [botdetection.ip_limit] - link_token = true - -.. _limiter.toml: - -``limiter.toml`` -================ - -In this file the limiter finds the configuration of the :ref:`botdetection`: - -- :ref:`botdetection ip_lists` -- :ref:`botdetection rate limit` -- :ref:`botdetection probe headers` - -.. kernel-include:: $SOURCEDIR/limiter.toml - :code: toml - -Implementation -============== - -""" - -from __future__ import annotations -import sys - -from pathlib import Path -from ipaddress import ip_address -import flask -import werkzeug - -from searx import ( - logger, - redisdb, -) -from searx import botdetection -from searx.botdetection import ( - config, - http_accept, - http_accept_encoding, - http_accept_language, - http_user_agent, - ip_limit, - ip_lists, - get_network, - get_real_ip, - dump_request, -) - -# the configuration are limiter.toml and "limiter" in settings.yml so, for -# coherency, the logger is "limiter" -logger = logger.getChild('limiter') - -CFG: config.Config = None # type: ignore -_INSTALLED = False - -LIMITER_CFG_SCHEMA = Path(__file__).parent / "limiter.toml" -"""Base configuration (schema) of the botdetection.""" - -LIMITER_CFG = Path('/etc/searxng/limiter.toml') -"""Local Limiter configuration.""" - -CFG_DEPRECATED = { - # "dummy.old.foo": "config 'dummy.old.foo' exists only for tests. Don't use it in your real project config." -} - - -def get_cfg() -> config.Config: - global CFG # pylint: disable=global-statement - if CFG is None: - CFG = config.Config.from_toml(LIMITER_CFG_SCHEMA, LIMITER_CFG, CFG_DEPRECATED) - return CFG - - -def filter_request(request: flask.Request) -> werkzeug.Response | None: - # pylint: disable=too-many-return-statements - - cfg = get_cfg() - real_ip = ip_address(get_real_ip(request)) - network = get_network(real_ip, cfg) - - if request.path == '/healthz': - return None - - # link-local - - if network.is_link_local: - return None - - # block- & pass- lists - # - # 1. The IP of the request is first checked against the pass-list; if the IP - # matches an entry in the list, the request is not blocked. - # 2. If no matching entry is found in the pass-list, then a check is made against - # the block list; if the IP matches an entry in the list, the request is - # blocked. - # 3. If the IP is not in either list, the request is not blocked. - - match, msg = ip_lists.pass_ip(real_ip, cfg) - if match: - logger.warning("PASS %s: matched PASSLIST - %s", network.compressed, msg) - return None - - match, msg = ip_lists.block_ip(real_ip, cfg) - if match: - logger.error("BLOCK %s: matched BLOCKLIST - %s", network.compressed, msg) - return flask.make_response(('IP is on BLOCKLIST - %s' % msg, 429)) - - # methods applied on / - - for func in [ - http_user_agent, - ]: - val = func.filter_request(network, request, cfg) - if val is not None: - return val - - # methods applied on /search - - if request.path == '/search': - - for func in [ - http_accept, - http_accept_encoding, - http_accept_language, - http_user_agent, - ip_limit, - ]: - val = func.filter_request(network, request, cfg) - if val is not None: - return val - logger.debug(f"OK {network}: %s", dump_request(flask.request)) - return None - - -def pre_request(): - """See :py:obj:`flask.Flask.before_request`""" - return filter_request(flask.request) - - -def is_installed(): - """Returns ``True`` if limiter is active and a redis DB is available.""" - return _INSTALLED - - -def initialize(app: flask.Flask, settings): - """Install the limiter""" - global _INSTALLED # pylint: disable=global-statement - - if not (settings['server']['limiter'] or settings['server']['public_instance']): - return - - redis_client = redisdb.client() - if not redis_client: - logger.error( - "The limiter requires Redis, please consult the documentation: " - "https://docs.searxng.org/admin/searx.limiter.html" - ) - if settings['server']['public_instance']: - sys.exit(1) - return - - _INSTALLED = True - - cfg = get_cfg() - if settings['server']['public_instance']: - # overwrite limiter.toml setting - cfg.set('botdetection.ip_limit.link_token', True) - - botdetection.init(cfg, redis_client) - app.before_request(pre_request) diff --git a/searx/limiter.toml b/searx/limiter.toml deleted file mode 100644 index 9560ec8f6..000000000 --- a/searx/limiter.toml +++ /dev/null @@ -1,40 +0,0 @@ -[real_ip] - -# Number of values to trust for X-Forwarded-For. - -x_for = 1 - -# The prefix defines the number of leading bits in an address that are compared -# to determine whether or not an address is part of a (client) network. - -ipv4_prefix = 32 -ipv6_prefix = 48 - -[botdetection.ip_limit] - -# To get unlimited access in a local network, by default link-lokal addresses -# (networks) are not monitored by the ip_limit -filter_link_local = false - -# activate link_token method in the ip_limit method -link_token = false - -[botdetection.ip_lists] - -# In the limiter, the ip_lists method has priority over all other methods -> if -# an IP is in the pass_ip list, it has unrestricted access and it is also not -# checked if e.g. the "user agent" suggests a bot (e.g. curl). - -block_ip = [ - # '93.184.216.34', # IPv4 of example.org - # '257.1.1.1', # invalid IP --> will be ignored, logged in ERROR class -] - -pass_ip = [ - # '192.168.0.0/16', # IPv4 private network - # 'fe80::/10' # IPv6 linklocal / wins over botdetection.ip_limit.filter_link_local -] - -# Activate passlist of (hardcoded) IPs from the SearXNG organization, -# e.g. `check.searx.space`. -pass_searxng_org = true \ No newline at end of file diff --git a/searx/locales.py b/searx/locales.py deleted file mode 100644 index 655f365ab..000000000 --- a/searx/locales.py +++ /dev/null @@ -1,471 +0,0 @@ -# -*- coding: utf-8 -*- -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Initialize :py:obj:`LOCALE_NAMES`, :py:obj:`RTL_LOCALES`. -""" - -from typing import Set, Optional, List -import os -import pathlib - -import babel -from babel.support import Translations -import babel.languages -import babel.core -import flask_babel -import flask -from flask.ctx import has_request_context -from searx import logger - -logger = logger.getChild('locales') - - -# safe before monkey patching flask_babel.get_translations -_flask_babel_get_translations = flask_babel.get_translations - -LOCALE_NAMES = {} -"""Mapping of locales and their description. Locales e.g. 'fr' or 'pt-BR' (see -:py:obj:`locales_initialize`). - -:meta hide-value: -""" - -RTL_LOCALES: Set[str] = set() -"""List of *Right-To-Left* locales e.g. 'he' or 'fa-IR' (see -:py:obj:`locales_initialize`).""" - -ADDITIONAL_TRANSLATIONS = { - "dv": "ދިވެހި (Dhivehi)", - "oc": "Occitan", - "szl": "Ślōnski (Silesian)", - "pap": "Papiamento", -} -"""Additional languages SearXNG has translations for but not supported by -python-babel (see :py:obj:`locales_initialize`).""" - -LOCALE_BEST_MATCH = { - "dv": "si", - "oc": 'fr-FR', - "szl": "pl", - "nl-BE": "nl", - "zh-HK": "zh-Hant-TW", - "pap": "pt-BR", -} -"""Map a locale we do not have a translations for to a locale we have a -translation for. By example: use Taiwan version of the translation for Hong -Kong.""" - - -def localeselector(): - locale = 'en' - if has_request_context(): - value = flask.request.preferences.get_value('locale') - if value: - locale = value - - # first, set the language that is not supported by babel - if locale in ADDITIONAL_TRANSLATIONS: - flask.request.form['use-translation'] = locale - - # second, map locale to a value python-babel supports - locale = LOCALE_BEST_MATCH.get(locale, locale) - - if locale == '': - # if there is an error loading the preferences - # the locale is going to be '' - locale = 'en' - - # babel uses underscore instead of hyphen. - locale = locale.replace('-', '_') - return locale - - -def get_translations(): - """Monkey patch of :py:obj:`flask_babel.get_translations`""" - if has_request_context(): - use_translation = flask.request.form.get('use-translation') - if use_translation in ADDITIONAL_TRANSLATIONS: - babel_ext = flask_babel.current_app.extensions['babel'] - return Translations.load(babel_ext.translation_directories[0], use_translation) - return _flask_babel_get_translations() - - -def get_locale_descr(locale, locale_name): - """Get locale name e.g. 'Français - fr' or 'Português (Brasil) - pt-BR' - - :param locale: instance of :py:class:`Locale` - :param locale_name: name e.g. 'fr' or 'pt_BR' (delimiter is *underscore*) - """ - - native_language, native_territory = _get_locale_descr(locale, locale_name) - english_language, english_territory = _get_locale_descr(locale, 'en') - - if native_territory == english_territory: - english_territory = None - - if not native_territory and not english_territory: - if native_language == english_language: - return native_language - return native_language + ' (' + english_language + ')' - - result = native_language + ', ' + native_territory + ' (' + english_language - if english_territory: - return result + ', ' + english_territory + ')' - return result + ')' - - -def _get_locale_descr(locale, language_code): - language_name = locale.get_language_name(language_code).capitalize() - if language_name and ('a' <= language_name[0] <= 'z'): - language_name = language_name.capitalize() - territory_name = locale.get_territory_name(language_code) - return language_name, territory_name - - -def locales_initialize(directory=None): - """Initialize locales environment of the SearXNG session. - - - monkey patch :py:obj:`flask_babel.get_translations` by :py:obj:`get_translations` - - init global names :py:obj:`LOCALE_NAMES`, :py:obj:`RTL_LOCALES` - """ - - directory = directory or pathlib.Path(__file__).parent / 'translations' - logger.debug("locales_initialize: %s", directory) - flask_babel.get_translations = get_translations - - for tag, descr in ADDITIONAL_TRANSLATIONS.items(): - locale = babel.Locale.parse(LOCALE_BEST_MATCH[tag], sep='-') - LOCALE_NAMES[tag] = descr - if locale.text_direction == 'rtl': - RTL_LOCALES.add(tag) - - for tag in LOCALE_BEST_MATCH: - descr = LOCALE_NAMES.get(tag) - if not descr: - locale = babel.Locale.parse(tag, sep='-') - LOCALE_NAMES[tag] = get_locale_descr(locale, tag.replace('-', '_')) - if locale.text_direction == 'rtl': - RTL_LOCALES.add(tag) - - for dirname in sorted(os.listdir(directory)): - # Based on https://flask-babel.tkte.ch/_modules/flask_babel.html#Babel.list_translations - if not os.path.isdir(os.path.join(directory, dirname, 'LC_MESSAGES')): - continue - tag = dirname.replace('_', '-') - descr = LOCALE_NAMES.get(tag) - if not descr: - locale = babel.Locale.parse(dirname) - LOCALE_NAMES[tag] = get_locale_descr(locale, dirname) - if locale.text_direction == 'rtl': - RTL_LOCALES.add(tag) - - -def region_tag(locale: babel.Locale) -> str: - """Returns SearXNG's region tag from the locale (e.g. zh-TW , en-US).""" - if not locale.territory: - raise ValueError('%s missed a territory') - return locale.language + '-' + locale.territory - - -def language_tag(locale: babel.Locale) -> str: - """Returns SearXNG's language tag from the locale and if exits, the tag - includes the script name (e.g. en, zh_Hant). - """ - sxng_lang = locale.language - if locale.script: - sxng_lang += '_' + locale.script - return sxng_lang - - -def get_locale(locale_tag: str) -> Optional[babel.Locale]: - """Returns a :py:obj:`babel.Locale` object parsed from argument - ``locale_tag``""" - try: - locale = babel.Locale.parse(locale_tag, sep='-') - return locale - - except babel.core.UnknownLocaleError: - return None - - -def get_official_locales( - territory: str, languages=None, regional: bool = False, de_facto: bool = True -) -> Set[babel.Locale]: - """Returns a list of :py:obj:`babel.Locale` with languages from - :py:obj:`babel.languages.get_official_languages`. - - :param territory: The territory (country or region) code. - - :param languages: A list of language codes the languages from - :py:obj:`babel.languages.get_official_languages` should be in - (intersection). If this argument is ``None``, all official languages in - this territory are used. - - :param regional: If the regional flag is set, then languages which are - regionally official are also returned. - - :param de_facto: If the de_facto flag is set to `False`, then languages - which are “de facto” official are not returned. - - """ - ret_val = set() - o_languages = babel.languages.get_official_languages(territory, regional=regional, de_facto=de_facto) - - if languages: - languages = [l.lower() for l in languages] - o_languages = set(l for l in o_languages if l.lower() in languages) - - for lang in o_languages: - try: - locale = babel.Locale.parse(lang + '_' + territory) - ret_val.add(locale) - except babel.UnknownLocaleError: - continue - - return ret_val - - -def get_engine_locale(searxng_locale, engine_locales, default=None): - """Return engine's language (aka locale) string that best fits to argument - ``searxng_locale``. - - Argument ``engine_locales`` is a python dict that maps *SearXNG locales* to - corresponding *engine locales*:: - - : { - # SearXNG string : engine-string - 'ca-ES' : 'ca_ES', - 'fr-BE' : 'fr_BE', - 'fr-CA' : 'fr_CA', - 'fr-CH' : 'fr_CH', - 'fr' : 'fr_FR', - ... - 'pl-PL' : 'pl_PL', - 'pt-PT' : 'pt_PT' - .. - 'zh' : 'zh' - 'zh_Hans' : 'zh' - 'zh_Hant' : 'zh_TW' - } - - .. hint:: - - The *SearXNG locale* string has to be known by babel! - - If there is no direct 1:1 mapping, this functions tries to narrow down - engine's language (locale). If no value can be determined by these - approximation attempts the ``default`` value is returned. - - Assumptions: - - A. When user select a language the results should be optimized according to - the selected language. - - B. When user select a language and a territory the results should be - optimized with first priority on territory and second on language. - - First approximation rule (*by territory*): - - When the user selects a locale with territory (and a language), the - territory has priority over the language. If any of the official languages - in the territory is supported by the engine (``engine_locales``) it will - be used. - - Second approximation rule (*by language*): - - If "First approximation rule" brings no result or the user selects only a - language without a territory. Check in which territories the language - has an official status and if one of these territories is supported by the - engine. - - """ - # pylint: disable=too-many-branches, too-many-return-statements - - engine_locale = engine_locales.get(searxng_locale) - - if engine_locale is not None: - # There was a 1:1 mapping (e.g. a region "fr-BE --> fr_BE" or a language - # "zh --> zh"), no need to narrow language-script nor territory. - return engine_locale - - try: - locale = babel.Locale.parse(searxng_locale, sep='-') - except babel.core.UnknownLocaleError: - try: - locale = babel.Locale.parse(searxng_locale.split('-')[0]) - except babel.core.UnknownLocaleError: - return default - - searxng_lang = language_tag(locale) - engine_locale = engine_locales.get(searxng_lang) - if engine_locale is not None: - # There was a 1:1 mapping (e.g. "zh-HK --> zh_Hant" or "zh-CN --> zh_Hans") - return engine_locale - - # SearXNG's selected locale is not supported by the engine .. - - if locale.territory: - # Try to narrow by *official* languages in the territory (??-XX). - - for official_language in babel.languages.get_official_languages(locale.territory, de_facto=True): - searxng_locale = official_language + '-' + locale.territory - engine_locale = engine_locales.get(searxng_locale) - if engine_locale is not None: - return engine_locale - - # Engine does not support one of the official languages in the territory or - # there is only a language selected without a territory. - - # Now lets have a look if the searxng_lang (the language selected by the - # user) is a official language in other territories. If so, check if - # engine does support the searxng_lang in this other territory. - - if locale.language: - - terr_lang_dict = {} - for territory, langs in babel.core.get_global("territory_languages").items(): - if not langs.get(searxng_lang, {}).get('official_status'): - continue - terr_lang_dict[territory] = langs.get(searxng_lang) - - # first: check fr-FR, de-DE .. is supported by the engine - # exception: 'en' --> 'en-US' - - territory = locale.language.upper() - if territory == 'EN': - territory = 'US' - - if terr_lang_dict.get(territory): - searxng_locale = locale.language + '-' + territory - engine_locale = engine_locales.get(searxng_locale) - if engine_locale is not None: - return engine_locale - - # second: sort by population_percent and take first match - - # drawback of "population percent": if there is a territory with a - # small number of people (e.g 100) but the majority speaks the - # language, then the percentage might be 100% (--> 100 people) but in - # a different territory with more people (e.g. 10.000) where only 10% - # speak the language the total amount of speaker is higher (--> 200 - # people). - # - # By example: The population of Saint-Martin is 33.000, of which 100% - # speak French, but this is less than the 30% of the approximately 2.5 - # million Belgian citizens - # - # - 'fr-MF', 'population_percent': 100.0, 'official_status': 'official' - # - 'fr-BE', 'population_percent': 38.0, 'official_status': 'official' - - terr_lang_list = [] - for k, v in terr_lang_dict.items(): - terr_lang_list.append((k, v)) - - for territory, _lang in sorted(terr_lang_list, key=lambda item: item[1]['population_percent'], reverse=True): - searxng_locale = locale.language + '-' + territory - engine_locale = engine_locales.get(searxng_locale) - if engine_locale is not None: - return engine_locale - - # No luck: narrow by "language from territory" and "territory from language" - # does not fit to a locale supported by the engine. - - if engine_locale is None: - engine_locale = default - - return default - - -def match_locale(searxng_locale: str, locale_tag_list: List[str], fallback: Optional[str] = None) -> Optional[str]: - """Return tag from ``locale_tag_list`` that best fits to ``searxng_locale``. - - :param str searxng_locale: SearXNG's internal representation of locale (de, - de-DE, fr-BE, zh, zh-CN, zh-TW ..). - - :param list locale_tag_list: The list of locale tags to select from - - :param str fallback: fallback locale tag (if unset --> ``None``) - - The rules to find a match are implemented in :py:obj:`get_engine_locale`, - the ``engine_locales`` is build up by :py:obj:`build_engine_locales`. - - .. hint:: - - The *SearXNG locale* string and the members of ``locale_tag_list`` has to - be known by babel! The :py:obj:`ADDITIONAL_TRANSLATIONS` are used in the - UI and are not known by babel --> will be ignored. - """ - - # searxng_locale = 'es' - # locale_tag_list = ['es-AR', 'es-ES', 'es-MX'] - - if not searxng_locale: - return fallback - - locale = get_locale(searxng_locale) - if locale is None: - return fallback - - # normalize to a SearXNG locale that can be passed to get_engine_locale - - searxng_locale = language_tag(locale) - if locale.territory: - searxng_locale = region_tag(locale) - - # clean up locale_tag_list - - tag_list = [] - for tag in locale_tag_list: - if tag in ('all', 'auto') or tag in ADDITIONAL_TRANSLATIONS: - continue - tag_list.append(tag) - - # emulate fetch_traits - engine_locales = build_engine_locales(tag_list) - return get_engine_locale(searxng_locale, engine_locales, default=fallback) - - -def build_engine_locales(tag_list: List[str]): - """From a list of locale tags a dictionary is build that can be passed by - argument ``engine_locales`` to :py:obj:`get_engine_locale`. This function - is mainly used by :py:obj:`match_locale` and is similar to what the - ``fetch_traits(..)`` function of engines do. - - If there are territory codes in the ``tag_list`` that have a *script code* - additional keys are added to the returned dictionary. - - .. code:: python - - >>> import locales - >>> engine_locales = locales.build_engine_locales(['en', 'en-US', 'zh', 'zh-CN', 'zh-TW']) - >>> engine_locales - { - 'en': 'en', 'en-US': 'en-US', - 'zh': 'zh', 'zh-CN': 'zh-CN', 'zh_Hans': 'zh-CN', - 'zh-TW': 'zh-TW', 'zh_Hant': 'zh-TW' - } - >>> get_engine_locale('zh-Hans', engine_locales) - 'zh-CN' - - This function is a good example to understand the language/region model - of SearXNG: - - SearXNG only distinguishes between **search languages** and **search - regions**, by adding the *script-tags*, languages with *script-tags* can - be assigned to the **regions** that SearXNG supports. - - """ - engine_locales = {} - - for tag in tag_list: - locale = get_locale(tag) - if locale is None: - logger.warning("build_engine_locales: skip locale tag %s / unknown by babel", tag) - continue - if locale.territory: - engine_locales[region_tag(locale)] = tag - if locale.script: - engine_locales[language_tag(locale)] = tag - else: - engine_locales[language_tag(locale)] = tag - return engine_locales diff --git a/searx/metrics/__init__.py b/searx/metrics/__init__.py deleted file mode 100644 index da33025dc..000000000 --- a/searx/metrics/__init__.py +++ /dev/null @@ -1,248 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring - -import typing -import math -import contextlib -from timeit import default_timer -from operator import itemgetter - -from searx.engines import engines -from .models import HistogramStorage, CounterStorage, VoidHistogram, VoidCounterStorage -from .error_recorder import count_error, count_exception, errors_per_engines - -__all__ = [ - "initialize", - "get_engines_stats", - "get_engine_errors", - "histogram", - "histogram_observe", - "histogram_observe_time", - "counter", - "counter_inc", - "counter_add", - "count_error", - "count_exception", -] - - -ENDPOINTS = {'search'} - - -histogram_storage: typing.Optional[HistogramStorage] = None -counter_storage: typing.Optional[CounterStorage] = None - - -@contextlib.contextmanager -def histogram_observe_time(*args): - h = histogram_storage.get(*args) - before = default_timer() - yield before - duration = default_timer() - before - if h: - h.observe(duration) - else: - raise ValueError("histogram " + repr((*args,)) + " doesn't not exist") - - -def histogram_observe(duration, *args): - histogram_storage.get(*args).observe(duration) - - -def histogram(*args, raise_on_not_found=True): - h = histogram_storage.get(*args) - if raise_on_not_found and h is None: - raise ValueError("histogram " + repr((*args,)) + " doesn't not exist") - return h - - -def counter_inc(*args): - counter_storage.add(1, *args) - - -def counter_add(value, *args): - counter_storage.add(value, *args) - - -def counter(*args): - return counter_storage.get(*args) - - -def initialize(engine_names=None, enabled=True): - """ - Initialize metrics - """ - global counter_storage, histogram_storage # pylint: disable=global-statement - - if enabled: - counter_storage = CounterStorage() - histogram_storage = HistogramStorage() - else: - counter_storage = VoidCounterStorage() - histogram_storage = HistogramStorage(histogram_class=VoidHistogram) - - # max_timeout = max of all the engine.timeout - max_timeout = 2 - for engine_name in engine_names or engines: - if engine_name in engines: - max_timeout = max(max_timeout, engines[engine_name].timeout) - - # histogram configuration - histogram_width = 0.1 - histogram_size = int(1.5 * max_timeout / histogram_width) - - # engines - for engine_name in engine_names or engines: - # search count - counter_storage.configure('engine', engine_name, 'search', 'count', 'sent') - counter_storage.configure('engine', engine_name, 'search', 'count', 'successful') - # global counter of errors - counter_storage.configure('engine', engine_name, 'search', 'count', 'error') - # score of the engine - counter_storage.configure('engine', engine_name, 'score') - # result count per requests - histogram_storage.configure(1, 100, 'engine', engine_name, 'result', 'count') - # time doing HTTP requests - histogram_storage.configure(histogram_width, histogram_size, 'engine', engine_name, 'time', 'http') - # total time - # .time.request and ...response times may overlap .time.http time. - histogram_storage.configure(histogram_width, histogram_size, 'engine', engine_name, 'time', 'total') - - -def get_engine_errors(engline_name_list): - result = {} - engine_names = list(errors_per_engines.keys()) - engine_names.sort() - for engine_name in engine_names: - if engine_name not in engline_name_list: - continue - - error_stats = errors_per_engines[engine_name] - sent_search_count = max(counter('engine', engine_name, 'search', 'count', 'sent'), 1) - sorted_context_count_list = sorted(error_stats.items(), key=lambda context_count: context_count[1]) - r = [] - for context, count in sorted_context_count_list: - percentage = round(20 * count / sent_search_count) * 5 - r.append( - { - 'filename': context.filename, - 'function': context.function, - 'line_no': context.line_no, - 'code': context.code, - 'exception_classname': context.exception_classname, - 'log_message': context.log_message, - 'log_parameters': context.log_parameters, - 'secondary': context.secondary, - 'percentage': percentage, - } - ) - result[engine_name] = sorted(r, reverse=True, key=lambda d: d['percentage']) - return result - - -def get_reliabilities(engline_name_list, checker_results): - reliabilities = {} - - engine_errors = get_engine_errors(engline_name_list) - - for engine_name in engline_name_list: - checker_result = checker_results.get(engine_name, {}) - checker_success = checker_result.get('success', True) - errors = engine_errors.get(engine_name) or [] - if counter('engine', engine_name, 'search', 'count', 'sent') == 0: - # no request - reliability = None - elif checker_success and not errors: - reliability = 100 - elif 'simple' in checker_result.get('errors', {}): - # the basic (simple) test doesn't work: the engine is broken according to the checker - # even if there is no exception - reliability = 0 - else: - # pylint: disable=consider-using-generator - reliability = 100 - sum([error['percentage'] for error in errors if not error.get('secondary')]) - - reliabilities[engine_name] = { - 'reliability': reliability, - 'errors': errors, - 'checker': checker_results.get(engine_name, {}).get('errors', {}), - } - return reliabilities - - -def get_engines_stats(engine_name_list): - assert counter_storage is not None - assert histogram_storage is not None - - list_time = [] - max_time_total = max_result_count = None - - for engine_name in engine_name_list: - - sent_count = counter('engine', engine_name, 'search', 'count', 'sent') - if sent_count == 0: - continue - - result_count = histogram('engine', engine_name, 'result', 'count').percentage(50) - result_count_sum = histogram('engine', engine_name, 'result', 'count').sum - successful_count = counter('engine', engine_name, 'search', 'count', 'successful') - - time_total = histogram('engine', engine_name, 'time', 'total').percentage(50) - max_time_total = max(time_total or 0, max_time_total or 0) - max_result_count = max(result_count or 0, max_result_count or 0) - - stats = { - 'name': engine_name, - 'total': None, - 'total_p80': None, - 'total_p95': None, - 'http': None, - 'http_p80': None, - 'http_p95': None, - 'processing': None, - 'processing_p80': None, - 'processing_p95': None, - 'score': 0, - 'score_per_result': 0, - 'result_count': result_count, - } - - if successful_count and result_count_sum: - score = counter('engine', engine_name, 'score') - - stats['score'] = score - stats['score_per_result'] = score / float(result_count_sum) - - time_http = histogram('engine', engine_name, 'time', 'http').percentage(50) - time_http_p80 = time_http_p95 = 0 - - if time_http is not None: - - time_http_p80 = histogram('engine', engine_name, 'time', 'http').percentage(80) - time_http_p95 = histogram('engine', engine_name, 'time', 'http').percentage(95) - - stats['http'] = round(time_http, 1) - stats['http_p80'] = round(time_http_p80, 1) - stats['http_p95'] = round(time_http_p95, 1) - - if time_total is not None: - - time_total_p80 = histogram('engine', engine_name, 'time', 'total').percentage(80) - time_total_p95 = histogram('engine', engine_name, 'time', 'total').percentage(95) - - stats['total'] = round(time_total, 1) - stats['total_p80'] = round(time_total_p80, 1) - stats['total_p95'] = round(time_total_p95, 1) - - stats['processing'] = round(time_total - (time_http or 0), 1) - stats['processing_p80'] = round(time_total_p80 - time_http_p80, 1) - stats['processing_p95'] = round(time_total_p95 - time_http_p95, 1) - - list_time.append(stats) - - return { - 'time': list_time, - 'max_time': math.ceil(max_time_total or 0), - 'max_result_count': math.ceil(max_result_count or 0), - } diff --git a/searx/metrics/error_recorder.py b/searx/metrics/error_recorder.py deleted file mode 100644 index 1d0d6e7a3..000000000 --- a/searx/metrics/error_recorder.py +++ /dev/null @@ -1,190 +0,0 @@ -import typing -import inspect -from json import JSONDecodeError -from urllib.parse import urlparse -from httpx import HTTPError, HTTPStatusError -from searx.exceptions import ( - SearxXPathSyntaxException, - SearxEngineXPathException, - SearxEngineAPIException, - SearxEngineAccessDeniedException, -) -from searx import searx_parent_dir, settings -from searx.engines import engines - - -errors_per_engines = {} - - -class ErrorContext: - - __slots__ = ( - 'filename', - 'function', - 'line_no', - 'code', - 'exception_classname', - 'log_message', - 'log_parameters', - 'secondary', - ) - - def __init__(self, filename, function, line_no, code, exception_classname, log_message, log_parameters, secondary): - self.filename = filename - self.function = function - self.line_no = line_no - self.code = code - self.exception_classname = exception_classname - self.log_message = log_message - self.log_parameters = log_parameters - self.secondary = secondary - - def __eq__(self, o) -> bool: - if not isinstance(o, ErrorContext): - return False - return ( - self.filename == o.filename - and self.function == o.function - and self.line_no == o.line_no - and self.code == o.code - and self.exception_classname == o.exception_classname - and self.log_message == o.log_message - and self.log_parameters == o.log_parameters - and self.secondary == o.secondary - ) - - def __hash__(self): - return hash( - ( - self.filename, - self.function, - self.line_no, - self.code, - self.exception_classname, - self.log_message, - self.log_parameters, - self.secondary, - ) - ) - - def __repr__(self): - return "ErrorContext({!r}, {!r}, {!r}, {!r}, {!r}, {!r}) {!r}".format( - self.filename, - self.line_no, - self.code, - self.exception_classname, - self.log_message, - self.log_parameters, - self.secondary, - ) - - -def add_error_context(engine_name: str, error_context: ErrorContext) -> None: - errors_for_engine = errors_per_engines.setdefault(engine_name, {}) - errors_for_engine[error_context] = errors_for_engine.get(error_context, 0) + 1 - engines[engine_name].logger.warning('%s', str(error_context)) - - -def get_trace(traces): - for trace in reversed(traces): - split_filename = trace.filename.split('/') - if '/'.join(split_filename[-3:-1]) == 'searx/engines': - return trace - if '/'.join(split_filename[-4:-1]) == 'searx/search/processors': - return trace - return traces[-1] - - -def get_hostname(exc: HTTPError) -> typing.Optional[None]: - url = exc.request.url - if url is None and exc.response is not None: - url = exc.response.url - return urlparse(url).netloc - - -def get_request_exception_messages( - exc: HTTPError, -) -> typing.Tuple[typing.Optional[str], typing.Optional[str], typing.Optional[str]]: - url = None - status_code = None - reason = None - hostname = None - if hasattr(exc, '_request') and exc._request is not None: - # exc.request is property that raise an RuntimeException - # if exc._request is not defined. - url = exc.request.url - if url is None and hasattr(exc, 'response') and exc.response is not None: - url = exc.response.url - if url is not None: - hostname = url.host - if isinstance(exc, HTTPStatusError): - status_code = str(exc.response.status_code) - reason = exc.response.reason_phrase - return (status_code, reason, hostname) - - -def get_messages(exc, filename) -> typing.Tuple: - if isinstance(exc, JSONDecodeError): - return (exc.msg,) - if isinstance(exc, TypeError): - return (str(exc),) - if isinstance(exc, ValueError) and 'lxml' in filename: - return (str(exc),) - if isinstance(exc, HTTPError): - return get_request_exception_messages(exc) - if isinstance(exc, SearxXPathSyntaxException): - return (exc.xpath_str, exc.message) - if isinstance(exc, SearxEngineXPathException): - return (exc.xpath_str, exc.message) - if isinstance(exc, SearxEngineAPIException): - return (str(exc.args[0]),) - if isinstance(exc, SearxEngineAccessDeniedException): - return (exc.message,) - return () - - -def get_exception_classname(exc: Exception) -> str: - exc_class = exc.__class__ - exc_name = exc_class.__qualname__ - exc_module = exc_class.__module__ - if exc_module is None or exc_module == str.__class__.__module__: - return exc_name - return exc_module + '.' + exc_name - - -def get_error_context(framerecords, exception_classname, log_message, log_parameters, secondary) -> ErrorContext: - searx_frame = get_trace(framerecords) - filename = searx_frame.filename - if filename.startswith(searx_parent_dir): - filename = filename[len(searx_parent_dir) + 1 :] - function = searx_frame.function - line_no = searx_frame.lineno - code = searx_frame.code_context[0].strip() - del framerecords - return ErrorContext(filename, function, line_no, code, exception_classname, log_message, log_parameters, secondary) - - -def count_exception(engine_name: str, exc: Exception, secondary: bool = False) -> None: - if not settings['general']['enable_metrics']: - return - framerecords = inspect.trace() - try: - exception_classname = get_exception_classname(exc) - log_parameters = get_messages(exc, framerecords[-1][1]) - error_context = get_error_context(framerecords, exception_classname, None, log_parameters, secondary) - add_error_context(engine_name, error_context) - finally: - del framerecords - - -def count_error( - engine_name: str, log_message: str, log_parameters: typing.Optional[typing.Tuple] = None, secondary: bool = False -) -> None: - if not settings['general']['enable_metrics']: - return - framerecords = list(reversed(inspect.stack()[1:])) - try: - error_context = get_error_context(framerecords, None, log_message, log_parameters or (), secondary) - add_error_context(engine_name, error_context) - finally: - del framerecords diff --git a/searx/metrics/models.py b/searx/metrics/models.py deleted file mode 100644 index 900a7fa93..000000000 --- a/searx/metrics/models.py +++ /dev/null @@ -1,167 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -import decimal -import threading - -from searx import logger - - -__all__ = ["Histogram", "HistogramStorage", "CounterStorage"] - -logger = logger.getChild('searx.metrics') - - -class Histogram: - - _slots__ = '_lock', '_size', '_sum', '_quartiles', '_count', '_width' - - def __init__(self, width=10, size=200): - self._lock = threading.Lock() - self._width = width - self._size = size - self._quartiles = [0] * size - self._count = 0 - self._sum = 0 - - def observe(self, value): - q = int(value / self._width) - if q < 0: - """Value below zero is ignored""" - q = 0 - if q >= self._size: - """Value above the maximum is replaced by the maximum""" - q = self._size - 1 - with self._lock: - self._quartiles[q] += 1 - self._count += 1 - self._sum += value - - @property - def quartiles(self): - return list(self._quartiles) - - @property - def count(self): - return self._count - - @property - def sum(self): - return self._sum - - @property - def average(self): - with self._lock: - if self._count != 0: - return self._sum / self._count - else: - return 0 - - @property - def quartile_percentage(self): - '''Quartile in percentage''' - with self._lock: - if self._count > 0: - return [int(q * 100 / self._count) for q in self._quartiles] - else: - return self._quartiles - - @property - def quartile_percentage_map(self): - result = {} - # use Decimal to avoid rounding errors - x = decimal.Decimal(0) - width = decimal.Decimal(self._width) - width_exponent = -width.as_tuple().exponent - with self._lock: - if self._count > 0: - for y in self._quartiles: - yp = int(y * 100 / self._count) - if yp != 0: - result[round(float(x), width_exponent)] = yp - x += width - return result - - def percentage(self, percentage): - # use Decimal to avoid rounding errors - x = decimal.Decimal(0) - width = decimal.Decimal(self._width) - stop_at_value = decimal.Decimal(self._count) / 100 * percentage - sum_value = 0 - with self._lock: - if self._count > 0: - for y in self._quartiles: - sum_value += y - if sum_value >= stop_at_value: - return x - x += width - return None - - def __repr__(self): - return "Histogram" - - -class HistogramStorage: - - __slots__ = 'measures', 'histogram_class' - - def __init__(self, histogram_class=Histogram): - self.clear() - self.histogram_class = histogram_class - - def clear(self): - self.measures = {} - - def configure(self, width, size, *args): - measure = self.histogram_class(width, size) - self.measures[args] = measure - return measure - - def get(self, *args): - return self.measures.get(args, None) - - def dump(self): - logger.debug("Histograms:") - ks = sorted(self.measures.keys(), key='/'.join) - for k in ks: - logger.debug("- %-60s %s", '|'.join(k), self.measures[k]) - - -class CounterStorage: - - __slots__ = 'counters', 'lock' - - def __init__(self): - self.lock = threading.Lock() - self.clear() - - def clear(self): - with self.lock: - self.counters = {} - - def configure(self, *args): - with self.lock: - self.counters[args] = 0 - - def get(self, *args): - return self.counters[args] - - def add(self, value, *args): - with self.lock: - self.counters[args] += value - - def dump(self): - with self.lock: - ks = sorted(self.counters.keys(), key='/'.join) - logger.debug("Counters:") - for k in ks: - logger.debug("- %-60s %s", '|'.join(k), self.counters[k]) - - -class VoidHistogram(Histogram): - def observe(self, value): - pass - - -class VoidCounterStorage(CounterStorage): - def add(self, value, *args): - pass diff --git a/searx/network/__init__.py b/searx/network/__init__.py deleted file mode 100644 index 67028f5f0..000000000 --- a/searx/network/__init__.py +++ /dev/null @@ -1,266 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring, global-statement - -import asyncio -import threading -import concurrent.futures -from queue import SimpleQueue -from types import MethodType -from timeit import default_timer -from typing import Iterable, NamedTuple, Tuple, List, Dict, Union -from contextlib import contextmanager - -import httpx -import anyio - -from .network import get_network, initialize, check_network_configuration # pylint:disable=cyclic-import -from .client import get_loop -from .raise_for_httperror import raise_for_httperror - - -THREADLOCAL = threading.local() -"""Thread-local data is data for thread specific values.""" - - -def reset_time_for_thread(): - THREADLOCAL.total_time = 0 - - -def get_time_for_thread(): - """returns thread's total time or None""" - return THREADLOCAL.__dict__.get('total_time') - - -def set_timeout_for_thread(timeout, start_time=None): - THREADLOCAL.timeout = timeout - THREADLOCAL.start_time = start_time - - -def set_context_network_name(network_name): - THREADLOCAL.network = get_network(network_name) - - -def get_context_network(): - """If set return thread's network. - - If unset, return value from :py:obj:`get_network`. - """ - return THREADLOCAL.__dict__.get('network') or get_network() - - -@contextmanager -def _record_http_time(): - # pylint: disable=too-many-branches - time_before_request = default_timer() - start_time = getattr(THREADLOCAL, 'start_time', time_before_request) - try: - yield start_time - finally: - # update total_time. - # See get_time_for_thread() and reset_time_for_thread() - if hasattr(THREADLOCAL, 'total_time'): - time_after_request = default_timer() - THREADLOCAL.total_time += time_after_request - time_before_request - - -def _get_timeout(start_time, kwargs): - # pylint: disable=too-many-branches - - # timeout (httpx) - if 'timeout' in kwargs: - timeout = kwargs['timeout'] - else: - timeout = getattr(THREADLOCAL, 'timeout', None) - if timeout is not None: - kwargs['timeout'] = timeout - - # 2 minutes timeout for the requests without timeout - timeout = timeout or 120 - - # adjust actual timeout - timeout += 0.2 # overhead - if start_time: - timeout -= default_timer() - start_time - - return timeout - - -def request(method, url, **kwargs): - """same as requests/requests/api.py request(...)""" - with _record_http_time() as start_time: - network = get_context_network() - timeout = _get_timeout(start_time, kwargs) - future = asyncio.run_coroutine_threadsafe(network.request(method, url, **kwargs), get_loop()) - try: - return future.result(timeout) - except concurrent.futures.TimeoutError as e: - raise httpx.TimeoutException('Timeout', request=None) from e - - -def multi_requests(request_list: List["Request"]) -> List[Union[httpx.Response, Exception]]: - """send multiple HTTP requests in parallel. Wait for all requests to finish.""" - with _record_http_time() as start_time: - # send the requests - network = get_context_network() - loop = get_loop() - future_list = [] - for request_desc in request_list: - timeout = _get_timeout(start_time, request_desc.kwargs) - future = asyncio.run_coroutine_threadsafe( - network.request(request_desc.method, request_desc.url, **request_desc.kwargs), loop - ) - future_list.append((future, timeout)) - - # read the responses - responses = [] - for future, timeout in future_list: - try: - responses.append(future.result(timeout)) - except concurrent.futures.TimeoutError: - responses.append(httpx.TimeoutException('Timeout', request=None)) - except Exception as e: # pylint: disable=broad-except - responses.append(e) - return responses - - -class Request(NamedTuple): - """Request description for the multi_requests function""" - - method: str - url: str - kwargs: Dict[str, str] = {} - - @staticmethod - def get(url, **kwargs): - return Request('GET', url, kwargs) - - @staticmethod - def options(url, **kwargs): - return Request('OPTIONS', url, kwargs) - - @staticmethod - def head(url, **kwargs): - return Request('HEAD', url, kwargs) - - @staticmethod - def post(url, **kwargs): - return Request('POST', url, kwargs) - - @staticmethod - def put(url, **kwargs): - return Request('PUT', url, kwargs) - - @staticmethod - def patch(url, **kwargs): - return Request('PATCH', url, kwargs) - - @staticmethod - def delete(url, **kwargs): - return Request('DELETE', url, kwargs) - - -def get(url, **kwargs): - kwargs.setdefault('allow_redirects', True) - return request('get', url, **kwargs) - - -def options(url, **kwargs): - kwargs.setdefault('allow_redirects', True) - return request('options', url, **kwargs) - - -def head(url, **kwargs): - kwargs.setdefault('allow_redirects', False) - return request('head', url, **kwargs) - - -def post(url, data=None, **kwargs): - return request('post', url, data=data, **kwargs) - - -def put(url, data=None, **kwargs): - return request('put', url, data=data, **kwargs) - - -def patch(url, data=None, **kwargs): - return request('patch', url, data=data, **kwargs) - - -def delete(url, **kwargs): - return request('delete', url, **kwargs) - - -async def stream_chunk_to_queue(network, queue, method, url, **kwargs): - try: - async with await network.stream(method, url, **kwargs) as response: - queue.put(response) - # aiter_raw: access the raw bytes on the response without applying any HTTP content decoding - # https://www.python-httpx.org/quickstart/#streaming-responses - async for chunk in response.aiter_raw(65536): - if len(chunk) > 0: - queue.put(chunk) - except (httpx.StreamClosed, anyio.ClosedResourceError): - # the response was queued before the exception. - # the exception was raised on aiter_raw. - # we do nothing here: in the finally block, None will be queued - # so stream(method, url, **kwargs) generator can stop - pass - except Exception as e: # pylint: disable=broad-except - # broad except to avoid this scenario: - # exception in network.stream(method, url, **kwargs) - # -> the exception is not catch here - # -> queue None (in finally) - # -> the function below steam(method, url, **kwargs) has nothing to return - queue.put(e) - finally: - queue.put(None) - - -def _stream_generator(method, url, **kwargs): - queue = SimpleQueue() - network = get_context_network() - future = asyncio.run_coroutine_threadsafe(stream_chunk_to_queue(network, queue, method, url, **kwargs), get_loop()) - - # yield chunks - obj_or_exception = queue.get() - while obj_or_exception is not None: - if isinstance(obj_or_exception, Exception): - raise obj_or_exception - yield obj_or_exception - obj_or_exception = queue.get() - future.result() - - -def _close_response_method(self): - asyncio.run_coroutine_threadsafe(self.aclose(), get_loop()) - # reach the end of _self.generator ( _stream_generator ) to an avoid memory leak. - # it makes sure that : - # * the httpx response is closed (see the stream_chunk_to_queue function) - # * to call future.result() in _stream_generator - for _ in self._generator: # pylint: disable=protected-access - continue - - -def stream(method, url, **kwargs) -> Tuple[httpx.Response, Iterable[bytes]]: - """Replace httpx.stream. - - Usage: - response, stream = poolrequests.stream(...) - for chunk in stream: - ... - - httpx.Client.stream requires to write the httpx.HTTPTransport version of the - the httpx.AsyncHTTPTransport declared above. - """ - generator = _stream_generator(method, url, **kwargs) - - # yield response - response = next(generator) # pylint: disable=stop-iteration-return - if isinstance(response, Exception): - raise response - - response._generator = generator # pylint: disable=protected-access - response.close = MethodType(_close_response_method, response) - - return response, generator diff --git a/searx/network/client.py b/searx/network/client.py deleted file mode 100644 index 23826c75d..000000000 --- a/searx/network/client.py +++ /dev/null @@ -1,237 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring, global-statement - -import asyncio -import logging -import random -from ssl import SSLContext -import threading -from typing import Any, Dict - -import httpx -from httpx_socks import AsyncProxyTransport -from python_socks import parse_proxy_url, ProxyConnectionError, ProxyTimeoutError, ProxyError - -from searx import logger - -# Optional uvloop (support Python 3.6) -try: - import uvloop -except ImportError: - pass -else: - uvloop.install() - - -logger = logger.getChild('searx.network.client') -LOOP = None -SSLCONTEXTS: Dict[Any, SSLContext] = {} - - -def shuffle_ciphers(ssl_context): - """Shuffle httpx's default ciphers of a SSL context randomly. - - From `What Is TLS Fingerprint and How to Bypass It`_ - - > When implementing TLS fingerprinting, servers can't operate based on a - > locked-in whitelist database of fingerprints. New fingerprints appear - > when web clients or TLS libraries release new versions. So, they have to - > live off a blocklist database instead. - > ... - > It's safe to leave the first three as is but shuffle the remaining ciphers - > and you can bypass the TLS fingerprint check. - - .. _What Is TLS Fingerprint and How to Bypass It: - https://www.zenrows.com/blog/what-is-tls-fingerprint#how-to-bypass-tls-fingerprinting - - """ - c_list = httpx._config.DEFAULT_CIPHERS.split(':') # pylint: disable=protected-access - sc_list, c_list = c_list[:3], c_list[3:] - random.shuffle(c_list) - ssl_context.set_ciphers(":".join(sc_list + c_list)) - - -def get_sslcontexts(proxy_url=None, cert=None, verify=True, trust_env=True, http2=False): - key = (proxy_url, cert, verify, trust_env, http2) - if key not in SSLCONTEXTS: - SSLCONTEXTS[key] = httpx.create_ssl_context(cert, verify, trust_env, http2) - shuffle_ciphers(SSLCONTEXTS[key]) - return SSLCONTEXTS[key] - - -class AsyncHTTPTransportNoHttp(httpx.AsyncHTTPTransport): - """Block HTTP request - - The constructor is blank because httpx.AsyncHTTPTransport.__init__ creates an SSLContext unconditionally: - https://github.com/encode/httpx/blob/0f61aa58d66680c239ce43c8cdd453e7dc532bfc/httpx/_transports/default.py#L271 - - Each SSLContext consumes more than 500kb of memory, since there is about one network per engine. - - In consequence, this class overrides all public methods - - For reference: https://github.com/encode/httpx/issues/2298 - """ - - def __init__(self, *args, **kwargs): - # pylint: disable=super-init-not-called - # this on purpose if the base class is not called - pass - - async def handle_async_request(self, request): - raise httpx.UnsupportedProtocol('HTTP protocol is disabled') - - async def aclose(self) -> None: - pass - - async def __aenter__(self): - return self - - async def __aexit__( - self, - exc_type=None, - exc_value=None, - traceback=None, - ) -> None: - pass - - -class AsyncProxyTransportFixed(AsyncProxyTransport): - """Fix httpx_socks.AsyncProxyTransport - - Map python_socks exceptions to httpx.ProxyError exceptions - """ - - async def handle_async_request(self, request): - try: - return await super().handle_async_request(request) - except ProxyConnectionError as e: - raise httpx.ProxyError("ProxyConnectionError: " + e.strerror, request=request) from e - except ProxyTimeoutError as e: - raise httpx.ProxyError("ProxyTimeoutError: " + e.args[0], request=request) from e - except ProxyError as e: - raise httpx.ProxyError("ProxyError: " + e.args[0], request=request) from e - - -def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit, retries): - # support socks5h (requests compatibility): - # https://requests.readthedocs.io/en/master/user/advanced/#socks - # socks5:// hostname is resolved on client side - # socks5h:// hostname is resolved on proxy side - rdns = False - socks5h = 'socks5h://' - if proxy_url.startswith(socks5h): - proxy_url = 'socks5://' + proxy_url[len(socks5h) :] - rdns = True - - proxy_type, proxy_host, proxy_port, proxy_username, proxy_password = parse_proxy_url(proxy_url) - verify = get_sslcontexts(proxy_url, None, verify, True, http2) if verify is True else verify - return AsyncProxyTransportFixed( - proxy_type=proxy_type, - proxy_host=proxy_host, - proxy_port=proxy_port, - username=proxy_username, - password=proxy_password, - rdns=rdns, - loop=get_loop(), - verify=verify, - http2=http2, - local_address=local_address, - limits=limit, - retries=retries, - ) - - -def get_transport(verify, http2, local_address, proxy_url, limit, retries): - verify = get_sslcontexts(None, None, verify, True, http2) if verify is True else verify - return httpx.AsyncHTTPTransport( - # pylint: disable=protected-access - verify=verify, - http2=http2, - limits=limit, - proxy=httpx._config.Proxy(proxy_url) if proxy_url else None, - local_address=local_address, - retries=retries, - ) - - -def new_client( - # pylint: disable=too-many-arguments - enable_http, - verify, - enable_http2, - max_connections, - max_keepalive_connections, - keepalive_expiry, - proxies, - local_address, - retries, - max_redirects, - hook_log_response, -): - limit = httpx.Limits( - max_connections=max_connections, - max_keepalive_connections=max_keepalive_connections, - keepalive_expiry=keepalive_expiry, - ) - # See https://www.python-httpx.org/advanced/#routing - mounts = {} - for pattern, proxy_url in proxies.items(): - if not enable_http and pattern.startswith('http://'): - continue - if proxy_url.startswith('socks4://') or proxy_url.startswith('socks5://') or proxy_url.startswith('socks5h://'): - mounts[pattern] = get_transport_for_socks_proxy( - verify, enable_http2, local_address, proxy_url, limit, retries - ) - else: - mounts[pattern] = get_transport(verify, enable_http2, local_address, proxy_url, limit, retries) - - if not enable_http: - mounts['http://'] = AsyncHTTPTransportNoHttp() - - transport = get_transport(verify, enable_http2, local_address, None, limit, retries) - - event_hooks = None - if hook_log_response: - event_hooks = {'response': [hook_log_response]} - - return httpx.AsyncClient( - transport=transport, - mounts=mounts, - max_redirects=max_redirects, - event_hooks=event_hooks, - ) - - -def get_loop(): - return LOOP - - -def init(): - # log - for logger_name in ( - 'httpx', - 'httpcore.proxy', - 'httpcore.connection', - 'httpcore.http11', - 'httpcore.http2', - 'hpack.hpack', - 'hpack.table', - ): - logging.getLogger(logger_name).setLevel(logging.WARNING) - - # loop - def loop_thread(): - global LOOP - LOOP = asyncio.new_event_loop() - LOOP.run_forever() - - thread = threading.Thread( - target=loop_thread, - name='asyncio_loop', - daemon=True, - ) - thread.start() - - -init() diff --git a/searx/network/network.py b/searx/network/network.py deleted file mode 100644 index 3ab0bff3a..000000000 --- a/searx/network/network.py +++ /dev/null @@ -1,427 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=global-statement -# pylint: disable=missing-module-docstring, missing-class-docstring - -import atexit -import asyncio -import ipaddress -from itertools import cycle -from typing import Dict - -import httpx - -from searx import logger, searx_debug -from .client import new_client, get_loop, AsyncHTTPTransportNoHttp -from .raise_for_httperror import raise_for_httperror - - -logger = logger.getChild('network') -DEFAULT_NAME = '__DEFAULT__' -NETWORKS: Dict[str, 'Network'] = {} -# requests compatibility when reading proxy settings from settings.yml -PROXY_PATTERN_MAPPING = { - 'http': 'http://', - 'https': 'https://', - 'socks4': 'socks4://', - 'socks5': 'socks5://', - 'socks5h': 'socks5h://', - 'http:': 'http://', - 'https:': 'https://', - 'socks4:': 'socks4://', - 'socks5:': 'socks5://', - 'socks5h:': 'socks5h://', -} - -ADDRESS_MAPPING = {'ipv4': '0.0.0.0', 'ipv6': '::'} - - -class Network: - - __slots__ = ( - 'enable_http', - 'verify', - 'enable_http2', - 'max_connections', - 'max_keepalive_connections', - 'keepalive_expiry', - 'local_addresses', - 'proxies', - 'using_tor_proxy', - 'max_redirects', - 'retries', - 'retry_on_http_error', - '_local_addresses_cycle', - '_proxies_cycle', - '_clients', - '_logger', - ) - - _TOR_CHECK_RESULT = {} - - def __init__( - # pylint: disable=too-many-arguments - self, - enable_http=True, - verify=True, - enable_http2=False, - max_connections=None, - max_keepalive_connections=None, - keepalive_expiry=None, - proxies=None, - using_tor_proxy=False, - local_addresses=None, - retries=0, - retry_on_http_error=None, - max_redirects=30, - logger_name=None, - ): - - self.enable_http = enable_http - self.verify = verify - self.enable_http2 = enable_http2 - self.max_connections = max_connections - self.max_keepalive_connections = max_keepalive_connections - self.keepalive_expiry = keepalive_expiry - self.proxies = proxies - self.using_tor_proxy = using_tor_proxy - self.local_addresses = local_addresses - self.retries = retries - self.retry_on_http_error = retry_on_http_error - self.max_redirects = max_redirects - self._local_addresses_cycle = self.get_ipaddress_cycle() - self._proxies_cycle = self.get_proxy_cycles() - self._clients = {} - self._logger = logger.getChild(logger_name) if logger_name else logger - self.check_parameters() - - def check_parameters(self): - for address in self.iter_ipaddresses(): - if '/' in address: - ipaddress.ip_network(address, False) - else: - ipaddress.ip_address(address) - - if self.proxies is not None and not isinstance(self.proxies, (str, dict)): - raise ValueError('proxies type has to be str, dict or None') - - def iter_ipaddresses(self): - local_addresses = self.local_addresses - if not local_addresses: - return - if isinstance(local_addresses, str): - local_addresses = [local_addresses] - for address in local_addresses: - yield address - - def get_ipaddress_cycle(self): - while True: - count = 0 - for address in self.iter_ipaddresses(): - if '/' in address: - for a in ipaddress.ip_network(address, False).hosts(): - yield str(a) - count += 1 - else: - a = ipaddress.ip_address(address) - yield str(a) - count += 1 - if count == 0: - yield None - - def iter_proxies(self): - if not self.proxies: - return - # https://www.python-httpx.org/compatibility/#proxy-keys - if isinstance(self.proxies, str): - yield 'all://', [self.proxies] - else: - for pattern, proxy_url in self.proxies.items(): - pattern = PROXY_PATTERN_MAPPING.get(pattern, pattern) - if isinstance(proxy_url, str): - proxy_url = [proxy_url] - yield pattern, proxy_url - - def get_proxy_cycles(self): - proxy_settings = {} - for pattern, proxy_urls in self.iter_proxies(): - proxy_settings[pattern] = cycle(proxy_urls) - while True: - # pylint: disable=stop-iteration-return - yield tuple((pattern, next(proxy_url_cycle)) for pattern, proxy_url_cycle in proxy_settings.items()) - - async def log_response(self, response: httpx.Response): - request = response.request - status = f"{response.status_code} {response.reason_phrase}" - response_line = f"{response.http_version} {status}" - content_type = response.headers.get("Content-Type") - content_type = f' ({content_type})' if content_type else '' - self._logger.debug(f'HTTP Request: {request.method} {request.url} "{response_line}"{content_type}') - - @staticmethod - async def check_tor_proxy(client: httpx.AsyncClient, proxies) -> bool: - if proxies in Network._TOR_CHECK_RESULT: - return Network._TOR_CHECK_RESULT[proxies] - - result = True - # ignore client._transport because it is not used with all:// - for transport in client._mounts.values(): # pylint: disable=protected-access - if isinstance(transport, AsyncHTTPTransportNoHttp): - continue - if getattr(transport, "_pool") and getattr( - transport._pool, "_rdns", False # pylint: disable=protected-access - ): - continue - return False - response = await client.get("https://check.torproject.org/api/ip", timeout=60) - if not response.json()["IsTor"]: - result = False - Network._TOR_CHECK_RESULT[proxies] = result - return result - - async def get_client(self, verify=None, max_redirects=None): - verify = self.verify if verify is None else verify - max_redirects = self.max_redirects if max_redirects is None else max_redirects - local_address = next(self._local_addresses_cycle) - proxies = next(self._proxies_cycle) # is a tuple so it can be part of the key - key = (verify, max_redirects, local_address, proxies) - hook_log_response = self.log_response if searx_debug else None - if key not in self._clients or self._clients[key].is_closed: - client = new_client( - self.enable_http, - verify, - self.enable_http2, - self.max_connections, - self.max_keepalive_connections, - self.keepalive_expiry, - dict(proxies), - local_address, - 0, - max_redirects, - hook_log_response, - ) - if self.using_tor_proxy and not await self.check_tor_proxy(client, proxies): - await client.aclose() - raise httpx.ProxyError('Network configuration problem: not using Tor') - self._clients[key] = client - return self._clients[key] - - async def aclose(self): - async def close_client(client): - try: - await client.aclose() - except httpx.HTTPError: - pass - - await asyncio.gather(*[close_client(client) for client in self._clients.values()], return_exceptions=False) - - @staticmethod - def extract_kwargs_clients(kwargs): - kwargs_clients = {} - if 'verify' in kwargs: - kwargs_clients['verify'] = kwargs.pop('verify') - if 'max_redirects' in kwargs: - kwargs_clients['max_redirects'] = kwargs.pop('max_redirects') - if 'allow_redirects' in kwargs: - # see https://github.com/encode/httpx/pull/1808 - kwargs['follow_redirects'] = kwargs.pop('allow_redirects') - return kwargs_clients - - @staticmethod - def extract_do_raise_for_httperror(kwargs): - do_raise_for_httperror = True - if 'raise_for_httperror' in kwargs: - do_raise_for_httperror = kwargs['raise_for_httperror'] - del kwargs['raise_for_httperror'] - return do_raise_for_httperror - - @staticmethod - def patch_response(response, do_raise_for_httperror): - if isinstance(response, httpx.Response): - # requests compatibility (response is not streamed) - # see also https://www.python-httpx.org/compatibility/#checking-for-4xx5xx-responses - response.ok = not response.is_error - - # raise an exception - if do_raise_for_httperror: - raise_for_httperror(response) - - return response - - def is_valid_response(self, response): - # pylint: disable=too-many-boolean-expressions - if ( - (self.retry_on_http_error is True and 400 <= response.status_code <= 599) - or (isinstance(self.retry_on_http_error, list) and response.status_code in self.retry_on_http_error) - or (isinstance(self.retry_on_http_error, int) and response.status_code == self.retry_on_http_error) - ): - return False - return True - - async def call_client(self, stream, method, url, **kwargs): - retries = self.retries - was_disconnected = False - do_raise_for_httperror = Network.extract_do_raise_for_httperror(kwargs) - kwargs_clients = Network.extract_kwargs_clients(kwargs) - while retries >= 0: # pragma: no cover - client = await self.get_client(**kwargs_clients) - try: - if stream: - response = client.stream(method, url, **kwargs) - else: - response = await client.request(method, url, **kwargs) - if self.is_valid_response(response) or retries <= 0: - return Network.patch_response(response, do_raise_for_httperror) - except httpx.RemoteProtocolError as e: - if not was_disconnected: - # the server has closed the connection: - # try again without decreasing the retries variable & with a new HTTP client - was_disconnected = True - await client.aclose() - self._logger.warning('httpx.RemoteProtocolError: the server has disconnected, retrying') - continue - if retries <= 0: - raise e - except (httpx.RequestError, httpx.HTTPStatusError) as e: - if retries <= 0: - raise e - retries -= 1 - - async def request(self, method, url, **kwargs): - return await self.call_client(False, method, url, **kwargs) - - async def stream(self, method, url, **kwargs): - return await self.call_client(True, method, url, **kwargs) - - @classmethod - async def aclose_all(cls): - await asyncio.gather(*[network.aclose() for network in NETWORKS.values()], return_exceptions=False) - - -def get_network(name=None): - return NETWORKS.get(name or DEFAULT_NAME) - - -def check_network_configuration(): - async def check(): - exception_count = 0 - for network in NETWORKS.values(): - if network.using_tor_proxy: - try: - await network.get_client() - except Exception: # pylint: disable=broad-except - network._logger.exception('Error') # pylint: disable=protected-access - exception_count += 1 - return exception_count - - future = asyncio.run_coroutine_threadsafe(check(), get_loop()) - exception_count = future.result() - if exception_count > 0: - raise RuntimeError("Invalid network configuration") - - -def initialize(settings_engines=None, settings_outgoing=None): - # pylint: disable=import-outside-toplevel) - from searx.engines import engines - from searx import settings - - # pylint: enable=import-outside-toplevel) - - settings_engines = settings_engines or settings['engines'] - settings_outgoing = settings_outgoing or settings['outgoing'] - - # default parameters for AsyncHTTPTransport - # see https://github.com/encode/httpx/blob/e05a5372eb6172287458b37447c30f650047e1b8/httpx/_transports/default.py#L108-L121 # pylint: disable=line-too-long - default_params = { - 'enable_http': False, - 'verify': settings_outgoing['verify'], - 'enable_http2': settings_outgoing['enable_http2'], - 'max_connections': settings_outgoing['pool_connections'], - 'max_keepalive_connections': settings_outgoing['pool_maxsize'], - 'keepalive_expiry': settings_outgoing['keepalive_expiry'], - 'local_addresses': settings_outgoing['source_ips'], - 'using_tor_proxy': settings_outgoing['using_tor_proxy'], - 'proxies': settings_outgoing['proxies'], - 'max_redirects': settings_outgoing['max_redirects'], - 'retries': settings_outgoing['retries'], - 'retry_on_http_error': None, - } - - def new_network(params, logger_name=None): - nonlocal default_params - result = {} - result.update(default_params) - result.update(params) - if logger_name: - result['logger_name'] = logger_name - return Network(**result) - - def iter_networks(): - nonlocal settings_engines - for engine_spec in settings_engines: - engine_name = engine_spec['name'] - engine = engines.get(engine_name) - if engine is None: - continue - network = getattr(engine, 'network', None) - yield engine_name, engine, network - - if NETWORKS: - done() - NETWORKS.clear() - NETWORKS[DEFAULT_NAME] = new_network({}, logger_name='default') - NETWORKS['ipv4'] = new_network({'local_addresses': '0.0.0.0'}, logger_name='ipv4') - NETWORKS['ipv6'] = new_network({'local_addresses': '::'}, logger_name='ipv6') - - # define networks from outgoing.networks - for network_name, network in settings_outgoing['networks'].items(): - NETWORKS[network_name] = new_network(network, logger_name=network_name) - - # define networks from engines.[i].network (except references) - for engine_name, engine, network in iter_networks(): - if network is None: - network = {} - for attribute_name, attribute_value in default_params.items(): - if hasattr(engine, attribute_name): - network[attribute_name] = getattr(engine, attribute_name) - else: - network[attribute_name] = attribute_value - NETWORKS[engine_name] = new_network(network, logger_name=engine_name) - elif isinstance(network, dict): - NETWORKS[engine_name] = new_network(network, logger_name=engine_name) - - # define networks from engines.[i].network (references) - for engine_name, engine, network in iter_networks(): - if isinstance(network, str): - NETWORKS[engine_name] = NETWORKS[network] - - # the /image_proxy endpoint has a dedicated network. - # same parameters than the default network, but HTTP/2 is disabled. - # It decreases the CPU load average, and the total time is more or less the same - if 'image_proxy' not in NETWORKS: - image_proxy_params = default_params.copy() - image_proxy_params['enable_http2'] = False - NETWORKS['image_proxy'] = new_network(image_proxy_params, logger_name='image_proxy') - - -@atexit.register -def done(): - """Close all HTTP client - - Avoid a warning at exit - See https://github.com/encode/httpx/pull/2026 - - Note: since Network.aclose has to be async, it is not possible to call this method on Network.__del__ - So Network.aclose is called here using atexit.register - """ - try: - loop = get_loop() - if loop: - future = asyncio.run_coroutine_threadsafe(Network.aclose_all(), loop) - # wait 3 seconds to close the HTTP clients - future.result(3) - finally: - NETWORKS.clear() - - -NETWORKS[DEFAULT_NAME] = Network() diff --git a/searx/network/raise_for_httperror.py b/searx/network/raise_for_httperror.py deleted file mode 100644 index 9f847d436..000000000 --- a/searx/network/raise_for_httperror.py +++ /dev/null @@ -1,78 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Raise exception for an HTTP response is an error. - -""" - -from searx.exceptions import ( - SearxEngineCaptchaException, - SearxEngineTooManyRequestsException, - SearxEngineAccessDeniedException, -) -from searx import get_setting - - -def is_cloudflare_challenge(resp): - if resp.status_code in [429, 503]: - if ('__cf_chl_jschl_tk__=' in resp.text) or ( - '/cdn-cgi/challenge-platform/' in resp.text - and 'orchestrate/jsch/v1' in resp.text - and 'window._cf_chl_enter(' in resp.text - ): - return True - if resp.status_code == 403 and '__cf_chl_captcha_tk__=' in resp.text: - return True - return False - - -def is_cloudflare_firewall(resp): - return resp.status_code == 403 and '1020' in resp.text - - -def raise_for_cloudflare_captcha(resp): - if resp.headers.get('Server', '').startswith('cloudflare'): - if is_cloudflare_challenge(resp): - # https://support.cloudflare.com/hc/en-us/articles/200170136-Understanding-Cloudflare-Challenge-Passage-Captcha- - # suspend for 2 weeks - raise SearxEngineCaptchaException( - message='Cloudflare CAPTCHA', suspended_time=get_setting('search.suspended_times.cf_SearxEngineCaptcha') - ) - - if is_cloudflare_firewall(resp): - raise SearxEngineAccessDeniedException( - message='Cloudflare Firewall', - suspended_time=get_setting('search.suspended_times.cf_SearxEngineAccessDenied'), - ) - - -def raise_for_recaptcha(resp): - if resp.status_code == 503 and '"https://www.google.com/recaptcha/' in resp.text: - raise SearxEngineCaptchaException( - message='ReCAPTCHA', suspended_time=get_setting('search.suspended_times.recaptcha_SearxEngineCaptcha') - ) - - -def raise_for_captcha(resp): - raise_for_cloudflare_captcha(resp) - raise_for_recaptcha(resp) - - -def raise_for_httperror(resp): - """Raise exception for an HTTP response is an error. - - Args: - resp (requests.Response): Response to check - - Raises: - requests.HTTPError: raise by resp.raise_for_status() - searx.exceptions.SearxEngineAccessDeniedException: raise when the HTTP status code is 402 or 403. - searx.exceptions.SearxEngineTooManyRequestsException: raise when the HTTP status code is 429. - searx.exceptions.SearxEngineCaptchaException: raise when if CATPCHA challenge is detected. - """ - if resp.status_code and resp.status_code >= 400: - raise_for_captcha(resp) - if resp.status_code in (402, 403): - raise SearxEngineAccessDeniedException(message='HTTP error ' + str(resp.status_code)) - if resp.status_code == 429: - raise SearxEngineTooManyRequestsException() - resp.raise_for_status() diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py deleted file mode 100644 index 951ec9de3..000000000 --- a/searx/plugins/__init__.py +++ /dev/null @@ -1,234 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring, missing-class-docstring - -import sys -from hashlib import sha256 -from importlib import import_module -from os import listdir, makedirs, remove, stat, utime -from os.path import abspath, basename, dirname, exists, join -from shutil import copyfile -from pkgutil import iter_modules -from logging import getLogger -from typing import List, Tuple - -from searx import logger, settings - - -class Plugin: # pylint: disable=too-few-public-methods - """This class is currently never initialized and only used for type hinting.""" - - id: str - name: str - description: str - default_on: bool - js_dependencies: Tuple[str] - css_dependencies: Tuple[str] - preference_section: str - - -logger = logger.getChild("plugins") - -required_attrs = ( - # fmt: off - ("name", str), - ("description", str), - ("default_on", bool) - # fmt: on -) - -optional_attrs = ( - # fmt: off - ("js_dependencies", tuple), - ("css_dependencies", tuple), - ("preference_section", str), - # fmt: on -) - - -def sha_sum(filename): - with open(filename, "rb") as f: - file_content_bytes = f.read() - return sha256(file_content_bytes).hexdigest() - - -def sync_resource(base_path, resource_path, name, target_dir, plugin_dir): - dep_path = join(base_path, resource_path) - file_name = basename(dep_path) - resource_path = join(target_dir, file_name) - if not exists(resource_path) or sha_sum(dep_path) != sha_sum(resource_path): - try: - copyfile(dep_path, resource_path) - # copy atime_ns and mtime_ns, so the weak ETags (generated by - # the HTTP server) do not change - dep_stat = stat(dep_path) - utime(resource_path, ns=(dep_stat.st_atime_ns, dep_stat.st_mtime_ns)) - except IOError: - logger.critical("failed to copy plugin resource {0} for plugin {1}".format(file_name, name)) - sys.exit(3) - - # returning with the web path of the resource - return join("plugins/external_plugins", plugin_dir, file_name) - - -def prepare_package_resources(plugin, plugin_module_name): - plugin_base_path = dirname(abspath(plugin.__file__)) - - plugin_dir = plugin_module_name - target_dir = join(settings["ui"]["static_path"], "plugins/external_plugins", plugin_dir) - try: - makedirs(target_dir, exist_ok=True) - except IOError: - logger.critical("failed to create resource directory {0} for plugin {1}".format(target_dir, plugin_module_name)) - sys.exit(3) - - resources = [] - - if hasattr(plugin, "js_dependencies"): - resources.extend(map(basename, plugin.js_dependencies)) - plugin.js_dependencies = [ - sync_resource(plugin_base_path, x, plugin_module_name, target_dir, plugin_dir) - for x in plugin.js_dependencies - ] - - if hasattr(plugin, "css_dependencies"): - resources.extend(map(basename, plugin.css_dependencies)) - plugin.css_dependencies = [ - sync_resource(plugin_base_path, x, plugin_module_name, target_dir, plugin_dir) - for x in plugin.css_dependencies - ] - - for f in listdir(target_dir): - if basename(f) not in resources: - resource_path = join(target_dir, basename(f)) - try: - remove(resource_path) - except IOError: - logger.critical( - "failed to remove unused resource file {0} for plugin {1}".format(resource_path, plugin_module_name) - ) - sys.exit(3) - - -def load_plugin(plugin_module_name, external): - # pylint: disable=too-many-branches - try: - plugin = import_module(plugin_module_name) - except ( - SyntaxError, - KeyboardInterrupt, - SystemExit, - SystemError, - ImportError, - RuntimeError, - ) as e: - logger.critical("%s: fatal exception", plugin_module_name, exc_info=e) - sys.exit(3) - except BaseException: - logger.exception("%s: exception while loading, the plugin is disabled", plugin_module_name) - return None - - # difference with searx: use module name instead of the user name - plugin.id = plugin_module_name - - # - plugin.logger = getLogger(plugin_module_name) - - for plugin_attr, plugin_attr_type in required_attrs: - if not hasattr(plugin, plugin_attr): - logger.critical('%s: missing attribute "%s", cannot load plugin', plugin, plugin_attr) - sys.exit(3) - attr = getattr(plugin, plugin_attr) - if not isinstance(attr, plugin_attr_type): - type_attr = str(type(attr)) - logger.critical( - '{1}: attribute "{0}" is of type {2}, must be of type {3}, cannot load plugin'.format( - plugin, plugin_attr, type_attr, plugin_attr_type - ) - ) - sys.exit(3) - - for plugin_attr, plugin_attr_type in optional_attrs: - if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type): - setattr(plugin, plugin_attr, plugin_attr_type()) - - if not hasattr(plugin, "preference_section"): - plugin.preference_section = "general" - - # query plugin - if plugin.preference_section == "query": - for plugin_attr in ("query_keywords", "query_examples"): - if not hasattr(plugin, plugin_attr): - logger.critical('missing attribute "{0}", cannot load plugin: {1}'.format(plugin_attr, plugin)) - sys.exit(3) - - if settings.get("enabled_plugins"): - # searx compatibility: plugin.name in settings['enabled_plugins'] - plugin.default_on = plugin.name in settings["enabled_plugins"] or plugin.id in settings["enabled_plugins"] - - # copy resources if this is an external plugin - if external: - prepare_package_resources(plugin, plugin_module_name) - - logger.debug("%s: loaded", plugin_module_name) - - return plugin - - -def load_and_initialize_plugin(plugin_module_name, external, init_args): - plugin = load_plugin(plugin_module_name, external) - if plugin and hasattr(plugin, 'init'): - try: - return plugin if plugin.init(*init_args) else None - except Exception: # pylint: disable=broad-except - plugin.logger.exception("Exception while calling init, the plugin is disabled") - return None - return plugin - - -class PluginStore: - def __init__(self): - self.plugins: List[Plugin] = [] - - def __iter__(self): - for plugin in self.plugins: - yield plugin - - def register(self, plugin): - self.plugins.append(plugin) - - def call(self, ordered_plugin_list, plugin_type, *args, **kwargs): - ret = True - for plugin in ordered_plugin_list: - if hasattr(plugin, plugin_type): - try: - ret = getattr(plugin, plugin_type)(*args, **kwargs) - if not ret: - break - except Exception: # pylint: disable=broad-except - plugin.logger.exception("Exception while calling %s", plugin_type) - return ret - - -plugins = PluginStore() - - -def plugin_module_names(): - yield_plugins = set() - - # embedded plugins - for module in iter_modules(path=[dirname(__file__)]): - yield (__name__ + "." + module.name, False) - yield_plugins.add(module.name) - # external plugins - for module_name in settings['plugins']: - if module_name not in yield_plugins: - yield (module_name, True) - yield_plugins.add(module_name) - - -def initialize(app): - for module_name, external in plugin_module_names(): - plugin = load_and_initialize_plugin(module_name, external, (app, settings)) - if plugin: - plugins.register(plugin) diff --git a/searx/plugins/ahmia_filter.py b/searx/plugins/ahmia_filter.py deleted file mode 100644 index 326da9ca1..000000000 --- a/searx/plugins/ahmia_filter.py +++ /dev/null @@ -1,29 +0,0 @@ -''' - SPDX-License-Identifier: AGPL-3.0-or-later -''' - -from hashlib import md5 -from searx.data import ahmia_blacklist_loader - -name = "Ahmia blacklist" -description = "Filter out onion results that appear in Ahmia's blacklist. (See https://ahmia.fi/blacklist)" -default_on = True -preference_section = 'onions' - -ahmia_blacklist = None - - -def on_result(request, search, result): - if not result.get('is_onion') or not result.get('parsed_url'): - return True - result_hash = md5(result['parsed_url'].hostname.encode()).hexdigest() - return result_hash not in ahmia_blacklist - - -def init(app, settings): - global ahmia_blacklist # pylint: disable=global-statement - if not settings['outgoing']['using_tor_proxy']: - # disable the plugin - return False - ahmia_blacklist = ahmia_blacklist_loader() - return True diff --git a/searx/plugins/hash_plugin.py b/searx/plugins/hash_plugin.py deleted file mode 100644 index edb91dd8e..000000000 --- a/searx/plugins/hash_plugin.py +++ /dev/null @@ -1,57 +0,0 @@ -''' -searx is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -searx is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with searx. If not, see < http://www.gnu.org/licenses/ >. - -(C) 2015 by Adam Tauber, -(C) 2018, 2020 by Vaclav Zouzalik -''' - -from flask_babel import gettext -import hashlib -import re - -name = "Hash plugin" -description = gettext("Converts strings to different hash digests.") -default_on = True -preference_section = 'query' -query_keywords = ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'] -query_examples = 'sha512 The quick brown fox jumps over the lazy dog' - -parser_re = re.compile('(md5|sha1|sha224|sha256|sha384|sha512) (.*)', re.I) - - -def post_search(request, search): - # process only on first page - if search.search_query.pageno > 1: - return True - m = parser_re.match(search.search_query.query) - if not m: - # wrong query - return True - - function, string = m.groups() - if string.strip().__len__() == 0: - # end if the string is empty - return True - - # select hash function - f = hashlib.new(function.lower()) - - # make digest from the given string - f.update(string.encode('utf-8').strip()) - answer = function + " " + gettext('hash digest') + ": " + f.hexdigest() - - # print result - search.result_container.answers.clear() - search.result_container.answers['hash'] = {'answer': answer} - return True diff --git a/searx/plugins/hostname_replace.py b/searx/plugins/hostname_replace.py deleted file mode 100644 index 039aadb91..000000000 --- a/searx/plugins/hostname_replace.py +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -import re -from urllib.parse import urlunparse, urlparse -from searx import settings -from searx.plugins import logger -from flask_babel import gettext - -name = gettext('Hostname replace') -description = gettext('Rewrite result hostnames or remove results based on the hostname') -default_on = False -preference_section = 'general' - -plugin_id = 'hostname_replace' - -replacements = {re.compile(p): r for (p, r) in settings[plugin_id].items()} if plugin_id in settings else {} - -logger = logger.getChild(plugin_id) -parsed = 'parsed_url' -_url_fields = ['iframe_src', 'audio_src'] - - -def on_result(request, search, result): - - for (pattern, replacement) in replacements.items(): - - if parsed in result: - if pattern.search(result[parsed].netloc): - # to keep or remove this result from the result list depends - # (only) on the 'parsed_url' - if not replacement: - return False - result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc)) - result['url'] = urlunparse(result[parsed]) - - for url_field in _url_fields: - if result.get(url_field): - url_src = urlparse(result[url_field]) - if pattern.search(url_src.netloc): - if not replacement: - del result[url_field] - else: - url_src = url_src._replace(netloc=pattern.sub(replacement, url_src.netloc)) - result[url_field] = urlunparse(url_src) - - return True diff --git a/searx/plugins/oa_doi_rewrite.py b/searx/plugins/oa_doi_rewrite.py deleted file mode 100644 index f0e07735d..000000000 --- a/searx/plugins/oa_doi_rewrite.py +++ /dev/null @@ -1,47 +0,0 @@ -from urllib.parse import urlparse, parse_qsl -from flask_babel import gettext -import re -from searx import settings - - -regex = re.compile(r'10\.\d{4,9}/[^\s]+') - -name = gettext('Open Access DOI rewrite') -description = gettext('Avoid paywalls by redirecting to open-access versions of publications when available') -default_on = False -preference_section = 'general' - - -def extract_doi(url): - match = regex.search(url.path) - if match: - return match.group(0) - for _, v in parse_qsl(url.query): - match = regex.search(v) - if match: - return match.group(0) - return None - - -def get_doi_resolver(preferences): - doi_resolvers = settings['doi_resolvers'] - selected_resolver = preferences.get_value('doi_resolver')[0] - if selected_resolver not in doi_resolvers: - selected_resolver = settings['default_doi_resolver'] - return doi_resolvers[selected_resolver] - - -def on_result(request, search, result): - if 'parsed_url' not in result: - return True - - doi = extract_doi(result['parsed_url']) - if doi and len(doi) < 50: - for suffix in ('/', '.pdf', '.xml', '/full', '/meta', '/abstract'): - if doi.endswith(suffix): - doi = doi[: -len(suffix)] - result['url'] = get_doi_resolver(request.preferences) + doi - result['parsed_url'] = urlparse(result['url']) - if 'doi' not in result: - result['doi'] = doi - return True diff --git a/searx/plugins/self_info.py b/searx/plugins/self_info.py deleted file mode 100644 index 8079ee0d4..000000000 --- a/searx/plugins/self_info.py +++ /dev/null @@ -1,30 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring,invalid-name - -import re -from flask_babel import gettext - -from searx.botdetection._helpers import get_real_ip - -name = gettext('Self Information') -description = gettext('Displays your IP if the query is "ip" and your user agent if the query contains "user agent".') -default_on = True -preference_section = 'query' -query_keywords = ['user-agent'] -query_examples = '' - -# Self User Agent regex -p = re.compile('.*user[ -]agent.*', re.IGNORECASE) - - -def post_search(request, search): - if search.search_query.pageno > 1: - return True - if search.search_query.query == 'ip': - ip = get_real_ip(request) - search.result_container.answers['ip'] = {'answer': ip} - elif p.match(search.search_query.query): - ua = request.user_agent - search.result_container.answers['user-agent'] = {'answer': ua} - return True diff --git a/searx/plugins/tor_check.py b/searx/plugins/tor_check.py deleted file mode 100644 index 831c90ce5..000000000 --- a/searx/plugins/tor_check.py +++ /dev/null @@ -1,92 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""A plugin to check if the ip address of the request is a Tor exit-node if the -user searches for ``tor-check``. It fetches the tor exit node list from -https://check.torproject.org/exit-addresses and parses all the IPs into a list, -then checks if the user's IP address is in it. - -Enable in ``settings.yml``: - -.. code:: yaml - - enabled_plugins: - .. - - 'Tor check plugin' - -""" - -import re -from flask_babel import gettext -from httpx import HTTPError -from searx.network import get - -default_on = False - -name = gettext("Tor check plugin") -'''Translated name of the plugin''' - -description = gettext( - "This plugin checks if the address of the request is a Tor exit-node, and" - " informs the user if it is; like check.torproject.org, but from SearXNG." -) -'''Translated description of the plugin.''' - -preference_section = 'query' -'''The preference section where the plugin is shown.''' - -query_keywords = ['tor-check'] -'''Query keywords shown in the preferences.''' - -query_examples = '' -'''Query examples shown in the preferences.''' - -# Regex for exit node addresses in the list. -reg = re.compile(r"(?<=ExitAddress )\S+") - - -def post_search(request, search): - - if search.search_query.pageno > 1: - return True - - if search.search_query.query.lower() == "tor-check": - - # Request the list of tor exit nodes. - try: - resp = get("https://check.torproject.org/exit-addresses") - node_list = re.findall(reg, resp.text) - - except HTTPError: - # No answer, return error - search.result_container.answers["tor"] = { - "answer": gettext( - "Could not download the list of Tor exit-nodes from: https://check.torproject.org/exit-addresses" - ) - } - return True - - x_forwarded_for = request.headers.getlist("X-Forwarded-For") - - if x_forwarded_for: - ip_address = x_forwarded_for[0] - else: - ip_address = request.remote_addr - - if ip_address in node_list: - search.result_container.answers["tor"] = { - "answer": gettext( - "You are using Tor and it looks like you have this external IP address: {ip_address}".format( - ip_address=ip_address - ) - ) - } - else: - search.result_container.answers["tor"] = { - "answer": gettext( - "You are not using Tor and you have this external IP address: {ip_address}".format( - ip_address=ip_address - ) - ) - } - - return True diff --git a/searx/plugins/tracker_url_remover.py b/searx/plugins/tracker_url_remover.py deleted file mode 100644 index 42c58e524..000000000 --- a/searx/plugins/tracker_url_remover.py +++ /dev/null @@ -1,55 +0,0 @@ -''' -searx is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -searx is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with searx. If not, see < http://www.gnu.org/licenses/ >. - -(C) 2015 by Adam Tauber, -''' - -from flask_babel import gettext -import re -from urllib.parse import urlunparse, parse_qsl, urlencode - -regexes = { - re.compile(r'utm_[^&]+'), - re.compile(r'(wkey|wemail)[^&]*'), - re.compile(r'(_hsenc|_hsmi|hsCtaTracking|__hssc|__hstc|__hsfp)[^&]*'), - re.compile(r'&$'), -} - -name = gettext('Tracker URL remover') -description = gettext('Remove trackers arguments from the returned URL') -default_on = True -preference_section = 'privacy' - - -def on_result(request, search, result): - if 'parsed_url' not in result: - return True - - query = result['parsed_url'].query - - if query == "": - return True - parsed_query = parse_qsl(query) - - changes = 0 - for i, (param_name, _) in enumerate(list(parsed_query)): - for reg in regexes: - if reg.match(param_name): - parsed_query.pop(i - changes) - changes += 1 - result['parsed_url'] = result['parsed_url']._replace(query=urlencode(parsed_query)) - result['url'] = urlunparse(result['parsed_url']) - break - - return True diff --git a/searx/preferences.py b/searx/preferences.py deleted file mode 100644 index ad0e2867e..000000000 --- a/searx/preferences.py +++ /dev/null @@ -1,599 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Searx preferences implementation. -""" - -# pylint: disable=useless-object-inheritance - -from base64 import urlsafe_b64encode, urlsafe_b64decode -from zlib import compress, decompress -from urllib.parse import parse_qs, urlencode -from typing import Iterable, Dict, List, Optional -from collections import OrderedDict - -import flask -import babel - -from searx import settings, autocomplete -from searx.enginelib import Engine -from searx.plugins import Plugin -from searx.locales import LOCALE_NAMES -from searx.webutils import VALID_LANGUAGE_CODE -from searx.engines import DEFAULT_CATEGORY - - -COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years -DOI_RESOLVERS = list(settings['doi_resolvers']) - -MAP_STR2BOOL: Dict[str, bool] = OrderedDict( - [ - ('0', False), - ('1', True), - ('on', True), - ('off', False), - ('True', True), - ('False', False), - ('none', False), - ] -) - - -class ValidationException(Exception): - - """Exption from ``cls.__init__`` when configuration value is invalid.""" - - -class Setting: - """Base class of user settings""" - - def __init__(self, default_value, locked: bool = False): - super().__init__() - self.value = default_value - self.locked = locked - - def parse(self, data: str): - """Parse ``data`` and store the result at ``self.value`` - - If needed, its overwritten in the inheritance. - """ - self.value = data - - def get_value(self): - """Returns the value of the setting - - If needed, its overwritten in the inheritance. - """ - return self.value - - def save(self, name: str, resp: flask.Response): - """Save cookie ``name`` in the HTTP response object - - If needed, its overwritten in the inheritance.""" - resp.set_cookie(name, self.value, max_age=COOKIE_MAX_AGE) - - -class StringSetting(Setting): - """Setting of plain string values""" - - -class EnumStringSetting(Setting): - """Setting of a value which can only come from the given choices""" - - def __init__(self, default_value: str, choices: Iterable[str], locked=False): - super().__init__(default_value, locked) - self.choices = choices - self._validate_selection(self.value) - - def _validate_selection(self, selection: str): - if selection not in self.choices: - raise ValidationException('Invalid value: "{0}"'.format(selection)) - - def parse(self, data: str): - """Parse and validate ``data`` and store the result at ``self.value``""" - self._validate_selection(data) - self.value = data - - -class MultipleChoiceSetting(Setting): - """Setting of values which can only come from the given choices""" - - def __init__(self, default_value: List[str], choices: Iterable[str], locked=False): - super().__init__(default_value, locked) - self.choices = choices - self._validate_selections(self.value) - - def _validate_selections(self, selections: List[str]): - for item in selections: - if item not in self.choices: - raise ValidationException('Invalid value: "{0}"'.format(selections)) - - def parse(self, data: str): - """Parse and validate ``data`` and store the result at ``self.value``""" - if data == '': - self.value = [] - return - - elements = data.split(',') - self._validate_selections(elements) - self.value = elements - - def parse_form(self, data: List[str]): - if self.locked: - return - - self.value = [] - for choice in data: - if choice in self.choices and choice not in self.value: - self.value.append(choice) - - def save(self, name: str, resp: flask.Response): - """Save cookie ``name`` in the HTTP response object""" - resp.set_cookie(name, ','.join(self.value), max_age=COOKIE_MAX_AGE) - - -class SetSetting(Setting): - """Setting of values of type ``set`` (comma separated string)""" - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.values = set() - - def get_value(self): - """Returns a string with comma separated values.""" - return ','.join(self.values) - - def parse(self, data: str): - """Parse and validate ``data`` and store the result at ``self.value``""" - if data == '': - self.values = set() - return - - elements = data.split(',') - for element in elements: - self.values.add(element) - - def parse_form(self, data: str): - if self.locked: - return - - elements = data.split(',') - self.values = set(elements) - - def save(self, name: str, resp: flask.Response): - """Save cookie ``name`` in the HTTP response object""" - resp.set_cookie(name, ','.join(self.values), max_age=COOKIE_MAX_AGE) - - -class SearchLanguageSetting(EnumStringSetting): - """Available choices may change, so user's value may not be in choices anymore""" - - def _validate_selection(self, selection): - if selection != '' and selection != 'auto' and not VALID_LANGUAGE_CODE.match(selection): - raise ValidationException('Invalid language code: "{0}"'.format(selection)) - - def parse(self, data: str): - """Parse and validate ``data`` and store the result at ``self.value``""" - if data not in self.choices and data != self.value: - # hack to give some backwards compatibility with old language cookies - data = str(data).replace('_', '-') - lang = data.split('-', maxsplit=1)[0] - - if data in self.choices: - pass - elif lang in self.choices: - data = lang - else: - data = self.value - self._validate_selection(data) - self.value = data - - -class MapSetting(Setting): - """Setting of a value that has to be translated in order to be storable""" - - def __init__(self, default_value, map: Dict[str, object], locked=False): # pylint: disable=redefined-builtin - super().__init__(default_value, locked) - self.map = map - - if self.value not in self.map.values(): - raise ValidationException('Invalid default value') - - def parse(self, data: str): - """Parse and validate ``data`` and store the result at ``self.value``""" - - if data not in self.map: - raise ValidationException('Invalid choice: {0}'.format(data)) - self.value = self.map[data] - self.key = data # pylint: disable=attribute-defined-outside-init - - def save(self, name: str, resp: flask.Response): - """Save cookie ``name`` in the HTTP response object""" - if hasattr(self, 'key'): - resp.set_cookie(name, self.key, max_age=COOKIE_MAX_AGE) - - -class BooleanSetting(Setting): - """Setting of a boolean value that has to be translated in order to be storable""" - - def normalized_str(self, val): - for v_str, v_obj in MAP_STR2BOOL.items(): - if val == v_obj: - return v_str - raise ValueError("Invalid value: %s (%s) is not a boolean!" % (repr(val), type(val))) - - def parse(self, data: str): - """Parse and validate ``data`` and store the result at ``self.value``""" - self.value = MAP_STR2BOOL[data] - self.key = self.normalized_str(self.value) # pylint: disable=attribute-defined-outside-init - - def save(self, name: str, resp: flask.Response): - """Save cookie ``name`` in the HTTP response object""" - if hasattr(self, 'key'): - resp.set_cookie(name, self.key, max_age=COOKIE_MAX_AGE) - - -class BooleanChoices: - """Maps strings to booleans that are either true or false.""" - - def __init__(self, name: str, choices: Dict[str, bool], locked: bool = False): - self.name = name - self.choices = choices - self.locked = locked - self.default_choices = dict(choices) - - def transform_form_items(self, items): - return items - - def transform_values(self, values): - return values - - def parse_cookie(self, data_disabled: str, data_enabled: str): - for disabled in data_disabled.split(','): - if disabled in self.choices: - self.choices[disabled] = False - - for enabled in data_enabled.split(','): - if enabled in self.choices: - self.choices[enabled] = True - - def parse_form(self, items: List[str]): - if self.locked: - return - - disabled = self.transform_form_items(items) - for setting in self.choices: - self.choices[setting] = setting not in disabled - - @property - def enabled(self): - return (k for k, v in self.choices.items() if v) - - @property - def disabled(self): - return (k for k, v in self.choices.items() if not v) - - def save(self, resp: flask.Response): - """Save cookie in the HTTP response object""" - disabled_changed = (k for k in self.disabled if self.default_choices[k]) - enabled_changed = (k for k in self.enabled if not self.default_choices[k]) - resp.set_cookie('disabled_{0}'.format(self.name), ','.join(disabled_changed), max_age=COOKIE_MAX_AGE) - resp.set_cookie('enabled_{0}'.format(self.name), ','.join(enabled_changed), max_age=COOKIE_MAX_AGE) - - def get_disabled(self): - return self.transform_values(list(self.disabled)) - - def get_enabled(self): - return self.transform_values(list(self.enabled)) - - -class EnginesSetting(BooleanChoices): - """Engine settings""" - - def __init__(self, default_value, engines: Iterable[Engine]): - choices = {} - for engine in engines: - for category in engine.categories: - if not category in list(settings['categories_as_tabs'].keys()) + [DEFAULT_CATEGORY]: - continue - choices['{}__{}'.format(engine.name, category)] = not engine.disabled - super().__init__(default_value, choices) - - def transform_form_items(self, items): - return [item[len('engine_') :].replace('_', ' ').replace(' ', '__') for item in items] - - def transform_values(self, values): - if len(values) == 1 and next(iter(values)) == '': - return [] - transformed_values = [] - for value in values: - engine, category = value.split('__') - transformed_values.append((engine, category)) - return transformed_values - - -class PluginsSetting(BooleanChoices): - """Plugin settings""" - - def __init__(self, default_value, plugins: Iterable[Plugin]): - super().__init__(default_value, {plugin.id: plugin.default_on for plugin in plugins}) - - def transform_form_items(self, items): - return [item[len('plugin_') :] for item in items] - - -class ClientPref: - """Container to assemble client prefferences and settings.""" - - # hint: searx.webapp.get_client_settings should be moved into this class - - locale: babel.Locale - """Locale prefered by the client.""" - - def __init__(self, locale: Optional[babel.Locale] = None): - self.locale = locale - - @property - def locale_tag(self): - if self.locale is None: - return None - tag = self.locale.language - if self.locale.territory: - tag += '-' + self.locale.territory - return tag - - @classmethod - def from_http_request(cls, http_request: flask.Request): - """Build ClientPref object from HTTP request. - - - `Accept-Language used for locale setting - `__ - - """ - al_header = http_request.headers.get("Accept-Language") - if not al_header: - return cls(locale=None) - - pairs = [] - for l in al_header.split(','): - # fmt: off - lang, qvalue = [_.strip() for _ in (l.split(';') + ['q=1',])[:2]] - # fmt: on - try: - qvalue = float(qvalue.split('=')[-1]) - locale = babel.Locale.parse(lang, sep='-') - except (ValueError, babel.core.UnknownLocaleError): - continue - pairs.append((locale, qvalue)) - - locale = None - if pairs: - pairs.sort(reverse=True, key=lambda x: x[1]) - locale = pairs[0][0] - return cls(locale=locale) - - -class Preferences: - """Validates and saves preferences to cookies""" - - def __init__( - self, - themes: List[str], - categories: List[str], - engines: Dict[str, Engine], - plugins: Iterable[Plugin], - client: Optional[ClientPref] = None, - ): - - super().__init__() - - self.key_value_settings: Dict[str, Setting] = { - # fmt: off - 'categories': MultipleChoiceSetting( - ['general'], - locked=is_locked('categories'), - choices=categories + ['none'] - ), - 'language': SearchLanguageSetting( - settings['search']['default_lang'], - locked=is_locked('language'), - choices=settings['search']['languages'] + [''] - ), - 'locale': EnumStringSetting( - settings['ui']['default_locale'], - locked=is_locked('locale'), - choices=list(LOCALE_NAMES.keys()) + [''] - ), - 'autocomplete': EnumStringSetting( - settings['search']['autocomplete'], - locked=is_locked('autocomplete'), - choices=list(autocomplete.backends.keys()) + [''] - ), - 'image_proxy': BooleanSetting( - settings['server']['image_proxy'], - locked=is_locked('image_proxy') - ), - 'method': EnumStringSetting( - settings['server']['method'], - locked=is_locked('method'), - choices=('GET', 'POST') - ), - 'safesearch': MapSetting( - settings['search']['safe_search'], - locked=is_locked('safesearch'), - map={ - '0': 0, - '1': 1, - '2': 2 - } - ), - 'theme': EnumStringSetting( - settings['ui']['default_theme'], - locked=is_locked('theme'), - choices=themes - ), - 'results_on_new_tab': BooleanSetting( - settings['ui']['results_on_new_tab'], - locked=is_locked('results_on_new_tab') - ), - 'doi_resolver': MultipleChoiceSetting( - [settings['default_doi_resolver'], ], - locked=is_locked('doi_resolver'), - choices=DOI_RESOLVERS - ), - 'simple_style': EnumStringSetting( - settings['ui']['theme_args']['simple_style'], - locked=is_locked('simple_style'), - choices=['', 'auto', 'light', 'dark'] - ), - 'center_alignment': BooleanSetting( - settings['ui']['center_alignment'], - locked=is_locked('center_alignment') - ), - 'advanced_search': BooleanSetting( - settings['ui']['advanced_search'], - locked=is_locked('advanced_search') - ), - 'query_in_title': BooleanSetting( - settings['ui']['query_in_title'], - locked=is_locked('query_in_title') - ), - 'infinite_scroll': BooleanSetting( - settings['ui']['infinite_scroll'], - locked=is_locked('infinite_scroll') - ), - 'search_on_category_select': BooleanSetting( - settings['ui']['search_on_category_select'], - locked=is_locked('search_on_category_select') - ), - 'hotkeys': EnumStringSetting( - settings['ui']['hotkeys'], - choices=['default', 'vim'] - ), - # fmt: on - } - - self.engines = EnginesSetting('engines', engines=engines.values()) - self.plugins = PluginsSetting('plugins', plugins=plugins) - self.tokens = SetSetting('tokens') - self.client = client or ClientPref() - self.unknown_params: Dict[str, str] = {} - - def get_as_url_params(self): - """Return preferences as URL parameters""" - settings_kv = {} - for k, v in self.key_value_settings.items(): - if v.locked: - continue - if isinstance(v, MultipleChoiceSetting): - settings_kv[k] = ','.join(v.get_value()) - else: - settings_kv[k] = v.get_value() - - settings_kv['disabled_engines'] = ','.join(self.engines.disabled) - settings_kv['enabled_engines'] = ','.join(self.engines.enabled) - - settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled) - settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled) - - settings_kv['tokens'] = ','.join(self.tokens.values) - - return urlsafe_b64encode(compress(urlencode(settings_kv).encode())).decode() - - def parse_encoded_data(self, input_data: str): - """parse (base64) preferences from request (``flask.request.form['preferences']``)""" - bin_data = decompress(urlsafe_b64decode(input_data)) - dict_data = {} - for x, y in parse_qs(bin_data.decode('ascii'), keep_blank_values=True).items(): - dict_data[x] = y[0] - self.parse_dict(dict_data) - - def parse_dict(self, input_data: Dict[str, str]): - """parse preferences from request (``flask.request.form``)""" - for user_setting_name, user_setting in input_data.items(): - if user_setting_name in self.key_value_settings: - if self.key_value_settings[user_setting_name].locked: - continue - self.key_value_settings[user_setting_name].parse(user_setting) - elif user_setting_name == 'disabled_engines': - self.engines.parse_cookie(input_data.get('disabled_engines', ''), input_data.get('enabled_engines', '')) - elif user_setting_name == 'disabled_plugins': - self.plugins.parse_cookie(input_data.get('disabled_plugins', ''), input_data.get('enabled_plugins', '')) - elif user_setting_name == 'tokens': - self.tokens.parse(user_setting) - elif not any( - user_setting_name.startswith(x) for x in ['enabled_', 'disabled_', 'engine_', 'category_', 'plugin_'] - ): - self.unknown_params[user_setting_name] = user_setting - - def parse_form(self, input_data: Dict[str, str]): - """Parse formular (````) data from a ``flask.request.form``""" - disabled_engines = [] - enabled_categories = [] - disabled_plugins = [] - - # boolean preferences are not sent by the form if they're false, - # so we have to add them as false manually if they're not sent (then they would be true) - for key, setting in self.key_value_settings.items(): - if key not in input_data.keys() and isinstance(setting, BooleanSetting): - input_data[key] = 'False' - - for user_setting_name, user_setting in input_data.items(): - if user_setting_name in self.key_value_settings: - self.key_value_settings[user_setting_name].parse(user_setting) - elif user_setting_name.startswith('engine_'): - disabled_engines.append(user_setting_name) - elif user_setting_name.startswith('category_'): - enabled_categories.append(user_setting_name[len('category_') :]) - elif user_setting_name.startswith('plugin_'): - disabled_plugins.append(user_setting_name) - elif user_setting_name == 'tokens': - self.tokens.parse_form(user_setting) - else: - self.unknown_params[user_setting_name] = user_setting - self.key_value_settings['categories'].parse_form(enabled_categories) - self.engines.parse_form(disabled_engines) - self.plugins.parse_form(disabled_plugins) - - # cannot be used in case of engines or plugins - def get_value(self, user_setting_name: str): - """Returns the value for ``user_setting_name``""" - ret_val = None - if user_setting_name in self.key_value_settings: - ret_val = self.key_value_settings[user_setting_name].get_value() - if user_setting_name in self.unknown_params: - ret_val = self.unknown_params[user_setting_name] - return ret_val - - def save(self, resp: flask.Response): - """Save cookie in the HTTP response object""" - for user_setting_name, user_setting in self.key_value_settings.items(): - # pylint: disable=unnecessary-dict-index-lookup - if self.key_value_settings[user_setting_name].locked: - continue - user_setting.save(user_setting_name, resp) - self.engines.save(resp) - self.plugins.save(resp) - self.tokens.save('tokens', resp) - for k, v in self.unknown_params.items(): - resp.set_cookie(k, v, max_age=COOKIE_MAX_AGE) - return resp - - def validate_token(self, engine): - valid = True - if hasattr(engine, 'tokens') and engine.tokens: - valid = False - for token in self.tokens.values: - if token in engine.tokens: - valid = True - break - - return valid - - -def is_locked(setting_name: str): - """Checks if a given setting name is locked by settings.yml""" - if 'preferences' not in settings: - return False - if 'lock' not in settings['preferences']: - return False - return setting_name in settings['preferences']['lock'] diff --git a/searx/query.py b/searx/query.py deleted file mode 100644 index 49fa89a9c..000000000 --- a/searx/query.py +++ /dev/null @@ -1,348 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -from abc import abstractmethod, ABC -import re - -from searx import settings -from searx.sxng_locales import sxng_locales -from searx.engines import categories, engines, engine_shortcuts -from searx.external_bang import get_bang_definition_and_autocomplete -from searx.search import EngineRef -from searx.webutils import VALID_LANGUAGE_CODE - - -class QueryPartParser(ABC): - - __slots__ = "raw_text_query", "enable_autocomplete" - - @staticmethod - @abstractmethod - def check(raw_value): - """Check if raw_value can be parsed""" - - def __init__(self, raw_text_query, enable_autocomplete): - self.raw_text_query = raw_text_query - self.enable_autocomplete = enable_autocomplete - - @abstractmethod - def __call__(self, raw_value): - """Try to parse raw_value: set the self.raw_text_query properties - - return True if raw_value has been parsed - - self.raw_text_query.autocomplete_list is also modified - if self.enable_autocomplete is True - """ - - def _add_autocomplete(self, value): - if value not in self.raw_text_query.autocomplete_list: - self.raw_text_query.autocomplete_list.append(value) - - -class TimeoutParser(QueryPartParser): - @staticmethod - def check(raw_value): - return raw_value[0] == '<' - - def __call__(self, raw_value): - value = raw_value[1:] - found = self._parse(value) if len(value) > 0 else False - if self.enable_autocomplete and not value: - self._autocomplete() - return found - - def _parse(self, value): - if not value.isdigit(): - return False - raw_timeout_limit = int(value) - if raw_timeout_limit < 100: - # below 100, the unit is the second ( <3 = 3 seconds timeout ) - self.raw_text_query.timeout_limit = float(raw_timeout_limit) - else: - # 100 or above, the unit is the millisecond ( <850 = 850 milliseconds timeout ) - self.raw_text_query.timeout_limit = raw_timeout_limit / 1000.0 - return True - - def _autocomplete(self): - for suggestion in ['<3', '<850']: - self._add_autocomplete(suggestion) - - -class LanguageParser(QueryPartParser): - @staticmethod - def check(raw_value): - return raw_value[0] == ':' - - def __call__(self, raw_value): - value = raw_value[1:].lower().replace('_', '-') - found = self._parse(value) if len(value) > 0 else False - if self.enable_autocomplete and not found: - self._autocomplete(value) - return found - - def _parse(self, value): - found = False - # check if any language-code is equal with - # declared language-codes - for lc in sxng_locales: - lang_id, lang_name, country, english_name, _flag = map(str.lower, lc) - - # if correct language-code is found - # set it as new search-language - - if ( - value == lang_id or value == lang_name or value == english_name or value.replace('-', ' ') == country - ) and value not in self.raw_text_query.languages: - found = True - lang_parts = lang_id.split('-') - if len(lang_parts) == 2: - self.raw_text_query.languages.append(lang_parts[0] + '-' + lang_parts[1].upper()) - else: - self.raw_text_query.languages.append(lang_id) - # to ensure best match (first match is not necessarily the best one) - if value == lang_id: - break - - # user may set a valid, yet not selectable language - if VALID_LANGUAGE_CODE.match(value) or value == 'auto': - lang_parts = value.split('-') - if len(lang_parts) > 1: - value = lang_parts[0].lower() + '-' + lang_parts[1].upper() - if value not in self.raw_text_query.languages: - self.raw_text_query.languages.append(value) - found = True - - return found - - def _autocomplete(self, value): - if not value: - # show some example queries - if len(settings['search']['languages']) < 10: - for lang in settings['search']['languages']: - self.raw_text_query.autocomplete_list.append(':' + lang) - else: - for lang in [":en", ":en_us", ":english", ":united_kingdom"]: - self.raw_text_query.autocomplete_list.append(lang) - return - - for lc in sxng_locales: - if lc[0] not in settings['search']['languages']: - continue - lang_id, lang_name, country, english_name, _flag = map(str.lower, lc) - - # check if query starts with language-id - if lang_id.startswith(value): - if len(value) <= 2: - self._add_autocomplete(':' + lang_id.split('-')[0]) - else: - self._add_autocomplete(':' + lang_id) - - # check if query starts with language name - if lang_name.startswith(value) or english_name.startswith(value): - self._add_autocomplete(':' + lang_name) - - # check if query starts with country - # here "new_zealand" is "new-zealand" (see __call__) - if country.startswith(value.replace('-', ' ')): - self._add_autocomplete(':' + country.replace(' ', '_')) - - -class ExternalBangParser(QueryPartParser): - @staticmethod - def check(raw_value): - return raw_value.startswith('!!') and len(raw_value) > 2 - - def __call__(self, raw_value): - value = raw_value[2:] - found, bang_ac_list = self._parse(value) if len(value) > 0 else (False, []) - if self.enable_autocomplete: - self._autocomplete(bang_ac_list) - return found - - def _parse(self, value): - found = False - bang_definition, bang_ac_list = get_bang_definition_and_autocomplete(value) - if bang_definition is not None: - self.raw_text_query.external_bang = value - found = True - return found, bang_ac_list - - def _autocomplete(self, bang_ac_list): - if not bang_ac_list: - bang_ac_list = ['g', 'ddg', 'bing'] - for external_bang in bang_ac_list: - self._add_autocomplete('!!' + external_bang) - - -class BangParser(QueryPartParser): - @staticmethod - def check(raw_value): - # make sure it's not any bang with double '!!' - return raw_value[0] == '!' and (len(raw_value) < 2 or raw_value[1] != '!') - - def __call__(self, raw_value): - value = raw_value[1:].replace('-', ' ').replace('_', ' ') - found = self._parse(value) if len(value) > 0 else False - if found and raw_value[0] == '!': - self.raw_text_query.specific = True - if self.enable_autocomplete: - self._autocomplete(raw_value[0], value) - return found - - def _parse(self, value): - # check if prefix is equal with engine shortcut - if value in engine_shortcuts: - value = engine_shortcuts[value] - - # check if prefix is equal with engine name - if value in engines: - self.raw_text_query.enginerefs.append(EngineRef(value, 'none')) - return True - - # check if prefix is equal with category name - if value in categories: - # using all engines for that search, which - # are declared under that category name - self.raw_text_query.enginerefs.extend( - EngineRef(engine.name, value) - for engine in categories[value] - if (engine.name, value) not in self.raw_text_query.disabled_engines - ) - return True - - return False - - def _autocomplete(self, first_char, value): - if not value: - # show some example queries - for suggestion in ['images', 'wikipedia', 'osm']: - if suggestion not in self.raw_text_query.disabled_engines or suggestion in categories: - self._add_autocomplete(first_char + suggestion) - return - - # check if query starts with category name - for category in categories: - if category.startswith(value): - self._add_autocomplete(first_char + category.replace(' ', '_')) - - # check if query starts with engine name - for engine in engines: - if engine.startswith(value): - self._add_autocomplete(first_char + engine.replace(' ', '_')) - - # check if query starts with engine shortcut - for engine_shortcut in engine_shortcuts: - if engine_shortcut.startswith(value): - self._add_autocomplete(first_char + engine_shortcut) - - -class FeelingLuckyParser(QueryPartParser): - @staticmethod - def check(raw_value): - return raw_value == '!!' - - def __call__(self, raw_value): - self.raw_text_query.redirect_to_first_result = True - return True - - -class RawTextQuery: - """parse raw text query (the value from the html input)""" - - PARSER_CLASSES = [ - TimeoutParser, # force the timeout - LanguageParser, # force a language - ExternalBangParser, # external bang (must be before BangParser) - BangParser, # force an engine or category - FeelingLuckyParser, # redirect to the first link in the results list - ] - - def __init__(self, query, disabled_engines): - assert isinstance(query, str) - # input parameters - self.query = query - self.disabled_engines = disabled_engines if disabled_engines else [] - # parsed values - self.enginerefs = [] - self.languages = [] - self.timeout_limit = None - self.external_bang = None - self.specific = False - self.autocomplete_list = [] - # internal properties - self.query_parts = [] # use self.getFullQuery() - self.user_query_parts = [] # use self.getQuery() - self.autocomplete_location = None - self.redirect_to_first_result = False - self._parse_query() - - def _parse_query(self): - """ - parse self.query, if tags are set, which - change the search engine or search-language - """ - - # split query, including whitespaces - raw_query_parts = re.split(r'(\s+)', self.query) - - last_index_location = None - autocomplete_index = len(raw_query_parts) - 1 - - for i, query_part in enumerate(raw_query_parts): - # part does only contain spaces, skip - if query_part.isspace() or query_part == '': - continue - - # parse special commands - special_part = False - for parser_class in RawTextQuery.PARSER_CLASSES: - if parser_class.check(query_part): - special_part = parser_class(self, i == autocomplete_index)(query_part) - break - - # append query part to query_part list - qlist = self.query_parts if special_part else self.user_query_parts - qlist.append(query_part) - last_index_location = (qlist, len(qlist) - 1) - - self.autocomplete_location = last_index_location - - def get_autocomplete_full_query(self, text): - qlist, position = self.autocomplete_location - qlist[position] = text - return self.getFullQuery() - - def changeQuery(self, query): - self.user_query_parts = query.strip().split() - self.query = self.getFullQuery() - self.autocomplete_location = (self.user_query_parts, len(self.user_query_parts) - 1) - self.autocomplete_list = [] - return self - - def getQuery(self): - return ' '.join(self.user_query_parts) - - def getFullQuery(self): - """ - get full query including whitespaces - """ - return '{0} {1}'.format(' '.join(self.query_parts), self.getQuery()).strip() - - def __str__(self): - return self.getFullQuery() - - def __repr__(self): - return ( - f"<{self.__class__.__name__} " - + f"query={self.query!r} " - + f"disabled_engines={self.disabled_engines!r}\n " - + f"languages={self.languages!r} " - + f"timeout_limit={self.timeout_limit!r} " - + f"external_bang={self.external_bang!r} " - + f"specific={self.specific!r} " - + f"enginerefs={self.enginerefs!r}\n " - + f"autocomplete_list={self.autocomplete_list!r}\n " - + f"query_parts={self.query_parts!r}\n " - + f"user_query_parts={self.user_query_parts!r} >\n" - + f"redirect_to_first_result={self.redirect_to_first_result!r}" - ) diff --git a/searx/redisdb.py b/searx/redisdb.py deleted file mode 100644 index 0544d697f..000000000 --- a/searx/redisdb.py +++ /dev/null @@ -1,70 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""Implementation of the redis client (redis-py_). - -.. _redis-py: https://github.com/redis/redis-py - -This implementation uses the :ref:`settings redis` setup from ``settings.yml``. -A redis DB connect can be tested by:: - - >>> from searx import redisdb - >>> redisdb.initialize() - True - >>> db = redisdb.client() - >>> db.set("foo", "bar") - True - >>> db.get("foo") - b'bar' - >>> - -""" - -import os -import pwd -import logging -import redis -from searx import get_setting - - -OLD_REDIS_URL_DEFAULT_URL = 'unix:///usr/local/searxng-redis/run/redis.sock?db=0' -"""This was the default Redis URL in settings.yml.""" - -_CLIENT = None -logger = logging.getLogger(__name__) - - -def client() -> redis.Redis: - return _CLIENT - - -def initialize(): - global _CLIENT # pylint: disable=global-statement - redis_url = get_setting('redis.url') - if not redis_url: - return False - try: - # create a client, but no connection is done - _CLIENT = redis.Redis.from_url(redis_url) - - # log the parameters as seen by the redis lib, without the password - kwargs = _CLIENT.get_connection_kwargs().copy() - kwargs.pop('password', None) - kwargs = ' '.join([f'{k}={v!r}' for k, v in kwargs.items()]) - logger.info("connecting to Redis %s", kwargs) - - # check the connection - _CLIENT.ping() - - # no error: the redis connection is working - logger.info("connected to Redis") - return True - except redis.exceptions.RedisError as e: - _CLIENT = None - _pw = pwd.getpwuid(os.getuid()) - logger.exception("[%s (%s)] can't connect redis DB ...", _pw.pw_name, _pw.pw_uid) - if redis_url == OLD_REDIS_URL_DEFAULT_URL and isinstance(e, redis.exceptions.ConnectionError): - logger.info( - "You can safely ignore the above Redis error if you don't use Redis. " - "You can remove this error by setting redis.url to false in your settings.yml." - ) - return False diff --git a/searx/redislib.py b/searx/redislib.py deleted file mode 100644 index d65212b8c..000000000 --- a/searx/redislib.py +++ /dev/null @@ -1,241 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -"""A collection of convenient functions and redis/lua scripts. - -This code was partial inspired by the `Bullet-Proofing Lua Scripts in RedisPy`_ -article. - -.. _Bullet-Proofing Lua Scripts in RedisPy: - https://redis.com/blog/bullet-proofing-lua-scripts-in-redispy/ - -""" - -import hmac - -from searx import get_setting - -LUA_SCRIPT_STORAGE = {} -"""A global dictionary to cache client's ``Script`` objects, used by -:py:obj:`lua_script_storage`""" - - -def lua_script_storage(client, script): - """Returns a redis :py:obj:`Script - ` instance. - - Due to performance reason the ``Script`` object is instantiated only once - for a client (``client.register_script(..)``) and is cached in - :py:obj:`LUA_SCRIPT_STORAGE`. - - """ - - # redis connection can be closed, lets use the id() of the redis connector - # as key in the script-storage: - client_id = id(client) - - if LUA_SCRIPT_STORAGE.get(client_id) is None: - LUA_SCRIPT_STORAGE[client_id] = {} - - if LUA_SCRIPT_STORAGE[client_id].get(script) is None: - LUA_SCRIPT_STORAGE[client_id][script] = client.register_script(script) - - return LUA_SCRIPT_STORAGE[client_id][script] - - -PURGE_BY_PREFIX = """ -local prefix = tostring(ARGV[1]) -for i, name in ipairs(redis.call('KEYS', prefix .. '*')) do - redis.call('EXPIRE', name, 0) -end -""" - - -def purge_by_prefix(client, prefix: str = "SearXNG_"): - """Purge all keys with ``prefix`` from database. - - Queries all keys in the database by the given prefix and set expire time to - zero. The default prefix will drop all keys which has been set by SearXNG - (drops SearXNG schema entirely from database). - - The implementation is the lua script from string :py:obj:`PURGE_BY_PREFIX`. - The lua script uses EXPIRE_ instead of DEL_: if there are a lot keys to - delete and/or their values are big, `DEL` could take more time and blocks - the command loop while `EXPIRE` turns back immediate. - - :param prefix: prefix of the key to delete (default: ``SearXNG_``) - :type name: str - - .. _EXPIRE: https://redis.io/commands/expire/ - .. _DEL: https://redis.io/commands/del/ - - """ - script = lua_script_storage(client, PURGE_BY_PREFIX) - script(args=[prefix]) - - -def secret_hash(name: str): - """Creates a hash of the ``name``. - - Combines argument ``name`` with the ``secret_key`` from :ref:`settings - server`. This function can be used to get a more anonymized name of a Redis - KEY. - - :param name: the name to create a secret hash for - :type name: str - """ - m = hmac.new(bytes(name, encoding='utf-8'), digestmod='sha256') - m.update(bytes(get_setting('server.secret_key'), encoding='utf-8')) - return m.hexdigest() - - -INCR_COUNTER = """ -local limit = tonumber(ARGV[1]) -local expire = tonumber(ARGV[2]) -local c_name = KEYS[1] - -local c = redis.call('GET', c_name) - -if not c then - c = redis.call('INCR', c_name) - if expire > 0 then - redis.call('EXPIRE', c_name, expire) - end -else - c = tonumber(c) - if limit == 0 or c < limit then - c = redis.call('INCR', c_name) - end -end -return c -""" - - -def incr_counter(client, name: str, limit: int = 0, expire: int = 0): - """Increment a counter and return the new value. - - If counter with redis key ``SearXNG_counter_`` does not exists it is - created with initial value 1 returned. The replacement ```` is a - *secret hash* of the value from argument ``name`` (see - :py:func:`secret_hash`). - - The implementation of the redis counter is the lua script from string - :py:obj:`INCR_COUNTER`. - - :param name: name of the counter - :type name: str - - :param expire: live-time of the counter in seconds (default ``None`` means - infinite). - :type expire: int / see EXPIRE_ - - :param limit: limit where the counter stops to increment (default ``None``) - :type limit: int / limit is 2^64 see INCR_ - - :return: value of the incremented counter - :type return: int - - .. _EXPIRE: https://redis.io/commands/expire/ - .. _INCR: https://redis.io/commands/incr/ - - A simple demo of a counter with expire time and limit:: - - >>> for i in range(6): - ... i, incr_counter(client, "foo", 3, 5) # max 3, duration 5 sec - ... time.sleep(1) # from the third call on max has been reached - ... - (0, 1) - (1, 2) - (2, 3) - (3, 3) - (4, 3) - (5, 1) - - """ - script = lua_script_storage(client, INCR_COUNTER) - name = "SearXNG_counter_" + secret_hash(name) - c = script(args=[limit, expire], keys=[name]) - return c - - -def drop_counter(client, name): - """Drop counter with redis key ``SearXNG_counter_`` - - The replacement ```` is a *secret hash* of the value from argument - ``name`` (see :py:func:`incr_counter` and :py:func:`incr_sliding_window`). - """ - name = "SearXNG_counter_" + secret_hash(name) - client.delete(name) - - -INCR_SLIDING_WINDOW = """ -local expire = tonumber(ARGV[1]) -local name = KEYS[1] -local current_time = redis.call('TIME') - -redis.call('ZREMRANGEBYSCORE', name, 0, current_time[1] - expire) -redis.call('ZADD', name, current_time[1], current_time[1] .. current_time[2]) -local result = redis.call('ZCOUNT', name, 0, current_time[1] + 1) -redis.call('EXPIRE', name, expire) -return result -""" - - -def incr_sliding_window(client, name: str, duration: int): - """Increment a sliding-window counter and return the new value. - - If counter with redis key ``SearXNG_counter_`` does not exists it is - created with initial value 1 returned. The replacement ```` is a - *secret hash* of the value from argument ``name`` (see - :py:func:`secret_hash`). - - :param name: name of the counter - :type name: str - - :param duration: live-time of the sliding window in seconds - :typeduration: int - - :return: value of the incremented counter - :type return: int - - The implementation of the redis counter is the lua script from string - :py:obj:`INCR_SLIDING_WINDOW`. The lua script uses `sorted sets in Redis`_ - to implement a sliding window for the redis key ``SearXNG_counter_`` - (ZADD_). The current TIME_ is used to score the items in the sorted set and - the time window is moved by removing items with a score lower current time - minus *duration* time (ZREMRANGEBYSCORE_). - - The EXPIRE_ time (the duration of the sliding window) is refreshed on each - call (increment) and if there is no call in this duration, the sorted - set expires from the redis DB. - - The return value is the amount of items in the sorted set (ZCOUNT_), what - means the number of calls in the sliding window. - - .. _Sorted sets in Redis: - https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-5-sorted-sets-in-redis/ - .. _TIME: https://redis.io/commands/time/ - .. _ZADD: https://redis.io/commands/zadd/ - .. _EXPIRE: https://redis.io/commands/expire/ - .. _ZREMRANGEBYSCORE: https://redis.io/commands/zremrangebyscore/ - .. _ZCOUNT: https://redis.io/commands/zcount/ - - A simple demo of the sliding window:: - - >>> for i in range(5): - ... incr_sliding_window(client, "foo", 3) # duration 3 sec - ... time.sleep(1) # from the third call (second) on the window is moved - ... - 1 - 2 - 3 - 3 - 3 - >>> time.sleep(3) # wait until expire - >>> incr_sliding_window(client, "foo", 3) - 1 - - """ - script = lua_script_storage(client, INCR_SLIDING_WINDOW) - name = "SearXNG_counter_" + secret_hash(name) - c = script(args=[duration], keys=[name]) - return c diff --git a/searx/results.py b/searx/results.py deleted file mode 100644 index caf02213d..000000000 --- a/searx/results.py +++ /dev/null @@ -1,445 +0,0 @@ -import re -from collections import defaultdict -from operator import itemgetter -from threading import RLock -from typing import List, NamedTuple, Set -from urllib.parse import urlparse, unquote - -from searx import logger -from searx import utils -from searx.engines import engines -from searx.metrics import histogram_observe, counter_add, count_error - - -CONTENT_LEN_IGNORED_CHARS_REGEX = re.compile(r'[,;:!?\./\\\\ ()-_]', re.M | re.U) -WHITESPACE_REGEX = re.compile('( |\t|\n)+', re.M | re.U) - - -# return the meaningful length of the content for a result -def result_content_len(content): - if isinstance(content, str): - return len(CONTENT_LEN_IGNORED_CHARS_REGEX.sub('', content)) - else: - return 0 - - -def compare_urls(url_a, url_b): - """Lazy compare between two URL. - "www.example.com" and "example.com" are equals. - "www.example.com/path/" and "www.example.com/path" are equals. - "https://www.example.com/" and "http://www.example.com/" are equals. - - Args: - url_a (ParseResult): first URL - url_b (ParseResult): second URL - - Returns: - bool: True if url_a and url_b are equals - """ - # ignore www. in comparison - if url_a.netloc.startswith('www.'): - host_a = url_a.netloc.replace('www.', '', 1) - else: - host_a = url_a.netloc - if url_b.netloc.startswith('www.'): - host_b = url_b.netloc.replace('www.', '', 1) - else: - host_b = url_b.netloc - - if host_a != host_b or url_a.query != url_b.query or url_a.fragment != url_b.fragment: - return False - - # remove / from the end of the url if required - path_a = url_a.path[:-1] if url_a.path.endswith('/') else url_a.path - path_b = url_b.path[:-1] if url_b.path.endswith('/') else url_b.path - - return unquote(path_a) == unquote(path_b) - - -def merge_two_infoboxes(infobox1, infobox2): - # get engines weights - if hasattr(engines[infobox1['engine']], 'weight'): - weight1 = engines[infobox1['engine']].weight - else: - weight1 = 1 - if hasattr(engines[infobox2['engine']], 'weight'): - weight2 = engines[infobox2['engine']].weight - else: - weight2 = 1 - - if weight2 > weight1: - infobox1['engine'] = infobox2['engine'] - - infobox1['engines'] |= infobox2['engines'] - - if 'urls' in infobox2: - urls1 = infobox1.get('urls', None) - if urls1 is None: - urls1 = [] - - for url2 in infobox2.get('urls', []): - unique_url = True - parsed_url2 = urlparse(url2.get('url', '')) - entity_url2 = url2.get('entity') - for url1 in urls1: - if (entity_url2 is not None and url1.get('entity') == entity_url2) or compare_urls( - urlparse(url1.get('url', '')), parsed_url2 - ): - unique_url = False - break - if unique_url: - urls1.append(url2) - - infobox1['urls'] = urls1 - - if 'img_src' in infobox2: - img1 = infobox1.get('img_src', None) - img2 = infobox2.get('img_src') - if img1 is None: - infobox1['img_src'] = img2 - elif weight2 > weight1: - infobox1['img_src'] = img2 - - if 'attributes' in infobox2: - attributes1 = infobox1.get('attributes') - if attributes1 is None: - infobox1['attributes'] = attributes1 = [] - - attributeSet = set() - for attribute in attributes1: - label = attribute.get('label') - if label not in attributeSet: - attributeSet.add(label) - entity = attribute.get('entity') - if entity not in attributeSet: - attributeSet.add(entity) - - for attribute in infobox2.get('attributes', []): - if attribute.get('label') not in attributeSet and attribute.get('entity') not in attributeSet: - attributes1.append(attribute) - - if 'content' in infobox2: - content1 = infobox1.get('content', None) - content2 = infobox2.get('content', '') - if content1 is not None: - if result_content_len(content2) > result_content_len(content1): - infobox1['content'] = content2 - else: - infobox1['content'] = content2 - - -def result_score(result): - weight = 1.0 - - for result_engine in result['engines']: - if hasattr(engines[result_engine], 'weight'): - weight *= float(engines[result_engine].weight) - - occurrences = len(result['positions']) - - return sum((occurrences * weight) / position for position in result['positions']) - - -class Timing(NamedTuple): - engine: str - total: float - load: float - - -class UnresponsiveEngine(NamedTuple): - engine: str - error_type: str - suspended: bool - - -class ResultContainer: - """docstring for ResultContainer""" - - __slots__ = ( - '_merged_results', - 'infoboxes', - 'suggestions', - 'answers', - 'corrections', - '_number_of_results', - '_closed', - 'paging', - 'unresponsive_engines', - 'timings', - 'redirect_url', - 'engine_data', - 'on_result', - '_lock', - ) - - def __init__(self): - super().__init__() - self._merged_results = [] - self.infoboxes = [] - self.suggestions = set() - self.answers = {} - self.corrections = set() - self._number_of_results = [] - self.engine_data = defaultdict(dict) - self._closed = False - self.paging = False - self.unresponsive_engines: Set[UnresponsiveEngine] = set() - self.timings: List[Timing] = [] - self.redirect_url = None - self.on_result = lambda _: True - self._lock = RLock() - - def extend(self, engine_name, results): - if self._closed: - return - - standard_result_count = 0 - error_msgs = set() - for result in list(results): - result['engine'] = engine_name - if 'suggestion' in result and self.on_result(result): - self.suggestions.add(result['suggestion']) - elif 'answer' in result and self.on_result(result): - self.answers[result['answer']] = result - elif 'correction' in result and self.on_result(result): - self.corrections.add(result['correction']) - elif 'infobox' in result and self.on_result(result): - self._merge_infobox(result) - elif 'number_of_results' in result and self.on_result(result): - self._number_of_results.append(result['number_of_results']) - elif 'engine_data' in result and self.on_result(result): - self.engine_data[engine_name][result['key']] = result['engine_data'] - elif 'url' in result: - # standard result (url, title, content) - if not self._is_valid_url_result(result, error_msgs): - continue - # normalize the result - self._normalize_url_result(result) - # call on_result call searx.search.SearchWithPlugins._on_result - # which calls the plugins - if not self.on_result(result): - continue - self.__merge_url_result(result, standard_result_count + 1) - standard_result_count += 1 - elif self.on_result(result): - self.__merge_result_no_url(result, standard_result_count + 1) - standard_result_count += 1 - - if len(error_msgs) > 0: - for msg in error_msgs: - count_error(engine_name, 'some results are invalids: ' + msg, secondary=True) - - if engine_name in engines: - histogram_observe(standard_result_count, 'engine', engine_name, 'result', 'count') - - if not self.paging and standard_result_count > 0 and engine_name in engines and engines[engine_name].paging: - self.paging = True - - def _merge_infobox(self, infobox): - add_infobox = True - infobox_id = infobox.get('id', None) - infobox['engines'] = set([infobox['engine']]) - if infobox_id is not None: - parsed_url_infobox_id = urlparse(infobox_id) - with self._lock: - for existingIndex in self.infoboxes: - if compare_urls(urlparse(existingIndex.get('id', '')), parsed_url_infobox_id): - merge_two_infoboxes(existingIndex, infobox) - add_infobox = False - - if add_infobox: - self.infoboxes.append(infobox) - - def _is_valid_url_result(self, result, error_msgs): - if 'url' in result: - if not isinstance(result['url'], str): - logger.debug('result: invalid URL: %s', str(result)) - error_msgs.add('invalid URL') - return False - - if 'title' in result and not isinstance(result['title'], str): - logger.debug('result: invalid title: %s', str(result)) - error_msgs.add('invalid title') - return False - - if 'content' in result: - if not isinstance(result['content'], str): - logger.debug('result: invalid content: %s', str(result)) - error_msgs.add('invalid content') - return False - - return True - - def _normalize_url_result(self, result): - """Return True if the result is valid""" - result['parsed_url'] = urlparse(result['url']) - - # if the result has no scheme, use http as default - if not result['parsed_url'].scheme: - result['parsed_url'] = result['parsed_url']._replace(scheme="http") - result['url'] = result['parsed_url'].geturl() - - # avoid duplicate content between the content and title fields - if result.get('content') == result.get('title'): - del result['content'] - - # make sure there is a template - if 'template' not in result: - result['template'] = 'default.html' - - # strip multiple spaces and carriage returns from content - if result.get('content'): - result['content'] = WHITESPACE_REGEX.sub(' ', result['content']) - - def __merge_url_result(self, result, position): - result['engines'] = set([result['engine']]) - with self._lock: - duplicated = self.__find_duplicated_http_result(result) - if duplicated: - self.__merge_duplicated_http_result(duplicated, result, position) - return - - # if there is no duplicate found, append result - result['positions'] = [position] - self._merged_results.append(result) - - def __find_duplicated_http_result(self, result): - result_template = result.get('template') - for merged_result in self._merged_results: - if 'parsed_url' not in merged_result: - continue - if compare_urls(result['parsed_url'], merged_result['parsed_url']) and result_template == merged_result.get( - 'template' - ): - if result_template != 'images.html': - # not an image, same template, same url : it's a duplicate - return merged_result - else: - # it's an image - # it's a duplicate if the parsed_url, template and img_src are different - if result.get('img_src', '') == merged_result.get('img_src', ''): - return merged_result - return None - - def __merge_duplicated_http_result(self, duplicated, result, position): - # using content with more text - if result_content_len(result.get('content', '')) > result_content_len(duplicated.get('content', '')): - duplicated['content'] = result['content'] - - # merge all result's parameters not found in duplicate - for key in result.keys(): - if not duplicated.get(key): - duplicated[key] = result.get(key) - - # add the new position - duplicated['positions'].append(position) - - # add engine to list of result-engines - duplicated['engines'].add(result['engine']) - - # using https if possible - if duplicated['parsed_url'].scheme != 'https' and result['parsed_url'].scheme == 'https': - duplicated['url'] = result['parsed_url'].geturl() - duplicated['parsed_url'] = result['parsed_url'] - - def __merge_result_no_url(self, result, position): - result['engines'] = set([result['engine']]) - result['positions'] = [position] - with self._lock: - self._merged_results.append(result) - - def close(self): - self._closed = True - - for result in self._merged_results: - score = result_score(result) - result['score'] = score - if result.get('content'): - result['content'] = utils.html_to_text(result['content']).strip() - # removing html content and whitespace duplications - result['title'] = ' '.join(utils.html_to_text(result['title']).strip().split()) - for result_engine in result['engines']: - counter_add(score, 'engine', result_engine, 'score') - - results = sorted(self._merged_results, key=itemgetter('score'), reverse=True) - - # pass 2 : group results by category and template - gresults = [] - categoryPositions = {} - - for res in results: - # FIXME : handle more than one category per engine - engine = engines[res['engine']] - res['category'] = engine.categories[0] if len(engine.categories) > 0 else '' - - # FIXME : handle more than one category per engine - category = ( - res['category'] - + ':' - + res.get('template', '') - + ':' - + ('img_src' if 'img_src' in res or 'thumbnail' in res else '') - ) - - current = None if category not in categoryPositions else categoryPositions[category] - - # group with previous results using the same category - # if the group can accept more result and is not too far - # from the current position - if current is not None and (current['count'] > 0) and (len(gresults) - current['index'] < 20): - # group with the previous results using - # the same category with this one - index = current['index'] - gresults.insert(index, res) - - # update every index after the current one - # (including the current one) - for k in categoryPositions: - v = categoryPositions[k]['index'] - if v >= index: - categoryPositions[k]['index'] = v + 1 - - # update this category - current['count'] -= 1 - - else: - # same category - gresults.append(res) - - # update categoryIndex - categoryPositions[category] = {'index': len(gresults), 'count': 8} - - # update _merged_results - self._merged_results = gresults - - def get_ordered_results(self): - if not self._closed: - self.close() - return self._merged_results - - def results_length(self): - return len(self._merged_results) - - @property - def number_of_results(self) -> int: - """Returns the average of results number, returns zero if the average - result number is smaller than the actual result count.""" - - resultnum_sum = sum(self._number_of_results) - if not resultnum_sum or not self._number_of_results: - return 0 - - average = int(resultnum_sum / len(self._number_of_results)) - if average < self.results_length(): - average = 0 - return average - - def add_unresponsive_engine(self, engine_name: str, error_type: str, suspended: bool = False): - if engines[engine_name].display_error_messages: - self.unresponsive_engines.add(UnresponsiveEngine(engine_name, error_type, suspended)) - - def add_timing(self, engine_name: str, engine_time: float, page_load_time: float): - self.timings.append(Timing(engine_name, total=engine_time, load=page_load_time)) - - def get_timings(self): - return self.timings diff --git a/searx/search/__init__.py b/searx/search/__init__.py deleted file mode 100644 index fcdc1f72f..000000000 --- a/searx/search/__init__.py +++ /dev/null @@ -1,214 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring, too-few-public-methods - -import threading -from copy import copy -from timeit import default_timer -from uuid import uuid4 - -import flask -from flask import copy_current_request_context -import babel - -from searx import settings -from searx.answerers import ask -from searx.external_bang import get_bang_url -from searx.results import ResultContainer -from searx import logger -from searx.plugins import plugins -from searx.search.models import EngineRef, SearchQuery -from searx.engines import load_engines -from searx.network import initialize as initialize_network, check_network_configuration -from searx.metrics import initialize as initialize_metrics, counter_inc, histogram_observe_time -from searx.search.processors import PROCESSORS, initialize as initialize_processors -from searx.search.checker import initialize as initialize_checker - - -logger = logger.getChild('search') - - -def initialize(settings_engines=None, enable_checker=False, check_network=False, enable_metrics=True): - settings_engines = settings_engines or settings['engines'] - load_engines(settings_engines) - initialize_network(settings_engines, settings['outgoing']) - if check_network: - check_network_configuration() - initialize_metrics([engine['name'] for engine in settings_engines], enable_metrics) - initialize_processors(settings_engines) - if enable_checker: - initialize_checker() - - -class Search: - """Search information container""" - - __slots__ = "search_query", "result_container", "start_time", "actual_timeout" - - def __init__(self, search_query: SearchQuery): - """Initialize the Search""" - # init vars - super().__init__() - self.search_query = search_query - self.result_container = ResultContainer() - self.start_time = None - self.actual_timeout = None - - def search_external_bang(self): - """ - Check if there is a external bang. - If yes, update self.result_container and return True - """ - if self.search_query.external_bang: - self.result_container.redirect_url = get_bang_url(self.search_query) - - # This means there was a valid bang and the - # rest of the search does not need to be continued - if isinstance(self.result_container.redirect_url, str): - return True - return False - - def search_answerers(self): - """ - Check if an answer return a result. - If yes, update self.result_container and return True - """ - answerers_results = ask(self.search_query) - - if answerers_results: - for results in answerers_results: - self.result_container.extend('answer', results) - return True - return False - - # do search-request - def _get_requests(self): - # init vars - requests = [] - - # max of all selected engine timeout - default_timeout = 0 - - # start search-request for all selected engines - for engineref in self.search_query.engineref_list: - processor = PROCESSORS[engineref.name] - - # stop the request now if the engine is suspend - if processor.extend_container_if_suspended(self.result_container): - continue - - # set default request parameters - request_params = processor.get_params(self.search_query, engineref.category) - if request_params is None: - continue - - counter_inc('engine', engineref.name, 'search', 'count', 'sent') - - # append request to list - requests.append((engineref.name, self.search_query.query, request_params)) - - # update default_timeout - default_timeout = max(default_timeout, processor.engine.timeout) - - # adjust timeout - max_request_timeout = settings['outgoing']['max_request_timeout'] - actual_timeout = default_timeout - query_timeout = self.search_query.timeout_limit - - if max_request_timeout is None and query_timeout is None: - # No max, no user query: default_timeout - pass - elif max_request_timeout is None and query_timeout is not None: - # No max, but user query: From user query except if above default - actual_timeout = min(default_timeout, query_timeout) - elif max_request_timeout is not None and query_timeout is None: - # Max, no user query: Default except if above max - actual_timeout = min(default_timeout, max_request_timeout) - elif max_request_timeout is not None and query_timeout is not None: - # Max & user query: From user query except if above max - actual_timeout = min(query_timeout, max_request_timeout) - - logger.debug( - "actual_timeout={0} (default_timeout={1}, ?timeout_limit={2}, max_request_timeout={3})".format( - actual_timeout, default_timeout, query_timeout, max_request_timeout - ) - ) - - return requests, actual_timeout - - def search_multiple_requests(self, requests): - # pylint: disable=protected-access - search_id = str(uuid4()) - - for engine_name, query, request_params in requests: - _search = copy_current_request_context(PROCESSORS[engine_name].search) - th = threading.Thread( # pylint: disable=invalid-name - target=_search, - args=(query, request_params, self.result_container, self.start_time, self.actual_timeout), - name=search_id, - ) - th._timeout = False - th._engine_name = engine_name - th.start() - - for th in threading.enumerate(): # pylint: disable=invalid-name - if th.name == search_id: - remaining_time = max(0.0, self.actual_timeout - (default_timer() - self.start_time)) - th.join(remaining_time) - if th.is_alive(): - th._timeout = True - self.result_container.add_unresponsive_engine(th._engine_name, 'timeout') - PROCESSORS[th._engine_name].logger.error('engine timeout') - - def search_standard(self): - """ - Update self.result_container, self.actual_timeout - """ - requests, self.actual_timeout = self._get_requests() - - # send all search-request - if requests: - self.search_multiple_requests(requests) - - # return results, suggestions, answers and infoboxes - return True - - # do search-request - def search(self) -> ResultContainer: - self.start_time = default_timer() - if not self.search_external_bang(): - if not self.search_answerers(): - self.search_standard() - return self.result_container - - -class SearchWithPlugins(Search): - """Inherit from the Search class, add calls to the plugins.""" - - __slots__ = 'ordered_plugin_list', 'request' - - def __init__(self, search_query: SearchQuery, ordered_plugin_list, request: flask.Request): - super().__init__(search_query) - self.ordered_plugin_list = ordered_plugin_list - self.result_container.on_result = self._on_result - # pylint: disable=line-too-long - # get the "real" request to use it outside the Flask context. - # see - # * https://github.com/pallets/flask/blob/d01d26e5210e3ee4cbbdef12f05c886e08e92852/src/flask/globals.py#L55 - # * https://github.com/pallets/werkzeug/blob/3c5d3c9bd0d9ce64590f0af8997a38f3823b368d/src/werkzeug/local.py#L548-L559 - # * https://werkzeug.palletsprojects.com/en/2.0.x/local/#werkzeug.local.LocalProxy._get_current_object - # pylint: enable=line-too-long - self.request = request._get_current_object() - - def _on_result(self, result): - return plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result) - - def search(self) -> ResultContainer: - if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self): - super().search() - - plugins.call(self.ordered_plugin_list, 'post_search', self.request, self) - - self.result_container.close() - - return self.result_container diff --git a/searx/search/checker/__init__.py b/searx/search/checker/__init__.py deleted file mode 100644 index 7d779a282..000000000 --- a/searx/search/checker/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -from .impl import Checker -from .background import initialize, get_result - -__all__ = ('Checker', 'initialize', 'get_result') diff --git a/searx/search/checker/__main__.py b/searx/search/checker/__main__.py deleted file mode 100644 index 15fcb5ebd..000000000 --- a/searx/search/checker/__main__.py +++ /dev/null @@ -1,114 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring - -import sys -import io -import os -import argparse -import logging - -import searx.search -import searx.search.checker -from searx.search import PROCESSORS -from searx.engines import engine_shortcuts - - -# configure logging -root = logging.getLogger() -handler = logging.StreamHandler(sys.stdout) -for h in root.handlers: - root.removeHandler(h) -root.addHandler(handler) - -# color only for a valid terminal -if sys.stdout.isatty() and os.environ.get('TERM') not in ['dumb', 'unknown']: - RESET_SEQ = "\033[0m" - COLOR_SEQ = "\033[1;%dm" - BOLD_SEQ = "\033[1m" - BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = map(lambda i: COLOR_SEQ % (30 + i), range(8)) -else: - RESET_SEQ = "" - COLOR_SEQ = "" - BOLD_SEQ = "" - BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = "", "", "", "", "", "", "", "" - -# equivalent of 'python -u' (unbuffered stdout, stderr) -stdout = io.TextIOWrapper( - # pylint: disable=consider-using-with - open(sys.stdout.fileno(), 'wb', 0), - write_through=True, -) -stderr = io.TextIOWrapper( - # pylint: disable=consider-using-with - open(sys.stderr.fileno(), 'wb', 0), - write_through=True, -) - - -# iterator of processors -def iter_processor(engine_name_list): - if len(engine_name_list) > 0: - for name in engine_name_list: - name = engine_shortcuts.get(name, name) - processor = PROCESSORS.get(name) - if processor is not None: - yield name, processor - else: - stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}{RED}Engine does not exist{RESET_SEQ}') - else: - for name, processor in searx.search.PROCESSORS.items(): - yield name, processor - - -# actual check & display -def run(engine_name_list, verbose): - searx.search.initialize() - for name, processor in iter_processor(engine_name_list): - stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}Checking\n') - if not sys.stdout.isatty(): - stderr.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}Checking\n') - checker = searx.search.checker.Checker(processor) - checker.run() - if checker.test_results.successful: - stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}{GREEN}OK{RESET_SEQ}\n') - if verbose: - stdout.write(f' {"found languages":15}: {" ".join(sorted(list(checker.test_results.languages)))}\n') - else: - stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}{RESET_SEQ}{RED}Error{RESET_SEQ}') - if not verbose: - errors = [test_name + ': ' + error for test_name, error in checker.test_results] - stdout.write(f'{RED}Error {str(errors)}{RESET_SEQ}\n') - else: - stdout.write('\n') - stdout.write(f' {"found languages":15}: {" ".join(sorted(list(checker.test_results.languages)))}\n') - for test_name, logs in checker.test_results.logs.items(): - for log in logs: - log = map(lambda l: l if isinstance(l, str) else repr(l), log) - stdout.write(f' {test_name:15}: {RED}{" ".join(log)}{RESET_SEQ}\n') - - -# call by setup.py -def main(): - parser = argparse.ArgumentParser(description='Check searx engines.') - parser.add_argument( - 'engine_name_list', - metavar='engine name', - type=str, - nargs='*', - help='engines name or shortcut list. Empty for all engines.', - ) - parser.add_argument( - '--verbose', - '-v', - action='store_true', - dest='verbose', - help='Display details about the test results', - default=False, - ) - args = parser.parse_args() - run(args.engine_name_list, args.verbose) - - -if __name__ == '__main__': - main() diff --git a/searx/search/checker/background.py b/searx/search/checker/background.py deleted file mode 100644 index aec2a1790..000000000 --- a/searx/search/checker/background.py +++ /dev/null @@ -1,171 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring -# pyright: basic - -import json -import time -import threading -import os -import signal -from typing import Dict, Union, List, Any, Tuple, Optional -from typing_extensions import TypedDict, Literal - -import redis.exceptions - -from searx import logger, settings, searx_debug -from searx.redisdb import client as get_redis_client -from searx.exceptions import SearxSettingsException -from searx.search.processors import PROCESSORS -from searx.search.checker import Checker -from searx.search.checker.scheduler import scheduler_function - - -REDIS_RESULT_KEY = 'SearXNG_checker_result' -REDIS_LOCK_KEY = 'SearXNG_checker_lock' - - -CheckerResult = Union['CheckerOk', 'CheckerErr', 'CheckerOther'] - - -class CheckerOk(TypedDict): - """Checking the engines succeeded""" - - status: Literal['ok'] - engines: Dict[str, 'EngineResult'] - timestamp: int - - -class CheckerErr(TypedDict): - """Checking the engines failed""" - - status: Literal['error'] - timestamp: int - - -class CheckerOther(TypedDict): - """The status is unknown or disabled""" - - status: Literal['unknown', 'disabled'] - - -EngineResult = Union['EngineOk', 'EngineErr'] - - -class EngineOk(TypedDict): - """Checking the engine succeeded""" - - success: Literal[True] - - -class EngineErr(TypedDict): - """Checking the engine failed""" - - success: Literal[False] - errors: Dict[str, List[str]] - - -def _get_interval(every: Any, error_msg: str) -> Tuple[int, int]: - if isinstance(every, int): - return (every, every) - - if ( - not isinstance(every, (tuple, list)) - or len(every) != 2 # type: ignore - or not isinstance(every[0], int) - or not isinstance(every[1], int) - ): - raise SearxSettingsException(error_msg, None) - return (every[0], every[1]) - - -def get_result() -> CheckerResult: - client = get_redis_client() - if client is None: - # without Redis, the checker is disabled - return {'status': 'disabled'} - serialized_result: Optional[bytes] = client.get(REDIS_RESULT_KEY) - if serialized_result is None: - # the Redis key does not exist - return {'status': 'unknown'} - return json.loads(serialized_result) - - -def _set_result(result: CheckerResult): - client = get_redis_client() - if client is None: - # without Redis, the function does nothing - return - client.set(REDIS_RESULT_KEY, json.dumps(result)) - - -def _timestamp(): - return int(time.time() / 3600) * 3600 - - -def run(): - try: - # use a Redis lock to make sure there is no checker running at the same time - # (this should not happen, this is a safety measure) - with get_redis_client().lock(REDIS_LOCK_KEY, blocking_timeout=60, timeout=3600): - logger.info('Starting checker') - result: CheckerOk = {'status': 'ok', 'engines': {}, 'timestamp': _timestamp()} - for name, processor in PROCESSORS.items(): - logger.debug('Checking %s engine', name) - checker = Checker(processor) - checker.run() - if checker.test_results.successful: - result['engines'][name] = {'success': True} - else: - result['engines'][name] = {'success': False, 'errors': checker.test_results.errors} - - _set_result(result) - logger.info('Check done') - except redis.exceptions.LockError: - _set_result({'status': 'error', 'timestamp': _timestamp()}) - logger.exception('Error while running the checker') - except Exception: # pylint: disable=broad-except - _set_result({'status': 'error', 'timestamp': _timestamp()}) - logger.exception('Error while running the checker') - - -def _signal_handler(_signum: int, _frame: Any): - t = threading.Thread(target=run) - t.daemon = True - t.start() - - -def initialize(): - if hasattr(signal, 'SIGUSR1'): - # Windows doesn't support SIGUSR1 - logger.info('Send SIGUSR1 signal to pid %i to start the checker', os.getpid()) - signal.signal(signal.SIGUSR1, _signal_handler) - - # special case when debug is activate - if searx_debug and settings['checker']['off_when_debug']: - logger.info('debug mode: checker is disabled') - return - - # check value of checker.scheduling.every now - scheduling = settings['checker']['scheduling'] - if scheduling is None or not scheduling: - logger.info('Checker scheduler is disabled') - return - - # make sure there is a Redis connection - if get_redis_client() is None: - logger.error('The checker requires Redis') - return - - # start the background scheduler - every_range = _get_interval(scheduling.get('every', (300, 1800)), 'checker.scheduling.every is not a int or list') - start_after_range = _get_interval( - scheduling.get('start_after', (300, 1800)), 'checker.scheduling.start_after is not a int or list' - ) - t = threading.Thread( - target=scheduler_function, - args=(start_after_range[0], start_after_range[1], every_range[0], every_range[1], run), - name='checker_scheduler', - ) - t.daemon = True - t.start() diff --git a/searx/search/checker/impl.py b/searx/search/checker/impl.py deleted file mode 100644 index 087ced5c2..000000000 --- a/searx/search/checker/impl.py +++ /dev/null @@ -1,442 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -import gc -import typing -import types -import functools -import itertools -from time import time -from timeit import default_timer -from urllib.parse import urlparse - -import re -import httpx - -from searx import network, logger -from searx.utils import gen_useragent, detect_language -from searx.results import ResultContainer -from searx.search.models import SearchQuery, EngineRef -from searx.search.processors import EngineProcessor -from searx.metrics import counter_inc - - -logger = logger.getChild('searx.search.checker') - -HTML_TAGS = [ - # fmt: off - 'embed', 'iframe', 'object', 'param', 'picture', 'source', 'svg', 'math', 'canvas', 'noscript', 'script', - 'del', 'ins', 'area', 'audio', 'img', 'map', 'track', 'video', 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', - 'code', 'data', 'dfn', 'em', 'i', 'kdb', 'mark', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'small', - 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr', 'style', 'blockquote', 'dd', 'div', 'dl', 'dt', - 'figcaption', 'figure', 'hr', 'li', 'ol', 'p', 'pre', 'ul', 'button', 'datalist', 'fieldset', 'form', 'input', - 'label', 'legend', 'meter', 'optgroup', 'option', 'output', 'progress', 'select', 'textarea', 'applet', - 'frame', 'frameset' - # fmt: on -] - - -def get_check_no_html(): - rep = ['<' + tag + '[^\>]*>' for tag in HTML_TAGS] - rep += ['' for tag in HTML_TAGS] - pattern = re.compile('|'.join(rep)) - - def f(text): - return pattern.search(text.lower()) is None - - return f - - -_check_no_html = get_check_no_html() - - -def _is_url(url): - try: - result = urlparse(url) - except ValueError: - return False - if result.scheme not in ('http', 'https'): - return False - return True - - -@functools.lru_cache(maxsize=8192) -def _download_and_check_if_image(image_url: str) -> bool: - """Download an URL and check if the Content-Type starts with "image/" - This function should not be called directly: use _is_url_image - otherwise the cache of functools.lru_cache contains data: URL which might be huge. - """ - retry = 2 - - while retry > 0: - a = time() - try: - # use "image_proxy" (avoid HTTP/2) - network.set_context_network_name('image_proxy') - r, stream = network.stream( - 'GET', - image_url, - timeout=10.0, - allow_redirects=True, - headers={ - 'User-Agent': gen_useragent(), - 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', - 'Accept-Language': 'en-US;q=0.5,en;q=0.3', - 'Accept-Encoding': 'gzip, deflate, br', - 'DNT': '1', - 'Connection': 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'Sec-GPC': '1', - 'Cache-Control': 'max-age=0', - }, - ) - r.close() - if r.status_code == 200: - is_image = r.headers.get('content-type', '').startswith('image/') - else: - is_image = False - del r - del stream - return is_image - except httpx.TimeoutException: - logger.error('Timeout for %s: %i', image_url, int(time() - a)) - retry -= 1 - except httpx.HTTPError: - logger.exception('Exception for %s', image_url) - return False - return False - - -def _is_url_image(image_url) -> bool: - """Normalize image_url""" - if not isinstance(image_url, str): - return False - - if image_url.startswith('//'): - image_url = 'https:' + image_url - - if image_url.startswith('data:'): - return image_url.startswith('data:image/') - - if not _is_url(image_url): - return False - - return _download_and_check_if_image(image_url) - - -def _search_query_to_dict(search_query: SearchQuery) -> typing.Dict[str, typing.Any]: - return { - 'query': search_query.query, - 'lang': search_query.lang, - 'pageno': search_query.pageno, - 'safesearch': search_query.safesearch, - 'time_range': search_query.time_range, - } - - -def _search_query_diff( - sq1: SearchQuery, sq2: SearchQuery -) -> typing.Tuple[typing.Dict[str, typing.Any], typing.Dict[str, typing.Any]]: - param1 = _search_query_to_dict(sq1) - param2 = _search_query_to_dict(sq2) - common = {} - diff = {} - for k, value1 in param1.items(): - value2 = param2[k] - if value1 == value2: - common[k] = value1 - else: - diff[k] = (value1, value2) - return (common, diff) - - -class TestResults: - - __slots__ = 'errors', 'logs', 'languages' - - def __init__(self): - self.errors: typing.Dict[str, typing.List[str]] = {} - self.logs: typing.Dict[str, typing.List[typing.Any]] = {} - self.languages: typing.Set[str] = set() - - def add_error(self, test, message, *args): - # message to self.errors - errors_for_test = self.errors.setdefault(test, []) - if message not in errors_for_test: - errors_for_test.append(message) - # (message, *args) to self.logs - logs_for_test = self.logs.setdefault(test, []) - if (message, *args) not in logs_for_test: - logs_for_test.append((message, *args)) - - def add_language(self, language): - self.languages.add(language) - - @property - def successful(self): - return len(self.errors) == 0 - - def __iter__(self): - for test_name, errors in self.errors.items(): - for error in sorted(errors): - yield (test_name, error) - - -class ResultContainerTests: - - __slots__ = 'test_name', 'search_query', 'result_container', 'languages', 'stop_test', 'test_results' - - def __init__( - self, test_results: TestResults, test_name: str, search_query: SearchQuery, result_container: ResultContainer - ): - self.test_name = test_name - self.search_query = search_query - self.result_container = result_container - self.languages: typing.Set[str] = set() - self.test_results = test_results - self.stop_test = False - - @property - def result_urls(self): - results = self.result_container.get_ordered_results() - return [result['url'] for result in results if 'url' in result] - - def _record_error(self, message: str, *args) -> None: - sq = _search_query_to_dict(self.search_query) - sqstr = ' '.join(['{}={!r}'.format(k, v) for k, v in sq.items()]) - self.test_results.add_error(self.test_name, message, *args, '(' + sqstr + ')') - - def _add_language(self, text: str) -> typing.Optional[str]: - langStr = detect_language(text) - if langStr: - self.languages.add(langStr) - self.test_results.add_language(langStr) - return None - - def _check_result(self, result): - if not _check_no_html(result.get('title', '')): - self._record_error('HTML in title', repr(result.get('title', ''))) - if not _check_no_html(result.get('content', '')): - self._record_error('HTML in content', repr(result.get('content', ''))) - if result.get('url') is None: - self._record_error('url is None') - - self._add_language(result.get('title', '')) - self._add_language(result.get('content', '')) - - template = result.get('template', 'default.html') - if template == 'default.html': - return - if template == 'code.html': - return - if template == 'torrent.html': - return - if template == 'map.html': - return - if template == 'images.html': - thumbnail_src = result.get('thumbnail_src') - if thumbnail_src is not None: - if not _is_url_image(thumbnail_src): - self._record_error('thumbnail_src URL is invalid', thumbnail_src) - elif not _is_url_image(result.get('img_src')): - self._record_error('img_src URL is invalid', result.get('img_src')) - if template == 'videos.html' and not _is_url_image(result.get('thumbnail')): - self._record_error('thumbnail URL is invalid', result.get('img_src')) - - def _check_results(self, results: list): - for result in results: - self._check_result(result) - - def _check_answers(self, answers): - for answer in answers: - if not _check_no_html(answer): - self._record_error('HTML in answer', answer) - - def _check_infoboxes(self, infoboxes): - for infobox in infoboxes: - if not _check_no_html(infobox.get('content', '')): - self._record_error('HTML in infobox content', infobox.get('content', '')) - self._add_language(infobox.get('content', '')) - for attribute in infobox.get('attributes', {}): - if not _check_no_html(attribute.get('value', '')): - self._record_error('HTML in infobox attribute value', attribute.get('value', '')) - - def check_basic(self): - if len(self.result_container.unresponsive_engines) > 0: - for message in self.result_container.unresponsive_engines: - self._record_error(message[1] + ' ' + (message[2] or '')) - self.stop_test = True - return - - results = self.result_container.get_ordered_results() - if len(results) > 0: - self._check_results(results) - - if len(self.result_container.answers) > 0: - self._check_answers(self.result_container.answers) - - if len(self.result_container.infoboxes) > 0: - self._check_infoboxes(self.result_container.infoboxes) - - def has_infobox(self): - """Check the ResultContainer has at least one infobox""" - if len(self.result_container.infoboxes) == 0: - self._record_error('No infobox') - - def has_answer(self): - """Check the ResultContainer has at least one answer""" - if len(self.result_container.answers) == 0: - self._record_error('No answer') - - def has_language(self, lang): - """Check at least one title or content of the results is written in the `lang`. - - Detected using pycld3, may be not accurate""" - if lang not in self.languages: - self._record_error(lang + ' not found') - - def not_empty(self): - """Check the ResultContainer has at least one answer or infobox or result""" - result_types = set() - results = self.result_container.get_ordered_results() - if len(results) > 0: - result_types.add('results') - - if len(self.result_container.answers) > 0: - result_types.add('answers') - - if len(self.result_container.infoboxes) > 0: - result_types.add('infoboxes') - - if len(result_types) == 0: - self._record_error('No result') - - def one_title_contains(self, title: str): - """Check one of the title contains `title` (case insensitive comparison)""" - title = title.lower() - for result in self.result_container.get_ordered_results(): - if title in result['title'].lower(): - return - self._record_error(('{!r} not found in the title'.format(title))) - - -class CheckerTests: - - __slots__ = 'test_results', 'test_name', 'result_container_tests_list' - - def __init__( - self, test_results: TestResults, test_name: str, result_container_tests_list: typing.List[ResultContainerTests] - ): - self.test_results = test_results - self.test_name = test_name - self.result_container_tests_list = result_container_tests_list - - def unique_results(self): - """Check the results of each ResultContainer is unique""" - urls_list = [rct.result_urls for rct in self.result_container_tests_list] - if len(urls_list[0]) > 0: - # results on the first page - for i, urls_i in enumerate(urls_list): - for j, urls_j in enumerate(urls_list): - if i < j and urls_i == urls_j: - common, diff = _search_query_diff( - self.result_container_tests_list[i].search_query, - self.result_container_tests_list[j].search_query, - ) - common_str = ' '.join(['{}={!r}'.format(k, v) for k, v in common.items()]) - diff1_str = ', '.join(['{}={!r}'.format(k, v1) for (k, (v1, v2)) in diff.items()]) - diff2_str = ', '.join(['{}={!r}'.format(k, v2) for (k, (v1, v2)) in diff.items()]) - self.test_results.add_error( - self.test_name, - 'results are identical for {} and {} ({})'.format(diff1_str, diff2_str, common_str), - ) - - -class Checker: - - __slots__ = 'processor', 'tests', 'test_results' - - def __init__(self, processor: EngineProcessor): - self.processor = processor - self.tests = self.processor.get_tests() - self.test_results = TestResults() - - @property - def engineref_list(self): - engine_name = self.processor.engine_name - engine_category = self.processor.engine.categories[0] - return [EngineRef(engine_name, engine_category)] - - @staticmethod - def search_query_matrix_iterator(engineref_list, matrix): - p = [] - for name, values in matrix.items(): - if isinstance(values, (tuple, list)): - l = [(name, value) for value in values] - else: - l = [(name, values)] - p.append(l) - - for kwargs in itertools.product(*p): - kwargs = {k: v for k, v in kwargs} - query = kwargs['query'] - params = dict(kwargs) - del params['query'] - yield SearchQuery(query, engineref_list, **params) - - def call_test(self, obj, test_description): - if isinstance(test_description, (tuple, list)): - method, args = test_description[0], test_description[1:] - else: - method = test_description - args = () - if isinstance(method, str) and hasattr(obj, method): - getattr(obj, method)(*args) - elif isinstance(method, types.FunctionType): - method(*args) - else: - self.test_results.add_error( - obj.test_name, - 'method {!r} ({}) not found for {}'.format(method, method.__class__.__name__, obj.__class__.__name__), - ) - - def call_tests(self, obj, test_descriptions): - for test_description in test_descriptions: - self.call_test(obj, test_description) - - def search(self, search_query: SearchQuery) -> ResultContainer: - result_container = ResultContainer() - engineref_category = search_query.engineref_list[0].category - params = self.processor.get_params(search_query, engineref_category) - if params is not None: - counter_inc('engine', search_query.engineref_list[0].name, 'search', 'count', 'sent') - self.processor.search(search_query.query, params, result_container, default_timer(), 5) - return result_container - - def get_result_container_tests(self, test_name: str, search_query: SearchQuery) -> ResultContainerTests: - result_container = self.search(search_query) - result_container_check = ResultContainerTests(self.test_results, test_name, search_query, result_container) - result_container_check.check_basic() - return result_container_check - - def run_test(self, test_name): - test_parameters = self.tests[test_name] - search_query_list = list(Checker.search_query_matrix_iterator(self.engineref_list, test_parameters['matrix'])) - rct_list = [self.get_result_container_tests(test_name, search_query) for search_query in search_query_list] - stop_test = False - if 'result_container' in test_parameters: - for rct in rct_list: - stop_test = stop_test or rct.stop_test - if not rct.stop_test: - self.call_tests(rct, test_parameters['result_container']) - if not stop_test: - if 'test' in test_parameters: - checker_tests = CheckerTests(self.test_results, test_name, rct_list) - self.call_tests(checker_tests, test_parameters['test']) - - def run(self): - for test_name in self.tests: - self.run_test(test_name) - # clear cache - _download_and_check_if_image.cache_clear() - # force a garbage collector - gc.collect() diff --git a/searx/search/checker/scheduler.lua b/searx/search/checker/scheduler.lua deleted file mode 100644 index c5ebb05bc..000000000 --- a/searx/search/checker/scheduler.lua +++ /dev/null @@ -1,36 +0,0 @@ --- SPDX-License-Identifier: AGPL-3.0-or-later --- --- This script is not a string in scheduler.py, so editors can provide syntax highlighting. - --- The Redis KEY is defined here and not in Python on purpose: --- only this LUA script can read and update this key to avoid lock and concurrency issues. -local redis_key = 'SearXNG_checker_next_call_ts' - -local now = redis.call('TIME')[1] -local start_after_from = ARGV[1] -local start_after_to = ARGV[2] -local every_from = ARGV[3] -local every_to = ARGV[4] - -local next_call_ts = redis.call('GET', redis_key) - -if (next_call_ts == false or next_call_ts == nil) then - -- the scheduler has never run on this Redis instance, so: - -- 1/ the scheduler does not run now - -- 2/ the next call is a random time between start_after_from and start_after_to - local initial_delay = math.random(start_after_from, start_after_to) - redis.call('SET', redis_key, now + initial_delay) - return { false, delay } -end - --- next_call_ts is defined --- --> if now is lower than next_call_ts then we don't run the embedded checker --- --> if now is higher then we update next_call_ts and ask to run the embedded checker now. -local call_now = next_call_ts <= now -if call_now then - -- the checker runs now, define the timestamp of the next call: - -- this is a random delay between every_from and every_to - local periodic_delay = math.random(every_from, every_to) - next_call_ts = redis.call('INCRBY', redis_key, periodic_delay) -end -return { call_now, next_call_ts - now } diff --git a/searx/search/checker/scheduler.py b/searx/search/checker/scheduler.py deleted file mode 100644 index cc3bb7380..000000000 --- a/searx/search/checker/scheduler.py +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint -# pylint: disable=missing-module-docstring -"""Lame scheduler which use Redis as a source of truth: -* the Redis key SearXNG_checker_next_call_ts contains the next time the embedded checker should run. -* to avoid lock, a unique Redis script reads and updates the Redis key SearXNG_checker_next_call_ts. -* this Redis script returns a list of two elements: - * the first one is a boolean. If True, the embedded checker must run now in this worker. - * the second element is the delay in second to wait before the next call to the Redis script. - -This scheduler is not generic on purpose: if more feature are required, a dedicate scheduler must be used -(= a better scheduler should not use the web workers) -""" - -import logging -import time -import importlib -from typing import Callable - -from searx.redisdb import client as get_redis_client -from searx.redislib import lua_script_storage - - -logger = logging.getLogger('searx.search.checker') - - -def scheduler_function(start_after_from: int, start_after_to: int, every_from: int, every_to: int, callback: Callable): - """Run the checker periodically. The function never returns. - - Parameters: - * start_after_from and start_after_to: when to call "callback" for the first on the Redis instance - * every_from and every_to: after the first call, how often to call "callback" - - There is no issue: - * to call this function is multiple workers - * to kill workers at any time as long there is one at least one worker - """ - scheduler_now_script = importlib.resources.read_text(__package__, "scheduler.lua") - while True: - # ask the Redis script what to do - # the script says - # * if the checker must run now. - # * how to long to way before calling the script again (it can be call earlier, but not later). - script = lua_script_storage(get_redis_client(), scheduler_now_script) - call_now, wait_time = script(args=[start_after_from, start_after_to, every_from, every_to]) - - # does the worker run the checker now? - if call_now: - # run the checker - try: - callback() - except Exception: # pylint: disable=broad-except - logger.exception("Error calling the embedded checker") - # only worker display the wait_time - logger.info("Next call to the checker in %s seconds", wait_time) - # wait until the next call - time.sleep(wait_time) diff --git a/searx/search/models.py b/searx/search/models.py deleted file mode 100644 index ec1188fbb..000000000 --- a/searx/search/models.py +++ /dev/null @@ -1,131 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -import typing -import babel - - -class EngineRef: - """Reference by names to an engine and category""" - - __slots__ = 'name', 'category' - - def __init__(self, name: str, category: str): - self.name = name - self.category = category - - def __repr__(self): - return "EngineRef({!r}, {!r})".format(self.name, self.category) - - def __eq__(self, other): - return self.name == other.name and self.category == other.category - - def __hash__(self): - return hash((self.name, self.category)) - - -class SearchQuery: - """container for all the search parameters (query, language, etc...)""" - - __slots__ = ( - 'query', - 'engineref_list', - 'lang', - 'locale', - 'safesearch', - 'pageno', - 'time_range', - 'timeout_limit', - 'external_bang', - 'engine_data', - 'redirect_to_first_result', - ) - - def __init__( - self, - query: str, - engineref_list: typing.List[EngineRef], - lang: str = 'all', - safesearch: int = 0, - pageno: int = 1, - time_range: typing.Optional[str] = None, - timeout_limit: typing.Optional[float] = None, - external_bang: typing.Optional[str] = None, - engine_data: typing.Optional[typing.Dict[str, str]] = None, - redirect_to_first_result: typing.Optional[bool] = None, - ): - self.query = query - self.engineref_list = engineref_list - self.lang = lang - self.safesearch = safesearch - self.pageno = pageno - self.time_range = time_range - self.timeout_limit = timeout_limit - self.external_bang = external_bang - self.engine_data = engine_data or {} - self.redirect_to_first_result = redirect_to_first_result - - self.locale = None - if self.lang: - try: - self.locale = babel.Locale.parse(self.lang, sep='-') - except babel.core.UnknownLocaleError: - pass - - @property - def categories(self): - return list(set(map(lambda engineref: engineref.category, self.engineref_list))) - - def __repr__(self): - return "SearchQuery({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r})".format( - self.query, - self.engineref_list, - self.lang, - self.safesearch, - self.pageno, - self.time_range, - self.timeout_limit, - self.external_bang, - self.redirect_to_first_result, - ) - - def __eq__(self, other): - return ( - self.query == other.query - and self.engineref_list == other.engineref_list - and self.lang == other.lang - and self.safesearch == other.safesearch - and self.pageno == other.pageno - and self.time_range == other.time_range - and self.timeout_limit == other.timeout_limit - and self.external_bang == other.external_bang - and self.redirect_to_first_result == other.redirect_to_first_result - ) - - def __hash__(self): - return hash( - ( - self.query, - tuple(self.engineref_list), - self.lang, - self.safesearch, - self.pageno, - self.time_range, - self.timeout_limit, - self.external_bang, - self.redirect_to_first_result, - ) - ) - - def __copy__(self): - return SearchQuery( - self.query, - self.engineref_list, - self.lang, - self.safesearch, - self.pageno, - self.time_range, - self.timeout_limit, - self.external_bang, - self.engine_data, - self.redirect_to_first_result, - ) diff --git a/searx/search/processors/__init__.py b/searx/search/processors/__init__.py deleted file mode 100644 index 6d2f97fbb..000000000 --- a/searx/search/processors/__init__.py +++ /dev/null @@ -1,83 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint - -"""Implement request processors used by engine-types. - -""" - -__all__ = [ - 'EngineProcessor', - 'OfflineProcessor', - 'OnlineProcessor', - 'OnlineDictionaryProcessor', - 'OnlineCurrencyProcessor', - 'OnlineUrlSearchProcessor', - 'PROCESSORS', -] - -import threading -from typing import Dict - -from searx import logger -from searx import engines - -from .online import OnlineProcessor -from .offline import OfflineProcessor -from .online_dictionary import OnlineDictionaryProcessor -from .online_currency import OnlineCurrencyProcessor -from .online_url_search import OnlineUrlSearchProcessor -from .abstract import EngineProcessor - -logger = logger.getChild('search.processors') -PROCESSORS: Dict[str, EngineProcessor] = {} -"""Cache request processors, stored by *engine-name* (:py:func:`initialize`) - -:meta hide-value: -""" - - -def get_processor_class(engine_type): - """Return processor class according to the ``engine_type``""" - for c in [ - OnlineProcessor, - OfflineProcessor, - OnlineDictionaryProcessor, - OnlineCurrencyProcessor, - OnlineUrlSearchProcessor, - ]: - if c.engine_type == engine_type: - return c - return None - - -def get_processor(engine, engine_name): - """Return processor instance that fits to ``engine.engine.type``)""" - engine_type = getattr(engine, 'engine_type', 'online') - processor_class = get_processor_class(engine_type) - if processor_class: - return processor_class(engine, engine_name) - return None - - -def initialize_processor(processor): - """Initialize one processor - - Call the init function of the engine - """ - if processor.has_initialize_function: - t = threading.Thread(target=processor.initialize, daemon=True) - t.start() - - -def initialize(engine_list): - """Initialize all engines and store a processor for each engine in :py:obj:`PROCESSORS`.""" - for engine_data in engine_list: - engine_name = engine_data['name'] - engine = engines.engines.get(engine_name) - if engine: - processor = get_processor(engine, engine_name) - initialize_processor(processor) - if processor is None: - engine.logger.error('Error get processor for engine %s', engine_name) - else: - PROCESSORS[engine_name] = processor diff --git a/searx/search/processors/abstract.py b/searx/search/processors/abstract.py deleted file mode 100644 index 0cabec97a..000000000 --- a/searx/search/processors/abstract.py +++ /dev/null @@ -1,191 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint - -"""Abstract base classes for engine request processors. - -""" - -import threading -from abc import abstractmethod, ABC -from timeit import default_timer -from typing import Dict, Union - -from searx import settings, logger -from searx.engines import engines -from searx.network import get_time_for_thread, get_network -from searx.metrics import histogram_observe, counter_inc, count_exception, count_error -from searx.exceptions import SearxEngineAccessDeniedException, SearxEngineResponseException -from searx.utils import get_engine_from_settings - -logger = logger.getChild('searx.search.processor') -SUSPENDED_STATUS: Dict[Union[int, str], 'SuspendedStatus'] = {} - - -class SuspendedStatus: - """Class to handle suspend state.""" - - __slots__ = 'suspend_end_time', 'suspend_reason', 'continuous_errors', 'lock' - - def __init__(self): - self.lock = threading.Lock() - self.continuous_errors = 0 - self.suspend_end_time = 0 - self.suspend_reason = None - - @property - def is_suspended(self): - return self.suspend_end_time >= default_timer() - - def suspend(self, suspended_time, suspend_reason): - with self.lock: - # update continuous_errors / suspend_end_time - self.continuous_errors += 1 - if suspended_time is None: - suspended_time = min( - settings['search']['max_ban_time_on_fail'], - self.continuous_errors * settings['search']['ban_time_on_fail'], - ) - self.suspend_end_time = default_timer() + suspended_time - self.suspend_reason = suspend_reason - logger.debug('Suspend for %i seconds', suspended_time) - - def resume(self): - with self.lock: - # reset the suspend variables - self.continuous_errors = 0 - self.suspend_end_time = 0 - self.suspend_reason = None - - -class EngineProcessor(ABC): - """Base classes used for all types of request processors.""" - - __slots__ = 'engine', 'engine_name', 'lock', 'suspended_status', 'logger' - - def __init__(self, engine, engine_name: str): - self.engine = engine - self.engine_name = engine_name - self.logger = engines[engine_name].logger - key = get_network(self.engine_name) - key = id(key) if key else self.engine_name - self.suspended_status = SUSPENDED_STATUS.setdefault(key, SuspendedStatus()) - - def initialize(self): - try: - self.engine.init(get_engine_from_settings(self.engine_name)) - except SearxEngineResponseException as exc: - self.logger.warning('Fail to initialize // %s', exc) - except Exception: # pylint: disable=broad-except - self.logger.exception('Fail to initialize') - else: - self.logger.debug('Initialized') - - @property - def has_initialize_function(self): - return hasattr(self.engine, 'init') - - def handle_exception(self, result_container, exception_or_message, suspend=False): - # update result_container - if isinstance(exception_or_message, BaseException): - exception_class = exception_or_message.__class__ - module_name = getattr(exception_class, '__module__', 'builtins') - module_name = '' if module_name == 'builtins' else module_name + '.' - error_message = module_name + exception_class.__qualname__ - else: - error_message = exception_or_message - result_container.add_unresponsive_engine(self.engine_name, error_message) - # metrics - counter_inc('engine', self.engine_name, 'search', 'count', 'error') - if isinstance(exception_or_message, BaseException): - count_exception(self.engine_name, exception_or_message) - else: - count_error(self.engine_name, exception_or_message) - # suspend the engine ? - if suspend: - suspended_time = None - if isinstance(exception_or_message, SearxEngineAccessDeniedException): - suspended_time = exception_or_message.suspended_time - self.suspended_status.suspend(suspended_time, error_message) # pylint: disable=no-member - - def _extend_container_basic(self, result_container, start_time, search_results): - # update result_container - result_container.extend(self.engine_name, search_results) - engine_time = default_timer() - start_time - page_load_time = get_time_for_thread() - result_container.add_timing(self.engine_name, engine_time, page_load_time) - # metrics - counter_inc('engine', self.engine_name, 'search', 'count', 'successful') - histogram_observe(engine_time, 'engine', self.engine_name, 'time', 'total') - if page_load_time is not None: - histogram_observe(page_load_time, 'engine', self.engine_name, 'time', 'http') - - def extend_container(self, result_container, start_time, search_results): - if getattr(threading.current_thread(), '_timeout', False): - # the main thread is not waiting anymore - self.handle_exception(result_container, 'timeout', None) - else: - # check if the engine accepted the request - if search_results is not None: - self._extend_container_basic(result_container, start_time, search_results) - self.suspended_status.resume() - - def extend_container_if_suspended(self, result_container): - if self.suspended_status.is_suspended: - result_container.add_unresponsive_engine( - self.engine_name, self.suspended_status.suspend_reason, suspended=True - ) - return True - return False - - def get_params(self, search_query, engine_category): - """Returns a set of (see :ref:`request params `) or - ``None`` if request is not supported. - - Not supported conditions (``None`` is returned): - - - A page-number > 1 when engine does not support paging. - - A time range when the engine does not support time range. - """ - # if paging is not supported, skip - if search_query.pageno > 1 and not self.engine.paging: - return None - - # if time_range is not supported, skip - if search_query.time_range and not self.engine.time_range_support: - return None - - params = {} - params['category'] = engine_category - params['pageno'] = search_query.pageno - params['safesearch'] = search_query.safesearch - params['time_range'] = search_query.time_range - params['engine_data'] = search_query.engine_data.get(self.engine_name, {}) - params['searxng_locale'] = search_query.lang - - # deprecated / vintage --> use params['searxng_locale'] - # - # Conditions related to engine's traits are implemented in engine.traits - # module. Don't do 'locale' decisions here in the abstract layer of the - # search processor, just pass the value from user's choice unchanged to - # the engine request. - - if hasattr(self.engine, 'language') and self.engine.language: - params['language'] = self.engine.language - else: - params['language'] = search_query.lang - - return params - - @abstractmethod - def search(self, query, params, result_container, start_time, timeout_limit): - pass - - def get_tests(self): - tests = getattr(self.engine, 'tests', None) - if tests is None: - tests = getattr(self.engine, 'additional_tests', {}) - tests.update(self.get_default_tests()) - return tests - - def get_default_tests(self): - return {} diff --git a/searx/search/processors/offline.py b/searx/search/processors/offline.py deleted file mode 100644 index ca5b9f050..000000000 --- a/searx/search/processors/offline.py +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint - -"""Processors for engine-type: ``offline`` - -""" - -from .abstract import EngineProcessor - - -class OfflineProcessor(EngineProcessor): - """Processor class used by ``offline`` engines""" - - engine_type = 'offline' - - def _search_basic(self, query, params): - return self.engine.search(query, params) - - def search(self, query, params, result_container, start_time, timeout_limit): - try: - search_results = self._search_basic(query, params) - self.extend_container(result_container, start_time, search_results) - except ValueError as e: - # do not record the error - self.logger.exception('engine {0} : invalid input : {1}'.format(self.engine_name, e)) - except Exception as e: # pylint: disable=broad-except - self.handle_exception(result_container, e) - self.logger.exception('engine {0} : exception : {1}'.format(self.engine_name, e)) diff --git a/searx/search/processors/online.py b/searx/search/processors/online.py deleted file mode 100644 index f30206dc8..000000000 --- a/searx/search/processors/online.py +++ /dev/null @@ -1,238 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# lint: pylint - -"""Processors for engine-type: ``online`` - -""" -# pylint: disable=use-dict-literal - -from timeit import default_timer -import asyncio -import ssl -import httpx - -import searx.network -from searx.utils import gen_useragent -from searx.exceptions import ( - SearxEngineAccessDeniedException, - SearxEngineCaptchaException, - SearxEngineTooManyRequestsException, -) -from searx.metrics.error_recorder import count_error -from .abstract import EngineProcessor - - -def default_request_params(): - """Default request parameters for ``online`` engines.""" - return { - # fmt: off - 'method': 'GET', - 'headers': {}, - 'data': {}, - 'url': '', - 'cookies': {}, - 'auth': None - # fmt: on - } - - -class OnlineProcessor(EngineProcessor): - """Processor class for ``online`` engines.""" - - engine_type = 'online' - - def initialize(self): - # set timeout for all HTTP requests - searx.network.set_timeout_for_thread(self.engine.timeout, start_time=default_timer()) - # reset the HTTP total time - searx.network.reset_time_for_thread() - # set the network - searx.network.set_context_network_name(self.engine_name) - super().initialize() - - def get_params(self, search_query, engine_category): - """Returns a set of :ref:`request params ` or ``None`` - if request is not supported. - """ - params = super().get_params(search_query, engine_category) - if params is None: - return None - - # add default params - params.update(default_request_params()) - - # add an user agent - params['headers']['User-Agent'] = gen_useragent() - - # add Accept-Language header - if self.engine.send_accept_language_header and search_query.locale: - ac_lang = search_query.locale.language - if search_query.locale.territory: - ac_lang = "%s-%s,%s;q=0.9,*;q=0.5" % ( - search_query.locale.language, - search_query.locale.territory, - search_query.locale.language, - ) - params['headers']['Accept-Language'] = ac_lang - - self.logger.debug('HTTP Accept-Language: %s', params['headers'].get('Accept-Language', '')) - return params - - def _send_http_request(self, params): - # create dictionary which contain all - # information about the request - request_args = dict(headers=params['headers'], cookies=params['cookies'], auth=params['auth']) - - # verify - # if not None, it overrides the verify value defined in the network. - # use False to accept any server certificate - # use a path to file to specify a server certificate - verify = params.get('verify') - if verify is not None: - request_args['verify'] = params['verify'] - - # max_redirects - max_redirects = params.get('max_redirects') - if max_redirects: - request_args['max_redirects'] = max_redirects - - # allow_redirects - if 'allow_redirects' in params: - request_args['allow_redirects'] = params['allow_redirects'] - - # soft_max_redirects - soft_max_redirects = params.get('soft_max_redirects', max_redirects or 0) - - # raise_for_status - request_args['raise_for_httperror'] = params.get('raise_for_httperror', True) - - # specific type of request (GET or POST) - if params['method'] == 'GET': - req = searx.network.get - else: - req = searx.network.post - - request_args['data'] = params['data'] - - # send the request - response = req(params['url'], **request_args) - - # check soft limit of the redirect count - if len(response.history) > soft_max_redirects: - # unexpected redirect : record an error - # but the engine might still return valid results. - status_code = str(response.status_code or '') - reason = response.reason_phrase or '' - hostname = response.url.host - count_error( - self.engine_name, - '{} redirects, maximum: {}'.format(len(response.history), soft_max_redirects), - (status_code, reason, hostname), - secondary=True, - ) - - return response - - def _search_basic(self, query, params): - # update request parameters dependent on - # search-engine (contained in engines folder) - self.engine.request(query, params) - - # ignoring empty urls - if params['url'] is None: - return None - - if not params['url']: - return None - - # send request - response = self._send_http_request(params) - - # parse the response - response.search_params = params - return self.engine.response(response) - - def search(self, query, params, result_container, start_time, timeout_limit): - # set timeout for all HTTP requests - searx.network.set_timeout_for_thread(timeout_limit, start_time=start_time) - # reset the HTTP total time - searx.network.reset_time_for_thread() - # set the network - searx.network.set_context_network_name(self.engine_name) - - try: - # send requests and parse the results - search_results = self._search_basic(query, params) - self.extend_container(result_container, start_time, search_results) - except ssl.SSLError as e: - # requests timeout (connect or read) - self.handle_exception(result_container, e, suspend=True) - self.logger.error("SSLError {}, verify={}".format(e, searx.network.get_network(self.engine_name).verify)) - except (httpx.TimeoutException, asyncio.TimeoutError) as e: - # requests timeout (connect or read) - self.handle_exception(result_container, e, suspend=True) - self.logger.error( - "HTTP requests timeout (search duration : {0} s, timeout: {1} s) : {2}".format( - default_timer() - start_time, timeout_limit, e.__class__.__name__ - ) - ) - except (httpx.HTTPError, httpx.StreamError) as e: - # other requests exception - self.handle_exception(result_container, e, suspend=True) - self.logger.exception( - "requests exception (search duration : {0} s, timeout: {1} s) : {2}".format( - default_timer() - start_time, timeout_limit, e - ) - ) - except SearxEngineCaptchaException as e: - self.handle_exception(result_container, e, suspend=True) - self.logger.exception('CAPTCHA') - except SearxEngineTooManyRequestsException as e: - self.handle_exception(result_container, e, suspend=True) - self.logger.exception('Too many requests') - except SearxEngineAccessDeniedException as e: - self.handle_exception(result_container, e, suspend=True) - self.logger.exception('Searx is blocked') - except Exception as e: # pylint: disable=broad-except - self.handle_exception(result_container, e) - self.logger.exception('exception : {0}'.format(e)) - - def get_default_tests(self): - tests = {} - - tests['simple'] = { - 'matrix': {'query': ('life', 'computer')}, - 'result_container': ['not_empty'], - } - - if getattr(self.engine, 'paging', False): - tests['paging'] = { - 'matrix': {'query': 'time', 'pageno': (1, 2, 3)}, - 'result_container': ['not_empty'], - 'test': ['unique_results'], - } - if 'general' in self.engine.categories: - # avoid documentation about HTML tags (